iec104规约遥测遥信解析笔记

最近在写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)

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

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

 

 

你可能感兴趣的:(104规约,java)