DL645电度表485 C++
DL_T645_2007_多功能电能表通信规约[含备案文件]
1应用层1.1读数据1.1.1主站请求帧·a) 功能:请求读电能表数据·b) 控制码:C=11H·c) 数据域长度:L=04H+m(数据长度)·d) 帧格式1(m=0):地址域控制码数据域长度数据标识·e) 帧格式2(m=1,读给定块数的负荷记录):·f) 帧格式3(m=6,读给定时间、块数的负荷记录):分时日月年1.1.2从站正常应答·a) 控制码:C=91H 无后续数据帧;C=B1H 有后续数据帧。
·b) 数据域长度:L=04H+m(数据长度)。
·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:如果没有满足条件的负荷记录,从站按正常应答帧格式返回(数据域只有数据标识,数据域长度为4)。
1.1.3从站异常应答帧·a) 控制码:C=D1H·b) 数据域长度:L=01H·c) 帧格式:错误信息字注:错误信息字ERR见附录C。
1.2读后续数据1.2.1主站请求帧·a) 功能:请求读后续数据·b) 控制码:C=12H·c) 数据域长度:L=05H·d) 帧格式:1.2.2从站正常应答帧·a) 控制码:C=92H 无后续数据帧;C=B2H 有后续数据帧。
·b) 数据域长度:L=05H+m(数据长度)·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:读后续数据时,为防止误传、漏传,请求帧、应答帧都要加帧序号。
请求帧的帧序号从1开始进行加1计数,应答帧的帧序号要与请求帧相同。
帧序号占用一个字节,计数范围为1~255。
1.2.3从站异常应答帧·a) 控制码:C=D2H·b) 数据域长度:L=01H·c) 帧格式:1.3写数据1.3.1主站请求帧·a) 功能:主站向从站请求设置数据(或编程)·b) 控制码:C=14H·c) 数据域长度:L =04H+04H(密码)+04H(操作者代码)+m(数据长度)·d) 数据域:DI O DI1DI2DI3+PAP0P1P2+C0C1C2C3+DATA·e) 帧格式:注1:P0P1P2为密码,PA表示该密码权限。
DL-T 645-_多功能电能表通信规约(含备案文件)
a)应用层之巴公井开创作i.读数据1.主站请求帧·a) 功能:请求读电能表数据·b) 控制码:C=11H·c) 数据域长度:L=04H+m(数据长度)·d) 帧格式1(m=0):·e) 帧格式2(m=1,读给定块数的负荷记录):·f) 帧格式3(m=6,读给定时间、块数的负荷记录):2.从站正常应答·a) 控制码:C=91H 无后续数据帧;C=B1H 有后续数据帧。
·b) 数据域长度:L=04H+m(数据长度)。
·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:如果没有满足条件的负荷记录,从站按正常应答帧格式返回(数据域只有数据标识,数据域长度为4)。
3.从站异常应答帧·a) 控制码:C=D1H·b) 数据域长度:L=01H·c) 帧格式:注:错误信息字ERR见附录C。
ii.读后续数据1.主站请求帧·a) 功能:请求读后续数据·b) 控制码:C=12H·c) 数据域长度:L=05H·d) 帧格式:2.从站正常应答帧·a) 控制码:C=92H无后续数据帧;C=B2H有后续数据帧。
·b) 数据域长度:L=05H+m(数据长度)·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:读后续数据时,为防止误传、漏传,请求帧、应答帧都要加帧序号。
请求帧的帧序号从1开始进行加1计数,应答帧的帧序号要与请求帧相同。
帧序号占用一个字节,计数范围为1~255。
3.从站异常应答帧·a) 控制码:C=D2H·b) 数据域长度:L=01H·c) 帧格式:iii.写数据1.主站请求帧·a) 功能:主站向从站请求设置数据(或编程)·b) 控制码:C=14H·c) 数据域长度:L =04H+04H(密码)+04H(操纵者代码)+m(数据长度)·d) 数据域:DI O DI1DI2DI3+PAP0P1P2+C0C1C2C3+DATA ·e) 帧格式:注1:P0P1P2为密码,PA暗示该密码权限。
DLT645电表实验
一、DL/T 645-2007通讯协议简介本标准是为统一和规范多功能电能表与数据终端设备进行数据交换时的物理连接和协议。
信息量的确定以DL/T 614-2007《多功能电能表》为依据。
本标准的实施将规范多功能电能表的通信接口,有利于计量产品质量的提高,对用电管理部门改革人工抄表,实现远方信息传输,提高用电管理水平起到推进作用。
该部分标识码适用于0.5S级三相多功能电表。
二、数据链路层格式说明本协议为主-从结构的半双工通信方式。
手持单元或其它数据终端为主站,多功能电能表为从站。
每个多功能电能表均有各自的地址编码。
通信链路的建立与解除均由主站发出的信息帧来控制。
每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成。
每部分由若干字节组成。
字节格式每字节含8位二进制码,传输时加上一个起始位(0)、一个偶校验位和一个停止位(1),共 11位。
其传输序列如图7。
D0 是字节的最低有效位,D7 是字节的最高有效位。
先传低位,后传高位。
0D0D1D2D3D4D5D6D7P1起始位8位数据偶校验位停止位传送方向图1字节传输序列帧格式帧是传送信息的基本单元。
帧格式如图 8 所示。
说明代码帧起始符68H地址域A0 A1 A2A3A4A5帧起始符68H控制码 C数据域长度L数据域DATA校验码CS结束符16H图2帧格式1.1.1帧起始符68H标识一帧信息的开始,其值为 68H=01101000B。
1.1.2地址域A0~A5地址域由 6 个字节构成,每字节 2 位 BCD 码,地址长度可达12位十进制数。
每块表具有唯一的通信地址,且与物理层信道无关。
当使用的地址码长度不足 6 字节时,高位用“0”补足 6 字节。
通信地址999999999999H为广播地址,只针对特殊命令有效,如广播校时、广播冻结等。
广播命令不要求从站应答。
地址域支持缩位寻址,即从若干低位起,剩余高位补AAH作为通配符进行读表操作,从站应答帧的地址域返回实际通信地址。
关于RS485电能表通讯协议DL645的探讨
1.总述本协议参照电力行业通讯标准“DL/T 645-1997”协议编写。
基本与标准相同。
2.链路层 2.1字节格式:一个起始位,8个数据位(低位在前),一个偶效验位(E), 一个停止位(S)。
0 D0 D1 D2 D3 D4 D5 D6 D7 E S 2.2命令祯格式起始符地址起始符控制码数据长度数据域校验和结束符(1)起始符: 68H (2)地址: 6字节.通配地址99H,99H,99H,99H,99H,99H. (3)控制码定义如下:D7 D6 D5 D4 D3 D2 D1 D0 D7:0主站发出1从站发出D6:0正确应答1错误应答D5: 0无后续桢1有后续帧D4~D0: 00H 保留01H 读数据(BCD)03H 读记录仪数据04H 写数据08 广播校时09H 遥控0AH 写设备地址0BH 设停止位0CH 改波特率0DH 读内部存储区0EH 写内部存储区0FH 写密码10H 需清21H 读数据(16进制)(4)数据长度:所有数据域的字节数。
读数据时L<=202, 写数据时L<=66。
(5)校验和: 所有祯字节累加和。
(6)结束符: 16H 2.3数据编码所有的数据域字节采用余三码传送,+33H(发送方)或-33H(接收方) 2.4传输响应时间: (1)应答延时Td:20ms<Td<500ms (2)字节间停顿TB: 0<TB<500ms 2.5波特率: RS485通信固定为1200bps。
2.6前导符: 每祯数据前有2个FEH同步符. 3.应用层3.1读数据命令帧(返回BCD码数据): 起始符地址起始符控制码长度数据域校验和结束符请求祯68HA0 … A5 68H 01H 02H DI0 DI1 CS 16H 正确应答68H A0 … A5 68H 81H 02H+L DI0 DI1 数据CS 16H 错误应答68H A0 … A5 68H C1H 01H 错误字(注释1)CS 16H 3.2写数据命令帧: 起始符地址起始符控制码长度数据校验和结束符请求帧68H A0 … A5 68H 04H 2+4+L DI0 DI1 密码数据CS 16H 正确应答68H A0 … A5 68H 84H 02H DI0 DI1 CS 16H 错误应答68H A0 … A5 68H C4H 01H 错误字(注释1)CS 16H 3.3写设备地址:起始符地址起始符控制码长度数据校验和结束符请求祯68H 99H … 99H 68H 0AH 06H A0 … A6 CS 16H 正确应答68H A0 … A5 68H 8AH 00H 无CS 16H 4.备注:【注释1】数据标示显示序号标识编码数据格式数据长度(字节) 单位功能数据项名称` DI1 DI0 读/写1 90 10 XXXXXX.XX 4 kWh * (当前)正向有功总电能(+A) 2 90 1F kWh * (当前)正向有功电能数据块 3 C0 20 XX 1 * 电表运行状态字4 C0 30 XXXXX 3 imp/ kWh * 电表常数(固定程序写定)5 C0 32 NNNNNNNNNNNN 6 * * 表号 6 C1 19 XXXXXXXX 4 kWh * * 底度【注释2】:错误字D7 D6 D5 D4 D3 D2 D1 D0 EEPROM读写错费率数超日段数超年时区数超数据超长密码错标识符错非法数据【注释3】:电表状态各位解释D7 D6 D5 D4 D3 D2 D1 D0 时钟继电器工作模式有功方向EPROM 电池电压计量需清方式0正常0通0正常0正向0正常0正常0正常0自动1异常1断1预付费1反向1异常1欠压 1 窃电1手动。
广东电网公司DLT645-2007电能表接入兼容性技术解决方案(0718)汇总
广东电网公司DL/T645-2007表接入兼容性技术解决方案(2012-7-18更新)1适用范围针对广东电网DL/T645-2007 多功能电能表通信协议,需要修订负控终端、配变终端、集中器的上行通讯规约、测试验收方法,需要修订集中器程序、主站抄表软件。
技术方案中所提及的广东规约表符合《广东电网公司三相多功能载波电能表485接口通讯规约》标准,为目前广东地区已接入电表类型。
广东电网DL/T645-2007电表(以下简称07表)符合《DL/T645-2007多功能电能表通信规约》(包括《DLT645-2007备案文件条文解释》)以及《中国南方电网有限责任公司多功能电能表通信协议扩展协议》等标准。
2设计原则(1)满足现行集抄系统对数据项的要求;(2)完全兼容现场运行的系统,兼容《广东电网公司低压电力用户集中抄表系统集中器上行通讯规约(1003版)》;3引用文件《DLT 645-1997多功能电能表通信规约》《DLT 645-2007多功能电能表通信协议》《DLT 645-2007备案文件条文解释》《广东电网公司低压电力用户集中抄表系统集中器上行通讯规约(1003版)》《广东电网公司负荷管理系统技术规范(0903版)》《广东电网公司负荷管理终端通讯规约 (0903版)》《广东电网公司配变监测计量终端技术规范(0903版)》《广东电网公司配变监测计量终端通讯规约(0903版)》《广东电网公司RS-485接口单相电子式电能表通讯规约》(简称“广东单相表规约”)《广东电网公司三相多功能载波电能表485接口通讯规约》(简称“广东三相表规约”)《广东电网公司营配一体化计量自动化系统主站技术规范》4集中器规约修订4.1测量点参数4.1.1测量点性质原《广东电网公司低压电力用户集中抄表系统集中器上行通讯规约(1003 版)》描述为:修改为:8901参数的D3~D6位增加3个电表类型定义,其余位定义保持不变。
注:原规约对于低3位、中间4位和高1位的描述不严谨,现对应修改为D2~D0、D6~D3和D74.1.2集中器增加、修改、删除表号注:(1)8903通讯参数包含在集中器增加、修改、删除表号命令参数中,不进行单独的读写操作。
电度表部颁DL645-97规约说明
43 D3 55 C3 56 C3 57 C3 53 D3 45 C4 46 C4 47 C4 43 D4 55 C4 56 C4 57 C4 53 D4 44 C3 54 C3 44 C4 54 C4
4)
5) 电度表通讯地址设置: “电度表地址”:表示该电度表实际表地址(四字节长整
数),范围:0~4294967295。当实际表地址小于 4294967295 时,地址可在此
信。
3) 用组态软件中的电度表设置窗口进行每块电度表设置。其中“电度数”是采集该
电度表的电度数据个数,“标志 2 ”未使用,“标志 1”为该电表电量选择,具体
见下表:
bit bit6
7 XX XX XX XX
bit5
正向有功尖 电度 反向有功尖 电度 正向无功尖 电度 反向无功尖 电度
bit4
反向无功峰 电度 反向无功平 电度 反向无功谷 电度 反向无功最 大需量
5.1.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:保留度Fra bibliotek厂家要求当地址长度不足 6 个字节时,用十六进制“AA”补齐。
¾ 电度表节点索引与发送地址对照表是否有效(1:有效,非 1:无效,默认 0 无效) 1:有效 非 1:无效
¾ 电度表节点索引与发送地址对照表数目(最大 48;缺省:0) 根据实际填写。
智能电度表DL645规约
4.2.2 地址域 A0∽A5:地址域由 6 个字节构成,每字节 2 位 BCD 码。地址长度为 12 位十进制数,
可以为表号、资产号、用户号、设备号等。具体使用可由用户自行决定。当使用的地址码长度
不足 6 字节时,用十六进制 AAH 补足 6 字节。低地址位在先,高地址位在后。当地址为
999999999999H 时,为广播地址。
DL/T645-1997 通讯规约
6.2.2 最大需量数据标识
DI1
DI1H
DI1L
D7 D6 D5 D4 D3 D2 D1 D0
第5页
1010 最大需量
DI0 DI0H D7 D6 D5 D4
00 当前 01 上月 10 上上月 11 集合
DI0L D3 D2 D1
00 有功 01 无功 10 保留 11 集合
数据传输时组成数据集的各数据块之间用分隔符 AAH 分隔,两个连续的数据块分隔符表示 一个空数据块。如图 3 所示数据集合中包含四个数据块,其中数据块 1 有 m1 项数据,数据块 2 有 m2 项数据,数据块 3 为 0 项,数据块 4 有 m4 项数据。
AAH
AAH AAH
AAH
数据块 1(M1)项
用 DI1H 标识数据的类型,其标识如下:
DI1
DI1H
D7
D6 D5
DI1L
D4
D3 D2 D1 D0
1001 电能量
1010 最大需量
1011 变量
1100 参变量
1100 负荷曲线
1110 厂家功能扩展
1111 保留
DI0
DI0H
D7
D6 D5
DI0L D4 D3 D2 D1 D0
(03)电度表DLT645通讯规约定义及模版说明
协议或工程修改制做人:周作宏工程名:通讯规约文本名:通讯设备名:采用DLT645通讯规约的设备通讯端口设置说明:起始位1位,数据位8位,停止位1位,奇偶校验根据设备定义通讯所选规约配制:167.下行_标准DLT645(可配置)修改原因和内容说明(此项必须填写):1.00标准通讯规约配置。
1.01 修改反向有功电能单位如需其它数据只需电度表中支持,可以参考附录使用说明自行添加或删除。
数据定义说明:按下图进行配置:遥信(0个):遥测(0个):文档资料版本:V1.01测试用例:主站发送:68 01 AA AA AA AA AA 68 01 02 52 C3 3B 16 //2006年7月24日15时19分5秒484毫秒主站接收:68 01 AA AA AA AA AA 68 81 16 52 C3 34 33 33 33 35 33 33 33 36 33 33 33 37 33 33 33 38 33 33 33 DA 16 //2006年7月24日15时19分5秒500毫秒主站发送:68 01 AA AA AA AA AA 68 01 02 62 C3 4B 16 //2006年7月24日15时19分5秒656毫秒主站接收:68 01 AA AA AA AA AA 68 81 16 62 C3 39 33 33 33 3A 33 33 33 3B 33 33 33 3C 33 33 33 43 33 33 33 09 16 //2006年7月24日15时19分5秒671毫秒主站发送:68 01 AA AA AA AA AA 68 01 02 52 C4 3C 16 //2006年7月24日15时19分5秒828毫秒主站接收:68 01 AA AA AA AA AA 68 81 16 52 C4 44 33 33 33 45 33 33 33 46 33 33 33 47 33 33 33 48 33 33 33 2B 16 //2006年7月24日15时19分5秒843毫秒主站发送:68 01 AA AA AA AA AA 68 01 02 62 C4 4C 16 //2006年7月24日15时19分6秒15毫秒主站接收:68 01 AA AA AA AA AA 68 81 16 62 C4 49 33 33 33 4A 33 33 33 4B 33 33 33 4C 33 33 33 53 33 33 33 5A 16 //2006年7月24日15时19分6秒31毫秒报文解析:附:使用说明:1.通讯规约选择:167.下行_标准DLT645(可配置)2.点击按钮,弹出如下对话框:3.按照电表功能或用户需求选择读取的数据,a)选择对应数据,读取相应数据模块,如:选择正向有功电度,则读取正向总有功电度,费率一正向有功电度,费率二正向有功电度,费率三正向有功电度,费率四正向有功电度,五个电度量。
DL-T645-XXXX_多功能电能表通信规约(含备案文件)
1应用层1.1读数据主站请求帧·a) 功能:请求读电能表数据·b) 控制码:C=11H·c) 数据域长度:L=04H+m(数据长度)·d) 帧格式1(m=0):地址域控制码数据域长度数据标识·e) 帧格式2(m=1,读给定块数的负荷记录):·f) 帧格式3(m=6,读给定时间、块数的负荷记录):分时日月年从站正常应答·a) 控制码:C=91H 无后续数据帧;C=B1H 有后续数据帧。
·b) 数据域长度:L=04H+m(数据长度)。
·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:如果没有满足条件的负荷记录,从站按正常应答帧格式返回(数据域只有数据标识,数据域长度为4)。
从站异常应答帧·a) 控制码:C=D1H·b) 数据域长度:L=01H·c) 帧格式:错误信息字注:错误信息字ERR见附录C。
1.2读后续数据主站请求帧·a) 功能:请求读后续数据·b) 控制码:C=12H·c) 数据域长度:L=05H·d) 帧格式:从站正常应答帧·a) 控制码:C=92H 无后续数据帧;C=B2H 有后续数据帧。
·b) 数据域长度:L=05H+m(数据长度)·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:读后续数据时,为防止误传、漏传,请求帧、应答帧都要加帧序号。
请求帧的帧序号从1开始进行加1计数,应答帧的帧序号要与请求帧相同。
帧序号占用一个字节,计数范围为1~255。
从站异常应答帧·a) 控制码:C=D2H·b) 数据域长度:L=01H·c) 帧格式:1.3写数据主站请求帧·a) 功能:主站向从站请求设置数据(或编程)·b) 控制码:C=14H·c) 数据域长度:L =04H+04H(密码)+04H(操作者代码)+m(数据长度)·d) 数据域:DI O DI1DI2DI3+PAP0P1P2+C0C1C2C3+DATA·e) 帧格式:注1:P0P1P2为密码,PA表示该密码权限。
DL_T645_2007_多功能电能表通信规约(含备案文件)
1应用层1.1读数据1.1.1主站请求帧·a) 功能:请求读电能表数据·b) 控制码:C=11H·c) 数据域长度:L=04H+m(数据长度)·d) 帧格式1(m=0):地址域控制码数据域长度数据标识·e) 帧格式2(m=1,读给定块数的负荷记录):·f) 帧格式3(m=6,读给定时间、块数的负荷记录):分时日月年1.1.2从站正常应答·a) 控制码:C=91H 无后续数据帧;C=B1H 有后续数据帧。
·b) 数据域长度:L=04H+m(数据长度)。
·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:如果没有满足条件的负荷记录,从站按正常应答帧格式返回(数据域只有数据标识,数据域长度为4)。
1.1.3从站异常应答帧·a) 控制码:C=D1H·b) 数据域长度:L=01H·c) 帧格式:错误信息字注:错误信息字ERR见附录C。
1.2读后续数据1.2.1主站请求帧·a) 功能:请求读后续数据·b) 控制码:C=12H·c) 数据域长度:L=05H·d) 帧格式:1.2.2从站正常应答帧·a) 控制码:C=92H 无后续数据帧;C=B2H 有后续数据帧。
·b) 数据域长度:L=05H+m(数据长度)·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:读后续数据时,为防止误传、漏传,请求帧、应答帧都要加帧序号。
请求帧的帧序号从1开始进行加1计数,应答帧的帧序号要与请求帧相同。
帧序号占用一个字节,计数范围为1~255。
1.2.3从站异常应答帧·a) 控制码:C=D2H·b) 数据域长度:L=01H·c) 帧格式:1.3写数据1.3.1主站请求帧·a) 功能:主站向从站请求设置数据(或编程)·b) 控制码:C=14H·c) 数据域长度:L =04H+04H(密码)+04H(操作者代码)+m(数据长度)·d) 数据域:DI O DI1DI2DI3+PAP0P1P2+C0C1C2C3+DATA·e) 帧格式:注1:P0P1P2为密码,PA表示该密码权限。
DLT645通信协议详情
1应用范围本规范规定了电能表进行点对点的或一终端对多台电能表进行一主多从的本地通讯接口进行数据交换的技术要求,规定了本地系统硬件和协议规范。
规定了物理连接、通讯链路及应用技术规范(数据的基本格式、校验方式、编码传输规则等)。
本规范主要参考了部颁DL/T 645-1997多功能电能表通信规约,根据我公司的DSSD331-3、DTSD341-3电能表的特色做了相应的扩展。
本规范中未给出的一些例子和示意图请参见部颁规约。
2引用标准下列标准所包含的条文,通过在本标准中的引用而构成为本标准的条文。
本标准出版时,所示版本均为有效,所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。
DL/T 645-1997 多功能电能表通信规约DL/T 614-1997 多功能电能表3术语3.1费率装置tariff device固定的数据采集与处理单元,通常与电能表连接或与电能表组装在一起。
3.2手持单元(HHU)hand-heldunit能与费率装置或电能表进行数据交换的便携式设备。
3.3数据终端设备data terminal equipment由数据源、数据宿或两者组成的设备。
3.4直接本地数据交换direct local data exchange一组费率装置与数据终端设备通过总线连接进行数据交换。
3.5本地总线数据交换local bus data exchange一组费率装置与数据终端设备通过总线连接进行数据交换。
3.6远程数据交换 remote data exchange通过数据网络,数据采集中心与一台或一组费率装置之间的数据交换。
3.7主站master station具有选择从站并与从站进行信息交换功能的设备。
本标准中指手持单元或其它数据终端设备。
3.8从站slave station预期从主站接收信息并与主站进行信息交换的设备。
本标准中指费率装置。
3.9总线bus连接主站与多个从站并允许主站每次只与一个从站通信的系统连接方式(广播命令除外)。
DL_T645_2007_多功能电能表通信规约(含备案文件)
1应用层1.1读数据1.1.1主站请求帧·a) 功能:请求读电能表数据·b) 控制码:C=11H·c) 数据域长度:L=04H+m(数据长度)·d) 帧格式1(m=0):地址域控制码数据域长度数据标识·e) 帧格式2(m=1,读给定块数的负荷记录):·f) 帧格式3(m=6,读给定时间、块数的负荷记录):分时日月年1.1.2从站正常应答·a) 控制码:C=91H 无后续数据帧;C=B1H 有后续数据帧。
·b) 数据域长度:L=04H+m(数据长度)。
·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:如果没有满足条件的负荷记录,从站按正常应答帧格式返回(数据域只有数据标识,数据域长度为4)。
1.1.3从站异常应答帧·a) 控制码:C=D1H·b) 数据域长度:L=01H·c) 帧格式:错误信息字注:错误信息字ERR见附录C。
1.2读后续数据1.2.1主站请求帧·a) 功能:请求读后续数据·b) 控制码:C=12H·c) 数据域长度:L=05H·d) 帧格式:1.2.2从站正常应答帧·a) 控制码:C=92H 无后续数据帧;C=B2H 有后续数据帧。
·b) 数据域长度:L=05H+m(数据长度)·c) 无后续数据帧格式:·d) 有后续数据帧格式:注:读后续数据时,为防止误传、漏传,请求帧、应答帧都要加帧序号。
请求帧的帧序号从1开始进行加1计数,应答帧的帧序号要与请求帧相同。
帧序号占用一个字节,计数范围为1~255。
1.2.3从站异常应答帧·a) 控制码:C=D2H·b) 数据域长度:L=01H·c) 帧格式:1.3写数据1.3.1主站请求帧·a) 功能:主站向从站请求设置数据(或编程)·b) 控制码:C=14H·c) 数据域长度:L =04H+04H(密码)+04H(操作者代码)+m(数据长度)·d) 数据域:DI O DI1DI2DI3+PAP0P1P2+C0C1C2C3+DATA·e) 帧格式:注1:P0P1P2为密码,PA表示该密码权限。
通讯规约的区别
CDT、Modbus、103、101、104、DL/T645通讯规约的区别目前电力系统主要为有线通讯,其中包括串口,网口,光口。
分布式光伏有时还会用到无线通讯。
通讯的规约种类也是比较多,下面我将做一下简单的说明。
串口通讯目前经常使用串口通讯的还是比较多的,因为串口通讯还是比较稳定,屏蔽线有抗干扰作用。
而且在国内使用比较早,认可度比较高。
常用串口通讯的规约有CDT 规约、DISA 规约(CDT规约升级版)、modbus规约串口、103规约、调度101规约、DL/T645等。
1)CDT规约是一种使用比较早的规约,报文类型是广播式的,及子站会通过通讯线向通讯管理机广播报文,再由通讯管理机将规约转换成后台上位机可以识别的报文,从而解析出来,显示在上位机上。
DISA规约是CDT规约衍生版,它的规约包含遥测点,遥信点的数量要比原有的CDT规约要多。
报文格式没有明显区别。
接线方式为RS-232。
即收、发、2)Modbus通讯是一种常见的通讯,使用比较广泛。
使用的也是屏蔽双绞线,即RS-485。
这种通讯方式通讯距离比较长。
理论上可以达到1000多米,当然这也要根据厂家通讯管理便于调试过程中查找问题。
机通讯用的是103规约。
这种规约可以将微机保护内点无误差的上送,包括总招和变位数据。
作为站内保护设备具备103通讯功能是基本前提。
4)101通讯作为调度通讯规约。
在现场的接线有时候为四线制,有时候为三线制。
这种规约目前用在地调上。
将数据通过数据网柜传到地调中心。
5)DL/T645规约通常用于电度表上,不做多余解释。
如下图所示:该图为我公事的设计图纸上的485通讯。
网口通讯网口通讯目前用的也是比较广泛,它的是传输速率高。
目前常用的规约有104规约、网口103规约、modbu TCP规约等,以下将做一下简单介绍。
1)104规约是目前常用的远动及集控规约,该规约规定的数据量一般可以满足现场的实际要求,一般省调经常会使用。
但是不乏一些地调也会将104规约作为首选。
vbs通过串口485读取电表数据dlt645-2007规约
Case Else
getdianbiaoapi = getdiangongliyinsu(jieshoushuju)
End Select
getdianya = (Hex(tempdys) * 100 + Hex(tempdye)) / 10
End Function
Function getdianliang(txt1)'取电量
tempdy1 = sixtytoten(Mid(txt1,43,2))
tempdy2 = sixtytoten(Mid(txt1,41,2))
Comm.RTSEnable = False
Comm.PortOpen = True '打开串口
Comm.Output = bytes
WScript.sleep 800
strBuffer = Comm.Input
If Len(strBuffer) > 0 Then
End Select
dbsendno = "68 " & dbnook & " " & orderd
'vbs十六进制字节数组
sendtxt = "FE FE FE FE " & dbsendno & " " & getjyh(dbsendno) & " 16"
Comm.Handshaking = 0
Comm.InputMode = 1 '工作方式 0文本方式1二进制方式
电度表部颁DL645-07规约说明
电度表部颁DL645-07规约说明想自己设计电表吗?先看看规约吧!DL/T645-2022年多功能电能表通信协议(一)十月4, 2022年前言本标准是根据《国家发展改革委办公厅关于印发2022年行业标准项目计划的通知》(发改办工业[2022年]1093号)的安排,对DL/T 645-1997《多功能电能表通信规约》的修订。
制定本标准是为统一和规范多功能电能表与数据终端设备进行数据交换时的物理连接和协议。
信息量的确定以DL/T 614-2022年《多功能电能表》为依据。
本标准与前一版本相比,主要差别如下:――调整物理层通信接口参数与GB/T __.1-2022年《自动抄表系统低层通信协议第1部分:直接本地数据交换》定义一致;――控制码重新定义,增加读通信地址、冻结、电表清零、事件清零命令;――应用层强调对特殊命令帧的密码验证,要求从站记录操作者代码;――数据标识由原来的2字节改为4字节表示,完善事件记录、冻结量、负荷记录的具体抄读规则。
本标准的实施将规范多功能电能表的通信接口,有利于计量产品质量的提高,对用电管理部门改革人工抄表,实现远方信息传输,提高用电管理水平起到推进作用。
本标准的附录A、附录B和附录C是规范性附录。
本标准的附录D、附录E是资料性附录。
本标准实施后代替DL/T 645-1997。
本标准由中国电力企业联合会提出。
本标准由电力行业电测量标准化技术委员会归口并负责解释。
本标准负责起草单位:中国电力科学研究院。
想自己设计电表吗?先看看规约吧!本标准参与起草单位:国家电网公司、河南电力公司、甘肃电力公司、湖北电力公司、湖南电力公司、江苏电力公司、浙江电力公司、华立仪表集团、浙江正泰仪器仪表有限责任公司、长沙威胜电子有限公司、浙江万胜电力仪表有限公司、深圳科陆电子有限公司。
本标准主要起草人:史树东、姜洪浪、曾海鸥、马利人、杨晓科、张亚东、刘绍新。
本标准于1998年2月10日首次发布。
本次为第一次修订。
DLT645协议
DLT645协议协议名称:DLT645协议一、引言DLT645协议是一种用于数据采集、通信和控制的通信协议,适用于电力行业中的智能电表和相关设备。
本协议旨在确保数据的准确传输和保护,以提高电力系统的效率和安全性。
二、范围本协议适用于使用DLT645协议进行数据采集、通信和控制的智能电表和相关设备。
三、术语和定义1. DLT645协议:指本协议的规范和约定。
2. 智能电表:指采用DLT645协议进行数据采集、通信和控制的电力计量设备。
3. 数据采集:指智能电表通过DLT645协议获取电力计量数据的过程。
4. 数据传输:指智能电表通过DLT645协议将采集到的数据传输给上位系统的过程。
5. 控制命令:指通过DLT645协议向智能电表发送控制指令的过程。
四、协议规范1. 数据格式a. 通信数据采用二进制格式进行传输。
b. 数据帧由起始字符、数据内容和校验码组成。
c. 起始字符标识数据帧的开始,校验码用于验证数据的完整性。
d. 数据内容包括地址码、命令码、数据域和校验码。
2. 数据采集a. 智能电表应按照DLT645协议要求提供数据采集功能。
b. 数据采集命令由上位系统发送给智能电表,智能电表按照命令进行数据采集并返回结果。
c. 数据采集结果应包括电能数据、电压数据、电流数据等,具体内容根据需求而定。
3. 数据传输a. 智能电表应按照DLT645协议要求提供数据传输功能。
b. 数据传输命令由上位系统发送给智能电表,智能电表按照命令将采集到的数据传输给上位系统。
c. 数据传输应具备数据加密和数据压缩功能,以确保数据的安全和高效传输。
4. 控制命令a. 智能电表应按照DLT645协议要求提供控制命令功能。
b. 控制命令由上位系统发送给智能电表,智能电表按照命令进行相应的操作。
c. 控制命令涉及的操作包括开关控制、参数设置等,具体操作根据需求而定。
五、安全性要求1. 数据加密a. 数据传输过程中,应采用加密算法对数据进行加密,以防止数据被非法获取和篡改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/****************************************************************************** ****************************** @Copyright (C) 2009 by Technology Department of Ever Power** @File: dp2.c** @Description: moxa da660-8/da660-16 dl645 interface/////////////点表信息///////////////////////////* 0 DT_ZXYGZ, // 正向有功总电能* 1 DT_FL1ZXYG, // 费率1正向有功* 2 DT_FL2ZXYG, // 费率2正向有功* 3 DT_FL3ZXYG, // 费率3正向有功* 4 DT_FL4ZXYG, // 费率4正向有功* 5 DT_ZXWGZ, // 正向无功总电能* 6 DT_FL1ZXWG, // 费率1正向无功* 7 DT_FL2ZXWG, // 费率2正向无功* 8 DT_FL3ZXWG, // 费率3正向无功* 9 DT_FL4ZXWG, // 费率4正向无功* 10 保留* 11 保留* 12 保留* 13 保留* 14 保留* 15 保留* 16 保留* 17 保留* 18 保留* 19 保留** @History :Version Author Date Comment1.00 cc 2009-03-12 Wrote it.1.10 cc 2009-04-03 增加版本号显示1.20 cc 2009-08-17 为适应main2.0版本修改1.30 cc 2009-11-20 增加对带前导字符的电表支持******************************************************************************* *******************************/#include <stdio.h>#include <stdlib.h>#include <netinet/in.h>#include <sys/time.h>#include <errno.h>#include <time.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h> //inet_addr()#include <semaphore.h>//#define NDEBUG //屏蔽assert#include <assert.h>#define DEBUG#include "../Comm.h"#include "dl645.h"#define INTERFACE_NAME "dl645"#define VERSION "1.30"#define BUFFER_LEN 1024struct timeval tv;//testchar bCheckTime[MAX_COMCOUNT] = {0,0};//端口是否校时struct sockaddr_in from[MAX_ETHCOUNT], to[MAX_ETHCOUNT];enum DataType{DT_NULL = -1, // 无效数据块标识;DT_ZXYGZ, // 正向有功总电能DT_FL1ZXYG, // 费率1正向有功DT_FL2ZXYG, // 费率2正向有功DT_FL3ZXYG, // 费率3正向有功DT_FL4ZXYG, // 费率4正向有功DT_ZXWGZ, // 正向无功总电能DT_FL1ZXWG, // 费率1正向无功DT_FL2ZXWG, // 费率2正向无功DT_FL3ZXWG, // 费率3正向无功DT_FL4ZXWG, // 费率4正向无功};/*@brief 检查串口数据是否正确@param Buffer 字符串地址@param Length 字符串长度@param ptr_unit@return return 0 for success, on error return error code*/ComErrorType CheckComData(unsigned char* Buffer,int Length, UNIT *ptr_unit){int before = ptr_unit->nExternParam[2];int i = 0;unsigned char Sum = 0;if(Length==0) return CET_NOREPONSE;if (Buffer[0+before]!=0x68 || Buffer[7+before]!=0x68) return CET_HEAD;if(Buffer[1+before] != ptr_unit->addr/10*16 + ptr_unit->addr%10) return CET_ADDRESS;if(Length<8) return CET_TIMEOUT;// if(Length<Buffer[7+before]+9) return CET_TIMEOUT;// if(Length>Buffer[7+before]+9) return CET_OTHERDA TA;for(i=0+before; i<Length-2; i++){Sum += Buffer[i];}if(Sum != Buffer[Length-2]) return CET_SUM; //校验码错误if (Buffer[Length-1] != 0x16) return CET_HEAD;return CET_NOERROR;}//-------------数据采集--------------//int TaskCallData(UNIT* ptr_unit,int nUnitNum){int nPortID = ptr_unit->ptr_port_param->nPortID;unsigned char buffer_receive[BUFFER_LEN]={0};unsigned char buffer_send[BUFFER_LEN]={0};int length_receive = 0;int length_send = 0;int i = 0;int nDataType = -1;int before = ptr_unit->nExternParam[2];int return_code = 0;RECEIVE_FLAG flag;if (ptr_unit->used==0 && ptr_unit->nExternParam[0]==0){return 0;}if (ptr_unit->nExternParam[0]==1){ptr_unit->nExternParam[0] = 0;}buffer_send[0] = 0x68;//起始字符buffer_send[1] = ptr_unit->addr/10*16 + ptr_unit->addr%10;//地址BCD码buffer_send[2] = 0;buffer_send[3] = 0;buffer_send[4] = 0;buffer_send[5] = 0;buffer_send[6] = 0;buffer_send[7] = 0X68;//起始字符buffer_send[8] = 0X01;//控制码buffer_send[9] = 0X02;//数据域长度buffer_send[10] = 0X01;//控制码buffer_send[11] = 0X02;//数据域长度switch(ptr_unit->nExternParam[1]){case DT_ZXYGZ:buffer_send[10] = 0X43;buffer_send[11] = 0Xc3;break;case DT_FL1ZXYG:buffer_send[10] = 0X44;buffer_send[11] = 0Xc3;break;case DT_FL2ZXYG:buffer_send[10] = 0X45;buffer_send[11] = 0Xc3;break;case DT_FL3ZXYG:buffer_send[10] = 0X46;buffer_send[11] = 0Xc3;break;case DT_FL4ZXYG:buffer_send[10] = 0X47;buffer_send[11] = 0Xc3;break;case DT_ZXWGZ:buffer_send[10] = 0X43;buffer_send[11] = 0Xc4;break;case DT_FL1ZXWG:buffer_send[10] = 0X44;buffer_send[11] = 0Xc4;break;case DT_FL2ZXWG:buffer_send[10] = 0X45;buffer_send[11] = 0Xc4;break;case DT_FL3ZXWG:buffer_send[10] = 0X46;buffer_send[11] = 0Xc4;break;case DT_FL4ZXWG:buffer_send[10] = 0X47;buffer_send[11] = 0Xc4;break;}ptr_unit->nExternParam[1] ++;if (ptr_unit->nExternParam[1] == DT_FL4ZXWG+1) {ptr_unit->nExternParam[1] = DT_ZXYGZ;}buffer_send[12] = 0;for(i=0;i<12;i++){buffer_send[12] += buffer_send[i];}buffer_send[13] = 0x16;length_send = 14;SendData(buffer_send,length_send,ptr_unit);flag.flag_disable_unit = 1;flag.flag_print = 0;flag.flag_first = 0;flag.times = 50;leep_time = 20;return_code= receive_data(buffer_receive, &length_receive, ptr_unit, nUnitNum, CheckComData, flag);if(ptr_unit->flag_communication_error){mem_DI[ptr_unit->start_DI/8] = mem_DI[ptr_unit->start_DI/8] | 0X80;//第8个开关量赋1return 0;}else{mem_DI[ptr_unit->start_DI/8] = mem_DI[ptr_unit->start_DI/8] & 0x7F;//第8个开关量置0}if (return_code != RRC_SUCCESS) return ;if (buffer_receive[8+before] == 0x81) //保存电度量{if (buffer_receive[11+before] == 0xc3){switch(buffer_receive[10+before]){case 0X43://DT_ZXYGZ:nDataType = 0;break;case 0X44://DT_FL1ZXYG:nDataType = 1;break;case 0x45://DT_FL2ZXYG:nDataType = 2;break;case 0x46://DT_FL3ZXYG:nDataType = 3;break;case 0x47://DT_FL4ZXYG:nDataType = 4;break;}}else if (buffer_receive[11+before] == 0xc4){switch(buffer_receive[10+before]){case 0x43://DT_ZXWGZ:nDataType = 5;break;case 0x44://DT_FL1ZXWG:nDataType = 6;break;case 0x45://DT_FL2ZXWG:nDataType = 7;break;case 0x46://DT_FL3ZXWG:nDataType = 8;break;case 0x47://DT_FL4ZXWG:nDataType = 9;break;}}if (nDataType==-1) return 0;mem_AIl[ptr_unit->start_AIl+nDataType] = (buffer_receive[12+before]/16*10 + buffer_receive[12+before]%16 -33)*0.01+(buffer_receive[13+before]/16*10 + buffer_receive[13+before]%16 -33)*1+(buffer_receive[14+before]/16*10 + buffer_receive[14+before]%16 -33)*100+(buffer_receive[15+before]/16*10 + buffer_receive[15+before]%16 -33)*10000;}// if (nDataType == 0)// dbg_printf("%d %d %d %d dd1=%f \n",buffer_receive[12],buffer_receive[13],buffer_receive[14],buffer_receive[15], mem_AIl[0]);return 0;}int ProtocolInit(PORT_PARAM *ptr_port_param, PROTOCOL_PARAM *ptr_protocol_param) {int nPortID = ptr_port_param->nPortID;PROTOCOL_VERSION protocol_version;protocol_version.interface_name = __FILE__;protocol_version.version = VERSION;protocol_version.version_header = VERSION_HEADER;protocol_version.time = __TIME__;protocol_version.date = __DATE__;check_version(ptr_port_param,&protocol_version);ptr_port_param->from.sin_addr.s_addr = inet_addr(ptr_port_param->sor_IP);ptr_port_param->from.sin_family = AF_INET;ptr_port_param->from.sin_port = htons((unsigned short)ptr_port_param->sor_port);ptr_port_param->to.sin_addr.s_addr = inet_addr(ptr_port_param->dest_IP);ptr_port_param->to.sin_family = AF_INET;ptr_port_param->to.sin_port = htons((unsigned short) ptr_port_param->dest_port);// bCheckTime[nPortID] = 1;//初始化启动端口校时return 0;}int UnitInit(UNIT *ptr_unit)//初始化及任务时间分配表{/*start_AIs|start_AIl|start_DI|start_SOE|start_operate|空|空|YxTranTabl 低八位nExternParam0-7 高八位*/ptr_unit->type = 0x0406;ptr_unit->nTaskCount = 2; //任务数ptr_unit->task[0].type = 1; //定时任务ptr_unit->task[0].time = 4; //正常任务间隔ptr_unit->task[1].type = 1; //定时任务ptr_unit->task[1].time = 100;//复活任务间隔ptr_unit->nErrorCount = 0; //通讯错误次数//如果需要自动计算地址,ptr_unit[j].relative_addr != -1下边才有效ptr_unit->start_AIs = YC_ADDR(ptr_unit->relative_addr);ptr_unit->start_AIl = DD_ADDR(ptr_unit->relative_addr);ptr_unit->start_DI = YX_ADDR(ptr_unit->relative_addr);ptr_unit->start_SOE = SOE_ADDR(ptr_unit->relative_addr);ptr_unit->start_operate = YK_ADDR(ptr_unit->relative_addr);//以下参数可通过配置文件修改,如果配置文件没有对应项,则对应项的值以以下初始化值为准。