Modbus协议及poll,slave仿真
1.Modbus协议包括
- MODBUS-RTU:用的多,Rtu走的是二进制,如1-1;10-0x0A/10dec
- MODBUS-ASCII:ASCII走的是字符,10-0x31 0x30;
- MODBUS-TCP:
2.信息的交互
现行MODBUS标准中定义了19种交互流程,分别对应一种功能码,常用流程对应的功能码为01-06,15,16,主要完成数据的读写。——主机发送请求,从机响应数据。 由于MODBUS-RTU协议通常用于非平衡传输总线(RS485),协议要求严格遵守同步请求模式,即主机发送请求后直至接收从机回复数据或超时无响应,主机才能发送其他请求,同时总线上只能有一个主机。
RS485
RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。 RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准 多采用的是两线制接线方式,这种接线方式为总线式拓扑结构,在同一总线上最多可以挂接32个节点。 RS-485的电气特性:逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。
3.Modbus存储区
modbus与PLC是什么关系?
Modbus起初是为PLC开发的,所以寄存器的定义会参考PLC的一些寄存器配置,但Modbus并不仅限于PLC。
Modbus存储
数据类型:布尔量 寄存器 只读布尔量——叫做——输入线圈——规定——1区(10001,19999) 只读寄存器——输入寄存器——规定——3区(30001,39999) 读写布尔量——输出线圈——规定——0区(00001,09999) 读写寄存器——输出寄存器——规定——4区(40001,49999)
4.功能码
5.使用Modbuspoll,ModbusSlave,及VSPD仿真
ModbusPoll/ModbusSlave/VSPD ModbusPoll ——客户端,主站 ModbusSlave——服务器,从站 VSPD扮演虚拟串口——是一对19,20,往COM19输数据,COM20能得到。串口波特率96N81 从站设置: 主站设置:
只要改从站上的值,主站上的寄存器值就会变。
6.看报文(从站观察)
从站收
000000-Rx:01 03 00 00 00 0A C5 CD——————这个是从站收 01——主站地址 03——功能码 00 00——起始地址 00 0A——数量10个寄存器,20个 C5 CD——校验
从站发
000001-Tx:01 03 14 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CC 5F——————这个是从站发,就是把从站的数据发到主站
01——主站地址 03——功能码 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00——10个值 如00 64表示第一个寄存器的值(2个字节)注意是16进制所以是0x64=100Dec。
Tip:其中的字节计数是可以变的,切合数据量匹配。