ModBus通讯规约(三明)

RS485Modbus_RTU

中华人民共和国制造计量器具许可证

量制闽字(89)04000117

三明市无线电八厂

厂址:福建三明市列东街梅岭新村24幢邮编:365000 电话:0598-******* 8254468 8244496 传真:8259496

Modbus_RTU通讯规约

(本协议采用主从问答方式)

一、Modbus通讯协议概述

Modbus通讯规约允许TDS系列仪表/变送器与施耐德、西门子、AB、GE等多个国际著名品牌的可编程顺序控制器(PLC)、RTU、SCADA系统、DCS或与第三方具有Modbus兼容的监控系统之间进行信息交换和数据传送。

TDS系列仪表/变送器只要简单地增加一套基于计算机(或工控机)的监控软件(如:组态王、Intouch、iFIX、synall等)就可以构成一套工况监控系统。

1、广泛的系统集成

TDS系列仪表/变送器提供了标准的RS-485/422通讯接口及ModBus通讯协议,这个通讯协议已广泛被国内外工控行业作为系统集成的标准。

2、通讯数据的类型及格式

●信息传输为异步方式,并以字节为单位。主站和从站之间传递的通讯信息为

1:10位格式:(1位起始位,8位数据位,1位停止位,无奇偶校验)

2:11位格式:(1位起始位,8位数据位,2位停止位,无奇偶校验)

3:11位格式:(1位起始位,8位数据位,1位停止位,1位奇校验)

4:11位格式:(1位起始位,8位数据位,1位停止位,1位偶校验)

仪表出厂按第2种方式,11位格式:(1位起始位,8位数据位,2位停止位,无奇偶校验),设置方法参看详细的使用说明书。仪表无此项设置参数为第2种方式。

发送数据之前要求数据总线静止时间(即无数据时间)大于3.5个字节,可以通过传

输波特率计算(9600bps约为5ms),信息帧中表示为起始结构(T1–T2–T3–T4),T1、T2、T3、T4分别代表一个字节的静止时间。当最后一个字节传输完,数据总线静止时间(即无数据时间)还需大于3.5个字节后,才可以开始发送新的数据,信息帧中表示为停止结构(T1–T2–T3–T4)。一条完整的信息帧必须是连续的信息流,字节间的间隔时间小于1.5个字节。

TDS系列仪表/变送器收到完整的信息帧后延时250ms左右将数据连续送出,当收到本机地址码、正确的功能码后,但无法接收全后面的完整数据信息帧则在2秒左右后回复初始接收状态。

★注:1、1个字节由8位二进制数组成(既8 bit)。

2、ModBus是Modicon公司的注册商标。

3、“从机”在本文件中既为TDS系列仪表/变送器。

二、通讯信息传输过程

当通讯命令由发送设备(主机)发送至接收设备(从机)时,在CRC校验无误情况下,从机地址与地址码相符的从机接收通讯命令(TDS系列仪表/变送器以本机的地址码和功能码2个字节作为同步字),并根据功能码及相关要求处理信息,执行相应的任务,然后把执行结果(数据)返送给主机。返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。如果CRC校验出错就不返回任何信息。

TDS系列仪表/变送器Modbus协议的数据地址表中数据地址使用直接地址,在组态软件中通讯口可选用莫迪康(Modicon)PLC的RTU,对应的地址如下:

02 功能Read Input Status,10001对应0000H。

03 功能Read Holding Registers,40001对应0000H地址。

05 功能Force Single Coil,00001对应0000H地址。

06 功能Preset Single Register,40001对应0000H地址。

10 功能Preset Multiple Registers,40001对应0000H地址。

但组态软件产生的通讯报文都是直接地址,与功能码说明中的报文是一致的。

如:TDS-0400~6400智能数字温度巡检控制仪中的数据地址表中

读或写寄存器:如地址0000H~003FH对应40001~40064。

读开关量:如地址0400H~043FH对应11025~11088,0440H~047FH对应11089~11152。写开关量:如地址0300H~033FH对应00769~00832。

1、地址码

地址码是每次通讯信息帧的第一字节(8位),从01H到FFH。每个从机都必须有

唯一的地址码,仪表说明书中将这唯一的地址码称为“从机号”或“从机地址”。所有地址的从机都将接收由主机发送来的信息,只有符合地址码的从机才响应要求,回送信息。当从机回送信息时,回送数据均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。

