2. iec104 协议的帧结构
iec104 基于TCP/IP 传输,是一个应用层协议, 其帧结构被称为 APDU,APDU 一般由 APCI 和 ASDU组成。
2.1 APDU (Application Protocol Data Unit)
APDU 被称为应用协议数据单元,也就是一个iec104 的协议帧的官方叫法。一个APDU(也就是协议帧),可以只包含一个ACPI, 或者 一个ACPI + ASDU。
APDU = APCI
or
APDU = APCI + ASDU
APDU 的最大长度为255byte。
2.2 ACPI (Application Protocol Control Information)
ACPI(应用控制信息,类似于帧头),由一个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。
- 发送器会增加发送计数器, 接受器会增加 接收计数器. 当接受器能够接收到最大可以接收的I-Frame 帧后,就会给发送器,回应一个SFrame的ACK 帧。
- 发送器在发送后,将APDU保存在发送缓冲区中, 直到它接受到一个ADPU,其接收计数器&以下的 sendSN 会被从发送缓冲区移除。
- TCP 连接建立后,发送/接收序号应当被置0;
- 发送/接收序号由CF位域由LSB 和MSB 构成,I-Format的帧序号只有15bit, 如下图所示:
- S-format (numbered supervisory functions), last bits of CF1 是 01
- 被用于有序的监控功能, 固定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的二进制值,如下图所示: