详解IEC104 规约【最详细版】
1. 基本概念
IEC60870-5-104 是一种电力自动化系统中常用的通信协议,使用 TCP/IP 协议作为底层通信协议,用于监视和控制电力系统中的各种设备,如变电站、发电机、开关等。
1.1 控制站(client)\受控制站(server)
IEC104 协议是基于TCP的应用层协议。其架构为client/Server 模式。 TCP Server 负责和实际的硬件控制,数据采集,命令执行等功能,因此也叫受控制站/分站, IEC101 中还被叫做Slave。TCP Client 负责远程控制,获取server采集的数据,配置server等,因此也叫控制站,IEC101 中还被叫做Master。
1.2 链路层传输模式
IEC104 支持两种传输模式: 平衡传输模式, 和非平衡传输模式。
-
非平衡传输模式
在该模式下,只有控制站(client)才能启动一次消息传输,受控站(server) 只能响应控制站(client)的请求。在这种模式下,控制站(client)通过依次轮询 所控制的 受控站(server)来获取对应的业务数据。该种模式下,支持的传输服务类型如下表:
-
平衡传输模式
当使用平衡模式传输时,每个站(client和server)都可以启动消息传输。该种模式下,支持的传输服务类型如下表:
服务 | 描述 |
---|---|
SEND/CONFIRM | |
SEND/NO REPLY | 这只能由具有多点对点配置中的广播地址的控制站启动 |
在IEC104 协议中,平衡模式是最常用的。
1.3 数据对象 & 编址
Iec104 的数据对象 就是 信息对象,本文第三章有非常详细的描述,在此不必赘述。
IEC104 定义了数据链路层的地址和应用层级的地址。
链路地址(COT), 也叫传输原因,长度可以是, 0, 1 ,2 byte 的长度,后面会有详细描述。
ASDU地址(通用地址,COA):就是站点地址,区分位于那个站点。
1.4 基础的应用功能
1.4.1 数据采集
iec104 协议中,所有的数据都被缓存在受控站中(Server),因为数据产生的速度可能会比传输的速度更快。
- 在非平衡传输的链路模式下,受控站(Server)总是等待控制站发送的数据polling请求,并给以回应。也就是常说的一问一答,不问不答模式。
- 在平衡传输的链路模式下,受控站(Server)既可以回应 控制站 的各种请求, 也可以当数据产生变化时,或者周期性上报对象值时,主动将对应的数据传输给控制站(client)。 现总结该模式下受控站(Server)的数据采集行为如下:
- 当数据对像的值产生改变时,受控站(Server)主动上报其产生的数据;
- 当周期性上报数据时,受控站(Server)主动上报其产生的数据;
- 回应控制站(client)的控制命令,如总召唤等;
- 回应读请求;
1.4.2 事件采集
受控站(Server)的应用层级事件会自动发生。其在平衡传输模式和非平衡模式下采集方式和数据采集完全相同。
1.4.3 召唤(Interrogation)
英文翻译叫询问,官方翻译叫召唤。其实感觉询问更切近。
当一个控制站初始化后,或者控制站探测到相应信息有丢失,控制站(client) 就需要发送召唤命令,去请求受控站(Server)发送其 【所有】过程变量 的实际值。
控制站(client)可以在仍何时候发送召唤命令,以同步受控站(Server)中的所有过程变量的值。召唤命令分为总召唤和群组召唤,现详细描述如下:
- 总召唤/general interrogation (GI)
总召唤命令会请求受控站(Server)中所有群组的所有数据对象的值的更新给控制站。 - 群组召唤
在受控站(Server)端,数据对象可以通过配置COT的值为20~36来设定数据对象的召唤群组。20代表总召唤,21~36 分别对应INRO1~INRO16,分别对应16个召唤群组。控制站(client) 在召唤时,可以通过指定召唤群组,来让该召唤组中的数据对象值更新。
1.4.4 时钟同步
受控站(Server)和 控制站(client)必须保证时钟同步,这样才能传输给控制站的数据和事件拥有保证精确的时标。
系统初始化完成后,控制站(client)应该应当发送一次一次时钟同步指令, 此后,通过发送时钟同步命令(C_CS ACT)来周期性地重新同步时钟。
1.4.5 命令传输(遥控)
命令(也被称作遥控)是 控制站(client) 用来改变受控站(Server)操作设备的状态的API。一个命令可以由操作员发起,也可以由控制台中的自动监控程序发起。命令(遥控)分为直控命令(单步命令)和选控命令:
命令传输有两种类型:
-
直控命令(Single command)
直控命令实际上就是去掉选择命令,直接发执行命令。一般来说保护压板、保护复归为直控;
直控的一般流程如下: 主站下发执行命令→装置回执行确认报文。 -
选控命令(Select and execute)
和直控命令(Single command)相比,该命令包含两个执行过程:- Select 阶段:
控制站发送一个该命令的Select的操作,受控站会检查该命令该命令是否正确,确认该命令是否已经有正确的执行操作。并把结论返回给控制站。 - execute阶段
Select 返回预期时,执行命令。执行完成后, 装置回执行确认报文。
- Select 阶段:
1.4.6 累计量传输
累计量是一个值在指定时间内的积分值。累计量的连续采集时间间隔和Clock 是系统参数。有两种方法获取累计值的计数器信息:
- Freeze-and-Read: 累计量采集
- Clear-and-Read: 增量信息的采集
控制站(client) 可以根据需要,使用计数器召唤命令(counter interrogation) 获取累计量计数器对象的值。累计量也可以被配成,当计数器冻结操作(counter freeze operations)发生时,主动上报其计数值。
1.4.7 协议和链路参数的更改
当协议和链路参数的值发生更改时,新值在提交后生效。
1.4.8 传输延迟的采集
时间校正值由传输延迟和内部设备延迟之和确定,传输延迟是可以通过参数化单独获取的值,或者通过控制站启动一个时间校准进程来实现的。
2. iec104 协议的帧结构
iec104 基于TCP/IP 传输,是一个应用层协议, 其帧结构被称为 APDU,APDU 一般由 APCI 和 ASDU组成。
2.1 APDU (Application Protocol Data Unit)
APDU 被称为应用协议数据单元,也就是一个iec104 的协议帧的官方叫法。一个APDU(也就是协议帧),可以只包含一个APCI, 或者 一个APCI + ASDU。
APDU = APCI
or
APDU = APCI + ASDU
APDU 的最大长度为255byte。
2.2 APCI (Application Protocol Control Information)
APCI(应用控制信息,类似于帧头),由一个1byte 的起始字节0x68 + 1 byte ADPU 的长度 + 4 个1 byte控制位域(CF)组成。详细如下图所示。
APCI 中第一个控制位域(CF1)的最低2bit,确定了帧的格式,iec104 定义了3种格式的帧。其如下图所示:
- I-format (information transfer format), last bit of CF0 是0
- 它用于控制RTU(server, slave) 和 类SCADA(master, client)之间的信息传输,其位可变长度。
- I-format 的数据帧(APDU)总是包含ASDU。
- I-format 的控制位域表明了消息的方向,其包含了两个15bit 的序号数字,每个方向上,每个APDU的序号数字都会被有序的加1。并且在0~32767之间循环。
- 发送器在发送一个iFrame后,会将发送端的发送序号自动加1,同时将该iFrame保存在发送缓冲区中, 直到它接受到一个ADPU,该APDU中接收序号表明接收到发送端发送的对应发送序号&以下的iFrame,这些iFrame会被从发送缓冲区移除。
- 接受器接收到一个iFrame后,会将接收端的接收序号自动加1,当接收序号到达设定的数量后,会给发送端回应一个sFrame 的Ack。如果在一定的时间内,接收端接收的iFrame 未到达该设定的数量,接收端也会发送一个sFrame的Ack。如果接收端在一定的时间内都处于idle状态,且存在没有回应的iFrame, 接收端就会给其回应一个sFrame的Ack。
- TCP 连接建立后,发送/接收序号应当被置0;
- 发送/接收序号由CF位域由LSB 和MSB 构成,I-Format的帧序号只有15bit, 如下图所示:
- S-format (numbered supervisory functions), last bits of CF1 是 01
- 一般作为一个/多个iFrame的Ack , 固定APDU 长度
- S-format APDU 只有APCI, 没有ASDU。
- 在iFrame只是单向情况下, S-format的APDUs 必须被发送出去,当相应的iFrame 超时,溢出,或者到达IFrame 接收的最大允许数量。
- U-format (unnumbered control functions), last bits of CF2 是 11
-
被用于有序的控制功能, 固定APDU 长度
-
U-format 的APDU只有一个APCI,没有ASDU。其功能包括TESTFR
(测试帧), STOPDT (停止数据传输) or STARTDT (开启数据传输,它们可以同时被激活。其CF1的二进制值,如下图所示:
-
uFrame 用于STARTDT(开启数据传输),STOPDT(关闭数据传输)和TESTFR(测试帧)的激活&确认机制。
-
STARTDT和STOPDT 用于client(master,也称控制站点)去控制Server(Slave,也称被控制站点)去开启/关闭数据传输;
当连接建立时,用户数据传输是没有被使能的(默认是处于STOPDT状态的),在这种状态下,客户端通过这个连接是不能发送仍何用户数据的(uFrame是可以发送的)。客户端必须发送一个**STARTDT 激活(STARTDT activate)指令去激活用户数据的传输,服务器端将会回应一个STARTDT 确认(STARTDT confirm)**消息。如果没有收到该确认消息,client将会关闭此连接。只有client才可以发送STARTDT 激活指令。当连接建立好后,client 才可以向server 发送STARTDT激活指令,该指令只能被发送一次。激活后,该连接才可以在仍何时间发送仍何消息, 直到连接被STOPDT激活指令终止。
-
client & server必须周期性地发送TESTFR帧,去检测所有连接的连接状态,和通信问题等.
client & server必须周期性地发送**TESTFR 激活(TESTFR activate)指令,对应的TESTFR确认(TESTFR confirm)**帧必须被回应。
在一定的时间内,连接没有数据传输时,client/server 就可以启动这个测试进程。
-
2.3 ASDU格式
ASDU包含两个主要的段:数据单元识别符(长度固定为6Byte), 和数据段。数据段由一个或者多个信息对象构成。数据单元识别符定义了数据的类型,提供数据标识的寻址,包含额外的信息,如传输原因等。 每一个ASDU可以传输最大127个信息对象。 ASDU 的结构如下:
2.3.1 数据单元识别符
数据单元识别符包含以下位域:
-
Type identification (TypeID, 1 byte)
- TypeID 的值,0不可用,1~127用于标准的IEC101协议定义。128~135 用于消息路由,135~255为特殊使用。
- 对于标准的IEC101协议,有58个类型被定义,其定义如下:
- 值的注意的是TypeID 贯穿于整个ASDU,如果有多个信息对象被包含在该ASDU中,这些信息对像就有相同的类型。
-
SQ (Structure Qualifier) bit
SQ 位域指定了信息对象&信息元素如何被编址。- SQ=0 (一系列的信息对象):
单个/多个信息元素的寻址如下图所示。- 信息元素被信息对象地址,ASDU 可能由一个或者多个相同类型的信息对象组成,这个信息对象的长度被变码成二进制,并被定义在Number of Objects 位域。
- SQ=0 表示了一系列的信息对象,这些信息对象都自己的地址,数据单元识别符中用一个7bit 的数据表示信息对象的个数。其如下图所示。因此它们可以装载多达127个信息对象。
- SQ=1 (仅仅只有一个信息对象)
编址一种信息对象的单个或者多个信息元素。- 一系列相同的信息对象(例如,相同格式的测量值)被通过information object address 位域寻址。信息对象的地址就是第一个信息元素的地址。信息元素根据不同的偏移被寻址。这个信息元素的长度被变码成二进制,并被定义在Number of Objects 位域。在这种情况,该ASDU只有一个信息对象,信息对象由一系列的信息元素组成。
- 当SQ=1时,ASDU只有一个信息对象, 这个对象包含了一系列的信息元素。仅仅只有一个信息对象地址,这个信息对象的地址就是第一个信息元素的地址。
其如下图所示:
- SQ=0 (一系列的信息对象):
-
Number of objects/elements
- 范围为0~127
- 0 表示没有包含信息对象
- 1~127 表示信息对象/信息元素的个数
-
T (test) bit
只用于测试,不会控制处理器&更改系统状态- T=0 (非测试模式), T=1 (测试模式)
-
P/N (positive/negative) bit
积极/消极的激活确认。- 当使用控制命令时,这个位域是有意义的。该位域通常表示控制命令是否被成功执行。P=0表示肯定确认,P=1表示否定确认。 非控制命令,这个位域总是置0。
-
Cause of transmission (COT)
- COT 用于控制通信种的消息路由,该消息路由会把ASDU路由到正确的程序&任务。控制方向的ASDU会相应的服务确认。
- COT 是一个6位码, 它被用于描述目标栈点的信息。
- 0 没有被定义, 1~47用于标准定义。48-63 为特殊目的使用。
-
Originator Address (ORG)
- 这个是可选的,它为控制栈点提供了一种明确识别自己的方式。当系统中只有一个控制栈点时,是没有必要的。但多个控制栈点,或者一些栈点是双栈模式是,是有用的。在这种情况下,始发方地址可用于将命令确认引导回特定的控制站而不是整个系统
-
ASDU Address Field (Common Address of ASDU, COA),
- 该地址称为公共地址,是因为它与包含在ASDU内的所有对象相关联。其经常被解释为栈点地址。然而,它可以被构造为形成一个站点/扇区地址,其中各个站点由多个逻辑单元构成。
- COA 总是一个或者两个字节的长度。
- 全局地址也叫做广播地址,它会发送给所有的栈点。控制方向上的广播类ASDU,必须要要被回应,回应是监控方向上的,且必须带上自己的栈点地址。
- 0不被用, 1~65534 被定义为站点地址。 65535 被定义为广播地址。
- 当相同功能的应用被启动时,使用广播地址。它仅限于以下ASDU:
- TypeID=100 (询问命令): 在公共时间使用特定系统数据快照进行回复
- TypeID=101 (反询问命令): 在公共时间冻结总计
- TypeID=103 (时钟同步命令): 同步时钟到通用时间。
- TypeID=105 (复位进程命令): 同时复位
2.3.2 信息对象
ASDU在其结构中传输信息对象,每一个信息对象都被信息对象地址(IOA)编址。IOA用以识别站点内定义的数据。IEC104中,信息对象地址(IOA)的长度为3byte。在控制方向上,该地址为目标地址,监控方向上,该地址为源地址。
- 通常情况下,IOA 的地址范围被限制到最大35535(2 byte)。在特殊情况下,IOA的第三个字节仅用于结构化信息对象地址的情况,以便在特定系统中定义明确的地址。
- 如果ASDU 的信息对象地址,没有被用,将被设置为
0。
在一个ASDU中被传输的所有信息对象,都必须有相同的ASDU Type。如果有多个不同类型的信息对象,它们必须被装载进不同的ASDU中传输。
在IEC104 协议中,每一个ASDU类型,都有一对应的消息对象格式。
例如信息对象有哪些信息元素构成等。
- 下图展示了一个单点没有时间的信息对象(ASDU
type=1), 这个对象有两种格式:一个是 SQ=0 和另一个是 SQ=1。这个对象的合法COT 是: 2 (background scan), 3 (spontaneous), 5 (requested), 11, 12 (feedback), 20 +G
(interrogated by station interrogation)。
- 一些信息对象包含一些元素,例如,下图显示了信息对象类型10(测量值,归一化的时间标签), 这个对象的SQ进为0,包含了3个信息元素: 归一化值NVA(3byte),质量描述符(1byte),和二进制的时间戳(3bytes)。其COT 的合法值为spontaneous (code 3) or requested (code 5)。
2.3.3 信息元素
3. ASDU类型&描述
对于每一种ASDU的类型,IEC104 都定义了对应的信息对象类型。 下面我们将分类描述
3.1 监视方向上的过程信息
类型标识 | 描述 | 引用 | 信息对象格式 | 合法的COT |
---|---|---|---|---|
1 | 单点信息 | M_SP_NA_1 | SIQ | 2,3,5,11,20,20+G |
3 | 双点信息 | M_DP_NA_1 | DIQ | 3,5,11,12 |
5 | 步位置信息 | M_ST_NA_1 | VTI + QDS | 2,3,5,11,12,20,20+G |
7 | 32比特串 | M_BO_NA_1 | BSI + QDS | 2,3,5,11,12,20,20+G |
9 | 归一化测量值 | M_ME_NA_1 | NVA + QDS | 2,3,5,11,12,20,20+G |
11 | 标量化测量值 | M_ME_NB_1 | SVA + QDS | 2,3,5,11,12,20,20+G |
13 | 浮点型测量值 | M_ME_NC_1 | IEEE STD 754 + QDS | 2,3,5,11,12,20,20+G |
15 | 累计值 | M_IT_NA_1 | BCR | 2,37,37+G |
20 | 带状态检出的成组单点信息 | M_PS_NA_1 | SCD+QDS | 2,3,5,11,12,20,20+G |
21 | 不带品质描述的归一化测量值 | M_ME_ND_1 | NVA | 1,2,3,5,11,12,20,20+G |
22~29 | 为将来的兼容定义保留 | |||
30 | 带时标CP56Time2a的单点信息 | M_SP_TB_1 | SIQ+ CP56Time2a | 3,5,11,12 |
31 | 带时标CP56Time2a的双点信息 | M_DP_TB_1 | DIQ+ CP56Time2a | 3,5,11,12 |
32 | 带时标CP56Time2a的步位置信息 | M_ST_TB_1 | VTI + QDS+ CP56Time2a | 2,3,5,11,12 |
33 | 带时标CP56Time2a的32比特串 | M_BO_TB_1 | BSI + QDS+CP56Time2a | 3,5 |
34 | 带时标CP56Time2a的归一化测量值 | M_ME_TD_1 | NVA + QDS+CP56Time2a | 3,5 |
35 | 带时标CP56Time2a的标量化测量值 | M_ME_TE_1 | SVA + QDS+CP56Time2a | 3,5 |
36 | 带时标CP56Time2a的浮点型测量值 | M_ME_TF_1 | IEEE STD 754 + QDS+CP56Time2a | 2,3,5,11,12,20,20+G |
37 | 带时标CP56Time2a的累计值 | M_IT_TB_1 | BCR+CP56Time2a | 3,37,37+G |
38 | 带时标CP56Time2a的继电器保护装置事件 | M_EP_TD_1 | QDP+CP16Time2a+CP56Time2a | 3 |
39 | 带时标CP56Time2a的继电器保护装置成组启动事件 | M_EP_TE_1 | SEP + QDP+CP16Time2a+CP56Time2a | 3 |
40 | 带时标CP56Time2a的继电器保护装置成组输出电路信息 | M_EP_TF_1 | OCI + QDP+CP16Time2a+CP56Time2a | 3 |
类型表示1~15中,单数是不带时标的信息元素,双数是带时标CP24Time2a的对应信息元素。其对象格式,是给不带时标的信息元素格式的基础上+CP24Time2a。
引用的命名格式如下:
M_ :监视方向的信息元素
_Nx:不带时标
_Tx: 带时标
_xA:type A: 有质量描述副的状态或归一化值
_xB:type B: 有质量描述副的标量值
_xC:type C: 有质量描述副的浮点值
_xD:type D: 没有有质量描述副的归一化值
信息对象格式描述了信息对象由那些信息元素组成。
3.2 控制方向上的过程信息
类型标识 | 描述 | 引用 | 信息对象格式 | 合法的COT |
---|---|---|---|---|
45 | 单命令 | C_SC_NA_1 | SCO | 6,7,8,9,10,44,45,46,47 |
46 | 双命令 | C_DC_NA_1 | DCO | 6,7,8,9,10,44,45,46,47 |
47 | 步调节命令 | C_RC_NA_1 | RCO | 6,7,8,9,10,44,45,46,47 |
48 | 设点命令,归一化值 | C_SE_NA_1 | NVA + QOS | 6,7,8,9,10,44,45,46,47 |
49 | 设点命令,标量值 | C_SE_NB_1 | SVA + QOS | 6,7,8,9,10,44,45,46,47 |
50 | 设点命令,短浮点值 | C_SE_NC_1 | IEEE STD 754 +QOS | 6,7,8,9,10,44,45,46,47 |
51 | 32比特串 | C_BO_NA_1 | BSI | 6,7,8,9,10,44,45,46,47 |
52~57 | 为将来的兼容定义保留 | |||
58 | 带时标CP56Time2a的单命令 | C_SC_TA_1 | SCO+CP56Time2a | 6,7,8,9,10,44,45,46,47 |
59 | 带时标CP56Time2a的双命令 | C_DC_TA_1 | DCO+CP56Time2a | 6,7,8,9,10,44,45,46,47 |
60 | 带时标CP56Time2a的步调节命令 | C_RC_TA_1 | RCO+CP56Time2a | 6,7,8,9,10,44,45,46,47 |
61 | 带时标CP56Time2a的设点命令,归一化值 | C_SE_TA_1 | NVA + QOS+CP56Time2a | 6,7,8,9,10,44,45,46,47 |
62 | 带时标CP56Time2a的设点命令,标量值 | C_SE_TB_1 | SVA + QOS+CP56Time2a | 6,7,8,9,10,44,45,46,47 |
63 | 带时标CP56Time2a的设点命令,短浮点值 | C_SE_TC_1 | IEEE STD 754 +QOS+CP56Time2a | 6,7,8,9,10,44,45,46,47 |
64 | 带时标CP56Time2a的32比特串 | C_BO_TA_1 | BSI+CP56Time2a | 6,7,8,9,10,44,45,46,47 |
65~69 | 为将来的兼容定义保留 |
引用的命名格式 C_ :控制方向的信息对象。
注意:控制方向的信息对象(也叫命令),必须要和对应类型的监视方向上的过程信息对象 产生Map才可以起作用,否则,命令无法起作用。
3.3 监视方向上的系统信息
类型标识 | 描述 | 引用 | 信息对象格式 | 合法的COT |
---|---|---|---|---|
70 | 初始化结束 | M_EI_NA_1 | COI | 4 |
71~99 | 为将来的兼容定义保留 |
3.4 控制方向上的系统信息
类型标识 | 描述 | 引用 | 信息对象格式 | 合法的COT |
---|---|---|---|---|
100 | 总召唤命令 | C_IC_NA_1 | QOI | 6,7,8,9,10,44,45,46,47 |
101 | 电能脉冲召唤命令 | C_CI_NA_1 | QCC | 6,7,8,9,10,44,45,46,47 |
102 | 读命令 | C_RD_NA_1 | 无 | 5 |
103 | 时钟同步命令 | C_CS_NA_1 | CP56Time2a | 3,6,7,44,45,46,47 |
104 | (IEC 101) Test command | C_TS_NB_1 | FBP | 6,7,44,45,46,47 |
105 | 复位进程命令 | C_RP_NC_1 | QRP | 6,7,44,45,46,47 |
107 | 带时标CP56Time2a的测试命令 | C_TS_TA_1 | ||
108~109 | 为将来的兼容定义保留 |
3.5 控制方向上的参数
类型标识 | 描述 | 引用 | 信息对象格式 | 合法的COT |
---|---|---|---|---|
110 | 归一化测量值 | P_ME_NA_1 | NVA + QPM | 6,7,9,10,20,20+G,44,45,46,47 |
111 | 标量化测量值 | P_ME_NB_1 | SVA + QPM | 6,7,20,20+G,44,45,46,47 |
112 | 浮点测量值 | P_ME_NC_1 | IEEE STD 754 +QPM | 6,7,20,20+G,44,45,46,47 |
113 | 参数激活 | P_AC_NA_1 | QPA | 6,7,8,9,44,45,46,47 |
114~119 | 为将来的兼容定义保留 | |||
参数都是控制方向上的,和监控方向的对象相比,其值发生变化时,不会上报,只有总召唤时,可以上报给数据的值。 |
3.6 文件传输
类型标识 | 描述 | 引用 | 信息对象格式 | 合法的COT |
---|---|---|---|---|
120 | 文件已准备好 | F_FR_NA_1 | NOF + LOF + FRQ | 13 |
121 | 节点已准备好 | F_SR_NA_1 | NOF + NOS + LOF +SRQ | 13 |
122 | 召唤目录,选择文件,召唤文件,选择节 | F_SC_NA_1 | NOF + NOS + SCQ | 5,13 |
123 | 最后的节,最后的段 | F_LS_NA_1 | NOF + NOS + LSQ +CHS | 13 |
124 | 确认文件,确认节 | F_AF_NA_1 | NOF + NOS + AFQ | 13 |
125 | 段 | F_SG_NA_1 | NOF + NOS + LOS +segement | 13 |
126 | 目录 | F_DR_TA_1 | NOF + LOF + SOF +CP56Time2a | 3,5 |
127 | 日至查寻-请求存档文件 | F_SC_NB_1 |
4. 信息元素详解
信息元素是构成信息对象的基本单元,就像OOP 中的变量一样,是构成Object的基础。
我们给出一个IEC104的信息元素列表:
监视方向的过程信息
元素类型 | 描述 | 长度(byte) | 使用的信息对象 |
---|---|---|---|
SIQ | 有质量描述符的单点信息 | 1 | 1, 2, 30 |
DIQ | 有质量描述符的双点信息 | 1 | 3 |
BSI | 二进制状态信息 | 4 | 7, 8, 33, 51 |
SCD | 状态更改探测 | 4 | 20 |
QDS | 质量描述符 | 1 | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 20, 32, 33, 34, 36 |
VTI | 具有瞬态指示值 | 1 | 5, 6, 32 |
NVA | 归一化值 | 2 | 9, 10, 21, 34, 48, 110 |
SVA | 标度值 | 2 | 11, 12, 49, 111 |
IEEE STD 754 | 短浮点数 | 4 | 13, 14, 36, 50, 112 |
BCR | 二进制计数器读数 | 5 | 15, 16, 37 |
保护
元素类型 | 描述 | 长度(byte) | 使用的信息对象 |
---|---|---|---|
SEP | 保护设备的单个事件 | 1 | 17, 38 |
SPE | 保护设备启动事件 | 1 | 18, 39 |
OCI | 保护设备输出电路信息 | 1 | 19, 40 |
QDP | 保护设备事件的质量描述符 | 1 | 18, 19, 39, 40 |
命令
元素类型 | 描述 | 长度(byte) | 使用的信息对象 |
---|---|---|---|
SCO | 单个命令 | 1 | 45 |
DCO | 双命令 | 1 | 46 |
RCO | 调节阶跃指令 | 1 | 47 |
时间
元素类型 | 描述 | 长度(byte) | 使用的信息对象 |
---|---|---|---|
CP56Time2a | 七字节二进制时间 | 7 | 4, 6, 8, 10, 12, 14, 16, 17, 18, 19, 31,32, 33, 34, 36, 37, 38, 39, 40, 103, 126 |
CP24Time2a | 三字节二进制时间 | 3 | 4, 5, 6, 8, 10, 12, 14, 16, 17, 18, 19, 31, 32, 33, 34, 36, 37, 38, 39, 40 |
CP16Time2a | 二字节二进制时间 | 2 | 17, 18, 19, 38, 39, 40, 106 |
限定符
元素类型 | 描述 | 长度(byte) | 使用的信息对象 |
---|---|---|---|
QOI | 讯问资格 | 1 | 100 |
QCC | 反询问命令限定符 | 1 | 101 |
QPM | 测量值参数限定符 | 1 | 110, 112 |
QPA | 参数激活的限定符 | 1 | 111, 113 |
QRP | 重置过程命令的限定符 | 1 | 105 |
QOC | 命令的限定符 | 1 | 45, 46, 47, 48, 49, 50 |
QOS | 设定值命令的限定符 | 1 | 48, 49, 50 |
文件传输
元素类型 | 描述 | 长度(byte) | 使用的信息对象 |
---|---|---|---|
FRQ | 文件就绪限定符 | 1 | 120 |
SRQ | 节就绪限定符 | 1 | 121 |
SCQ | 选择并调用限定符 | 1 | 122 |
LSQ | 最后一节或段限定符 | 1 | 123 |
AFQ | 确认文件或节限定符 | 1 | 124 |
NOF | 文件名 | 2 | 120, 121, 122, 123, 124, 125, 126 |
NOS | 段命名 | 2 | 121, 122, 123, 124, 125 |
LOF | 文件/段的长度 | 3 | 120, 121 |
LOS | 分段长度 | 1 | 125 |
CHS | Checksum | 1 | 123 |
SOF | 文件状态 | 1 | 126 |
杂项
元素类型 | 描述 | 长度(byte) | 使用的信息对象 |
---|---|---|---|
COI | 初始化原因 | 1 | 70 |
FBP | 固定测试位模式,两个八位字节 | 1 | 104 |
4.1 SIQ 的数据格式
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|---|---|---|
IV | NT | SB | BL | 0 | 0 | 0 | SPI |
- IV:VALID (0) / INVALID (1)。数据值是否有效,当采集系统识别到异常的情况(如更新设备丢失或无法运行),将这个位域标为1。该情况下信息对象的值,不会被定义。这个位为1表示信息对象的值是不正确的,不能被用。
- NT: TOPICAL (0) / NOT TOPICAL (1) NT为刷新标志位,若最近的刷新成功则值就称为当前值,若一个指定的时间间隔内刷新不成功或者其值不可用,值就称为非当前值。设备处于调试态或装置通讯中断都有可能造成非当前值。
- SB:NOT SUBSTITUTED (0) / SUBSTITUTED (1) SB为取代标志位,当信息对象的值由值班员(调度员)输入(即人工置数)或者由当地自动原因(模拟遥信)所提供时,即为被取代。如人工置数情况下。这意味着该值不是从正常测量中得出的。
- BL:NOT BLOCKED (0) / BLOCKED (1) BL为封锁标志位,信息对象的值为传输而被封锁,值保持封锁前被采集的状态。封锁和解锁可以由当地联锁机构或当地自动原因启动。
- SPI: OFF (0) / ON (1) SPI为遥信状态值。单点遥信,0分1合;双点遥信,1开2合,0和3为中间状态。
4.2 DIQ的数据格式
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1~bit0 |
---|---|---|---|---|---|---|
IV | NT | SB | BL | 0 | 0 | DPI |
- DPI: Double Point Information SPI为遥信状态值。双点遥信,1=OFF, 2=ON,0和3为不确定中间状态。
4.3 BSI的数据格式
32 位宽度的数据,可以认为为uint32。
4.4 SCD的数据格式
**32 位宽度的数据,可以认为为uint32。**
4.5 QDS的数据格式
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|---|---|---|
IV | NT | SB | BL | 0 | 0 | 0 | OV |
- OV: NO OVERFLOW (0) / OVERFLOW (1) OV为溢出标志位,信息对象的值超出了预先定义值的范围(主要适用模拟量值)。仅在遥测品质结构词中出现。
4.6 VTI的数据格式
bit7 | bit6~bit0 |
---|---|
是否处于瞬变状态 | 比他6为符号位,取值范围为<-64…63> |
4.7 NVA的数据格式
16位的标量值,可以认为int16,转化为归一值需要除以32768。
归一化值(NVA),值的范围为[-1,1]。归一化,即是将大于1的数映射到1以内的空间,通常就是用实际值除以额定值,即得到归一化的小数。具体表示法可以有F13或F16位的。占2个字节。
在电力行业中,通常是将数值归一到满码值。满码值是通信双方约定的一个值,它会影响数值的误差。一般来说,所内监控后台满码值为4095或2047,地调满码值为4095,中调满码值为32767(通常会要求P、Q、I按1倍额定值对应15000的码值的关系转换后上送;母线电压、频率则按1.2倍额定值对应15000的码值的关系转换后上送)。
4.8 SVA的数据格式
16位的标量值,可以认为int16
4.9 IEEE STD 754的数据格式
32位,可以认为float32
4.10 BCR的数据格式
bit39 | bit38 | bit37 | bit36~bit32 | bit31~bit0 |
---|---|---|---|---|
IV: 无效 | CA:计数量被调整 | CY:是否有进位 | 顺序号SQ | 计数器读数 |
4.11 SEP的数据格式
bit7~bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|---|---|
预留 | SRD:反向保护启动 | SIE:接地电流保护启动 | SL3:C相保护启动 | SL2:B相保护启动 | SL1:A相保护启动 | GS:总启动 |
4.12 OCI的数据格式
bit7~bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|
预留 | CL3:C相保护命令输出至输出电路 | CL2:B相保护命令输出至输出电路 | CL1:A 相保护命令输出至输出电路 | GC:总命令输出至输出电路 |
4.13 QDP的数据格式
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1~bit0 |
---|---|---|---|---|---|---|
IV | NT | SB | BL | EI | 0 | 事件0~3 |
- EI:Elapsed time invalid (EI) 这与保护设备的事件一起使用。该位值位时,表示时间间隔值(elapsed time )无效,这意味这这个时间间隔值(elapsed time )应该不能被使用,且需要忽略。
4.14 SCO的数据格式
bit7 | bit6~bit2 | bit1 | bit0 |
---|---|---|---|
S/E为选择/执行位, 0代表执行,1代表选择 | 0: 无另外的定义 1:短脉冲持续时间(断路器),持续时间由被控站内的系统参数所确定2:长脉冲持续时间,持续时间由被控站内的系统参数所确定 3:持续输出 | 0 | SCS 0:分/开, 1:合/关 |
4.15 DCO的数据格式
bit7 | bit6~bit2 | bit1~bit0 |
---|---|---|
S/E为选择/执行位, 0代表执行,1代表选择 | 0: 无另外的定义 1:短脉冲持续时间(断路器),持续时间由被控站内的系统参数所确定2:长脉冲持续时间,持续时间由被控站内的系统参数所确定 3:持续输出 | DCS: 1代表分/开,2代表合关,0、3代表不允许 |
4.16 RCO的数据格式
bit7 | bit6~bit2 | bit1~bit0 |
---|---|---|
同于DCO | 同于DCO | 步进命令: 1:下一步为降档,2: 下一步升档,其他不允许 |
常用来进行调节分接头遥控,不是所有厂家都支持此命令,部分厂家将调节分接头遥控统一至单/双点遥控中。
4.17 CP56Time2a/CP24Time2a/CP16Time2a的数据格式
字节序号 | 描述 |
---|---|
byte0 | Milliseconds(D7–D0) |
byte1 | Milliseconds(D15–D8) |
byte2 | IV(D7) 预留(D6) Minutes(D5–D0) |
byte3 | SU(D7) 预留(D6-D5) Hours(D4–D0) SU = 夏令时,0 = 标准时间, 1 = 夏令时 |
byte4 | DayOfWeek(D7–D5) DayOfMonth(D4–D0) |
byte5 | 预留(D7–D4) Months(D3–D0) |
byte6 | 预留(D7) Year(D6–D0) |
4.18. QOI的数据格式
#TODO
4.19 QCC的数据格式
#TODO
4.20 QPM的数据格式
bit7 | bit6 | bit5~bit0 |
---|---|---|
参数是否运行:0 : 运行, 1 : 不在运行 | 参数是否被改变 0:未改变, 1: 改变 | 参数类型 1:阈值(Threshold) 2:平滑因子(smoothing factor)3.测量值传输的下限(LowLimit)3.测量值传输的上限(HIGHLimit) |
4.21 QPA的数据格式
bit7~bit0 |
---|
1. 激活/停止激活这之前装载的参数 2. 激活/停止激活所寻址信息对象的参数 3.激活/停止激活所寻址的持续循环或周期传输的信息对象 |
4.22 QOC的数据格式
和SCO & DCO & RCO 完全一致。
4.23 QOS的数据格式
bit7 | bit6~bit0 |
---|---|
同于DCO | 0: 默认 1-63: 预留为标准定义 64-127:特殊使用 |
其他和文件传输相关的信息元素不再提及。
本文参考文献如下:
1. 《Description and analysis of IEC 104 Protocol》
2. 《运动设备及系统第5-104部分:传输规约-采用标准传输协议集的 IEC 60870-5-101网络访问》 国家电网DL/T634.5104-2009实施细则
3. 《SSC600 IEC 60870-5-104 COMMUNICATION PROTOCOL MANUAL》
4. 《Grid Automation REC615 and RER615 IEC 60870-5-101/104 Communication Protocol Manual》
5. 《REX640 IEC 60870-5-104 Communication Protocol Manual》
6. 《IEC-60870-5-104 Master Communication Protocol》
更多推荐
所有评论(0)