在使用Siemens PLC协议通信时,为什么会偶尔出现PLC接受的状态码正常,但位姿数据为0?
问题描述
在使用Siemens PLC协议通信时,PLC向视觉系统发送指令后,视觉系统的日志界面显示已经发送位姿数据,PLC接收到的状态码也显示正常,但PLC接收到的位姿数据却为0。
问题原因
PLC通过周期性清空位姿寄存器进行了防错处理,但清空时序与视觉系统写入位姿数据偶发冲突。
解决方案
-
为清空位姿寄存器操作单独设置“自动运行步骤编号”,比如拍照周期的初始化阶段。
-
若使用了“MM_Empty_Target”功能,同样需要采用上述1中的方法(如下图所示)。
如果功能一直使能,每个扫描周期都会读、写一次INOUT接口参数。如果在位姿为0的执行周期内,此时视觉系统正在写入位姿数据(下图中的Target_Pose参数),那么位姿数据就会被清除。 -
如果MM Interface数据块整体作为功能块的INOUT接口参数,并且该功能块一直处于使能状态,则也会引发位姿数据为0的问题。用户可参照如下方法,例如,在MM Interface数据块内增加“控制相机”和“读取相机”结构体,并将结构体数据分别作为功能块的OUT接口参数和IN接口参数(如图示)。