- {{item.name}}
运动控制基本指令
- 0
- 46
运动控制命令和时序
轴的运动控制命令符合 PLCopen 标准 (V2.0)。S7-1200 G2 V1.0 CPU 支持的工艺指令版本为 V8.0,运动控制基本指令可实现单轴的使能、停止、回原点、速度控制及位置控制等功能,如图1所示。

图1. 运动控制基本指令
在进行 PLC 运动控制编程之前,需要对运动命令的通用特点有一定的了解。
运动控制指令上有一些参数是通用参数,参数行为一样,此处汇总说明:
1. 输入参数 (“Execute”、“Enable”和动态响应参数)
- “Execute”输入参数。通过上升沿启动命令,随后的下降沿不取消该命令的执行。
当修改命令中的输入参数后,需要使用“Execute”的上升沿重新触发后方可生效。
- “Enable”输入参数。为 TRUE 时启动命令,每次执行命令时都会传送更改后的参数值。下降沿会结束命令的执行。
- “速度、加/减速度”等动态参数。当设置小于 0 时,使用轴组态界面中设置的默认数值,大于 0 时使用命令中输入的数值。
2. 输出参数(“Busy”、“Done”、“Error”、“Active”和“CommandAborted”)
一般情况下,命令正在处理“Busy”,完成“Done”或者出错“Error”的输出信号,同时只出现一个,如果命令在运动控制中处于激活状态,则“Active”为“TRUE”,如果命令被其它命令取消,则“CommandAborted”参数会为“TRUE”。应注意的是,在启动运动控制任务后,如果输入的参数“Execute”为 FASLE 的情况下,“Done”“Error”或者“CommandAborted”输出信号仅持续一个循环周期,如果编程时需要读取输出参数状态则必须考虑这种情况。
3. 命令的替代 ( 超驰响应 )
在一些情况下,某些运动命令可以被其它运动命令所替代,这种替代关系也称为超驰响应。在编写命令衔接程序时,务必要了解当前使用的命令是否和之前的命令有超驰响应关系。比如在等待同步的情况下,同步命令不能通过 MC_Halt 等命令来替代。当命令被替代后,命令输出参数“CommandAborted”变为 TRUE。
图2以两个 MC_MoveVelocity 命令为例进行说明,可以看出在命令激活后可以通过触发另一个命令实现命令的替代。
在图2中,“MC_MoveVelocity”(A1) 通过“Exe_1”启动,在时间 ① 处,InVel_1”发出信号,指示已经达到速度设定值 50.0。在时间 ② 处,A1 被另一个 MC_MoveVelocity”(A2) 超驰,“Abort_1”发出中止信号。当达到新的速度设定值 15.0 时,“InVel_2”发出信号,之后轴将以恒定速度 15.0 继续移动。命令的替代可以重复执行,如图1时间 ③ 处所示。
图2. 命令的替代
4. 背景数据块
由于每一个运动命令都是由程序块 FB 编写的,因此在调用时需要为其分配背景数据块,在程序块 FB 中调用运动命令时,建议使用多重背景数据块功能。应注意的是,命令的背景数据块不可以重复使用,这是初次使用者容易犯的错误。
轴的使能与停止命令
在对轴进行任何操作之前,都应对轴进行使能操作,同时根据工艺需要还可以对轴进行停止操作,在此分别对相关的控制命令“MC_Power”、“MC_Halt”及“MC_Stop”介绍如下。
1.“MC_Power”轴的启用、禁用命令
使用运动控制命令“MC_Power”可启用或禁用速度轴、定位轴、同步轴和外部编码器工艺对象,它是轴运行的必要条件。
(1) 工艺对象可以通过输入参数“Enable”=TRUE 命令来启用。
- “StartMode”=1 时,启用位置闭环控制。
- “StartMode”=0 时,不启用位置闭环控制,轴将采用速度控制模式。如果使用其它位置控制命令,如“MC_MoveAbsolute”,则会切换到位置闭环控制;如果进行速度控制时命令参数“PositionControl”=FALSE 轴会切换到速度控制模式。
(2)通过“Enable”=FALSE 禁用工艺对象。
-“StopMode”=0 时,轴将以“工艺对象→组态→扩展参数→急停斜坡”中组态的急停减速度制动到停止状态。
-“StopMode”=1 时,输出设定值为 0,轴将根据驱动装置中的 p1135 参数指定的斜坡时间停止 (OFF3 快速停止)。
-“StopMode”=2 时,轴将以“工艺对象→组态→扩展参数→动态限制”中组态的最大减速度制动到停止状态。
-“StopMode”=3 时,轴禁用时,驱动装置会断电,驱动随后会惯性滑行停止。
(3) 当工艺对象出错并且报警响应为取消使能时,会导致工艺对象被禁用,按照“工艺对象→组态→扩展参数→报警响应”组态的停车方式进行响应。这种情况下,命令中“StopMode”的设置不起作用。
(4)故障已排除并进行了报警确认后,如果“Enable”输入参数依然置位,工艺对象将被再次启用。
(5) 可以从“Status”参数中读取工艺对象启用成功的状态信息,用作编程时检查工艺对象的状态,也可以通过工艺对象的数据块“StatusDrive.InOperation”变量获取工艺对象的启用状态信息。
(6)“StartMode”参数对于速度轴和外部编码器工艺对象无效。“StopMode”参数对于外部编码器工艺对象无效。
在实际应用中,如果希望启用轴时不出现异常报警 (如在 PLC 与驱动的通信还没有建立起来就启用轴等),在编程时应考虑将驱动和编码器的状态字作为启用命令“MC_Power”的联锁信号,如图3所示。
图3 “MC_Power”命令使用举例
2. “MC_Halt”轴暂停命令
使用运动控制命令“MC_Halt”可以将速度轴、定位轴和同步轴制动至停止状态,通过参数“Jerk”和“Deceleration”定义制动运行的动态行为,编程示例如图4所示。
图4 “MC_Halt”命令使用举例
(1)通过参数“Execute”的上升沿,停止轴的运动,停止运动的减速度和减减速度由输入参数决定,被“MC_Halt”中断的命令其输出参数“CommandAborted”会变为 TRUE。
(2) 如果设置“AbortAcceleration”=FALSE,当命令执行时,如果此时轴正在加速,则轴从当前的加速度值开始逐步减小,加速度减到零之后才开始减速过程;如果设置“AbortAcceleration”=TRUE,则立即设置当前轴的加速度为零并且立即开始减速。
(3)轴的停止状态可以通过轴数据块中 StatusWord.X7 (“Standstill”) 位显示,命令成功执行的状态也可以通过命令的输出参数“Done”获得。
3.“MC_Stop”轴停止并阻止新命令
使用“MC_Stop”运动控制命令,轴将制动停止并保持使能,此时阻止工艺对象进行新的运动命令,编程示例如图5所示。
图5. “MC_Stop”命令使用举例
(1) 停止位置由停止斜坡决定。可以使用“Mode”参数定义三种模式:
“Mode”=0:动态响应取决于所组态的急停斜坡。
“Mode”=2:动态响应取决于工艺对象的最大动态值。
“Mode”=3:动态响应由“MC_Stop”命令的参数“Jerk”和“Deceleration”确定。
(2)停止响应的优先级:“Mode”=0 > “Mode”=2 > “Mode”=3
(3)“MC_Stop”可以由“MC_Power”的“Enable”参数 =FALSE 中止。“MC_Stop”不会中止仿真同步操作功能。
(4)通过“MC_Stop”停止轴,即将某个轴减速至停止状态,可以按如下步骤操作:
设置参数“Mode”、“Deceleration”、“Jerk”为需要的数值,“AbortAcceleration”=FALSE 时,从当前加速度开始逐步减小,反之加速度设置为 0.0,立即开始减速。
参数“Execute”的上升沿开始“MC_Stop”命令的执行。
轴的停止状态通过轴数据块中 StatusWord.X7(Standstill) 位显示。
只要“Execute”=TRUE,工艺对象就无法执行运动命令,通过轴数据块中 StatusWord2.X0 (StopCommand) 可读取此状态。
速度轴和定位轴的控制命令
对于速度轴和定位轴可以使用“MC_MoveVelocity”、“MC_MoveRelative”、“MC_MoveAb-solute”和“MC_MoveJog”几个运动控制命令进行轴的调速、相对定位、绝对定位和点动控制。
1. “MC_MoveVelocity”(调速命令)
“MC_MoveVelocity”命令可匀速移动速度轴、定位轴和同步轴,通过命令中的参数“Velocity”、“Jerk”、“Acceleration”和“Deceleration”定义运动控制的动态行为。
使用此命令编程时,可在参数“Velocity”中指定轴的移动速度,通过“Execute”的上升沿触发速度控制。通过“PositionControlled”输入参数进行速度控制或者位置控制方式的切换,如果此参数为 TRUE,则激活位置环;如果为 FALSE,则关闭位置环。应注意输入参数“Direction”决定运动方向,=0 时方向由“Velocity”决定,=1 时正向运动,=2 时负向运动。“Current”参数 =TRUE 时,“Velocity”和“Direction”无效,保持当前速度运动。输出参数“InVelocity”=TRUE 表示速度设定值到达。
2.“MC_MoveRelative”(相对定位控制命令)
使用运动控制命令“MC_MoveRelative”,可对定位轴或同步轴进行相对定位控制,轴不需要回零点。通过“Execute”的上升沿触发相对定位控制,在参数“Distance”中指定相对定位的距离。
3.“MC_MoveAbsolute”(绝对定位控制命令)
使用运动控制命令“MC_MoveAbsolute”,可对定位轴或同步轴进行绝对定位控制,轴在定位控制前需要回零点。通过“Execute”的上升沿触发绝对定位控制,在参数“Position”中指定绝对目标位置。
4.“MC_MoveJog”(轴的点动控制命令)
使用运动控制命令“MC_MoveJog”,可在点动模式下移动轴。通过“JogForward”正向移动轴,通过“JogBackward”负向移动轴。当前的运动状态可以通过“Busy”“InVelocity”和“Error”显示。如果“JogForward”和“JogBackward”都设置为 TRUE,轴将以之前生效的减速度进行制动,并输出错误代码 16#8007 (方向指定不正确)。“PositionControlled”参数决定位置闭环控制是否生效。
5. 运行时速度的修改
可以通过修改工艺对象变量 <TO>.Override.Velocity (有效范围为 0.0%~200.0% )对运行时的速度进行修改,运动控制命令中指定的速度设定值或轴控制面板上的速度设定值与变量 <TO>.Override.Velocity 中给定的百分比相乘结果为实际的速度设定值,更改后立即生效。
“MC_SetAxisSTW”设置 PROFIdrive 报文控制字命令
使用“MC_ SetAxisSTW”命令,可以控制 PROFIdrive 报文的控制字 1 (STW1) 和控制字 2 (STW2) 中的指定位,可以直接控制工艺对象未使用的位,见表1。被控位将保持有效,直到“MC_ SetAxisSTW”复位或工艺对象重启或 CPU 从“RUN”切换到“STOP”。
表1 PROFIdrive 报文控制字
| 控制字 1 (STW1) | 功 能 | 控制字 2 (STW2) | 功 能 | |
| 位9 | 使能扩展停止和退回 | 位0 、1、2、10 | DDS 驱动数据组切换 | |
| 位11 | 斜坡函数发生器激活 | 位 4 | 旁路斜坡函数发生器 | |
| 位12 | 无条件打开抱闸 | 位 6 | 速度控制器积分禁止 | |
| 位14 | 闭环速度和转矩切换 | 位 7 | 轴旁路 | |
| 位 8 | 运行到固定停止点 |
“MC_SetAxisSTW”命令通过 STW1BitMask 或者 STW2BitMask 来确定控制哪个位,其数值由 STW1 或者 STW2 指定,例如控制电动机抱闸动作,即控制字 1 的第 12 位无条件打开或者关闭抱闸,如图6所示:
图6. 抱闸控制
- 打开抱闸:设置控制字 1 的位 12,参数 STW1 和 STW1BitMask 都写入 16#1000 ( 2进制为 2#0001 0000 0000 0000)。
- 关闭抱闸:复位控制字 1 的位 12,参数 STW1 写入 16#0000,参数 STW1BitMask 写入 16#1000。
“MC_SaveAbsoluteEncoderData”保存绝对值编码器调整
使用“MC_ SaveAbsoluteEncoderData”运动控制指令,可以将绝对值编码器调整数据保存在 SIMATIC 存储卡上,以用于更换 CPU 时保存位置值。数据以“AbsEncoderData.dat”形式保存在 SIMATIC 存储卡的“UserFiles”文件夹中。编程示例如图7所示。

