IEC104协议规约解析

IEC104协议规约解析

一、四遥信息体基地址范围

104调度规约有1997年和2002年两个版本,在流程上没有什么变化,02版只是在97版上扩展了遥测、遥信等信息体基体址,区别如下:

类别

1997版基地址

2002版基地址

遥信

1H------400H

1H------4000H

遥测

701H------900H

4001H------5000H

遥控

B01H------B80H

6001H------6100H

设点

B81H------COOH

6201H------6400H

电度

C01H------C80H

6401H------6600H

二、一些报文字节数的设置

类别

配置方式

公共地址字节数

2

传输原因字节数

2

信息体地址字节数

3

此配置要根据主站来定,有的主站可能设为1,1,2,我们要改与主站一致。

三、详细报文分析

以公共地址字节数=2,传输原因字节数=2,信息体地址字节数=3为例对一些基本的报文分析

第一步:首次握手(U帧)

发送→激活传输启动     :68(启动符)04(长度)07(控制域)00  00  00

接收→确认激活传输启动 : 68(启动符)04(长度)0B(控制域)00  00  00

第二步:总召唤(I帧)

召唤YC、YX(可变长I帧)初始化后定时发送总召唤,每次总召唤的间隔时间一般设为15分钟召唤一次,不同的主站系统设置不同。

发送→总召唤     :

68(启动符)0E(长度)00  00(发送序号)00  00(接收序号)64(类型标示)01(可变结构限定词)06  00(传输原因)01  00(公共地址即RTU地址)00 00 00(信息体地址)14(区分是总召唤还是分组召唤,02年修改后的规约中没有分组召唤)

接收→S帧 :

注意:记录接收到的长帧,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧。

68     04  01  00  02  00

接收→总召唤确认(发送帧的镜像,除传送原因不同) :

68(启动符)0E(长度)00  00(发送序号)00  00(接收序号)64(类型标示)01(可变结构限定词)07  00(传输原因)01  00(公共地址即RTU地址)00 00 00(信息体地址)14(同上)

 发送→S帧 :

注意:记录接收到的长帧,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧。

68  04  01  00  02  00

接收→YX帧(以类型标识1为例) :

68(启动符)1A(长度)02  00(发送序号)02  00(接收序号)01(类型标示,单点遥信)04(可变结构限定词,有4个遥信上送)14  00(传输原因,响应总召唤)01  00(公共地址即RTU地址)03 00 00(信息体地址,第3号遥信)00(遥信分)

 发送→S帧 :

68  04  01  00  04  00

接收→YX帧(以类型标识3为例) :

68(启动符)1E(长度)04  00(发送序号)02  00(接收序号)03(类型标示,双点遥信)05(可变结构限定词,有5个遥信上送)14  00(传输原因,响应总召唤) 01  00(公共地址)01 00 00(信息体地址,第1号遥信)02(遥信合)06 00 00(信息体地址,第6号遥信)02(遥信合)0A 00 00(信息体地址,第10号遥信)01(遥信分)0B 00 00(信息体地址,第11号遥信)02(遥信合)0C 00 00(信息体地址,第12号遥信)01(遥信分)

 发送→S帧 :

68  04  01  00  06  00

接收→YC帧(以类型标识9为例) :

68(启动符)13(长度)06  00(发送序号)02  00(接收序号)09(类型标示,带品质描述的遥测)82(可变结构限定词,有2个连续遥测上送)14  00(传输原因,响应总召唤)01  00(公共地址)01 07 00(信息体地址,从0X0701开始第0号遥测)A1 10(遥测值10A1)00(品质描述)89 15(遥测值1589)00(品质描述)

 发送→S帧 :

68  04  01  00  08  00

接收→结束总召唤帧 :

68(启动符)0E(长度)08  00(发送序号)02  00(接收序号)64(类型标示)01(可变结构限定词)0A  00(传输原因)01  00(公共地址)00 00 00(信息体地址)14(区分是总召唤还是分组召唤,02年修改后的规约中没有分组召唤)

发送→S帧 :

68      04  01  00  0A  00

第三步:发送对时报文(通过设置RTU参数表中的对间间隔”,单位是分钟,一般是20分钟)

发送→对时命令 :

68(启动符)14(长度)02  00(发送序号)0A  00(接收序号)67(类型标示)01(可变结构限定词)06  00(传输原因)01  00(公共地址)00 00 00(信息体地址)01(毫秒低位)02(毫秒高位)03(分钟)04(时)81(日与星期)09(月)05(年)

接收→对时确认 :

68(启动符)14(长度)0C  00(发送序号)02  00(接收序号)67(类型标示)01(可变结构限定词)07  00(传输原因)01  00(公共地址)00 00 00(信息体地址)**(毫秒低位)**(毫秒高位)**(分钟)04(时)81(日与星期)09(月)05(年)

 发送→S帧 :

68  04  01  00  0E  00

 第四步:电度总召唤(如果没有电度此步骤可以省略且可以在对时之前以送.通过设置参数中全数据扫描间隔”,单位是分钟一般是15分钟召唤一交,如果不需要召唤电度一定要将参数中的电度个数设为0)

发送→召唤电度 :

68(启动符)0E(长度)04  00(发送序号)0E  00(接收序号)65(类型标示)01(可变结构限定词)06  00(传输原因)01  00(公共地址)00 00 00(信息体地址)45(QCC)

接收→召唤确认(发送帧的镜像,除传送原因不同) :

68(启动符)0E(长度)10  00(发送序号)06  00(接收序号)65(类型标示)01(可变结构限定词)07  00(传输原因)01  00(公共地址)00 00 00(信息体地址)45(QCC)

发送→S帧 :

68  04  01  00  12  00

接收→电度数据 :

