IEC104 模拟器仿真环境搭建与 110kV 变电站点位设计
IEC104 模拟器仿真环境搭建与 110kV 变电站点位设计

IEC104 模拟器仿真环境搭建与 110kV 变电站点位设计

前言

上一篇把 IEC 60870-5-104 规约的原理讲透了。但光看规约不动手,等于纸上谈兵。要真正吃透 104,最快的方式是搭一套仿真环境:用一个 IEC104 从站模拟器喂数据,再用主站(或网关)去读,把总召、变位上送、SOE、遥控这些核心交互全部跑一遍。

这篇文章记录我用 IEC104 Server Simulator 搭建仿真环境、设计一套 110kV 小型变电站虚拟点位、并规划 7 个典型仿真场景的完整过程。


一、为什么需要模拟器

实际工程中,你在调通主站或网关之前,不可能直接拿真变电站的数据试——那是带电设备,误操作后果严重。模拟器的作用就是给你一个”安全的从站”,让你:

  1. 验证主站/网关配置正确——链路能不能建、总召能不能回、数据解析对不对
  2. 复现典型交互——开关变位、SOE 事件、遥控选择执行,这些在真实设备上不容易触发
  3. 定位问题——主站读不到数据时,先拿模拟器排除是主站配置问题还是现场设备问题

模拟器 = 一个可配置的 IEC104 从站,你定义它有哪些点、什么类型、什么初始值,它就监听 2404 等主站来连。


二、模拟器基础配置

2.1 连接参数

参数说明
监听 IP0.0.0.0 或 127.0.0.1本机测试用 127.0.0.1;跨机器用 0.0.0.0
端口2404IEC104 标准端口
公共地址 COA1对应主站侧的 DA(从站公共地址)

2.2 建立连接的先后顺序

记住一个原则:从站要先启动监听,主站才能连上。IEC104 是主站主动 TCP 连从站,所以:

  1. 先打开模拟器,配置好 COA 和点位,启动监听
  2. 再启动主站/网关,让它去连 2404
  3. 主站发 STARTDT,从站回 STARTDT con,链路建立
  4. 主站发总召,从站回数据

顺序反了(主站先起、从站后起),主站会连接失败,但这不是 bug,重连机制会自动重试。


三、110kV 小型变电站点位设计

我按一个典型的 110kV 小型变电站设计了 8 组共 70 个点,覆盖遥信、双点遥信、标度化遥测、浮点遥测、遥脉、SOE、遥控、设定值全部 8 大类。

3.1 点位总览

GroupTI 类型数量用途
Group-1M_SP_NA_1 (单点遥信)16开关位、保护动作、告警
Group-2M_DP_NA_1 (双点遥信)8断路器(体现中间态)
Group-3M_ME_NB_1 (标度化遥测)12电压/电流/功率
Group-4M_ME_NC_1 (短浮点遥测)8频率/温湿度/SF6
Group-5M_IT_NA_1 (遥脉)4电度累计量
Group-6M_SP_TB_1 (SOE带时标)16事件顺序记录
Group-7C_SC_NA_1 (单点遥控)4控制断路器/电容器
Group-8C_SE_NC_1 (浮点设定)2调频死区/过载阈值

合计 70 个点,足以演示 IEC104 的全部核心交互。

3.2 关键设计原则:组内 IOA 独立编号

这是模拟器(也是很多实际装置)的一个特点:每个 TI 类型组内部的 IOA 从 1 独立起编,不是全局连续编号。

也就是说:

  • Group-1(M_SP_NA_1)内部 IOA = 1~16
  • Group-2(M_DP_NA_1)内部 IOA = 1~8
  • Group-3(M_ME_NB_1)内部 IOA = 1~12
  • ……

不同组的 IOA=1 物理含义不同——Group-1 的 IOA=1 是”110kV 1#进线开关位”,Group-2 的 IOA=1 是”110kV 母线断路器”。它们靠 TI 类型区分,不靠 IOA 唯一。

这跟”IOA 是全局唯一 3 字节地址”的规约理论表述有出入,但在具体产品实现里很常见。配置主站/网关时,地址栏填的是组内相对 IOA,不是全局 IOA,这点务必注意。


四、各组点位明细

