IEC104协议与示例解析以及模拟工具的使用

一、IEC 104协议概述

1. 什么是IEC 104协议

  • IEC 60870-5-104,简称IEC 104,是国际电工委员会(IEC)制定的用于电力系统远程控制和监视的通信协议,继承了IEC 60870-5-101协议的应用层,适用于广域网环境。
  • 从IEC 101到IEC 104的演进
    • IEC 60870-5-101(IEC 101):基于串行通信,适用于点对点或多点的远动通信。
    • IEC 60870-5-104(IEC 104):基于TCP/IP的网络通信,适应了现代网络的发展需求。

2. IEC 104的定位

  • 应用层协议:定义了应用数据的格式和传输方式。
  • 传输层协议:利用TCP/IP协议栈,实现可靠的数据传输。
  • 面向广域网的远动通信:适用于电力系统中主站与子站之间的远程数据交换。

3.IEC 104协议的技术特点

  • 长连接机制:维持客户端和服务器之间的持续连接,提高了通信效率。
  • 数据优化:采用ASDU(应用服务数据单元)结构,支持批量数据传输,减少了通信开销。
  • 支持遥测遥信遥控遥调等多种功能,满足电力系统的多样化需求。

二、IEC 104协议的主要功能

1.遥信(状态信息的传输)

遥信是指将远程设备的状态信息(如开关状态、告警信号)通过通信网络传送到控制中心,以便监视和记录。

  • 应用场景:
    • 开关状态监视:实时监测断路器、隔离开关等设备的合分状态。
    • 故障报警:当设备出现故障或异常时,立即上报告警信息。
  • 特点:
    • 及时性:状态变化需要及时上报,便于控制中心快速做出响应。
    • 可靠性:信息传输必须准确无误,避免误报和漏报。
  • 信息类型:
    • 单点信息(SPS):表示单个状态量,如开/关。
    • 双点信息(DPS):表示设备具有两种互斥的状态,如合位、分位、异常。

2. 遥测(测量值的传输)

遥测是指将远程设备的运行数据(如电压、电流、功率等测量值)通过通信网络传送到控制中心,用于监测和分析。

  • 应用场景:
    • 电参量监测:实时获取电压、电流、有功功率、无功功率、频率等关键参数。
    • 环境参数监测:获取设备环境的温度、湿度、压力等数据。
  • 特点:
    • 连续性:需要持续、定期地传输数据,形成时间序列。
    • 准确性:测量数据需满足一定的精度要求,以保证分析的可靠性。
  • 数据类型:
    • 模拟量(测量值):连续变化的物理量,通常以浮点数或定点数形式传输。
    • 计数器值:如电能表读数,用于计量和结算。

3. 遥调(远方参数的调整)

遥调是指控制中心对远程设备的运行参数进行调整,如改变设定值、调节运行模式等。

  • 应用场景:
    • 电压调节:调整变压器的分接头位置,改变输出电压。
    • 无功功率补偿:调节电容器组的投入或切除,优化电网功率因数。
    • 频率控制:通过调整发电机的出力,维持电网频率稳定。
  • 特点:
    • 精确性:参数调整需要精确到一定的数值范围。
    • 安全性:参数调整可能影响电网运行,需要严格的审批和确认流程。
  • 实现方式:
    • 设定值下发:控制中心下发新的参数设定值,设备接收后进行调整。
    • 参数查询:可以远程读取设备当前的参数设定,以便做出合理调整。

4. 遥控(控制命令的下发)

遥控是指从控制中心(如调度中心或主站)通过通信网络向远程设备(如变电站的开关设备)发送控制命令,以实现对设备的远程操作。

  • 应用场景:
    • 断路器合闸/分闸:远程控制断路器的开启或关闭,调节电力线路的通断。
    • 设备启停:远程启动或停止发电机、变压器等大型设备。
  • 特点:
    • 安全性高:为了防止误操作,通常采用选择-执行(Select-Before-Operate)的两步控制方式。
    • 实时性要求高:需要及时响应控制命令,以保障电网的安全稳定运行。
  • 实现方式:
    • 选择命令:先发送选择命令,确认目标设备和操作类型。
    • 执行命令:收到设备确认后,再发送执行命令,完成实际操作。
    • 确认机制:设备执行后反馈执行结果,供控制中心确认。