2、功能码

是每次通讯信息帧传送的第二个字节。ModBus通讯规约可定义的功能码为0到127。TDS系列仪表/变送器仅用到其中的一部分功能码。作为主机请求发送,通过功能码告诉从机应执行什么动作。作为响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。

3、数据区

数据区包括需要由主机发送、从机回送何种信息或执行什么动作。这些信息可以是数据(如:开关量、模拟量、仪表参数设置值等)或参考地址等。如:主机通过功能码03告诉从机返回单路或多路工况数据寄存器的值或“单路或多路控制/报警设置值(包括要读取寄存器的起始地址及读取寄存器的长度等),则返回的数据包括寄存器的数据长度及数据内容。对于不同型号的仪表/变送器,寄存器地址和数据信息都不相同(见数据地址表)。

●功能码03 HEX、06 HEX、10 HEX读取或写“寄存器”,每个地址为一个寄存器,一个寄存器为16位(2 字节)的二进制数据(整型),高位在前、低位在后,最高位为符号位,其后15位数据位。(如1500D →05DCH;-500D →81F4H)。

数据地址表如果不作特别说明,则数据的通用转换方法为:

小数点在十位,仪表回送的工况数据都是整数,上位机如果转换为实型,可以除十处理,如果转换成字符串型,可以直接将小数点插入在十位。

如1:工况温度值=60.0,小数点在十位

25816 = 00000010010110002

仪表回送数据=600

10 =

如2:温度值=-60.0,小数点在十位

仪表回送数据=-600

825816 = 10000010010110002

10 =

小数点在百位,如果转换为实型,可以除百处理,如果转换成字符串型,可以直接将小数点插入在百位。

●功能码02 HEX、05 HEX读/写开关量,数据都为开关量,每个地址为一个位,以bit 位为单位。从机数据返回是以bit 位为单元的二进制数组成(即8 bit 为1个字节)多字节数据。

TDS响应的命令格式是从机地址、功能码、数据区及CRC码。数据区的数据为多字节开关量数据或模拟量数据。

三、Modbus功能码介绍

以64路TDS仪表为例作如下说明

1、功能码02 HEX:读开关量

开关量状态:1为ON,0为OFF。

例如:从机其中的48路开关量设定数据(内容:10110001B(1-8路由右到左),01110011B,10100110B,11111011B,00010101B,11001101B),主机要读取从机地址为01的从机第3路到第22路巡检状态开关量设置数据,数据地址为0302H开始20bit 位(内容:11101100B,10011100B,XXXX1001B)。(未参加巡检时,该路数的开关量数据0)

主机发送的报文格式

从机(TDS)响应返回的报文

2、功能码03 HEX:读多路寄存器

例如:从机地址01的工况数据值(仪表测量到的数据,如温度、压力等)如下表,

0000H)

主机要读取从机地址为01,数据地址为0000H开始的3路工况数据。

从机(TDS)响应返回的报文格式

3、功能码05 HEX:写开关量

数据FF00H为ON,数据0000H为OFF。

例如:主机要设置从机地址为01的从机第9路参加巡检(数据FF00H代表ON该路参加巡检;数据0000H代表OFF该路不参加巡检)。

4、功能码06 HEX:写单路寄存器

主机利用这个功能码把单路二进制控制/报警设置数据保存到从机的数据存储器中去(寄存器)。例如:主机要把04B0H保存到从机第6路上上限寄存器中去(从机地址码为01)。通讯数据保存结束后,TDS表内第6路上上限为04B0H:主机发送数据地址和数据为:

主机发送的报文格式

从机(TDS)响应返回的报文格式

5、功能码10 HEX:写多路寄存器

主机利用这个功能码把多路二进制控制/报警设置数据保存到从机的数据存储器中去(寄存器)。例如:主机要把04B0H,保存到从机第1路上限寄存器中去;1388H保存到从机第2路上限寄存器中去(从机地址码为01)。通讯数据保存结束后,TDS表内第1路上限为04B0H;、第2路上限为1388H:

主机发送数据地址和数据为

主机发送的报文格式

从机(TDS)响应返回的报文格式

四、错误校验码(CRC校验)

