易燃物汇聚 YouTube 有声书与书评
Modbus软件开发实战指南 封面

Modbus软件开发实战指南

杨更更

1581人在读
15.4万字总字数
¥41.3定价

内容简介

Modbus是工业自动化领域使用最广泛的通信协议之一,随着电子、计算机和通信技术的不断发展,特别是物联网以及“互联网+”等概念的兴起,Modbus通信技术也从串行总线发展到了Modbus TCP,方兴未艾。为了让广大在校学生、工业控制和自动化工程师、技术人员了解Modbus协议的内涵,特别是彻底掌握Modbus通信技术的软件开发方法,作者从初学者的角度,由浅入深,循循善诱,以文字和画面相结合的方式撰写了本书。本书分为11章,依次介绍了Modbus协议,特别是功能码消息帧的定义,然后从软件开发的角度,详细介绍了辅助调试工具、软件开发环境的构筑,重点介绍和解析了libmodbus开发库的源代码,以及使用libmodbus在不同语言环境下的开发技巧。阅读本书,可快速入门并精通Modbus软件开发技术。作为一本软件技术开发指南的书籍,本书不仅仅局限于Modbus通信协议,对其他通信协议的软件开发也有很强的参考价值。本书可作为各大中专院校、工程设计院、系统集成商和工厂企业的Modbus通信协议开发人员的软件设计和开发的入门指导书籍,也可作为工业自动化领域及物联网开发的参考资料,还可供广大自动化及通信专业的教师、学生及物联网开发爱好者阅读。

读者书评

★★★★★

难得的 modbus 中文学习资料,结合软件实操及 AI 导师有助于更快掌握。 读到 24%,发现华为阅读 APP 上有 2022 年出版的本书第 2 版,希望微信读书也能早日更新上架。

★★★★★

