modbus那些事儿
modbus协议可以说是工业自动化领域应用最为广泛的通讯协议,因为他的开放性、可扩充性和标准化使它成为一个通用工业标准。有了它,不同厂商的产品可以简单可靠的接入网络,实现系统的集中监控,分散控制功能。
目前modbus规约主要使用的是ascii, rtu, tcp等,并没有规定物理层。目前modbus常用的接口形式主要有rs-232c,rs485,rs422,也有使用rj45接口的,modbus的ascii, rtu协议则在此基础上规定了消息、数据的结构、命令和应答的方式。modbus数据通信采用master/slave方式(主/从),即master端发出数据请求消息,slave端接收到正确消息后就可以发送数据到master端以响应请求;master端也可以直接发消息修改slave端的数据,实现双向读写。
在串行通信中,用“波特率”来描述数据的传输速率。国际上规定了一个标准波特率系列:110、300、600、1200、1800、2400、4800、9600、14.4kbps、19.2kbps、28.8kbps、33.6kbps、56kbps。例如:9600bps,指每秒传送9600位,包含字符的数位和其它必须的数位,如起始位、停止位和奇偶校验位等。
在自动化领域我们常用rtu模式,rtu 模式中每个字节的格式:
编码系统:8 位二进制,十六进制 0-9,a-f
数据位: 1 起始位
8 位数据,低位先送
奇/偶校验时 1 位;无奇偶校验时 0 位
带校验时 1 位停止位;无校验时 2 位停止位
错误校验区:循环冗余校验(crc)
从站地址设置:信息地址包括 2 个字符(ascii)或 8 位(rtu),有效的从机设备地址范围 0-247(十进制)。
功能码设置:信息帧功能代码包括字符(ascii)或 8 位(rtu)。有效码范围 1-225(十进制);
数据区的内容:数据区有 2 个 16 进制的数据位,数据范围为 00-ff(16 进制),根据网络串行传输的方式,数据区可由一对 ascii 字符组成或由一个 rtu 字符组成。
rtu方式的消息帧:
modbus的功能码:
modbus 功能码与数据类型对应表:
rtu 方式读取整数据的例子:
解析一下:主机发送指令,访问从站地址为1,使用功能码03(读保持寄存器),起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。比如例子中的起始地址为38,十进制为:56。寄存器数量高8位、低8位:表示从起始地址开始读多少个模拟量。例子中为1个模拟量。注意,在返回的信息中一个模拟量需要返回两个字节。错误校验为crc校验。
从站应答:设备地址和命令号和上面的相同。返回的字节数:表示数据的字节个数,也就是数据1,2...n中的n的值。例子中返回了1个模拟量的数据,因为一个模拟量需要2个字节所以共2个字节。数据高低字节:41和24代表返回的1个模拟量的值,即十进制的16676。错误校验为crc校验。
苹果欲摆脱对高通依赖?
丰田油电混动技术装车带来诸多好处
为了征服年轻人 欧拉做了些什么
无人机倾斜影像三维建模中的问题
JAVA数据库的连接:JDBC*
每个工控人都应该了解的Modbus那些事儿
张钹院士:如何通过机器的“智慧”改变我们的生活
解决逆变器IC短路办法,电路范围比较广
峰岹科技被认定为广东省“专精特新”中小企业
5G时代下边缘计算让工业物联网如虎添翼
芯片可以拷贝大脑构想? 下一场技术革命或将由“芯”引爆
骨传导蓝牙耳机哪个牌子好、挂耳式骨传导蓝牙耳机推荐
LTC3544 高效率四通道降压型转换器
电阻
上海首台公交机器人正式上岗
国产FPGA面临着重重挑战?国产FPGA该如何突破呢?
隐藏在百亿美金物联网芯片市场的机遇
STM32的小开发板的设计
开关电源中什么是电源调整率?如何去测?
MAX4751,MAX4752,MAX4753低电压、单电源、四路SPST模拟开关