三、IEC 104协议的结构

在104协议中ADPU是核心概念,APDU(Application Protocol Data Unit,应用协议数据单元)是用于在电力系统和工业自动化系统中的远程终端设备(RTU)与控制中心(SCADA 系统)之间传输数据的基本单元。APDU 由两部分组成:APCI(Application Protocol Control Information,应用协议控制信息)和 ASDU(Application Service Data Unit,应用服务数据单元)。APDU 的结构和功能确保了数据传输的可靠性和有效性。

104协议根据控制字段的不同,可以分为三种类型的数据帧:

I 帧(信息帧,Information Frame)

  • 用于传输实际的数据。
  • 包含发送序列号(N(S))和接收序列号(N(R))。

S 帧(监视帧,Supervisory Frame)

  • 用于控制流量和确认数据接收。
  • 仅包含接收序列号(N(R))。

U 帧(无编号帧,Unnumbered Frame)

  • 用于控制和管理命令,如连接建立和释放。
  • 包含具体的控制命令码。

1. ACPI(应用协议控制信息)

包含控制数据传输的控制信息,包括启动字符、APDU 长度和控制字段等,具体结构如下:

启动字符(Start Character) :固定值 0x68,表示 APCI 的开始。

APDU 长度(APDU Length):表示整个 APDU(包括 APCI 的控制字段 和 ASDU)的长度,最大为253字节。

控制字段(Control Field):由四个字节组成,包含不同类型的控制信息,具体格式取决于帧的类型(I 帧、S 帧、U 帧)。

I 帧的控制字段如下图所示:

I 帧控制字段分为发送序列号和接收序列号,序列号有15位,其中低字节的最低位为0,可表示的最大序列号为65535。

S 帧的控制字段如下图所示:

S 帧没有发送序列号,只有接收序列号,但是 S 帧的第一个字节最低位为1。S 帧只有 ACPI,没有 ASDU。

U 帧的控制字段如下图所示:

U 帧只有第一个字节的高6位有效,用来表示对应的控制指令。一般都是先发生效,然后回复确认,U 帧也是只有 ACPI,没有 ASDU。

2. ASDU(应用服务数据单元)

包含实际的应用层数据和相关的控制信息,包括类型标识符、可变结构限定符、传输原因、公共地址和信息对象等,具体结构如下:

类型标识符(Type Identifier, TI):标识 ASDU 的类型,指示所传输的数据或命令的种类。一个字节,类型有单点信息、标度化测量值等,每种类型其信息对象所占用的字节个数不一样。

可变结构限定符(Variable Structure Qualifier, VSQ):指示 ASDU 中信息对象的数量以及相关的属性。一个字节,其中最高位表示位为1表示信息对象的地址连续,只有第一个信息对象有地址,其他对象的地址就是累加1。最高位为0,就表示每个信息对象地址不连续,需要表示出来,除去最高位后剩下的就是信息对象的个数

传输原因(Cause of Transmission, COT):描述数据传输的原因,如周期性传输、背景扫描、响应命令等。一个字节。

原始地址(Originator Address, ORG): 可选,一般默认为0。一个字节。

公共地址(Common Address of ASDU):表示发送或接收设备的地址。两个字节。

信息对象(Information Object):包含实际的数据或命令,包括信息对象地址和数据元素等。信息对象的个数根据可变结构限定符的低7位来决定,每个信息对象都有地址,3个字节。如果是信息对象地址是连续的,只需要表示第一个信息对象地址即可,不连续则每个信息对象地址都需要表示,具体看后面的示例解析。

四、IEC 104协议示例解析

需要说明一下104一般是小端模式,也就是低位字节放在低地址,也就是前面。

S 帧:

这是一个 S 帧的具体内容以十六进制表示。

