锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

电力-101/104规约基础1

时间:2023-03-05 16:00:00 继电器nt77继电器d4a1500f过流继电器e电力变送器7b0bs41变送器101继电器

内容包括IEC101/104规定术语及解释(嵌入实际工程C代码),IEC101/104规约标准及遥测类型转换介绍,IEC101规定遥信、遥控、遥控和加密。紫色文本是超链接,点击自动跳转到相关博客。不断更新,原创不容易!

目录:

一、IEC101/104规定标准介绍

1、引言

2、方法

1)归一化值 2)标度化值 3)短浮点数(浮点数基础知识)

3、参考

4、IEC101/104规定一般说明

1)101规定说明书一 2)101规约说明书二) 3)101规约说明书三4)101规定需要完成的功能

二、IEC101/104

三、IEC101/104规约术语及解释

1、术语摘要

2、术语释义

1)链路功能码解释2)TI类型标识的解释3)COT解释传输原因4)信息体地址说明

5)质量描述词的解释6)可变帧长帧定义 7)CP56time2a时间格式格式

三、一级数据、二级数据

四、IEC101规定遥信、遥控、遥控和加密

1、概述

1)遥测 2)遥信 3)遥控

------------------------------------------------------

总结:

1、IEC串口通调度用于101,属于远动规约;IEC104是IEC网络版101,属于远动规约。

2、IEC101/104规定有两种传输方式:平衡和非平衡传输。

1)在点对点和多点对点的全双工通道结构中采用平衡传输,其他通道结构中只采用非平衡传输。

2)平衡衡传输方式中IEC101规定是问答 循环规定(Polling),即主站端和子站端均可作为启动站;当用于非平衡传输时,IEC101规约是问答式规约,只有主站端才能作为起动站。

--------------------------------------------------------------------------------------------------------------------
一、IEC101/104规定标准介绍
IEC101与IEC104是国际标准,DL634是中国电力行业的标准IEC101翻译并增加具有中国特色的补充规定。

/p>

GBT 18657.2-2002 远动设备及系统 第5部分传输规约 第2篇链路传输规约;
DLT 634.5104-2009 远动设备及系统 第5-104部分:传输规约 采用标准传输规约集的IEC 60870-5-104网络访问。
基本架构与OSI模型对比如下图:

三层


五层

---------------------------------------------------------------------------------------------------------------------

二、IEC101/104规约遥测量类型转换

1、引言

DL/T634.5101-2002和DL/T634.5104-2009标准中遥测量的标识类型有归一化值NVA,标度化值SVA,短浮点数R32-IEEE

STD 754,本文介绍利用union数据类型完成字节数组向这三种类型转换的方法。

在IEC60870-5-101、103、104中,指出遥测值上送支持三种标准:归一化、标度化、短浮点数。其中归一化的处理比较繁琐,尤其是将真实值与归一化值做相互转换的时候,假如按照规约的处理方式会变得十分麻烦,这儿给出一个极其简单的转换公式,以供大家参考:

f(归一) = f(真实) * 32767 /  满码值   公式1

f(真实) = f(归一) * 满码值 / 32767    公式2

注:在对负数做归一化处理时,有将32767变为32768来处理的情况。

其中,满码值是通信双方约定的一个值,这个值一般是真实值的上限,也就是说真实的值应该小于该值。假如真实值大于满码值,将会发生溢出的情况。但满码值不宜取的过大。因为在归一化转换和还原的时候,必然会出现数值的误差情况,具体误差跟满码值有直接的关系,可以自行验证。

-------------------------------------------

2、方法

定义union数据类型,该union类型定义了多种不同数据类型的内部变量,但各个内部变量共享一段内存,在不同时间里保存不同的数据类型和长度的变量,此处共只占用4个字节。

typedef unsigned char BYTE;

typedef unsigned long DWORD;

typedef union      // 4 bytes

{

    bool  bBool;        //  int value

    BYTE  byBuf[4];   //  Buffer

    short int nInt;     //  16 bits integer

    unsigned short int snInt;  //  16 bits unsigned integer

    long  l;               //  32位有符号  2,147,483,648 to 2,147,483,647

    DWORD dw;      //  32位无符号整数 0 to 4,294,967,295

    float f;                //  32位 3.4E +/- 38 (7 digits)

} EXC_DataType;

---------------------

1)归一化值

NVA:=F16[1…16]<−1…+1−2^−15>

归一化值由两个字节组成。1位符号位,0表示正数,1表示负数。15位数据位,正数是原码,负数是补码。

