前言
前三篇讲完了规约原理、模拟器搭建、ECU 配置实战。这一篇是工具篇——把研华 EdgeLink IEC104 驱动的 Tag 地址格式彻底讲透,并给出一份可直接复制粘贴的 70 点配置表。
这篇的价值在于:它是踩完所有坑之后验证正确的版本。如果你也在用研华 ECU 配 IEC104,照着这张表填,能省掉大量试错时间。
一、官方说明逐条解读
研华 EdgeLink 的 IEC104 驱动官方说明里,Tag 地址格式分三种。我把官方原文和我的解读放在一起:
1.1 Read Only Tag(只读)
解读:
R= Read,只读Read Address= IOA(信息对象地址)Read Data Type= TI 类型名(如 M_SP_NA_1、M_ME_NB_1)Read Command= 读命令字,固定填n
用途:遥信、遥测、遥脉、SOE 这些只上送、不下发的点。
1.2 Write Only Tag(只写)
解读:
W= Write,只写Write Address= IOAWrite Command= 填 TI 类型名(如 C_RC_NA_1、C_SE_NC_1),不是 n
用途:纯命令点,不回读执行结果。官方提示”永远显示 0″——因为你只写不读,读不到状态。
1.3 Read And Write Tag(读写)
解读:
- 前半部分
R:...= 读回状态(如开关位置回读) - 后半部分
W:...= 写命令(如遥控命令) Read Command和Write Command都填n
用途:命令 + 状态回读一体的点。遥控推荐用这种,能同时看到命令下发和执行结果。
1.4 /SE 后缀:选择-执行两步握手
官方说明里有一段关键补充:
Add
/SEafter Write Command to change “Direct Execute” to “Select and Execute”
意思是:在 Write Command 后面加 /SE,就把”直接执行”改成”选择-执行”两步握手。
带 SE 的两种格式:
遥控必须加 /SE。电力遥控误操作后果严重(带负荷拉刀闸、误跳开关),Select-Execute 两步握手是保命机制:先选择确认对象,再执行,中间可以中止。
二、Command 填法规律(关键!)
官方 5 个例子摆在一起,规律一目了然:
| 官方例子 | Tag 类型 | Read Command | Write Command |
R:402 / M_BO_NA_1 / n | 只读 | n | — |
W:2300 / C_RC_NA_1 | 只写 | — | TI 类型名 |
R:400 / M_BO_NA_1 / n / W:2400 / n | 读写 | n | n |
R:100 / M_SP_NA_1 / n / W:2100 / n / SE | 读写+SE | n | n |
W:2100 / C_SC_NA_1 / SE | 只写+SE | — | TI 类型名 |
规律(务必记住):
| Tag 类型 | Read Command | Write Command |
| 只读 / 读写 / 读写+SE | n | n |
| 只写 / 只写+SE | — | TI 类型名 |
一句话:带 R 读部分的 Tag,两个 Command 都填 n;纯 W 写 Tag,Write Command 填 TI 类型名。
我一开始没看透这个规律,在读写+SE 的遥控点里把 Write Command 填成了 TI 类型名(C_SC_NA_1),结果对不上官方例子。逐字对照 5 个例子才发现规律——官方说明要逐字读,不能凭印象。
三、组内 IOA vs 全局 IOA
这是另一个容易栽的坑。
规约理论:IEC104 的 IOA 是 3 字节,可以全站统一编号(全局 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
Group-1 的 IOA=1 和 Group-2 的 IOA=1 是不同的点,靠 TI 类型区分。
配置 Tag 时,地址栏填的是组内相对 IOA,不是全局 IOA。这点和”规约说 IOA 全局唯一”有出入,但以产品实际行为为准。
四、设备参数 t1:t2:t3:k:w:OA:DA:ST
设备属性里这串参数一行填完:
| 参数 | 范围 | 值 | 含义 |
| t1 | 1~255 秒 | 15 | 发送→确认超时 |
| t2 | 1~600 秒 | 10 | 确认→发送超时 |
| t3 | 1~600 秒 | 20 | 空闲测试(TESTFR)超时 |
| k | 1~32767 | 12 | 最大未确认 I 帧数 |
| w | 1~32767 | 8 | 触发 S 帧阈值 |
| OA | — | 1 | 主站地址 |
| DA | — | 1 | 从站公共地址(= 模拟器 COA) |
| ST | 1~3000 秒 | 1 | 扫描时间(总召周期) |
关键:DA 必须和模拟器的 COA 一致,否则链路能建但数据解析全错。t1 必须 > t2。
五、70 个 Tag 完整配置表
下面是验证通过的 70 个 Tag,全部按组内 IOA 编号,可直接复制到 EdgeLink 地址栏。
Group-1 · M_SP_NA_1(单点遥信)· 只读
| # | 点名 | 地址栏(直接复制) | 数据类型 | 量程 |
| 1 | CB_110kV_1_Position | R:1 / M_SP_NA_1 / n | Digital | 0/1 |
| 2 | CB_110kV_2_Position | R:2 / M_SP_NA_1 / n | Digital | 0/1 |
| 3 | CB_Main_Trans_HS_Position | R:3 / M_SP_NA_1 / n | Digital | 0/1 |
| 4 | CB_Main_Trans_LS_Position | R:4 / M_SP_NA_1 / n | Digital | 0/1 |
| 5 | DS_110kV_1_Incoming | R:5 / M_SP_NA_1 / n | Digital | 0/1 |
| 6 | DS_110kV_2_Incoming | R:6 / M_SP_NA_1 / n | Digital | 0/1 |
| 7 | DS_Bus_Coupler | R:7 / M_SP_NA_1 / n | Digital | 0/1 |
| 8 | DS_Ground_1 | R:8 / M_SP_NA_1 / n | Digital | 0/1 |
| 9 | DS_Ground_2 | R:9 / M_SP_NA_1 / n | Digital | 0/1 |
| 10 | Protection_Trip_Main | R:10 / M_SP_NA_1 / n | Digital | 0/1 |
| 11 | Protection_Trip_Line1 | R:11 / M_SP_NA_1 / n | Digital | 0/1 |
| 12 | Protection_Trip_Line2 | R:12 / M_SP_NA_1 / n | Digital | 0/1 |
| 13 | Alarm_Gas_Main | R:13 / M_SP_NA_1 / n | Digital | 0/1 |
| 14 | Alarm_Oil_Temp_High | R:14 / M_SP_NA_1 / n | Digital | 0/1 |
| 15 | Alarm_DC_Ground | R:15 / M_SP_NA_1 / n | Digital | 0/1 |
| 16 | Alarm_SF6_Low | R:16 / M_SP_NA_1 / n | Digital | 0/1 |
Group-2 · M_DP_NA_1(双点遥信)· 只读
| # | 点名 | 地址栏 | 数据类型 | 量程 |
| 17 | DPC_CB_110kV_Bus1 | R:1 / M_DP_NA_1 / n | Digital | 0~3 |
| 18 | DPC_CB_110kV_Bus2 | R:2 / M_DP_NA_1 / n | Digital | 0~3 |
| 19 | DPC_CB_10kV_Out1 | R:3 / M_DP_NA_1 / n | Digital | 0~3 |
| 20 | DPC_CB_10kV_Out2 | R:4 / M_DP_NA_1 / n | Digital | 0~3 |
| 21 | DPC_CB_Capacitor_1 | R:5 / M_DP_NA_1 / n | Digital | 0~3 |
| 22 | DPC_CB_Capacitor_2 | R:6 / M_DP_NA_1 / n | Digital | 0~3 |
| 23 | DPC_CB_Transformer_3 | R:7 / M_DP_NA_1 / n | Digital | 0~3 |
| 24 | DPC_CB_Bus_Coupler | R:8 / M_DP_NA_1 / n | Digital | 0~3 |
Group-3 · M_ME_NB_1(标度化遥测)· 只读
| # | 点名 | 地址栏 | 数据类型 | 量程 |
| 25 | MV_110kV_Bus1_Uab | R:1 / M_ME_NB_1 / n | Analog | 0~120000 V |
| 26 | MV_110kV_Bus1_Ubc | R:2 / M_ME_NB_1 / n | Analog | 0~120000 V |
| 27 | MV_110kV_Bus1_Uca | R:3 / M_ME_NB_1 / n | Analog | 0~120000 V |
| 28 | MV_110kV_Line1_Ia | R:4 / M_ME_NB_1 / n | Analog | 0~1500 A |
| 29 | MV_110kV_Line1_Ib | R:5 / M_ME_NB_1 / n | Analog | 0~1500 A |
| 30 | MV_110kV_Line1_Ic | R:6 / M_ME_NB_1 / n | Analog | 0~1500 A |
| 31 | MV_Main_Trans_P | R:7 / M_ME_NB_1 / n | Analog | 0~100000 kW |
| 32 | MV_Main_Trans_Q | R:8 / M_ME_NB_1 / n | Analog | 0~60000 kvar |
| 33 | MV_10kV_Bus_U | R:9 / M_ME_NB_1 / n | Analog | 0~12000 V |
| 34 | MV_Main_Trans_Load_Pct | R:10 / M_ME_NB_1 / n | Analog | 0~150 % |
| 35 | MV_Ambient_Temp | R:11 / M_ME_NB_1 / n | Analog | 0~1000 (0.1℃) |
| 36 | MV_Trans_Oil_Temp | R:12 / M_ME_NB_1 / n | Analog | 0~1500 (0.1℃) |
Group-4 · M_ME_NC_1(短浮点遥测)· 只读
| # | 点名 | 地址栏 | 数据类型 | 量程 |
| 37 | MV_Frequency_110kV | R:1 / M_ME_NC_1 / n | Analog | 49~51 Hz |
| 38 | MV_Frequency_10kV | R:2 / M_ME_NC_1 / n | Analog | 49~51 Hz |
| 39 | MV_CosPhi_Main | R:3 / M_ME_NC_1 / n | Analog | 0.8~1.0 |
| 40 | MV_Wind_Speed | R:4 / M_ME_NC_1 / n | Analog | 0~30 m/s |
| 41 | MV_Humidity | R:5 / M_ME_NC_1 / n | Analog | 0~100 % |
| 42 | MV_Battery_Voltage | R:6 / M_ME_NC_1 / n | Analog | 0~60 V |
| 43 | MV_Battery_Temp | R:7 / M_ME_NC_1 / n | Analog | 0~50 ℃ |
| 44 | MV_SF6_Pressure | R:8 / M_ME_NC_1 / n | Analog | 0~1 MPa |
Group-5 · M_IT_NA_1(遥脉电度)· 只读
| # | 点名 | 地址栏 | 数据类型 | 单位 |
| 45 | CI_Active_Import_Total | R:1 / M_IT_NA_1 / n | Counter | kWh |
| 46 | CI_Reactive_Import_Total | R:2 / M_IT_NA_1 / n | Counter | kvarh |
| 47 | CI_Active_Day | R:3 / M_IT_NA_1 / n | Counter | kWh |
| 48 | CI_Peak_Valley_Spike | R:4 / M_IT_NA_1 / n | Counter | kWh |
Group-6 · M_SP_TB_1(SOE 带时标单点)· 只读
| # | 点名 | 地址栏 | 数据类型 |
| 49 | SOE_CB_110kV_1 | R:1 / M_SP_TB_1 / n | Digital+TimeTag |
| 50 | SOE_CB_110kV_2 | R:2 / M_SP_TB_1 / n | Digital+TimeTag |
| 51 | SOE_CB_Main_HS | R:3 / M_SP_TB_1 / n | Digital+TimeTag |
| 52 | SOE_CB_Main_LS | R:4 / M_SP_TB_1 / n | Digital+TimeTag |
| 53 | SOE_DS_1 | R:5 / M_SP_TB_1 / n | Digital+TimeTag |
| 54 | SOE_DS_2 | R:6 / M_SP_TB_1 / n | Digital+TimeTag |
| 55 | SOE_DS_BusCoupler | R:7 / M_SP_TB_1 / n | Digital+TimeTag |
| 56 | SOE_DS_Ground_1 | R:8 / M_SP_TB_1 / n | Digital+TimeTag |
| 57 | SOE_DS_Ground_2 | R:9 / M_SP_TB_1 / n | Digital+TimeTag |
| 58 | SOE_Prot_Trip_Main | R:10 / M_SP_TB_1 / n | Digital+TimeTag |
| 59 | SOE_Prot_Trip_Line1 | R:11 / M_SP_TB_1 / n | Digital+TimeTag |
| 60 | SOE_Prot_Trip_Line2 | R:12 / M_SP_TB_1 / n | Digital+TimeTag |
| 61 | SOE_Alarm_Gas | R:13 / M_SP_TB_1 / n | Digital+TimeTag |
| 62 | SOE_Alarm_Oil_Temp | R:14 / M_SP_TB_1 / n | Digital+TimeTag |
| 63 | SOE_Alarm_DC | R:15 / M_SP_TB_1 / n | Digital+TimeTag |
| 64 | SOE_Alarm_SF6 | R:16 / M_SP_TB_1 / n | Digital+TimeTag |
Group-7 · C_SC_NA_1(单点遥控)· 读写 + SE
读写 Tag:读回开关位置(R 部分),写遥控命令(W 部分),加 /SE 走选择执行。 Write Command 填
n,不是 TI 类型名(对照官方例子R:100 / M_SP_NA_1 / n / W:2100 / n / SE)。
| # | 点名 | 地址栏(直接复制) | 数据类型 |
| 65 | CTRL_CB_110kV_Line1 | R:1 / M_SP_NA_1 / n / W:1 / n / SE | Command |
| 66 | CTRL_CB_110kV_Line2 | R:2 / M_SP_NA_1 / n / W:2 / n / SE | Command |
| 67 | CTRL_CB_Bus_Coupler | R:8 / M_DP_NA_1 / n / W:3 / n / SE | Command |
| 68 | CTRL_CB_Capacitor_1 | R:5 / M_DP_NA_1 / n / W:4 / n / SE | Command |
遥控点配置说明:
R:1 / M_SP_NA_1 / n= 读回 Group-1 的 IOA=1(1#进线开关位)作为状态回读W:1 / n / SE= 写 Group-7 的 IOA=1 遥控命令,走 Select-Execute 两步握手- 回读 IOA 和命令 IOA 是不同组的,别搞混
Group-8 · C_SE_NC_1(短浮点设定)· 只写
只写 Tag:Write Command 填 TI 类型名(对照官方例子
W:2100 / C_SC_NA_1 / SE)。
| # | 点名 | 地址栏 | 数据类型 | 量程 |
| 69 | SET_Frequency_Dead_Band | W:1 / C_SE_NC_1 | Command | 0.05~0.5 Hz |
| 70 | SET_Overload_Alarm_Pct | W:2 / C_SE_NC_1 | Command | 80~120 % |
六、对照速查:模拟器组 → ECU Tag
| 模拟器组 | TI 类型 | 组内 IOA | ECU 端 Tag 数 | 地址格式(举例) |
| Group-1 | M_SP_NA_1 | 1~16 | 16 | R:1~16 / M_SP_NA_1 / n |
| Group-2 | M_DP_NA_1 | 1~8 | 8 | R:1~8 / M_DP_NA_1 / n |
| Group-3 | M_ME_NB_1 | 1~12 | 12 | R:1~12 / M_ME_NB_1 / n |
| Group-4 | M_ME_NC_1 | 1~8 | 8 | R:1~8 / M_ME_NC_1 / n |
| Group-5 | M_IT_NA_1 | 1~4 | 4 | R:1~4 / M_IT_NA_1 / n |
| Group-6 | M_SP_TB_1 | 1~16 | 16 | R:1~16 / M_SP_TB_1 / n |
| Group-7 | C_SC_NA_1 | 1~4 | 4 | R:回读 / 回读TI / n / W:1~4 / n / SE |
| Group-8 | C_SE_NC_1 | 1~2 | 2 | W:1~2 / C_SE_NC_1 |
七、填写检查清单
配完 70 个点后,按这个清单逐项核对:
- 设备参数
t1:t2:t3:k:w:OA:DA:ST填15:10:20:12:8:1:1:1 - DA=1(和模拟器 COA 一致)
- t1(15) > t2(10)
- 所有 IOA 用组内编号(1
N),不是全局 170 - 1~64 号点用只读格式
R:组内IOA / TI类型 / n - 65~68 号遥控点用读写+SE 格式,Write Command 填
n - 69~70 号设定点用只写格式,Write Command 填 TI 类型名
C_SE_NC_1 - 下载工程后确认 TCP 连接建立
- 确认 STARTDT 完成(链路通但没数据先查这个)
- 触发总召,看 70 个点数据是否完整上送
八、常见问题速查
| 现象 | 排查方向 |
| 链路建不上 | 模拟器是否启动监听、端口 2404 占用、防火墙 |
| 链路通但没数据 | STARTDT 是否发送、ST 扫描时间是否合理 |
| 数据全是 0 | DA 和 COA 是否一致、IOA 是否对齐 |
| 部分点有部分没有 | TI 类型是否选对、组内 IOA 是否匹配 |
| 遥控无反应 | 是否加了 /SE、Write Command 是否填对(读写填 n) |
| 设定点不生效 | 只写 Tag 的 Write Command 要填 TI 类型名 |
| 时标错乱 | CP56Time2a 字节序、时区设置 |
九、小结
| 知识点 | 要点 |
| 三种 Tag 格式 | 只读 R: / 只写 W: / 读写 R:…W: |
| Command 填法 | 带 R 的填 n,纯 W 的填 TI 类型名 |
| /SE 后缀 | 遥控必须加,走 Select-Execute 两步握手 |
| IOA 编号 | 用组内相对地址,不是全局 |
| 设备参数 | DA=COA,t1>t2,OA/DA 别搞反 |
| 链路验证 | TCP → STARTDT → 总召数据 |
这张表是我踩完 4 个坑之后验证正确的版本。研华 EdgeLink IEC104 驱动的官方说明不算复杂,但有几个”不说你看不出来”的细节(Command 填法规律、组内 IOA、SE 机制),照着这份配置表填能直接避坑。
系列文章导航
- 第一篇:IEC 60870-5-104 电力远动规约详解
- 第二篇:IEC104 模拟器仿真环境搭建与 110kV 变电站点位设计
- 第三篇:研华 ECU-1251TL 配置 IEC104 主站实战
- 第四篇:研华 IEC104 驱动 Tag 地址格式详解与 70 点配置表(本文)
