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有变化数据主动上送,主动上送变位遥信,类型标识为1或3
接收→变位遥信 :
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,类型标识为0x1e或0x1f
接收→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———响应总召唤