前言
上一篇把 IEC 60870-5-104 规约的原理讲透了。但光看规约不动手,等于纸上谈兵。要真正吃透 104,最快的方式是搭一套仿真环境:用一个 IEC104 从站模拟器喂数据,再用主站(或网关)去读,把总召、变位上送、SOE、遥控这些核心交互全部跑一遍。
这篇文章记录我用 IEC104 Server Simulator 搭建仿真环境、设计一套 110kV 小型变电站虚拟点位、并规划 7 个典型仿真场景的完整过程。

一、为什么需要模拟器
实际工程中,你在调通主站或网关之前,不可能直接拿真变电站的数据试——那是带电设备,误操作后果严重。模拟器的作用就是给你一个”安全的从站”,让你:
- 验证主站/网关配置正确——链路能不能建、总召能不能回、数据解析对不对
- 复现典型交互——开关变位、SOE 事件、遥控选择执行,这些在真实设备上不容易触发
- 定位问题——主站读不到数据时,先拿模拟器排除是主站配置问题还是现场设备问题
模拟器 = 一个可配置的 IEC104 从站,你定义它有哪些点、什么类型、什么初始值,它就监听 2404 等主站来连。
二、模拟器基础配置
2.1 连接参数
| 参数 | 值 | 说明 |
| 监听 IP | 0.0.0.0 或 127.0.0.1 | 本机测试用 127.0.0.1;跨机器用 0.0.0.0 |
| 端口 | 2404 | IEC104 标准端口 |
| 公共地址 COA | 1 | 对应主站侧的 DA(从站公共地址) |
2.2 建立连接的先后顺序
记住一个原则:从站要先启动监听,主站才能连上。IEC104 是主站主动 TCP 连从站,所以:
- 先打开模拟器,配置好 COA 和点位,启动监听
- 再启动主站/网关,让它去连 2404
- 主站发 STARTDT,从站回 STARTDT con,链路建立
- 主站发总召,从站回数据
顺序反了(主站先起、从站后起),主站会连接失败,但这不是 bug,重连机制会自动重试。
三、110kV 小型变电站点位设计
我按一个典型的 110kV 小型变电站设计了 8 组共 70 个点,覆盖遥信、双点遥信、标度化遥测、浮点遥测、遥脉、SOE、遥控、设定值全部 8 大类。
3.1 点位总览
| Group | TI 类型 | 数量 | 用途 |
| Group-1 | M_SP_NA_1 (单点遥信) | 16 | 开关位、保护动作、告警 |
| Group-2 | M_DP_NA_1 (双点遥信) | 8 | 断路器(体现中间态) |
| Group-3 | M_ME_NB_1 (标度化遥测) | 12 | 电压/电流/功率 |
| Group-4 | M_ME_NC_1 (短浮点遥测) | 8 | 频率/温湿度/SF6 |
| Group-5 | M_IT_NA_1 (遥脉) | 4 | 电度累计量 |
| Group-6 | M_SP_TB_1 (SOE带时标) | 16 | 事件顺序记录 |
| Group-7 | C_SC_NA_1 (单点遥控) | 4 | 控制断路器/电容器 |
| Group-8 | C_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 | 点名 | 含义 |
| 1 | CB_110kV_1_Position | 110kV 1#进线断路器位 |
| 2 | CB_110kV_2_Position | 110kV 2#进线断路器位 |
| 3 | CB_Main_Trans_HS_Position | 主变高压侧断路器位 |
| 4 | CB_Main_Trans_LS_Position | 主变低压侧断路器位 |
| 5 | DS_110kV_1_Incoming | 110kV 1#进线隔离开关 |
| 6 | DS_110kV_2_Incoming | 110kV 2#进线隔离开关 |
| 7 | DS_Bus_Coupler | 母联隔离开关 |
| 8 | DS_Ground_1 | 1#接地刀闸 |
| 9 | DS_Ground_2 | 2#接地刀闸 |
| 10 | Protection_Trip_Main | 主变保护跳闸 |
| 11 | Protection_Trip_Line1 | 1#线路保护跳闸 |
| 12 | Protection_Trip_Line2 | 2#线路保护跳闸 |
| 13 | Alarm_Gas_Main | 主变瓦斯告警 |
| 14 | Alarm_Oil_Temp_High | 油温过高告警 |
| 15 | Alarm_DC_Ground | 直流接地告警 |
| 16 | Alarm_SF6_Low | SF6 压力低告警 |
4.2 Group-2 · 双点遥信 M_DP_NA_1(8 个)
双点遥信,值域 0~3(0=中间态、1=OFF、2=ON、3=中间态),用于需要体现中间态的断路器。
| 组内 IOA | 点名 | 含义 |
| 1 | DPC_CB_110kV_Bus1 | 110kV I段母线断路器 |
| 2 | DPC_CB_110kV_Bus2 | 110kV II段母线断路器 |
| 3 | DPC_CB_10kV_Out1 | 10kV 1#出线断路器 |
| 4 | DPC_CB_10kV_Out2 | 10kV 2#出线断路器 |
| 5 | DPC_CB_Capacitor_1 | 1#电容器断路器 |
| 6 | DPC_CB_Capacitor_2 | 2#电容器断路器 |
| 7 | DPC_CB_Transformer_3 | 3#所用变断路器 |
| 8 | DPC_CB_Bus_Coupler | 母联断路器 |
4.3 Group-3 · 标度化遥测 M_ME_NB_1(12 个)
16 位有符号整数,工程上最常用的遥测类型。
| 组内 IOA | 点名 | 量程 | 单位 |
| 1 | MV_110kV_Bus1_Uab | 0~120000 | V |
| 2 | MV_110kV_Bus1_Ubc | 0~120000 | V |
| 3 | MV_110kV_Bus1_Uca | 0~120000 | V |
| 4 | MV_110kV_Line1_Ia | 0~1500 | A |
| 5 | MV_110kV_Line1_Ib | 0~1500 | A |
| 6 | MV_110kV_Line1_Ic | 0~1500 | A |
| 7 | MV_Main_Trans_P | 0~100000 | kW |
| 8 | MV_Main_Trans_Q | 0~60000 | kvar |
| 9 | MV_10kV_Bus_U | 0~12000 | V |
| 10 | MV_Main_Trans_Load_Pct | 0~150 | % |
| 11 | MV_Ambient_Temp | 0~1000 (0.1℃) | ℃ |
| 12 | MV_Trans_Oil_Temp | 0~1500 (0.1℃) | ℃ |
4.4 Group-4 · 短浮点遥测 M_ME_NC_1(8 个)
32 位 IEEE754 浮点,精度高,用于频率、功率因数、温湿度等。
| 组内 IOA | 点名 | 量程 | 单位 |
| 1 | MV_Frequency_110kV | 49~51 | Hz |
| 2 | MV_Frequency_10kV | 49~51 | Hz |
| 3 | MV_CosPhi_Main | 0.8~1.0 | – |
| 4 | MV_Wind_Speed | 0~30 | m/s |
| 5 | MV_Humidity | 0~100 | % |
| 6 | MV_Battery_Voltage | 0~60 | V |
| 7 | MV_Battery_Temp | 0~50 | ℃ |
| 8 | MV_SF6_Pressure | 0~1 | MPa |
4.5 Group-5 · 遥脉 M_IT_NA_1(4 个)
电度累计量。
| 组内 IOA | 点名 | 单位 |
| 1 | CI_Active_Import_Total | kWh |
| 2 | CI_Reactive_Import_Total | kvarh |
| 3 | CI_Active_Day | kWh |
| 4 | CI_Peak_Valley_Spike | kWh |
4.6 Group-6 · SOE 带时标 M_SP_TB_1(16 个)
带 CP56Time2a 时标的单点,用于事件顺序记录。和 Group-1 的点位一一对应,但带时标、用于事件上送。
| 组内 IOA | 点名 |
| 1~16 | SOE_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 | 点名 | 控制对象 |
| 1 | CTRL_CB_110kV_Line1 | 110kV 1#进线断路器 |
| 2 | CTRL_CB_110kV_Line2 | 110kV 2#进线断路器 |
| 3 | CTRL_CB_Bus_Coupler | 母联断路器 |
| 4 | CTRL_CB_Capacitor_1 | 1#电容器 |
4.8 Group-8 · 浮点设定 C_SE_NC_1(2 个)
| 组内 IOA | 点名 | 量程 |
| 1 | SET_Frequency_Dead_Band | 0.05~0.5 Hz |
| 2 | SET_Overload_Alarm_Pct | 80~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 是否发送、总召是否触发 |
| 数据全是 0 | IOA 是否对齐、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 点配置表
