运动协调直线运动 (MCLM)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。运动协调性直线运动 (MCLM) 指令用于在笛卡尔坐标系统中针对指定轴启动一维或多维直线协调运动。可采用绝对值或增量形式定义新位置。
重要提示:
用于指令运动控制属性的标签只能使用一次。在其他指令中重复使用运动控制标签可能导致意外操作,从而可能造成设备损坏或人员受伤。
重要提示:
速度和/或结束位置过冲的风险
如果通过任意方法动态更改运动参数,即通过更改运动动态(MCD 或 MCCD)或在上一条指令完成前启动新指令,请注意存在速度和/或结束位置过冲的风险。
如果在运动减速或接近减速点时最大减速度减小,则梯形速度曲线可能会过冲。
而在下列情况下,S 形速度曲线可能会过冲:
如果在运动减速或接近减速点时最大减速度减小;或者
最大加速急动度减小,且轴正在加速。但要记住,如果急动度以时间百分比的形式指定,则可间接更改。
架构 | 标准 | 安全 |
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 | 否 |
Compact GuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 | 否 |
- 此为转换指令。使用时,请遵循以下步长:
- 在梯形逻辑中,插入一个指令,以便在每次执行该指令时,梯级输入条件均会由 false 转换为 true。
- 在结构化文本例程中,插入指令的条件以便仅在转换时执行。
可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
MCLM (CoordinateSystem, MotionControl, MoveType, Position, Speed, Speedunits, Accelrate, Accelunits, Decelrate, Decelunits, Profile, Acceljerk, Deceljerk, Jerkunits, TerminationType, Merge, Mergespeed, CommandTolerance,LockPosition, LockDirection, EventDistance, CalculatedData);
操作数
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅 数据转换。
梯形图和结构化文本
运动协调直线运动 (MCLM) 指令可使用静态耦合为主轴的最多三 (3) 个轴在笛卡尔坐标系统中执行直线运动。用户可以指定使用绝对目标位置还是增量目标位置,可以指定所需速度、最大加速度、最大减速度、加速急动度、减速急动度以及各参数的单位。实际速度取决于速度设定单位(单位/秒或最大值百分比,由坐标系统配置决定)以及在控制作用下运动的主轴的组合。每个轴都被设定以一定速度运动,以便让所有轴同时到达设定的端点(目标位置)。
操作数 | 类型 | 格式 | 说明 |
坐标系统 | COORDINATE_SYSTEM | 标签 | 已协调轴组。 对已协调轴组的引用。对于支持 REF_TO 运动数据类型的控制器,坐标系统操作数类型可以替换为 REF_TO_COORDINATE_SYSTEM 类型。 |
运动控制 | MOTION_INSTRUCTION | 标签 | 用于访问指令状态参数的结构。 |
运动类型 | SINT、INT 或 DINT | 立即数或标签 | 选择运动类型: 0 = 绝对式 1 = 增量式 |
位置 | REAL | 数组标签 [ ] | [坐标单位] |
速度 | SINT、INT、DINT 或 REAL | 立即数或标签 | [坐标单位] |
Speed Units | SINT、INT 或 DINT | 立即数 | 0 = 单位/秒 1 = 最大值百分比 4 = 单位/主轴单位 |
Accel Rate | SINT、INT、DINT 或 REAL | 立即数或标签 | [坐标单位] |
加速度单位 | SINT、INT 或 DINT | 立即数 | 0 = 单位/秒 2 1 = 最大值百分比 4 = 单位/主轴单位 2 |
Decel Rate | SINT、INT、DINT 或 REAL | 立即数或标签 | [坐标单位] |
Decel Units | SINT、INT 或 DINT | 立即数 | 0 = 单位/秒 2 1 = 最大值百分比 4 = 单位/主轴单位 2 |
Profile | SINT、INT 或 DINT | 立即数 | 0 = 梯形 1 = S 曲线 |
加速急动度 | SINT、INT、DINT 或 REAL | 立即数或标签 | 必须始终输入操作数“加速急动度”和“减速急动度”的值。仅当将“曲线”操作数配置为 S 曲线时,此指令才会使用这些值。 按以下急动度单位输入急动度。 0 = 单位/秒 3 1 = 最大值百分比 2 = 时间百分比 4 = 单位/主轴单位 3 6 = 时间主轴驱动百分比 使用以下值开始操作。 加速急动度 = 100(时间百分比) 减速急动度 = 100(时间百分比) 急动度单位 = 2 |
减速急动度 | SINT、INT、DINT 或 REAL | 立即数或标签 | |
Jerk Units | SINT、INT 或 DINT | 立即数 | |
终止类型 | SINT、INT 或 DINT | 立即数或标签 | 0 = 实际公差 1 = 不进入稳态 2 = 给定公差 3 = 不减速 4 = 跟随轮廓速度受限 5 = 跟随轮廓速度不受限 6 = 设定的给定公差 请参见下文“相关主题”部分中的“选择终止类型”。 |
Merge | SINT、INT 或 DINT | 立即数 | 0 = 禁用 1 = 协调运动 2 = 所有运动 |
Merge Speed | SINT、INT 或 DINT | 立即数 | 0 = 设定速度 1 = 当前速度 |
给定公差 | REAL | 立即数实数或标签 | 协调运动中的混合起点位置。如果使用终止类型 6,可使用此参数代替坐标系统中的给定公差。 提示 :终止类型 2 与终止类型 6 基本相同,但它使用坐标系统中的给定公差值,而忽略此参数。 |
锁定位置 | REAL | 标签 | 这是主轴上的位置,当在从轴上启动运动后,从轴将从该位置开始跟随主轴运动。 有关详细信息,请参见下文的“结构”部分。 |
锁定方向 | UINT32 | 立即数 | 指定锁定位置的使用条件。 有关详细信息,请参见下文的“结构”部分。 |
Event Distance | REAL、数组或 0 | 数组标签 | 沿运动轨迹自运动终点起测量的位置。 有关详细信息,请参见下文的“结构”部分。 |
Calculated Data | REAL ARRAY 或 0 | 数组标签 | 从运动起点到“事件距离”点所需经过的主轴距离(或时间)。 有关详细信息,请参见下文的“结构”部分。 |
在结构化文本中输入操作数值的枚举值时,若枚举值由多个单词构成,输入时不得包含空格。例如,输入“减速度单位”的值时,应采用 unitspersec
2
,而不是梯形图逻辑中显示的 Units per Sec2
。有关结构化文本中表达式语法的详细信息,请参见“结构化文本语法”部分。
输入结构化文本操作数时,可参考下表中的条目。
此操作数 | 可选择以下输入方式 | |
输入文本 | 或 | |
坐标系统 | 无枚举值 | 标签 |
运动控制 | 无枚举值 | 标签 |
运动类型 | 无枚举值 | 0(绝对式) 1(增量式) |
位置 | 无枚举值 | 数组标签 |
速度 | 无枚举值 | 立即数或标签 |
Speed Units | unitspersec %ofmaximum unitspermasterunits | 0 1 4 |
Accel Rate | 无枚举值 | 立即数或标签 |
加速度单位 | unitspersec 2 %ofmaximum unitspermasterunit 2 | 0 1 4 |
Decel Rate | 无枚举值 | 立即数或标签 |
减速度单位 | unitspersec 2 %ofmaximum unitspermasterunit 2 | 0 1 4 |
Profile | trapezoidal s-curve | 0 1 |
加速急动度 | 无枚举值 | 立即数或标签 必须始终输入操作数“加速急动度”和“减速急动度”的值。仅当将曲线操作数配置为 S 曲线时,此指令才会使用这些值。 使用以下值开始操作。 加速急动度 = 100(时间百分比) 减速急动度 = 100(时间百分比) 急动度单位 = 2 |
减速急动度 | 无枚举值 | |
Jerk Units | unitspersec 3 %ofmaximum %oftime unitspermasternit3 %oftimemasterdriven | 0 1 2(使用该值开始操作) 4 6 |
终止类型 | 无枚举值 | 0 = 实际公差 1 = 不进入稳态 2 = 给定公差 3 = 不减速 4 = 跟随轮廓速度受限 5 = 跟随轮廓速度不受限 6 = 设定的给定公差 请参见下文“相关主题”部分中的“选择终止类型”。 |
Merge | disabled coordinatedmotion allmotion | 0 1 2 |
Merge Speed | programmed current | 0 1 |
给定公差 | 无枚举值 | 立即数或标签 |
锁定位置 | 无枚举值 | 立即数、实数或标签 |
锁定方向 | 无 immediateforwardonly immediatereverseonly positionforward positionreverse | 0 1 2 3 4 |
Event Distance | 无枚举值 | 数组 |
Calculated Data | 无枚举值 | 数组 |
坐标系统
“坐标系统”操作数指定用于定义笛卡尔坐标系统维度的一组运动轴。对于此版本,坐标系统最多支持三 (3) 个主轴。在坐标速度计算中,将仅包含配置为主轴的轴。
运动控制
以下控制位受 MCLM 指令影响。
助记符 | 说明 |
.EN(使能)位 31 | 当梯级由假跳变为真时,使能位置位;当梯级由真跳变为假时,此位复位。 |
.DN(完成)位 29 | 当协调指令已成功验证并排入队列时,完成位置位。由于此位会在指令排入队列时置位,因此,如果在指令离开队列后的验证操作期间发生运行错误,此位可能呈现置位状态。梯级由假跳变为真时,此位复位。 |
.ER(错误)位 28 | 当梯级由假跳变为真时,错误位复位。当协调运动未成功启动时,此位置位。如果已排队指令发生运行错误,此位还会与完成位一同置位。 |
.IP(正在处理)位 26 | 当协调运动成功启动时,正在处理位置位。当不存在后续运动且协调运动到达新位置时、存在后续运动且协调运动到达相应终止类型的指定位置、协调运动由另一条合并类型为协调运动的 MCLM 或 MCCM 指令代替、或者由 MCS 指令终止时,此位复位。 |
.AC(激活)位 23 | 将协调运动指令排入队列后,激活位指示正在对运动进行控制的指令。协调运动变为激活状态时,此位置位。当处理完成位置位或指令停止时,此位复位。 |
.PC(处理完成)位 27 | 当梯级由假跳变为真时,处理完成位复位。当不存在后续运动且协调运动到达新位置时,或者存在后续运动且协调运动到达相应终止类型的指定位置时,此位置位。 |
.ACCEL(加速位)位 00 | 当协调运动处于加速阶段时,加速位置位。当协调运动处于恒速或减速阶段时,或者协调运动结束时,此位复位。 |
.DECEL(减速位)位 01 | 当协调运动处于减速阶段时,减速位置位。当协调运动处于恒速或加速阶段时,或者协调运动结束时,此位复位。 |
.CalculatedDataAvailable 位 02 | CalculatedDataAvailable 位置位,以响应这些指令的指令面板参数中的事件距离请求。 |
.TrackingMaster 位 03 | 当在 MDSC 模式下完成加速后,TrackingMaster 位将置位。这表示从轴将与主轴同步。在从轴上出现以下情况时,此位复位: 当从轴不论任何原因开始加速或减速时,例如由于发出 MCD 或 MAS 指令而加速或减速时。 从轴链接到另一主轴。在这种情况下,当从轴再次开始跟踪新的主轴时,新指令状态字中的此位会再次置位。 从轴已停止。在从轴上发起停止动作后,跟踪主轴位会立即清零。 当锁定方向为“无”时,此位在任何情况下都不会置位。 请注意,从轴上的跟踪主轴位不受主轴上任何操作(即停止、MCD 等)的影响。 在时间驱动模式下,跟踪主轴位始终重置。 |
运动类型
“运动类型”操作数用于指定协调运动路径的指示方法。运动类型可以设置为绝对式或增量式。
- 绝对式 - 轴以相应操作数指定的速度、加速度和减速度沿直线路径运动到位置数组定义的位置。
如果将轴配置为进行旋转操作,绝对式运动类型的工作方式与对线性轴的工作方式相同。当轴位置超过归位参数的值时,则轴会归位。如此一来,轴位置绝不会大于归位参数值,也不会小于零。
指定位置的符号由插补器解析,位置值可以是正数,也可以是负数。如果位置值为负数,会控制插补器使旋转轴沿负方向运动,以获得所需绝对位置;如果位置值为正数,表示需要进行正向运动才能到达目标位置。如果位置值大于归位值,会生成错误。在绝对位置停止之前,轴的运动时间绝不会超过一个归位周期。
- 增量式 - 坐标系统以指定速度、按相应操作数确定的加速度和减速度,沿直线路径运动位置数组指定的距离。
指定距离由插补器解析,可以是正数,也可以是负数。如果位置值为负数,会控制插补器使轴沿负方向运动;如果位置值为正数,表示需要进行正向运动才能到达目标位置。在增量模式下,允许运动时间超过一个归位周期。
位置
一维数组,其维数是指至少等于坐标系统中指定的轴数。位置数组定义新的绝对位置或增量位置。
速度
“速度”操作数定义沿协调运动路径运动时的最大矢量速度。
Speed Units
“速度单位”操作数定义“速度”操作数所用的单位,可直接定义为指定坐标系统的坐标单位,也可以定义为坐标系统中定义的最大值的百分比。
Accel Rate
“加速度”操作数定义沿协调运动路径运动时的最大加速度。
加速度单位
“加速度单位”操作数定义“加速度”操作数所用的单位,可直接定义为指定坐标系统的坐标单位,也可以定义为坐标系统中定义的最大值的百分比。
Decel Rate
“减速度”操作数定义沿协调运动路径运动时的最大减速度。
Decel Units
“减速度单位”操作数定义“减速度”操作数所用的单位,可直接定义为指定坐标系统的坐标单位,也可以定义为坐标系统中定义的最大值的百分比。
Profile
“曲线”操作数确定协调运动是采用梯形速度曲线还是 S 形速度曲线。
ControlLogix
运动控制器支持梯形(线性加速和线性减速)和 S 形(受控急动度)速度曲线。下面给出了关于这些运动曲线对各种应用要求所产生的效果指南。速度曲线的效果
Profile | 加速/减速 | 电机 | 控制优先级 | |||
最高到最低 | ||||||
梯形曲线 | 最快 | 较差 | 加速/减速 | 速度 | 位置 | |
S 曲线 | 慢 2 倍 | 最佳 | 急动度 | 加速/减速 | 速度 | 位置 |
梯形曲线
梯形速度曲线是最常用的曲线,因为它在后续的运动控制编程中可提供最大的灵活性,而且具有最短的加速和减速时间。最大速度变化量由加速度和减速度决定。由于急动度不是梯形曲线的因子,因此将其视为无穷大,在下图中以一系列竖线来表示。

