注意: 代码里面我常用的是 三菱MC 串口、网口,松下,Modbus TCP ,Modbus RTU。基恩士、欧姆龙的比较简单,代码写了没有做过项目调试。
我把常用的PLC通信独立出一个软件了,机器视觉软件跟这个软件通信,机器视觉软件做一个菜单项直接弹出设置PLC参数即可,方便实用,我在使用过程中,这个软件主要用在定位和对位项目之中,常用的三菱、Modbus也得到稳定的运行。
PLC配置客户端

在机器视觉软件开发中, 经常会与下位机PLC通信, 在大多数情况下,我们可以选择走Modbus通信, 也可以走对应PLC的协议, 比如三菱MC协议、松下NEWTOCOL协议、欧姆龙HostLink协议。
在我们的应用程序中,PLC模块只实现了读写寄存器的方式。 好,如果有人问,怎么表示浮点型的数据,比如2.334,还有怎么表示大于1个字也就是65535的数据呢?
倍率
如上图, 我们使用倍率来表达浮点型数据,在PLC和机器视觉软件的交互流程如下,PLC要发送2.334就先放大1000倍,机器视觉软件读取到后就缩小1000倍就可以了。
浮点型数据表达
如果值比较大,就需要用到2个PLC的寄存器的值了,也就是2个字单位,最大表示2的32次方 4,294,967,296的值了。
在我们与PLC工程师配合的时候,经常会发生一个情况,我已经写寄存器的值了,但是你上位机的问题,但对于上位机软件开发的工程师来说,我明明已经写了,是你的问题啊,对于这种情况,我们在实现读写PLC的时候,一定要判断返回值,看读写回复是否成功,PC和PLC协议流程都是如下图所示, 命令发送和命令响应,如果你的命令没问题,响应中会 附带返回值编码,编码可以查询对应PLC的手册,看是否成功,但有时候确实是视觉软件问题,比如使用的时候是否在多线程调用,是否做到数据同步。如果是硬件连接线的问题,Ping一下是否有问题。
命令响应
合格的机器视觉软件一个重要的特征是稳定,长时间稳定的运行,有些工厂产线几个月都不关机,那么与PLC下位机通讯就需要稳定的连接,需要考虑增加自动重连线程。
机器视觉软件开发系列--三菱PLC的MC通信协议分析和实现(一)
机器视觉软件开发系列--三菱PLC的MC通信协议分析和实现(二)
机器视觉软件开发系列——松下PLC下位机通信协议简介和实现
需要源码的同学请转发和关注我哦,我会收到通知,私信我plc源码,我会发给你。
注意:此代码仅供参考,禁止非法买卖传输,如有发现,必定追究,源码仅供参考, 有错误之处难免,有错误请指正,相互进步。