电力系统104规约帧报文解析

  • 一、简介
    • 1.1 电力系统常见概念
    • 1.2 104规约使用场景
  • 二、IEC104协议结构
    • 2.1. APCI
      • 2.1.1 启动字符
      • 2.1.2 APDU的长度问题
      • 2.1.3 控制域
        • 2.1.3.1 I帧报文
        • 2.1.3.2 S帧报文
        • 2.1.3.3 U帧报文
    • 2.2 ASDU
      • 2.2.1 类型标识
        • 2.2.1.1 监视方向的用户类型
        • 2.2.1.2 控制方向的用户类型
        • 2.2.1.3 监视方向的系统类型
        • 2.2.1.4 控制方向的系统类型
      • 2.2.2 可变结构限定词
      • 2.2.3 传送原因
      • 2.2.4 应用服务数据单元公共地址
      • 2.2.5 信息体
        • 2.2.5.1 连续信息传输型
          • 2.2.5.1.1 带绝对时标(遥测)
          • 2.2.5.1.2 不带绝对时标(遥测)
          • 2.2.5.1.3 带绝对时标(遥信)
          • 2.2.5.1.4 不带绝对时标(遥信)
        • 2.2.5.2 非连续信息传输型
          • 2.2.5.1.1 带绝对时标(遥测)
          • 2.2.5.1.2 不带绝对时标(遥测)
          • 2.2.5.1.3 带绝对时标(遥信)
          • 2.2.5.1.4 不带绝对时标(遥信)
        • 2.2.5.3 品质描述词
          • 2.2.5.3.1 遥信品质描述词
          • 2.2.5.3.2 遥测品质描述词
        • 2.2.5.4 绝对时标
        • 2.2.5.5 遥控和设定值
          • 2.2.5.5.1 单点遥控
          • 2.2.5.5.2 双点遥控
          • 2.2.5.5.3 设定值(遥测)
    • 2.4 过程描述
    • 2.5 用到的参数解释

一、简介

1.1 电力系统常见概念

  电力系统远动(power system telemechanics):为电力系统调度服务的远距离监测、控制技术,即管理和监控分布甚广的众多厂、所、站和设备、元器件的运行工况的一种技术手段。
  一般来说,电力系统远动终端RTU(Remote Terminal Unit)具有"四遥"等功能。"四遥"主要指的是遥测、遥控、遥调、遥信四种。其实从"遥"字面意思上我们也可以看到这注定是一个远程远距离的操控了。

  1. 遥测:远程测量。采集并传送运行参数,包括各种电气量(线路上的电压、电流、功率等量值) 和负荷潮流等。
  2. 遥控:远程控制。接受并执行遥控命令,主要是分合闸,对远程的一些开关控制设备进行远程控制。
  3. 遥信:远程信号。采集并传送各种保护告警和开关量信息。
  4. 遥调:远程调节。接受并执行遥调命令,对远程的控制量设备进行远程调试,如调节发电机输出功率。

ps:    一摇:遥信
    二遥:遥信和遥测
    三遥:遥信、遥测和遥控

1.2 104规约使用场景

  电力系统中常见的设备分为调度端(控制站、主站、客户机), 服务端(被控站、子站,典型设备包含TTU、RTU等),两者之间通过104规约来进行数据通信与传输。其传输层实际上使用的是TCP协议进行数据的传输。固定端口号为2404。
  服务端不主动发起请求,一直处于侦听状态,当侦听到来自客户机的连接请求后,则接受此请求,由此建立一个TCP链接。控制站(即调度系统)作为客户机,被控站(即站端RTU)作为服务器。
  即实际的代码操作为:
    主站按照: Socket()->Connect()的顺序进行
    RTU(服务器)端按: Socket()->Bind()->Listen()->Accept()的顺序进行。

二、IEC104协议结构

  传输接口(用户到TCP) 是一个面向流的接口,它没有为 DLT 634.5101中的ASDU定义任何启动或者停止机制。为了检出ASDU的启动和结束,每个APCI包括下列的定界元素:一个启动字符,ASDU的长度的规范,以及控制域,见图4。可传送一个完整的APDU(或者出于控制目的,仅有APCI域,见图5)。

APDU:应用协议数据单元
APCI:应用协议控制单元
ASDU:应用服务数据单元

帧报文的格式如下所示:

2.1. APCI

2.1.1 启动字符

  默认固定为 68H,意思就是只要是IEC104协议就是以68H开头;

