IEC104协议

1. 简介

IEC104规约是一个广泛应用于电力、城市轨道交通等行业的国际标准。

2. 术语解释

遥脉 (电度量):

是指对现场某装置所发出的脉冲信号进行周期累计的一种远程计数操作。

其实,遥脉也可以看成是被具体规定了采用脉冲计数作为测量方法的一种遥测手段,它是遥测中的一种。而传统意义上的四遥中是没有提及遥脉一词的。

四遥:

指的是遥信、遥测、遥控和遥调(设点);分别对应数字输入DI、模拟输入AI、数字输出DO和模拟输出AO。

单点与双点的区别:

以遥信为例,单点就是用一位标识一个遥信量,比如开关位置,只采集一个常开的辅助接点,值为1表示合位,0表示分位;而双点需要采集常开合常闭两个辅助接点位置,,当常开点值为1并且常闭点值为0,即10,则认为开关在合位;当常开点值=0并且常闭点值为1,即01,认为开关在分位;当两个位置值都为1,或两个值都为0,则认为开关位置不能确定。遥控也是一样的道理,SPI为遥信状态值。单点遥信,0分1合;双点遥信,1开2合,0和3为中间状态。

遥测的上送方式:

主要有定时主动上送(01H),响应总召唤上送(14H),越限上送(03H),而遥测值又分为归一化值、标度化值、短浮点数。

归一化值(NVA):

值的范围为[-1,1]。归一化,即是将大于1的数映射到1以内的空间,通常就是用实际值除以额定值,即得到归一化的小数。具体表示法可以有F13或F16位的。占2个字节。

标度化值(SVA):

值的范围为[-32768,~32767],即带符号整数。占2个字节。它的真实值就是标度值*小数点的位数,量程和小数点位置是固定的参数。(相当于16位有符号整数)

3. 主站从站通信过程

  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. 从站收到主站的总召唤命令,给主站发送总召唤确认;
  6. 报文:68 0E 00 00 02 00 64 01 07 00 01 00 00 00 00 14
  7. 从站上传遥信,遥测,电度等I帧信息帧,发送完毕从站发送总召唤结束帧;
  8. 主站收到从站发送的结束帧,会回复一个S帧的确认帧;
  9. 进入下一个周期(其中如何数据有变化,从站需要主动上报)

4. ICE104协议结构

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

4.1 APDU 整体结构图

4.2 APCI控制单元

APCI报文说明:

第一个字节:默认固定 0x68 (表示启动字符)

第二个字节:表示APDU总长度(该长度不包含,启动字符和本身长度), 不超过255字节

4.2.1 I帧报文

第3和4个字节: 发送序号 (每发送一个数据包就加1)

第5和6个字节: 接收序号

实际抓包分析:

4.2.2 S帧报文

第3和4个字节:0x01

第5和6个字节: 接收序号

实际抓包分析:

4.2.3 U帧报文

U帧只用于控制,并且只存在APCI中(意思就是U帧的apdu报文只会有apci不会存在asdu);

第3个字节:详情继续查看 U帧3字节详解

第4~6字节: 固定为0

4.2.3.1 U帧3字节详解
  1. 开启

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

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

U帧启动主要是用于 主站连接子站时,主站给子站发送一个U帧启动报文,如下:

主站发送:68 04 07 00 00 00

子站回复:68 04 0B 00 00 00

  1. 停止

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

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

U帧停止如下:

主站发送:68 04 13 00 00 00

子站回复:68 04 23 00 00 00

  1. 测试

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

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

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

子站发送:68 04 43 00 00 00

主站发送:68 04 83 00 00 00

实际抓包分析:

4.3 ASDU服务数据单元

4.3.1 类型标识

本数据单元的第一个字节就是类型标识。

4.3.1.1 从站 -> 主站

4.3.1.2 主站 -> 从站

4.3.1.3 监视方向的系统类型

4.3.1.4 控制方向的系统类型

实际抓包分析:

4.3.2 可变结构限定词

SQ = 0 :信息对象的地址不连续(意思就是每个信息对象都会一个对象地址)

SQ = 1 : 信息对象的地址连续 (只有第一个信息对象有地址,其他对象的地址就是累加1)

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

实际抓包分析:

4.3.3 传送原因

占2个字节

T = 0 未试验 ; T = 1 试验 (一般 T= 0)

P/N = 0 肯定 ; P/N = 1 否定 (正常为P/N = 0;P/N = 1说明该报文无效)

源发地址:用来记录来时哪个主站的响应数据,一般写 0;

传送原因:

实际抓包分析:

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

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

实际抓包分析:

4.3.5 信息体

4.3.5.1 连续信息传输型
带绝对时标(遥测)

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

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

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

不带绝对时标(遥信)

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

4.3.5.2 非连续信息传输型
带绝对时标(遥测)

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

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

带绝对时标(遥信)

不带绝对时标(遥信)

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

遥测品质描述词

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

4.3.5.4 绝对时标

实际抓包分析:

4.3.5.5 遥控和设定值

单点遥控信息

  • S/E = 0 遥控执行命令;S/E=1 遥控选择命令;
  • QU = 0 被控占内部确定遥控输出方式,不有控制站选择;

1 短脉冲方式输出
2 长脉冲方式输出
3 持续脉冲方式输出
其他值没有定义

  • RES :保留位
  • SCS : 设置值; 0 = 控开 ;1 = 控合
双点遥控信息

设定值(遥测)

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

QOS:设定命令限定词

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

实际抓包分析:

5. 协议代码

5.1 协议报文结构体

typedef struct _apci_ {unsigned char head;unsigned char len;              //不包含头和自身,最大253Bunion {unsigned int ctrl;        //控制域struct {unsigned char ctrl1;unsigned char ctrl2;unsigned char ctrl3;unsigned char ctrl4;} ctrl_st;};} IECAPCI, *PIECAPCI;//此结构仅适合标准的主站(即reason,station和point长度定义为2,2,3)
typedef struct _asdue_ {unsigned char idtype;               //类型标识union {unsigned char qualifier;        //限定词struct {unsigned char qf_num: 7;unsigned char qf_sq: 1;     //0离散信息报告,1顺序信息报告} qualifier_st;};union {unsigned short reason;          //传输原因struct {unsigned char rs_cause: 6;unsigned char rs_pn: 1;     //0未试验,1试验unsigned char rs_t: 1;      //0肯定确认,1否定确认unsigned char rs_src;       //源发地址} reason_st;};unsigned short station;             //公共地址unsigned char  point[3];            //信息体地址
} IECASDU_E, *PIECASDU_E;

5.2 协议ASDU标识

/*******************************************************************************************
*
*                               ASDU类型标识定义
*
*******************************************************************************************///1--1 监视方向的过程信息, RTU向主站上传的报文类型
#define M_SP_NA_1 0x01    //单点信息              (总召唤遥信、变位遥信)
#define M_SP_TA_1 0x02    //带时标单点信息        (SOE事项)
#define M_DP_NA_1 0x03    //双点信息
#define M_DP_TA_1 0x04    //带时标双点信息     ??标准里的定义重复, 根据PMA修订
#define M_ST_NA_1 0x05    //步位置信息
#define M_ST_TA_1 0x06    //带时标步位置信息
#define M_BO_NA_1 0x07    //32比特串
#define M_BO_TA_1 0x08    //带时标32比特串
#define M_ME_NA_1 0x09    //测量值,规一化值      (越限遥测)
#define M_ME_TA_1 0x0A    //测量值,带时标规一化值
#define M_ME_NB_1 0x0B    //测量值,标度化值
#define M_ME_TB_1 0x0C    //测量值,带时标标度化值
#define M_ME_NC_1 0x0D    //测量值,短浮点数
#define M_ME_TC_1 0x0E    //测量值,带时标短浮点数
#define M_IT_NA_1 0x0F    //累计量               (电度量)
#define M_IT_TA_1 0x10    //带时标累计量
#define M_EP_TA_1 0x11    //带时标继电保护装置事件
#define M_EP_TB_1 0x12    //带时标继电保护装置成组启动事件
#define M_EP_TC_1 0x13    //带时标继电保护装置成组输出电路信息
#define M_PS_NA_1 0x14    //具有状态变位检出的成组单点信息         ??标准里的定义重复, 根据PMA修订
#define M_ME_ND_1 0x15    //测量值,不带品质描述的规一化值    (总召唤遥测量)#define M_SP_TB_1 0x1E    //带时标CP56TimE2A的单点信息
#define M_DP_TB_1 0x1F    //带时标CP56TimE2A的双点信息
#define M_ST_TB_1 0x20    //带时标CP56TimE2A的步位信息
#define M_BO_TB_1 0x21    //带时标CP56TimE2A的32位串
#define M_ME_TD_1 0x22    //带时标CP56TimE2A的规一化测量值
#define M_ME_TE_1 0x23    //测量值,带时标CP56TimE2A的标度化值
#define M_ME_TF_1 0x24    //测量值,带时标CP56TimE2A的短浮点数
#define M_IT_TB_1 0x25    //带时标CP56TimE2A的累计值
#define M_EP_TD_1 0x26    //带时标CP56TimE2A的继电保护装置事件
#define M_EP_TE_1 0x27    //带时标CP56TimE2A的成组继电保护装置成组启动事件
#define M_EP_TF_1 0x28    //带时标CP56TimE2A的继电保护装置成组输出电路信息//1--2 在监视方向的系统信息, RTU向主站上传的报文类型
#define M_EI_NA_1 0x46    //初始化结束//2--1 在控制方向的过程信息, RTU须逐条对命令用相同报文确认
#define C_SC_NA_1 0x2D    //单命令               (遥控)
#define C_DC_NA_1 0x2E    //双命令               (遥控)
#define C_RC_NA_1 0x2F    //升降命令
#define C_SE_NA_1 0x30    //设定值命令,规一化值 (遥调)
#define C_SE_NB_1 0x31    //设定值命令,标度化值
#define C_SE_NC_1 0x32    //设定值命令,短浮点数
#define C_BO_NA_1 0x33    //32比特串#define C_SC_TA_1 0x3A    //带时标CP56TimE2A的单命令
#define C_DC_TA_1 0x3B    //带时标CP56TimE2A的双命令
#define C_RC_TA_1 0x3C    //带时标CP56TimE2A的升降命令
#define C_SE_TA_1 0x3D    //带时标CP56TimE2A的设定值命令,规一化值
#define C_SE_TB_1 0x3E    //带时标CP56TimE2A的设定值命令,标度化值
#define C_SE_TC_1 0x3F    //带时标CP56TimE2A的设定值命令,短浮点数
#define C_BO_TA_1 0x40    //带时标CP56TimE2A的32比特串//2--2 在控制方向的系统信息, RTU须逐条形成镜像报文
#define C_IC_NA_1 0x64    //总召唤命令        (总召唤)
#define C_CI_NA_1 0x65    //电能脉冲召唤命令  (召唤电度量)
#define C_RD_NA_1 0x66    //读命令
#define C_CS_NA_1 0x67    //时钟同步命令      (校时)
#define C_TS_NA_1 0x68    //测试命令
#define C_RP_NA_1 0x69    //复位进程命令
#define C_CD_NA_1 0x6A    //延时传输命令
#define C_TS_TA_1 0x6B    //带时标CP56TimE2A的测试命令//2--3 在控制方向的参数命令
#define P_ME_NA_1 0x6E    //测量值参数,规一化值
#define P_ME_NB_1 0x6F    //测量值参数,标度化值
#define P_ME_NC_1 0x70    //测量值参数,短浮点数
#define P_AC_NA_1 0x71    //参数激活//3--1 文件传输
#define F_FR_NA_1 0x78    //文件准备好
#define F_SR_NA_1 0x79    //节已准备好
#define F_SC_NA_1 0x7A    //召唤目录,选择文件,召唤文件,召唤节
#define F_LS_NA_1 0x7B    //最后的节,最后的度
#define F_AF_NA_1 0x7C    //确认文件,确认节
#define F_SG_NA_1 0x7D    //段
#define F_DR_TA_1 0x7E    //目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考经验分享】软考-中级-嵌入式备考

这里写目录标题 教辅用书嵌入式系统设计师考试大纲嵌入式系统设计师教程嵌入式系统设计师5天修炼嵌入式系统设计师考前冲刺100题 刷题软件希赛网软考真题 视频教程希赛网王道-计组计网 教辅用书 嵌入式系统设计师考试大纲 50页左右,内容为罗列一些考点&#xff0c…

信息化工作人员必备常识3——nslookup命令【用来诊断域名(DNS) 基础结构的信息以及用来查看域名和IP的对应关系】

[TOC](信息化工作人员必备常识3——nslookup命令【用来诊断域名(DNS) 基础结构的信息以及用来查看域名和IP的对应关系】) 前言 信息化相关的工作人员,无论你是开发人员、产品经理、CIO领导,你只要是在做信息化相关的工作,有些基础知识和操作…

C#版Facefusion:让你的脸与世界融为一体!-05 人脸增强

C#版Facefusion:让你的脸与世界融为一体!-05 人脸增强 目录 说明 效果 模型信息 项目 代码 下载 说明 C#版Facefusion一共有如下5个步骤: 1、使用yoloface_8n.onnx进行人脸检测 2、使用2dfan4.onnx获取人脸关键点 3、使用arcface_w60…

基于MNIST的手写数字识别

上次我们基于CIFAR-10训练一个图像分类器,梳理了一下训练模型的全过程,并且对卷积神经网络有了一定的理解,我们再在GPU上搭建一个手写的数字识别cnn网络,加深巩固一下 步骤 加载数据集定义神经网络定义损失函数训练网络测试网络 …

小扎万字深度访谈:最强开源大模型Llama 3发布,Meta的AGI路径和开源哲学

今天Meta发布了史上最强开源大模型Llama 3,一口气发布了 8B 和 70B 2个预训练和指令微调模型,对比同级别的参数模型,性能上均达到了最佳。 此外,Meta还发布了基于Llama 3的AI助手Meta AI,可以在Facebook、Instagram、W…

一举颠覆Transformer!最新Mamba结合方案刷新多个SOTA,单张GPU即可处理140k

还记得前段时间爆火的Jamba吗? Jamba是世界上第一个生产级的Mamba大模型,它将基于结构化状态空间模型 (SSM) 的 Mamba 模型与 transformer 架构相结合,取两种架构之长,达到模型质量和效率兼得的效果。 在吞吐量和效率等关键衡量指…

基于函数计算FC3.0 部署AI数字绘画stable-diffusion自定义模型

基于函数计算FC3.0 部署AI数字绘画stable-diffusion自定义模型 部署AI数字绘画stable-diffusion曲线救国授权github账号 部署ffmpeg-app-v3总结 在讲述了函数计算FC3.0和函数计算FC2.0的操作界面UI改版以及在函数管理、函数执行引擎、自定义域名、函数授权及弹性伸缩规则方面进…

【管理咨询宝藏82】麦肯锡某化工企业战略咨询报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏82】麦肯锡某化工企业战略咨询报告 【格式】PPT版本,可以编辑 【关键词】战略咨询、MBB、业务规划 【核心观点】 - 打造面向客户的…

ROS2 仿真学习02 Gazebo导入官方示例模型

1.下载模型 git clone https://gitee.com/bingda-robot/gazebo_models.git将gazebo_models拖到到.gazebo当中(如果没看到.gazebo文件请按住CTRLh) 2.添加模型到gazebo的Insert 这就将官方示例的模型都导入到Gazebo 了 随便试试一个模型

SLS 查询新范式:使用 SPL 对日志进行交互式探索

作者:无哲 引言 在构建现代数据和业务系统的过程中,可观测性已经变得至关重要,日志服务(SLS)为 Log/Trace/Metric 数据提供了大规模、低成本、高性能的一站式平台服务,并提供数据采集、加工、投递、分析、…

海外平台运营为什么需要静态住宅IP?

在世界经济高度全球化的今天,许多企业家和电子商务卖家纷纷转向海外平台进行业务扩展。像亚马逊、eBay这样的跨国电商平台为卖家提供了巨大的机会,来接触到世界各地的顾客。然而,在这些平台上成功运营,尤其是维持账号的健康和安全…

脚本开发与自动化运维

shell脚本开发 grep搜索工具 参数&#xff1a; -A<显示行数>&#xff1a;-A NUM, --after-context NUM&#xff0c;除了显示符合范本样式的那一行之 外&#xff0c;并显示该行之后的内容。 -B<显示行数>&#xff1a;--before-context NUM&#xff0c;除了显示…

使用51单片机控制T0和T1分别间隔1秒2秒亮灭逻辑

#include <reg51.h>sbit LED1 P1^0; // 设置LED1灯的接口 sbit LED2 P1^1; // 设置LED2灯的接口unsigned int cnt1 0; // 设置LED1灯的定时器溢出次数 unsigned int cnt2 0; // 设置LED2灯的定时器溢出次数// 定时器T0 void Init_Timer0() {TMOD | 0x01;; // 定时器…

数据分析师平均薪资18322,这11个行业需求量最大!

2024年&#xff0c;是一个被数据深刻影响的时代。数据&#xff0c;如同无形的燃料&#xff0c;驱动着现代社会的运转。从全球互联网用户每天产生的2.5亿TB数据&#xff0c;到制造业的传感器、金融交易、医疗病历等各个领域的海量信息&#xff0c;数据的量级每年都在呈指数级增长…

Linux 内核设备树 ranges属性

今天有人问了我一下ranges属性&#xff0c;找了相关资料确认后&#xff0c;记录一下&#xff1a; 参考资料链接&#xff1a;让你完全理解linux内核设备树ranges属性地址转换 - vkang - 博客园 (cnblogs.com) ranges属性定义如下&#xff1a; ranges < local_address pa…

SAP专家级实施商解读:SAP S/4HANA Cloud(PCE私有云) 的五大误解

五个关于SAP S/4HANA Cloud&#xff08;PCE私有云&#xff09;的重要疑问&#xff1a; ■ SAP太贵了&#xff1f; ■ SAP S/4HANA Cloud 只适用于大型企业&#xff1f; ■ ERP项目&#xff0c;尤其是 SAP 解决方案&#xff0c;太耗时了&#xff1f; ■ ERP项目/云项目没有优势&…

JAVA学习笔记29(集合)

1.集合 ​ *集合分为&#xff1a;单列集合、双列集合 ​ *Collection 接口有两个重要子接口 List Set&#xff0c;实现子类为单列集合 ​ *Map接口实现子类为双列集合&#xff0c;存放的King–Value ​ *集合体系图 1.1 Collection接口 1.接口实现类特点 1.collection实现…

PL_to_PS中断传输数据

PL_to_PS中断传输数据 实验功能&#xff1a;将PL端的数据存入BRAM&#xff0c;然后在PS端读出数据&#xff0c;用串口打印。通过中断来触发 参考文章&#xff1a; https://www.cnblogs.com/fhyfhy/p/11760986.html [ZYNQ_PS与PL通过BRAM交互&#xff08;三&#xff1a;PSPL读…

MyBatis 框架学习(II)

MyBatis 框架学习(II) 文章目录 MyBatis 框架学习(II)1. 介绍2. 准备&测试2.1 配置数据库连接字符串和MyBatis2.2 编写持久层代码 3. MyBatis XML基础操作3.1 Insert 操作3.2 Delete 操作3.3 Update 操作3.4 Select 操作 4. #{} 与 ${}的使用5. 动态SQL操作5.1 < if >…

去除图像周围的0像素,调整大小

在做分割任务时&#xff0c;经常需要处理图像&#xff0c;如果图像周围有一圈0像素&#xff0c;需要去除掉&#xff0c;重新调整大小 数组的处理 如果图像的最外一圈为0&#xff0c;我们将图像最外圈的图像0去除掉。 import numpy as npdef remove_outer_zeros(arr):# 获取数…