4.1 Group-1 · 单点遥信 M_SP_NA_1(16 个)

单点遥信,值域 0/1,用于开关量、保护信号、告警。

组内 IOA点名含义
1CB_110kV_1_Position110kV 1#进线断路器位
2CB_110kV_2_Position110kV 2#进线断路器位
3CB_Main_Trans_HS_Position主变高压侧断路器位
4CB_Main_Trans_LS_Position主变低压侧断路器位
5DS_110kV_1_Incoming110kV 1#进线隔离开关
6DS_110kV_2_Incoming110kV 2#进线隔离开关
7DS_Bus_Coupler母联隔离开关
8DS_Ground_11#接地刀闸
9DS_Ground_22#接地刀闸
10Protection_Trip_Main主变保护跳闸
11Protection_Trip_Line11#线路保护跳闸
12Protection_Trip_Line22#线路保护跳闸
13Alarm_Gas_Main主变瓦斯告警
14Alarm_Oil_Temp_High油温过高告警
15Alarm_DC_Ground直流接地告警
16Alarm_SF6_LowSF6 压力低告警

4.2 Group-2 · 双点遥信 M_DP_NA_1(8 个)

双点遥信,值域 0~3(0=中间态、1=OFF、2=ON、3=中间态),用于需要体现中间态的断路器。

组内 IOA点名含义
1DPC_CB_110kV_Bus1110kV I段母线断路器
2DPC_CB_110kV_Bus2110kV II段母线断路器
3DPC_CB_10kV_Out110kV 1#出线断路器
4DPC_CB_10kV_Out210kV 2#出线断路器
5DPC_CB_Capacitor_11#电容器断路器
6DPC_CB_Capacitor_22#电容器断路器
7DPC_CB_Transformer_33#所用变断路器
8DPC_CB_Bus_Coupler母联断路器

4.3 Group-3 · 标度化遥测 M_ME_NB_1(12 个)

16 位有符号整数,工程上最常用的遥测类型。

组内 IOA点名量程单位
1MV_110kV_Bus1_Uab0~120000V
2MV_110kV_Bus1_Ubc0~120000V
3MV_110kV_Bus1_Uca0~120000V
4MV_110kV_Line1_Ia0~1500A
5MV_110kV_Line1_Ib0~1500A
6MV_110kV_Line1_Ic0~1500A
7MV_Main_Trans_P0~100000kW
8MV_Main_Trans_Q0~60000kvar
9MV_10kV_Bus_U0~12000V
10MV_Main_Trans_Load_Pct0~150%
11MV_Ambient_Temp0~1000 (0.1℃)
12MV_Trans_Oil_Temp0~1500 (0.1℃)

4.4 Group-4 · 短浮点遥测 M_ME_NC_1(8 个)

32 位 IEEE754 浮点,精度高,用于频率、功率因数、温湿度等。

组内 IOA点名量程单位
1MV_Frequency_110kV49~51Hz
2MV_Frequency_10kV49~51Hz
3MV_CosPhi_Main0.8~1.0
4MV_Wind_Speed0~30m/s
5MV_Humidity0~100%
6MV_Battery_Voltage0~60V
7MV_Battery_Temp0~50
8MV_SF6_Pressure0~1MPa

4.5 Group-5 · 遥脉 M_IT_NA_1(4 个)

电度累计量。

组内 IOA点名单位
1CI_Active_Import_TotalkWh
2CI_Reactive_Import_Totalkvarh
3CI_Active_DaykWh
4CI_Peak_Valley_SpikekWh

4.6 Group-6 · SOE 带时标 M_SP_TB_1(16 个)

带 CP56Time2a 时标的单点,用于事件顺序记录。和 Group-1 的点位一一对应,但带时标、用于事件上送。

组内 IOA点名
1~16SOE_CB_110kV_1 / SOE_CB_110kV_2 / SOE_CB_Main_HS / SOE_CB_Main_LS / SOE_DS_1 / SOE_DS_2 / SOE_DS_BusCoupler / SOE_DS_Ground_1 / SOE_DS_Ground_2 / SOE_Prot_Trip_Main / SOE_Prot_Trip_Line1 / SOE_Prot_Trip_Line2 / SOE_Alarm_Gas / SOE_Alarm_Oil_Temp / SOE_Alarm_DC / SOE_Alarm_SF6

4.7 Group-7 · 单点遥控 C_SC_NA_1(4 个)

组内 IOA点名控制对象
1CTRL_CB_110kV_Line1110kV 1#进线断路器
2CTRL_CB_110kV_Line2110kV 2#进线断路器
3CTRL_CB_Bus_Coupler母联断路器
4CTRL_CB_Capacitor_11#电容器

4.8 Group-8 · 浮点设定 C_SE_NC_1(2 个)

组内 IOA点名量程
1SET_Frequency_Dead_Band0.05~0.5 Hz
2SET_Overload_Alarm_Pct80~120 %

五、7 个仿真场景设计

光有静态点位不够,仿真要能演示动态交互。我设计了 7 个场景,覆盖 IEC104 的全部核心行为:

场景 A:主站总召

  • 动作:主站发总召请求(COT=6,QOI=20)
  • 预期:从站把所有点回一遍(COT=20),按 TI 类型分组上送
  • 验证点:数据完整性、解析正确性

场景 B:开关变位主动上送

  • 动作:在模拟器里改一个单点遥信值(如 IOA=1 从 0→1)
  • 预期:从站主动上送变位(COT=3 突发),主站无需轮询即收到
  • 验证点:平衡传输机制、COT=3 识别

场景 C:SOE 事件带时标上送

  • 动作:触发一个带时标的事件
  • 预期:从站上送 M_SP_TB_1(TI=30),带 7 字节 CP56Time2a 时标
  • 验证点:时标解析、事件先后顺序还原

场景 D:双点中间态

  • 动作:把一个双点遥信从 2(ON) 改成 1(OFF)
  • 预期:上送值依次经过 0(中间态)→1(OFF),体现双点语义
  • 验证点:双点 0~3 的解析

场景 E:遥控 Select-Execute

  • 动作:主站对遥控点下发 Select,再下发 Execute
  • 预期:从站回 Select 确认(COT=7)→ Execute 确认(COT=7)→ 执行终止(COT=10)
  • 验证点:两步握手状态机

场景 F:设定值命令

  • 动作:主站下发浮点设定值(C_SE_NC_1)
  • 预期:从站确认并更新设定值
  • 验证点:浮点命令传输

场景 G:链路维护

  • 动作:空闲等待,观察链路
  • 预期:双方定期发 TESTFR 心跳(t3 超时触发),收到 S 帧确认
  • 验证点:心跳保活、序号确认机制

场景 H:过载故障联动(综合)

  • 动作:把遥测功率值改到越限(如主变负载率 >120%)
  • 预期:遥测越限上送 → 触发告警(Alarm_Oil_Temp_High 变位)→ SOE 事件上送
  • 验证点:遥测→遥信→SOE 联动链路

六、调试点位速查表

出问题时按这个顺序排查:

现象先查什么
链路建不上模拟器是否启动监听、端口 2404 是否被占用、防火墙
链路通但没数据STARTDT 是否发送、总召是否触发
数据全是 0IOA 是否对齐、COA/DA 是否一致
部分点有部分没有TI 类型是否选对、组内 IOA 编号是否匹配
时标错乱CP56Time2a 字节序、时区
遥控无反应是否加了 /SE、读写属性是否正确

七、小结

仿真环境搭建的核心是点位设计要覆盖全部交互类型。这套 110kV 变电站 70 点方案,把遥信/双点/标度化遥测/浮点遥测/遥脉/SOE/遥控/设定 8 大类全覆盖,配合 7 个场景,足以演示 IEC104 的所有典型行为。

下一篇我会讲怎么用研华 ECU-1251TL 边缘网关当 IEC104 主站,连接这个模拟器把数据读出来——从零配置到链路打通的完整实战。


系列文章导航

  • 第一篇:IEC 60870-5-104 电力远动规约详解
  • 第二篇:IEC104 模拟器仿真环境搭建与 110kV 变电站点位设计(本文)
  • 第三篇:研华 ECU-1251TL 配置 IEC104 主站实战
  • 第四篇:研华 IEC104 驱动 Tag 地址格式详解与 70 点配置表