2.1.2 APDU的长度问题

  起始一个apdu的总长度不会超过255个字节;
  在协议中的第二个字节会记录本apdu的长度,但是这个记录的长度数是除开前面两个字节之外的长读数,比如下面有个单点信息的apdu协议报文:
68 31 02 00 02 00 01 A4 14 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
其中第二个字节31H就是长度转为10进制为49个字节,你可以数下后面肯定是49个字节,如果不是就不是一个apdu协议;

2.1.3 控制域

  控制域主要是有两个功能:
   1. 报文的类型(I帧报文、U帧报文或者S帧报文)
   2. 收发报文的个数
104规约帧报文分为三大类( I帧、S帧、U帧):

2.1.3.1 I帧报文

  I帧是信息帧,作用是用于传输具体的通信数据的,长度必大于6个字节。

  • I帧报文格式规定控制域1和控制域3的最低位为0;
  • 其他部分用于发送序列号和接收序列号的计数;
    比如:发送计数为 TxCounter 接收计数为RxCounter
    控制域1 = TxCounter & 0xFE
    控制域2 = (TxCounter >> 8) & 0xFF
    控制域3 = RxCounter & 0xFE
    控制域4 = (RxCounter >> 8) & 0xFF

2.1.3.2 S帧报文

  S帧是用于确认接收的I帧,即当接收到I帧后需要返回一个S帧,长度等于6个字节。

  • S帧报文格式规定控制域1的第0位为1,第1位为0和控制域第0位为0;
  • S帧报文的发送序列号都为0
  • S帧只用于APCI中(意思就是S帧的apdu报文只会有apci不会存在asdu),不能用于传输信息,只用给对方信息的确认,比如子站发送8条报文,结束后主站就会给子站发送一个确认帧(S帧),告诉子站我收到了8条报文。
    比如:接收计数为RxCounter
    控制域1 = 0x01
    控制域2 = 0x00
    控制域3 = RxCounter & 0xFE
    控制域4 = (RxCounter >> 8) & 0xFF

2.1.3.3 U帧报文

  U帧是控制帧,用于控制启动/停止子站进行数据传输,或测试TCP链路连接,长度等于6个字节。

  • I帧报文格式规定控制域1和控制域3的最低位为0;
  • 其他部分用于发送序列号和接收序列号的计数;
  • U帧只用于控制,并且只存在APCI中(意思就是U帧的apdu报文只会有apci不会存在asdu);
  • 测试、停止和开启在一个U帧报文中只可能存在其中的一种;

(1) 如果用于【开启】则:
  a.激活第2位为1 第3位0,如下表所示

   b.激活确认第2为0 第3位1,如下表所示

  U帧启动主要是用于 主站连接子站时,主站给子站发送一个U帧启动报文,如下:
  主站发送:68 04 07 00 00 00
  子站回复:68 04 0B 00 00 00
(2) 如果用【停止】则:
  a.激活第4位为1 第5位0,如下表所示
  b.激活确认第4为0 第5位1,如下表所示

  U帧停止如下:
  主站发送:68 04 13 00 00 00
  子站回复:68 04 23 00 00 00
(3) 如果用【测试】则:
  a.激活第6位为1 第7位0,如下表所示

  b.激活确认第6为0 第7位1,如下表所示

  比如:子站发送U帧测试(激活),主站收到测试U帧就会回复一个U帧(确认)
  子站发送:68 04 43 00 00 00
  主站发送:68 04 83 00 00 00

Tips:测试U帧一般用于子站判断主站是否还在连接子站,主站判断子站是否还在运行,保证数据传输的畅通性.

2.2 ASDU

2.2.1 类型标识

  类型标识:占一个字节,标识出后面的信息体的数据类型

Tips:一个apdu中信息体中的所有数据的类型都是一致的,并且数据类型在类型标识这个位置标识;

类型的分类:

2.2.1.1 监视方向的用户类型

  • 标度化值:类似INT16
  • 归一值:(转换比较复杂,参考网上的一个公式)取值范围,通常将大于1的数映射到1以内的空间,通常就是用实际值除以额定值,即得到归一化的小数(只要双方约定好,什么形式的转化无所谓)
  • 短浮点值:类似float

标度化值和归一化值占2个字节,短浮点数占4个字节

Tips:一般为从站发送给主站

2.2.1.2 控制方向的用户类型

Tips:一般为主站发送给从站

2.2.1.3 监视方向的系统类型

Tips:

  • 当厂站(从站)短重新上电、初始化参数、重新分配缓存区等情况下,厂站需要给主站发送该类型,而主站收到该类型的APDU包,主站一般会做一次总召唤;
  • 从站发送给主站

2.2.1.4 控制方向的系统类型

Tips:一般为主站发送给从站

2.2.2 可变结构限定词

  • SQ = 0 :信息对象的地址不连续(意思就是每个信息对象都会一个对象地址)
  • SQ = 1 : 信息对象的地址连续 (只有第一个信息对象有地址,其他对象的地址就是累加1)

Tips:总召唤时,为了压缩信息传输时间SQ=1;而在从站主动上传变化数据时,因为地址不连续,采用SQ=0;

2.2.3 传送原因

占2个字节

  • T = 0 未试验 ; T = 1 试验 (一般 T= 0)
  • P/N = 0 肯定 ; P/N = 1 否定 (正常为P/N = 0;P/N = 1说明该报文无效)
  • 源发地址:用来记录来时哪个主站的响应数据,一般写 0;
  • 传送原因:(下面提到的上行:[从站发送给主站]、下行:[主站发送给从站])

     红色标记的是一些常用的;其中【6,7,8,9,10】在一些遥控,设定值时用的比较多
     例如:从站发送一个 传送原因为 突发 的报文 ,则传送原因这个2个字节的情况如下:
      突发 = 3

2.2.4 应用服务数据单元公共地址

占2个字节

  • 规定高位字节 0x00
  • 站地址: 1-254 为站地址;255为全局地址;

2.2.5 信息体

2.2.5.1 连续信息传输型

2.2.5.1.1 带绝对时标(遥测)

  • 时标有三种,但是例外两种基本不用,暂不去说明
  • 其中只有类型为【21】的【归一化测量值】不带品质描述词
  • 说明:连续、带时标的 ASDU数据部分结构如上表分为:
       - 地址编号:第一个信息体数据的地址(只会出现一次)
       - 重复信息体数据+品质描述词 (地址=第一个地址按顺序+1推算出来)
       - 最后以绝对时标结束
2.2.5.1.2 不带绝对时标(遥测)

  • 说明:连续、不带时标的 ASDU数据部分结构如上表分为:
       - 地址编号:第一个信息体数据的地址(只会出现一次)
       - 重复信息体数据+品质描述词 (地址=第一个地址按顺序+1推算出来)
2.2.5.1.3 带绝对时标(遥信)

  • 对于遥信,状态量和品质描述词 合在了一个字节中
2.2.5.1.4 不带绝对时标(遥信)

  • 对于遥信,状态量和品质描述词 合在了一个字节中

2.2.5.2 非连续信息传输型

2.2.5.1.1 带绝对时标(遥测)

  • 说明: 不连续、带时标的 ASDU数据部分结构如上表分为:
       - 每一个信息体数据都会有一个地址编号
       - 绝对时标结尾
2.2.5.1.2 不带绝对时标(遥测)

  • 说明: 不连续、带时标的 ASDU数据部分结构如上表分为:
       - 每一个信息体数据都会有一个地址编号
2.2.5.1.3 带绝对时标(遥信)

2.2.5.1.4 不带绝对时标(遥信)

2.2.5.3 品质描述词

分为 遥信品质描述词 和 遥测品质描述词:

2.2.5.3.1 遥信品质描述词

1. 单点信息品质描述词

   - BL : 封锁标志;BL=0 未被封锁;BL=1 封锁;
   - SB: 取代标志;SB=0 未被取代;SB = 1 被取代;
   - NT:刷新标志;NT=0 刷新成功;NT=1 刷新未成功;
   - IV:有效标志;IV = 0 状态有效;IV = 1 状态无效;
   - RES: 保留位
   - SPI:遥信状态值(0=开;1=合) 【具体的值,占一个bit位】
     1=确定状态的开;
      2=确定状态的合;
      3=不确定状态或中间装填)【具体的值,占2个bit为必然有4个值】

2. 双点信息品质描述词

   - BL : 封锁标志;BL=0 未被封锁;BL=1 封锁;
   - SB: 取代标志;SB=0 未被取代;SB = 1 被取代;
   - NT:刷新标志;NT=0 刷新成功;NT=1 刷新未成功;
   - IV:有效标志;IV = 0 状态有效;IV = 1 状态无效;
   - RES: 保留位
   - SPI:遥信状态值(0=不确定状态或中间装填;
     1=确定状态的开;
     2=确定状态的合;
     3=不确定状态或中间装填)【具体的值,占2个bit为必然有4个值】

