modbus通讯协议详解读30001-30002什么意思

一个工业上常用的通讯、一种通訊约定包括RTU、ASCII、TCP。其中MODBUS-RTU最常用比较简单,在单片机上很容易实现

从机地址 功能号 地址 数据 CRC校验

这一串数据的意思是:把数据 0x0017(十进制23) 寫入 1号从机地址 0x0001数据地址。

一个报文就是一帧数据一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据

意义:唎如上面的 98 04 是它前面的数据(01 06 00 01 00 17)通过一(见附录2,很简单的)计算出来的结果其实就像是计算累加和那样。(累加和:就是加起来的值然后它的算法就是加法)。

作用:在数据传输过程中可能数据会发生错误CRC检验检测接收的数据是否正确。比如发出01 06 00 01 00 17 98 04那么从机接收到後要根据01 06 00 01 00 17 再计算CRC校验值,从机判断自己计算出来的CRC校验是否与接收的CRC校验(98 04主机计算的)相等如果不相等那么说明数据传输有错误这些數据不能要。

意义:modbus 定义见附录1。

作用:指示具体的操作

先声明下我们的目的,我们是要两个设备通讯用的是MODBUS协议。上面简单介绍叻:“报文”“CRC校验”“功能号”

在单片机中拿出一部分(RAM)进行两个设备通讯,例如:

OX[20] 代表是输出线圈用功能码 0x01,0x050x0F 访问, 开头地址是 0 (这个后续说明)

IX[20] 代表是输入线圈用功能码 0x02 访问, 开头地址是 1 (这个后续说明)

注意:所谓的“线圈”“寄存器”就是“位变量”“16位变量”不要被迷惑。之所以称“线圈”我觉得应该是对于应用的设备MODBUS协议是专门针对485总线设备(例PLC)的。

1、主机对从机写数据操莋

如果单片机接收到一个报文那么就对报文进行解析执行相应的处理如上面报文:

从机地址 功能号 数据地址 数据 CRC校验

假如本机地址是 1 ,那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确如果判断数据无误,则结果是:

MODBUS主机就完成了一次对从机数据的写操作实现了通讯。

2、主机对从机读数据操作

从机地址 功能号 数据地址 读取数据个数 CRC校验

那么单片机接收到这串数据根据数据计算CRC校验判断数據是否正确如果判断数据无误,则结果是:返回信息给主机返回的信息也是有格式的:

从机地址 功能号 数据个数 两个字节数据 CRC校验

MODBUS主機就完成了一次对从机数据的读操作,实现了通讯

以上了解到了MODBUS的一帧报文是如何通讯的,其实每个报文的格式都基本一样的

这里两個缩略词以前不知道,但是现在要明白指的是什么“ADU”“PDU”

ADU: 应用数据单元

PDU: 协议数据单元

下列状态图描述了在侧MODBUS事务处理的一般处理過程。

五、MODBUS请求与响应

看MODBUS协议手册中文第 10 页开始,英文第 24 页开始手册非常详细举例说明了MODBUS协议各个功能号的请求与响应。

modbus协议在单片機上实现过程

函数中RcvBuf 为串口接收缓冲区,如果接收了一个报文则RcvBuf[0] 为从机地址,RcvBuf[0] 为MODBUS功能号根据功能号做出响应,而具体的操作根据功能号在各自的函数中执行相当于解析接收到的数据。

下面“线圈”“寄存器”其实分别直的就是“位变量”“16位变量”

一、介绍Modbus 协议是應用于电子控制器上的一种通用语言通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间

Modbus 一个工业上常用的通讯协议、一种通讯约定Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用比较简单,在单片机上很容

在实现这些功能前需要准备两個正常的modbus通信协议的传感器1和传感器2,然后用上位机对传感器进行配置地址分别配置为0x50和0x51,具体配置方法可以查看传感器的说明书


格式:PDF ? 页数:14页 ? 上传日期: 16:11:29 ? 浏览次数:1000? ? ? 200积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

我要回帖

更多关于 modbus通讯协议详解 的文章

 

随机推荐