【随手笔记】485-modbus(二)

为啥子叫MODBUS

Modbus是“Modicon Bus”的缩写,其中“Mod”源自其开发者Modicon公司(现为施耐德电气旗下品牌)的名称,“Bus”表示其作为通信总线协议的性质
bus是什么
公共汽车
就是所有设备的信息都可以在上面跑上面交互的意思
理解了BUS就成功了一半

解释一下

大致分为以下几种:

Modbus-RTU

Modbus-ASCII

Modbus-TCP
一般来说大部分的设备都是Modbus-RTU协议
Modbus是主从方式通信
总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信
半双工
设备必须要有RTU协议!这是Modbus协议上规定的,且默认模式必须是RTU,ASCII作为选项

协议的结构
地址 + 功能码 + 数据 + 校验
1字节 + 1字节 + N + 2字节

Modbus-RTU协议一般我们用的最多功能码就是03和06,
03查询功能码,
06修改功能码

主机发送: 01 03 00 00 00 01 84 0A

01-地址,也就是你传感器的地址
03-功功能码,03代表查询功能,查询传感器的数据
00 00-代表查询的起始寄存器地址.说明从0x0000开始查询。这里需要说明以下,Modbus把数据存放在寄存器中,通过查询寄存器来得到不同变量的值,一个寄存器地址对应2字节数据
00 01-代表查询了一个寄存器.结合前面的00 00,意思就是查询从0开始的1个寄存器值
84 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到84前面为止;

从机回复: 01 03 02 19 98 B2 7E

01-地址,也就是你传感器的地址
03-功功能码,03代表查询功能,查询传感器的数据。这里要注意的是注意发给从机的功能码是啥,从机就要回复同样的功能码,如果不一样说明这一帧数据有错误
02-代表后面数据的字节数,因为上面说到,一个寄存器有2个字节,所以后面的字节数肯定是2*查询的寄存器个数;
19 98-寄存器的值是19 98,结合发送的数据看出,01这个寄存器的值为19 98
B2 7E-循环冗余校验

在这里插入图片描述

主机发送: 01 06 00 00 00 01 48 0A

01-主机要查询的从机地址
06-功能码,06代表修改单个寄存器功能,修改有些不同,有修改一个寄存器和修改多个寄存器;
00 00-代表修改的起始寄存器地址.说明从0x0000开始.
00 01-代表修改的值为00 01.结合前面的00 00,意思就是修改0号寄存器值为00 01;
48 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到48前面为止

从机回复: 01 06 00 00 00 01 48 0A

01-从机返回给主机自己的地址,说明这就是主机查的从机
06-功能码,代表修改单个寄存器功能,主机发啥功能码,从机就必须回什么功能码;
00 00-代表修改的起始寄存器地址.说明是0x0000.
00 01-代表修改的值为00 01.结合前面的00 00,意思就是修改0号寄存器值为00 01;
48 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到48前面为止;

黄色:A 绿色:B 紫色:A-B

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
起始位+数据位+停止位
串口的协议
使用485的电平解析后
就是串口的一个字节

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值