带姿态的运动计算变换位置 (MCTPO)
此信息适用于
Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。带姿态的运动计算变换位置 (MCTPO) 指令可用于:
- 将“变换方向”配置为“正向”时,使用给定关节位置计算笛卡尔坐标位置。
- 将“变换方向”配置为“反向”时,使用给定笛卡尔坐标位置计算关节位置。
- 此为转换指令。使用时,请遵循以下步长:
- 在梯形逻辑中,插入一个指令,以便在每次执行该指令时,梯级输入条件均会由 false 转换为 true。
- 在结构化文本例程中,插入指令的条件以便仅在转换时执行。
架构 | 标准 | 安全 |
|---|---|---|
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 | 否 |
Compact GuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 | 否 |
可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
MCTPO(CartesianSystem, RobotSystem, MotionControl, WorkFrame, ToolFrame, Direction, ReferencePosition, TransformPosition, RobotConfiguration, TurnsCounter);
操作数
重要提示:
在同一程序中,切勿将同一标签名称用于多个指令。在任何情况下,均不要对任何指令输出标签执行写操作。
重要提示:
如果在运行模式下更改指令操作数,必须接受待处理的编辑内容,控制器模式必须从编程模式循环切换到运行模式,以便更改生效。
配置
下表给出了用于配置指令的操作数。运行期间无法更改这些操作数。
操作数 | 数据类型 | 格式 | 说明 |
|---|---|---|---|
Cartesian System | COORDINATE_SYSTEM | 标签 | 用于对运动进行编程的笛卡尔坐标系统。 对于支持 REF_TO 运动数据类型的控制器,坐标系统操作数类型可以替换为 REF_TO_COORDINATE_SYSTEM 类型。 |
Robot System | COORDINATE_SYSTEM | 标签 | 控制实际设备的非笛卡尔坐标系统。 对控制实际设备的非笛卡尔坐标系统的引用。对于支持 REF_TO 运动数据类型的控制器,坐标系统操作数类型可以替换为 REF_TO_COORDINATE_SYSTEM 类型。 |
Motion Control | MOTION_INSTRUCTION | 标签 | 指令的控制标签 |
Work Frame | POSITION_DATA | 立即数标签 | 工作坐标系偏移用于相对于机器人基本坐标系原点来定位机器人的用户工作坐标系。这些偏移包括 XYZ 值和 RxRyRz 值。这样一来,可在用户工作空间或全局坐标系中编写程序,然后转换至机器人基本坐标系。 若要使目标位置绕机器人基本坐标系统的 X、Y 或 Z 轴旋转或沿该坐标系统的 X、Y 或 Z 轴偏移,可采用旋转度数为单位在 Rx、Ry 和 Rz 标签成员中输入旋转角度,或者以坐标单位在 X、Y 和 Z 标签成员中输入偏移距离。将 ID 成员设置为大于或等于零的值。 若要将工作坐标系保持在机器人基本坐标系处,可使结构值保持为零,或将操作数标签值设置为零。 |
Tool Frame | POSITION_DATA | 立即数标签 | 工具中心点 (TCP) 偏移用于相对于手臂末端中心定位工具中心。这些偏移包括 XYZ 值和 RxRyRz 值。 若要使目标位置将具有平移和/或姿态偏移的附加工具考虑在内,可采用坐标单位在 X、Y 和 Z 标签成员中输入工具偏移距离。以旋转度数为单位在 Rx、Ry 和 Rz 标签成员中输入工具旋转度数。将 ID 成员设置为大于或等于零的值。 要使目标位置仅反映手臂末端处的点,可使结构值保持为零,或将操作数标签值设置为零。 |
有关配置坐标系统的详细信息,请参见
《运动坐标系用户手册》
(出版号 MOTION-UM002)。影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。如果将未初始化的引用或类型不正确的引用传递给坐标系统操作数,则可能会发生严重故障。对于数组索引故障,请参阅 数组索引编制。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 与梯级输入条件为假时相同。 |
梯级输入条件为假 | .EN、.DN 和 .ER 设置为假。 |
梯级输入条件为真,.EN 位为假 | .EN 位设置为真,指令执行。 |
梯级输入条件为真,.EN 位为真 | 不适用 |
后扫描 | 与梯级输入条件为假时相同。 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参阅“梯形图”表中的“预扫描”行。 |
正常执行 | 请参见“梯形图”表中的“梯级输入条件为假”行,然后参见“梯级输入条件为真”行。 |
后扫描 | 请参见“梯形图”表中的“后扫描”行。 |
输入
操作数 | 数据类型 | 格式 | 说明 |
|---|---|---|---|
Transform Direction | DINT | 标签 | 要计算笛卡尔坐标位置,可选择正向 (0)。要计算机器人关节位置,可选择反向 (1)。 |
Reference Position | REAL[6] | 标签 | 如果变换方向为正向,则输入包含关节角度的数组。 如果变换方向为反向,则输入包含笛卡尔坐标位置的数组。 |
Robot Configuration | DINT | 标签 | 机器人配置的位 0 无关紧要,对于 TD = 反向和 TD = 正向,将忽略该位。 该输入操作数仅对反向变换方向有效。 位值列表: 位 0 – 机器人配置变化 (1)/不变 (0)位 1 – 左臂 (1)/右臂 (0)位 2 – 向上 (1)/向下 (0)位 3 – 切换 (1)/不切换 (0)对于 Delta 机器人几何结构,机器人配置必须为零 (0)。 |
Robot Turns Counters | INT16[4] | 标签 | 一个计数器,用于指示相应轴沿 +/- 方向旋转时经过 180 度点的次数。 如果变换方向为正向,该值由系统计算,并通过此标签返回。如果变换方向为反向,则该值可确定最终关节位置。 以下是关节轴圈数计数的数组索引分配: 索引 0 - J1 轴 索引 1 - J4 轴 索引 2 - J6 轴 索引 3 = 保留 |
输出
操作数 | 数据类型 | 格式 | 说明 |
|---|---|---|---|
Transform Position | REAL[6] | 标签 | 存储所计算位置的数组。 如果变换方向为:
|
Robot Turns Counters | INT16[4] | 标签 | 如果变换方向为正向,该值由系统计算,并通过此标签返回。 |
Robot Configuration | DINT | 标签 | 该输出操作数仅对正向变换方向有效。 在正向变换中,该值由系统计算,并通过此标签返回。 对于 Delta 机器人几何结构,机器人配置输出始终为零。 |
重要提示:
对于 4 轴关节式非独立机器人几何结构,如果输入将映射至 J2 关节值 -179.00 的笛卡尔坐标位置,则 MCTPO 反向变换会返回由于运动学计算中出现舍入误差而导致的 JOINT_ANGLE_EXCEEDED 错误。
有关 J3 限制,请参见机器人制造商提供的用户文档。
故障代码
如果提供的操作数值无效,则运行时将发生错误。
扩展错误代码
“扩展错误代码”针对许多指令通用的“错误代码”提供指令特定的附加信息。有关运动指令,请参阅 运动错误代码 .ERR。扩展错误代码的含义取决于相应的错误代码。
错误代码 | EX_ERROR 代码 | 说明 |
|---|---|---|
13 | 3 | 值超出范围(基本角度) 任何 360 或 -360 的姿态角度。 |
13 | 3 | 值超出范围(基本 ID) ID 等于任何负值。 |
13 | 4 | 值超出范围(工具角度) 任何 360 或 -360 的姿态角度。 |
13 | 4 | 值超出范围(工具 ID) ID 等于任何负值。 |
13 | 5 | 参数超出范围 变换方向 (Transform Direction)。 |
13 | 6 | 参数超出范围 参考位置数组末尾 6 |
13 | 6 | 参数超出范围 输入位置 Rx、Ry 或 Rz 存在且值 ![]() 180 度 |
13 | 6 | 参数超出范围 操作数 6 如果机器人几何结构是 Delta J1J2J6 或 Delta J1J2J3J6,输入位置 Rx 存在且不等于 180°。 如果机器人几何结构是 Delta J1J2J6 或 Delta J1J2J3J6,且输入位置 Ry 不等于 0°。 如果机器人几何结构是 Delta J1J2J3J4J5,输入位置 Rx 存在且值不等于 0° 或 180°。 |
13 | 7 | 参数超出范围 变换位置数组末尾 6 |
13 | 9 | 参数超出范围 任何用于反向变换的圈数计数器的计数超过 127 或 -127 圈。 |
61 | 1 | 连接冲突 变换运动组错误 笛卡尔或机器人坐标系统未分组,或与其他运动组相关联。 |
61 | 2 | 连接冲突 变换重复系统错误 操作数 0 和操作数 1 为同一坐标系统类型 |
61 | 3 | 连接冲突 变换源维度错误 笛卡尔坐标系统的变换维度小于 2。 |
61 | 4 | 连接冲突 变换目标维度错误 机器人坐标系统变换维度等于零。 |
61 | 9 | 连接冲突 变换轴重叠错误 轴同时为笛卡尔和机器人坐标系统的成员。 |
61 | 12 | 连接冲突 变换连杆长度无效 对于任何机器人几何结构,连杆长度值必须 0.0 单位。 |
61 | 15 | 连接冲突 变换 Delta 配置无效 连杆长度 1 不得等于连杆长度 2 末端执行器偏移 1 Re 不得为负值 对于 Delta J1J2J6 和 Delta J1J2J3J6,末端执行器偏移 3 (D3) 不得为负值 (连杆长度 1 + Rb - Re)必须小于连杆长度 2 (连杆长度 1 + Rb - Re)必须为正值或大于零 |
61 | 18 | 连接冲突 变换关节式配置无效 当偏移值对于关节式独立 J1J2J3J4J5J6 几何结构无效时,将生成该错误。 基点偏移 Yb 必须等于 0.0 末端执行器偏移 Ye 必须等于 0.0 末端执行器偏移 Ze 必须等于 0.0 |
67 | 1 | 变换位置无效 MOP Rx 姿态无效 EOA 变换的 Rx 姿态值无效。对于 4 轴几何结构(Delta、SCARA、关节式非独立),仅允许 Rx = 180 度的位置。对于所有其他位置,均会生成错误。 |
67 | 2 | 变换位置无效 MOP Ry 姿态无效 EOA 变换的 Ry 姿态值无效。对于 4 轴几何结构,移除工作坐标系和工具坐标系后,EOA 变换不应有任何 Ry 姿态值。 |
67 | 3 | 变换位置无效 MOP Ry 姿态无效 |
147 | 3 - 5 | 姿态变换常数无效 扩展错误代码 3:Rx 扩展错误代码 4:Ry 扩展错误代码 5:Rz 姿态轴 具有变换常数 MAX_K_CONSTANT_FOR_ORIENTATION_AXIS 或具有非整数的变换常数或 坐标单位与位置单位之间的换算比不等于 1:1。 |
148 | 3 -5 | MCPM 姿态偏移非零 Rx 姿态偏移无效。 扩展错误代码 3:Rx 姿态偏移无效。 扩展错误代码 4:Ry 姿态偏移无效。 扩展错误代码 5:Rz 姿态偏移无效。 如果机器人几何结构为(MO_CD_J1J2J6 或 MO_CD_J1J2J3J6)且: 或如果机器人几何结构为 MO_CD_J1J2J3J4J5 且: |
151 | 1 | 关节角度 J1 超出限值 有关详细信息,请参见关节范围限制的特定于几何结构的配置部分。 |
151 | 2 | 关节角度 J2 超出限值 有关详细信息,请参见关节范围限制的特定于几何结构的配置部分。 |
151 | 3 | 关节角度 J3 超出限值 有关详细信息,请参见关节范围限制的特定于几何结构的配置部分。 |
151 | 4 | 关节角度 J4 超出限值 有关详细信息,请参见关节范围限制的特定于几何结构的配置部分。 |
151 | 5 | 关节角度 J5 超出限值 有关详细信息,请参见关节范围限制的特定于几何结构的配置部分。 |
151 | 6 | 关节角度 J6 超出限值 有关详细信息,请参见关节范围限制的特定于几何结构的配置部分。 |
153 | 1 | 变换位置无效 MOP X 变换无效 X 轴上的变换无效 |
153 | 2 | 变换位置无效 MOP Y 变换无效 Y 轴上的变换无效 |
153 | 3 | 变换位置无效 MOP Z 变换无效 Z 轴上的变换无效 |
156 | 1 | 奇异点条件错误 关节 1 轴接近 6 轴关节式独立几何结构中的手臂奇异点条件 扩展错误 1:手臂奇异点条件 |
156 | 2 | 奇异点条件错误 关节 3 轴接近 6 轴关节式独立几何结构中的肘部奇异点条件 扩展错误 2:肘部奇异点条件 |
156 | 3 | 奇异点条件错误 关节 5 轴接近 6 轴关节式独立几何结构中的腕部奇异点条件 扩展错误 1:腕部奇异点条件 |
示例
梯形图
该示例展示了变换方向为反向的 MCTPO 指令,其中,用户将笛卡尔坐标位置和圈数计数器作为输入。该指令会计算相应的目标关节角度位置,并将其写入变换位置参数作为输出。

该示例展示了变换方向为正向的 MCTPO 指令。将目标位置存储至参考位置操作数作为输入。该指令会计算相应的笛卡尔坐标和圈数计数器的值,并将此作为输出。

结构化文本
MCTPO(CS1, CS2, MCTPo1[0], BaseFrame, ToolFrame, Forward, refPos[0], transPos[0], robotConfig[0], TurnsCounter[0]);
小贴士:
要进一步了解如何创建有姿态支持的几何结构,请参见《运动坐标系统用户手册》(出版号 MOTION-UM002)。
提供反馈
360 或
-360 的姿态角度。
6
180 度