Modbus学习笔记!

前置内容

在开始之前我们先准备一些前置知识点,以及硬件。
我们先看硬件吧。
一个直流电源,这个不是必须的,如果你能搞到10-36v dc就可以,很久以前因为其他原因买了这个电源,如果只是为了做个实验,淘宝几十块的直流电源完全够用。
在这里插入图片描述一个普瑞森的模拟量采集模块,淘宝三十多左右,因为这是我手头现有的,且不需要复杂配置,且很便宜的一个支持modbus的设备。

在这里插入图片描述
一条宇泰的485转usb转接线(890A),淘宝五十多左右,用于将模块信号传到电脑。
在这里插入图片描述
一个温度传感器,淘宝三块钱左右。
在这里插入图片描述一个面包板和一些杜邦线。
在这里插入图片描述
硬件已经准备OK了,下面我们准备前置知识点。

首先485是什么。

那些官方的描述可以百度查到,这里我结合我的理解用大白话输出一遍。
485是双方的一种电气约定,规定了是用单端信号还是差分信号,是用那个范围代表逻辑1,那个范围代表逻辑0,以及其他的一些细节,他和通信协议是没有任何关系的,只是一种电气约定,电气规范。
一个设备符合485电气约定就可以在销售时告诉客户我们支持485。

modbus通信协议是什么

其实这正是本文想要弄清楚的问题,这里我们先去掉modbus,解释一下通信协议这四个字是什么意思,依然是我结合我自己的理解,用大白话输出。
任何通信协议到了电气层面都只有逻辑0和逻辑1,我们可以用485电气规范传输遵循modbus协议的比特流,也可以用232,也可以用网线。只有到了协议解析的层面,我们才需要用到协议,也就是上面的模拟量采集模块的单片机内运行的程序,在收到了我通过转接器传输的信号后按modbus协议去解析其中的内容,那么我们就可以说,这个模块支持modbus协议。同样我们的上位机,或者说我们即将用到的modbus poll这个调试软件,也遵循modbus协议发送/接受内容,解析内容,那么这双方就可以通信了,不至于鸡同鸭讲。

好了,前置知识点准备完了,我花一点时间接一下线。

在这里插入图片描述花了点时间,线已经接好了,现在我们看看modbus poll这个软件读到的数据。
在这里插入图片描述我用红笔圈出来的就是一条问询帧,下面我们来分析问询帧。

在这里插入图片描述

1.站号,modbus协议是一个询问应答式的协议,即一个网络内挂载的设备是不能主动向主站发送数据的,只能是主站发送,从站应答,理论上讲一个网络内可以挂在256台从站设备,即八位二进制数能表示的最大数字再加1,所以这里就需要一个站号,主站会将问询帧广播出去,从站发现站号和自己的站号相符就做出应答。
2.功能码,modbus协议规定了6个功能码,这里我们用到的是03功能码-读取保持寄存器。
3.起始地址,用16为二进制表示起始寄存器地址上图是00 00即,从地址0开始读取。
4.读取个数,用16位二进制表示读取寄存器的个数,即上图的00 7C,转换为十进制就是124。
5.冗余校验,用16位二进制表示冗余校验,这个可以百度细节,此处不纠结,但这个地方很容易出问题,尤其在不使用调试工具,自己拼接的时候,经常是这里出错,明明发了问询帧,但就是得不到应答,多数是这个地方的问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
freemodbus 是一款开源的Modbus通信协议栈,用于实现Modbus通信协议的开发。通过学习freemodbus,我收获了许多知识和技能。 首先,在学习freemodbus时,我了解到了Modbus通信协议的基本原理和工作方式。Modbus是一种常用的串行通信协议,主要用于工业自动化领域中设备之间的通信。它使用简单的请求-响应机制进行数据传输,包括读取和写入寄存器等功能。通过freemodbus学习,我了解到了Modbus通信协议的组成结构、数据帧格式以及常用的功能码等。 其次,通过实践freemodbus的使用,我学会了如何在嵌入式系统中实现Modbus通信功能。freemodbus提供了一系列的接口函数,可以方便地实现Modbus和从的功能,并支持多种串口通信方式,如RS485、TCP等。学习过程中,我熟悉了freemodbus的API函数的使用方法,掌握了创建、初始化和配置Modbus通信对象的技巧。 另外,通过使用freemodbus,我学到了一些调试和排错的技巧。在实际应用中,由于硬件、软件等多种因素的影响,可能会出现通信故障或数据错误的情况。通过freemodbus的调试工具和相关的日志输出,我学会了如何在开发过程中定位和解决各种问题,提高了软件开发的技能和经验。 总体来说,学习freemodbus是一次非常有益的经历。通过这个学习过程,我不仅掌握了Modbus通信协议的原理和应用,还提高了嵌入式软件开发的能力。我相信,在今后的工作中,我可以更好地应用freemodbus开发各种工业自动化设备和系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

x县豆瓣酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值