加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

IEC104规约报文详解

(2018-05-09 11:23:26)
标签:

365

目录:

一、规约概述

二、104报文分析例子

三、104规约源码示例

【a.对时过程的源码】主站->子站

【b.总召唤过程的源码】

【c. 电度召唤过程的源码】

【d. 单点遥控过程的源码】

【e. 关于主动上送】

【f .I格式和S格式报文控制字节中发送序号和接收序号的规律】


-----------------------------------------------------------------------------------------------------------

一、规约概述

IEC-60870-5-104:应用模型是:物理层,链路层,网络层,传输层,应用层

物理层保证数据的正确送达,保证如何避免冲突。(物理层利用如 RS232上利用全双工)

链路层负责具体对那个slave的通讯,对于成功与否,是否重传由链路层控制(RS485 2线利用禁止链路层确认)

应用层负责具体的一些应用,如问全数据还是单点数据还是类数据等(网络利用CSMA/CD等保证避免冲突的发生)

-----------------------------------------------

基本定义:端口号2404,站端为Server 控端为Client,平衡式传输,2Byte站地址,2Byte传送原因,3Byte信息地址。

-----------------------------------------------

注:APDU 应用规约数据单元(整个数据) = APCI 应用规约控制信息(固定6个字节) + ASDU 应用服务数据单元(长度可变)

-----------------------------------------------

APDU长度(系统-特定参数,指定每个系统APDU的最大长度)APDU的最大长度域为253(缺省)。视具体系统最大长度可以压缩。

-----------------------------------------------

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

 http://s12/mw690/001gz4SZzy7j2wzdvqXcb&690

下面的【字节12、13、14】有说明。


 -----------------------------------------------------------------------------------------------------------

二、104报文分析例子

Buf序     0  1   2   3    4   5   6   7   8  9  10 11 12 13 14 15 16 17 18 19 20 21 22

M->R:6815 10 00 02 00 1E 0103 00 01 00 79 00 00 0110 01 24 13 D2 0A 02分析的结果是I(主动上报SOE,主动上报因为104是平衡式规约)

      报文头固定为0x68,即十进制104

         长度15字节(不是6帧的,都是I帧)

           发送序号=8【控制字节的解析 10 00 02 00 ,发送序号:0010H/2=16/2=8】

                接收序号=1 【控制字节的解析 10 00 02 00 ,接收序号:0002H/2=2/2 =1】

                      0x1E=30 即 M_SP_TB_1 带长时标的单点信息

                        01 -> SQ:0  信号个数:1

                          03 00 -> 传送原因:[ T=0 P/N=0 原因=3 | 突发 ]

                               01 00 -> 公共地址:1

                                    79 00 00 -> 0x79=121 信息体地址: 121    

                                           01 -> 状态: 1 IV:0  NT:0  SB:0  BL:0

                                             10 01 24 13 D2 0A 02 ->低位10 高位01,

即0x0110=1*16*16+16=272 时标: 2002/10/18 19:36:00.272

-----------------------------------------------

每个字节都为unsigned Char类型,如果是2个字节表示1个short型,则都是低位在前,高位在后。

-----------------------------------------------

【字节0】0x68即十进制数104,68做为Buf第0个字节,下面的说明依次向后排

-----------------------------------------------

【字节1】15即从字节2到最后的所有字节数(长度)

-----------------------------------------------

【字节2、3、4、5】这4个字节是4个控制域,对应不同类型的格式(I帧、U帧、S帧),意义和格式都不相同

I帧(可变长度)的控制域定义:

http://s14/mw690/001gz4SZzy7j2kOxcCh0d&690

其中发送序号、接收序号的低位都需要左移1位,即乘2,才发出;接收时除2即可。

S帧(固定6个字节的短帧,用于确认接收到对方的帧,但本身无信息数据)的控制域定义:http://s6/mw690/001gz4SZzy7j2kPzkO105&690