主机或从机可用校验码进行判别接收信息是否正确。由于电子噪声或一些其它干扰,信息在传输过程中有时会发生错误,错误校验码(CRC)可以检验主机或从机在通讯数据传送过程中的信息是否有误,错误的数据可以放弃(无论是发送还是接收),这样增加了系统的安全和效率。

MODBUS通讯协议的CRC(冗余循环码)包含2个字节,即16位二进制数。CRC 码由发送设备(主机)计算,放置于发送信息帧的尾部。接收信息的设备(从机)再重新计算接收到信息的CRC,比较计算得到的CRC是否与接收到的相符,如果两者不相符,则表明出错。

在进行CRC计算时只用8个数据位,起始位、停止位和奇偶校验位都不参与CRC 计算。

CRC码的计算方法

1、预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存

器;

2、把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC 寄存器

的低8位相异或,把结果放于CRC寄存器;

3、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查最低位(LSB

位被提取出来检测);如果最低位为1:移位后CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;如果最低位为0:不作处理;

4、重复步骤3,直到右移8次,这样整个8位数据全部进行了处理;

5、重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;

6、最后得到的CRC寄存器内容即为:CRC码。

注意:报文中的CRC码低八位(低字节)在前,高八位(高字节)在后。

Pascal高级语言直接计算CRC码举例如下:

// 输入参数:Cauarray计算的报文字节数组,Count字节数,函数返回CRC码。Function CauCRC(CauArray:array of byte:Count:byte):word:

var TempCRC:Word://存放CRC计算的临时变量。

CRC :Word://存放CRC码。

RCRC :Word://判定最低位为1的临时变量。

i,j :Word:

begin

CRC :=$FFFF:

for i:=0 to Count-1 do

begin

TempCRC := (CRC and $00FF) xor CauArray[i]:

TempCRC := TempCRC or (CRC and $FF00):

for j:=1 to 8 do

begin

RCRC := TempCRC and $0001:

TempCRC := TempCRC and $FFFE:

TempCRC := TempCRC shr 1:

if RCRC =1 then TempCRC := TempCRC xor $A001:

end:

CRC := TempCRC:

end:

Result:= CRC:

end:

五、通讯错误信息及数据的处理

当从机检测到除了CRC码出错以外的错误时,必须向主机回送信息,功能码的最高位置为1,即从机返送给主机的功能码是在主机发送的功能码的基础上加128 。以下的这些代码表明有意外的错误发生。

从机(TDS)接收到的信息如有CRC错误,则将被从机忽略,不返回信息。

从机(TDS)返送的错误码的格式如下(共5个字节):

地址码:1字节

功能码:1字节(最高位为1,例:03H功能码变为83H)

错误码:1字节

CRC码:2字节

从机(TDS)响应回送如下错误码:

81:非法的数据地址。

指定的数据地址超出从机“数据地址表”的范围或不在从机“数据地址表”

的范围。

82:非法的数据值。

接收到主机发送的数据值超出从机“数据地址表”相应数据地址的数据可

改范围。

如从机(TDS)01正确收到主机报文,但数据地址不在其“数据地址表”范围。则从

附录1:TDS-0400~6400智能数字巡检控制仪数据地址表

说明:

1、工况数据就是指仪表测量到的数据,如温度、压力等

2、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。输入

信号为热电阻的(cu50、Pt100),小数点固定在十位。

3、开关量为位地址单元,一个地址存放一位(bit)。

4、读取的寄存器数据路数不能超过仪表设定的“巡检总路数”,否则回送错误码:81

-非法的数据地址。可以使用“消隐路数”(仪表设置参数)去掉不要的巡检路,如:TDS-163377M只需要前14路,必须保持“巡检总路数”(仪表设置参数)为16路,然后将15、16路“消隐”(仪表设置参数),具体操作请参看仪表说明书。

5、对于消隐的路,也就是不参加巡检的路(仪表可设定),该路回送工况数据值为0.0。

6、本表数据地址是全64路的地址,应根据相应仪表的路数缩减数据地址。如:TDS-1600

十六路巡检巡检控制仪工况数据地址只从0000H~000FH,如果“巡检总路数”(仪表设置参数)设为14,那么工况数据地址只从0000H~000DH。

