1.Modbus简介——来自维基百科Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。MODBUS是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:
1.公开发表并且无版税要求
2.相对容易的工业网络部署
3.对供应商来说,修改移动原生的位元或字节没有很多限制
2.MODBUS指令说明
2.1 读线圈寄存器01H
1) 描述:
读MODBUS从机线圈寄存器当前状态。
2) 查询:
例如从机地址为11H,线圈寄存器的起始地址为0013H,结束地址为0037H。该次查询总共访问37个线圈寄存器。
表2.1.1 读线圈寄存器-查询
3) 响应
响应负载中的各线圈状态与数据内容每位相对应。1代表ON,0代表OFF。若返回的线圈数不为8的倍数,则在最后数据字节未尾使用0代替。
表2.1.2 读线圈寄存器-响应
线圈0013H到线圈001AH的状态为CDH,二进制值为11001101,该字节的最高字节为线圈001AH,最低字节为线圈0013H。线圈001AH到线圈0013H的状态分别为ON-ON-OFF-OFF-ON-ON-OFF-ON。
表2.1.3 线圈0013H到001A状态
最后一个数据字节中,线圈0033H到线圈0037状态为1BH(二进制00011011),线圈0037H是左数第4位,线圈0033H为该字节的最低字节,线圈0037H至线圈0033H的状态分别为ON-ON-OFF-ON-ON,剩余3位使用0填充。
表2.1.4 线圈0033H到线圈0037状态
2.2 读离散输入寄存器 02H
1) 说明
读离散输入寄存器状态。
2) 查询
从机地址为11H。离散输入寄存器的起始地址为00C4H,结束寄存器地址为00D9H。总共访问32个离散输入寄存器。
表 2.2.1 读离散输入寄存器——查询
3) 响应
响应各离散输入寄存器状态,分别对应数据区中的每位值,1 代表ON;0 代表OFF。第一个数据字节的LSB(最低字节)为查询的寻址地址,其他输入口按顺序在该字节中由低字节向高字节排列,直到填充满8位。下一个字节中的8个输入位也是从低字节到高字节排列。若返回的输入位数不是8的倍数,则在最后的数据字节中的剩余位至该字节的最高位使用0填充。
表2.2.1 读输入寄存器-响应
离散输入寄存器00D4H到00D9H的状态为35H (二进制00110101)。输入寄存器00D9H为左数第3位,输入寄存器00D4为最低位,输入寄存器00D9H到00D4H的状态分别为ON-ON-OFF-ON-OFF-ON。00DBH寄存器和00DAH寄存器被0填充。
表2.2.2 离散输入寄存器00C4H到00DBH状态