《Modbus软件开发实战指南》读书笔记 思维导图:https://www.processon.com/view/63eee59abcd4c21f5c55b87a#pc · 基本信息 o 是什么? § 是一种应用于电子控制器上的通用语言 § 此协议定义了一个控制器能够认识使用的消息结构,描述了控制器请求访问其他设备的过程,以及符合应答来自其他设备的请求、怎样侦测错误并记录,制定了统一的消息域的结构和内容 o 行业地位? § 已成为一种通用的工业标准 o 有什么用? § 通过此协议,可以实现控制器相互之间、控制器经=由网络和其他设备之间的通信 § 使用它,不同厂商生产的控制设备可以连接工业网络,进行几种监控 o 使用Modbus在网络上进行通信,需要什么? § 每个控制器需要知道: · 设备的地址 · 识别按地址发来的消息决定要产生何种行为 · 如果需要回应,控制器将生成什么反馈信息发送 o 有什么特点? § 标准开发,公开发表,无版税要求,可免费免责使用 § 支持多种电器接口,如RS232 RS485 TCP/IP 等;还可以在各种介质上传输,如双绞线 光纤 红外 无线等 § 消息帧格式简单 紧凑 通俗易懂;用户理解使用简单 厂商容易开发和集成 · 模拟软件 o 虚拟串口软件 Visual Serial Port Driver(VSPD) § 模拟多串口,支持所有的设置和信号线;通过操作虚拟串口,写入到一个虚拟COM端口的数据可以从另外一个COM端口读取,通过这种方式实现两个串口程序之间交换数据 § https://www.eltima.com/cn/products/vspdxp/ o 模拟 Modbus § Modbus 主站设备 · Modbus Poll § Modbus 从站设备 · Modbus Slave § https://www.modbustools.com/download.html · 参考 o 《Modbus软件开发实战指南》 o 《开放式IEC 61131 控制系统设计》 · 应用场景 o 在工业场景下使用 § 介质连接 · 使用 Modbus 协议,仅需要一根对绞线就可以连接很多现场设备,将所有数据传送到 Modbus 主站设备 § 网络方式连接 · 使用 Modbus 可以把现场设备连接到一个 DCS 过程控制系统,PLC(PLC 可编程逻辑控制器,Programmable Logic Controller)设备或工业计算机系统 · 整个工厂的连接都能够从对绞线控制室直连的方式转变成为 Modbus 的网络连接方式 o 网关设备支持 § Modbus 协议简单且容易复制,与复杂的使用有线、无线通信甚至短消息等的GPRS(General Packet Radio Service)的设计不同,这些设备要简单的多,但是需要克服高延迟和时许等问题 · 数据传输 o 基本信息 § 通信模式 · 串行链路(Serial Communication)连接 o 两个变种(传输数据的字节表示上的不同) § RTU(Remote Terminal Unit)模式 · 一种紧凑的,采用二进制表示数据的方式 · 确保数据传输的完整性和准确性 o 循环冗余校验的校验和 § ASCII(American Standard Code for Information Interchange,美国标准信息交换码)模式 · 一种人类可读的,冗长的表示方式 · 确保数据传输的完整性和准确性 o 纵向冗余校验的校验和 § 两种类型是互斥的,被配置为RTU模式的节点不能与配置为 ASCII 模型的节点通信,反之亦然 · TCP/IP (例如以太网)物理层连接 o 存在多个 Modbus/TCP 变种 o 不需要校验和的计算 · 数据模型和功能调用上都是相同的,只有传输报文封装方式不同 · Modbus RTU 和 Modbus TCP o 相同点 § 本质都是 Modbus 协议,都是依靠 Modbus 寄存器地址来交换数据 o 差异 § 使用硬件不同 · Modbus RTU 一般采用串口 RS-232 或 RS-485 · Modbus TCP 一般采用以太网口 § 数据 · 数据校验 o Modbus 需要对数据进行校验,铲形协议中除了奇偶校验,ASCII模式采用LRC校验,RTU模式采用16位CRC校验 o Modbus TCP 模式没有额外规定校验,因为TCP协议是一个面向可靠连接的协议,所以不需要CRC校验码 · 数据结构 o TCP和RTU协议非常类似,只要在RTU协议的开始加上5个 "00"和 1个"06",然后把RTU协议的最后两个CRC校验码去掉,并通过TCP/IP网络发送出去即可 · 扩展版本 o Modbus PLUS(Modebus+ 或 MB+) § MODICON 专有 § 通信结构 · 单主/多从(Master/Slave) o 结构 § 一个节点是Master § 一个或多个设备是 Slave · 使用 Modbus 协议参与通信的节点是 Slave 节点,每个设备都有一个唯一的地址 o 特点 § 总线上只能有一个主设备,可以有1~247个从设备(地址范围从1~247),剩下值是保留位 § Modbus 通信总是由主设备发起,当从设备没有收到来自该主设备的请求时,不会主动发送数据 § 从设备之间不能相互通信,主设备同时只能启动一个 Modbus 访问事务处理 o 通信模式区别 § 串行和MB+网络中 · 主节点才可以启动一个命令 § 以太网 · 任何一个设备都能发送一个 Modbus 命令,但通常也只有一个主节点设备用以引导指令 o 消息发送方式 § 主设备 · 单播模式 o 对指定单个从设备发送请求报文 · 广播模式 o 对线路上所有从设备发送请求报文,此模式下,Master请求指令必须是 Modbus 标准功能的写指令 § 从设备 · 被动接受请求报文给出响应报文 · 单播模式 o 应答,返回一个响应报文 · 广播模式 o 仅进行相关指令的事务处理,不要求返回应答 o 通信模式要求 § Modbus ASCII § Modbus RTU · 客户端/服务器(Client/Server) o 通信模式要求 § Modbus TCP o 没有额外规定校验,因为 TCP 协议是一个面向可靠连接的协议 o TCP 默认端口是 502 o 工作方式 § 请求/应答,每次通信都是主站先发送指令,可以是广播,也可以是向特定从站的单播 § 当主站不发送请求时,从站不会自己发出数据,从站与从站之间不能直接通信 o 帧结构 § 地址域 § 功能码 · 有效码字 o 十进制 1 ~ 255 · 异常响应保留 o 十进制 128~255 § 数据 § 差错校验 · 错误校验码 o 作用 § 确定到达的命令是否完整 · 注意 o 在 Modbus TCP 模式下,不存在差错校验字段 o 在某些特殊场合,如 串行 Modbus 协议转 Modbus TCP 的情况下,串行协议数据完整张载到 Modbus TCP 协议的数据字段,此时CRC或者是LRC差错校验字段仍然存在 § § Modbus RTU · 地址码 o 1字节 · 功能码 o 1字节 · 起始地址 o 2字节 o RTU协议采用3.5个字符的停顿时间作为指令的起始和结束 · 数据 o n字节 o 组成 § 数据长度 · 2字节,表示寄存器的个数 § 数据正文 · 数据长度 * 2字节 · 校验码 o 2字节 § Modbus TCP · 在RTU协议前面添加了MBAP报文头,共7个字节 · MBAP报文头 o 事务处理标识箱 § 2字节 o 协议标识符 § 2字节 o 长度 § 2字节 o 单元标识符 § 1字节 § Modbus RTU 和 Modbus TCP 报文结构 · Modbus RTU 和 Modbus TCP 数据帧结构 o · Modbus TCP 相比 RTU o 取消了校验位 o 地址域换成了协议标识符 § 当网络中的设备全部使用 TCP/IP 协议时,此地址没有意义,因为IP就能完成路由寻址 § 若网络里还有串行通信的设备,则需要网关来实现 Modbus TCP 到 Modbus RTU 或 ASCII 之间的协议转换,此时就可以用标识符标识网关后见每个串行通信设备 o 新增长度,指后面数据的字节数 § 为了应对某些情况下,TCP/IP 协议会对应用层的数据拆包传输 o 发送指令 § 命令结构 · 目标设备的 Modbus 地址 · 指令 § 流程 · 响应指令 o 只有指定地址的设备会执行并回应指令 · 其他 o 地址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会运行,不过不用回应指令 § 当Modbus协议用于更高级的网络时,改革宁波方式可能不被允许或以其他方式替代 · 寄存器 o 存放所有数据;非具体的物理寄存器,也可能是一块内存地址 o 分类 § 根据存放数据类型和读写特性,分为4个部分(可不连续) · 线圈状态(Coil Status) o 输出端口;可设定端口的输入状态,也可以读取该位的输出状态 o 可分为两种不同的执行状态,例如保持型或边沿触发型 · 电磁阀输出 MOSFET输出 LED显示等 · 拨码开关 接近开关 等 · 模拟量输出设定值 PID运行参数 变量阈输出大小 传感器报警上线 下限 · 模拟量输入 · 离散输入状态(Input Status) o 输入端口,通过外部设定改变输入状态 o 可读但不可写 · 保持寄存器(Holding Register) o 输出参数或保持参数,控制器运行时被设定的某些参数 o 可读可写 · 输入寄存器(Input Register) o 输入参数,控制器运行时从外部设备获得的参数 o 可读但不可写 · 与PLC类比 o 线圈状态 - DO 数字量输出 o 离散输入状态 - DI(数字量输入) o 保持寄存器 - AO (模拟量输出) o 输入寄存器 - AI (模拟量输入) o 地址 § 地址分配 § 寄存器 Modbus 协议地址 · 通信时使用的寄存器寻址地址 MBAP报文头地址分配

★★★★★

从串口通信到modbus协议都讲的很清楚,后面围绕libmodbus库的源码解析和几种编程语言中的开发应用都很好,可惜没有涉及python,有点遗憾!

★★★★★

工控互联用过modbus通信协议也开发过modbus通信调试工具,不管是调试应用还是封装开发,学习协议底层原理是永恒的真理

书籍信息

作者杨更更
出版社清华大学出版社
出版时间2017-04-01
ISBN9787302464754
分类计算机-计算机综合
格式EPUB
完结状态连载中
章节数151