iec104规约遥测遥信解析笔记「建议收藏」

2022-06-24 14:43:05 浏览数 (2)

大家好,又见面了,我是你们的朋友全栈君。

最近在写104规约的解析暂时做一个笔记,先写一个遥信的后期再补全

规约解析表如下:

104规约解析

启动字符

1字节

取值

68H

APCI应用规约控制信息

APDU应用规约数据单元

APDU长度

1字节

取值

最大,253

控制域

4字节

I格式控制域标志 (编号的信息传输格式)(包含ASDU)

D7

D6

D5

D4

D3

D2

D1

D0

控制域八位位组1

发送序列号N(S)

0

控制域八位位组2

发送序列号N(S)

控制域八位位组3

接收序列号N(R)

0

控制域八位位组4

接收序列号N(R)

S格式控制域标志 (编号的监视功能格式)(不包含ASDU)

D7

D6

D5

D4

D3

D2

D1

D0

控制域八位位组1

0

1

控制域八位位组2

0

控制域八位位组3

接收序列号N(R)

0

控制域八位位组4

接收序列号N®

U格式控制域标志 (不编号的控制功能格式)(不包含ASDU)(同一时刻TESTFR、STOPDT、STARTDT中只能有一个功能可以被激活)

D7

D6

D5

D4

D3

D2

D1

D0

控制域八位位组1

TESTFR

STOPDT

STARTDT

1

1

确认

命令

确认

命令

确认

命令

控制域八位位组2

0

控制域八位位组3

0

控制域八位位组4

0

类型标识TI

1字节

取值

10进制

16进制

意义

类别

ASDU应用服务数据单元

1

0x01

单点信息(遥信)

监视方向的过程信息

3

0x03

双点信息 (遥信)

9

0x09

测量值,归一化值(遥测)*

11

0x0B

测量值,标度化值(遥测)

13

0x0D

测量值,短浮点数(遥测)

30

0x1E

带CP56Time2a时标的单点信息(遥信带时标)

31

0x1F

带CP56Time2a时标的双点信息(遥信带时标)

45

0x2D

单命令(遥控)

遥控

46

0x2E

双命令(遥控)

102

0x66

读单个参数命令(参数设置)

参数设置

132

0x84

读多个参数命令(参数设置)

48

0x30

预置/激活单个参数命令(参数设置)

136

0x88

预置/激活多个参数命令(参数设置)

70

0x46

初始化结束

系统命令 初始化结束

100

0x64

召唤命令

系统命令 总召唤

103

0x67

时钟同步/读取命令

系统命令 时钟同步

105

0x69

复位进程命令

系统命令 复位进程

可变结构限定词

1字节

D7

D6

D5

D4

D3

D2

D1

D0

取值方法

&0x80

&0x7F

符号表示

SQ

number

意义

地址连续性

应用服务数据单元信息元素(单个信息元素或同类信息元素组合)的数目

值及功能

0.地址不连续 1.地址连续

<0>∶=应用服务数据单元不含信息对象;<1..127>∶=应用服务数据单元信息元素的数目

传输原因

2字节

D7

D6

D5

D4

D3

D2

D1

D0

取值及含义

T(test) 0.未试验 1.试验

P/N 0.肯定确认 1.否定确认

0

0x00

未用

1

0x01

周期、循环 (遥测)

2

0x02

背景扫描(遥信)(遥测)

3

0x03

突发(自发) (遥信)(遥测)

4

0x04

初始化完成

5

0x05

请求或者被请求(遥信被请求)(遥测被请求)

6

0x06

激活(激活)(遥控、参数设置 控制方向)

7

0x07

激活确认(激活确认)(遥控、参数设置 监视方向)

8

0x08

停止激活 (遥控、参数设置 控制方向)

9

0x09

停止激活确认(遥控、参数设置 监视方向)

10

0x0a

激活终止 (遥控 监视方向)

13

0x0d

文件传输

20

0x14

响应站召唤(总召唤)(遥信响应总召唤)(遥测响应总召唤)

44

0x2c

未知的类型标识(遥控、参数设置 监视方向)

45

0x2d

未知的传送原因(遥控、参数设置 监视方向)

46

0x2e

未知的应用服务数据单元公共地址(遥控、参数设置 监视方向)

47

0x2f

未知的信息对象地址(遥控、参数设置 监视方向)

48

0x30

遥控执行软压板状态错误

49

0x31

遥控执行时间戳错误

50

0x32

遥控执行数字签名认证错误

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

2字节

是一个系统参数,每一个配电终端对应唯一的一个值

信息对象地址 (单个或多个)

3字节

D7

D6

D5

D4

D3

D2

D1

D0

地址表示

7位

0位

15位

8位

23位

16位

描述

信息对象地址位三个字节(总召唤,信息地址为0)(时钟同步,信息地址为0)(复位进程地址为0)(初始化地址为0)

信息元素 (可能是单个 或多个 信息元素)

1字节

D7

D6

D5

D4

D3

D2

D1

D0