S 曲线
当需要最大程度地降低机械系统的压力和负载时,通常使用 S 形速度曲线。但是,与梯形速度曲线相比,S 曲线轨迹牺牲了加速和减速时间。加速或减速时速度的最大变化率还受到急动度的限制。
当启动以下指令时,会计算协调运动加速急动度和减速急动度。
|
|
|
|
|
|
|
|
计算得出的急动度会生成三角形加速和减速曲线,如下图所示。
S 曲线加速/减速时间

对于 S 曲线型运动,急动度根据设定的速度、加速度和减速度值确定,而不是依据运动距离确定。当混合具有相同加速度和减速度值的运动时,
Logix Designer
软件将尝试保持急动度恒定,即使运动距离不足以使速度达到设定速度(速度受限的运动)也是如此。如果将 S 曲线运动配置为 | 则增大速度 |
无速度限制 | 缩短运动的执行时间 |
有速度限制 | 延长运动的执行时间 |
对于设定为零速的 S 曲线运动,急动度变化率由非零速的上一条指令所设定的速度变化率确定。
有关 MCCD 指令更改的影响的详细信息,请参见 MCCD 指令。
加速急动度
“加速急动度”定义了所设定运动的最大加速急动度。有关计算加速急动度的详细信息,请参见下文的“急动度单位”部分。
减速急动度
“减速急动度”定义所设定运动的最大减速急动度。有关计算减速急动度的详细信息,请参见下文的“急动度单位”部分。
Jerk Units
“急动度单位”定义在“加速急动度”和“减速急动度”操作数中输入的值所用的单位。这些值可以采用指定坐标系统的位置单位直接输入,也可以采用百分比形式输入。当配置为使用最大值的百分比时,急动度按在坐标系统属性中指定的“最大加速急动度”和“最大减速急动度”操作数的百分比进行应用。当配置为使用时间的百分比时,该值是根据指令中指定的速度、加速度和减速度确定的百分比。
终止类型
对于主轴驱动速度控制 (MDSC),若所有顺序指令以相同模式(主轴驱动模式或时间驱动模式)运行,则支持所有终止类型。如果在协调运动队列中切换终止类型,则可能会生成错误,具体取决于运动类型的序列。
仅当从坐标系统的运动混合使用多种终止类型(终止类型 2、3 或 6),并在 MDSC 模式下编程时,以下内容才适用。
如果使用运动序列最后一条 MCLM 指令中返回的“计算数据”来设定为使运动序列进入 PC 状态而需要主轴移动的距离,则可能需要向“计算数据”加上较小的安全裕度。如果不加上此裕度,则主轴的运动有可能在对从坐标系统设定的整个运动序列结束之前完成。如果出现这种情况,从坐标系统上的最后一条运动指令保持激活,不会进入 PC 状态。较小安全裕度的值取决于运动序列中第一个运动和最后一个运动所用的给定公差,具体如下所示:
小贴士:
计算安全裕度时要使用以下缩写:
CUP = 近似更新周期
MAS = 主轴速度
- 如果将 100% 的给定公差值用于序列中的第一个运动,则:SafetyMargin1 = CUP * MAS否则SafetyMargin1 = CUP * MAS * 0.02
- 对于混合序列中介于第一个和最后一个运动之间的所有其他运动:SafetyMargin2 = CUP * MAS * 0.02 * 介于第一个和最后一个运动之间的混合运动数
- 如果将 100% 的给定公差值用于序列中的最后一个运动,则:SafetyMargin3 = CUP * MAS否则SafetyMargin3 = CUP * MAS * .02
- 最终 SafetyMargin = SafetyMargin1 + SafetyMargin2 + SafetyMargin3设定并验证序列后,将重复执行该序列。
Merge
“合并”操作数决定是否将所有指定轴的运动都转换为纯协调运动。“合并”操作数的选项包括:禁用合并、协调运动或所有运动。
- 禁用合并任何当前执行的单轴运动指令,若涉及在指定坐标系统中定义的任意轴,都不会因该指令激活而受到影响,并在受影响的轴上产生叠加运动。此外,任何涉及到同一指定坐标系统的协调运动指令都基于其终止类型运行到完成。
- 协调运动任何当前执行的协调运动指令,若涉及同一指定坐标系统,都将被终止。激活的运动以“合并速度”参数定义的速度合并到当前运动中。任何未处理的协调运动指令都被取消。任何当前执行的坐标系统单轴运动指令,若涉及在指定坐标系统中定义的任意轴,都不会因该指令激活而受到影响,并在受影响的轴上产生叠加运动。
- 所有运动任何当前执行的单轴运动指令,若涉及在指定坐标系统中定义的任意轴,都被终止。并且,任何当前正在执行的协调运动指令也将被终止。之前的运动以“合并速度”参数定义的速度合并到当前运动中。任何未处理的协调运动指令都被取消。
Merge Speed
“合并速度”操作数定义当合并启用时,是将当前速度还是设定的速度用作协调运动路径上的最大速度。
目前,协调运动只支持将一条协调运动指令排入队列。因此,MovePendingStatus 位和 MovePendingQueueFullStatus 位始终相同。
有关合并指令的其他信息
如下图所示,启动从点 A 至点 B 的运动。当轴处于点 C 时,启动对点 D 的增量合并。因此,当前指令将在点 C 终止。控制系统计算点 C 处沿矢量 AB 从当前速度减至零速所需的减速距离。该距离为图中所示的矢量 CF。然后,通过将矢量 CF 加到点 C 来计算虚点 F。生成的从 C 到 D 的合并运动如下图所示。运动沿着从点 C 开始的曲线进行,然后连接从 F 到 D 的直线。点 D 使用合并指令的增量数据从合并原点(点 C)进行计算。该路径与设定的初始运动 ─ 使用终止类型“不减速”,从 A 点运动到 F 点,然后从 F 点运动到 D 点的运动完全相同。