7、对于上限、上上限控制方式:0100H~013FH为上限寄存器,0200H~023FH为上

上限寄存器。对于下限、上限控制方式:0100H~013FH为下限寄存器,0200H~023FH为上限寄存器

附录2:TDS-3D000四屏四路智能数字测控仪

TDS-0400智能数字巡检控制仪数据地址表

说明:

1、这种TDS-0400智能巡检控制仪与附录1中不同,差别为仪表的四路量程、小数点

位置可以分别独立设置,请参看订货信息或仪表说明书中“参数设置”。

2、工况数据就是指仪表测量到的数据,如温度、压力等。

3、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。输入

信号为热电阻的(cu50、Pt100),小数点固定在十位。

4、开关量为位地址单元,一个地址存放一位(bit)。

5、开关量报警状态单元

附录3:TDS-4338/4335/4332智能数字转速信号测控装置数据地址表

大于设定值时该控制/报警动作;为负数表示当转速n小于设定值时该控制/报警动作。TDS转速测控仪对J1、J2、J3、J4、J5、J6、J7设定数据的规定范围是J1、J2、J3为负数;J4、J5、J6、J7为正数。例J3 设定数据为50%即8032H,J6 设定数据为105%即0069H。

2、频率f、频率f最大值数据带2位小数(小数点在百位);转速n、转速n最大值数据,当转速n的额定转速大于等于100转/每分钟数据带1位小数(小数点在十位),也就是极对数小于30对极;当转速n的额定转速小于100转/每分钟数据带2位小数(小数点在百位),也就是极对数大于等于30对极。额定转速和极对数相关。

3、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。

4、TDS-4335无控制/报警J3、J4,无J5或J6。TDS-4332只有控制/报警J1、J2。

附录4:TDS-4339智能齿盘数字转速信号测控装置数据地址表

大值数据,当转速n的额定转速大于等于100转/每分钟数据带1位小数(小数点在十位),也就是极对数小于30对极;当转速n的额定转速小于100转/每分钟数据带2位小数(小数点在百位),也就是极对数大于等于30对极。额定转速和极对数相关。

2、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。

3、TDS-4339-A无0107H地址“控制/报警J8”。

附录5:TDS-S3000双路、双路差值智能数字控制仪数据地址表

说明:

1、分辨率在这里指小数点位置。输入信号为热电阻的(cu50、Pt100),小数点固定在十

位。

2、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。

附录6:TDS-3300智能数字温度控制仪数据地址表

说明:

1、分辨率在这里指小数点位置。输入信号为热电阻的(cu50、Pt100),小数点固定在十

位。

2、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。

附录7:TDS-3400/3L00/3100/3A00

智能水位/流量/压力/转速监控仪数据地址表

说明:

1、分辨率在这里指小数点位置。

2、工况数据就是指仪表测量到的数据,如水位、压力等

3、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。

附录8:TDS-38900/TDS-389W00数字功率表

TDS-38A00智能数字综合数字电量表

TDS-3600数字功率因素表数据地址表

说明:

1、有功功率、无功功率数据转换为特殊方法,都为四字节的整型,最高位为符号位,

但数据转换的小数点换算和“二、通讯信息传输过程:3、数据区”中说明一致。

例如:有功功率:6000D →00001770H

单元地址0000=0000H 单元地址0001=1770H

有功功率:-6000D →80001770H

单元地址0000=8000H 单元地址0001=1770H

电压、电流、功率因数为双字节,最高位为符号位。例如:6000D →1770H;

-6000D →9770H。

2、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。

3、“工况数据”单元地址是TDS-38A00智能数字综合数字电量表的数据地址,对于

TDS-38900数字有功功率表只有“0000H-0001H有功功率”数据地址,TDS-389W00数字无功功率表只有“0002H-0003H无功功率”数据地址,TDS-3600数字功率因素表只有“0004H功率因素”数据地址。

附录10:TDS-3800数字电压表/变送器

1、附加功能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。

附录11:TDS-6568/6200自动准同期装置数据地址表

说明:

电压量单位为伏,数据分辨率为0.1伏,小数点在十位。

频率量单位为Hz,数据分辨率为0.01Hz,小数点在百位。

时间量单位为秒,数据分辨率为0.01秒,小数点在百位。

相关主题
相关文档
最新文档