float Bytes2Float_NVA( const QByteArray &bytes )

 {

     float fVal;

     EXC_DataType  unDataType;

     unDataType.dw = 0; //初始化清零

     

     unDataType.byBuf[0] = bytes[0];  //低位

     unDataType.byBuf[1] = bytes[1];  //高位

     

     if (unDataType.snInt<0)  //负数

     {//负数:补码转换,取反加一

         unDataType.byBuf[1] = unDataType.byBuf[1] & 0x7F;  //除符号位外按位异或,取反

         unDataType.usnInt ^=0xffff;

         unDataType.usnInt++;

         unDataType.byBuf[1] = unDataType.byBuf[1] & 0xFF;

         fVal = (float)unDataType.snInt; //-32768--0

     }

     else //正数:原码

         fVal = (float)unDataType.snInt;  // 0--32767

     

     return fVal/32768;//2^15=32768

 }

---------------------

2)标度化值

标度化值也由两个字节组成。1位符号位,0表示正数,1表示负数。15位数据位,正数是原码,负数是补码。

float Bytes2Float_SVA( const QByteArray &bytes )

 {

     float fVal;

     EXC_DataType  unDataType;

     unDataType.dw = 0; //初始化清零

     

     unDataType.byBuf[0] = bytes[0];  //低位

     unDataType.byBuf[1] = bytes[1];  //高位

     

     if (unDataType.snInt<0) //负数

     {//负数:补码转换,取反加一

         unDataType.byBuf[1] = unDataType.byBuf[1] & 0x7F; //除符号位外按位异或,取反

         unDataType.usnInt ^=0xffff;

         unDataType.usnInt++;

         unDataType.byBuf[1] = unDataType.byBuf[1] & 0xFF;

         fVal = (float)unDataType.snInt; //-32768--0

     }

     else //正数:原码

         fVal = (float)unDataType.snInt;  // 0--32767

     

     return fVal;

 }

---------------------

3)短浮点数(浮点数基础知识)

R32-IEEE STD 754:=R32.23{Fraction,Exponent,Sign}

小数Fraction:=U32,23[1…23]<0…1−2−23>

指数Exponent:=U32,8[24…31]<0…255>

符号Sign:=BS1[1]

短浮点数由四个字节组成。1位符号位,0表示正数,1表示负数。
由于C语言中浮点数本身就是采用IEEE格式来存储的,可巧妙利用union数据类型实现两者之间的转换,如下:

float Bytes2Float_IEEE754( const QByteArray &bytes )

 {

     EXC_DataType  unDataType;

     unDataType.dw = 0;  //初始化清零

     

     unDataType.byBuf[0] = bytes[0];   //低位

     unDataType.byBuf[1] = bytes[1];

     unDataType.byBuf[2] = bytes[2];

     unDataType.byBuf[3] = bytes[3];   //高位

     

     return unDataType.f;   //直接返回float类型即为IEEE格式

 }

关于短浮点数更为详细的描述参看:“(*(volatile unsigned long *)) 的理解”。

---------------------

规约里短浮点数(带品质参数)7B D4 44 40 00 十六进制 为什么代表的是3.07547(十进制)? 
去掉品质位,实际值为40 44 D4 7B,转化为二进制:0100  0000  0100  0100  1101  0100   0111   1011
其中,把上面的二进制数划分如下:
符号位 | 指数位(阶码表示,8位) | 有效位(尾码)
  0           100  0000  0                    100  1101  0100   0111   1011
其中把阶码提取:(100  0000  0)10-127=128-127=1(小数点位置)
尾码加一位1变成:1100  1101  0100   0111   1011
实际值为(11.001101010001111011)2=(11.001101)2=3.07547

-------------------------------------------
3、参考
1)电力101/104规约中遥测数据归一化问题
2)C程序中用union实现浮点数与IEEE格式转换
-------------------------------------------
4、IEC101/104规约一般说明
应用数据封装,发送到物理层或相反
提供链路状态指示
报文重传
FCB、DFC位的处理(见下)
控制物理层
防止数据碰撞
响应有效报文

---------------------------------------------------------------------------------------------------------------------

三、IEC101/104规约术语及释义

摘自“DLT 634.5101-2002 远动设备及系统 第5-101部分 传输规约基本远动任务配套标准”。

1、术语摘要

