运动协调圆弧运动 (MCCM)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。运动协调圆弧运动 (MCCM) 指令用于在笛卡尔坐标系统中针对指定轴启动二维或三维圆弧协调运动。新位置可采用绝对位置或增量位置的形式定义,并以所需速度达到。MCCM 的实际速度取决于运动模式(给定速度或最大速度百分比)。运动速度取决于使用设定轴完成圆弧运动的时间。每个轴都被控制以一定速度运动,以便让所有轴同时到达端点(目标位置)。
圆弧的维度由坐标系统中包含的轴数定义。例如,如果坐标系统包含三个轴,并且 MCCM 指令只在两个维度中启动运动,则所得运动仍可视为三维圆弧或圆。
重要提示:
用于指令运动控制属性的标签只能使用一次。在其他指令中重复使用运动控制标签可能导致意外操作,从而可能造成设备损坏或人员受伤。
重要提示:
速度和/或结束位置过冲的风险
如果通过任意方法动态更改运动参数,即通过更改运动动态(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。
- 在结构化文本例程中,插入指令的条件以便仅在转换时执行。
可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
MCCM (CoordinateSystem, MotionControl, MoveType, Position, CircleType, Via/Center/Radius, Direction, Speed, SpeedUnits, AccelRate, AccelUnits, DecelRate, DecelUnits, Profile, AccelJerk, DecelJerk, JerkUnits,Terminationtype, Merge, Mergespeed, CommandTolerance, LockPosition, LockDirection, EventDistance, CalculatedData);
操作数
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅 数据转换。
梯形图和结构化文本
操作数 | 类型 | 格式 | 说明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Coordinate System | COORDINATE_SYSTEM | 标签 | 已协调轴组。 对已协调轴组的引用。对于支持 REF_TO 运动数据类型的控制器,坐标系统操作数类型可以替换为 REF_TO_COORDINATE_SYSTEM 类型。 | ||||||||||
Motion Control | MOTION_INSTRUCTION | 标签 | 用于访问指令状态参数的结构。 | ||||||||||
Move Type | SINT、INT 或 DINT | 立即数或标签 | 选择运动类型: 0 = 绝对式 1 = 增量式 | ||||||||||
Position | REAL | 数组标签 [ ] | [坐标单位] | ||||||||||
Circle Type | SINT、INT 或 DINT | 立即数或标签 | 0 = 经由点 1 = 圆心 2 = 半径 3 = 圆心递增 | ||||||||||
Via/Center/Radius | REAL | 数组标签 [](经由点/圆心) 立即数或标签(半径) | [坐标单位] | ||||||||||
Direction | SINT、INT 或 DINT | 立即数或标签 |
| ||||||||||
Speed | SINT、INT、DINT 或 REAL | 立即数或标签 | [坐标单位] | ||||||||||
Speed Units | SINT、INT 或 DINT | 立即数 | 0 = 单位/秒 1 = 最大值百分比 4 = 单位/主轴单位 | ||||||||||
Accel Rate | SINT、INT、DINT 或 REAL | 立即数或标签 | [坐标单位] | ||||||||||
Accel Units | 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 曲线 | ||||||||||
Accel Jerk | SINT、INT、DINT 或 REAL | 立即数或标签 | 必须始终输入操作数“加速急动度”和“减速急动度”的值。仅当将曲线操作数配置为 S 曲线时,此指令才会使用这些值。 “加速急动度”表示坐标系统的加速急动度。 “减速急动度”表示坐标系统的减速急动度。 按以下急动度单位输入急动度。 0 = 单位/秒 3 1 = 最大值百分比 2 = 时间百分比 4 = 单位/主轴单位 3 6 = 时间主轴驱动百分比 使用以下值开始操作。 加速急动度 = 100(时间百分比) 减速急动度 = 100(时间百分比) 急动度单位 = 2 | ||||||||||
Decel Jerk | SINT、INT、DINT 或 REAL | 立即数或标签 | |||||||||||
Jerk Units | SINT、INT 或 DINT | 立即数或标签 | |||||||||||
Termination Type | SINT、INT 或 DINT | 立即数或标签 | 0 = 实际公差 1 = 不进入稳态 2 = 给定公差 3 = 不减速 4 = 跟随轮廓速度受限 5 = 跟随轮廓速度不受限 6 = 设定的给定公差 请参见下文“相关主题”部分中的“选择终止类型”。 | ||||||||||
Merge | SINT、INT 或 DINT | 立即数 | 0 = 禁用 1 = 协调运动 2 = 所有运动 | ||||||||||
Merge Speed | SINT、INT 或 DINT | 立即数 | 0 = 设定速度 1 = 当前速度 | ||||||||||
Command Tolerance | REAL | 立即数实数或标签 | 协调运动中的混合起点位置。如果使用终止类型 6,可使用此参数代替坐标系统中的给定公差。 提示 :终止类型 2 与终止类型 6 基本相同,但它使用坐标系统中的给定公差值,而忽略此参数。 | ||||||||||
Lock Position | REAL | 立即数或标签 | 这是主轴上的位置,当在从轴上启动运动后,从轴将从该位置开始跟随主轴运动。 有关详细信息,请参见下文的“结构”部分。 | ||||||||||
Lock Direction | UINT32 | 立即数 | 指定锁定位置的使用条件。 有关详细信息,请参见下文的“结构”部分。 | ||||||||||
Event Distance | REAL ARRAY 或 0 | 数组 | 沿运动轨迹自运动终点起测量的位置。 有关详细信息,请参见下文的“结构”部分。 | ||||||||||
Calculated Data | REAL ARRAY 或 0 | 数组 | 从运动起点到“事件距离”点所需经过的主轴距离(或时间)。 有关详细信息,请参见下文的“结构”部分。 |
结构化文本
有关结构化文本中表达式语法的详细信息,请参阅结构化文本语法。
在结构化文本中输入操作数值的枚举值时,若枚举值由多个单词构成,输入时不得包含空格。例如,输入“减速度单位”的值时,应采用 unitspersec
2
,而不是梯形图逻辑中显示的 Units per Sec2
。输入结构化文本操作数时,可参考下表中的条目。
此操作数 | 可选择以下输入方式 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
输入文本 | Or as | |||||||||
坐标系统 | 无枚举值 | Tag | ||||||||
运动控制 | 无枚举值 | Tag | ||||||||
运动类型 | 无枚举值 | 0 (Absolute) 1 (Incremental) | ||||||||
位置 | 无枚举值 | Array Tag | ||||||||
Circle Type | 无枚举值 | Tag 0 = Via 1 = Center 2 = Radius 3 = Center Incremental | ||||||||
经由点/圆心/半径 | 无枚举值 | Array Tag (via/center) Immediate or tag (radius) | ||||||||
方向 | 无枚举值 |
| ||||||||
速度 | 无枚举值 | Immediate or Tag | ||||||||
Speed Units | unitspersec %ofmaximum unitspermasterunit | 0 1 4 | ||||||||
Accel Rate | 无枚举值 | Immediate or Tag | ||||||||
加速度单位 | unitspersec 2 %ofmaximum unitspermasterunit 2 | 0 1 4 | ||||||||
Decel Rate | 无枚举值 | Immediate or Tag | ||||||||
Decel Units | unitspersec 2 %ofmaximum unitspermasterunit 2 | 0 1 4 | ||||||||
Profile | trapezoidal s-curve | 0 1 | ||||||||
加速急动度 | 无枚举值 | Immediate or tag You must always enter a value for the Accel and Decel Jerk operands. This instruction only uses the values if the Profile is configured as S-curve. Use these values to get started. Accel Jerk = 100 (% of Time) Decel Jerk = 100 (% of Time) Jerk Units = 2 | ||||||||
减速急动度 | 无枚举值 | |||||||||
Jerk Units | Unitspersec 3 %ofmaximum %oftime unitspermasterunit3 %oftimemasterdriven | 0 1 2 (use this value to get started) 4 6 | ||||||||
终止类型 | 无枚举值 | 0 = Actual Tolerance 1 = No Settle 2 = Command Tolerance 3 = No Decel 4 = Follow Contour Velocity Constrained 5 = Follow Contour Velocity Unconstrained 6 = Command Tolerance Programmed See Choose a Termination Type in the Related Topics section below. | ||||||||
Merge | disabled coordinatedmotion allmotion | 0 1 2 | ||||||||
Merge Speed | programmed current | 0 1 | ||||||||
给定公差 | 无枚举值 | Immediate or Tag | ||||||||
锁定位置 | 无枚举值 | Immediate, Real, or Tag | ||||||||
锁定方向 | 无 immediateforwardonly Immediatereverseonly positionforward positionreverse | 0 1 2 3 4 | ||||||||
Event Distance | 无枚举值 | Array | ||||||||
Calculated Data | 无枚举值 | Array | ||||||||
坐标系统
“坐标系统”操作数指定用于定义笛卡尔坐标系统维度的运动轴系统。对于此版本,坐标系统最多支持三 (3) 个主轴。在速度计算中,将仅包含配置为主轴的轴(最多 3 个)。只有主轴才会参与实际的圆弧运动。
运动控制
以下控制位受 MCCM 指令影响。
助记符 | 说明 |
|---|---|
.EN (Enable) Bit 31 | 当梯级由假跳变为真时,使能位置位;当梯级由真跳变为假时,此位复位。 |
.DN (Done) Bit 29 | 当协调指令已成功验证并排入队列时,完成位置位。由于此位会在指令排入队列时置位,因此,如果在指令离开队列后的验证操作期间发生运行错误,此位可能呈现置位状态。梯级由假跳变为真时,此位复位。 |
.ER (Error) Bit 28 | 当梯级由假跳变为真时,错误位复位。协调运动未成功启动时,此位置位。如果已排队指令发生运行错误,此位还会与完成位一同置位。 |
.IP (In Process) Bit 26 | 当协调运动成功启动时,正在处理位置位。当存在后续运动且协调运动到达新位置时、不存在后续运动且协调运动到达指定的终止类型、协调运动由另一条合并类型为协调运动的 MCCM 或 MCLM 指令代替、或者由 MCS 指令或 MCSD 指令终止时,此位复位。 |
.AC (Active) Bit 23 | 将协调运动指令排入队列后,激活位指示正在对运动进行控制的指令。协调运动变为激活状态时,此位置位。当处理完成位置位或指令停止时,此位复位。 |
.PC (Process Complete) Bit 27 | 当梯级由假跳变为真时,处理完成位复位。当不存在后续运动且协调运动到达新位置时,或者存在后续运动且协调运动到达相应终止类型的指定位置时,此位置位。 |
.ACCEL (Acceleration Bit) Bit 01 | 当协调运动处于加速阶段时,加速位置位。当协调运动处于恒速或减速阶段时,或者协调运动结束时,此位复位。 |
.DECEL (Deceleration Bit) Bit 02 | 当协调运动处于减速阶段时,减速位置位。当协调运动处于恒速或加速阶段时,或者协调运动结束时,此位复位。 |
运动类型
“运动类型”操作数确定位置数组用于指示协调运动路径的方法以及经由点/圆心/半径参数用于指示经由点和圆心圆位置的方法。选项包括:绝对式或增量式。
- 绝对式 - 坐标系统以指定速度、按相应操作数确定的加速度和减速度,沿圆弧路径运动到指定的位置。如果将轴配置为旋转模式,绝对式运动的处理方式与对线性轴的处理方式相同。当轴位置超过归位参数的值时,则会发生错误。
- 指定位置数组的符号被控制器解读为运动方向。如果位置值为负数,会控制插补器使旋转轴沿负方向运动,以获得所需的绝对位置。如果位置值为正数,表示需要进行正向运动才能到达目标位置。若要沿负方向移至归位位置,必须将负归位位置值视为 0,将 -0 视为 0。如果位置值大于归位值,会生成错误。轴可以移过归位位置,但移过的距离不能大于一个归位值。
- 增量式 - 坐标系统以指定速度、按相应操作数确定的加速度和减速度,沿圆弧路径运动位置数组指定的距离。
指定距离由插补器解析,可以是正数,也可以是负数。如果位置值为负数,会控制插补器使旋转轴沿负方向运动;如果位置值为正数,表示需要进行正向运动才能到达目标位置。
位置
“位置”操作数是一维数组,其维数至少等于坐标系统中指定的轴数。位置数组定义新的绝对位置或增量位置。
Circle Type
“圆弧类型”操作数指定如何解读标有经由点/圆心/半径的数组。选项包括:经由点、圆心、半径、圆心递增。
- “经由点”表示经由点/圆心/半径数组成员指定起点和结点之间的某一经由点。
- “圆心”表示经由点/圆心/半径数组成员包含圆弧圆心。
- “半径”表示第一个经由点/圆心/半径数组成员包含半径。其他成员会被忽略。“半径”仅在二维坐标系统中有效。
- “圆心递增”表示经由点/圆心/半径数组成员定义的位置始终以递增方式定义圆心,无论“运动类型”操作数取何值。增量值的符号沿从起点到圆心方向测定。
经由点/圆心/半径
根据所选的“运动类型”和“圆弧类型”,经由点/圆心/半径位置参数定义圆弧上某一位置的绝对值或增量值、圆弧的圆心或圆弧的半径,如下表所示。如果“圆弧类型”为经由点或圆心,则经由点/圆心/半径位置参数是一个一维数组,其维度定义为至少等于坐标系统中指定的轴数。如果“圆弧类型”为半径,则经由点/圆心/半径位置参数为单一值。
运动类型 | 圆弧类型 | 行为 |
|---|---|---|
绝对式 | 经由点 | 经由点/圆心/半径位置数组定义圆弧上的任一位置。对于非整圆的情况,“位置”参数数组定义弧的端点。对于整圆的情况,“位置”参数数组定义圆弧上除端点以外的任意第二个点。 |
增量式 | 经由点 | 经由点/圆心/半径位置数组与原位置之和定义圆弧上的位置。对于非整圆的情况,“位置”参数数组与原位置之和定义弧的端点。对于整圆的情况,“位置”参数数组与原位置之和定义圆弧上除端点以外的任意第二个点。 |
绝对式 | 圆心 | 经由点/圆心/半径位置数组定义圆弧的圆心。对于非整圆的情况,“位置”参数数组定义弧的端点。对于整圆的情况,“位置”参数数组定义圆弧上除端点以外的任意第二个点。 |
增量式 | 圆心 | 经由点/圆心/半径位置数组与原位置之和定义圆弧的圆心。对于非整圆的情况,“位置”参数数组与原位置之和定义弧的端点。对于整圆的情况,“位置”参数数组与原位置之和定义圆弧上除端点以外的任意第二个点。 |
绝对式或增量式 | 半径 | 经由点/圆心/半径位置单一值定义圆弧半径。该值的符号用于确定圆心点,以区分两段可能的圆弧。正值表示生成的圆弧小于 180 度的圆心点。负值表示生成的圆弧大于 180 度的圆心点。此“圆弧类型”仅对二维圆弧有效。位置参数数组按照“运动类型”定义圆弧的端点。 |
绝对式 | 圆心递增 | 经由点/圆心/半径位置数组与原位置之和定义圆弧的圆心位置。对于非整圆的情况,“位置”参数数组定义弧的端点。对于整圆的情况,“位置”参数数组定义圆弧上除端点以外的任意第二个点。 |
增量式 | 圆心递增 | 经由点/圆心/半径位置数组与原位置之和定义圆弧的圆心位置。对于非整圆的情况,“位置”参数数组与原位置之和定义弧的端点。对于整圆的情况,“位置”参数数组与原位置之和定义圆弧上除端点以外的任意第二个点。 |
方向
“方向”操作数根据右手螺旋定则将 2D 圆弧运动的旋转方向定义为顺时针或逆时针。对于 3D 圆弧运动,方向可以为“最短”或“最长”。因此,在 2D 和 3D 中,“方向”操作数还可以指示圆弧运动是否为整圆。
速度
“速度”操作数定义沿协调运动路径运动时的最大矢量速度。
Speed Units
“速度单位”操作数定义“速度”操作数所用的单位,可直接定义为坐标单位,也可以定义为坐标系统中定义的最大值百分比。
Accel Rate
“加速度”操作数定义沿协调运动路径运动时的最大加速度。
加速度单位
“加速度单位”操作数定义“加速度”操作数所用的单位,可直接定义为指定坐标系统的坐标单位,也可以定义为坐标系统中定义的最大值的百分比。
Decel Rate
“减速度”操作数定义沿协调运动路径运动时的最大减速度。
Decel Units
“减速度单位”操作数定义“减速度”操作数所用的单位,可直接定义为指定坐标系统的坐标单位,也可以定义为坐标系统中定义的最大值的百分比。
Profile
“曲线”操作数确定协调运动是采用梯形速度曲线还是 S 形速度曲线。
加速急动度
“加速急动度”定义了所设定运动的最大加速急动度。有关计算加速急动度的详细信息,请参见下文的“急动度单位”部分。
减速急动度
“减速急动度”定义所设定运动的最大减速急动度。有关计算减速急动度的详细信息,请参见下文的“急动度单位”部分。
Jerk Units
“急动度单位”定义在“加速急动度”和“减速急动度”操作数中输入的值所用的单位。这些值可以采用指定坐标系统的位置单位直接输入,也可以采用百分比形式输入。当配置为使用最大值的百分比时,急动度按在坐标系统属性中指定的“最大加速急动度”和“最大减速急动度”操作数的百分比进行应用。当配置为使用时间的百分比时,该值是根据指令中指定的速度、加速度和减速度确定的百分比。
若要将工程单位转换为时间百分比,可使用以下公式。

若要将时间百分比转换为工程单位,可使用以下公式。

重要注意事项
如果使用不同的急动度(第一段圆弧的减速急动度和第二段圆弧的加速急动度)设定相切圆弧,则在两段圆弧的交点可能会出现轻微的速度不连续的现象。不连续的程度取决于急动度之差的大小。换句话说,急动度之差越小,速度不连续的程度越低。因此,建议不要在相切圆弧上设定急动度。
终止类型
对于主轴驱动速度控制 (MDSC),若所有顺序指令以相同模式(主轴驱动模式或时间驱动模式)运行,则支持所有终止类型。如果在协调运动队列中切换终止类型,则可能会生成错误,具体取决于运动类型的序列。
仅当从坐标系统的运动混合使用多种终止类型(终止类型 2、3 或 6),并在 MDSC 模式下编程时,以下内容才适用。
如果使用运动序列最后一条 MCCM 指令中返回的“计算数据”来设定为使运动序列进入 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
“合并速度”操作数定义当合并启用时,是将当前速度还是设定的速度用作协调运动路径上的最大速度。当前速度是在当前坐标系统中定义的所有轴的所有运动(例如点动、MAM 和齿轮传动运动)的矢量和。
MCCM 指令的“目标位置输入”(Target Position Entry) 对话框
按下梯形图指令面板上“位置”操作数右侧的省略号按钮,可以访问 MCCM 指令的“目标位置输入”(Target Position Entry) 对话框。只有在指令的坐标系统已命名,包含应对轴数所需的足够元素的“位置”操作数具有有效标签名称,并且已选择有效的“运动类型”和有效的“圆弧类型”时,才能访问“目标位置输入”(Target Position Entry) 对话框。如果不满足上述条件,状态栏上将显示一条错误消息。
用于访问“目标位置输入”对话框的 MCCM 指令梯形图有效值

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

示例 2
“经由点/圆心/半径”参数作为数组类型。
梯形图

结构化文本
MCCM(myMccmCoordinateSystem, myMccmMotionControl, myMccmMoveType, myMccmPosition[0], myMccmCircleType, myMccmRadius[0], myMccmDirection, myMccmSpeed, Unitspersec, myMccmAccelRate, Unitspersec2, myMccmDecelRate, Unitspersec2, Trapezoidal, 100.0, 100.0, %ofTime, myMccmTermType, CoordinatedMotion, Programmed, 0, 0, None, 0, 0);
示例 3
继电器梯形图

结构化文本
MCCM(myMccmCoordinateSystem,myMccmMotionControl,myMccmMoveType,myMccmPosition[0],myMccmCircleType,myMccmViaCenter_Radius1,myMccmDirection,myMccmSpeed,Unitspersec,myMccmAccelRate,%ofMaximum,myMccmDecelRate,UnitsperMasterUnit2,Trapezoidal,myMccmAccelJerk,myMccmDecelJerk,Unitspersec3,myMccmTerminationType,CoordinatedMotion,Programmed,myMccmCommandTolerance,myMccmLockPosition,PositionReverseOnly,myMccmEventDistance[0],myMccmCalculatedData[0]);
提供反馈