MC_GearIn
Description
SlaveCommandPosition = MasterActualPosition * RatioNumerator / RatioDenominator
When this command is executed, the slave axis accelerates or decelerates (using the Acceleration, Deceleration, and JerkIn physics, jerk is the rate of change of acceleration; more precisely, the derivative of acceleration with respect to time) to the target velocity determined by the master axis velocity and the ratio. When the slave axis reaches a velocity within the “In Gear” bandwidth around the target velocity, it locks on to the master, and the InGear output goes high. When the slave is locked to the master, the slave motion is no longer affected by the acceleration, deceleration, and jerkIn physics, jerk is the rate of change of acceleration; more precisely, the derivative of acceleration with respect to time inputs.
For example if the “In Gear” bandwidthIn computer networking, bandwidth often refers to a data rate measured in bits/s, for example, network throughput. The reason for the connection of data rate with the term bandwidth is that the limit to the data rate of a physical communication link is related to its bandwidth in hertz is set to 0.1 User Units per second, the InGear output will turn on if the slave velocity is within +/- 0.1 User Units per second of the target velocity.
The slave axis then continues to follow the master axis until this move is aborted.
Gearing functions can generate large accelerations while following the master. If the aborting function block has small, non-zero Jerk, or small acceleration values, it can take a long time for an accelerating axis to reach the target velocity, or position of the aborting function block. If the Jerk and/or acceleration of the aborting function cannot be increased to suitable values, it may be desirable to:
- Abort the gearing function with an MC_GearOut with higher accelerations and/or Jerk values (or zero jerk value),
- Execute the next MC motion function block such as MC_Halt.
Time to Reach the Target Velocity
While following the master, gearing functions can generate large accelerations. If the gearing function is aborted while the axis is currently accelerating, and the aborting function block has small non-zero Jerk or small acceleration values, it can take a long time to reach the target velocity, or position of the aborting function block. If the Jerk and/or acceleration of the aborting function cannot be increased to suitable values, it may be desirable to:
- Abort the gearing function with an MC_GearOut with higher accelerations and/or Jerk values (or zero jerk value),
- Execute the next MC motion function block such as MC_Halt.
Time Diagram
-
- This function block starts a motion-related action and therefore stores data for calculations and error checking. Please see Calling Function Blocks Multiple Times in the Same Cycle if you are using a dual-core controller.
Arguments
For more detail on how inputs and outputs work, refer to PLCopen Function Blocks - General Rules
Input
Execute |
Description |
Requests to queue the slave gear ratio move |
Data type |
BOOL |
|
Range |
0, 1 |
|
Unit |
n/a |
|
Default |
— |
|
Master |
Description |
Name of a declared instance of the AXIS_REF library function (for more details,About Axis Name and Number) |
Data type |
||
Range |
[1,256] |
|
Unit |
n/a |
|
Default |
— |
|
Slave |
Description |
AXIS_REF.AXIS_NUM is the slave axis number |
Data type |
AXIS_REF |
|
Range |
[1,256] |
|
Unit |
n/a |
|
Default |
— |
|
RatioNumerator |
Description |
Numerator of master/slave ratio |
Data type |
DINT |
|
Range |
[-2147483648, 2147483647] |
|
Unit |
n/a |
|
Default |
— |
|
RatioDenominator |
Description |
Denominator of master/slave ratio |
Data type |
DINT |
|
Range |
[-2147483648, 2147483647] |
|
Unit |
n/a |
|
Default |
— |
|
Acceleration |
Description |
Trapezoidal: Acceleration rate S-curve: Maximum acceleration |
Data type |
LREAL |
|
Range |
— |
|
Unit |
User unit/sec2 |
|
Default |
— |
|
Deceleration |
Description |
Trapezoidal: Deceleration rate S-curve: Unused |
Data type |
LREAL |
|
Range |
— |
|
Unit |
User unit/sec2 |
|
Default |
— |
|
Jerk |
Description |
Trapezoidal: 0 S-curve: Constant jerk |
Data type |
LREAL |
|
Range |
— |
|
Unit |
User unit/sec3 |
|
Default |
— |
|
BufferMode |
Description |
0 = abort 1 = buffer
|
Data type |
SINT |
|
Range |
[0,1] |
|
Unit |
n/a |
|
Default |
— |
Output
InGear |
Description |
Indicates the slave axis is locked on to the master axis |
Data type |
BOOL |
|
Busy |
Description |
High from the moment the Execute input goes high until the time the move is ended |
Data type |
BOOL |
|
Active |
Description |
Indicates this move is the Active move |
Data type |
BOOL |
|
CommandAborted |
Description |
Indicates the move was aborted |
Data type |
BOOL |
|
Error |
Description |
Indicates an invalid input was specified or the move was terminated due to an error |
Data type |
BOOL |
|
ErrorID |
Description |
Indicates the error if Error output is set to TRUE
|
Data type |
INT |
Example
Structured Text
(* MC_GearIn ST example *) Inst_MC_GearIn( GearInReq, Axis1, Axis2, 2, 1, 150.0, 150.0, 0, 0 ); //Inst_MC_GearIn is an instance of MC_GearIn
See also how this function is used in the Hole punch project here
Ladder Diagram