常用规约的流程及示例分析doc.docx
- 文档编号:28410643
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:50
- 大小:37.09KB
常用规约的流程及示例分析doc.docx
《常用规约的流程及示例分析doc.docx》由会员分享,可在线阅读,更多相关《常用规约的流程及示例分析doc.docx(50页珍藏版)》请在冰豆网上搜索。
常用规约的流程及示例分析doc
DLT645规约,MODBUS规约,CDT92规约,从站101规约(2002版)
一DLT645规约
初始化
切换到第1块表
主站查询“正向有功数据块”
从站应答数据
主站查询“反向有功数据块”
”
从站应答数据
主站查询“正向无功总电能”
从站应答数据
主站查询“反向无功总电能”
从站应答数据
切换到下一块表
帧格式
说明
代码
帧起始符
68H
地址域
A0
A1
A2
A3
A4
A5
帧起始符
68H
控制码
C
数据长度域
L
数据域
DATA
校验码
CS
结束符
16H
1.帧起始符固定为68H
2.地址域A0~A5
地址域由6个字节构成,每字节2位BCD码,低地址字节在先,高地址字节在后。
当使用的地址码长度不足6字节时,高位用十六进制AAH或00补足6字节,根据电表厂家要求选择。
当地址为999999999999时,为广播地址。
3.控制码C格式如下所示。
功能码
后续帧标志
从站异常标志
传输方向
D7
D6
D5
D4
D3
D2
D1
D0
D7=0:
由主站发出的命令帧
D7=1:
由从站发出的应答帧
D6=0:
从站正确应答
D6=1:
从站对异常信息的应答
D5=0:
无后续数据帧
D5=1:
有后续数据帧
D4~D0:
请求及应答功能码
00000:
保留
00001:
读数据
00010:
读后续数据
00011:
重读数据
00100:
写数据
01000:
广播校时
01010:
写设备地址
01100:
更改通信速率
01111:
修改密码
10000:
最大需量清零
4.数据长度L
L为数据域的字节数。
读数据时L<=200,写数据时L<=50,L=0表示无数据域。
5.数据域DATA
数据域包括数据标识和数据等。
传输时发送方按字节进行加0x33处理,接受方按字节进行减33H处理。
(a)数据区的第1,2个字节是数据标识:
目前我们使用的程序是读4种电量的数据块,共20个电量.
“0x1f0x90”表示正向有功数据块;(报文里加0x33后是0x520xC3)
“0x2f0x90”表示反向有功数据块;(报文里加0x33后是0x620xC3)
“0x1f0x91”表示正向无功数据块;(报文里加0x33后是0x520xC4)
“0x2f0x91”表示反向无功数据块.(报文里加0x33后是0x620xC4)
查询命令的数据区只包含2个字节的数据标识,
应答报文的数据区包含:
类型标识+电度数据
(b)以上每种数据块包含5个电量,依次是:
总电能,尖峰,峰,平,谷
维护软件里20个电量的定义顺序:
正向有功总电量
反向有功总电量
正向无功总电量
反向无功总电量
正向有功尖峰
峰
平
谷
反向有功尖峰
峰
平
谷
正向无功尖峰
峰
平
谷
反向无功尖峰
峰
平
谷
6.校验码CS
从帧起始符开始到校验码之间的所有字节的算术和,模256。
不计超过256的溢出值。
7.结束符16H
标识一帧的结束,其值为16H.
报文示例
主站在发送帧信息之前,先发送3个字节0xFE以唤醒接收方.
地址域和数据均先传送低位字节,后传送高位字节。
电度值的4个字节都是按+33H传送.
对于配地址文件(.gy)的,以表地址为156237191832为例
1.主站查询“正向有功数据块”
Txd:
FEFEFE6832181937621568010252c3SUM16
从站应答:
Rxd:
6832181937621568811652c3ab89674554464748333333333333333333333333SUM16
分析:
两个68之间的6个字节是地址
第11,12个字节是数据标识:
0x520xc3
分别减0x33后为0x1f0x90=正向有功。
每种数据块传5个电度值,依次为:
总正向有功,尖峰,峰,平,谷
ab896745,分别-0x33后是78563412,实际值就是12345678
54464748,分别-0x33后是21131415,实际值就是15141321
33333333,分别-0x33后是00000000,实际值就是0
2.主站查询“反向有功数据块”
Txd:
FEFEFE6832181937621568010262c35D16
从站应答:
Rxd:
6832181937621568811662c3ab89674554464748333333333333333333333333SUM16
分析:
两个68之间的6个字节是地址
0x620xc3是数据标识,减0x33后为0x2f0x90:
反向有功
每种数据块传5个电度值,依次为:
总反向有功,尖峰,峰,平,谷
ab896745,分别-0x33后是78563412,实际值就是12345678
54464748,分别-0x33后是21131415,实际值就是15141321
33333333,分别-0x33后是00000000,实际值就是0
3.查询“正向无功数据块”
Txd:
FEFEFE6832181937621568010252c44E16
从站应答:
Rxd:
6832181937621568811652c4ab89674554464748333333333333333333333333SUM16
分析:
两个68之间的6个字节是地址
0x520xc4是数据标识,减0x33后为0x1f0x91:
正向无功
每种数据块传5个电度值,依次为:
总正向无功,尖峰,峰,平,谷
ab896745,分别-0x33后是78563412,实际值就是12345678
54464748,分别-0x33后是21131415,实际值就是15141321
33333333,分别-0x33后是00000000,实际值就是0
4.查询“反向无功数据块”
Txd:
FEFEFE6832181937621568010262c45E16
从站应答:
Rxd:
6832181937621568811662c4ab89674554464748333333333333333333333333SUM16
分析:
两个68之间的6个字节是地址
0x620xc4是数据标识,减0x33后为0x2f0x91:
反向无功
每种数据块传5个电度值,依次为:
总反向无功,尖峰,峰,平,谷
ab896745,分别-0x33后是78563412,实际值就是12345678
54464748,分别-0x33后是21131415,实际值就是15141321
33333333,分别-0x33后是00000000,实际值就是0
二.MODBUS规约
基本报文格式是:
主站发送:
地址
功能码
寄存器起始地址高位
寄存器起始地址低位
寄存器数目高位
寄存器数目低位
CRC16位校验
1字节
1字节
1字节
1字节
1字节
1字节
2字节
子站应答:
地址
功能
码
数据
长度
数据1
数据2
…
数据N
CRC16位校验
1字节
1字节
1字节
根据数据类型定
2字节
一般情况下,子站的遥测、遥信等实时量及定值等参数都存放在特定地址范围的寄存器内,实时量是只读的,参数是可读可写的,主站只是按照子站指定的地址读写寄存器就行了。
由于各种设备数据寄存器地址各不相同,寄存器内存放的数据也多种多样:
八位二进制组、字符型、整型、浮点型、时间日期型……,并且读写操作的功能码也不相同,因此程序中通用modbus规约从配置文件protocol.cfg中读取这些信息,一套程序就可以使用多种装置了。
配置文件主要内容如下:
[D0010003]
max_info_num=2
info_type_0=0
info_comm_func_0=3
info_regi_star_0=3011
info_regi_numb_0=4
info_mtdb_star_0=0
info_mtdb_numb_0=8
info_type_1=1
info_comm_func_1=3
info_regi_star_1=4
info_regi_numb_1=3
info_mtdb_star_1=0
info_mtdb_numb_1=3
注意,程序对脚本检测严格,下装到装置里的文件要去掉有效行内的注释内容,并保证有效行末尾没有空格。
附:
各种数据类型
目前标准程序里的modbus规约只处理如下0和1两种类型.
全规也版本的modbus程序下有“多数据类型modbus”,这里面的程序可处理如下所有数据类型.
0:
遥信,一位代表一个遥信,一个寄存器字包含了16个遥信
1:
遥测,一个寄存器代表一个遥测,值=高字节*256+低字节
2~100:
自定义数据类型
个别现场有程序上的特殊改动,如果用到了特定类型的数据,使用这个范围内的数据代码
101:
高字节遥测,使用寄存器字中的高字节表示一个遥测
102:
低字节遥测,使用寄存器字中的低字节表示一个遥测
103:
单字节遥测,一个字节代表一个遥测;高字节遥测排在低字节之前
104:
浮点数,接连的两个寄存器表示一个浮点数,由低到高,保留一位小数
105:
浮点数,接连的两个寄存器表示一个浮点数,由低到高,保留二位小数
106:
浮点数,接连的两个寄存器表示一个浮点数,由低到高,保留三位小数
107:
浮点数,接连的两个寄存器表示一个浮点数,由高到低,保留一位小数
108:
浮点数,接连的两个寄存器表示一个浮点数,由高到低,保留二位小数
109:
浮点数,接连的两个寄存器表示一个浮点数,由高到低,保留三位小数
110:
一个寄存器表示一个遥测,高字节表示整数,低字节字节表示小数,保留三位小数,
111:
两个寄存器表示一个遥测,第一个寄存器表示整数,第二个寄存器表示小数,保留一位小数
112:
两个寄存器表示一个遥测,第一个寄存器表示整数,第二个寄存器表示小数,保留二位小数
113:
两个寄存器表示一个遥测,第一个寄存器表示整数,第二个寄存器表示小数,保留三位小数
114:
两个寄存器表示一个电度,高位寄存器在前
115:
三个寄存器表示一个BCD码电度,高位寄存器在前
116:
电度,接连的两个寄存器表示一个浮点数,由低到高,保留一位小数
117:
电度,接连的两个寄存器表示一个浮点数,由低到高,保留二位小数
118:
电度,接连的两个寄存器表示一个浮点数,由低到高,保留三位小数
119:
电度,接连的两个寄存器表示一个浮点数,由高到低,保留一位小数
120:
电度,接连的两个寄存器表示一个浮点数,由高到低,保留二位小数
121:
电度,接连的两个寄存器表示一个浮点数,由高到低,保留三位小数
示例:
通讯协议
采用RS485.RS232通讯总线标准,1位起始位,8位数据位,1个编程位(该位为1表示地址,为0表示数据),1位停止位,MODBUS协议,波特率可设为1200、2400、9600,地址可设为0x01—0x99(十进制)。
1.遥测量
上位机发送遥测命令格式:
地址
功能码
寄存器起始地址
寄存器个数
CRC校验
01H
03H
XXH(2字节,先高后低)
XXH(2字节,先高后低)
L
H
控制器返回:
地址
功能码
数据
CRC校验
01H
03H
N字节
L
H
数据定义:
(12字节)
数据地址
名称
Type
Format
Unit
1
交流A相电压
Word
Hi-Lo
V
2
交流B相电压
Word
Hi-Lo
V
3
交流C相电压
Word
Hi-Lo
V
4
控母电压
Word
Hi-Lo
V
5
电池电压
Word
Hi-Lo
V
11,12
控母电流
Float
Lo-Hi
0.01A
13,14
电池电流
Float
Lo-Hi
0.01A
2.遥信量
上位机发送遥信命令格式:
地址
功能码
起始地址
寄存器个数
CRC校验
01H
04H
00H
01H
CRC16
控制器返回:
地址
功能码
数据1
数据2
CRC校验
01H
04H
XXH
XXH
CRC16
配置文件如下:
[D0010003]
max_info_num=3
info_type_0=0//前5个遥测都是双字节的普通遥测
info_comm_func_0=3//遥测功能码
info_regi_star_0=1//第一个遥测的地址是1
info_regi_numb_0=5//前5个遥测的数据类型完全一样并且地址连续,所以可以在一条命令里读取
info_mtdb_star_0=0//写入遥测库的起始序号
info_mtdb_numb_0=5//写入5个遥测
info_type_1=105//第6,7个遥测的类型是浮点型,占2个寄存器(4字节),低字节在前,系数是0.01即保留2位小数
info_comm_func_1=3
info_regi_star_1=11//第6个遥测的寄存器地址是11
info_regi_numb_1=4//第6,7个遥测数据类型一样并且地址连续
info_mtdb_star_1=5
info_mtdb_numb_1=2
info_type_2=1//遥信
info_comm_func_2=4//遥信功能码
info_regi_star_2=0//遥信起始地址
info_regi_numb_2=1//共两个遥信字节,即1个寄存器
info_mtdb_star_2=0//写入遥信库的起始序号
info_mtdb_numb_2=2//写入的遥信字节数,并不是遥信个数
(1个字节8个遥信)
Txd:
010300010005D409
Rxd:
01030A0051035D135801700102BAED
遥测1:
81
遥测2:
861
遥测3:
4952
遥测4:
368
遥测5:
257
Txd:
0103000B000435CB
Rxd:
010308146E5C438F423B438BBC
遥测6:
220.43
遥测7:
187.26
Txd:
01040000000131CA
Rxd:
010402B49CCE59
遥信数据字节是B49C=1001110010110100
报文里在前面字节先写入数据库,字节内部的低位对应遥信号在前,=1合;=0分
遥信1—8:
分分合合合分分合
遥信9--16:
分分合分合合分合
三.CDT92规约
Cdt是一种循环式规约,平时主动循环上送各种信息,为保证变位遥信及遥控返校上传的及时性,变位和遥控返校帧在全遥测上传的过程中插入优先传送.
流程如下:
子站初始化
上送全全遥信遥信
上送全遥测(重要遥测次要遥测,一般遥测)
送全遥测过程中是否有变位或遥控返校
Yes
Yes
插入发送变位3遍
(或插入发送遥控返校3遍)
No
继续发送遥测
NoYes
遥测发送完毕?
主站可定时发送对时命令
我们定时发送电度.
Cdt规约总体帧格式:
同步字
控制字
信息字
。
。
。
。
。
。
信息字
EB90EB90EB9071帧类别信息字数源站址目的站址校验码
功能码数据字节1数据字节2数据字节3数据字节4CRC
功能码字节1………………CRC
………
………
表1帧类别代码及定义
帧类别代码
定义
上行(子站主站)
下行(主站子站)
61H
重要遥测(A帧)
遥控选择
C2H
次要遥测(B帧)
遥控执行
B3H
一般遥测(C帧)
遥控撤消
F4H
遥信状态(D1帧)
升降选择
85H
电能脉冲记数值(D2帧)
升降执行
26H
事件顺序记录(E帧)
升降撤消
57H
设定命令
7AH
设置时钟
4CH
召唤子站时钟
表2功能码分配表
功能码代码
用途
00H~7FH
遥测
80H~81H
事项顺序记录
84H~85H
子站时钟返送
E0H
遥控选择(下行)
E1H
遥控返校
E2H
遥控执行(下行)
E3H
遥控撤消(下行)
E4H
遥控选择(下行)
E5H
升降返校
E6H
升降执行(下行)
E7H
升降撤消(下行)
E8H
设置命令(下行)
EEH~EFH
设置时钟(下行)
F0H~FFH
遥信
A0H~DFH
电能脉冲记数值
遥测
全遥测按照重要遥测(遥测1--32),次要遥测(遥测33--64),一般遥测(64往后的遥测)的顺序发送
1.重要遥测:
我们的CDT92程序里规定重要遥测是32个,所以功能码0x00~0x0F
2011/01/2511:
13:
18:
140
Txd:
EB90EB90EB90716110011792
2011/01/2511:
13:
18:
140
Txd:
009B02430091
2011/01/2511:
13:
18:
515
Txd:
01680FF5006A
2011/01/2511:
13:
18:
515
Txd:
02000000003B
2011/01/2511:
13:
18:
515
Txd:
0306C900009A
2011/01/2511:
13:
18:
890
Txd:
0400008F0005
2011/01/2511:
13:
18:
890
Txd:
050000000012
.….…
2011/01/2511:
13:
18:
895
Txd:
0F00000000CF
注释:
重要遥测:
EB90EB90EB907161........
信息字结构:
功能码(00~0F)
遥测N
b7……b0
低字节
b15
b14
…
b11…b8
高字节
遥测N+1
b7……b0
低字节
b15
b14
…
b11…b8
高字节
校验码
(1)每个信息字传送两路遥测量。
(2)b11~b0传送一路模拟量,以二进制码表示。
b11=0时为正数,b11=1时为负数,以2的补码表示。
(3)b14=1表示溢出,b15=1表示数无效。
传送的遥测值范围是:
-2048~2047
遥测功能码从0开始,每个遥测占两个字节,低字节在前,每个信息字可传两个遥测.这样很容易根据功能码判断出遥测号或根据遥测号判断出该遥测所在信息字的位置,方便上传数据不对时检查报文.
例一:
Txd:
009B02430091
功能码是00,此信息字里传的是第1,2路遥测,
功能码
00
遥测1
b7……b0
9B(10011011)
b15
b14
…
b11…b8
02(00000010)
遥测2
b7……b0
43(01000011)
b15
b14
…
b11…b8
00(00000000)
校验码
91
先把数据字节转化为十进制数:
0x9B=155,0x02=2,0x43=67,0x00=0
按照低字节在前的规则可得:
YC1=2*256+155=667
YC2=0*256+67=67
例2:
Txd:
0306C900009A
从报文看第7个遥测若按正常计算YC7=201(0xc9)*256+6(0x06)=51462
已经超出了CDT传送的最大值2047,所以此遥测上传的肯定有问题.一般这种情况是发生了数据溢出,这从维护软件的发送值可以得到证实.
若想从报文的内容看是否确是溢出,可参考如下分析:
功能码
03
遥测7
b7……b0
06(00000110)
b15
b14
…
b11…b8
C9(11001001)
遥测8
b7……b0
00(00000000)
b15
b14
…
b11…b8
00(00000000)
校验码
91
从上面可以看出YC7的b14位是1,表示数值溢出,b15=1表示数值无效.
2.次要遥测,一般遥测:
次要遥测和一般遥测数据处理方式都跟重要遥测一样,在此就不做详细介绍,关键通过帧类别和功能码的范围判断是那种类型.下表中给出报文示例.
我们我们的CDT9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 规约 流程 示例 分析 doc