图7. “MC_SaveAbsoluteEncoderData”命令使用举例
更换设备后,恢复绝对值编码器调整的值需要满足以下条件:
- 相同的编码器配置
- 相同的工艺对象名称
- 相同数量的工艺对象数据块
将存储卡存储的调整数据恢复到 CPU 时,可以采用以下两种方式:
1. 使用现有的 SIMATIC 存储卡
(1) 将带有绝对值编码器调整值的 SIMATIC 存储卡插入新的 SIMATIC CPU 中。
(2) 如果 CPU 未处于出厂设置状态,请将其复位为出厂设置,注意不要选择“格式化存储卡”(Format memory card) 选项。
(3)检查诊断缓冲区中的数据是否成功恢复。
(4) 将 CPU 切换到“运行”模式。
2. 使用读卡器将文件“AbsEncoderData.dat”复制到新 SIMATIC 存储卡
(1)将文件“AbsEncoderData.dat”复制到新 SIMATIC 存储卡的文件夹“UserFiles”。
(2)将带有绝对值编码器调整值的 SIMATIC 存储卡插入 SIMATIC CPU 中。
(3)如果 CPU 未处于出厂设置状态,请将其复位为出厂设置,注意不要选择“格式化存储卡”(Format memory card) 选项。
(4)检查诊断缓冲区中的数据是否成功恢复。
(5)将 CPU 切换到“运行”模式。
3. 结果
恢复绝对值编码器调整的值。
在诊断缓冲区中显示条目“绝对值编码器调整数据回复已成功执行”。
SIMATIC 存储卡上的备份会自动重命名(“AbsEncoderData.bak”),并且不能继续使用。
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错


西门子官方商城


{{item.nickName}}