wMODBUS协议栈介绍:嵌入式系统中的Modbus协议实现

需积分: 15 3 下载量 85 浏览量 更新于2024-07-15 收藏 106KB PPTX 举报
wModbus介绍 wModbus协议栈是针对通用的Modbus协议栈在嵌入式系统中应用的一个实现。该协议栈可以挂载任意多个主机与从机,支持多个主机与多个从机同时独立运行。wModbus协议栈支持RTU/ASCII模式,支持串串口/网络模式。 wModbus协议栈支持多种功能码,包括: * 读输入寄存器 (0x04) * 读保持寄存器 (0x03) * 写单个寄存器 (0x06) * 写多个寄存器 (0x10) * 读/写多个寄存器 (0x17) * 读取线圈状态 (0x01) * 写单个线圈 (0x05) * 写多个线圈 (0x0F) * 读输入状态 (0x02) wModbus协议栈支持实时操作系统及裸机移植,並提供hook回调函数功能和通信统计功能。该协议栈的主机功能可以支持与任意非连续地址的从机进行通信,并提供多种请求模式,用户可以选择阻塞或非阻塞模式,自定义超时时间等,方便应用层灵活调用。 wModbus协议栈的作者吴远福提供了源码地址https://github.com/wuyuanfu240697738/wModbus,供开发者下载和使用。 Modbus简介 Modbus是一种主-从协议,在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。 Modbus主节点可以以两种模式对子节点发出Modbus请求:单播模式和广播模式。在单播模式中,主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个'应答')。在广播模式中,主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。 Modbus寻址空间有256个不同地址。地址0保留为广播地址。所有的子节点必须识别广播地址。Modbus主节点没有地址,只有子节点必须有一个地址。该地址必须在Modbus串行总线上唯一。 Modbus帧描述 Modbus协议映射在协议数据单元之外引入了一些附加的域。发起Modbus事务处理的客户端构造ModbusPDU,然后添加附加的域以构造适当的通信PDU。 功能码指明服务器要执行的动作。功能码后面可跟有表示含有请求和响应参数的数据域。错误检验域是对报文内容执行"冗余校验"的计算结果。根据不同的传输模式(RTU或ASCII)使用两种不同的计算方法。 RTU模式和TCP模式的对比 ModbusRTU和ModbusTCP读指令对比指令的涵义:从地址码为01(TCP协议单元标志为00)的模块0x1。