工业应用通信协议:IEC104

一、IEC104 协议概述

1.1 协议简介

IEC 60870-5-104 (简称 IEC104) 是国际电工委员会(IEC)制定的用于电力系统调度自动化的远动通信协议。它是在 IEC 60870-5-101 基础上,通过 TCP/IP 网络传输的扩展协议。

cpp 复制代码
┌────────────────────────────────────────────────────────────────────┐
│                    IEC 60870-5-104 协议栈                          │
├────────────────────────────────────────────────────────────────────┤
│  应用层 ASDU (Application Service Data Unit)                       │
│  ┌──────────────────────────────────────────────────────────────┐ │
│  │ 类型标识 | VSQ | 传送原因 | 公共地址 | 信息对象地址 | 数据   │ │
│  └──────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────┤
│  APCI (Application Protocol Control Information)                   │
│  ┌──────────────────────────────────────────────────────────────┐ │
│  │ 启动字符(0x68) | APDU长度 | 控制域(4字节)                    │ │
│  └──────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────┤
│  传输层: TCP (端口 2404)                                           │
├────────────────────────────────────────────────────────────────────┤
│  网络层: IP                                                        │
├────────────────────────────────────────────────────────────────────┤
│  数据链路层 + 物理层: 以太网                                       │
└────────────────────────────────────────────────────────────────────┘

1.2 帧类型

IEC104 协议定义了三种帧格式:

帧类型 名称 功能 控制域特征
I帧 信息帧 传输用户数据(ASDU) 发送序号 + 接收序号
S帧 监视帧 确认接收、流量控制 只有接收序号
U帧 无编号帧 链路控制(启动/停止/测试) STARTDT/STOPDT/TESTFR
cpp 复制代码
I帧格式 (信息传输):
┌────────┬────────┬────────┬────────┬────────┬─────────────┐
│ 0x68   │ 长度   │ 发送序号(低) │ 发送序号(高) │ 接收序号(低) │ 接收序号(高) │ ASDU... │
└────────┴────────┴────────┴────────┴────────┴─────────────┘

S帧格式 (监视确认):
┌────────┬────────┬────────┬────────┬────────┬────────┐
│ 0x68   │ 0x04   │ 0x01   │ 0x00   │ 接收序号(低) │ 接收序号(高) │
└────────┴────────┴────────┴────────┴────────┴────────┘

U帧格式 (链路控制):
┌────────┬────────┬────────┬────────┬────────┬────────┐
│ 0x68   │ 0x04   │ 控制字 │ 0x00   │ 0x00   │ 0x00   │
└────────┴────────┴────────┴────────┴────────┴────────┘

1.3 核心数据类型

根据代码中的实现,主要支持以下数据类型:

数据类型 类型标识符 说明
遥信(DI) M_SP_NA (1), M_DP_NA (3) 单点/双点状态信息
遥测(AI) M_ME_NC (13), M_ME_NA (9) 浮点/归一化测量值
遥控(DO) C_SC_NA (45), C_DC_NA (46) 单点/双点控制命令
遥调(AO) C_SE_NA (48), C_SE_NC (50) 归一化/浮点设定值
SOE M_SP_TB (30) 带时标的单点状态变化
电能量 M_IT_NA (15) 累积电能量
时钟同步 C_CS_NA (103) 时钟同步命令

二、应用场景

2.1 典型应用领域

cpp 复制代码
┌────────────────────────────────────────────────────────────────────────────┐
│                        IEC104 典型应用架构                                  │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│    ┌─────────────────────────────────────────────────────────┐            │
│    │              调度中心 / SCADA主站系统                     │            │
│    │         (IEC104 Client / 控制站)                         │            │
│    └──────────────────────────┬──────────────────────────────┘            │
│                               │                                            │
│                    ┌──────────┴──────────┐                                │
│                    │    TCP/IP 网络       │                                │
│                    │   (端口 2404)        │                                │
│                    └──────────┬──────────┘                                │
│           ┌──────────────────┼──────────────────┐                         │
│           │                  │                  │                         │
│    ┌──────┴──────┐    ┌──────┴──────┐    ┌──────┴──────┐                  │
│    │  变电站RTU  │    │ 配电终端DTU │    │ 新能源控制器 │                  │
│    │  (Server)   │    │  (Server)   │    │  (Server)   │                  │
│    └──────┬──────┘    └──────┬──────┘    └──────┬──────┘                  │
│           │                  │                  │                         │
│    ┌──────┴──────┐    ┌──────┴──────┐    ┌──────┴──────┐                  │
│    │ 保护/测控   │    │  开关设备   │    │光伏/储能系统│                  │
│    │   装置      │    │             │    │             │                  │
│    └─────────────┘    └─────────────┘    └─────────────┘                  │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘

2.2 主要应用场景

应用场景 描述 特点
电网调度 省/地/县调度中心与变电站通信 大规模、高可靠性
配电自动化 配电主站与配电终端通信 分布式、实时性
新能源 光伏/风电场与集控中心通信 海量数据、变化频繁
储能系统 BMS与EMS之间的数据交换 双向控制
工业自动化 工厂电力监控系统 集成性强

三、客户端与服务端架构对比

3.1 该程序在控制器侧的角色

cpp 复制代码
┌─────────────────────────────────────────────────────────────────────────────┐
│                        控制器侧 IEC104 通信架构                              │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│   ┌───────────────────────────────────────────────────────────────────┐    │
│   │                    MGC V2 控制器                                   │    │
│   │  ┌─────────────────────────────────────────────────────────────┐  │    │
│   │  │                      pro_iec104 模块                         │  │    │
│   │  │  ┌─────────────────────┐    ┌─────────────────────────────┐ │  │    │
│   │  │  │   Sub104 (子站)     │    │  TerminalMaster (主站)      │ │  │    │
│   │  │  │  ┌───────────────┐  │    │  ┌─────────────────────┐    │ │  │    │
│   │  │  │  │ TCP Server    │  │    │  │ TCP Client          │    │ │  │    │
│   │  │  │  │ 监听端口2404  │  │    │  │ 主动连接主站        │    │ │  │    │
│   │  │  │  │ 被动等待连接  │  │    │  │ 主动发起请求        │    │ │  │    │
│   │  │  │  └───────────────┘  │    │  └─────────────────────┘    │ │  │    │
│   │  │  │  功能:              │    │  功能:                      │ │  │    │
│   │  │  │  - 响应总召         │    │  - 发起总召                 │ │  │    │
│   │  │  │  - 数据变化上报     │    │  - 接收数据                 │ │  │    │
│   │  │  │  - 接收遥控命令     │    │  - 下发遥控命令             │ │  │    │
│   │  │  │  - 执行本地控制     │    │  - 时钟同步                 │ │  │    │
│   │  │  └─────────────────────┘    └─────────────────────────────┘ │  │    │
│   │  └─────────────────────────────────────────────────────────────┘  │    │
│   └───────────────────────────────────────────────────────────────────┘    │
│             ▲                                      │                        │
│             │ TCP/IP                               │ TCP/IP                 │
│             │                                      ▼                        │
│   ┌─────────┴─────────┐                  ┌─────────┴─────────┐             │
│   │  上级调度主站      │                  │  下级子设备RTU    │             │
│   │  (SCADA Client)   │                  │  (IEC104 Server)  │             │
│   └───────────────────┘                  └───────────────────┘             │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

3.2 客户端(Client) vs 服务端(Server) 详细对比

特性 子站模式 (Sub104/Server) 主站模式 (TerminalMaster/Client)
TCP角色 TCP Server (监听端口) TCP Client (主动连接)
默认端口 2404 (可配置) 连接远端2404
连接方式 被动等待连接 主动发起连接
数据流向 上报数据给主站 从子站采集数据
总召处理 响应总召,上传数据 发起总召,接收数据
遥控流程 接收并执行遥控命令 下发遥控命令
变化上报 主动上报(COS/COT) 被动接收变化数据
时钟同步 接收对时命令 发送对时命令
典型应用 作为被采集设备对接上级调度 采集下级子设备数据

四、IEC104 vs IEC61850 vs Modbus 协议对比

4.1 综合对比表

特性 IEC 60870-5-104 IEC 61850 Modbus TCP
标准组织 IEC TC57 IEC TC57 Modicon (Schneider)
发布时间 2000年 2003年 1979年(RTU)/1999年(TCP)
传输层 TCP/IP (端口2404) TCP/IP + 专用协议 TCP/IP (端口502)
数据模型 平面点表 面向对象(IED/LD/LN) 寄存器/线圈
应用层 ASDU MMS/GOOSE/SMV 简单请求/响应
语义描述 类型标识符 SCL语言描述
变化上报 支持(COT机制) 支持(Report/GOOSE) 不支持(需轮询)
事件顺序 SOE(毫秒级) 支持(纳秒级) 不支持
配置方式 手动配置点表 SCL/ICD/SCD自描述 手动配置寄存器
互操作性 良好 优秀(自描述) 一般
复杂度 中等
实施成本 中等
主要应用 电力调度/配电 变电站内部 工业自动化

