S7-1200 运动控制的常见问题

  1. 绝对定位和相对定位区别?
  2. 如何设置MC_MoveRelative方向运行?
  3. 为什么有时用户在监控程序的时候看不到指令的完成位Done的为1?
  4. 回原点已完成信号什么时候会丢失?
  5. 什么时候需要执行回原点命令?
  6. 如果实际没有原点开关和限位开关,可以使用绝对定位指令MC_MoveAbsolute吗?
  7. 为什么用户在实际执行回原点指令时,轴遇到原点开关没有变化,直到运行到硬件限位开关停止报错?
  8. 为什么轴在执行主动回原点命令时,初始方向没有找到原点,当需要碰到限位开关掉头继续寻找原点开关时并没有掉头,而是直接报错停止轴,报错原因是由于轴碰到了限位开关?
  9. S7-1200 CPU上电后轴的位置是多少?
  10. 开环运动控制怎样计算运动任务?
  11. 为何通过S7-1200 PTO方式控制V90 PTI定位换向时有时会有丢失脉冲的情况?
  12. 闭环控制带有绝对值编码器的驱动器(例如:V90 PN)时,通过“MC_Home”指令是否可以执行Mode=2或3的回原点操作?
  13. 如何通过数据块实现驱动装置/编码器的数据连接?
  14. 如何保持断电前的绝对位置?

1. 绝对定位和相对定位区别?

答:相对定位是指在轴当前位置的基础上正方向或负方向移动一段距离;绝对定位指的是当轴建立了绝对坐标系后,轴的每个位置都有固定的坐标,无论轴的当前位置值是多少,当轴指令了绝对运行指令后相同的坐标值,轴最终都定位到同一个位置。

2. 如何设置MC_MoveRelative方向运行?

答: 将MC_MoveRelative指令中的“Distance”设置成负值就可以让轴向负方向运行了。如下图所示。

3. 为什么有时用户在监控程序的时候看不到指令的完成位Done的为1?

答:带有Execute管脚的指令,例如MC_MoveRelative等指令的Done和Execute之间有下图中描述的关系:

如上图所示,如果"Execute"在命令执行完成之前设置为 FALSE,则"Done"的值仅在一个执行周期内为 TRUE。因此,如果用户用|P|指令触发带有“Execute”管脚的指令,则该指令的“Done”只在一个扫描周期内为1,因此在监控程序时看不到Done位为1。用户可以通过在程序中添加指令用Done置位一个位来判断,如下图所示,用MC_MoveRelative为例进行说明。

4. 回原点已完成信号什么时候会丢失?

答:请参见下表。

  PTO轴 闭环轴使用增量编码器 闭环轴使用绝对值编码器
启动MC_Home命令进行主动回原点* -
通过"MC_Power"运动控制指令,禁用轴    
通过调试面板回原点后取消调试功能    
CPU 断电 -> 上电后  
CPU 重新启动后 (RUN -> STOP -> RUN)    
编码器系统出错或编码器故障 -
重新启动工艺对象  
存储器复位  
修改编码器组态 -
更换 CPU
将 CPU 恢复为出厂设置
将其它项目传送到控制器

*:成功完成回原点操作之后,"已回原点"状态将再次置位。

5. 什么时候需要执行回原点命令?

答:用户需要使用MC_MoveAbsolute指令之前执行回原点指令。

6. 如果实际没有原点开关和限位开关,可以使用绝对定位指令MC_MoveAbsolute吗?

答: 可以。

对于PTO轴或使用增量编码器的闭环轴,使用MC_Home指令的Mode=0和Mode=1方式,让轴完成绝对坐标定位。然后就可以调用MC_MoveAbsolute指令进行绝对运动了。

对于使用绝对值编码器的闭环轴,使用MC_Home指令的Mode=6和Mode=7方式,让轴完成绝对坐标定位。然后就可以调用MC_MoveAbsolute指令进行绝对运动了。

MC_Home指令的Mode 0、1、6、7参见链接

7. 为什么用户在实际执行回原点指令时,轴遇到原点开关没有变化,直到运行到硬件限位开关停止报错?

答:首先要测试原点开关是否起作用,也就是说当轴碰到原点开关时,原点开关的DI点的指示灯是否点亮。

可能的原因如下:

①寻找原点开关的速度过快,可以减小“逼近速度”和“参考速度”

②原点开关有效时间过短,可以设置DI点滤波时间,例如上图原点开关是I0.4,则在“设备视图”中减小I0.4的滤波时间,默认情况下DI的滤波时间是6.4millisec,用户根据DI点有效时间选择合适的滤波时间。

8. 为什么轴在执行主动回原点命令时,初始方向没有找到原点,当需要碰到限位开关掉头继续寻找原点开关时并没有掉头,而是直接报错停止轴,报错原因是由于轴碰到了限位开关?

答:有几种可能:

①用户没有使能“允许硬件限位开关处自动反转”的选项。

②增大组态的加速度/减速度,因为轴在主动回原点期间到达硬件限位开关,轴将以组态的减速度减速(不是以紧急减速度),然后反向运行寻找原点开关。

③增大硬件限位开关和机械停止块间的距离。如下图所示,正常情况下,轴按照下图的方式掉头寻找原点开关:

如果硬件限位开关和机械停止块间的过近,无论如何增大“减速度”,仍旧不能正常掉头,如下图所示:

则需要增大硬件限位开关和机械停止块间的距离,为上图中D。

9. S7-1200 CPU上电后轴的位置是多少?

答:对于PTO轴或使用增量编码器的闭环轴,S7-1200 CPU每次上电后轴的位置都是0,不会保留断电前的位置值。

如何保持断电前的位置,请参考下常见问题14

对于使用绝对值编码器的闭环轴,如果使用Mode 6或7进行了回原点操作,那么CPU上电后将保持断电前的位置。

10. 开环运动控制怎样计算运动任务?

答: S7-1200默认以10ms为“时间片”计算运动任务,如下图所示,执行一个时间片时,下一时间片会在队列中等待执行。如果执行轴的新运动任务(例如通过MC_MoveVelocity”实现速度控制时,更新速度值),新运动任务可能最多等待20ms(当前时间片的剩余时间加上排队的时间片)后才执行生效。使用“MC_Halt”运动控制指令停止轴以及利用“ MC_Power”指令的“Enable”输入引脚停止轴时,也要遵循时间片机制,轴停止也会延时1-2时间片(10-20ms)才生效。

从V4.4固件版本以后,工艺对象V7.0开始,如下图所示,可以在工艺对象对应的DB中修改时间片时间"Static->Actor->PTOSliceTime",修改范围为2-20ms。在一些需要快速响应的应用可以考虑减小时间片,例如:贴标机。如果希望降低CPU的运算负荷,可以考虑增大时间片时间。

11. 为何通过S7-1200 PTO方式控制V90 PTI定位换向时有时会有丢失脉冲的情况?

答: S7-1200 PTO方式控制V90 PTI定位换向时,换向信号由高电平转换为低电平状态的时间取决于外围电路的输入电阻和电容,如果方向输出点的负载电流过小(应不小于10%),在高速时输出信号波形会发生畸变,换向切换时间过长,导致换向过程中的脉冲丢失。为确保换向时不丢失脉冲,同时保证脉冲输出信号波形不发生畸变,建议在SINAMICS V90 PTI的方向控制信号38、39和脉冲信号36、37的端子间连接阻值为200 Ohm至500 Ohm,最小功率为5W的下拉电阻,接线参考下图。

12. 闭环控制带有绝对值编码器的驱动器(例如:V90 PN)时,通过“MC_Home”指令是否可以执行Mode=2或3的回原点操作?

答: 不可以,“MC_Home”指令会报错:ErrorID=“16#8404”,ErrorInfo=“16#0055”(增量编码器的模式无效)。可通过“MC_Home”指令Mode=6或7进行绝对值编码器的调节。

13. 如何通过数据块实现驱动装置/编码器的数据连接?

答: PROFIdrive驱动装置和PROFIdrive编码器可通过PROFIdrive报文或数据块建立数据连接。出于控制过程特定的原因(例如非线性的液压轴的控制),如果要修改或评估用户程序中的报文内容时,则需通过数据块建立连接。


通过数据块建立数据连接的操作原理如下:
通常,轴闭环位置控制开始时,将通过MC-Servo[OB91]读取驱动装置或编码器的输入报文。闭环位置控制结束时,将输出报文写入驱动装置或编码器中。由于过程特定的原因要修改或评估报文内容时,必须在闭环位置控制前后通过数据块在驱动装置和编码器之间连接数据接口。

用户可对MC-PreServo和MC-PostServo组织块进行编程,通过PROFIdrive报文以及数据块建立数据连接的操作原理如图所示。

数据块由用户创建,其中需包含数据类型为"PD_TELx"的数据结构,以进行数据连接,"x"表示在设备组态中组态的驱动装置或编码器的报文编号。

在数据块"属性"选项中,需禁用以下属性:

*:从V4.4固件版本以后,工艺对象V7.0开始,可以使用优化块

具体应用请参考以下链接:

使用MC-PreServo和MC-PostServo组织块

https://support.industry.siemens.com/cs/cn/zh/view/109741575

14. 如何保持断电前的绝对位置?

答:使用绝对位置编码器的闭环轴使用MC_HOME指令的模式6,7可以实现位置的断电保持;
对于PTO或者使用增量型编码器的闭环轴是不能断电保持的,CPU断电重新上电后,轴的绝对位置会重新变成0,要实现位置保持,可按照下面的步骤操作。

1. 在全局DB块里分别建立一个Bool和Real类型变量,勾选Real变量的保持性,如下图:

2.进入设备组态界面,在"系统和时钟存储器"页面启用系统存储器字节,分配系统存储器参数时,需要指定用作系统存储器字节的 CPU 存储器字节。 首次循环对应的位启动后的第一个程序循环中为 1 ,否则为 0。

3.在 Main [OB1]中,先使用M1.0置位标志位,然后使用“MC_Power”指令启动轴后调用“MC_Home”指令的 Mode 0 ,重新装载断电前绝对位置,然后复位标志位,将当前位置“ActualPosition”传送到第一步建立的变量中。
在工艺对象里选中轴,右键打“开DB编辑器”,在“Static”下面找到“ActualPosition”。如下图:

注:如果存在多个运动控制指令,如“MC_Home”指令,每个指令的背景 DB 块需要单独创建,以免产生冲突。可以根据实际工艺情况,在合适的时间点执行“MC_Power”指令和“MC_Home”指令装载新的断电前的绝对位置。