A 地址域
ACD 请求访问位,ACD=1:表示终端有1级用户数据,希望向主站传输
ASDU 应用服务数据单元是(Application Server Data Unit)
BCR 二进制计数器读数
C 控制域
COI 初始化原因
CON 控制命令
COS 状态量变化(事件变位记录)
COT 传送原因(CAUSE OF TRANSMISSION)
CP56Time2a 七个字节二进制时间
CS 帧校验和
DIQ 带品质描述词的双点信息
DIR 传输方向位  0:主站->终端
DTU 站所终端
EPA 增强性能体系结构
FBP 固定测试图像
FC 链路功能码(Function Code)
FCB 帧计数位
FCV 帧计数有效位  1:帧计数位FCB变化有效
FTU 馈线终端
QRP 复位进程命令限定词
L 报文长度(Length)
NVA 归一化值
PI 参数特征标识
QCC  电能量命令限定词
QDS 品质描述词
QOC 命令限定词
QOI 召唤限定词
QRP 复位进程命令限定词
S/E 选择/执行(Select/Execute)
SCO 单点命令(Single Command)
SIQ 带品质描述词的单点信息
SOE 事件顺序记录(Sequence Of Event)
SQ 单个或者顺序(Single or Sequence)
SVA 标度化值
TI 类型标识(TYPE IDENTIFICATION)
VSQ 可变结构限定词(VARIABLE STRUCTURE QUALIFIER)
SRQ 节准备就绪限定词
SCQ 选择和召唤文件限定词
LSQ 最后的节和段限定词
AFQ 文件或节认可限定词
NOF 文件名称
NOS 节名称
SOF 文件状态
QOS 设定命令限定词
COA 公共地址
---------------------

主站 --> 子站

传输方向位DIR    DIR=0,表示报文是由主站向子站传输。

启动报文位PRM  PRM=1,表示主站向子站传输,主站为启动站。

帧计数位FCB  主站向同一个子站传输新一轮的发送/确认(SEND/CONFIRM)或请求/响应(REQUEST/RESPOND)传输服务时,将FCB 位取相反值,主站为每一个子站保留一个帧计数位的拷贝,若超时没有从子站收到所期望的报文,或接收出现差错,则主站不改变帧计数位(FCB)的状态,重复传送原报文,重复次数为3 次。子站应在接收报文后分析判断FCB位,如子站接收报文的FCB位未改变,则子站重发原来的帧,否则通信不正确。若主站正确收到子站报文,则该一轮的发送/确认(SEND/CONFIRM)或请求/响应(REQUEST/RESPOND)传输服务结束。复位命令的帧计数位常为0,帧计数有效位FCV=0。

帧计数有效位FCV  FCV=0 表示帧计数位(FCB)的变化无效。FCV=1 表示帧计数位(FCB)的变化有效。
发送/无回答服务、重传次数为0的报文、广播报文时不需考虑报文丢失和重复传输,无需改变帧计数位(FCB)的状态,因此这些帧的计数有效位常为0。

子站 --> 主站

传输方向位DIR     DIR=1 表示报文是由子站向主站传输。

启动报文位PRM   PRM=0 表示子站向主站传输,子站为从动站。

要求访问位ACD    ACD=1 表示子站希望向主站传输1 级数据。

数据流控制(DFC)  DFC=0 表示子站可以继续接收数据。DFC=1 表示子站数据区已满,无法接收新数据。

-------------------------------------------
2、术语释义
1)链路功能码释义
包含链路复位、链路测试发送/确认、用户数据发送/确认、请求链路状态。

---------------------  
2)TI类型标识的释义

---------------------
3)COT传送原因的释义

---------------------
4)信息体地址释义

信息体地址点号=信息体地址-起始地址

---------------------

5)品质描述词释义

SIQ: CP8{ SPI, RES, BL, SB, NT, IV}带品质描述词单点信息释义

SPI: BS1[1]<0..1> 0 分开,1合闭

IV: BS1[8]<0..1>,0有效,1溢出(被闭/被取代/非当前值/无效)

QDS: CP8{ OVRESBLSBNTIV} 释义

OV: BS1[1] <0..1> ,0未溢出,1 溢出

RES: BS2~4[0]<0> ,保留

BL: BS1[5]<0..1>,0未被闭锁,1被闭锁

SB: BS1[6]<0..1>,0未被取代,1被取代

NT: BS1[7]<0..1>,0当前值,1非当前值

IV: BS1[8]<0..1>,0有效,1溢出(被闭锁/被取代/非当前值/无效)

---------------------

6)可变帧长帧释义

以总召帧为例,报文解析详见“平衡式101规约报文解析之二、配置说明”

u8 send_U0data[150];

void U0_messure() //总召时的模拟量

{ …………………………………………………………………

  send_U0data[len++]=0x68; //可变帧长帧

  send_U0data[len++]=0; //数据长度

  send_U0data[len++]=0; //数据长度

  send_U0data[len++]=0x68; //可变帧长帧

  FCB的处理(略),作用见本文“4、IEC101/104规约一般说明”。

  send_U0data[len++]=ComInformation.address&0XFF; //应用服务单元公共地址高位(链路地址高位)

  send_U0data[len++]=(ComInformation.address>>8)&0XFF; //应用服务单元公共地址低位(链路地址低位)

  send_U0data[len++]=0x09; //类型标识9 (测量值,归一化值)

另见本节1)TI类型标识的释义图片

  send_U0data[len++]=0x84; //可变结构限定词

//关于SQ见“电力101/104规约基础二之1.3 应用服务数据单元ASDU

Bit7=SQ=1连续单点信息,0x84表示连续4个单点信息(信息体数目为4)

  send_U0data[len++]=0x14; //传送原因低位,0x14=20D响应站召唤,见本节2)COT传送原因的释义图片

  send_U0data[len++]=0; //传送原因高位


另见本节2)COT传送原因的释义图片

BIT7: T: 0未实验,1实验;

BIT6: P/N: 0肯定认可,1否定认可;

BIT5~BIT0传送原因

  send_U0data[len++]=ComInformation.address&0XFF; //应用服务单元公共地址高位(链路地址高位)

  send_U0data[len++]=(ComInformation.address>>8)&0XFF; //应用服务单元公共地址低位(链路地址低位)

  send_U0data[len++]=0x01; //信息体地址高位

  send_U0data[len++]=0x40; //信息体地址低位

…………………………………………………………………

 send_U0data[1]=len-4;

  send_U0data[2]=len-4;

  send_U0data[len++]=tempdata; //保存数据长度到帧

  send_U0data[len++]=0x16; //结束帧

  sendU0data_length=len; //备份长度,用于重发

  U0lengthbak=sendU0data_length;

  UART_Write(send_U0data,sendU0data_length); //串口发送

}

void U0_resend (void) //重发数据

{

  sendU0data_length=U0lengthbak; //将先前备份的数据长度送入sendU0data_length等待发送

  U0_FuncTab[0].status=0x5555; //重发一次

  UART_Write(send_U0data,sendU0data_length); //将本地数组的内容重发

}

---------------------

7)CP56time2a时间格式释义

CP56time2a是101/104规约中定义的时间格式,101和104是电力通信规约的一种,2000年左右进行了修订,现在使用的104规约应该就是2000年的版本。
根据以前下载的一个文档的说明,104规约应该是默认的20xx年了,所以xx是从00-99年,所以7bit能表示00-99就可以了。毕竟一种规约能用一百年,已经了不起了。

-------------------------------------------

3、一级数据、二级数据

一级数据主要包括SOE、动作事件等;二级数据主要是遥测。

---------------------------------------------------------------------------------------------------------------------

四、IEC101遥信、遥测与遥控及加密

1、概述

遥测和遥信是配电终端向调度中心传送信息,遥控是调度中心向配电终端下达的操作命令,直接干预电网的运行。

1)遥测

---------------------

2)遥信

单点遥信和双点遥信在地址上不区分,都是遥信量。无论单点还是双点,存储单位都是字节或字。单点双点跟存储单元无关,跟地址无关。

单点遥信是用一位表示一个遥信量,比如开关位置,只采集一个常开的辅助接点,值为1表示合位,0表示分位;

68 0C 0C 68 F3 64 00 01 01 03 00 64 00 17 00 00 D7 16 

68 13 13 68 D3 64 00 1E 01 03 00 64 00 17 00 00 F8 6C 31 0C 0B 0C 15 A1 16 

双点遥信需要采集常开和常闭两个辅助接点位置:当常开点值=1并且常闭点值=0,则认为开关在合位(0x10);当常开点值=0并且常闭点值=1,认为开关在分位(0x01);当两个位置值都为1,或者两个值都为0,则认为开关位置不能确定。

68 0C 0C 68 F3 64 00 03 01 03 00 64 00 01 00 01 C4 16 分位

68 13 13 68 D3 64 00 1F 01 03 00 64 00 01 00 01 31 2A 1F 0C 0B 0C 15 72 16 

68 0C 0C 68 F3 64 00 03 01 03 00 64 00 01 00 10 D3 16 合位

68 13 13 68 D3 64 00 1F 01 03 00 64 00 01 00 10 79 3C 1F 0C 0B 0C 15 DB 16 

---------------------

3)遥控

(1)返送校核

要求有很高的可靠性。在遥控过程中,采用“返送校核”的方法,实现遥控命令的传送。所谓“返送校核”是指配电终端接收到调度中心的命令后,为了保证接收到的命令能正确地执行,对命令进行校核,并返送给调度中心的过程。

配电终端向调度中心运送的校核信息,用以指明配电终端所收到命令与主站原发的命令是否相符以及配电终端能否执行遥控

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章