Modbus通讯协议_北京和利时 下载本文

Modbus通讯协议简化

V1.x 2008-11-22

1 Modbus协议概述

Modbus协议是主从站通讯协议,用异步串行口完成通讯,物理层采用RS485或RS232。传输速率可以达到115kbps,理论上可接(寻址)一台主站和至多247台从站。受线路和设备的限制,实际最多可接一台主站和32台从站。

Modbus协议的某些特性是固定的,如帧格式、帧顺序、通讯错误和异常情况的处理,以及所执行的功能等,都不能随便改动。其他特性属于用户可选的,如传输介质、波特率、字符奇偶校验、停止位的个数等等,传输模式为RTU。用户所选择的参数对于各个站必须一致,在系统运行时不能改变。 1.1 Modbus协议传输模式

Modbus的传输模式:RTU方式。

表1-1 RTU传输模式的特性 特性 编码系统 每个字符的位数 起始位 数据位 奇偶校验位 停止位 校验和 1.2 帧

Modbus协议的帧(报文)格式:RTU帧。 下表是RTU传输模式的一般格式命令帧。

从站地址 8位

功能码 8位 数据 N*8位 校验和 16位 RTU 十六进制 1位 8位 0或1位 1或2位 CRC(循环冗余校验) 2 Modbus协议

2.1 通讯方式

Modbus有两种通讯方式:应答方式和广播方式。

应答方式是主站向某个从站(地址1~247)发出命令,然后等待从站的应答;从站接到主站命令后,执行命令,并将执行结果返回给主站作为应答,然后等待下一个命令。

广播方式是主站向所有从站发送命令(从站地址为0),不需要等待从站应答;从站接到广播命令后,执行命令,也不向主站应答。

除了会送诊断校验外,只有05、06、15、16这四项功能(见2.3节)对广播方式有效。

2.2 Modbus帧

Modbus的帧按应答方式分为命令帧(询问帧)和应答帧。命令帧为一般格式命令帧,应答帧有显长度帧和隐长度帧之分,图2-1、2-3、2-4给出了典型的帧格式。 从站地址 功能码 数据 数据起始寄存器高位 数据起始寄存器地位 数据寄存器高位 数据寄存器地位 校验和 图2-1 一般格式命令帧

从站地址 从站地址 2.2.1

从站地址字段

功能码 数据 校验和 图2-4 隐长度应答帧

帧中的从站地址字段表示接收主站报文的从站地址。当从站地址字段为0时,表示所有从站,此时的报文是广播报文。

用户必须设定每台从站的专用地址。只有被编址的设备才能对主机的命令(询问)做出应答。从站发送应答报文时,报文中地址的作用是向主站报告正在通讯的是哪台从站。

2.2.2

功能码字段

功能码 数据长度 图2-3 显长度应答帧

数据 校验和 功能码字段通知从站应执行何种功能。表2-1列出了功能码的意义和作用。2.3节给出了各个功能码对应报文的详细格式和功能。

表2-1 Modbus功能码 功能码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 名称 读取开出状态 读取开入状态 读取模出状态 读取模入状态 强制单路开出 强制单路模出 读取异常状态 回送诊断校验 编程 探询 读取事件计数 读取通讯事件记录 编程 探询 作用(对主站而言) 读取一组开关量输出的当前状态 读取一组开关量输入的当前状态 读取一组模拟量输出的当前状态 读取一组模拟量输入的当前状态 强制设定某个开关量输出的值 强制设定某个模拟量输出的值 取得从站的一些状态(8位) 把诊断校验报文送从站,以对通讯处理进行评鉴 主机模拟编程器的作用,修改从站逻辑 定期探询从站是否已完成某长程序任务 取得通讯状态和通讯事件的次数 取得通讯状态、事件次数、报文数量和至多64个事件 主机模拟编程器的作用,修改从站逻辑 定期探询从站是否已完成某长程序任务 15 16 17 18 19 20-72 73-119 120-127 128-255

2.2.3

强制多路开出 强制多路模出 报告从站标识 编程 重置通讯链路 保留 非法功能 保留 保留 强制设定几个开关量输出的值 强制设定几个模拟量输出的值 取得从站类型和运行指示灯的状态 主机模拟编程器的作用,修改从站逻辑 使从站复位于已知状态 留作扩展功能备用 留作内部使用 用作异常应答 数据长度字段

数据长度字段记录的是随后的数据字段的长度,单位为字符(字节)。数据字段的长度总是被规定为RTU模式下数据字符的总数,数据字符的数量总是按RTU模式下的数据字符计算。

2.2.4

数据字段

数据字段内含有从站执行某项具体功能的信息,或者含有从站应答询问的信息。这些信息可以是数值、地址参数或范围。例如,从哪路开关量或寄存器开始,处理几个开关量或寄存器的值等等。

2.2.5

校验和字段

校验和字段用于检查通讯报文在通讯过程中是否出错。 RTU模式传送时,用CRC-16校验,参见附录A。 2.2.6

Modbus RTU可以访问的数据区

Modbus RTU协议可以访问的PLC数据区包括: 输入区(I区)、输出区(Q区)、中间区(M区)

这三个数据区,均可通过BOOL型或者WORD型数据访问。这些数据区与Modbus协议地址映射关系,如表2-2所示。

表2-2 LM系列PLC数据区Modbus协议地址映射关系

数据区 类型 地址范围 I区 Q区 M%IX %IW %QX %QW %MX BOOL WORD BOOL WORD BOOL %IX0.0~%IX511.7 %IW0~%IW510 %QX0.0~%QX511.7 %QW0~%QW510 Modbus地址 0~4095 0~255 0~4095 0~255 映射公式 IXm.n:m*8+n IWm:m/2 QXm.n:m*8+n QWm:m/2 MXm.n:Modbus数据类型 1x 3x 0x 4x 0x %MX0.0~%MX7816.7 3000~65535