REDISANT 提供互联网与物联网开发测试套件 #
互联网与中间件:
第二章:APCI格式 #
IEC 60870-5-104 协议(又名 IEC 104)是一种远程控制设备和系统的标准,在基于 TCP/IP 的网络中,使用数据传输来监控和控制地理上广泛的过程。协议标准将站对象中传输的数据实体定义为与 IEC 60870-5-101 协议中使用的数据实体相同。IEC 104 协议的实现使用与 IEC 101 实现相同的站对象 (STA)。IEC 104 是根据 TCP/IP 协议套件 (RFC 2000) 中给出的传输功能选择指定的。在 TCP/IP 中,可以使用各种网络类型,包括 X.25、帧中继、ATM、ISDN、以太网和串行点对点 (X.21),见下图。
协议 | 层次 |
---|---|
IEC 60870-5-101 和 104 的应用服务数据单元 (ASDU) | 应用层(L7) |
应用协议控制信息 (APCI) | 应用层(L7) |
TCP/IP 协议套件(RFC 2200) | 传输层(L4) |
TCP/IP 协议套件(RFC 2200) | 网络层(L3) |
TCP/IP 协议套件(RFC 2200) | 链路层 (L2) |
TCP/IP 协议套件(RFC 2200) | 物理层 (L1) |
APCI格式 #
每个 APCI(应用协议控制信息)以一个值为 0x68 的起始字节开始,后面跟着 8 位长度的 APDU(应用协议数据单元)和 4 个 8 位控制字段(CF)。APDU 包含一个 APCI 或一个带有 ASDU 的 APCI,见下图。一般情况下,APCI 的长度为 6 个字节。
有固定长度的数据包和包含应用服务数据单元(ASDU)的可变长度的数据包。
帧格式由第一个控制字段(CF1, control field)的最后两位决定。标准定义了三种帧格式,见图。
I格式(信息传输格式),CF1的最后一位为0 #
-
用于在控制站和受控站之间进行编号信息传输。其长度可变。
-
I 格式的 APDU 始终包含 ASDU。
-
I 格式的控制字段指示消息方向。它包含两个 15 位序列号,每个 APDU 和每个方向的序列号依次增加 1。
- 发送方增加发送序列号 N(S),接收方增加接收序列号 N(R)。接收站返回接收序列号时确认每个 APDU 或多个 APDU,直到其 APDU 正确接收为止。
- 发送站将 APDU 或 APDU 保存在缓冲区中,直到它收到自己的发送序列号作为接收序列号,该接收序列号对所有小于或等于接收序列号的数字都是有效的确认。
- 如果仅在一个方向上传输较长的数据,则必须在另一个方向上发送 S 格式以在缓冲区溢出或超时之前确认 APDU。
- 该方法应在两个方向上使用。建立 TCP 连接后,发送和接收序列号设置为零。
-
序列号的正确解释取决于 LSB(最低有效位)和 MSB(最高有效位)的位置,见下图。请注意,最右侧位置的固定位(白色背景)不用于序列号。因此,I 格式的序列号只有 15 位。
例如,序列 0x06 0x00 0x02 0x00(见上文右表)将被解释为 N(S) = 3 和 N(R) = 1,即源发送的第三个 APDU,正在等待来自目的地的第一个 APDU。
S 格式(编号监控功能),CF1 的最后几位为 01 #
- 它用于执行编号的监控功能。它具有固定长度。
- S 格式 APDU 始终仅包含一个 APCI。
- 在数据传输仅在一个方向上进行的任何情况下,必须在超时、缓冲区溢出或超过允许的最大 I 格式 APDU 数量而无确认之前向另一个方向发送 S 格式 APDU。
U 格式(未编号的控制功能),CF2 的最后位为 11 #
-
它用于执行未编号的控制功能。它具有固定长度。
-
U 格式 APDU 始终仅由一个 APCI 组成。只能同时激活 TESTFR(测试帧)、STOPDT(停止数据传输)或 STARTDT(开始数据传输)功能之一。CF1 的二进制值如下图所示。
-
U格式用于STARTDT、STOPDT和TESTFR的激活和确认机制。
-
控制站使用 STARTDT 和 STOPDT 来控制来自受控站的数据传输。
-
建立连接后,不会自动启用用户数据传输,例如,默认状态为 STOPDT。在此状态下,受控站不会通过此连接发送任何数据,但未编号的控制功能和确认除外。控制站必须通过发送 STARTDT act(激活)来激活用户数据传输。受控站以 STARTDT con(确认)进行响应。如果未确认 STARTD,则控制站将关闭连接。
-
只有控制站发送 STARTDT。预期的操作模式是在初始建立连接后仅发送一次 STARTDT。然后,连接将运行,受控站和控制站都可以随时发送任何消息,直到控制站决定使用 STOPDT 命令关闭连接。
-
-
控制站和/或受控站必须定期检查所有已建立连接的状态,以尽快发现任何通信问题。这是通过发送 TESTFR 帧来实现的。
-
可以通过发送测试 APDU (TESTFR=act) 定期在两个方向上测试开放连接,接收站通过发送 TESTFR=con 进行确认。
-
两个站可以在特定时间段内没有发生数据传输(超时)后启动测试程序。
-
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.redisant.cn/