本文参考:Modbus协议中文版【完整版】.pdf,加上自己的理解的记录,该文章主要讲modbus-TCP协议。(文档下载链接:【免费】modbus协议中文详细解释文档资源-CSDN文库)
本系列文章分为三章:
1.modbus-tcp协议解释
2.modbus-tcp:功能码具体详细解释
3.modbus协议栈源码详细解读:libmodbus协议栈
后续会更新完.....
如有问题欢迎评论区或者私信交流
目录
1 引言
2.modbus报文帧
2.1.报文格式
2.1.1.ADU报文长度
2.2.报文字段含义
2.3.MODBUS 数据模型
2.4.功能码
2.4.1.功能码分类
2.4.2.公共功能码
2.5.报文的数据流图
2.5.1.正常响应
2.5.2.异常响应
2.6.modbus协议栈报文处理流程
1 引言
2.modbus报文帧
2.1.报文格式
的 MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。( 注意:个人认为文档里面这个ADU和PDU画反了,但不影响解读)
2.1.1.ADU报文长度
2.2.报文字段含义
地址域:以太网里面的TCP/IP的头部数据,进行标识以太网里面的哪个设备差错检验:以太网里面的校验modbus-ADU(功能码 + 数据):功能码:标识该modbus报文是干嘛的,对数据有标识作用数据:用户的数据(在某种请求中, 数据域可以是不存在的(0 长度),在此情况下服务器不需要任何附加信息。功 能码仅说明操作)
2.3.MODBUS 数据模型
modbus数据存储主要是寄存器和线圈(为什么叫线圈,是因为电气开关的原因)
2.4.功能码
2.4.1.功能码分类
2.4.2.公共功能码
注:这里只需要知道有这些功能码,大概是这些功能,每一个详细的功能码的作用,后面会单独出一章,篇幅会很多,具体也可以去看看源码,会有不一样的收获。
2.5.报文的数据流图
前面介绍过,modbus是一个c/s模型的协议,客户端给服务器发送请求,服务器进行响应回复客户端。根据服务器的响应分为:正常响应和异常响应
2.5.1.正常响应
modbus协议栈校验通过可以正常处理该功能码的功能,将正常处理的结果回复给客户端(modbus协议栈的处理流程可以看2.5小节)
2.5.2.异常响应
modbus协议栈校验没有通过,将错误码通回复给客户端,用户根据该错误码可以进行异常处理或者进行告警告知用户(modbus协议栈的处理流程可以看2.5小节)
2.6.modbus协议栈报文处理流程
modbus协议栈,根据收到的报文先进行一系列的检查,才会进行数据的处理(其实和我们写代码一样,先进行边界检查,再处理)