
概述
本通讯协议采用标准Modbus协议,所用的传输模式为RTU模式。Modbus协议是一种主-从式协议。
任何时刻只有一个设备能够在线路上进行发送。由主站管理信息交换,且只有它能发起。它会相继对从站进行轮询。除非被主站批准,否则任何从站都不能发送消息。从站之间不能进行直接通信。
协议帧中不包含任何消息报头字节或消息字节结束符。
它的定义如下:
| 从站地址 | 请求代码 | 数据 | CRC16 |
- 每个地址在网络设备环境中必须唯一。
数据 : 以二进制代码传输。
CRC16 : 循环冗余校验参数。
当间隔时间长于或等于3.5字符时,即作为检测到帧结束。
1、通讯口设置
通讯方式 异步串行通讯接口,如RS-485,RS-232,RS-422等
波特率 2400、4800、9600、19200bps(可由设定仪表参数相互更改,默认9600)
2、字节数据格式
. 一位起始位
. 八位数据位
. 一位停止位
. 无校验
| 1 | * | * | * | * | * | * | * | * | 1 |
3、仪表通讯帧格式
下表给出由本公司数显仪工作在从机模式时的的Modbus功能,并规定其限值。
从站编号:本机仪表地址,地址必须在1到247之间,且同一总线上各仪表地址不可重复。
地址为0时用于广播功能,且此时只有写功能有效。单字节。
功能代码:“读”和“写”功能是从主站角度定义的。单字节。
| 功能代码 | Modbus名 | 功能名 | 广播 | 一次连续的N的最大值 |
| 3 (0x03) | Read Holding Registers | 读N个寄存器值 | NO | 24 |
| 16 (0x10) | Write Multiple Registers | 写N个寄存器值 | YES | 24 |
寄存器数:要读取或修改的内部寄存器个数。双字节。
读取的字节数:被读取的内部寄存器的数据的字节总数。单字节。
CRC16:循环冗余校验参数。
1) 读N个输出字:功能3
注意: Hi = 高位字节,Lo = 低位字节。
此功能可被用于读取参数,而无论类型如何。
主站请求
| 从站编号 | 0x03 | 首寄存器地址 | 寄存器数 | CRC16 | |||
| Hi | Lo | Hi | Lo | Lo | Hi | ||
从站响应
| 从站编号 | 0x03 | 读取的字节数 | 首寄存器数值 | …… | 末寄存器数值 | CRC16 | |||
| Hi | Lo | Hi | Lo | Lo | Hi | ||||
例1:使用功能3读取从站1上的1个字Sn01(地址0003H,见附表),其中:
· Sn01(第一通道信号输入类型) = 17(0x11)
主站请求
| 0x01 | 0x03 | 0x00 | 0x03 | 0x00 | 0x01 | 0x74 | 0x0A |
从站响应
| 0x01 | 0x03 | 0x02 | 0x00 | 0x11 | 0x78 | 0x48 |
巡检仪内部参数对应地址表(范围:0--161):
| 编号 | 参数符号 | 参 数 名 称 | 寄存器地 址 | 数据格式 | 类型 | 数 值 范 围 | 备 注 |
| 1 | 无 | 仪表类型(巡检仪) | 0000 | 双字节 无符号 | 只读 | 03 | 定点数 |
| 2 | Addr | 仪表地址 | 0001 | 读/写 | 1~247 | ||
| 3 | bAud | 仪表通讯波特率 | 0002 | 读/写 | 0~99 | ||
| 4 | CHn | 巡检点数 | 0003 | 读/写 | 0~16 | ||
| 5 | CHt | 通道显示时间间隔 | 0004 | 读/写 | 0~999 |
MBUS_CTRL功能块按照巡检仪说明书参数设置,波特率9600,无校验,超时100ms,8位无需设置,详见STEP7-Micro/WIN手册
MBUS_MSG:
EN常通,First需用上升沿
Slave设置站号,此仪表站号为4
RW 设置0为读1为写,这里设置为0
Count巡检仪表参数为1位,这里设置为1
DataPtr为读取数据存放地址,这里设置为VB2000,前面要加&符号
详见STEP7-Micro/WIN手册
Addr设置为40002,读取以40001开头,对应功能码03(读),这里读取仪表地址,编号02,寄存器地址0001,应为40002(40000+地址编号)
M5.0为on时触发。
读取出的画面:
