1) t0/t1/t2/t3 是什么
IEC104 在 TCP 之上仍有自己的链路确认与保活机制,典型参数为:
- t0:连接/确认超时(建立/握手阶段)
- t1:I 帧确认超时(发送 I 帧后等待确认)
- t2:S 帧确认聚合延迟(允许短时间聚合确认,减少 ack 频率)
- t3:空闲测试帧周期(链路长时间空闲时发送测试帧)
调参建议:
- 现场网络抖动大:适当增大 t1/t0
- 需要快速发现断链:适当减小 t3(但会增加心跳开销)
2) k/w 窗口与吞吐
- kWindow:允许“未被确认”的最大 I 帧数量(滑动窗口)
- wThreshold:收到多少 I 帧后触发确认(或触发确认聚合逻辑)
一般规律:
- kWindow 越大,允许的 in-flight 越多,吞吐上限越高
- 但窗口过大时,如果对端处理不过来,会出现积压、超时与重传风险
建议以默认值为起点,观察:
- 平均响应时间、失败率
- 是否存在“窗口满”导致的丢弃/背压
3) 背压参数:保护网关与现场设备
驱动包含一组“内存预算/队列容量”参数,用于在异常情况下保护系统:
- sendQueueCapacity:发送队列容量(避免无限堆积)
- maxPendingAsduBytes:待处理 ASDU 字节上限(防止内存被上送洪峰打爆)
- discardLowPriorityWhenWindowFull:窗口满时丢弃低优先级(保护关键数据)
- mergeLowPriority:低优先级合并(只保留最后值,减少队列压力)
- lowPrioFlushMaxAgeMs:允许低优先级延迟刷新(降低抖动带来的发送频率)
最佳实践
- “关键遥信/遥控反馈”优先级应高(由协议侧决定),确保背压策略下仍尽量保留关键数据。
- 对高频变化的遥测建议让 core 使用
report_type=Change做变化过滤,并在南向侧通过合并/节流避免把转发队列打满。
