ModBus通讯规约16kWord下载.docx
《ModBus通讯规约16kWord下载.docx》由会员分享,可在线阅读,更多相关《ModBus通讯规约16kWord下载.docx(20页珍藏版)》请在冰点文库上搜索。
3、“从机”在本文件中既为TDS。
通讯信息传输过程:
当通讯命令由发送设备(主机)发送至接收设备(从机)时,在CRC校验无误情况下,从机地址与地址码相符的从机接收通讯命令(TDS表以本机的地址码和功能码2个字节作为同步字),并根据功能码及相关要求处理信息,执行相应的任务,然后把执行结果(数据)返送给主机。
返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。
如果CRC校验出错就不返回任何信息。
TDS表使用的MODBUS功能码(16进制)
定义
操作(二进制)
02
读开关量
读取开关量设置数据;
一个或多个开关量控制/报警状态数据
03
读寄存器数据
读取单路或多路工况数据;
单路或多路控制/报警设置数据
05
写开关量
写一个开关量设置数据
06
写单个寄存器
写单个功能寄存器或单路控制/报警设置数据
10
写多路寄存器
写多路功能寄存器或多路控制/报警设置数据
地址码:
地址码是每次通讯信息帧的第一字节(8位),从01H到FFH。
每个从机都必须有唯一的地址码。
所有地址的从机都将接收由主机发送来的信息,只有符合地址码的从机才响应要求,回送信息。
当从机回送信息时,回送数据均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。
功能码:
是每次通讯信息帧传送的第二个字节。
ModBus通讯规约可定义的功能码为0到127。
TDS系列仪表/变送器仅用到其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机应执行什么动作。
作为响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。
数据区:
数据区包括需要由主机发送、从机回送何种信息或执行什么动作。
这些信息可以是数据(如:
开关量、模拟量、寄存器参数等等)、参考地址等。
例如,主机通过功能码03告诉从机返回单路或多路工况数据寄存器的值或单路或多路控制/报警设置数据寄存器的值(包含要读取寄存器的起始地址及读取寄存器的长度等),则返回的数据包括寄存器的数据长度及数据内容。
对于不同的从机,地址和数据信息都不相同(见通讯信息表)。
TDS系列仪表/变送器采用Modbus通讯规约,主机(PLC、RTU、PC机、DCS等)利用通讯命令(功能码03),可以进任意行读取其数据寄存器(其数据信息表详见附录)。
TDS系列仪表/变送器的数据寄存器存储多种工况数据(如:
温度、压力、流量、电流、电压、功率及控制/报警数据等),开关量以bit位为单元的二进制数组成(既8bit为1个字节)多字节数据;
模拟量、寄存器参数都是16位(2字节)的二进制数据,高位在前(最高位为符号位,其后15位数据,例1500D05DCH;
-500D81F4H)。
TDS响应的命令格式是从机地址、功能码、数据区及CRC码。
数据区的数据为多字节开关量数据或模拟量数据。
以64路TDS仪表为例作如下说明:
功能码02:
例如:
从机48路开关量设定数据(内容:
B,01110011B,B,B,00010101B,B)主机要读取地址为01的从机第3路到第22路巡检状态开关量设置数据,数据地址为0302H开始20bit位(内容:
B,B,XXXX1001B)。
(未参加巡检时,该路数的开关量数据0)
主机发送的报文格式:
主机发送
字节数
发送的信息
举例说明
从机地址
1
01H
发送至地址为01的从机
02H
读取开关量设置数据
起始地址
2
0302H
单元数
0014H
20bit位20路巡检状态
CRC码
XXXXH
由主机计算得到CRC码
从机(TDS)响应返回的报
从机响应
返回的信息
来自从机01
03H
数据区字节数
开关量设置数据
B
8bit位设置数据(3~10路)
8bit位设置数据(11~18路)
XXXX1001B
4bit位设置数据(19~22路)
XXXXH
由从机计算得到CRC码
功能码03:
读多路寄存器
主机要读取地址为01,起始地址为从1路到3路从机工况数据,其中第2路未参加巡检。
(未参加巡检时,该路数的工况数据为0000H)
从机(TDS)数据寄存器的地址和数据为:
寄存器地址
寄存器数据(16进制)
01路
1784H
02路
0000H
03路
178AH
03H
读取工况数据
0000H
起始地址为00(1路)
数据路数
0003H
读取3路工况数据
从机(TDS)响应返回的报文格式:
字节数
06H
第1路工况数据
第2路工况数据
第3路工况数据
178AH
功能码05:
主机要设置地址为01的从机第9路参加巡检(数据FF00H代表ON该路参加巡检;
数据0000H代表OFF该路不参加巡检)。
05H
写开关量设置数据
0308H
FFH
00H
01H
05H
FFH
功能码06:
写单路控制/报警数据
主机利用这个功能码把单路二进制控制/报警设置数据保存到TDS表的数据存储器中去(寄存器)。
主机要把04B0H保存到从机第6路上上限寄存器中去(从机地址码为01)。
通讯数据保存结束后,TDS表内第6路上上限为04B0H:
主机发送数据地址和数据为:
地址
数据
第6路
04B0H
发送至从机01
写单路寄存器
数据地址
0205H
第6路上上限寄存器
保存数据
由主机计算得到的CRC码
功能码10:
写多路控制/报警数据
主机利用这个功能码把多路二进制控制/报警设置数据保存到TDS表的数据存储器中去(寄存器)。
主机要把04B0H,保存到从机第1路上限寄存器中去;
1388H保存到从机第2路上限寄存器中去(从机地址码为01)。
通讯数据保存结束后,TDS表内第1路上限为04B0H;
、第2路上限为1388H:
第1路
第2路
1388H
10H
0100H
第1路开始
数据数
0002H
2路设定数据
04H
保存数据1
保存数据2
保存2路设定数据
错误校验码(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(1010000000000001)进行异或;
如果最低位为0:
不作处理;
4.重复步骤3,直到右移8次,这样整个8位数据全部进行了处理;
5.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
6.最后得到的CRC寄存器内容即为:
CRC码。
通讯错误信息及数据的处理:
当TDS测到除了CRC码出错以外的错误时,必须向主机回送信息,功能码的最高位置为1,即从机返送给主机的功能码是在主机发送的功能码的基础上加128。
以下的这些代码表明有意外的错误发生。
TDS接收到的信息如有CRC错误,则将被TDS略。
TDS返送的错误码的格式如下(CRC码除外):
地址码:
1字节
功能码:
1字节(最高位为1,例:
03H功能码变为83H)
错误码:
CRC码:
2字节。
TDS响应回送如下错误码:
81:
非法的数据位置。
指定的数据位置超出TDS表的范围。
82:
非法的数据值。
接收到主机发送的数据值超出TDS相应地址的数据范围。
附录1:
TDS系列流量积算仪MODBUS通讯规约信息表
数据类型
单元地址
说明
0000~0001
累积流量
单元(四字节)数据类型为带小数点的八位十进制数
0002~0005
分别为瞬时流量、第一、第二及第三工况数据(十六进制数)
0006
单元(两字节)4个4位二进制数分别代表流量、第一、二、三工况数据小数点位置:
0000无小数点
0001小数点在十位
0010小数点在百位
0011小数点在千位
0100小数点在万位
0007
附加功能
前字节高4位二进制数代表转换数据小数点位置:
0000无小数点
0008
单元(两字节)第一、二、三工况数据的某一转换数据
附录2:
8/16/24/32/48/64路MODBUS通讯规约信息表
单元数据类型
工况数据
0000H~0040H
从0000H到003FH共64个单元(双字节)分别代表64路工况数据;
0040H单元(双字节),后字节为巡检路数设定字节(主机可改)是TDS表工况现场设定的巡检路数。
前字节(主机不可改)低4位代表控制/报警方式:
0000单显示
0001上限报警
0010上限/上上限报警
字节高4位代表工况数据小数点位置:
上限寄存器
0100H~013FH
从0100H到013FH共64个单元(双字节)分别代表64路上限设定数据)。
当该控制/报警方式不存在时,对所有单元读/写时,回送为非法的数据位置错误码。
上上限寄存器
0200H~023FH
从0200H到023FH共64个单元(双字节)分别代表64路上上限设定数据。
开关量设定数据
0300H~033FH
从0300H到033FH每个单元为1bit,每单元分别对应1巡检路,分别代表64路巡检状态设定(主机可改)(第1单元0300H主机不可改)。
每8个单元组成1字节(每1字节8bit)。
单元(bit位)为1表示对应的巡检路参加巡检,未参加巡检时该路所有单元参数为0。
第1字节最末位代表第1路巡检状态,第8字节最高位代表第64路巡检状态。
开关量控制/报警状态
0400H~043FH
0440H~047FH
0480H~04BFH
从0400H到04BFH每个单元为1bit,0400H~043FH共64bit分别代表64路断阻报警状态;
0440H~047FH共64bit分别代表上限控制/报警状态;
0480H~04BFH共64bit分别代表上上限控制/报警状态。
每8个单元组成1字节,每8个字节为一组,第1字节最末位代表第1路控制/报警状态,第8字节最高位代表第64路控制/报警状态。
附录3:
TDS转速测控仪表MODBUS通讯规约信息表
工况数据
频率f
数据带2位小数点
0001H
转速n
转速%
数据带1位小数点
0003H
频率fmax.
0004H
转速nmax.
0005H
转速%max.
设定数据寄存器
控制/报警J1
0%~5%额定转速
0101H
控制/报警J2
25%~40%额定转速
0102H
控制/报警J3
40%~80%额定转速
0103H
控制/报警J4
80%~90%额定转速
0104H
控制/报警J5
85%~100%额定转速
0105H
控制/报警J6
100%~125%额定转速
0106H
控制/报警J7
130%~175%额定转速
0107H
极对数/额定频率
单元前字节为极对数(主机可改),范围1~3FH(63D)极对数;
单元后字节为转速仪测量额定频率(主机不可改):
00H60Hz
01H50Hz
02H25Hz
0108H
归零延时
单元前字节为归零延时1~15,1为12秒;
2为24秒;
3......15为180秒;
单元后字节为转速仪转速n/转速nmax.数据小数点位置:
0300~0307
从0300H到0306H每个单元为1bit,共7bit(单元),分别代表J1~J7工况开关量控制/报警状态。
0307H单元为断相开关量报警状态。
说明:
1.控制/报警J1、J2、J3、J4、J5、J6、J7的设定数据,为正数表示当转速n大于设定值时该控制/报警动作;
为负数表示当转速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位小数;
转速%、转速%最大值数据含1位小数;
转速n、转速n最大值数据,当转速n的额定转速大于等于100转/每分钟数据含1位小数(极对数小于30对极),当转速n的额定转速小于100转/每分钟数据含2位小数(极对数大于等于30对极)。
附录4:
TDS电站专用温度测控仪表MODBUS通讯规约信息表
工况温度
工况温度max
单元前字节低4位代表控制/报警方式:
0001下限报警
0010上限报警
0011下下限/下限报警
0100下限/上限报警
0101上限/上上限报警
前字节高4位代表工况数据类型:
0000Cu50~
0001Pt100~
0010Cu50/Pt100~
0011Pt100~
0100Pt100(-200~600)
单元后字节低4位代表工况数据小数点位置:
设定数据
寄存器
第一控制/报警
单报警或前报警设定
第二控制/报警
后报警设定
0300~0302
0300H第一控制/报警状态
0301H第二控制/报警状态
0302H工况输入断阻报警
附录5:
TDS自动准同期测控仪表MODBUS通讯规约信息表
系统电压UH
机组电压FH
系统频率UF
机组频率FF
并机号等
越前时间
合闸时间
允许压差
允许频差
均压周期
均压脉冲宽度
均频周期
均频脉冲宽度
报警状态
0300~0303分别代表越前动作、相位允许、频率允许、电压允许
0304~0307分别代表电压差>
=30伏或频率差>
=3赫兹、系统或机组信号断线、自动准同期测控仪表在开机自检状态、自动准同期测控仪表在键入设置状态。
0308~030B
调控状态
0308---减速调控
0309---增速调控
030A---降压调控
030B---升压调控
电压量单位为伏,数据分辨率为伏;
频率量单位为Hz,数据分辨率为;
时间量单位为秒,数据分辨率为秒。