68(启动符)1A(长度)12  00(发送序号)06  00(接收序号)0F(类型标示)02(可变结构限定词,有两个电度量上送)05  00(传输原因)01  00(公共地址)01 0C 00(信息体地址,从0X0C01开始第0号电度)00 00 00 00(电度值)00(描述信息)02 0C 00(信息体地址,从0X0C01开始第1号电度)00 00 00 00(电度值)01(描述信息)

发送→S帧 :

68  04  01  00  14  00

接收→结束总召唤帧 :

68(启动符)0E(长度)14  00(发送序号)06  00(接收序号)65(类型标示)01(可变结构限定词)0A  00(传输原因)01  00(公共地址)00 00 00(信息体地址)45(QCC)

发送→S帧 :

68      04  01  00  16  00

第五步:如果RTU有变化数据主动上送,主动上送变位遥信,类型标识为13

接收→变位遥信 :

68(启动符)0E(长度)16  00(发送序号)06  00(接收序号)01(类型标示,单点遥信)01(可变结构限定词,有1个变位遥信上送)03  00(传输原因,表突发事件)01  00(公共地址即RTU地址)03 00 00(信息体地址,第3号遥信)00(遥信分)

发送→S帧 :

68  04  01  00  18  00

接收→变位遥信 :

68(启动符)0E(长度)18  00(发送序号)06  00(接收序号)03(类型标示,双点遥信)01(可变结构限定词,有1个变位遥信上送)03  00(传输原因,表突发事件)01  00(公共地址即RTU地址)06 00 00(信息体地址,第6号遥信)01(遥信分)

发送→S帧 :

68  04  01  00  1a  00

主动上送SOE,类型标识为0x1e0x1f

接收→SOE :

68(启动符)15(长度)1a  00(发送序号)06  00(接收序号)1e(类型标示,单点遥信)01(可变结构限定词,有1个SOE)03  00(传输原因,表突发事件)01  00(公共地址即RTU地址)08 00 00(信息体地址,第8号遥信)00(遥信分)ad(毫秒低位)39(毫秒高位)1c(分钟)10(时)7a(日与星期)0b(月)05(年)

发送→S帧 :

68  04  01  00  1c  00

接收→SOE :

68(启动符)15(长度)1c  00(发送序号)06  00(接收序号)1f(类型标示,双点遥信)01(可变结构限定词,有1个SOE)03  00(传输原因,表突发事件)01  00(公共地址即RTU地址)0a 00 00(信息体地址,第10遥信)01(遥信分)2f(毫秒低位)40(毫秒高位)1c(分钟)10(时)7a(日与星期)0b(月)05(年)

第六步:如果主站超过一定时间没有下发报文或RTU也没有上送任何报文则双方都可以按频率发送U,测试帧

发送→U帧 :

68  04  43  00  00  00

接收→应答 :

68  04  83  00  00  00

第七步:遥控

发送→遥控预置 :

68(启动符)0e(长度)20  00(发送序号)06  00(接收序号)2e(类型标示)01(可变结构限定词)06  00(传输原因)01  00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)82(控合)

接收→遥控返校 :

68(启动符)0e(长度)0e  00(发送序号)06  00(接收序号)2e(类型标示)01(可变结构限定词)07  00(传输原因)01  00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)82(控合)

发送→遥控执行 :

68(启动符)0e(长度)04  00(发送序号)18  00(接收序号)2e(类型标示)01(可变结构限定词)06  00(传输原因)01  00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)

接收→执行确认 :

68(启动符)0e(长度)12  00(发送序号)08  00(接收序号)2e(类型标示)01(可变结构限定词)07  00(传输原因)01  00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)

发送→遥控撤消 :

68(启动符)0e(长度)04  00(发送序号)18  00(接收序号)2e(类型标示)01(可变结构限定词)08  00(传输原因)01  00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)

接收→撤消确认 :

68(启动符)0e(长度)12  00(发送序号)08  00(接收序号)2e(类型标示)01(可变结构限定词)09  00(传输原因)01  00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)

 

补充说明:

1、 报文中的长度指的是除启动字符与长度字节的所有字节。

2、 注意长帧报文中的“发送序号”与“接收序号”具有抗报文丢失功能。

3、 常用的类型标识

遥测:

09———带品质描述的测量值,每个遥测值占3个字节

0a———带3个字节时标的且具有品质描述的测量值,每个遥测值占6个字节

0b———不带时标的标度化值,每个遥测值占3个字节

0c———带3个时标的标度化值,每个遥测值占6个字节

0d———带品质描述的浮点值,每个遥测值占5个字节

0e———带3个字节时标且具有品质描述的浮点值,每个遥测值占8个字节

15———不带品质描述的遥测值,每个遥测值占2个字节

遥信:

01———不带时标的单点遥信,每个遥信占1个字节

03———不带时标的双点遥信,每个遥信占1个字节

14———具有状态变位检出的成组单点遥信,每个字节8个遥信

SOE:

02———带3个字节短时标的单点遥信

04———带3个字节短时标的双点遥信

1e———带7个字节时标的单点遥信

1f———带7个字节时标的双点遥信

KWH:

0f———不带时标的电能量,每个电能量占5个字节

10———带3个字节短时标的电能量,每个电能量占8个字节

25———带7个字节短时标的电能量,每个电能量占12个字节

其他:

2e———双点遥控

2f———双点遥调

64———召唤全数据

65———召唤全电度

67———时钟同步

4、常用的传送原因列表:

1———周期、循环

2———背景扫描

3———突发

4———初始化

5———请求或被请求

6———激活

7———激活确认

8———停止激活

9———停止激活确认

0a———激活结束

14———响应总召唤

上一篇:python 学习之Windows 下的编码处理!


下一篇:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先