对于熟悉Modbus协议的朋友,如果需要监控PLC设备,请快速读完本篇文章,可以避免不少弯路。
其实PLC设备如果认真阅读说明书,估计是一个苦差使,可是说明书还是必须要读的。笔者把第一次使用的DVP12SAAAR (台达PLC)设备使用经历,以一个做监控人的角度简要说明一下。
监控PLC设备的目标就是通过串口读取设备的输入和输出的状态,本文从这个目标开始第一次使用PLC。


1. 接线
如果只是满足监控需求,我们一般可以使用设备的COM2或者COM3,如果设备配置正常,通过COM2或者COM3,使用MODBUS协议就可以通讯上。如果通讯不上,那么就会开始神奇的PLC设备之旅。
笔者遇到的问题就如同论坛的这个问题前看这里,使用MODBUS协议返回如下代码:

01 03 07 00 72

如果使用其他命令吗,回复会是对于的命令码。

经过一天的努力,我发现了问题所在,主要原因是设备编程(PLC是可编程的设备嘛)的问题,其实就是设备初始化的问题。下面我就简要从接线问题说说外行人看待PLC方式:

PLC设备原理

PLC设备是可编程的,即可以自定义逻辑实现输入或者状态,实现输出的控制,设备上具有X0~X7端子,是输入端子,Y0-Y3是输出端子,实现不同的控制逻辑,可以实现不同的控制模式,而且,PLC设备还支持内部寄存器,定时器,这样就可以实现复杂的逻辑控制。

对于监控而言,我就是需要检测X和Y的状态,并对Y进行控制。

如果不能通过COM2正常通讯,那么就需要好好的配置一下PLC设备了。

依据操作手册,COM1, COM2缺省工作在ASCII模式,波特率是9600, E, 7, 1, 不是MODBUS协议,COM1一般作为设备的配置接口,如果需要使用MODBUS协议,需要对PLC设备进行配置。而配置的第一步就是接线。

接线图请参考下图:

PLC连监控通讯_寄存器


引用至:百度贴吧

通过图上的方式接好后,就可以通过PLC的编程软件实现设备的配置,COM1接口缺省串口参数是9600, E, 7, 1。

这个地方一定要注意,最好使用专用的接口线(一般没有-_-),要么接线的时候使用铜线,并固定好,并保证接触良好。并通过发送ASCII码的:

3A 30 31 30 33 30 36 31 34 30 30 30 38 44 41 0D 0A

如果有回复,那么通讯就是OK的。PLC编程软件就依赖于PLC设备了,我使用的是台达的PLC,可以使用他们提供的软件:WPLSoft 2.34,这个软件官网和其他软件下载网站有。


2. 操作手册和PLC配置

目标,通过PLC设备,配置正确的COM2通讯参数,使得参数复合:9600,N,8,1(多么熟悉啊)的MODBUS协议。

PLC设备支持两种协议,一种是ASCII码的标志协议,还有是RTU协议,即MODBUS协议。

配置上面的参数,需要看操作手册,下面我把手册的关联截图发上来。

设备协议配置寄存器:(操作手册/通讯/通讯接口章节)

PLC连监控通讯_PLC连监控通讯_02


M寄存器是ON/OFF寄存器。

PLC连监控通讯_PLC连监控通讯_03


PLC连监控通讯_MODBUS_04


为了使COM工作在9600, N,8,1的MODBUS写一下,需要配置寄存器,文档中说明了配置COM2的方式:

PLC连监控通讯_PLC连监控通讯_05


如果需要带到我们的目标,需要设置D1120到0x81。

具体PLC编程软件基本操作思路是:连接设备,读取设备程序,修改程序,下发程序。
3. 通过COM2读取X寄存器
X寄存器需要使用02功能码读取,用485的串口连接设备的COM2端子,通过

Tx:01 02 04 00 00 08 78 fc
Rx:01 02 01 01 60 48

就可以读到X的状态,上面回复的数据表明X0输入为1。

X0~X7的接线图在文档中也有。

参考安装说明书:

PLC连监控通讯_MODBUS_06