4.2 协议栈对比图

cpp 复制代码
┌──────────────────────────────────────────────────────────────────────────────┐
│                           协议栈架构对比                                      │
├──────────────────────┬──────────────────────┬──────────────────────┐─────────┤
│      IEC 104         │      IEC 61850       │     Modbus TCP       │  OSI层  │
├──────────────────────┼──────────────────────┼──────────────────────┼─────────┤
│                      │    SCL 配置语言       │                      │         │
│    ASDU 数据单元     ├──────────────────────┤                      │  应用层 │
│    (类型+COT+数据)   │ MMS │ GOOSE │  SMV   │  Modbus 功能码        │         │
├──────────────────────┼─────┼───────┼────────┼──────────────────────┼─────────┤
│       APCI           │     │       │        │                      │  表示层 │
│    (I/S/U帧控制)     │ TCP │ 以太网│ 以太网 │    MBAP Header       │         │
├──────────────────────┼─────┼───────┼────────┼──────────────────────┼─────────┤
│        TCP           │ TCP │ IEEE  │ IEEE   │        TCP           │  传输层 │
│     (端口2404)       │     │802.1Q │802.1Q  │     (端口502)        │         │
├──────────────────────┼─────┴───────┴────────┼──────────────────────┼─────────┤
│         IP           │          IP          │         IP           │  网络层 │
├──────────────────────┼──────────────────────┼──────────────────────┼─────────┤
│      Ethernet        │      Ethernet        │      Ethernet        │数据链路 │
└──────────────────────┴──────────────────────┴──────────────────────┴─────────┘

4.3 数据模型对比

cpp 复制代码
┌─────────────────────────────────────────────────────────────────────────────┐
│                          数据模型对比                                        │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  IEC 104 (平面点表):                                                        │
│  ┌──────────────────────────────────────────────────────────┐              │
│  │ 公共地址 │ 信息对象地址 │ 数据值 │ 品质描述 │ 时标       │              │
│  │   1      │    0x0001    │   1    │  0x00    │ CP56Time2a │              │
│  │   1      │    0x4001    │ 220.5  │  0x00    │    -       │              │
│  └──────────────────────────────────────────────────────────┘              │
│                                                                             │
│  IEC 61850 (面向对象):                                                      │
│  ┌──────────────────────────────────────────────────────────┐              │
│  │ IED: Bay1_Protection                                      │              │
│  │   └─ LD: Protection                                       │              │
│  │        └─ LN: PTOC1 (过流保护)                            │              │
│  │             ├─ DO: Str (启动)                             │              │
│  │             │    └─ DA: stVal = true                      │              │
│  │             │    └─ DA: q = good                          │              │
│  │             │    └─ DA: t = 2024-01-15T10:30:00.123Z      │              │
│  │             └─ DO: Op (动作)                              │              │
│  └──────────────────────────────────────────────────────────┘              │
│                                                                             │
│  Modbus (寄存器模型):                                                       │
│  ┌──────────────────────────────────────────────────────────┐              │
│  │ 线圈 (Coil):        地址 0-65535, 单bit读写               │              │
│  │ 离散输入 (DI):      地址 0-65535, 单bit只读               │              │
│  │ 保持寄存器 (HR):    地址 0-65535, 16bit读写               │              │
│  │ 输入寄存器 (IR):    地址 0-65535, 16bit只读               │              │
│  └──────────────────────────────────────────────────────────┘              │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
相关推荐
无敌最俊朗@4 小时前
WebSocket与Webhook:实时通信技术对比
网络·websocket·网络协议
2301_773730316 小时前
系统编程—IPC进程间通信
网络·网络协议
fiveym7 小时前
Apache HTTP 服务搭建全攻略
网络协议·http·apache
老蒋新思维7 小时前
创客匠人推演:当知识IP成为“数字心智”的架构师——论下一代认知服务的形态
网络·人工智能·网络协议·tcp/ip·机器学习·创始人ip·创客匠人
BuffaloBit8 小时前
5G 核心网架构入门
网络协议·5g·架构
2501_915106329 小时前
HTTP 协议详解,HTTP 协议在真实运行环境中的表现差异
网络·网络协议·http·ios·小程序·uni-app·iphone
老蒋新思维10 小时前
创客匠人:从个人IP到知识变现,如何构建可持续的内容生态?
大数据·网络·人工智能·网络协议·tcp/ip·创客匠人·知识变现
老蒋新思维10 小时前
创客匠人洞察:从“个人品牌”到“系统物种”——知识IP的终极进化之路
网络·人工智能·网络协议·tcp/ip·重构·创客匠人·知识变现