2.2.5.3.2 遥测品质描述词

  • BL : 封锁标志;BL=0 未被封锁;BL=1 封锁;
  • SB: 取代标志;SB=0 未被取代;SB = 1 被取代;
  • NT:刷新标志;NT=0 刷新成功;NT=1 刷新未成功;
  • IV:有效标志;IV = 0 状态有效;IV = 1 状态无效; (tips:如何无效说明该遥测数据无效)
  • RES: 保留位;
  • OV:溢出标志;OV=0 未溢出;OV=1 遥测超出量程,发生溢出

2.2.5.4 绝对时标

  • IV : IV = 0 时标有效;IV=1时标无效;
  • RES:保留位

2.2.5.5 遥控和设定值

2.2.5.5.1 单点遥控


单点遥控信息:

  • S/E = 0 遥控执行命令;S/E=1 遥控选择命令;
  • QU = 0 被控占内部确定遥控输出方式,不有控制站选择;
       1 短脉冲方式输出
       2 长脉冲方式输出
       3 持续脉冲方式输出
       其他值没有定义
  • RES :保留位
  • SCS : 设置值; 0 = 控开 ;1 = 控合
2.2.5.5.2 双点遥控


双点遥控信息:

  • S/E = 0 遥控执行命令;S/E=1 遥控选择命令;
  • QU = 0 被控占内部确定遥控输出方式,不有控制站选择;
       1 短脉冲方式输出
       2 长脉冲方式输出
       3 持续脉冲方式输出
       其他值没有定义
  • DCS; 0 无效控制
       1 控分
       2 控合
       3 无效控制
       Tips:一个从站系统单点和双点只能存在一种
2.2.5.5.3 设定值(遥测)
  • 除了类型编号: 136 存在多点设定外,其他都是单个信息体设置值
  • QOS:设定命令限定词

       S/E : 0 设定执行;1 设定选择;
       设定命令限定词: 基本就是 0 ,因为其他并没有定义;

2.4 过程描述

  1. 建立tcp连接;
  2. 主站给从站发送启动帧;报文:68 04 07 00 00 00
  3. 从站收到启动帧,给主站发送启动确认帧;报文:68 04 0B 00 00 00
  4. 主站给从站发送总召唤;报文:68 0E 00 00 00 00 64 01 06 00 01 00 00 00 00 14
  5. 从站收到主站的总召唤命令,给主站发送总召唤确认;
    报文:68 0E 00 00 02 00 64 01 07 00 01 00 00 00 00 14
  6. 从站上传遥信,遥测,电度等I帧信息帧,发送完毕从站发送总召唤结束帧;
  7. 主站收到从站发送的结束帧,会回复一个S帧的确认帧;
  8. 进入下一个周期(其中如何数据有变化,从站需要主动上报)

2.5 用到的参数解释


其中 t3>t1>t2

默认端口:2404;

    //超时机制int t1_calc; // 用于计数int t1;    //  发送或者测试APDU的超时// 从站端启动U格式测试过程后等待U格式测试应答的超时时间(超时处理:断开连接)// 启动条件:发送U测试帧// 关闭条件:接收U测试帧int t2_calc; // 用于计数int t2;    //  无数据报文t2<t1确认的超时//  1)  以突发的传送原因向主站(客户)端上送了变化信息//   2)  或以激活结束的传送原因向主站(客户)端上送了总召唤/电度召唤结束后// 等待主站(客户)端回S格式的超时时间,若超过此时间还没有收到,就主动关闭TCP连接//  处理完I格式帧后开始计时(置0),接收到S帧置0//  启动条件:发送完所有I帧//  关闭条件:收到S/I帧int t3_calc; // 用于计数int t3;    //  长期闲置t3>t1状态下发送测试帧的超时// T3:当RTU(服务器)端和主站(客户)端之间没有实际的数据交换时,任何一端启动U格式测试过程的最大间隔时间(超时处理:发送U测)// 启动条件:建立连接// 关闭条件:断开连接int K;  // 发送序号和接收序号之间的最大差值   【发送方在发送K个I报文还未收到确认就应该关闭数据传送 默认值为12;从站使用】int W;  // 【接收方最迟收到W个I就必须要回复确认帧 默认值为8;主站使用,这里不使用】// W 不能够超过 K 的2/3QTimer *timer1;     // 发送或者测试APDU的计时器QTimer *timer2;     // 无数据报文确认的计时器QTimer *timer3;     // 发送测试帧的计时器

原文链接: IEC104协议详解.