U帧(固定6字节)的控制域定义:

http://s16/mw690/001gz4SZzy7j2kQzXdlcf&690

 启动控制信息(V-生效(激活) C-确认)  命令(TEST-测试 STOP-停止 START-启动)

-----------------------------------------------

【字节6】即ASDU的首字节就是类型标识(标准ASDU的选集【ASDU定义】)

类型标识与传送原因分配(站-特定参数):

灰块:不要求;黑块:本配套标准不允许;空白:功能或ASDU未采用

类型标识与传输原因的标记:

"×"只用在标准方向;"R" 只用在反方向;"B" 用在两个方向


在监视方向的过程信息

(站-特定参数,只用在标准方向标"×",只用在相反方向标"R",用在两个方向标"B")

□<1>   0x01:M-SP-NA-1 =单点信息(总召唤遥信、变位遥信)

■<2>   0x02:M-SP-TA-1 =带时标单点信息(SOE事项)

□<3>   0x03:M-DP-TA-1 =双点信息

■<4>   0x04:M-DP-TA-1 =带时标双点信息

□<5>   0x05:M-ST-NA-1 =步位置信息

■<6>   0x06:M-ST-TA-1 =带时标步位置信息

□<7>   0x07:M-BO-NA-1 =32比特串

■<8>   0x08:M-BO-TA-1 =带时标32比特串

□<9>   0x09:M-ME-NA-1 =测量值,规一化值(越限遥测)

■<10>  0x0A:M-ME-TA-1 =测量值,带时标规一化值

□<11>  0x0B:M-ME-NB-1 =测量值,标度化值

■<12>  0x0C:M-ME-TB-1 =测量值,带时标标度化值

□<13>  0x0D:M-ME-NC-1 =测量值,短浮点数

■<14>  0x0E:M-ME-TC-1 =测量值,带时标短浮点数

□<15>  0x0F:M-IT-NA-1 =累计量(电度量)

■<16>  0x10:M-IT-TA-1 =带时标累计量

■<17>  0x11:M-EP-TA-1 =带时标继电保护装置事件

■<18>  0x12:M-EP-TB-1 =带时标继电保护装置成组启动事件

■<19>  0x13:M-EP-TC-1 =带时标继电保护装置成组输出电路信息

□<20>  0x14:M-SP-NA-1 =具有状态变位检出的成组单点信息

□<21>  0x15:M-ME-ND-1 =测量值,不带品质描述的规一化值(总召唤遥测量)


□<30>  0x1E:M-SP-TB-1 =带时标CP56Time2A的单点信息

□<31>  0x1F:M-DP-TB-1 =带时标CP56Time2A的双点信息

□<32> 0x20:M-ST-TB-1 =带时标CP56Time2A的步位信息

□<33>  0x21:M-BO-TB-1 =带时标CP56Time2A的32位串

□<34>  0x22:M-ME-TD-1 =带时标CP56Time2A的规一化测量值

□<35>  0x23:M-ME-TE-1 =测量值,带时标CP56Time2A的标度化值

□<36>  0x24:M-ME-TF-1 =测量值,带时标CP56Time2A的短浮点数

□<37>  0x25:M-IT-TB-1 =带时标CP56Time2A的累计值

□<38>  0x26:M-EP-TD-1 =带时标CP56Time2A的继电保护装置事件

□<39>  0x27:M-EP-TE-1 =带时标CP56Time2A的成组继电保护装置成组启动事件

□<40>  0x28:M-EP-TF-1 =带时标CP56Time2A的继电保护装置成组输出电路信息

ASDU集<1>、<3>、<5>、<7>、<9>、<11>、<13>、<15>、<20>、<21>、<30>-<40>都可采用。


在监视方向的系统信息

(站-特定参数,采用标"×")

□<70> 046x:M-EI-NA-1 =初始化结束

以上都是RTU向主站上传的报文类型


在控制方向的过程信息

