打印
[应用相关]

基于STM32 modbus rtu 从机设计--------------1理论篇

[复制链接]
2407|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1.       通讯协议
01.  硬件层协议:解决0和1的可靠传输,常有RS232、RS485、CAN、IIC、SPI …
02.  软件层协议:解决传输目的,常有Modbus、TCP/IP、CANopen …

使用特权

评论回复
沙发
hanzhen654|  楼主 | 2019-5-14 10:12 | 只看该作者
RS485 模型

使用特权

评论回复
板凳
hanzhen654|  楼主 | 2019-5-14 10:13 | 只看该作者
2.        主从模式
01.        系统中只有一个设备是主机。
02.        系统中所有的从机不可以主动向主机发数据。
03.        系统中的主机和所有从机上电后处于接受状态(监听状态)。
04.        任何一次数据交换有主机发起。
01.        主机将自己转为发动态。
02.        主机按照预先约定的格式发出寻址数据帧,同时恢复为接受态。
03.        恢复接受态的目的是等待寻址的从机做回应。

使用特权

评论回复
地板
hanzhen654|  楼主 | 2019-5-14 10:13 | 只看该作者
3.        基于485总线的Modbus

使用特权

评论回复
5
hanzhen654|  楼主 | 2019-5-14 10:14 | 只看该作者
1.主从模式:整个系统只有一个主机,每个从机必须有一个唯一的地址(0-247)
0地址是广播地址,主机保留,即主机向0地址发送数据包时,发送所有从设备,所有的从设备都不相应。

使用特权

评论回复
6
hanzhen654|  楼主 | 2019-5-14 10:14 | 只看该作者
2.        Modbus主机寻址格式(两种传输方式)
01.        Rtu方式,也是十六进制方式,该方式执行效率高。比如发送0x03: 总线上传输数据形式为: 0000 0011
02.        ASC方式,该方式便于调试,比如发送0x03:将数据0和3转为’0’和’3’ 即是0x30 和0x33 总线上传输数据形式为: 0011 0000  0011 0011

使用特权

评论回复
7
hanzhen654|  楼主 | 2019-5-14 10:15 | 只看该作者
3.Rtu方式:

使用特权

评论回复
8
hanzhen654|  楼主 | 2019-5-14 10:15 | 只看该作者
4.Rtu帧结束方式:
从机以接受数据停止时间到达3.5字符以上,认为主机的寻址帧完成,并开始处理。例如:波特率9600bit/s 每位数据传输时间:100000 us/9600 = 104us ,一个字符(10位)传输时间:104us*10 =1040us, 3.5个字符传输时间:1040*3.5 = 3645us  4ms

使用特权

评论回复
9
hanzhen654|  楼主 | 2019-5-14 10:15 | 只看该作者
5.ASC方式:

使用特权

评论回复
10
hanzhen654|  楼主 | 2019-5-14 10:16 | 只看该作者
6. LCR校验:
01.        地址码+功能码+数据1+数据2+…+数据n。  相加
02.        (地址码+功能码+数据1+数据2+…+数据n)%256  取余
03.        ~((地址码+功能码+数据1+数据2+…+数据n)%256) 取反
04.        ~((地址码+功能码+数据1+数据2+…+数据n)%256)+1  加1

使用特权

评论回复
11
hanzhen654|  楼主 | 2019-5-14 10:16 | 只看该作者
Modbus从设备回应数据包格式
01.        回应数据与主机查询数据包格式一致
02.        正常回应:功能码与主机发送的功能码一致(1-127)
03.        异常回应:功能码要在收到的功能码+128.

使用特权

评论回复
12
hanzhen654|  楼主 | 2019-5-14 10:16 | 只看该作者
modbus从机协议实现
01.        硬件上具备串口或485接口。
02.        硬件上需要一个定时器,精确到ms级别。

使用特权

评论回复
13
hanzhen654|  楼主 | 2019-5-14 10:17 | 只看该作者
Modbus硬件接口电路如下:

使用特权

评论回复
14
heimaojingzhang| | 2019-6-12 09:35 | 只看该作者
好的讲解的非常详细

使用特权

评论回复
15
keaibukelian| | 2019-6-12 10:01 | 只看该作者
modbus到底是什么方式呢  一直搞不清楚

使用特权

评论回复
16
labasi| | 2019-6-12 10:06 | 只看该作者
keaibukelian 发表于 2019-6-12 10:01
modbus到底是什么方式呢  一直搞不清楚

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。 Modbus比其他通信协议使用的更广泛的主要原因有:

公开发表并且无版权要求
易于部署和维护
对供应商来说,修改移动本地的比特或字节没有很多限制
Modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。

使用特权

评论回复
17
paotangsan| | 2019-6-12 10:11 | 只看该作者
共性讲解的非常到位

使用特权

评论回复
18
renzheshengui| | 2019-6-12 10:18 | 只看该作者
楼上列举的都可以用这种协议吗

使用特权

评论回复
19
keaibukelian| | 2019-6-13 12:59 | 只看该作者
labasi 发表于 2019-6-12 10:06
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻 ...

非常感谢热心解答

使用特权

评论回复
20
labasi| | 2019-6-13 13:12 | 只看该作者

客气了 应该的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

1766

帖子

2

粉丝