恒瑞电力保护装置Modbus通信规约全解.docx
《恒瑞电力保护装置Modbus通信规约全解.docx》由会员分享,可在线阅读,更多相关《恒瑞电力保护装置Modbus通信规约全解.docx(25页珍藏版)》请在冰豆网上搜索。
恒瑞电力保护装置Modbus通信规约全解
微机保护装置通讯协议
MODBUS-RTU-V1.1版
珠海市恒瑞电力科技有限公司
2013-3
一、协议概述
●本协议适用于HDPx、DPx、EDPx、DPML系列保护装置。
●本协议为轮询方式的应答式规约,允许一个主站对应32个从站。
●数据帧间的间隔时间应大于50ms。
●数据为字时,均采用高字节在前、低字节在后、高位字在前、低位字在后的原则(校验码除外)。
●从站地址为00时为广播方式。
1、物理层:
●传输方式:
RS-485
●通信地址:
1~255
●通信波特率:
2400bps~19200bps。
●传输介质:
屏蔽双绞线
2、链路层:
■传输方式:
主从半双工方式。
数据在一根通信线路上进行双向传输的应答式连接(发送完后,再接收)。
主站首先寻址到唯一的从站,接着主站将会收到对应的终端设备发出的应答信号。
协议只允许应用在主站与终端设备之间,禁止在独立的终端设备之间互相交换数据。
■数据帧格式,表1-1如示:
表1-1:
起始位
数据位
奇偶校验位
停止位
流控制
1位
8位
无
1位
无
■数据包格式,表1-2如示:
表1-2:
数据格式
地址域
功能域
数据域
错误检测域
数据长度
1字节
1字节
N字节
16位CRC码(冗余循环码)
当从站接收到主站的数据帧后,首先进行地址验证,如是从站,则从站进行数据帧的CRC校验码计算,并与接收到的主站发出的CRC码进行比较,如相等,则执行相应的功能码,并对主站做出响应(从站的地址、功能码、数据区、CRC的低字节,CRC的高字节);如经地址验证不为该从站,则退出,不做出任何的响应。
●地址域
从站地址为一个字节,该字节标明了主站与从站进行通信的入口,所以该地址是每个从站所必须的,并且有且只有一个,从站之间绝不能相互重复,否则会引起通信链路上的冲突而导致通信错误。
有效的从站地址范围从1~247。
从站地址为00时为广播方式。
●功能域
该码值为一个字节,它标识了主站要在终端设备上是做何种操作。
详细内容参见表1-3所示。
表1-3:
功能码(HEX)
定义
操作
03
读寄存器数据
读取一个或多个寄存器的数据(读遥测、遥信、定值、SOE)
05
写开关量输出DO
控制一路继电器“合/分”输出(遥控,复归)
10
写单或多个寄存器
修改定值、校时
●数据域
数据区包括需要由从站返送何种信息或执行什么动作。
这些信息可以是数据(如:
开关量输入/输出、模拟量输入/输出、寄存器等等)、参考地址等。
例如,主站通过功能码03告诉从站返回寄存器的值(包含要读取寄存器的起始地址及读取寄存器的长度),则返回的数据包括寄存器的数据长度及数据内容。
对于不同的从站,地址和数据信息都不相同(应给出通讯信息表)。
数据区的数据都是两个字节,并且高位在前。
●错误检测域
CRC的校验由两个8位字节组成,低字节在前,高字节在后。
是用于主设备与终端设备之间数据传输过程中的错误侦测校验方式。
它将附加在发送的整个数据包后面。
当接收设备接收完一个完整的数据包后,进行CRC循环冗余代码的计算,并与接收到CRC代码进行比较,由此来判断接收数据正确否,如接收装置计算的CRC与接收到的CRC的值相等,则说明接收数据正确,否则,表示接收到了错误的数据。
校验码为除错误检测域的所有字节的CRC-16校验码,发生器多项式为(X16+X15+X2+1)。
CRC的计算步骤如下:
1.预置1个16位的寄存器(下称CRC寄存器),初试化其内容为十六进制数0xFFFF;
2.把第一个待计算的数据即通讯信息帧的首字节与CRC寄存器的低8位相异或,把结果放回CRC寄存器;
3.把CRC寄存器的内容右移一位用0填补最高位即进行逻辑移位处理并检查右移后的移出位;
4.如果移出位为0重复第3步即再次右移一位,如果移出位为1则CRC寄存器与CRC生成多项式0xA001(1010000000000001)进行异或运算,结果放回CRC寄存器;
5.重复步骤3和4,直到右移8次,对整个8位数据全部进行同样处理;
6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理,直至全部字节处理完毕。
二、应用层详解
本节将对各个应用功能码做详细的解释。
并对相应的功能代码举出相应的例子,以便在软件中对通信规约的编写与调试和修改。
1、读寄存器—功能码03H
读从站寄存器的数据,不支持广播。
说明:
可用于读实时遥测值、遥信量、保护定值、SOE等,可一次读一个或多个值,一次命令读寄存器总个数不能超过120个。
寄存器的具体定义见对应的【装置寄存器表】
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为1(十进制)
功能码
1
03
读寄存器(实时测量值)
寄存器起始地址高字节
1
00
起始地址为0000H
寄存器起始地址低字节
1
00
寄存器个数高字节
1
00
读寄存器个数为4个
寄存器个数低字节
1
04
CRC16
2
4409
CRC校验码
从站响应:
每个寄存器分别对应2个字节,第一个字节为高位值数据,第二个字节为低位数据。
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为100(十进制)
功能码
1
03
读寄存器(实时测量值)
字节数
1
08
寄存器数据共8个字节
第1个寄存器数据高字节
1
00
该测量值对应寄存器地址为0000H
第1个寄存器数据低字节
1
00
第2个寄存器数据高字节
1
E1
该测量值对应寄存器地址为0001H
第2个寄存器数据低字节
1
64
第3个寄存器数据高字节
1
E1
该测量值对应寄存器地址为0002H
第3个寄存器数据低字节
1
C8
第4个寄存器数据高字节
1
E2
该测量值对应寄存器地址为0003H
第4个寄存器数据低字节
1
2C
CRC16
2
0D11
CRC校验码
注:
遥测值均做了整数化处理,电流、电压、频率遥测值为实际值×100,功率遥测值为实际值×10,功率因素值为实际值×1000。
2、写开关量输出—功能码05H
强制某个继电器为ON或OFF状态,不支持广播。
说明:
可用于遥控、复归等,一次只能操作一个继电器。
继电器号的具体定义见对应的【装置寄存器表】。
继电器号为00FF时,用作复归。
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为1(十进制)
功能码
1
05
强制继电器
继电器号高字节
1
00
继电器号为0000
继电器号低字节
1
00
控制命令高字节
1
FF
FF00H值—合,0000H值—分,其它值对线圈无效。
控制命令低字节
1
00
CRC16
2
8C3A
CRC校验码
从站响应返回的报文格式:
与主站发送的报文格式及数据内容完全相同。
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为1(十进制)
功能码
1
05
强制继电器
继电器号高字节
1
00
继电器号为0000
继电器号低字节
1
00
控制命令高字节
1
FF
FF00H值—合,0000H值—分,其它值对线圈无效。
控制命令低字节
1
00
CRC16
2
8C3A
CRC校验码
3、写寄存器—功能码10H
把数据按顺序预置到各寄存器中,广播时该功能代码可把数据预置到全部从站中的相同类型的寄存器中(比如校时)。
说明:
可用于修改保护定值、校时等,可一次修改一个或多个定值项,一次命令写寄存器总个数不能超过60个。
必须注意的是该命令只对可写的寄存器有效。
寄存器的具体定义见对应的【装置寄存器表】。
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
10
写寄存器
寄存器起始地址高字节
1
01
起始地址为0100H
寄存器起始地址低字节
1
00
寄存器个数高字节
1
00
写寄存器个数为4个
寄存器个数低字节
1
04
字节数
1
08
寄存器数据共8个字节
第1个寄存器数据高字节
1
00
将地址为0100H的寄存器值修改为0000H
第1个寄存器数据低字节
1
00
第2个寄存器数据高字节
1
0F
将地址为0101H的寄存器值修改为0FFFH
第2个寄存器数据低字节
1
FF
第3个寄存器数据高字节
1
03
将地址为0102H的寄存器值修改为03FFH
第3个寄存器数据低字节
1
FF
第4个寄存器数据高字节
1
01
将地址为0103H的寄存器值修改为01F4H
第4个寄存器数据低字节
1
F4
CRC16
2
XXXX
CRC校验码
从站正常响应返回从站地址,功能代码和起始地址和写寄存器的数量。
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
10
写寄存器
寄存器起始地址高字节
1
01
起始地址为0100H
寄存器起始地址低字节
1
00
寄存器个数高字节
1
00
写寄存器个数为4个
寄存器个数低字节
1
04
CRC16
2
C036
CRC校验码
4、异常响应
除广播外,主站向从站设备发送查询并希望有一个正常响应,主站查询中有可能产生4种事件:
☐从站接收查询,通讯正常处理信息,则返回一个正常响应事件。
☐由于通讯出错,从站不能接收查询数据,因而不返回响应。
此时,主站依靠处理程序给出查询超时事件。
☐若从站接收查询,发现有CRC通讯错误,并未返回响应,此时,依靠主机处理程序给出查询超时事件。
☐从机接收查询,无通讯错误,但无法处理(如读不正确的功能码,不存在的寄存器地址,写寄存器值超限)时,向主机报告错误的性质。
当主站发送了一个非法的消息帧给从站时,异常的数据响应就会产生。
这个异常数据响应由从站地址、功能码、特征码和校验域组成。
从站将接收的功能码的最高位(MSB)置为1时,说明此时为异常响应。
所响应的特征码的含义:
01H:
表示从站接收到非法的功能码
02H:
表示所请求的寄存器地址不在有效的寄存器地址范围内
03H:
表示数据不在寄存器所允许的范围内
04H:
表示没有所请求的数据
注:
CRC校验出错将不予响应
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
10
写寄存器(定值)
寄存器起始地址高字节
1
2A
起始地址为2A5CH
寄存器起始地址低字节
1
5C
寄存器个数高字节
1
00
写寄存器个数为1个
寄存器个数低字节
1
01
字节数
1
02
寄存器数据共2个字节
寄存器数据高字节
1
A9
写地址为2A5CH寄存器的值为A98B
寄存器数据低字节
1
8B
CRC16
2
1F39
CRC校验码
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01
功能码
1
90
功能码高位置1
特征码
1
02
寄存器地址不在有效的寄存器地址范围内
CRC16
2
CDC1
CRC校验码
四、应用示例
4.1读实时测量值
读出保护装置实时测量的状态字、开入量、电流、线电压、功率、功率因数、频率。
实时测量值地址从0000H开始。
以EDPM-410为例。
其它类型的装置,具体参照各自的modbus地址表。
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
03
读寄存器(实时测量值)
寄存器起始地址
2
0000
起始地址为0000H
寄存器个数
2
000C
读寄存器个数为12个
CRC16
2
45CF
CRC校验码
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
03
读寄存器(实时测量值)
字节数
1
18
寄存器数据共24个字节
第1个寄存器数据
2
0001
状态字节、遥信字节1
第2个寄存器数据
2
0000
遥信字节2、遥信字节3
第3个寄存器数据
2
01F4
A相电流为5.00A
第4个寄存器数据
2
01F2
B相电流为4.98A
第5个寄存器数据
2
01F6
C相电流为5.02A
第6个寄存器数据
2
0064
零序电流为1.00A
第7个寄存器数据
2
2760
AB线电压为100.80V
第8个寄存器数据
2
270C
BC线电压为99.96V
第9个寄存器数据
2
1E72
三相有功功率为779.4W
第10个寄存器数据
2
0EBF
三相无功功率为377.5W
第11个寄存器数据
2
0384
功率因数为0.9
第12个寄存器数据
2
1388
频率
CRC16
2
764D
CRC校验码
其中状态字节:
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Bit0—为1时,标识从站上电或复位,需要主站进行校时。
Bit1—为1时,标识从站有新的SOE事件,等待主站召唤;主站每次读取一条SOE报文。
当SOE事件均上送完毕后,从站将状态字的bit1位清零。
Bit2~bit7备用
4.2读定值
读出保护装置定值。
可以依据装置定值数量一次读完,也可以读一个或多个,根据读的个数来定。
定值共2个区,每个区长度为50个字。
地址从0101H—0132H为0区,从0133H—0164H为1区。
当前区号地址为0100H。
以EDPM-410为例。
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
03
读寄存器
寄存器起始地址
2
0101
起始地址为0101H
寄存器个数
2
0021
读寄存器个数为33个
CRC16
2
D5EE
CRC校验码
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
03
读寄存器
字节数
1
42
寄存器数据共66个字节
第1个寄存器数据
2
0001
控制字1
第2个寄存器数据
2
0000
控制字2
第3个寄存器数据
2
012C
电动机额定电流定值为3.00A
第4个寄存器数据
2
0BB8
起动内速断定值为30.00A
第5个寄存器数据
2
0320
起动后速断定值为8.00A
第6个寄存器数据
2
0000
速断延时定值为0.00S
。
。
。
2
。
。
。
。
。
。
第32个寄存器数据
2
0064
CT变比为100
第33个寄存器数据
2
0064
PT变比为100
CRC16
2
XXXX
CRC校验码
4.3读取SOE事件记录
每条事件记录由6个字寄存器组成,每次可读取1条事件,其格式如下:
序号
内容
字节数
1
状态字
1
2
时间标记(年低)
1个字节
BCD码
3
时间标记(年高)
1个字节
BCD码
4
时间标记(月)
1个字节
BCD码
5
时间标记(日)
1个字节
BCD码
6
时间标记(时)
1个字节
BCD码
7
时间标记(分)
1个字节
BCD码
8
时间标记(秒)
1个字节
BCD码
9
时间标记(毫秒低)
1个字节
BCD码
10
时间标记(毫秒高)
1个字节
BCD码
11
事件类型代码
1个字节
12
事件遥信状态
1个字节
其中:
事件类型代码指示了SOE的事件名称
事件遥信状态指示了事件发生或事件返回,比如遥信合位,或者遥信分位。
事件记录刷新命令寄存器地址为0200H;
事件记录寄存器起始地址为0201H;
主站根据从站的状态寄存器的SOE位来判断从站是否有新的SOE事件,来进行SOE事件读取,主站接收后,需要向从站发事件记录刷新命令报文,即向事件记录刷新命令寄存器写入55AA,从站收到后,将下一条SOE数据存入0201H地址开始的事件记录寄存器中并将事件记录刷新,待主站读取;若主站没有接收或没有正确接收事件记录报文,可以不写55AA到从站事件记录刷新命令寄存器,从站将不刷新事件记录寄存器内容,这样主站可以重新读取事件记录。
以EDPM-410为例。
4.3.1读事件记录寄存器
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
03
读寄存器(事件记录)
寄存器起始地址
2
0201
起始地址为0201H
寄存器个数
2
0006
读寄存器个数为6(十进制)
CRC16
2
95B0
CRC校验码
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
03
读寄存器
字节数
1
0C
寄存器数据共12个字节
第1个寄存器数据
2
0220
状态字节,年高
第2个寄存器数据
2
0811
年低,月
第3个寄存器数据
2
1219
日,时
第4个寄存器数据
2
0521
分,秒
第5个寄存器数据
2
3309
毫秒
第6个寄存器数据
2
0301
事件类型,遥信状态
CRC16
2
XXXX
CRC校验码
4.3.2写事件记录刷新命令寄存器
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
10
写寄存器
寄存器起始地址
2
0200
起始地址为0200H
寄存器个数
2
0001
写寄存器个数为01(十进制)
字节数
1
02
数据共2个字节
寄存器数据
2
55AA
写入刷新命令
CRC16
2
3ABF
CRC校验码
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为01(十进制)
功能码
1
10
读寄存器
寄存器起始地址
2
0200
起始地址为0200H
寄存器个数
2
0001
寄存器个数为1个
CRC16
2
0071
CRC校验码
4.4遥控继电器
一次只能操作一个继电器,控制命令FF00H—遥合,0000H—遥分。
继电器号为00FF时,用作复归。
4.4.1遥控
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为1(十进制)
功能码
1
05
读寄存器(实时测量值)
继电器号高字节
1
00
继电器号为0000
继电器号低字节
1
00
控制命令高字节
1
FF
FF00H值—遥合,0000H值—遥分,其它值对线圈无效。
控制命令低字节
1
00
CRC16
2
8C3A
CRC校验码
从站响应返回的报文格式:
与主站发送的报文格式及数据内容完全相同。
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为1(十进制)
功能码
1
05
强制继电器
继电器号高字节
1
00
继电器号为0000
继电器号低字节
1
00
控制命令高字节
1
FF
FF00H值—遥合,0000H值—遥分,其它值对线圈无效。
控制命令低字节
1
00
CRC16
2
8C3A
CRC校验码
4.4.2复归
主站下行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为1(十进制)
功能码
1
05
强制继电器
继电器号高字节
1
00
继电器号为00FF
继电器号低字节
1
FF
控制命令高字节
1
FF
控制命令低字节
1
00
CRC16
2
BC0A
CRC校验码
从站响应返回的报文格式:
与主站发送的报文格式及数据内容完全相同。
从站上行
字节数
示例(HEX)
描述
从站地址
1
01
从站地址为1(十进制)
功能码
1
05
强制继电器
继电器号高字节
1
00
继电器号为00FF
继电器号低字节
1
FF
控制命令高字节
1
FF
控制命令低字节
1
00
CRC16
2
BC0A
CRC校验码
4.5校时
若采用广播校时命令须将从站地址当作0,广播命令时从站不返回上行命令。
任何写多个寄存器的
命令而涉及到时钟寄存器,从站将不予执行校时。
主站以BCD码格式校对时间,从站正确接到校时命令后,将毫秒清零。
时钟寄存器起始地址为0300H。
若不采用广播校时,须仅以某一从站地址进行校时,从站应答同写寄存器。
将从站时钟校准为2008年11月1日8时30分20秒0毫秒。
●广播方式:
主站下行
字节数
示例(HEX)
描述
从站地址
1
00
从站地址为00(广播地址)
功能码
1
10
写寄存器(广播校时)
寄存器起始地址
2
0300
起始地址为0300H
寄存器个数
2
0004
写寄存器个数为4个
字节数
1
08
寄存器数据共8个字节
第1个寄存器数据
2
2008
年
第2个寄存器数据
2
1101
月,日
第3个寄存器数据
2
0830
时,分
第4个寄存器数据
2
2000
秒,无意义字节0
CRC16
2
DC4F
CRC校验码
●非广播方式:
主站下行
字节数
示例(HEX)
描述
从