MC_GrpStop (Execute, AxesGroup, Deceleration, JerkIn physics, jerk is the rate of change of acceleration; more precisely, the derivative of acceleration with respect to time) performs a controlled motion stop of all axes in a coordinated motion group. Differences between MC_GrpHalt and MC_GrpStop.
The following example demonstrates a linear coordinated move starting point of [0,0] and ending at point of [200, 0]. MC_GrpStop is called while the linear coordinated move is still moving to the endpoint. As noted in the oscilloscope, the path velocity reaches zero (approximately [100,0]) before the linear coordinated move reaches its end point value.
| Linear Move Parameters | MC_GroupStop Parameters |
|---|---|
| Velocity = 100 | stop_velocity = 75 |
| Acceleration = 200 | |
| Deceleration = 200 | |
| Jerk = 0 |
For demonstration purposes it is assumed that the axes and group have been properly setup and configured. Example steps to setup coordinated motion are listed in the section Create a Linear or Circular Coordinated Motion Application.
Inst_MC_GrpReadCmdPos( TRUE, Group1_ref, MC_COORDINATE_SYSTEM_ACS, CmdPositionArray ); Inst_MC_GrpReadCmdVel2( TRUE, Group1_ref, MC_COORDINATE_SYSTEM_ACS, VelocityArray); CASE MC_MoveCounter OF 0: // EnableEnable signal for the drive, Hardware-Enable with 24V signal to X8, Software-Enable command by setup Software, fieldbus or permanently set. Both are required for enabling the drive. the group Inst_MC_GrpEnable(TRUE, Group1_ref); Inst_TON3( true, t#1500ms ); // Allow for turning on the scope IF ((Inst_TON3.Q) and (Inst_MC_GrpEnable.Done OR Inst_MC_GrpEnable.Error)) THEN Inst_TON3(false, t#1s); IF (Inst_MC_GrpEnable.Error) THEN PrintMessage( LEVEL_INFO (*DINT*), 'MC_GrpEnable failed - ErrorID: ' + any_to_string(Inst_MC_GrpEnable.ErrorID)); END_IF; Inst_MC_GrpEnable(FALSE, Group1_ref); MC_MoveCounter := MC_MoveCounter + 1; END_IF; 1: // Perform Linear ABSOLUTE move start (0,0) end (200,0) PosAbs[0]:= 0; PosAbs[1]:= 200; PosAbs[2]:= 0; pathVelocity := Inst_MC_GrpReadCmdVel2.PathVelocity; Inst_MC_MoveLinAbs( TRUE, Group1_ref, PosAbs,Velocity, Acceleration, Deceleration, Jerk, MC_COORDINATE_SYSTEM_ACS, MC_BUFFER_MODE_ABORTING, MC_TRANSITION_MODE_NONE, TransParam); Inst_TON3( true, t#600ms ); //Allow for the move to reach path velocity before calling MC_GrpStop IF Inst_TON3.Q THEN MC_MoveCounter := MC_MoveCounter + 1; Inst_TON3(false, t#100ms); END_IF; 2: //Perform a stop on the group stop_deceleration := 75.0; pathVelocity := Inst_MC_GrpReadCmdVel2.PathVelocity; Inst_MC_GrpStop(TRUE, Group1_ref, stop_deceleration, default_jerkIn physics, jerk is the rate of change of acceleration; more precisely, the derivative of acceleration with respect to time ); Inst_TON3( true, t#200ms ); IF ((Inst_TON3.Q) AND (Inst_MC_GrpStop.Done Or Inst_MC_GrpStop.Error)) THEN IF Inst_MC_GrpStop.Error THEN PrintMessage( LEVEL_INFO (*DINT*), 'Step '+any_to_string(MC_MoveCounter)+',MC_GrpStop ERROR. ErrorID('+any_to_string(Inst_MC_GrpStop.ErrorID)+'), Description:'+MC_ErrorDescription(any_to_int(Inst_MC_GrpStop.ErrorID))); END_IF; Inst_TON3(false, t#100ms); Inst_MC_MoveLinAbs( FALSE, Group1_ref, PosAbs, default_velocity, default_acceleration, default_deceleration, default_jerk, MC_COORDINATE_SYSTEM_ACS, MC_BUFFER_MODE_ABORTING, MC_TRANSITION_MODE_NONE, TransParam); Inst_MC_GrpStop(FALSE, Group1_ref, stop_deceleration, default_jerk ); END_IF;
When MC_GrpStop is called in the example above, the current move will be aborted and a controlled motion stop will be applied to axes group 'Group1_ref'. The deceleration value, 'stop_deceleration', is set to 75.0 user units/sec2 and is applied to the path velocity until it reaches zero. Jerk is currently not supported.
The group state is “GroupStopping” when the MC_GrpStop function block becomes active. While the axes group is in the GroupStopping state, no other function blocks can perform any motion on the same axes group. Once the path velocity reaches zero the Done output is TRUE. The Execute input must be set to FALSE before the group state can go to “GroupStandBy”. Any coordinated moves in the buffer are flushed, and new coordinated moves can be queued up upon completion of the Stop command
This behavior is different than the MC_GrpHalt command. For differences between MC_GrpHalt and MC_GrpStop, see "Differences between MC_GrpHalt and MC_GrpStop".
Figure 11-12: Oscilloscope Representation of linear coordinated move with a MC_GrpStop
Exceptions:
|
Copyright © 2015 Kollmorgen™ |
|