运动直接驱动开启 (MDO)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。在适用情况下会注明 controller 的差异。将运动直接驱动开启 (MDO) 指令与支持外部模拟伺服驱动器接口的运动控制模块结合使用。该指令会激活模块的驱动器使能,以使能外部伺服驱动器,还会将伺服模块驱动器的输出电压设置为指定的电压值。驱动器输出的值可采用伏特或轴输出上限的百分比来指定。
架构 | 标准 | 安全 |
|---|---|---|
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 | 否 |
Compact GuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 | 否 |
可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
MDO(Axis,MotionControl, DriveOutput,DriveUnits);
操作数
梯形图和结构化文本
操作数 | 类型 ControlLoigx 5570、ControlLogix 5580、ControlLogix 5590、GuardLogix 5570 和 GuardLogix 5580 | 格式 | 说明 |
|---|---|---|---|
Axis | AXIS_SERVO | 标签 | 仅限数据类型为 AXIS_SERVO 的运动轴。对于支持 REF_TO 运动数据类型的控制器,支持的轴操作数类型可以替换为等效的 REF_TO 类型。 |
Motion Control | MOTION_INSTRUCTION | 标签 | 用于访问指令状态参数的结构。 |
Drive Output | SINT INT DINT REAL | 立即数 或标签 | 输出电压,以伺服输出限值的百分比或伏特为单位。 |
Drive Units | 布尔型 | 立即数 | 您希望驱动器输出以何种单位表示? 0 = 伏特 1 = 百分比 |
有关结构化文本中表达式语法的详细信息,请参阅结构化文本语法。
对于需要从可用选项中进行选择的操作数,输入选择的值:
此操作数 | 具有按下列形式输入的选项... | |
|---|---|---|
输入文本 | Or Enter As a Number | |
DriveUnits | 伏特 百分比 | 0 1 |
MOTION_INSTRUCTION 结构
助记符 | 说明 |
|---|---|
.EN (Enable) Bit 31 | 梯级出现假到真跳变时,该位置位,并在伺服消息事务完成且梯级跳变为假之前保持置位状态。 |
.DN (Done) Bit 29 | 当轴的驱动器使能位激活且指定的模拟输出成功应用时,此位置位。 |
.ER (Done) Bit 28 | 该位置位时,表明指令检测到错误,如输入的驱动器输出值过大。 |
说明
对于具有外部伺服驱动器接口的运动控制模块,MDO 指令可用于直接启用轴的驱动器使能输出,以及将模拟输出设置为由“驱动器输出”参数确定的指定值。“驱动器输出”参数可采用电压为单位,也可采用“输出限制”属性给定的最大配置输出电压值的百分比为单位。
MDO 指令只能在轴类型配置为“伺服”的物理轴上使用。该指令只在轴处于轴就绪状态时执行(例如,伺服动作关闭时)。得到的轴状态被称为驱动器控制状态。
MDO 指令在将伺服模块的模拟输出设置为指定的电压值之前,通过激活相应的驱动器使能输出,自动启用指定的轴。通常,从激活驱动器使能输出到将模拟输出设置为指定值之间存在 500 ms 的延时,以使驱动器的功率组件稳定。要最小化此驱动器启用延时期间的偏离量,驱动器的输出电压应设置为“输出偏移”属性值(默认值为零)。之后,输出电压由 MDO 指令的指定驱动器输出值给定,并由“伺服输出状态”属性值指示。
与各种 Logix 伺服模块相关的 16 位 DAC 硬件将直接驱动器运动控制的有效分辨率限制为 305
V 或 0.003%。对于直接驱动器操作,模块的伺服环处于未激活状态并被旁路。运动直接驱动开启指令只受轴的伺服输出极性配置位、输出偏移和输出限制属性的影响。对于输出限制配置值降到当前输出电压值以下的情况,伺服输出值自动钳位到输出限制值。
该指令最常见的用途是提供一个独立的可编程模拟输出,以将其作为外部驱动器的开环速度参考值或用于测试闭环操作的外部伺服驱动器。
要成功执行 MDO 指令,目标轴必须配置为伺服轴并处于轴就绪状态,且伺服动作关闭。如果这些条件未满足,则指令会发生错误。
重要提示:
由于指令执行需要多个近似更新才能完成请求,因此可能需要执行多次扫描。完成 (.DN) 位不会立即置位,而仅在请求完成后置位。
此为跳变指令:
- 在继电器梯形图中,每次要执行该指令时,梯级输入条件均会由假切换为真。
- 在结构化文本中,为指令设置限定条件,以便仅在出现跳变时才执行此指令。
使用 MDO 指令时丢失反馈
如果在发出 MDO 指令时反馈丢失,并需要使用 MDO 指令使轴发生运动,请按照以下步骤操作:
- 将反馈故障动作设置为“仅状态”。
- 发生反馈故障时,发出 MSF 指令以关闭伺服。
- 发出 MAFR 指令以清除反馈故障状态。
在没有其他反馈故障关闭系统的情况下执行 MDO 指令。但是,反馈故障状态仍然为存在反馈故障状况。
重要提示:
- 使用上述步骤时请牢记以下几点:
- 反馈丢失后,报告的位置可能无效。要重新确定有效位置,请执行其他归零操作。
- 如果需要发出其他 MDO 指令(例如以便修改输出电压),则当第一条 MDO 指令执行时,必须首先发出 MSF 指令以停止伺服,然后发出 MAFR 指令以清除反馈故障。
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。如果将未初始化的引用或类型不正确的引用传递给轴操作数,则可能发生严重故障。有关操作数相关的故障,请参阅 通用属性。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | .EN、.DN 和 .ER 设置为假。 |
梯级输入条件为假 | 如果 .DN 或 .ER 位为真,则 .EN 位设置为假。 |
梯级输入条件为真 | .EN 位设置为真,指令执行。如果 EN 位设置为假,则不执行任何动作。 |
后扫描 | 不适用 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“梯形图”表中的“预扫描”行 |
正常执行 | 请参见“梯形图”表中的“梯级输入条件为假”行,然后参见“梯级输入条件为真”行。 |
后扫描 | 请参见“梯形图”表中的“后扫描”行。 |
扩展错误代码
“扩展错误代码”针对许多指令通用的“错误代码”提供指令特定的附加信息。有关运动指令,请参阅 运动错误代码 .ERR。
以下扩展错误代码有助于在 MDO 指令收到伺服消息故障 (12) 错误消息时确定问题所在。
扩展错误代码(十进制) | 相关错误代码(十进制) | 含义 |
|---|---|---|
对象模型冲突 (12) | SERVO_MESSAGE_FAILURE (12) | 轴关闭。 |
状态位
MDO 状态位变化
位名称 | 状态 | 含义 |
|---|---|---|
DriveEnableStatus | 真 | 轴处于驱动器控制状态,驱动器使能输出激活。 |
示例
示例 1
“驱动器输出”操作数为 DINT 标签,“驱动器单位”为“伏特”
梯形图

结构化文本
MDO(myAxis, myMotionControl, myDriveOutput_DINT, volts);
示例 2
“驱动器输出”操作数为 REAL 标签,“驱动器单位”为“百分比”
梯形图

结构化文本
MDO(myAxis, myMotionControl, myDriveOutput_REAL, percent);
示例 3
“驱动器输出”操作数为 DINT 标签,“驱动器单位”为“伏特”
继电器梯形图

结构化文本
MDO(myAxis, myMotionControl, myDriveOutput_REAL, percent);
提供反馈