0x68是起始符号,0x04表示整个 S 帧的长度是4个字节。

0x0001是 S 帧固定格式,0x0060表示接收序列号,是96但是需要除2,因为最低位固定为0,所以是接收到了48个帧。

U 帧:

U 帧有三种,分别为启动、停止和测试。

这是一个启动命令 U 帧的具体内容。

0x68是起始符号,0x04表示整个 U 帧的长度是4个字节。

0x07使用二进制表示是0 0 0 0 0 1 1 1,低二位固定为1不用管,第三位置1表示一个启动命令。

发送了启动 U 帧,需要应答一个确认 U 帧。

0x68是起始符号,0x04表示整个 U 帧的长度是4个字节。

0x0B使用二进制表示是0 0 0 0 1 0 1 1,低二位固定为1不用管,第四位置1表示一个确认启动命令。

I 帧:

这是一个单点信息类型 I 帧的具体内容。

0x68是起始符号,0x1E表示整个 I 帧的长度是30个字节。

0x0010是发送序列号,表示发送了8个 I 帧,0x0002是接收序列号,表示接收到了1个 I 帧。

0x01是类型标识符,表示为单点信息。

0x91是可变结构限定符使用二进制表示为1 0 0 1 0 0 0 1,最高位为1表示信息对象的地址是连续的,剩下的7位为信息对象的个数,也就是有17个信息对象。

0x03是传输原因,具体意思为突发,传输原因有很多,具体看文章末尾的参考链接

0x00是原始地址,一般默认为0。0x0001是公共地址,按照自己的需求设置。

0x0000001是信息对象地址,表示第一个信息对象的地址为1,后面的信息对象地址依次连续递增,第二信息对象地址为2等等。

0x00是第一个信息对象的具体内容,也就是传输的数据,0x01的第二个信息对象的具体内容,......,0x01是最后一个信息对象的内容,也是第十七个信息对象。

这个 I 帧也是单点信息类型,其他的字段就不解释,来解释一下不一样的。

可变结构限定符是第八个字节0x02使用二进制表示0 0 0 0 0 0 1 0,最高位为0表示信息对象的地址不连续,剩下7位表示有2个信息对象。

0x000015是第一个信息对象0x00的地址,0x000016是第二个信息对象0x00的地址,这里由于特殊原因两个信息对象的地址还是连续递增,但是实际上这两个信息对象的地址是可以随便设置的,没有关系,所以每个信息对象的地址需要写在 I 帧中。

这个 I 帧是标度化测量值类型,主要区别是第7个字节类型标识符是0x0B,在0x004013信息对象地址后,每个信息对象的内容使用3个字节,不像单点信息是1个字节。例如,0x007C+0x00这三个字节其中前两个字节是信息对象的具体值,后面这个字节是信息对象标度化值的质量描述(QDS)。

质量描述(QDS)位分配:

QDS 是一个 8 位(1 字节)数据结构,各位的含义如下:

名称 含义
7 IV(无效位) 1 表示数据无效,0 表示数据有效
6 NT(非当前位) 1 表示数据不是当前值,0 表示数据是当前值
5 SB(替代位) 1 表示数据为替代值,0 表示数据为实际测量值
4 BL(阻塞位) 1 表示数据被阻塞,0 表示数据正常
3-0 RES(保留位) 通常填充 0 或其他定义的状态位

常见的填充值:

  • 所有质量描述位为 0 :即 0x00,表示数据是有效的、当前的、正常的实际测量值,没有替代或阻塞状态。这个值通常用于没有特殊质量状态的正常数据。

  • 设置无效位(IV)0x80 表示数据无效。常用于传输数据时表示该数据当前不可用或不可信。

  • 设置阻塞位(BL)0x10 表示数据被阻塞。常用于表示该数据由于某种原因被锁定或不可更改。

  • 设置替代位(SB)0x20 表示数据是替代值而非实际测量值。用于系统维护或测试阶段时的数据替代。

这里还需要补充的就是每种类型信息对象所占的字节个数不一样,且传输原因也不相同。