单点遥信

0.有效 1.无效

0.当前值 1.非当前值

0.未被取代 1.被取代

0.未被闭锁 1.被闭锁

备用

备用

备用

0.开关分 1.开关合

双点遥信

0.有效 1.无效

0.当前值 1.非当前值

0.未被取代 1.被取代

0.未被闭锁 1.被闭锁

备用

备用

0.不确定或中间状态 1.确定开关分 2.确定开关合 3.不确定

遥控 单命令

0.遥控执行命令 1.遥控选择命令

备用

备用

备用

备用

备用

备用

0.开关分 1.开关合

遥控 双命令

0.遥控执行命令 1.遥控选择命令

备用

备用

备用

备用

备用

0.不允许,有错误 1.开关分 2.开关合 3.不允许,有错误

2字节

遥测

链路层传输顺序为低位在前,高位在后;低字节在前,高字节在后。如:69 01应该是01 69,即二进制0000 0001 0110 1001,转换成10进制是361

参数设置 4字节

读取单个参数

在控制方向:空,在监视方向:返回参数(信息值为4个字节)

读取多个参数

在控制方向:空,在监视方向:返回参数(信息值1为4个字节,信息值n为4个字节)

预置/激活单个参数

在控制方向:参数值,在监视方向:返回参数镜像(信息值为4个字节),后缀设定命令限定词1字节

预置/激活多个参数

在控制方向:参数值,在监视方向:返回参数镜像(信息值1为4个字节,信息值n为4个字节),后缀设定命令限定词1字节

描述

总召唤无此项,时钟同步无此项,复位进程无此项,初始化结束无此项,

限定词

1字节

总召唤限定词

20

复位进程限定词

1

初始化原因

0.当地电源合上,1.当地手动复位,2.远方复位

品质描述词(遥测)

0(每个信息元素后缀1个字节)

设置命令限定词 (参数预置)

D7

D6

D5

D4

D3

D2

D1

D0

S/E

QL

1:选择预置参数 0:执行激活参数

0:缺省值

描述

时钟同步无此项,遥信无此项,遥控无此项,

时标CP56Time2a

7字节

D7

D6

D5

D4

D3

D2

D1

D0

第1字节

毫秒(低8位)

第2字节

毫秒(高8位)

第3字节

0

0

分钟(0~59)

第4字节

0

0

0

小时(0~23)

第5字节

星期(1~7)

日(0~31)

第6字节

0

0

0

0

月(1~12)

第7字节

0

年(0~99)

描述

时钟同步带时标、总召唤无时标、进程复位无时标、初始化结束无时标、参数设置无时标

遥信的解析例子:68 0E 0A 00 10 00 01 01 03 00 01 00 01 00 00 01(单点遥信),注意下面的所有运行 都需要把值转为10进制再进行运行比如(0A & 0x03–>11&0x03)

分析如下:

第一个字节68:起始符(固定的就是这个,转换成10进制就是104)

第二个字节0E: 报文长度(表示0E 后面的字节一共有多少个字节 即0A 到最后01一共14个字节,0E的十进制即为14)

第三个字节到第六个字节:都是控制域值 分三种

代码语言:javascript复制
I帧是信息帧,作用是用于传输具体的通信数据的 长度必大于6个字节。
* S帧是用于确认接收的I帧,即当接收到I帧后需要返回一个S帧 长度等于6个字节。
* U帧是控制帧,用于控制启动/停止子站进行数据传输,或测试TCP链路连接,长度等于6个字
把第一控制域的值和 16进制的03进行与运算(0A & 0x03) 是1代表S格式, 3代表U格式,其余就是I格式

第七个字节 01 是类型标识符:对应上面的表 就是单点遥信类型 十进制值为1

第八个字节01 是可变结构限定词:这里可得出两个值,对应上面表

sq值:01 & 0x80的结果 如果为128 就是信息元素地址是顺序的,sq值设置为1。如果为0,sq值等于0 信息元素地址非顺序的

元素个数:01 & 0x7F 表示信息元素的个数。

第九个字节03到第十个字节00:表示传输原因,对应上表得出以下几个值:

注意:这里03带入计算表示第九个字节为03

T(test): 03&0x80 值为128 为已实验 ,值为0 表示未实验

PN值:03 & 0x40 值为64 为否定确认,值为0肯定确认

原因值:03 & 0x3F (对应上面的表,计算的值表示对应的原因)

第十一字节01到第十二字节00:表示应用服务数据单元公共地址 计算规则是 第十二字节在前第十一字节在后拼成 十六进制的格式:0001 然后计算出这个数的十进制值

第十三字节01到第十五字节00:表示信息对象地址 00 << 16 00<<8 01计算规则:第十五字节 << 16 第十四字节 << 8 第十三字节 (记住字节转为十进制再计算)

第十六字节01:表示信息元素的值 这里一般会有多个或者一个

源码:https://github.com/wangtingsong/iec104_wts

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151378.html原文链接:https://javaforall.cn

d3

0 人点赞