运动变化动态 (MCD)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。使用运动变化动态 (MCD) 指令选择性地更改正在执行的运动曲线或点动曲线的速度、加速度或减速度。
架构 | 标准 | 安全 |
|---|---|---|
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 | 否 |
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 | 否 |
可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
MCD(Axis, MotionControl, MotionType, ChangeSpeed, Speed, ChangeAccel, AccelRate, ChangeAccelJerk, AccelJerk, ChangeDecelJerk, ChangeDecel, DecelRate, SpeedUnits, AccelUnits, DecelUnits, JerkUnits);
操作数
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅 数据转换。
梯形图和结构化文本
操作数 | 类型
小贴士:
AXIS_CONSUMED 仅受
Compact GuardLogix 5580 和 CompactLogix 5380 控制器支持。 | 类型
小贴士:
只有
ControlLogix 5570 和 GuardLogix 5570 控制器支持 AXIS_GENERIC。 | 格式 | 说明 |
|---|---|---|---|---|
Axis | AXIS_CIP_DRIVE AXIS_VIRTUAL | AXIS_CIP_DRIVE AXIS_VIRTUAL AXIS_SERVO AXIS_SERVO_DRIVE AXIS_GENERIC_DRIVE | 标签 | 要对其执行操作的轴的名称。 对于支持 REF_TO 运动数据类型的控制器,支持的轴操作数类型可以替换为等效的 REF_TO 类型。 |
Motion Control | MOTION_INSTRUCTION | MOTION_INSTRUCTION | 标签 | 用于访问指令状态参数的结构。 |
Motion Type | UDINT | UDINT | 立即数 | 要更改的运动曲线(点动或运动)。选择其中之一: 0 = 点动 1 = 运动 |
Change Speed | BOOLEAN | BOOLEAN | 立即数 | 置位可启用速度更改。选择其中之一: 0 = 否 1 = 是 |
Speed | REAL | REAL | 立即数或标签 | 新的轴运动速度(采用 % 或速度单位表示)。 |
Change Accel | BOOLEAN | BOOLEAN | 立即数 | 置位可启用加速度更改。选择其中之一: 0 = 否 1 = 是 |
Accel Rate | REAL | REAL | 立即数或标签 | 轴的加速度(采用 % 或加速度单位表示)。 |
Change Decel | BOOLEAN | BOOLEAN | 立即数 | 置位可启用减速度更改。选择其中之一: 0 = 否 1 = 是 |
Decel Rate | REAL | REAL | 立即数或标签 | 轴的减速度(采用 % 或减速度单位表示)。 如果在运动过程中减小减速度,轴可能会超出其目标位置。 |
Change Accel Jerk | SINT、INT 或 DINT | SINT、INT 或 DINT | 立即数 | 0 = 否 1 = 是 |
Accel Jerk | SINT、INT、DINT 或 REAL | SINT、INT、DINT 或 REAL | 立即数或标签 | 必须始终输入“加速急动度”操作数的值。仅当将曲线操作数配置为 S 曲线时,此指令才会使用此值。 “加速急动度”操作数表示轴的加速急动度。 使用该值开始操作。 加速急动度 = 100(时间百分比) 急动度单位 = 2 |
Change Decel Jerk | SINT、INT 或 DINT | SINT、INT 或 DINT | 立即数 | 0 = 否 1 = 是 |
Decel Jerk | SINT、INT、DINT 或 REAL | SINT、INT、DINT 或 REAL | 立即数或标签 | 必须始终输入减速急动度操作数的值。仅当将曲线操作数配置为 S 曲线时,此指令才会使用此值。 “减速急动度”表示坐标系统的减速急动度。 使用以下值开始操作。 减速急动度 = 100(时间百分比) 急动度单位 = 2 |
Speed Units | DINT | DINT | 立即数 | 用于显示速度值的单位。选择其中之一: 0 = 单位/秒 1 = 最大速度百分比 4 = 单位/主轴单位 |
Accel Units | DINT | DINT | 立即数 | 用于显示加速度值的单位。选择其中之一: 0 = 单位/秒 2 1 = 最大加速度百分比 4 = 单位/主轴单位 2 |
Decel Units | BOOLEAN | BOOLEAN | 立即数 | 用于显示减速度值的单位。选择其中之一: 0 = 单位/秒 2 1 = 最大减速度百分比 4 = 单位/主轴单位 2 |
Jerk Units | SINT、INT 或 DINT | SINT、INT 或 DINT | 立即数 | 0 = 单位/秒 3 1 = 最大值百分比 2 = 时间百分比 4 = 单位/主轴单位 3 6 = 时间主轴驱动百分比 |
结构化文本
有关结构化文本中表达式语法的详细信息,请参阅结构化文本语法。
对于需要选择可用选项的操作数,输入选择的值。
此操作数 | 可选择以下输入方式 | |
|---|---|---|
输入文本 | 或输入数字 | |
轴 | 无枚举值 | Tag |
MotionControl | 无枚举值 | Tag |
MotionType | 点动 运动 | 0 1 |
ChangeSpeed | no yes | 0 1 |
速度 | 无枚举值 | Immediate or Tag |
ChangeAccel | no yes | 0 1 |
AccelRate | 无枚举值 | Immediate or Tag |
ChageDecel | no yes | 0 1 |
DecelRate | 无枚举值 | Immediate or Tag |
ChangeAccelJerk | 无枚举值 | 0 = No 1 = Yes |
AccelJerk | 无枚举值 | Immediate or tag You must always enter a value for the Accel operand. This instruction only uses the value if the Profile is configured as S-curve. Use this value to get started. Accel Jerk = 100 |
ChangeDecelJerk | 无枚举值 | 0 = No 1 = Yes |
DecelJerk | 无枚举值 | Immediate or tag You must always enter a value Decel Jerk operand. This instruction only uses the value if the Profile is configured as S-curve. Use this value to get started. Decel Jerk = 100 |
SpeedUnits | unitspersec %ofmaximum unitspermasterunit | 0 1 4 |
AccelUnits | unitspersec 2 %ofmaximum unitspermasterunit 2 | 0 1 4 |
DecelUnits | unitspersec 2 %ofmaximum unitspermasterunit 2 | 0 1 4 |
JerkUnits | unitspersec 3 %ofmaximum %oftime unitspermasterunit 3 %oftimemasterdriven | 0 1 2 4 6 |
MOTION_INSTRUCTION 结构
助记符 | 说明 |
|---|---|
.EN (Enable) Bit 31 | 梯级出现假到真跳变时,该位置位,并在伺服消息事务完成且梯级跳变为假之前保持置位状态。 |
.DN (Done) Bit 29 | 当轴变化动态成功启动后,此位置位。此指令在单次扫描中执行完成,因此 DN 位将立即置位。 |
.ER (Error) Bit 28 | 该位置位时,表明指令检测到错误,例如指定的轴未配置等。 |
说明
MCD 指令可实时更改曲线运动的速度以及实时更改梯形曲线点动的速度、加速度和减速度。选择所需物理轴和运动类型,并输入速度、加速度和减速度的值或标签变量。速度、加速度和减速度值可采用当前最大配置值的百分比形式输入,也可直接采用轴的配置速度或加速度单位形式输入。
如果目标轴在可用轴列表中不存在,则尚未针对伺服操作配置该轴。可使用标签编辑器创建和配置新轴。
编程原则
重要提示:
速度和/或结束位置过冲的风险
如果通过任意方法动态更改运动参数,即通过更改运动动力学参数 [“运动变化动态”(MCD) 指令或“运动协调变化动态”(MCCD)] 或在上一条指令完成前启动新指令,请注意存在速度和/或结束位置过冲的风险。
如果在运动减速或接近减速点时最大减速度减小,则梯形速度曲线可能会过冲。
而在下列情况下,S 形速度曲线可能会过冲:
如果在运动减速或接近减速点时最大减速度减小;或者
最大加速急动度减小,且轴正在加速。但要记住,如果急动度以时间百分比的形式指定,则可间接更改。
有关详细信息,请参见“排查轴运动故障”部分。
在此跳变指令中,每次要执行该指令时,继电器梯形图都会将梯级输入条件由清零切换为置位。
更改运动动力学参数
输入或选择运动的运动类型时,正在进行的运动的速度、加速度和/或减速度可更改为指定值。如果新速度高于当前速度,则以指定加速度更改速度,或者,如果新速度低于当前速度,则以指定减速度更改速度。
暂停运动
MCD 指令可用于通过将相应速度更改为零来暂停正在进行的运动。使用速度值非零的另一个 MCD 指令完成最初指定的运动。
更改点动动力学参数
输入或选择点动的运动类型时,正在进行的点动的速度、加速度和/或减速度可更改为指定值。如果新速度高于当前速度,则以指定加速度更改速度,或者,如果新速度低于当前速度,则以指定减速度更改速度。
支持运动驱动启动 (MDS) 指令
MCD 指令支持运动驱动启动 (MDS) 指令。不过,MCD 指令对 DirectVelocityControlStatus 命令功能无影响,因为运动轨迹规划器仅从“直接给定速度”属性中取值并将其加到轴输出中,然后向驱动器发送总给定值。在所有加速度和减速度均规划完后,MCD 指令对此功能无影响。
主轴驱动速度控制 (MDSC) 中 MDSC 与时间驱动模式之间的切换
使用 MCD 指令时,不能在主轴驱动模式与时间驱动模式之间切换。如果尝试切换模式,则会发生运行错误。
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。如果将未初始化的引用或类型不正确的引用传递给轴操作数,则可能发生严重故障。有关操作数相关的故障,请参阅 通用属性。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | .EN、.DN、.ER 和 .IP 位设置为假。 |
梯级输入条件为假 | 如果 .DN 或 .ER 位为真,则 .EN 位设置为假。 |
梯级输入条件为真 | .EN 位设置为真,指令执行。 |
后扫描 | 不适用 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“梯形图”表中的“预扫描”行 |
正常执行 | 请参见“梯形图”表中的“梯级输入条件为假”行,然后参见“梯级输入条件为真”行。 |
后扫描 | 请参见“梯形图”表中的“后扫描”行。 |
错误代码
有关运动指令,请参阅 运动错误代码 .ERR。
运行错误状况
对于主轴驱动速度控制 (MDSC) 功能,如果尝试将系统模式由主轴驱动切换为时间驱动或由时间驱动切换为主轴驱动,则在运行时会发生错误。
扩展错误代码
“扩展错误代码”针对许多指令通用的“错误代码”提供指令特定的附加信息。有关运动指令,请参阅 运动错误代码 .ERR。
参数超出范围 (13) 错误代码的扩展错误代码列出了一个数字,该数字对应于面板中自上而下列出的操作数的编号,第一个操作数的编号为零。因此,对于 MCD 指令,扩展错误代码 4 指的是“速度”操作数的值存在问题。然后,需要对照该指令可接受的值范围对操作数的值进行检查。
对于错误代码 54 - 最大减速度值为零,如果扩展错误返回正数 (0-n),则指示坐标系统中不合要求的轴。转到“坐标系统属性”(Coordinate System Properties) 的“常规”(General) 选项卡,查看“轴网格”(Axis Grid) 的方括号 ([ ]) 列,确定最大减速度值为 0 的轴。单击不合要求的轴旁边的省略号按钮,访问“轴属性”(Axis Properties) 画面。转到“动力学”(Dynamics) 选项卡,对最大减速度值进行适当更改。如果扩展错误返回的数字为 -1,则表示坐标系统的最大减速度值为 0。转到“坐标系统属性”(Coordinate System Properties) 的“动力学”(Dynamics) 选项卡,更正最大减速度值。
MCD 状态位变化
对于主轴驱动速度控制 (MDSC) 功能,当执行 MCD(进入 IP 状态)时,MAM 指令中的状态位 (CalculatedDataAvailable (CDA)) 将清零,表示已计算事件距离。MCD 指令执行完成并重新计算出事件距离后,CalculatedDataAvailable 状态位再次置位。因此,可在 MCD 指令执行完成后查看 CalculatedDataAvailable 状态位,确定何时可以使用重新计算出的事件距离。
如果执行 MCD,则 CDA 位清零。使用新的动力学参数重新计算运动的计算数据。计算完成后,CDA 位再次置位。重新计算出的计算数据是使用由 MCD 指令更改后的新动力学参数从初始运动起始点 (MSP)(而不是从执行 MCD 的点开始)到达到事件距离点测量而得。
请注意,如果 MCD 将速度更改为 0,则不会重新计算事件距离;CDA 位不置位。如果发出第二条 MCD 指令以重新开始运动,则将重新计算事件距离。重新计算后获得的计算数据包括已停止运动的持续时间。
如果将事件距离设为 0,则将计算数据设置为等于与运动距离相等的位置。由于存在内部延迟,可能会在一个或两个近似更新周期后再将 PC 位置位。终点位置通常是在近似更新周期的一半达到,从而向延时额外增加一个近似更新周期。因此,如果主轴的运动距离等于计算数据,则必须等待多达 2 次迭代,从轴运动的 PC 位才会置位。
示例
示例 1
梯形图

结构化文本
MCD(Axis1,MCD_1,Move,Yes,75,Yes,50,No,0,No,0,No,0,%ofMaximum,%ofMaximum,%ofMaximum,%ofMaximum);
示例 2
梯形图

结构化文本
MCD(Axis1,mcd_motion_ctrl,Move,Yes,2,Yes,1,No,100,Yes,100.0,Yes,100.0,%ofMaximum,%ofMaximum,%ofMaximum,%ofTime);
提供反馈