核心目标:掌握 IEC 104 的 TCP 连接管理、总召唤、时钟同步、突发传输等核心交互机制,能够独立分析通信时序和排查连接故障。
前置知识:Part 2 的帧格式(APCI/ASDU/APDU)、N(S)/N® 概念、U 帧三命令的基本用途。
3.1 TCP 连接管理
3.1.1 连接建立完整时序
IEC 104 的连接建立分为两个阶段:TCP 层建链 和 应用层激活,缺一不可:
从站 (Server) 主站 (Client) 从站 (Server) 主站 (Client) ─── TCP 层建链 ─── TCP 连接建立 ─── 应用层激活 ─── 数据传输激活,可发送 I 帧 进入正常数据传输阶段 TCP SYN TCP SYN-ACK TCP ACK U 帧: STARTDT 激活 (0x07) U 帧: STARTDT 确认 (0x0B) I 帧: 总召唤激活 (TI=100, COT=6) I 帧: 总召唤确认 (TI=100, COT=7) I 帧: 遥测数据 (TI=13, COT=20) I 帧: 遥信数据 (TI=1, COT=20) I 帧: 总召唤终止 (TI=100, COT=10)
关键点:TCP 连接建立后,只有收到 STARTDT 确认,才能开始传输 I 帧。TCP 连接关闭后,STARTDT 状态自动清除。
3.1.2 端口与连接角色
| 特性 | 主站 (Client) | 从站 (Server) |
|---|---|---|
| 主动/被动 | 主动发起 TCP 连接 | 被动监听(Listen) |
| 端口 | 任意临时端口 (ephemeral) | 2404(IANA 注册端口)或自定义 |
| STARTDT 发起方 | 应发起 | 收到后响应确认 |
| 连接数 | 通常 1~2(双网冗余) | 支持多 Client 连接 |
bash
# Linux 查看从站监听状态
ss -tlnp | grep 2404
# LISTEN 0 128 0.0.0.0:2404 0.0.0.0:* users:(("rtu_server",pid=1234,fd=5))
3.1.3 连接参数 k、w 与超时
IEC 104 定义了五个关键参数来管理连接行为:
接收端
发送端
制约
超时
t1: 发送确认超时
默认 15s, 典型 15~30s
t2: 无数据确认超时
默认 10s, 典型 10~30s
t3: 链路测试间隔
默认 20s, 典型 20~60s
k (发送窗口)
最大未确认 I 帧数
默认 12, 典型 12~120
w (接收窗口)
最大可接收 I 帧数
默认 8, 典型 8~64
要求 w ≤ k
参数配置建议表:
| 参数 | 含义 | 默认值 | 推荐值 | 影响 |
|---|---|---|---|---|
| k | 最大未确认 I 帧数 | 12 | 12~120 | 过大浪费内存,过小降低吞吐量 |
| w | 最大接收 I 帧数 | 8 | 8~64 | 需满足 w ≤ k |
| t1 | I 帧确认超时 | 15s | 15~30s | 超时触发重发或断开 |
| t2 | S 帧确认超时 | 10s | 10~30s | 多久无数据发一次 S 帧确认 |
| t3 | TESTFR 间隔 | 20s | 20~60s | 链路空闲时的心跳间隔 |
t1 < t2 < t3 是标准推荐关系。t1 控制确认等待,t2 控制空转确认,t3 控制心跳。若 t3 内收到 I 帧,则重置计时器。
3.1.4 连接断开与重连机制
Client发起连接
TCP握手成功
TCP连接失败
STARTDT确认
STARTDT超时/被拒
数据正常传输
TCP断连 / STOPDT / 超时
重连定时器触发
CLOSED
CONNECTING
TCP_OK
ACTIVE
重连策略:
| 策略 | 描述 | 典型值 |
|---|---|---|
| 指数退避 | 重连间隔从 1s 开始,每次翻倍 | 最大 60s |
| 固定间隔 | 固定间隔重连 | 10~30s |
| 立即重连 | 检测到断开立即重连 | --- |
python
# 典型重连策略伪代码
reconnect_delay = 1 # 初始 1 秒
def on_disconnect():
while True:
time.sleep(reconnect_delay)
if try_connect():
reconnect_delay = 1 # 成功则重置
break
reconnect_delay = min(reconnect_delay * 2, 60) # 指数退避
3.1.5 双网冗余连接模式
电力调度系统的可靠性要求极高,双网冗余是刚需:
从站
网络
主站
TCP 连接1
TCP 连接2 (备用)
主站网卡 A
192.168.1.10
主站网卡 B
192.168.2.10
调度数据网 A
调度数据网 B
从站网卡 A
192.168.1.100
从站网卡 B
192.168.2.100
冗余模式对比:
| 模式 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 热备 | 两路同时连接,主路传数据,备路空闲 | 切换快(<1s) | 资源浪费 |
| 温备 | 主路断开后,备路自动连接 | 节省资源 | 切换需重新建连+STARTDT+GI |
| 负载均衡 | 两路各传不同数据 | 带宽利用率高 | 实现复杂,需协调 |
工程最佳实践 :工业场景推荐温备模式。切换流程为:检测主路断开 → t1 超时 → 备路发起 TCP 连接 → STARTDT → GI → 恢复数据传输。
3.2 数据传输与确认机制
3.2.1 I 帧滑动窗口
IEC 104 在 TCP 之上实现了一层自己的确认机制,原因是在高噪声网络环境下,TCP 层面看似"已确认"的数据可能尚未被应用层正确处理:
接收方 (N(R) 更新) 发送方 (N(S)=0..k) 接收方 (N(R) 更新) 发送方 (N(S)=0..k) 发送窗口 = [0,1,2],若 k=3 则已满 收到确认,窗口清空,可发送 3 帧 I 帧 N(S)=0, N(R)=0 I 帧 N(S)=1, N(R)=0 I 帧 N(S)=2, N(R)=0 S 帧 N(R)=3 (确认 0,1,2) I 帧 N(S)=3, N(R)=0 I 帧 N(S)=4, N(R)=0
3.2.2 N(S)/N® 维护规则
N(S) 维护规则:
① 初始值:连接建立后 N(S)=0
② 每次发送 I 帧:N(S) = N(S) + 1 (模 32768)
③ 发送 S 帧或 U 帧:不影响 N(S)
④ 重发:保持原 N(S) 不变
N(R) 维护规则:
① 初始值:连接建立后 N(R)=0
② 收到 I 帧后更新:N(R) = 最后收到的连续 I 帧的 N(S) + 1
③ N(R) 含义:"我已经收到了 N(R)-1 及之前的全部 I 帧"
④ 发送 S 帧:包含最新的 N(R)
⑤ I 帧也携带 N(R)(捎带确认)
N(S)/N® 交互示例:
时间线 (→ 方向):
步骤 发送方(A)的 N(S) 接收方(B)的 N(R) 说明
─────────────────────────────────────────────────
1 A→B: I[N(S)=0,N(R)=0] B 接收后更新 N(R)=1
2 A→B: I[N(S)=1,N(R)=0] B 接收后更新 N(R)=2
3 B→A: S[N(R)=2] A 收到确认: B 已收 0,1
4 A→B: I[N(S)=2,N(R)=0] B 接收后更新 N(R)=3
5 B→A: I[N(S)=0,N(R)=3] A 更新 N(R)=1 (B发给A的I帧)
3.2.3 S 帧的定时确认(t2 机制)
接收方 发送方 接收方 发送方 t2 定时器启动 (10s) 期间若收到 I 帧则重置 t2 t2=10s 内无 I 帧发送 主动发送 S 帧确认 t2 定时器重新启动 再次 t2 超时,再次发送 S 帧 I[N(S)=0] I[N(S)=1] S[N(R)=2] S[N(R)=2]
为什么需要 t2? 如果接收方积累了一批 I 帧但没有自己的数据要发送(无法捎带确认),t2 超时触发 S 帧,确保发送方不会因窗口满而阻塞。
3.2.4 确认超时与帧重发(t1 机制)
接收方 发送方 接收方 发送方 t1=15s 启动 ... 网络丢包,未收到 ... t1 超时 (15s) 关闭 TCP 连接 重新建立连接 I[N(S)=0,N(R)=0] TCP RST TCP 三次握手 STARTDT GI 重新召测
两种重发策略:
| 策略 | 行为 | 适用场景 |
|---|---|---|
| 断开重连(IEC 104 标准推荐) | t1 超时 → 关闭 TCP → 重新建连 → STARTDT → GI | 高可靠性场景(标准做法) |
| 选择性重发(某些实现) | t1 超时 → 仅重发未确认的 I 帧 | 低延迟场景(非标准) |
工程事实:绝大多数 IEC 104 实现采用"断开重连"策略,因为 TCP 连接状态在丢帧时已经不可靠。
3.2.5 窗口阻塞与流量控制
场景:k=12 的发送窗口
发送方已发送 12 个 I 帧,均未被确认:
窗口:[0,1,2,3,4,5,6,7,8,9,10,11]
状态:窗口满,暂停发送!
解决方案:
① 等待接收方发送 S 帧确认
② 等待 t2 超时,接收方自动发 S 帧
③ 此时优先级最高的突发数据可以"插队"吗?
→ 不可以。IEC 104 没有优先级插队机制。
→ 突发数据和周期数据共用同一队列。
调优建议:k 值不宜过小(至少 12),w 值不宜过大(≤ k)。在大量遥测点 + 快速变化的场景下,适当增大 k 值(如 60)可提高吞吐量。
3.3 U 帧控制命令详解
3.3.1 STARTDT / STOPDT
从站 主站 从站 主站 连接建立后第一件事 检查站状态、运行模式 数据传输已激活 ... 正常通信 ... 需要暂停通信 (如维护) 数据传输已停止,不再发送 I 帧 恢复通信 U 帧: STARTDT 激活 0x07 U 帧: STARTDT 确认 0x0B U 帧: STOPDT 激活 0x13 U 帧: STOPDT 确认 0x23 U 帧: STARTDT 激活 0x07 U 帧: STARTDT 确认 0x0B
STARTDT 被拒场景:
| 原因 | 从站行为 | 主站处理 |
|---|---|---|
| 站地址不匹配 | 拒绝 / 无响应 | 检查配置 |
| 从站未初始化完成 | 延迟确认 | 重试 |
| 已与其他主站建立数据传输 | 拒绝 | 等待或强制切换 |
3.3.2 TESTFR ------ 链路活性检测(t3 机制)
对端 任意一端 对端 任意一端 t3=20s 超时 (无数据交互) 收到测试帧 连接存活,重置 t3 t3 再次超时 ... 无响应 ... 等待 t1 超时 判定链路中断 → 断开重连 TESTFR 激活 0x43 TESTFR 确认 0x83 TESTFR 激活 0x43
TESTFR 使用要点:
- 连接空闲时,t3 超时触发 TESTFR 激活
- 收到 TESTFR 确认,链路正常,重置 t3
- 双方都可以主动发送 TESTFR(平衡式)
- 收到 TESTFR 激活帧,必须回复确认帧
- 若 TESTFR 确认超时(t1),视为链路中断
3.3.3 U 帧命令速查(含十六进制)
| 命令 | 激活帧 (HEX) | 确认帧 (HEX) | 含义 |
|---|---|---|---|
| STARTDT | 68 04 07 00 00 00 |
68 04 0B 00 00 00 |
启动数据传输 |
| STOPDT | 68 04 13 00 00 00 |
68 04 23 00 00 00 |
停止数据传输 |
| TESTFR | 68 04 43 00 00 00 |
68 04 83 00 00 00 |
链路测试帧 |
记忆技巧:激活码 + 0x04 = 确认码,如 0x07 + 0x04 = 0x0B。
3.4 总召唤(General Interrogation)
3.4.1 总召唤完整流程
总召唤是主站获取从站全量数据的核心机制,流程分为四个阶段:
从站 主站 从站 主站 ═══ 阶段1: 激活 ═══ 收到总召激活命令 ═══ 阶段2: 确认 ═══ ═══ 阶段3: 数据上送 ═══ ... 继续上送,可能多帧 ... ═══ 阶段4: 终止 ═══ 总召唤完成 I 帧: TI=100, COT=6 QOI=20 (站召唤) I 帧: TI=100, COT=7 (激活确认) I 帧: TI=1, COT=20 遥信数据 (SQ=1, 连续地址) I 帧: TI=13, COT=20 遥测数据 第1批 I 帧: TI=13, COT=20 遥测数据 第2批 I 帧: TI=100, COT=10 (激活终止)
3.4.2 分组总召唤
当数据量大时,可以使用分组召唤代替全站召唤:
QOI 分组定义:
20 = 站召唤 (全局) → 获取全部数据
21 = 组 1 召唤 → 仅获取第 1 组数据
22 = 组 2 召唤
...
36 = 组 16 召唤 → 仅获取第 16 组数据
分组召唤时序:
从站 主站 从站 主站 GI: QOI=21 (组1: 遥信) COT=7 (确认) 遥信数据, COT=20 COT=10 (终止) GI: QOI=22 (组2: 遥测) COT=7 (确认) 遥测数据, COT=20 COT=10 (终止) GI: QOI=23 (组3: 电度) COT=7 (确认) 电度数据, COT=20 COT=10 (终止)
分组建议:遥信点 < 500 时用站召唤即可;超过 2000 点时建议分组。典型分组:组1=遥信,组2=遥测,组3=电度,组4=遥调。
3.4.3 总召唤期间的突发数据处理
从站 主站 从站 主站 █ 断路器变位!█ 突发数据插入 GI 数据流 GI 激活 (COT=6) GI 确认 (COT=7) 遥测数据帧 1 (COT=20) SOE 突发 (COT=3, 遥信变位) 遥测数据帧 2 (COT=20) 遥信数据帧 (COT=20) GI 终止 (COT=10)
关键规则 :总召唤期间,突发数据(COT=3)可以插入 GI 数据流(COT=20)中。主站必须能区分 COT=3 的数据(实时变位)和 COT=20 的数据(历史快照)。
3.5 时钟同步
3.5.1 时钟同步命令(C_CS_NA_1, TI=103)
从站 主站 从站 主站 收到对时命令 将内部时钟与主站同步 I 帧: TI=103, COT=6 CP56Time2a = 当前时间 I 帧: TI=103, COT=7 (对时确认)
时钟同步报文字节结构:
Master → Slave 对时命令 (TI=103, COT=6):
Byte 0..5: APCI 头
Byte 6: TI = 0x67 (103)
Byte 7: VSQ = 0x01 (SQ=0, 1个对象)
Byte 8..9: COT = 0x0006 (激活)
Byte 10..11: 公共地址 = 0x0001
Byte 12..13: IOA = 0x0000 (对时专用 IOA)
Byte 14..20: CP56Time2a (7字节, 当前时间)
十六进制完整报文:
68 13 00 00 00 00 67 01 06 00 01 00 00 00
└─ APCI 头 ────── └───── ASDU ──────────────
[时间戳: 7字节 CP56Time2a]
... (毫秒/分钟/小时/日/月/年)
3.5.2 时钟同步的触发策略
| 策略 | 描述 | 适用场景 |
|---|---|---|
| 周期性对时 | 每 N 分钟/小时发送一次对时命令 | 通用场景(推荐 15~30 分钟) |
| 连接后对时 | STARTDT 确认后立即对时 | 每次重连后 |
| GI 前对时 | 总召唤前先对时 | 确保 GI 数据时标准确 |
| 组合策略 | 连接后对时 + 周期性对时 | 最佳实践 |
推荐流程:
TCP 连接 → STARTDT → 时钟同步 → GI → 正常数据交换
↓
每 30 分钟周期性对时
3.5.3 对时精度分析
CP56Time2a 精度:
毫秒字段: 16 bits, 范围 0~59999
→ 分辨率 ≈ 1ms,但标准未硬性规定
实际精度受限于:
① TCP 协议延迟(~1~100ms,取决于网络)
② 主站到从站的链路延迟(未补偿)
③ 从站 RTC 晶振精度
工程实际精度:通常 10~100ms 量级
如需亚毫秒精度:应使用 IEEE 1588 (PTP) 或 IRIG-B
3.6 突发传输与周期传输
3.6.1 数据上送模式总览
IEC 104 从站数据上送三种模式:
┌───────────────┬──────────────────┬─────────────────┐
│ 传输模式 │ 触发条件 │ 典型数据 │
├───────────────┼──────────────────┼─────────────────┤
│ 突发 (COT=3) │ 遥信变位/事件触发 │ SOE、保护信号 │
│ 周期 (COT=1) │ 定时器到期 │ 遥测全量/变化量 │
│ 总召唤(COT=20)│ GI 命令触发 │ 全站所有数据 │
└───────────────┴──────────────────┴─────────────────┘
3.6.2 突发传输(SOE)
当遥信发生变位时(如断路器从"合"变"分"),从站立即构造 SOE 帧上送:
主站 从站 主站 从站 断路器 (IOA=0x0001) 变位! 记录 SOE 事件: 断路器分闸 @ 15:17:07.002 I 帧: TI=30 (M_SP_TB_1) COT=3 (突发) IOA=0x0001, SIQ=0x00 (分位) CP56Time2a = 事件时间 I 帧: TI=30 COT=3 IOA=0x0002 (保护动作) SIQ=0x01, CP56Time2a
3.6.3 周期传输
周期传输用于定期上送遥测数据,有两种子模式:
| 子模式 | 原理 | COT | 带宽消耗 |
|---|---|---|---|
| 全量上送 | 每个周期上送所有遥测点 | 1 | 高 |
| 变化量上送 | 仅上送变化超过死区的遥测点 | 1 | 低 |
变化量上送的"死区"机制:
遥测点 IA (IOA=0x0401),上次上送值: 230.5A
死区阈值: 1.0A
→ 当前值 231.2A: 变化 0.7A < 1.0A → 不上送
→ 当前值 232.0A: 变化 1.5A > 1.0A → 上送!
3.6.4 传输优先级
是 (COT=3)
否
是 (COT=20)
否
是 (COT=1)
否
是
否 (窗口满)
有数据待发送
是否有突发数据?
优先发送突发数据
(SOE/保护信号)
是否在 GI 响应期?
发送 GI 数据
(次优先级)
周期定时器到期?
发送周期数据
(遥测全量/变化量)
等待事件触发
发送窗口有空?
入发送队列 → 构造 I 帧 → 发送
等待窗口释放
优先级规则总结:
| 优先级 | 数据类型 | COT | 排队策略 |
|---|---|---|---|
| 1 (最高) | 突发:SOE、保护动作、开关变位 | 3 | 队首插入 |
| 2 | 总召唤响应数据 | 20 | 按序发送 |
| 3 (最低) | 周期遥测数据 | 1 | 按序发送 |
注意:IEC 104 标准未严格定义优先级调度策略,以上为工程中广泛采纳的实现方式。
3.7 平衡式与非平衡式传输
3.7.1 两种模式对比
| 特性 | 平衡式(IEC 104 默认) | 非平衡式(IEC 101 常见) |
|---|---|---|
| 发起传输 | 双方均可主动发起 | 仅主站可发起 |
| 数据上送 | 从站可自发上送(COT=3) | 必须等主站轮询 |
| 链路检测 | 双方均可发 TESTFR | 仅主站发测试帧 |
| S 帧 | 双方均可发送 | 仅从站(I 帧格式不同) |
| 适用场景 | IP 网络(全双工原生) | 串口通道(半双工历史) |
3.7.2 平衡式下的典型交互
平衡式下,双方是对等的通信实体:
主站 → 从站: 遥控选择 (TI=45, COT=6)
从站 → 主站: 遥控确认 (TI=45, COT=7)
从站 → 主站: 遥信变位 SOE (TI=30, COT=3) ← 从站主动发!
主站 → 从站: TESTFR 激活 (0x43)
从站 → 主站: TESTFR 确认 (0x83)
从站 → 主站: 周期遥测 (TI=13, COT=1) ← 从站主动发!
3.7.3 工程建议
┌──────────────────────────────────────────────┐
│ │
│ ★ 使用 IEC 104 时,始终采用平衡式模式 ★ │
│ │
│ TCP 全双工连接天然适合平衡式通信。 │
│ IEC 104 的设计理念就是平衡式对等通信。 │
│ "从站等主站轮询"是 IEC 101 时代的做法。 │
│ │
└──────────────────────────────────────────────┘
3.8 完整连接生命周期
下面用一个完整的生命周期时间线串联前面所有知识:
从站 (Server) 主站 (Client) 从站 (Server) 主站 (Client) ▌连接阶段 ▎数据传输激活 ▌初始化阶段 ▎初始数据同步完成 ▌正常运行阶段 ▌连接关闭 TCP SYN (端口 2404) TCP SYN-ACK TCP ACK STARTDT 激活 STARTDT 确认 TI=103 时钟同步 (COT=6) TI=103 对时确认 (COT=7) TI=100 总召唤激活 (COT=6, QOI=20) TI=100 GI 确认 (COT=7) 遥信数据 (COT=20) 遥测数据 (COT=20) GI 终止 (COT=10) 周期遥测 (COT=1) S 帧确认 (N(R) 更新) 遥信变位 SOE (COT=3) ← 突发! 遥控选择 (TI=45, COT=6) 遥控确认 (COT=7) 遥控执行 (TI=45, COT=6) 执行确认 (COT=7) TESTFR 激活 (t3 超时) TESTFR 确认 STOPDT 激活 STOPDT 确认 TCP FIN TCP FIN-ACK TCP ACK
3.9 参数调优速查
| 场景 | k | w | t1 | t2 | t3 | 说明 |
|---|---|---|---|---|---|---|
| 默认标准 | 12 | 8 | 15s | 10s | 20s | 入门配置 |
| 局域网低延迟 | 24 | 16 | 10s | 5s | 15s | 减小超时,增大窗口 |
| 广域网高延迟 | 24 | 16 | 30s | 20s | 60s | 放宽超时容忍度 |
| 大量遥测点 | 60 | 32 | 15s | 10s | 30s | 增大窗口避免阻塞 |
| 高可靠性需求 | 12 | 8 | 15s | 10s | 15s | 快速检测故障 |
| 卫星/4G 通道 | 8 | 8 | 60s | 30s | 120s | 放宽所有超时 |
3.10 Wireshark 排障技巧
3.10.1 连接阶段排查
# 过滤 TCP 连接
tcp.port == 2404
# 过滤 STARTDT
iec104.type == 0x07 || iec104.type == 0x0B
# 过滤所有 U 帧
iec104 && !iec104.typeid
3.10.2 常见连接故障
| 现象 | Wireshark 特征 | 根因 | 解决 |
|---|---|---|---|
| 连不上 | TCP SYN 无响应 | 端口未监听 / 防火墙 | 检查 ss -tlnp,放行 2404 |
| STARTDT 无响应 | SYN-ACK 后无 U 帧 | 从站未实现 STARTDT 响应 | 检查从站软件状态 |
| 数据不发 | STARTDT 确认后无 I 帧 | 窗口参数配置错误 | 检查 k/w 匹配 |
| 频繁断开 | 大量 TCP RST | t1/t3 超时,参数不匹配 | 增大超时值 |
| S 帧风暴 | 大量 S 帧,无 I 帧 | t2 过小 | 增大 t2 至 15~30s |
3.10.3 分析实际连接流程
Wireshark 查看一次正常连接的摘要:
No. Time Source Destination Protocol Info
─── ─────── ──────────── ──────────── ──────── ─────────────────────
1 0.000 M->S [SYN] TCP 2404 → establish
2 0.005 S->M [SYN,ACK] TCP establish
3 0.006 M->S [ACK] TCP established
4 0.100 M->S IEC104 U: STARTDT act ← 0x07
5 0.120 S->M IEC104 U: STARTDT con ← 0x0B
6 0.200 M->S IEC104 I: C_IC_NA_1 act ← GI
7 0.250 S->M IEC104 I: C_IC_NA_1 actcon ← GI确认
8 0.300 S->M IEC104 I: M_SP_NA_1 (20) ← 遥信
9 0.500 S->M IEC104 I: M_ME_NC_1 (30) ← 遥测
10 0.800 S->M IEC104 I: C_IC_NA_1 actterm ← GI终止
3.11 小结
| 知识点 | 掌握程度 | 核心要点 |
|---|---|---|
| TCP + STARTDT 两阶段建连 | 熟练 | 先 TCP,再 STARTDT,两步缺一不可 |
| k/w 窗口参数含义 | 理解 | k=发送窗口,w=接收窗口,w ≤ k |
| t1/t2/t3 超时机制 | 掌握 | t1=I 帧确认,t2=S 帧空转确认,t3=心跳 |
| N(S)/N® 滑动窗口 | 掌握 | N(S) 递增,N® 回送确认 |
| STARTDT/STOPDT/TESTFR | 熟练 | 激活码 + 0x04 = 确认码 |
| 总召唤四阶段 | 掌握 | 激活→确认→数据→终止 |
| 时钟同步时机 | 理解 | 连接后对时 + 周期性对时 |
| 突发 vs 周期 vs GI 优先级 | 理解 | 突发 > GI > 周期 |
| 平衡式通信模式 | 理解 | IEC 104 默认平衡式,双方可主动发送 |
| 双网冗余 | 掌握 | 热备/温备模式选择 |
下期预告
[Part 4:数据类型与信息对象] 将建立完整的类型标识完备速查:
- 全部 TI(Type Identifier)逐项详解
- 监视方向:遥信/遥测的完整分类
- 控制方向:遥控/遥调/设点的完整分类
- 系统命令类详解
- COT 完整速查表
- QA 限定词速查表
- 品质位(SIQ/DIQ/QDS)深度解析
参考标准
IEC 60870-5-104: 第 6~8 节(连接管理、数据传输、应用功能)
IEC 60870-5-5: 基本应用功能(总召唤、时钟同步、遥控流程)
推荐工具Wireshark +
iec104过滤条件 ------ 分析连接时序
tcpdump -i eth0 port 2404 -w capture.pcap------ 现场抓包
netstat -an | grep 2404/ss -tnp | grep 2404------ 检查端口状态lib60870 源码
cs104_connection.c------ 查看连接管理实现