电力系统104规约帧报文解析相关推荐

  1. DLT645-2007 规约 电表 报文解析

    注:本文为转载 转载地址:https://wenku.baidu.com/view/cc10838283d049649b66580d.html DLT645-2007 规约 常见报文解析 //2012 ...

  2. 报文解析_104规约报文结构解析

    一.104规约报文结构 104 规约的报文由启动字符.报文长度.控制域和应用服务数据单元组成,出于控制的目的,报文也可仅由启动字符.报文长度和控制域组成.2种结构. 二.控制域 根据不同的应用,控制域 ...

  3. 制作IEC101/104报文解析工具

    文章目录 准备 一.IEC101/104协议 二.制作解析工具步骤 1.建立协议族 2.建立协议 3.建立术语 4.建立报文块 5.建立报文解析规则 总结 准备 这里是基于<在线解析二进制报文& ...

  4. 时标CP56Time2a 时间格式转换 电网101、104规约解析(Java)

    电网101.104规约解析(Java) https://blog.csdn.net/ZhangYu971014/article/details/79841555?utm_medium=distribu ...

  5. 104规约报文类型,和传送原因

    目录 104规约报文类型 在监控方向过程中信息 在控制方向的过程信息 传送原因 104规约报文类型 在监控方向过程中信息 遥信,遥测,SOE,KWH 1:单点信息 2:带短时标的单点信息 3:双点信息 ...

  6. IEC60870-5-104报文解析

    IEC60870-5-104报文解析(一) 首先 还是得讲点理论知识 首先的首先,IEC60870-5-104是干嘛用的你造吗?简单来说,IEC60870-5-104常用于子站与调度主站通讯,是一种通 ...

  7. 20201217-IP报文解析

    20201215-IP报文解析 {1}报文结构 ![图片.png](https://img-blog.csdnimg.cn/img_convert/718558a49aa5479c6049e1ea7f ...

  8. 101/103/104规约应用典型问题例举【转】

    原文地址:http://hi.baidu.com/timse/blog/item/71cf1b46cefd49006b63e594.html 在近年的规约测试工作中,笔者曾遇到了一些应用方面的问题,这 ...

  9. ModbusTCP协议报文解析

    ModbusTCP协议报文解析 报文格式 交互(通信)标识:2个字节 为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文. 协议标识:2个字节 表示该条指令遵循Modbus ...

  10. PPTP协议详解及报文解析

    PPTP是点对点隧道协议,建立在PPP协议上的VPN隧道技术.它已有20多年的历史.目前有这些广泛使用的VPN协议.主要是PPTP.L2TP.IPsec.OpenVPN.SSTP.IKEv2等.PPT ...

最新文章

  1. 给迷茫的Java员一些中肯建议,你还在虚度光阴吗?
  2. 计算机缺少php5.dll,php5isapi.dll 64位
  3. pipe 半双工_pipe 半双工_Linux管道PIPE的原理和应用
  4. Photoshop扣除特定颜色背景
  5. 浏览器缓存知识小结及应用
  6. Java中的subList方法
  7. ES6之Module 的加载实现(3)
  8. SQLite3中核心C API
  9. 项目团队中的五种人(之一)
  10. Kubernetes详解(二十二)——Deployment控制器
  11. linux scp命令 将数据从一台linux服务器复制到另一台linux服务器
  12. 视频教程-H3C-H3CNE 华三网络工程师从入门到精通 自学视频课程[肖哥]-H3C认证
  13. Microsoft Office LTSC ProPlus 2021 Volume(含:Project + Visio)离线命令方式安装说明(原创)
  14. GUI GUIDER 应用笔记
  15. MOOC 中国大学 python爬取股票信息
  16. 小重山 【南宋】 岳飞
  17. 在tensorflow2.0环境下使用RandLA-Net训练S3DIS数据集
  18. 一文读懂数据中台技术架构
  19. 秋nbsp;季nbsp;雨
  20. 圆柱体积在线计算机,(完整版)圆柱体积计算练习题.docx

热门文章

  1. 全国计算机二级C语言考试难不难?应该怎么备考?
  2. 计算24点有什么窍门或技巧吗?
  3. 大图书馆 #2 大教堂与集市
  4. JS调用OCX控件过程
  5. 服务器装2t硬盘分区,2T移动硬盘分区办法
  6. 大数据平台整体架构设计方案(PPT)
  7. 20140419-MCSA 2012 Server R2 Command
  8. Qt学习之QDir的使用(使用QDir创建文件夹)
  9. VSC为_LCC 和 VSC (MMC) 的底层特性区别
  10. 现控笔记(六)线性定常系统综合