网站开发熬夜么,个人网站作品,wordpress lamp lnmp,thinkphp做企业网站本文参考#xff1a;Modbus协议中文版【完整版】.pdf#xff0c;加上自己的理解的记录#xff0c;该文章主要讲modbus-TCP协议。#xff08;文档下载链接#xff1a;【免费】modbus协议中文详细解释文档资源-CSDN文库#xff09;
本系列文章分为三章#xff1a;
1.mod…本文参考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 引言 MODBUS 是 OSI 模型第 7 层上的应用层报文传输协议它在连接至不同类型总线或网络的设备 之间提供客户机 / 服务器通信。 自从 1979 年出现工业串行链路的事实标准以来 MODBUS 使成千上万的自动化设备能够通信。 目前继续增加对简单而雅观的 MODBUS 结构支持。互联网组织能够使 TCP/IP 栈上的保留系统端 口 502 访问 MODBUS 。 MODBUS 是一个请求 / 应答协议并且提供功能码规定的服务。 MODBUS 功能码是 MODBUS 请求 / 应答 PDU 的元素。 通俗理解modbus协议是基于tcp/ip的一个c/s模型的应用层协议 由Modicon公司开发大众协助而成的一个应用层协议其实和我们平时做的应用层通信很类似没什么难度。 2.modbus报文帧
2.1.报文格式 MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元PDU。特定总线或网络上 的 MODBUS 协议映射能够在应用数据单元ADU上引入一些附加域。 注意个人认为文档里面这个ADU和PDU画反了但不影响解读 2.1.1.ADU报文长度 RS232 / RS485 ADU 253 字节 服务器地址 (1 byte) CRC (2 字节 ) 256 字节 。 TCP MODBUS ADU 249 字节 MBAP (7 字节 ) 256 字节 。 注如果只是了解报文这个长度不需要关心如果想阅读协议栈源码需要留意一下 2.2.报文字段含义 地址域以太网里面的TCP/IP的头部数据进行标识以太网里面的哪个设备 差错检验以太网里面的校验 modbus-ADU功能码 数据 功能码标识该modbus报文是干嘛的对数据有标识作用 数据用户的数据在某种请求中 数据域可以是不存在的0 长度在此情况下服务器不需要任何附加信息。功 能码仅说明操作 2.3.MODBUS 数据模型
modbus数据存储主要是寄存器和线圈为什么叫线圈是因为电气开关的原因 2.4.功能码
2.4.1.功能码分类 有三类 MODBUS 功能码。它们是 公共功能码公认的功能码不可以去修改不然会不兼容其他设备用户定义功能码由用户自定义的功能码不同用户定义不同保留功能码 。 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协议栈根据收到的报文先进行一系列的检查才会进行数据的处理其实和我们写代码一样先进行边界检查再处理