Modbus 协议 完全笔记 —— STM32F103 标准库(USART+RS485)实现
帧格式 + 数据模型 + CRC16校验 + 从站实现(IDLE中断检测帧边界)说明:这篇笔记建立在"UART/RS232/RS485区别与自定义协议笔记"的基础上, RS485的硬件收发方向控制(DE/RE + TC标志)那部分不再重复,直接复用, 这篇重点讲Modbus这个"业界标准协议"跟我们自己设计的自定义协议在 帧结构、帧边界判断方式上有什么本质不同。一、Modbus 是什么?先建立准确的直觉1.1 Modbus 的地位Modbus是1979年由Modicon公司(现施耐德电气)发布的一套工业通信协议, 发布时间早、结构简单、完全公开(不收专利费), 经过几十年的沉淀,事实上已经成为工业自动化领域应用最广泛的通信协议之一, 传感器、PLC、变频器、电表、各种现场仪表,大量都支持Modbus协议, 好处是不同厂家的设备只要都遵循Modbus协议,就能互相通信,不需要各家单独适配。 这也是为什么"自定义协议"和"Modbus协议"的选择逻辑不太一样—— 之前"UART/RS485笔记"里讲的自定义协议,胜在灵活、完全按自己的需求设计; Modbus胜在"通用",如果你的设备需要跟别的品牌设备互联互通 (比如你做的传感器要接入客户现成的工业组态软件/PLC系统), 用Modbus协议几乎是必选项,不是"能不能自己设计更好协议"的问题, 而是"对方系统只认Modbus"的现实要求。1.2 主从架构(Master-Slave)Modbus是严格的主从(Master-Slave,新版规范里也叫Client-Server)架构