本示例适用于线性合并。
尝试合并圆弧运动时,若生成的路径未定义圆形,则会出现编程错误。增量模式下的圆心从 C 点(合并点)进行计算。但是,从 F 点(计算的减速终点)到合并运动的终点必须存在一个圆。
增量模式下的合并
协调运动的合并与 MAM 合并不同。对于 MCLM,合并时未完成的所有运动都将被丢弃。例如,假设您已在增量模式下编程单轴 MCLM,起始绝对位置为 0 并且设定的增量距离为 4 个单位。如果在绝对位置 1 进行合并,并且合并时需要增量运动 4 个单位,则运动在位置 5 处完成。
如果本例发生在以增量模式编程的 MAM 中,则最终位置为 8。
MCLM 指令的“目标位置输入”(Target Position Entry) 对话框
MCLM 指令的“目标位置输入”(Target Position Entry) 对话框提供了一种简单的位置编辑方法。若要访问“目标位置输入”(Target Position Entry) 对话框,必须将坐标系统的名称插入指令中,必须将有效的标签名称输入到具有处理轴数所需的足够元素的位置字段中,并且必须选择了有效的运动类型。
若要访问 MCLM 指令的“目标位置输入”(Target Position Entry) 对话框,可按下指令面板上“位置”(Position) 行之后的省略号。
用于访问“目标位置输入”(Target Position Entry) 对话框的 MCLM 指令梯形图有效值