(站-特定参数,只用在标准方向标"×",只用在反方向标"R",用在两个方向标"B")

□<45> 0x2D:C-SC-NA-1 =单命令(遥控)

□<46> 0x2E:C-DC-NA-1 =双命令(遥控)

□<47> 0x2F:C-RC-NA-1 =升降命令

□<48> 0x30:C-SE-NA-1 =设定值命令,规一化值 (遥调)

□<49> 0x31:C-SE-NB-1 =设定值命令,标度化值

□<50> 0x32:C-SE-NC-1 =设定值命令,短浮点数

□<51> 0x33:C-BO-NA-1 =32比特串


□<58> 0x3A:C-SC-TA-1 =带时标CP56Time2A的单命令

□<59> 0x3B:C-DC-TA-1 =带时标CP56Time2A的双命令

□<60> 0x3C:C-RC-TA-1 =带时标CP56Time2A的升降命令

□<61> 0x3D:C-SE-TA-1 =带时标CP56Time2A的设定值命令,规一化值

□<62> 0x3E:C-SE-TB-1 =带时标CP56Time2A的设定值命令,标度化值

□<63> 0x3F:C-SE-TC-1 =带时标CP56Time2A的设定值命令,短浮点数

□<64> 0x40:C-BO-TA-1 =带时标CP56Time2A的32比特串

可采用〈45-51〉或〈58-64〉ASDU。

RTU须逐条对命令用相同报文确认


在控制方向的系统信息

(站-特定参数,只用在标准方向标"×",只用在反方向标"R",用在两个方向标"B")

□<100> 0x64:C-IC-NA-1 =总召唤命令(总召唤)

□<101> 0x65:C-CI-NA-1 =电能脉冲召唤命令(召唤电度量)

□<102> 0x66:C-RD-NA-1 =读命令

□<103> 0x67:C-CS-NA-1 =时钟同步命令(校时)

■<104> 0x68:C-TS-NA-1 =测试命令

□<105> 0x69:C-RP-NA-1 =复位进程命令

■<106> 0x6A:C-CD-NA-1 =延时传输命令

□<107> 0x6B:C-TS-TA-1 =带时标CP56TimE2A的测试命令

RTU须逐条形成镜像报文


在控制方向的参数命令

(站-特定参数,只用在标准方向标"×",只用在反方向标"R",用在两个方向标"B")

□<110> 0x6E:P-ME-NA-1 =测量值参数,规一化值

□<111> 0x6F:P-ME-NB-1 =测量值参数,标度化值

□<112> 0x70:P-ME-NC-1 =测量值参数,短浮点数

□<113> 0x71:P-AC-NA-1 =参数激活


文件传输

(站-特定参数,只用在标准方向标"×",只用在反方向标"R",用在两个方向标"B")

□<120> 0x78:F-FR-NA-1 =文件准备好

□<121> 0x79:F-SR-NA-1 =节已准备好

□<122> 0x7A:F-SC-NA-1 =召唤目录,选择文件,召唤文件,召唤节

□<123> 0x7B:F-LS-NA-1 =最后的节,最后的度

□<124> 0x7C:F-AF-NA-1 =确认文件,确认节

□<125> 0x7D:F-SG-NA-1 =段

□<126> 0x7E:F-DR-TA-1 =目录{空白或×,只在监视(标准)方向有效}

-----------------------------------------------

【字节7】可变结构限定词

http://s12/mw690/001gz4SZzy7j2kS49kvdb&690

D7位: SQ=0离散的信息报告,SQ=1顺序的信息报告,一般取1

Num:信息的数目范围0-127(即1个包中包含的遥测YC、遥信YX等信息的个数)

-----------------------------------------------

【字节8、9】传送原因

http://s13/mw690/001gz4SZzy7j2kT6rPSbc&690

常用传送原因CAUSE

3 0x03 突变信息

5 0x05 请求、被请求

6 0x06 激活

7 0x07 激活确认

8 0x08 停止激活

