Difference between revisions of "Pulse burst positioning"

From Granite Devices Knowledge Wiki
Jump to: navigation, search
(Created page with "step & direction signals, motor position and move done output as function of time.]] Pulse bu...")
(No difference)

Revision as of 02:50, 12 December 2013

Illustration of input step & direction signals, motor position and move done output as function of time.

Pulse burst positioning means a setpoint signaling based on pulse and direction format. In burst mode, controller need only to generate a burst of pulses with direction signal to drive to begin a motion relative to current position complying with pre-configured acceleration and velocity limits.

Pulse burst positioning properties
  • Simplicity - easy to understand and implement point-to-point motion control
  • Exact - setpoint signal path is fully digital
  • No real-time controller needed - smooth trajectory is generated inside the drive

How to use

Pulse burst is the minimalistic yet high performing position setpoint method available. Suitable signal may be generated by various means:

  • PLC
  • A simple timer & counter circuit
  • Microcontroller GPIO pin
  • Or any programmable device with controllable digital outputs

Practical example

Drive parameterization

In Argon the following configuration enables burst pulse mode:

  • Set CM as Position control
  • Set CRI as Pulse train & direction
  • Set CAL and CVL to your desired acceleration and velocity values
  • Wire J5 connector according to this diagram

Doing incremental move

The C-style code below represents the signaling.

void IncrementalMove( int distance )
{
  int i;

  /* set direction output pin */
  if(distance<0)
    SetDirectionOutputPin(0);
  else 
    SetDirectionOutputPin(1);

  /* send step pulses to start motion */
  for( i=0; i< abs(distance); i++ )
  {
    Delay_ms(0.001);
    SetPulseOutputPin(1);
    Delay_ms(0.001);
    SetPulseOutputPin(0);
  }
}
  • SetPulseOutputPin sets the digital state of HSIN1 pin on Argon
  • SetDirectionOutputPin sets the digital state of HSIN2 pin on Argon

Monitoring when motion is complete

bool WaitForMoveDone( double timeout )
{
  double waited=0;

  while(waited<timeout)
  {
    if( GetMotionCompletePinState() == true ) 
      return true; /* motion is now complete, return true*/

    /*motion is not complete, wait some time and poll again*/
    Delay_ms(0.01);
    waited=waited+0.01;
  }

  /*return false because timeouted */
  return false;
}
  • GetMotionCompletePinState reads the GPO1 pin state from Argon

Usage example

IncrementalMove(500);
WaitForMoveDone();
IncrementalMove(1000);
WaitForMoveDone();
IncrementalMove(-1500);
WaitForMoveDone();