终于有了自己的BLOG了

终于有了自己的BLOG了。有点兴奋。以后要常来留下点东东,尤其是碰到问题的解决方法,开发经验,技术文摘,搞点技术储备。 
根据下面流程写一个基于modbus的stm32程序,1.前言 因项目中需要用到485电路以及多设备通讯,采用Modbus协议通讯方式,本文写的目的就是记录笔记也提供给初学者一点参考。里面的内容可能会有错误,仅供参考。 2.485电路 上图是项目中的电路,也算一个最基本的485电路,没什么好讲的,这个博主讲的不错,可以参考他的。 终于讲透了,史上最详细的RS485自动收发电路你一定要掌握-优快云博客 https://blog.youkuaiyun.com/qq_39400113/article/details/122387133?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171393570316800227442090%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171393570316800227442090&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-2-122387133-null-null.nonecase&utm_term=485%E7%94%B5%E8%B7%AF&spm=1018.2226.3001.4450 3.Modbus协议 学习以前参考以下博文链接: STM32+RS485+Modbus-RTU(主机模式+从机模式)-标准库/HAL库开发_stm32modbus主机-优快云博客 https://blog.youkuaiyun.com/qq_37281984/article/details/122739968 3.1 Modbus协议简介 Modbus协议是一种应用层报文传输协议,协议本身并没有定义物理层,所以支持多种电气接口,直接可以理解成他是软件层面的,各种的电气接口比如RS232、RS485、TCP/IP等,他们是硬件层面。他们之间互不影响。 3.2 Modbus通讯过程 Modbus是一主多从的通信协议 Modbus通信中只有一个设备可以发送请求。其他从设备接收主机发送的数据来进行响应,从机是任何外围设备,如I/O传感器,阀门,网络驱动器,或其他测量类型的设备。从站处理信息和使用Modbus将其数据发送给主站。 也就是说,不能Modbus同步进行通信,主机在同一时间内只能向一个从机发送请求,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信。 从机不会自己发送消息给主站,只能回复从主机发送的消息请求。 3.3 Modbus功能码 Modbus协议同时规定了二十几种功能码,但是常用的只有3种,用于对存储区的读写,如下表所示: 我们主要就是用到03h读取从机寄存器的数据,06h对从机指定寄存器写入指定数据,10h对从机多个寄存器写入数据。 3.4 Modbus协议格式 我们主要就是学习它的协议格式,主要用到3种功能码,也就对应与3种发送数据的格式。 3.4.1 03H功能码-读取数据-协议格式 比如 :主机发送 01 03 00 01 00 01 D5 CA 主机一共发送8个字节。 0x01:表示主机要与从机地址是0x01的设备进行通讯 0x03:功能码,代表我们发送这个指令的作用是什么,03表示我们要读取从机的数据 0x00:要读取从机寄存器地址的高位 0x01:要读取从机寄存器地址的低位 0x00:要读取从机寄存器数量的高位 0x01:要读取从机寄存器数量的低位 D5:前6位数据效验的低位 CA:前6位数据效验的高位 总得来说这段代码的含义是:查询从机地址为0x01的0x0001寄存器地址的0x0001个数据。 从机收到这段协议后,应回复如下格式 01 03 02 00 03 F8 48 从机一共发送7个字节 0x01:表示主机要与从机地址是0x01的设备进行通讯 0x03:功能码,代表我们发送这个指令的作用是什么,03表示我们要读取从机的数据 0x02:返回的数据个数(要读取的寄存器个数*2)——>返回数据的字节都是寄存器的2倍 0x00:从机返回数据的高位 0x03:从机返回数据的低位 F8 48:前面几位数据的效验码 3.4.2 06H功能码-写入数据-单寄存器-协议格式 比如 :主机发送 01 06 00 01 00 17 98 04 主机一共发送8个字节。 0x01:表示主机要与从机地址是0x01的设备进行通讯 0x03:功能码,代表我们发送这个指令的作用是什么,0
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值