modbus协议的理解和分析

这次来记录下modbus协议的理解和分析

先说串口的通讯解析。一般是2种方式
第一种是基于通讯帧的包头作为帧起始,一般格式固定
例如 包头+数据长度+命令+数据+校验 或者 包头+数据长度+命令+数据+校验+包尾。
包头一般是特定的数据。对于这种通讯帧类型,可以按照字节接收进行包头判断,等数据长度到达后进行校验来断帧,也可以直接按帧接收。

第2种则是按照通讯帧的时间间隔来分隔,例如modbus rtu 。通讯帧按照3.5个字符的时间来分隔。对于这种情况,如果有空闲中断,可以用空闲中断来接收。也可以用定时器去处理帧,或者也可以用自己计时,波特率已经知道,3.5个字符的超时时间也可以知道。可以参考安富莱的处理。

再来说下modbus rtu
modbus的组成
地址+功能码+数据+CRC16

(1) 功能码03:读多路寄存器(读取状态时用到)
(2) 功能码06:写单路寄存器(写数据到对应的单个寄存器)
(3) 功能码10:写多路寄存器(写数据到对应的多个寄存器,完成设置参数)

功能码06
设备地址 功能码 寄存器地址 寄存器内容 CRC校验码
回复
设备地址 功能码 寄存器地址 寄存器内容 CRC校验码

功能码03
设备地址 功能码 寄存器地址 寄存器长度 CRC校验码
回复
设备地址 功能码 字节长度 数据 CRC校验码

功能码10
设备地址 功能码 寄存器起始地址 寄存器长度 字节数 寄存器内容 CRC校验码
回复
设备地址 功能码 寄存器起始地址 寄存器长度 CRC校验码

寄存器地址一般是自己定义。
一般modbus协议都是由主机发起,从机返回数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值