1、简介:modbus协议是施耐德发明的一种专用于工业现场的总线协议。ModBus 网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专
用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。
总结:基于232/485物理层以上的数据协议。采用主从结构,主机可以访问总线上所有设备,丛机不可以主动和主机通信,丛机之间不可以通信。
主机发送modbus数据-》从机
从机收到数据,应答--正确应答--功能码不一样,格式不一样。设备号+功能码+数据+CRC校验
错误应答--设备码+差错码+异常码+CRC校验
差错码--0X80+功能
异常码--01,02,03,04
数据具体格式:RTU,ASCII
数据具体格式:
2、modbus协议概述
按照7层OSI通信模型,modbus标准包括应用层、数据链路层(串行链路协议)、物理层。
Modbus 串行链路协议是一个主/从协议。该协议位于 OSI 模型的第二层。一个主从类型的系统有一个向某个“子”节点发出显式命令并处理响应的节点(主节点)。典型的子节
点在没有收到主节点的请求时并不主动发送数据,也不与其它子节点通信。在物理层,Modbus 串行链路系统可以使用不同的物理接口(RS485、RS232)。最常用的是TIA/EIA-485 (RS485) 两线制接口。
3、Modbus 主 站/ / 从 站 协 议 原 理
Modbus 串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子
节点 (最大编号为 247 ) 连接于同一个串行总线。Modbus 通信总是由主节点发起。子节点在没有收到
来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个
Modbus 事务处理。
主节点以两种模式对子节点发出 Modbus 请求:
单播模式
主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个
'应答')。在这种模式,一个 Modbus 事务处理包含 2 个报文:一个来自主节点的请求,一个来自子节
点的应答。
每个子节点必须有唯一的地址 (1 到 247),这样才能区别于其它节点被独立的寻址。
广播模式
主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。
所有设备必须接受广播模式的写功能。地址 0 是专门用于表示广播数据的。
0--广播地址
1~247子节点单独地址
248~55保留地址,给某些大厂使用,如IDM、NXP
Modbus 主节点没有地址,只有子节点必须有一个地址。 该地址必须在 Modbus 串行总线上唯一。
4、Modbus 协议数据单元(PDU)
发起 Modbus 事务处理的客户端构造 Modbus PDU,然后添加附加的域以构造通信 PDU。
在 Modbus 串行链路,地址域只含有子节点地址。
如前文所述,合法的子节点地址为十进制 0 – 247。 每个子设备被赋予 1 – 247 范围中的地址。
主节点通过将子节点的地址放到报文的地址域对子节点寻址。当子节点返回应答时,它将自己的地址放到
应答报文的地址域以让主节点知道哪个子节点在回答。
功能码指明服务器要执行的动作。功能码后面可跟有表示含有请求和响应参数的数据域。
错误检验域是对报文内容执行 "冗余校验" 的计算结果。根据不同的传输模式 (RTU or ASCII) 使用
两种不同的计算方法。
5、两种串行传输模式被定义: RTU 模式 和 ASCII 模式。
它定义了报文域的位内容在线路上串行的传送。它确定了信息如何打包为报文和解码。
Modbus 串行链路上所有设备的传输模式 (和串行口参数) 必须相同。
尽管在特定的领域 ASCII 模式是要求的,但达到 Modbus 设备之间的互操作性只有每个设备都有
相同的模式: 所有设备必须实现 RTU 模式。ASCII 传输模式是选项。
当设备使用 RTU (Remote Terminal Unit) 模式在 Modbus 串行链路通信,报文中每个 8 位字节含
有两个 4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比 ASCII 模式有更
高的吞吐率。每个报文必须以连续的字符流传送。
RTU 模式每个字节 ( 11 位 ) 的格式为 :1+8+1+1,1 起始位、8 数据位, 首先发送最低有效位。1 位作为奇偶校验、1 停止位。
偶校验是要求的, 其它模式 ( 奇校验, 无校验 ) 也可以使用。 为了保证与其它产品的最大兼容性,
同时支持无校验模式是建议的。默认校验模式模式 必须为偶校验。注 : 使用无校验要求 2 个停止位,如果无奇偶校验,将传送一个附加的停止位以填充
字符帧。