IEC104协议接入
约 2106 字大约 7 分钟
设备接入第三方协议IEC104电力规约
2026-08-20
简介
IEC104(IEC 60870-5-104)是电力行业应用最广泛的远动通信协议之一,联犀平台通过 iec104 协议网关接入各类电力设备(测控装置、综自装置、RTU、站控前置机)。
与 Modbus 等"从站轮询"模式不同,IEC104 协议服务作为主站(Client)主动通过 TCP 连接从站(Server),连接成功后发送总召唤(Interrogation),从站应答全部遥信、遥测、累积量数据;此后从站可自发上报变化量(Spontaneous),协议服务被动接收解析。
核心能力:平台提供产品级「点位映射表」与设备级「连接参数配置」,将 IEC104 信息对象地址(IOA)与物模型属性一一对应,无需编写任何代码即可完成电力设备接入、数据采集与遥控/遥调下行。
应用场景
- 电力设备采集:测控装置、综自装置、RTU、站控前置机等 IEC104 从站设备的遥信/遥测/累积量数据采集
- 主站主动连接:协议服务作为主站主动 TCP 连接从站,每设备一个独立连接(现场设备通常各占独立 IP:端口)
- 总召唤 + 变化量上报:连接后总召唤全量数据,此后被动接收自发上报变化量,亦可按采集周期重复召唤防漏报
- 遥控/遥调下行:支持单点/双点遥控命令与设定值遥调命令
- 自动重连:断线自动重连并上报设备在线/离线状态
前置条件
- 协议容器已部署:
protocol-iec104容器运行正常 - 设备可达:IEC104 从站设备的 TCP 端口可被协议容器访问
- 产品已创建:产品传输协议选择
MQTT,协议类型选择iec104
产品配置
1. 创建产品
创建产品时选择协议 iec104(传输协议 MQTT),创建后进入产品详情。

2. 物模型配置
配置产品的物模型属性(如电压、电能、开关状态等),每个属性对应一个 IEC104 信息对象地址(IOA)。
3. 点位映射(重点)
进入产品详情「设备接入」Tab,打开点位映射表,以物模型属性为准,逐行配置 IEC104 点位参数:

| 字段 | 说明 |
|---|---|
identifier | 物模型属性标识符(只读,来自物模型) |
ioa | IEC104 信息对象地址(InfoObjAddr,1..3 字节) |
typeId | ASDU 类型标识(下拉选择),决定原始值解码方式 |
scale | 线性换算系数:上报值 = 原始值 × scale + offset(默认 1) |
offset | 线性换算偏移:上报值 = 原始值 × scale + offset(默认 0) |
typeId 类型标识下拉包含:M_SP_NA_1(单点遥信)、M_DP_NA_1(双点遥信)、M_ME_NA_1(规一化遥测)、M_ME_NB_1(标度化遥测)、M_ME_NC_1(短浮点遥测)、M_IT_NA_1(累积量)等。
TypeID 与物模型值对应:
| TypeID | 原始值 | 上报物模型值 | 下行命令 |
|---|---|---|---|
M_SP_NA_1(单点遥信) | bool | bool | C_SC_NA_1 单点遥控 |
M_DP_NA_1(双点遥信) | 0/1/2/3 | int(0=不确定 1=合 2=分 3=中间态) | C_DC_NA_1 双点遥控 |
M_ME_NA_1(规一化遥测) | int16(-32768..32767) | float(/32768 × scale + offset) | C_SE_NA_1 规一化设定值 |
M_ME_NB_1(标度化遥测) | int16 | float(× scale + offset) | C_SE_NB_1 标度化设定值 |
M_ME_NC_1(短浮点遥测) | float32 | float(× scale + offset) | C_SE_NC_1 短浮点设定值 |
M_IT_NA_1(累积量) | int32 | int | 不支持下行 |
M_BO_NA_1(32位比特串) | uint32 | int | 不支持下行 |
品质处理:品质描述词含无效/非当前标志时丢弃该点;累积量无效或溢出时丢弃。
保存点位时写入产品协议配置
protocolConf.points;未配置的点位走旧版物模型扩展配置(extendConfig)回退读取。
设备接入
1. 创建设备
在产品下创建设备,进入设备详情「设备接入」Tab。配置页会自动读取设备信息并填充连接参数,可直接编辑或使用默认值:

2. 连接参数
| 参数 | 说明 | 默认值 |
|---|---|---|
address | 从站地址 ip:端口(协议服务主动 TCP 连接的从站) | 端口默认 24041 |
commonAddr | 站公共地址(Common Address) | 1 |
timeout | 请求超时(毫秒) | 1000 |
reconnectInterval | 断线重连间隔(毫秒) | 60000 |
duration | 周期总召唤间隔(毫秒,0=仅连接时召唤一次) | 30000 |
3. 连通测试
配置页提供「连通测试」按钮,以当前表单参数对从站发起 TCP 拨号并完成 STARTDT 服务激活,验证连接可用性。测试通过后提示「连接成功」及耗时:

连通测试走协议自有接口(
__action=ping),需协议容器已部署且从站可达。
数据验证
真实链路验证结论
联犀平台接入 iec104 协议后,验证流程与结果如下:
- mock 从站启动:IEC104 模拟从站监听
24041端口,配置遥信/遥测/累积量数据 - 协议服务连接:协议容器作为主站主动连接从站,设备显示在线
- 总召唤上报:连接后总召唤,从站应答,物模型属性出现数据(电压 220.5、电能 123456、开关状态 2)
设备物模型数据页可见实时属性值:

| 测试项 | 状态 | 详情 |
|---|---|---|
| 设备连接 | ✅ 在线 | 协议服务主动 TCP 连接 mock 从站成功 |
| 总召唤上报 | ✅ 成功 | 遥测/累积量/遥信数据解析上报 |
| 物模型数据 | ✅ 可见 | 电压 220.5 / 电能 123456 / 开关状态 2 |
遥控/遥调下行
平台通过物模型服务/属性下发控制指令,协议服务按点位 typeId 选择对应命令类型并编码发送:
- 遥控:单点命令(
C_SC_NA_1)、双点命令(C_DC_NA_1) - 遥调:设定值命令(
C_SE_NA_1/C_SE_NB_1/C_SE_NC_1,与遥测 typeId 对应) - 累积量/比特串点位不支持下行
技术方案
接入架构
IEC104 从站 ──TCP/104──> protocol-iec104 容器 ──FastEvent──> 联犀平台
(RTU/测控/前置) 主站连接 - 总召唤/自发上报解析 DevPubMsg dmsvr
- 遥控/遥调下行 ◄──下行订阅── 物模型/属性/状态- 协议服务按
ProtocolCode拉取设备列表,逐设备建立 TCP 连接(每设备一个连接) - 连接成功后发送总召唤(Interrogation),STARTDT 激活后再召唤一次确保从站就绪
- 从站应答/自发上报 → 按 ASDU
typeId解码信息对象,按 IOA 查点位映射 → 组map[identifier]value - 属性通过
DevPubMsg上报平台,设备在线/离线状态同步上报 - 可选周期总召唤(
duration配置,防漏报兜底),断线后按reconnectInterval自动重连
数据流
- 上行(采集):总召唤 + 自发上报 → ASDU 解码 → 点位映射 → 属性上报
- 下行(控制):平台控制指令 → 按点位 typeId 选命令类型 → 发送
C_SC/C_DC/C_SE_*命令
部署说明
IEC104 协议默认不预装,由 scripts/add-protocol.sh iec104 按需加载/下线。部署片段为 deploy/compose/parts/protocol/iec104.yml:
# 协议片段:iec104(默认不预装,由 scripts/add-protocol.sh 按需加载/下线)
services:
protocol-iec104:
image: docker.unitedrhino.com/proto/iec104:${PROTO_IMAGE_TAG}
container_name: protocol-iec104
hostname: protocol-iec104
restart: unless-stopped
environment:
confSuffix: Docker
ports:
- "9357:9357"
networks:
- saas_prod- 镜像:
docker.unitedrhino.com/proto/iec104 - 协议服务端口:
9357(配置页 Web 服务,平台以 iframe 渲染) - 协议代码:
iec104,实现位于backend/protocol/iec104/(CoreProtocol 设备直连类型)
注意事项
- 一个 ASDU 只包含一种类型,点位
typeId必须与从站实际发送类型一致(由工程配置保证) - 规一化(M_ME_NA)原始值是 -1..1 定点数,需配置
scale换算为物模型量程 - 累积量(M_IT)只响应计数器召唤(cause=10),不响应总召唤
- 双点遥信(M_DP)建议物模型配 enum(int),映射 0/1/2/3 状态
- 周期总召唤间隔受 IEC104 规范约束(防召唤风暴),默认 30s,请勿配置过小
- 品质位无效/非当前的数据会被丢弃,属正常行为
参考链接
更新日志
2026/8/21 00:05
查看所有更新日志
5f4ef-docs(use): 新增 IEC104 协议接入文档(含 KVM 实测截图)并联动更新协议清单于
