YADA-R&D1105 V2.0 2012年 3 月 12 日 第1页,共8页
YD9111 Modbus-RTU Communication Protocal
广东雅达电子股份有限公司
YD9111三交流电压数显表通讯规约
1. 引言
YD9111三交流电压数显表通讯规约详细描述了本机串行口通讯的读、写命令格式及内部信息数据的定义,以便第三方开发使用。 1.1.
PLC ModBus 兼容性
ModBus通讯规约允许YD9111三交流电压数显表与施耐德、西门子、AB、GE、Modicon等多个国际著名品牌的可编程顺序控制器(PLC)、RTU、SCADA系统、DCS或第三方具有ModBus兼容的监控系统之间进行信息和数据的有效传递。有了YD9111三交流电压数显表,就只要简单的增加一套基于PC(或工控机)的通讯主控显示软件(如:组态王、Intouch、FIX、synall等)就可建立一套监控系统。 1.2.
广泛的通讯集成
YD9111三交流电压数显表提供与Modicon系统相兼容的ModBus通讯规约,这个通讯规约被广泛作为系统集成的标准。兼容RS-485/232C接口的可编程逻辑控制器ModBus通讯规约允许信息和数据在YD9111三交流电压数显表与Modicon可编程逻辑控制器(PLC),RTU、SCADA系统、DCS系统和
另外兼容ModBus通讯规约的系统之间进行有效传递。 2. ModBus基本规则 2.1.
所有RS485通讯回路都应遵照主/从方式。依照这种方式,数据可以在一个主站(如:
PC)和32个子站(如:YD9111三交流电压数显表)之间传递。 2.2. 2.3. 2.4. 2.5.
主站将初始化和控制在RS485通讯回路上传递的所有信息。 任何一次通讯都不能从子站开始。
在RS485回路上的所有通讯都以“信息帧”方式传递。
如果主站或子站接收到含有未知命令的信息帧,则不予以响应。
“信息帧”就是一个由数据帧(每一个字节为一个数据帧)构成的字符串(最多255个字节),是由信息头和发送的编码数据构成标准的异步串行数据,该通讯方式也与RTU通讯规约相兼容。 3. 数据帧格式:
通讯传输为异步方式,并以字节(数据帧)为单位。在主站和子站之间传递的每一个数据
文件编号 版本
YADA-R&D1105 V2.0 2012年 3 月 12 日 第2页,共8页
YD9111 Modbus-RTU Communication Protocal 帧都是11位的串行数据流。
数据帧格式: 起始位 数据位 停止位
1位
8位(低位在前、高位在后)
1位:有奇偶校验位;2位:无奇偶校验位
广东雅达电子股份有限公司
奇偶校验位 1位:有奇偶校验位;无:无奇偶校验位 有校验位的时序图:
止起D0D1D2D3data数据位D4D5D6D7D8parity校验位止start起始位end停止位
无校验位的时序图: 止起D0D1D2D3data数据位D4D5D6D7止start起始位end停止位
4. YD9111三交流电压数显表通讯规约
当通讯命令发送至仪器时,符合相应的地址码的设备接收通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后的数据以及错误校验码(CRC)。如果出错就不发送任何信息。 4.1.
START 初始结构
延时(相当于4个字节的时
间) 4.1.1.
ADD 地址码 1字节 8位
CS 功能码 1字节 8位
DATA 数据区
N字节 N×8位
CRC 错误校验
2字节 16位
END 结束结构
延时(相当于4个字节的时
间)
信息帧格式
地址码(ADD)
地址码为每次通讯传送的信息帧中的第一个数据帧(8位),从0到255。这个字节表明由用户设定地址码的子机将接收由主机发送来的信息。并且每个子机都有唯一的地址码,并
文件编号 版本
YADA-R&D1105 V2.0 2012年 3 月 12 日 第3页,共8页
YD9111 Modbus-RTU Communication Protocal 且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的子机地址,而子机发送的地址码表明回送的子机地址。 4.1.2.
功能码(CS)
广东雅达电子股份有限公司
功能码是每次通讯传送的信息帧中的第二个数据帧。ModBus通讯规约定义功能码为1~127(01H~7FH)。YD9111三交流电压数显表利用其中的一部分功能码。作为主机请求发送,通过功能码告诉子机执行什么动作。作为子机响应,子机发送的功能码与主机发送来的功能码一样,并表明子机已响应主机进行操作。如果子机发送的功能码的最高位是1(功能码>127),则表明子机没有响应或出错。
下表列出的功能码都具体的含义及操作。
MODBUS部分功能码
功能码 03H 06H
1、 03,读寄存器
定义 读寄存器
操作
读取一个或多个寄存器的数据
写单个寄存器把一个16位二进制数写入单个寄存器 YD9111三交流电压数显表采用ModBus通讯规约,利用通讯命令,可以进行读取点
(保持寄存器或返回值输入寄存器)。功能码03H映射的数据区的保持和输入寄存器值都是16位(2字节)。
子机响应的命令格式是子机地址、功能码、数据区及CRC码。数据区的数据都是每2个字节为一组的双字节数,且高字节在前。
2、 06,写单个寄存器:
主机利用这条命令把单点数据保存到YD9111三交流电压数显表的存储器。子机也用这个功能码向主机返送信息。 4.1.3.
数据区(DATA):
数据区随功能码不同而不同。由主机发送的读命令(03H)信息帧的数据区与子机应答信息帧的数据区是不同的,由主机发送的写命令(06H、10H)信息帧的数据区与子机应答信息帧的数据区是完全相同。数据区包含需要子机执行什么动作或由子机采集的需要回送的信息。这些信息可以是数值、参考地址等等。例如,功能码告诉子机读取寄存器的数值,则数据区必须包含要读取寄存器的起始地址及读取长度(寄存器个数)。
文件编号 版本
YADA-R&D1105 V2.0 2012年 3 月 12 日 第4页,共8页
YD9111 Modbus-RTU Communication Protocal
1、 与功能码03对应的数据区格式:
主机发送
数据顺序 数据含义 字节数
子机应答
数据顺序 字节数
2、 与功能码06对应的数据区格式:
数据顺序 数据含义 字节数
3、 与功能码10对应的数据区格式:
数据顺序 数据含义 字节数
4.1.4.
错误校验码(CRC):
1 起始地址
2
2 写入数据1
2
… …
N 写入数据N 1 起始地址
2
2
写入寄存器的数据
2
1 1
2
N个寄存器的数据
2×N
1 起始地址
2
2 读寄存器个数
2
广东雅达电子股份有限公司
数据含义 回送字节数
… 2
主机或子机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其他一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或子机对在传送过程中出错的信息不起作用。这样增加了系统的安全和效率。错误校验码采用CRC-16校验方法。
二字节的错误校验码,低字节在前,高字节在后。
信息帧的格式都是相同的:地址码、功能码、数据区和错误校
注意:
验码。
4.2.
错误校验
冗余循环码(CRC)包含2个字节,即16位二进制。CRC码由发送端计算,放置于发送信息的尾部。接收端的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果二者不相符,则表明出错。
文件编号 版本
YADA-R&D1105 V2.0 2012年 3 月 12 日 第5页,共8页
YD9111 Modbus-RTU Communication Protocal
CRC码的计算方法是,先预置16位寄存器全为。再逐渐把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位,起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计算。
在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一位,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。
这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相异或,这个过程与上以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。 4.3.
CRC-16码的计算步骤
广东雅达电子股份有限公司
1、 置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器。 2、 把一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器。 3、 把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位(移出位)。 4、 如果最低位为0:复第3步(再次移位)。
如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或。 5、 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。 6、 重复步骤2到步骤5,进行下一个8位的处理。
7、 最后得到的CRC寄存器即为CRC码,低字节在前,高字节在后。 4.4. 4.4.1.
信息帧格式举例 功能码03
子机地址为01,起始地址0000的3个寄存器。 此例中寄存器数据地址为:
地 址 0000 0002 0004
主机发送 子机地址
字节数 1
01
举 例(16进制) 送至子机01 数据(16进制)
1388 1388 1388
文件编号 版本
YADA-R&D1105 V2.0 2012年 3 月 12 日 第6页,共8页
YD9111 Modbus-RTU Communication Protocal
功能码 1 03 读取寄存器
起始地址
读取个数
CRC码
子机响应 子机地址 功能码 读取字节数 寄存器数据1
寄存器数据2
寄存器数据3
CRC码
4.4.2.
功能码06
字节数 1 1 1 2 2 2 2
01 03 06 13 88 13 88 13 88 4A 31
举 例(16进制) 送至子机01 读取寄存器
3个寄存器(共6字节) 地址为0000内的内容
地址为0002内的内容
地址为0004内的内容
由子机计算得到的CRC码
2 2 2
00 00 00 03 05 CB
起始地址为0032
读取3个寄存器(共6字节)
由主机计算得到的CRC码
广东雅达电子股份有限公司
子机地址为01, 地址为1,修改上限阀值为5000.
主机发送 子机地址 功能码 起始地址
保存数据
CRC码
子机响应 子机地址 功能码 起始地址
保存数据
字节数 1 1 2 2
01 06 03 02 13 88
举 例(16进制)
来自子机01 单点保存 起始地址为0302
保存的数据为5000
字节数 1 1 2 2 2
01 06 03 02 13 88 25 18
举 例(16进制) 发送至子机01 单个数据(2字节)保存 起始地址为0302
保存的数据为5000
由主机计算得到的CRC码
文件编号 版本
YADA-R&D1105 V2.0 2012年 3 月 12 日 第7页,共8页
YD9111 Modbus-RTU Communication Protocal
CRC码 2 25 由子机计算得到的CRC码
4.5.
出错处理
当YD930B数显表检测到了CRC码出错以外的错误时,必须向主机回送信息,功能码的最高位置为1,即子机返送给主机的功能码是在主机以送的功能码的基础上加128。以下的这些代码表明有意外的错误发生。
从主机接收到的信息如有CRC错误,则将被YD930B数显表忽略。
子机返送的错误码的格式如下(CRC码除外) 地址码: 功能码: 错误码: CRC码:
1字节
1字节(最高位为1) 1字节 2字节
YD9111三交流电压数显表响应回送如下出错命令 01 02 03
5. 通讯地址
附录1:数据和地址
表1:功能码03H所映射的数据区-基本数据:
基本数据(Basic)
地址(Address) 0000H 0002H 0004H 0006H
表2:功能码06H所映射的数据区:
项目(Item) A相测量数据 B相测量数据 C相测量数据 小数点位置
说明
乘变比之前
非法的功能码。
接收到的功能码YD9111三交流电压数显表不支持。 非法的数据位置。
指定的数据位置超出YD9111三交流电压数显表范围 非法的数据值
接收到主机发送的数据值超出相应地址的数据范围。
18
广东雅达电子股份有限公司
文件编号 版本
YADA-R&D1105 V2.0 2012年 3 月 12 日 第8页,共8页
YD9111 Modbus-RTU Communication Protocal
项目Item 起始地址 Start address取值范围Value 单位Unit 地址 波特率 PT
03 00H 03 08H 03 12H
1-32 0-4 1~000
广东雅达电子股份有限公司
注意:00 00 寄存器地址对应的测量数据寄存器无法写入,只能读出。 03 00 寄存器地址对应的本机地址只能写入修改值,无法读出。
通讯采用ModBus规约N81格式(8个数据位、一个停止位、没有校验位)。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务