首页 > 其他分享 >IEC104规约(一)协议结构阐述

IEC104规约(一)协议结构阐述

时间:2023-08-11 11:34:52浏览次数:45  
标签:阐述 IEC104 报文 00 发送 规约 地址 3.5 位为

一、IEC104协议结构

  APDU:应用规约数据单元
  APCI: 应用规约控制单元
  ASDU:应用服务数据单元

 

二、APCI

2.1 启动字符

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

2.2 APDU的长度问题

  • 起始一个apdu的总长度不会超过255个字节;
  • 在协议中的第二个字节会记录本apdu的长度,但是这个记录的长度数是除去前面两个字节之外的长读数

2.3 控制域
控制域主要是有两个功能

  • 报文的类型(I帧报文、U帧报文或者S帧报文)
  • 记录收发报文的个数

2.3.1 I帧报文

  • I帧报文格式规定控制域1和控制域3的最低位为0;
  • 其他部分用于发送序列号和接收序列号的计数;

比如:发送计数为 TxCounter 接收计数为RxCounter
控制域1 = TxCounter & 0xFE
控制域2 = (TxCounter >> 8) & 0xFF
控制域3 = RxCounter & 0xFE
控制域4 = (RxCounter >> 8) & 0xFF

2.3.2 S帧报文

  • 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.3.3 U帧报文

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

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

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

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

激活确认第4为0 第5位1,如下表所示

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

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

比如:子站发送U帧测试(激活),主站收到测试U帧就会回复一个U帧(确认)
子站发送:68 04 43 00 00 00
主站发送:68 04 83 00 00 00
Tips:测试U帧一般用于子站判断主站是否还在连接子站,主站判断子站是否还在运行,保证数据传输的畅通性;
到此APCI这一块就没啥了,继续下面ASDU的细化

 

三、APDU

3.1 类型标识

3.1 类型标识:占一个字节,标识出后面的信息体的数据类型
Tips:一个apdu中信息体中的所有数据的类型都是一致的,并且数据类型在类型标识这个位置标识

 完整类型标识,如下图:

1. 监视方向过程信息

  • Tips: 标度化值和归一化值占2个字节,短浮点数占4个字节
  • 标度化值:类似INT16
  • 短浮点值:类似float
  • 一般为从站发送给主站

2. 控制方向过程信息

  •  一般为主站发送给从站

3.  监视方向系统信息

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

4. 控制方向系统信息

  • 一般为主站发送给从站

3.2 可变结构限定词

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

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

3.3 传送原因

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

例如:从站发送一个 传送原因为 突发 的报文 ,则传送原因这个2个字节的情况如下:
突发 = 3

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

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

3.5 信息体

3.5.1连续信息传输型

3.5.1.1带绝对时标(遥测)

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

3.5.1.2不带绝对时标(遥测)

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

3.5.1.3带绝对时标(遥信)

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

3.5.1.4不带绝对时标(遥信)

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

3.5.2非连续信息传输型

3.5.2.1带绝对时标(遥测)

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

3.5.2.2不带绝对时标(遥测)

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

3.5.2.3带绝对时标(遥信)

3.5.2.4不带绝对时标(遥信)

3.5.3 品质描述词

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

单点信息品质描述词

  • 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位】

双点信息品质描述词

  • 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个值】

3.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 遥测超出量程,发生溢出

3.5.4绝对时标

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

3.5.5遥控和设定值
单点遥控

单点遥控信息

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

双点遥控

单点遥控信息

  • S/E = 0 遥控执行命令;S/E=1 遥控选择命令
  • QU = 0 被控占内部确定遥控输出方式,不有控制站选择
    • 1 短脉冲方式输出
    • 2 长脉冲方式输出
    • 3 持续脉冲方式输出
    • 其他值没有定义
    DCS = 0 无效控制
    • 1 控分
    • 2 控合
    • 3 无效控制
  • Tips:一个从站系统单点和双点只能存在一种

设定值(遥测)
Tips:除了类型编号: 136 存在多点设定外,其他都是单个信息体设置值

QOS:设定命令限定词

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

四、过程描述

  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. 进入下一个周期(其中如何数据有变化,从站需要主动上报)

五、用到的参数解释

Tips:其中 t3 > t1 > t2

 

 

 

参考:

https://linmsen.blog.csdn.net/article/details/112602951

https://blog.csdn.net/chenyitao736866376/article/details/99120024

标签:阐述,IEC104,报文,00,发送,规约,地址,3.5,位为
From: https://www.cnblogs.com/yking/p/17620510.html

相关文章

  • Redis Key 设计规约
    RedisKey设计规约Redis的key命名规范1、建议全部大写,不强制2、key单词与单词之间以:分开3、key不能太长也不能太短,键名越长越占资源,太短可读性太差4、key的其他规则1、非常长的key是不推荐的。一个1024bytes是一个非常坏的注意,不仅仅是因为内存浪费,更是因为在数据......
  • Git 提交规约
    Git提交规约格式<type>[scope]:<subject>//空一行[body]//空一行[footer]注:[]代表可选,<>代表必选。type必填,用于指定commit的类型。feat:增加新功能fix:修复bugdocs:只改动了文档相关的内容style:格式修改,没有修改代码逻辑,比如格式化、换行等refactor:重构代码,既......
  • BL102采集DL/T645-2007规约电表说明
    本文主要讲述了钡铼技术BL102物联网网关如何通过RS485采集DL/T645规约电表BL102是一款采集西门子、三菱、欧姆龙、台达、AB、施耐德等各种PLC数据转换为ModbusTCP、OPCUA、MQTT、ThingsBoard等协议的工业物联网网关。BL102下行支持:西门子、三菱、欧姆龙、台达、AB、施耐德等各种P......
  • 汽车充电桩主板的构成及7kw交流桩的优势阐述
    汽车充电桩主板的构成通常包括:中央处理器、存储器、协议转换芯片、电源管理系统、信号输入输出、充电状态指示灯、电容、电感、电阻等元件。其中,中央处理器是充电桩的核心,可以对电动汽车进行识别和匹配,根据电动车需求充电;协议转换芯片是实现不同车型之间通讯的关键部件;电源管理系......
  • 软构学习-5、6-设计规约、抽象数据类型(ADT)
    目录5设计规约行为等价性Spec结构Spec强度比较Diagrammingspecifications6抽象数据类型(ADT)操作的抽象类型分类:RepresentationIndependence5设计规约本章大纲:方法的规约前置/后置条件欠定规约、非确定规约陈述式、操作式规约规约强度及其比较如何写出好的规约......
  • 负荷预测的MATLAB源码,有对应的参考资料。 首先阐述了负荷预测的
    负荷预测的MATLAB源码,有对应的参考资料。首先阐述了负荷预测的应用研究现状,概括了负荷预测的特点及其影响因素,归纳了短期负荷预测的常用方法,并分析了各种方法的优劣;接着介绍了作为支持向量机(SVM)理论基础的统计学习理论和SVM的原理,推导了SVM回归模型;本文采用最小二乘支持向量机(LSSV......
  • 首先阐述了光伏电池的工作原理及其数学模型,根据数学模型在 MATLAB仿真软件中搭建了光
    首先阐述了光伏电池的工作原理及其数学模型,根据数学模型在MATLAB仿真软件中搭建了光伏电池的工程通用仿真模型。同时,根据生产厂家提供的参数,分析了光伏电池的输出特性曲线,研究了光照强度和环境温度对光伏电池的影响。其次介绍了?mppt?控制算法的工作原理,比较了4种常用控制算法......
  • Java中为什么要使用Integer呢?阐述Integer与int的区别
    (1)设计Integer封装类型的原因是:Java本身就是一个面向对象的编程语言,一切操作都是以对象作为基础,如像ArrayList,HashSet,Hashtable,HashMap等集合类中存储的元素,只支持存储Object类型,又如同泛型的设计,统统表现出了Java对于封装类型的重用,而对于int,byte,short,float,char,long,double这......
  • 我的第一个项目(十一) :飞机大战分包完成(简单阐述分包思路以及过程)
    好家伙, 代码已开源Git:https://gitee.com/tang-and-han-dynasties/panghu-planebattle-esm.gitNPM:panghu-planebattle-esm-npm(npmjs.com) 现在,比如说,我用Vue写好了个人博客主页的前端我想在这个主页里面加点东西,让我的博客更缤纷多彩一点我想在他的主页里面......
  • 矩阵乘法的随机自规约 (平原秀一, 清水伸高, 2023)
    随机自规约(randomself-reduction)说的是这样一件事:对于一个函数\(f\),如果我们有一个算法\(A\)能够高效地对于随机的输入以一定概率计算出正确的结果,那么我们就能通过调用\(A\)在任意输入上都以一定概率计算出正确的结果.比如限定有限域\(\mathbbF\)上的\(n\)......