按下梯形图指令面板 Position 行的省略号按钮,调用目标位置 (Target Position) 选项卡,从而编辑位置值
小贴士:
无法对引用执行此操作。
对话框标题指示指令的坐标系统和标签名称。
功能 | 说明 |
轴名称 | 这些字段列出坐标系统中包含的各个轴的名称。用户无法在此对话框中更改轴名称。 |
目标位置/目标增量 | 该字段包含指令面板中指定的协调运动的端点或增量。它是数字值。 |
实际位置 | 这些是轴在坐标系统中的当前实际位置。当联机且坐标系统自动标签更新已启用时,这些位置将动态更新。 |
设置目标 = 实际值 (Set Targets = Actuals) 按钮 | 当处于绝对模式时,此按钮会将实际位置值自动复制到“目标位置”(Target Position) 列。 当处于增量模式时,此按钮会将实际位置值自动复制到“目标增量”(Target Increment) 列。 |
所选的运动类型将控制“设置目标 = 实际值”(Set Targets = Actuals) 按钮的外观和可用性。
当运动类型设为绝对式时,目标列的标题为“目标位置”(Target Position);当运动类型设为增量式时,目标列的标题为“目标增量”(Target Increment),且“设置目标 = 实际值”(Set Targets = Actuals) 按钮呈灰显状态。
MCLM 为跳变指令:
- 在继电器梯形图中,每次要执行该指令时,梯级输入条件均会由假切换为真。
- 在结构化文本中,为指令设置限定条件,以便仅在出现跳变时才执行此指令。请参见“结构化文本语法”部分。
结构
有关通过主轴驱动速度控制 (MDSC) 功能可用于 MCLM 指令的输入和输出参数,请参阅 输入和输出参数结构。在任意参数激活之前,必须执行 MDCC 指令,并且该指令必须激活(IP 位置位)。
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。如果将未初始化的引用或类型不正确的引用传递给坐标系统操作数,则可能会发生严重故障。有关操作数相关的故障,请参阅 通用属性。
执行
梯形图
条件/状态 | 执行的操作 |
预扫描 | .EN、.DN、.ER 和 .IP 位设置为假。 |
梯级输入条件为假 | 如果 .DN 或 .ER 位为真,则 .EN 位设置为假。 |
梯级输入条件为真 | .EN 位设置为真,指令执行。 |
后扫描 | 不适用 |
结构化文本
条件/状态 | 执行的操作 |
预扫描 | 请参阅“梯形图”表中的“预扫描”行。 |
正常执行 | 请参见“梯形图”表中的“梯级输入条件为假”行,然后参见“梯级输入条件为真”行。 |
后扫描 | 请参见“梯形图”表中的“后扫描”行。 |
运行时的错误状况
如果主轴速度为零,除非从轴速度也为零,否则将无法从时间驱动模式切换到主轴驱动模式。
扩展错误代码
扩展错误代码有助于进一步明确特定指令给出的错误消息。其特性取决于所关联的错误代码。
伺服关闭状态 (5)、关闭状态 (7)、轴类型非伺服 (8)、轴未配置 (11)、归零过程中的错误 (16) 和非法轴数据类型 (38) 错误的扩展错误代码都以相同的方式工作。对于扩展错误代码,将显示 0...n 之间的数字。该数字是坐标系统的索引,用于指示处于错误状态的轴。
对于轴未配置 (11) 错误代码,存在附加值 -1,表示坐标系统无法建立用于协调运动的轴。有关运动指令,请参阅 运动错误代码 .ERR。
对于 MCLM 指令,错误代码13 - 参数超出范围,扩展错误将返回一个指示参数不合要求的数字,这些数字从零开始,自上而下按数字顺序列于面板中。例如,2 指示运动类型的参数值出错。
引用的错误代码和对应的数字 | 扩展错误数字指示符 | 指令参数 | 说明 |
参数超出范围 (13) | 2 | 运动类型 | 运动类型小于 0 或大于 1。 |
参数超出范围 (13) | 3 | 位置 | 位置数组不够大,不足以为坐标系统中的所有轴提供位置。 |
参数超出范围 (13) | 4 | 速度 | 速度小于 0。 |
参数超出范围 (13) | 6 | Accel Rate | 加速度小于或等于 0。 |
参数超出范围 (13) | 8 | 减速度 | 减速度小于或等于 0。 |
参数超出范围 (13) | 11 | 终止类型 | 终止类型小于 0 或大于 3。 |
对于错误代码 54 - 最大减速度值为零,如果扩展错误返回正数 (0-n),则指示坐标系统中不合要求的轴。转到“坐标系统属性”(Coordinate System Properties) 的“常规”(General) 选项卡,查看“轴网格”(Axis Grid) 的方括号 ([ ]) 列,确定最大减速度值为 0 的轴。单击不合要求的轴旁边的省略号按钮,访问“轴属性”(Axis Properties) 画面。转到“动力学”(Dynamics) 选项卡,对最大减速度值进行适当更改。如果扩展错误返回的数字为 -1,则表示坐标系统的最大减速度值为 0。转到“坐标系统属性”(Coordinate System Properties) 的“动力学”(Dynamics) 选项卡,更正最大减速度值。
MCLM 状态位变化
状态位可用于监视运动指令的进度。状态位分为三种,分别提供相关信息。
- 轴状态位
- 坐标系统状态位
- 协调运动状态位
当启动 MCLM 指令时,状态位将发生以下变化。
运动指令预定义的数据类型状态位
轴状态位
位名称 | 含义 |
CoordinatedMotionStatus | 当指令启动时置位。当指令结束时清零。 |
坐标系统状态位
位名称 | 含义 |
MotionStatus | 当 MCLM 指令激活并且坐标系统连接到其相关轴时置位。 |
协调运动状态位
位名称 | 含义 |
AccelStatus | 当矢量加速时置位。当正在混合或者矢量减速运动时清零。 |
DecelStatus | 当矢量减速时置位。当正在混合或者矢量加速运动时清零。 |
ActualPosToleranceStatus | 仅针对“实际公差”终止类型置位。在满足以下两个条件后置位。1) 插补已完成。2) 距设定端点的实际距离小于配置的坐标系统实际公差。该位在指令完成后保持置位。该位在启动新指令时复位。 |
CommandPosToleranceStatus | 当与设定端点的距离小于配置的坐标系统给定公差值时,将在所有终止类型下置位。该位在指令完成后保持置位。当启动新指令时,该位复位。 坐标系统中的 CommandPosToleranceStatus (CS_CMD_POS_TOL_STS) 状态位按如下规则置位: TT0、TT1、TT4、TT5 - 当与端点的距离小于给定公差值时,该位置位。 当第一个运动完成时,该位清零。 TT2、TT6 - 当与端点的距离小于给定公差值时,该位置位。 当启动混合时(即启动第二个运动时),该位清零。因此,如果在给定公差 (CT) 点启动混合,可能看不到该位的变化。如果下一个运动是短距离运动,或两个相邻运动的加速和减速时间匹配,则混合操作可能略微延后超过 CT 点。 TT3 - 当与端点的距离小于给定公差值(与 TT2 和 TT6 类似)时,该位置位。 当启动混合时该位清零。因此,如果在减速点启动混合,可能看不到该位的变化。如果下一个运动是短距离运动,或两个相邻运动的加速和减速时间匹配,则混合操作可能略微延后超过减速点。 |
StoppingStatus | 当 MCLM 指令启动时,停止状态位清零。 |
MoveStatus | 当 MCLM 开始轴运动时置位。当上一运动指令的 .PC 位置位或执行导致运动停止的运动指令时,该位将清零。 |
MoveTransitionStatus | 当符合“不减速”或“给定公差”终止类型时置位。当混合共线运动时,该位不置位,因为机器始终沿路径运动。当混合完成、待定指令的运动开始、或者导致停止的运动指令执行时,该位清零。表示机器未沿路径运动。 |
MovePendingQueueFullStatus | 当指令队列已满时置位。当队列有空间容纳新的协调运动指令时,该位清零。 |
CoordinateSystemLockStatus | 当 MCLM 或 MCCM 指令请求轴锁定且轴已经过锁定位置时置位。当发起 MCLM 或 MCCM 时清零。 对于“仅立即正向”和“仅立即反向”枚举值,该位在启动 MCLM 或 MCCM 后立即置位。 当枚举值为“仅位置正向”或“仅位置反向”时,该位在主轴沿指定方向经过锁定位置时置位。如果枚举值为“无”,则该位不会置位。 当主轴反向且从轴停止跟随主轴时,CoordMotionLockStatus 位清零。当从坐标系统恢复跟随主轴时,CoordMotionLockStatus 位再次置位。当发起 MCCS 指令时,CoordMotionLockStatus 位也将清零。 |
目前,协调运动只支持将一条协调运动指令排入队列。因此,MovePendingStatus 位和 MovePendingQueueFullStatus 位始终相同。
主轴驱动速度控制 (MDSC) 和运动直接命令支持
运动直接命令无法用在 MCLM 指令的指令树中。在时间驱动模式下执行 MAM 或 MAJ 之前,必须以支持的编程语言对 MCLM 编程。如果未事先在主轴驱动模式下在 MAM 和 MAJ 中执行 MCLM,将发生运行时错误。
示例
梯形图

结构化文本
MCLM(myMclmCoordinateSystem, myMclmMotionControl, myMclmMoveType, myMclmPosition[0], myMclmSpeed, Unitspersec, myMclmAccelRate, Unitspersec2, myMclmDecelRate, Unitspersec2, Trapezoidal, 100.0, 100.0, %ofTime, myMclmTermType, CoordinatedMotion, Programmed, 0, 0, None, 0, 0);
继电器梯形图

结构化文本
MCLM(myMclmCoordinateSystem,myMclmMotionControl,myMclmMoveType,myMclmPosition[0], myMclmSpeed,Unitspersec,myMclmAccelRate,Unitspersec2,myMclmDecelRate,Unitspersec2,Trapezoidal, 100.00,100.0,%ofTime,myMclmTermType,CoordinatedMotion,Programmed,0,0, None,0,0);
提供反馈