西门子PLC-1200的基于232串口的Modbus RTU通讯实例
这里先讲一下Modbus和232,232和485串口是一种串口接法,这种接法实际能实现十几种的协议通讯,有基于串口的Modbus RTU,Modbus+,有基于以太网接口的Modbus tcp/ip和Modbus通讯协议,我们这边说的只是基于232串口通讯的Modbus RTU通信
这里要讲的是一个简单的Modbus RTU通讯的小实例,就是对通过232串口,对一个称重传感器实时读取参数,从而判断是否需要加料
1.0 直接上图,如下图就是一个通讯设置的指令MB_COMM_LOAD,简单说下这个指令的参数
2.0 如下图
REQ:上升沿触发通讯连接,这里我们设置PLC上电就触发上升沿,连接通讯
PORT: 对于1200/1500这里是填入组态的通信模块的硬件标识符,如果是300/400这里就应该填地址
BAUD:波特率,一般都是9600吧
下面几个没什么特别要求直接默认,不过也讲下:
PARITY:奇偶校验,0就是不校验
FLOW_CTRL:选择流控制
RTS_ON_DLY:RTS接通延时设置
RTS_OFF_DLY:RTS断开延时设置
RESP_TO:等待从站响应的时间设置,如果设置时间内没有响应,会重复请求直至报错
MB_DB:引用Modbus_Master或Modbus_Slave的背景数据块
DONE:当请求完成后,会置1一个周期
ERROR:当请求出现错误后,也会保持一个周期
STATUS:当ERROR=1时,会保持一个周期
以上3个状态,需要及时锁存住
3.0 在程序中加入Modbus_Master作为主站通信,如下图,这边是循环一直读取状态
3.1 这里讲下具体Modbus_Master的具体参数
REQ:当为0时无请求,当为1时,请求向Modbus从站发送数据,这里不是上升沿触发,为1就是一直处于请求状态
MB_ADDR:Modbus RTU站地址
MODE:模式选择,0为读取,1为写入还有诊断什么的,具体看下面的功能表
DATA_ADDR:指定在Modbus从站中访问的数据的起始地址,MODE和DATA_ADDR这两个参数配合来选择Modbus功能代码,如下
DATA_LEN:从Modbus从站读取的数据长度,这里写的是4,这三个参数组合起来,就是读取从站从40001开始的4个字节的寄存器数据
DATA_PTR:数据指针,指向要进行数据写入或读取的标记或者数据块地址,这里当然是读取数据的存储位置咯
DONE:如果上一个请求完成的话,就会置位1个周期
BUSY:0为无激活的命令,1为命令执行中
ERROR:错误报警
STATUS:错误代码,也只会存在一个周期