在上面两张图中可以看到,单点信息的信息对象格式是 SIQ,而 SIQ 的长度就是一个字节。

表量化测量值的信息对象格式是 SVA + QDS,而 SVA 的长度是二哥字节,QDS 的长度是一个字节,加上一共就3个字节了。这些信息可以在文章末尾的参考连接中找到

这个 I 帧是一个时间同步类型,其类型标识符为0x67。信息对象格式是 CP56Time2a 表示7个二进制时间,所以在0x000000信息对象地址后面7个字节就是信息对象的内容。

0x63:毫秒的低8位

0x7C:毫秒的高8位(表示总共毫秒数)

0x15:分钟

0x10:小时

0x1E:日期

0x0A:月份

0x18:年份(从2000年开始的偏移)

五、IEC 104模拟工具的使用

通过百度网盘分享的文件:104.zip

链接:https://pan.baidu.com/s/1-IZZhC76OmCj4kTnEMFfPw?pwd=4yft

提取码:4yft

这个压缩包中有104模拟工具的安装包和一些104的资料,希望能帮助到大家学习和运行好 IEC 104协议。

通过连接下载压缩包,解压后在104主站模拟工具里查看使用说明,然后就能正确安装软件了。

软件安装完打开是这样,通过在右上方配置通讯方式既能当客户端也能当服务端,然后把相应的 IP 地址填写好,需要注意的是端口只能是2404。

左上方菜单栏中,有启动、停止和暂停命令,还能保存报文和打开保存过的报文。

打开左上方工具里的选项,还能设置遥信、遥测等起始地址和个数。

下方会显示设置过的遥信,遥测等地址的值。之前说的单点信息就是遥信,而标度化值就是遥测。

可以选中一个报文,点击右键,选择报文解析,软件就能自动解析这个报文的每个字段。

如果大家需要编写代码实现 IEC 104协议,有很多的开源库可以选择,不需要从头开始造轮子,推荐一个使用 C 语言编写很经典的 IEC 104开源库:lib60870

以上就是 IEC 104协议与示例解析以及模拟工具的使用的全部内容了,如果有什么建议或者疑问欢迎在评论区中讨论嗷~~。

参考连接1:详解IEC104 规约【最详细版】

参考连接2:IEC104协议详解

参考连接3: 从零开始理解IEC104协议之一------104规约帧格式

参考文献:

《远动设备及系统第5-104部分:传输规约-采用标准传输协议集的 IEC 60870-5-101网络访问》

《远动设备及系统第5部分:传输规约-第101篇 基本远动任务配套标准》

相关推荐
陌夏微秋1 天前
硬件基础06 滤波器——无源、有源(含Filter Solutions、Filter Pro、MATLAB Fdatool)
matlab·硬件工程·信息与通信·信号处理
老哥不老1 天前
LTE及EPC技术原理(笔记)
笔记·信息与通信
今天还没学习1 天前
基于LabVIEW应用ARINC 429板卡实现数据通讯——(下篇)
信息与通信·labview
一个废号别练了1 天前
数字信号处理:自动增益控制(AGC)
信号处理
得之坦然,失之淡然。2 天前
FPGA实现USB2.0通信——基于CY7C68013A芯片
fpga开发·开源·信息与通信
北辰远_code2 天前
三层交换技术,eNSP实验讲解
计算机网络·信息与通信·三层交换机·ensp仿真实验
wangsir.3 天前
POSIX信号量
linux·c++·线程·信号处理·进程
国产化嵌入式平台解决方案3 天前
【网络监控加速设备】国产化一站式高性能数据处理平台(海光CPU+复旦微FPGA)
网络·嵌入式硬件·信息与通信·网络监控·全国产化
AORO_BEIDOU3 天前
从“点”到“面”,热成像防爆手机如何为安全织就“透视网”?
5g·安全·智能手机·信息与通信
通信仿真实验室3 天前
(57)MATLAB使用迫零均衡器和MMSE均衡器的BPSK调制系统仿真
开发语言·matlab·信号处理·通信系统·通信算法