Modbus协议_试验台控制设备基础协议2016-10-28更新

一、Modbus串行链路协议基本要求

物理层RS232 接口或 RS485 接口:RJ45/DB 9 连接器与电缆相接数据信号发送速率:要求 9600bps 波特率,推荐 19200bps 波特率 串行链路系统上的Modbus 只应用于短距离(<20m)点到点的互连Modbus 串行链路电缆必须屏蔽。在电缆两端,其屏蔽必须接到保护地上(若在这个端部使用了连接器,该连接器外壳要连在电缆屏蔽上)

可视诊断必须用 LED(发光两极管)指示通信状态和设备状态。;二、Modbus串行链路帧模式

RTU传输模式(建议采用)当设备使用RTU(RemoteTerminalUnit)模式在Modbus串行链路通信,报文中每个8位字节 含有两个4位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比 ASCII模式有更高的吞吐率。每个报文必须以连续的字符流传送。

RTU模式位序列报文中每个8位字节含有???个4位十六进制字符(0–9,A–F),每个字符传送11位。 1起始位 8数据位,首先发送最低有效位 1位作为奇偶校验(默认偶校验) 1 停止位(注:使用无校验要求 2 个停止位。) ;报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC高字节为 报文发送的最后一个子节。其实现的C语言程序附后。;4;三、Modbus事务处理和功能码

Modbus事务处理(含异常码生成);常用功能码(公共功能码);1 读线圈在一个远程设备中,使用该功能码读取线圈的1至2000连续状态。请求PDU详细说明了起始 地址(高字节在前,后同),即指定的第一个线圈地址和线圈编号,从零开始寻址线圈。线 圈数量(高字节在前)指示需访问线圈个数。 数据域每个比特指示状态为1=ON和0=OFF。第一个数据字节的LSB(最低有效位)指向起 始地址的线圈,其它线圈依次类推,一直到这个字节的高位端为止,并在后续字节中从低位 到高位的顺序。如果返回的线圈数量不是8的倍数,将用零填充最后数据字节中的剩余比特(一直到字节的高位端)。 ;5写单个线圈

在一个远程设备上,使用该功能码写单个输出为ON或OFF。 请求PDU说明了线圈地址,从零开始寻址线圈。线圈值域的常量说明请求的ON/OFF状态。 十六进制值0XFF00请求线圈为ON。十六进制值0X0000请求线圈为OFF。其它所有值均为非法 的,并且对线圈不起作用。 ;43读设备识别码这个功能码允许读取与远程设备的物理描述和功能描述相关的识别码和附加报文。 将读设备识别码接口模拟为一个地址空间,这个地址空间由一组可寻址数据元素组成。数据元素是被叫对象,并且对象Id确定这个数据元素。 接口由3种对象组成: 基本设备识别码。 所有此种对象都是必备的:厂商名称、产品代码和修订本号。 正常设备识别码。 除基本数据对象以外,设备提供了附加的和可选择的识别码以及数据对象描述。按标准 定义所有种类的对象,但是这种对象的执行是可选的。 扩展设备识别码。 除正常数据对象以外,设备提供了附加的和可选的识别码以及专用数据描述。所有这些 数据都是与设备有关的。可只选设计基本设备识别码。;对象 Id:;11