9 0x09 停止激活确认

10 0x0A 激活终止

20 0x14 响应站总召唤

21-36 0x15-0x24 响应第1组召唤-响应第16组召唤

37 0x25 响应计数量

38-41 0x26-0x29 响应第1组计数量-响应第4组计数量

-----------------------------------------------

【字节10、11】公共地址(即厂站地址)

一般LINK ADDR(链路地址)取站地址,如果站中仍分区(SUSTATION)就用ASDU来区分,如果只有一个那干脆取一样就好了。

例如01 00 则由于低位01 高位00 即 0x0001 公共地址=1

-----------------------------------------------

以下部分根据前面 字节6的类型,字节7的个数、以及是顺序还是单个,决定了信息体的个数和格式。

-----------------------------------------------

【字节12、13、14】信息体地址,即我们常说的点号

例如 79 00 00 则由于低位79 中间00 高位00 即 0x000079 = 7*16+9 = 112+9 = 121

推荐的信息对象地址范围

数据类型 新地址分配范围 信息量 老地址分配范围 信息量

遥信量 1H—1000H         4096 1H—400H  1024

遥测量 4001H—5000H  4096 701H-900H 512

参数量 5001H—6000H  4096 901H-B00H 512

遥控量 6001H—6200H  512 B01H-B80H   128

设定值 6201H—6400H  512 B81H-C00H   128

步位置量(变压器分接头)   66011H—6700H 256 C81H-CA0H  32

向子站传送二进制信息      6701H—6800H 256 CA1H-CC0H    32

子站远动终端状态             6801H   CE9H

-----------------------------------------------

【字节15】信息定义

遥测归一化值(数据的一种离散表示方法,可保证数据精度)

可用下面公式。例子:传送二次电压值,量程其它量程应该是多少呢?为100,实时值X=99.98,使用16点采样方式,y应该是多少?

http://s13/small/001gz4SZzy7j2kVsKiU7c&690

  求得y=27300.37217,取整并整理为 0x6AA4,则发送的归一化值为 0xA4A6。


-----------------------------------------------------------------------------------------------------------

三、104规约源码示例

【a.对时过程的源码】主站->子站

主站(客户)端下发:

68  14(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  67(ASDU) 1(信息体个数)06 00(传送原因) 公共地址低 公共地址高 00 00 00(信息体地址)毫秒低 毫秒高 分钟 小时 日期 月份 年份

RTU(服务器)端应答:

68  14(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  67(ASDU) 1(信息体个数)07 00(传送原因) 公共地址低 公共地址高 00 00 00(信息体地址)毫秒低 毫秒高 分钟 小时 日期 月份 年份

-----------------------------------------------

【b.总召唤过程的源码】

主站(客户)端下发:

68  0E(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  64(ASDU) 1(信息体个数)06 00(传送原因) 公共地址低 公共地址高 00 00 00(信息体地址)14是总召唤还是分组召唤,02年修改后的规约中没有分组召唤

《RTU(服务器)端应答》

1对总召唤进行确认:

68  0E(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  64(ASDU) 1(信息体个数)07 00(传送原因) 公共地址低 公共地址地 00 00 00(信息体地址)14(同上)

上送全遥信(可能多帧):(遥信都按单遥处理)

68        APDU长度 控制字节1 控制字节2 控制字节3 控制字节4  02(ASDU)信息体个数(Bit7=1,表示连续信息体地址) 14 00(传送原因) 公共地址低 公共地址高  3字节的第1点遥信信息体地址  第1点遥信的品质描述和值  第1点遥信的3字节时标 ……

上送全遥测(可能多帧):(其中标度化遥测数的表示方法为:Bit10-Bit0为数值部分,负数为补码;Bit11为符号位,0正1负;Bit15-Bit12为空)

68        APDU长度 控制字节1 控制字节2 控制字节3 控制字节4  0B(ASDU,表示采用标度化值)信息体个数(Bit7=1,表示连续信息体地址) 14 00(传送原因) 公共地址低 公共地址高  3字节的第1点遥测信息体地址  第1点遥测的2字节标度化值  第1点遥测的品质描述 ……

2总召唤结束:

68  0E(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  64(ASDU)1(信息体个数) 0A 00(传送原因) 公共地址低 公共地址地 00 00 00(信息体地址)14

-----------------------------------------------

【c. 电度召唤过程的源码】

主站(客户)端下发:

68  0E(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  0F(ASDU) 1(信息体个数) 06 00(传送原因) 公共地址低 公共地址高 00 00 00(信息体地址)14

《RTU(服务器)端应答(很明显窗口尺寸>1):》

1对电度召唤进行确认:

68  0E(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  0F(ASDU) 1(信息体个数) 07 00(传送原因) 公共地址低 公共地址地 00  00 00(信息体地址)1

2上送全电度(可能多帧):

68        APDU长度 控制字节1 控制字节2 控制字节3 控制字节4  0F(ASDU)信息体个数(Bit7=1) 25 00(传送原因) 公共地址低 公共地址高  3字节的第1点电度信息体地址  第1点电度的4字节值  第1点电度的品质 描述0xC0 ……

3电度召唤结束:

68  0E(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  64(ASDU)1(信息体个数)0A 00(传送原因) 公共地址低 公共地址地 00 00 00(信息体地址)14

-----------------------------------------------

【d. 单点遥控过程的源码】

1主站(客户)端下发单点遥控选择:(其中遥控性质字节的各位含义:Bit7=1,选择;=0,执行;Bit1Bit0=01,合闸;=00,分闸(单遥);=02,合闸;=01,分闸(双遥);Bit65432=1,短脉冲;=2,长脉冲;=3,持续)

68  0E(APDU长度) 控制字节1 控制字节2 控制字节3 控制字节4  2D(ASDU)1(信息体个数)06 00(传送原因) 公共地址低 公共地址地 被控点的3字节信息体地址 1字节的遥控性质

2RTU(服务器)端进行单点遥控选择应答:和主站(客户)端下发基本相同,若是确认,把传送原因改为07;若是否认,把传送原因改为47(传送原因低字节的Bit6=1表示否定确认)

3主站(客户)端下发单点遥控执行:和选择报文基本相同,仅遥控性质字节的Bit7=0

4RTU(服务器)端进行单点遥控执行应答:和主站(客户)端下发基本相同,若是确认,把传送原因改为07;若是否认,把传送原因改为47

-----------------------------------------------

【e. 关于主动上送】

1)主动上送变化遥信的报文源码(可能多帧)(遥信都按单遥处理)

68        APDU长度 控制字节1 控制字节2 控制字节3 控制字节4  02(ASDU)信息体个数(Bit7=0,表示每个变化点前自带信息体地址) 03 00(传送原因) 公共地址低 公共地址高  3字节的第1个变化遥信点信息体地址  第1个变化遥信点的品质描述和值  第1点遥信的3字节时标 ……

2主动上送变化遥测的报文源码(可能多帧)

68        APDU长度 控制字节1 控制字节2 控制字节3 控制字节4  0B(ASDU)信息体个数(Bit7=0,表示每个变化点前自带信息体地址) 03 00(传送原因) 公共地址低 公共地址高  3字节的第1个变化遥测点的信息体地址  第1个变化遥测点的2字节标度化值  第1个变化遥测点的品质描述 ……

-----------------------------------------------

【f .I格式和S格式报文控制字节中发送序号和接收序号的规律】

1本端每发送1次I格式报文,本端的发送序号加1;本端发送U格式或S格式报文,本端发送序号保持不变。

2正常情况下对端上次报文中的发送序号+1=本端本次报文中的接收序号。

3正常情况下对端上次报文中的接收序号 =本端的发送序号。

-----------------------------------------------------------------------------------------------------------

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有