1 前言:

DL/T 645-2007《多功能电能表通信规约》,统一和规范多功能电能表与数据终端设备进行数据交换时的物理连接和协议。信息量的确定以DL/T 614—2007《多功能电能表》为依据。数据链路层 (data-link layer)负责数据终端设备与多功能电能表之间通信链路的建立并以帧为单位传输信息,保证信息的顺序传送,具有传输差错检测功能。应用层(application layer)利用数据链路层的信息传递功能,在数据终端设备与多功能电能表之间发送、接收各种数据信息。

2 DL/T645-2007通信规约下主从站报文数据通信传输流程

3 数据链路层

3.1 数据链路层的功能

负责数据终端设备与多功能电能表之间通信链路的建立并以帧为单位传输信息,保证信息的顺序传送,具有传输差错检测功能。

DL/T 645-2007《多功能电能表通信规约》为主-从结构的半双工通信方式。手持单元或其它数据终端为主站,多功能电能表为从站。每个多功能电能表均有各自的地址编码。通信链路的建立与解除均由主站发出的信息帧来控制。每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成。每部分由若干字节组成。

3.2 字节格式

每字节含8位二进制码,传输时加上一个起始位(0)、一个偶校验位和一个停止位(1), 共 11位。其传输序列如图7所示。D0 是字节的最低有效位,D7 是字节的最高有效位。先传低位,后传高位,0D0D1D2D3D4D5D6D7P1。起始位8位数据偶校验位停止位传送方向。

图为字节传输序列

3.3 帧格式

3.3.1 帧起始符固定为 68H

3.3.2 地址域A0~A5

地址域由6个字节构成,每字节2位BCD码, 低地址字节在先,高地址字节在后。当使用的地址码长度不足6字节时,高位用十六进制AAH或00补足6字节,根据电表厂家要求选择。当地址为999999999999时,为广播地址。

3.3.3 数据域DATA

数据域包括 数据标识 和 数据等。传输时发送方按字节进行加0x33处理,接受方按字节进行减33H处理。

3.3.3.1数据区的第1,2个字节是数据标识:

目前我们使用的程序是读4种电量的数据块,共20个电量.

查询命令的数据区只包含2个字节的数据标识, 应答报文的数据区包含: 类型标识 + 电度数据。

3.3.3.2以上每种数据块包含5个电量, 依次是: 总电能, 尖峰, 峰, 平, 谷

3.3.4校验码CS

从帧起始符开始到校验码之间的所有字节的算术和,模256。不计超过256的溢出值。

3.3.5 结束符16H

标识一帧的结束,其值为16H.

4 DL/T 645-2007《多功能电能表通信规约》报文分析

根据DL/T 645-2007《多功能电能表通信规约》,主站在发送帧信息之前,先发送3个字节0xFE以唤醒接收方。地址域和数据均先传送低位字节,后传送高位字节。

电度值的4个字节都是按 +33H传送.

对于配地址文件(.gy)的, 以表地址为“ 156237191832 ”为例进行相应的报文分析。

4.1 主站查询“正向有功数据块”

分析: 两个68之间的6个字节是地址,第11,12个字节是数据标识:0x52 0xc3分别减0x33后为 0x1f 0x90 表示正向有功。(注:数据区的第1,2个字节是数据标识“0x1f 0x90”表示正向有功数据块)

每种数据块传5个电度值,依次为: 总正向有功, 尖峰, 峰, 平, 谷。其对应的数据如下:

4.2 主站查询“反向有功数据块”

分析: 两个68之间的6个字节是地址0x62 0xc3 是数据标识分别减0x33后为 0x2f 0x90表示反向有功。(注:数据区的第1,2个字节是数据标识“0x2f 0x90”表示反向有功数据块)

每种数据块传5个电度值,依次为: 总反向有功, 尖峰, 峰, 平, 谷

4.3 查询“正向无功数据块”

4.4 查询“反向无功数据块”

分析: 两个68之间的6个字节是地址0x62 0xc4 是数据标识, 减0x33后为 0x2f 0x91表示反向无功(注:数据区的第1,2个字节是数据标识“0x1f 0x91”表示正向无功数据块)

每种数据块传5个电度值,依次为: 总反向无功, 尖峰, 峰, 平, 谷

ab 89 67 45, 分别 -0x33后是 78 56 34 12 , 实际值就是12345678

54 46 47 48, 分别 -0x33后是 21 13 14 15 , 实际值就是15141321

33 33 33 33, 分别 -0x33后是 00 00 00 00 , 实际值就是0

c语言 解析通信报文,基于DL/T645—2007通信规约报文的分析相关推荐

  1. Kubernetes网络技术解析之Pod基于路由模式的通信实现

    前言 Kubernetes集群内,Pod之间可以通信,是Kubernetes网络实现的重要场景之一. Kubernetes通过CNI提供统一的接口和协议,使得我们在使用中可以根据需求自行选择不同的网络 ...

  2. 网络与通信程序设计-基于UDP的广播通信实例

    目录 实验内容和设计思想 实验的内容 UDP的设计思想 UDP的协议头部 UDP通信编程思想 UDP的工作流程 UDP编程收发函数 广播通信 广播模式设置 广播套接字 UDP Socket的使用过程 ...

  3. python2 python3 通信_基于Python的串口通信(2)

    2pyvisa 2.1安装pyvisa 2.1.1source安装 (1) 下载pyvisa ① 说明文档: ② 下载链接: (2) 解压 ① 命令解压 cd /xxx/xxx/pyvisa-mast ...

  4. 【通信】基于matlab的OFDM-MIMO通信建模与仿真

    1 简介 交频分复用(OFDM)作为一种多载波数字通信方案,是第四代移动通信的核心技术.本文介绍了OFDM基本原理,建立了其通信系统模型,并利用Matlab实现了整个系统的动态仿真.仿真结果表明,该系 ...

  5. 【跳频通信】基于MATLAB的跳频通信系统仿真

    1.软件版本 matlab2015a 2.系统程序 clc; clear; close all; warning off; addpath 'func\' addpath 'func\mfiles\' ...

  6. 【通信】基于Matlab模拟Link16通信战术数据链分析

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  7. 【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信

    接下来的内容,我会以从头开发一个简单的基于modbus tcp通信的案例,来实现一个基础的通信功能. 有关环境: 开发环境:VS 2022企业版 运行环境:Win 10 专业版 .NET 环境版本:. ...

  8. DL/T645规约解析

    摘要:DL/T645规约是针对电表通信而制定的通信协议,主要有两个版本,分别是DL/T645-97和DL/T645-07,97代表是97年制定的协议,07则是2007年修正后的协议,而且基本上07版出 ...

  9. DL/T645、DL/T698.45协议详解

    用电信息采集系统简述 用户用电信息采集系统是通过对配电变压器和终端用户的用电数据的采集和分析,实现用电监控.推行阶梯定价.负荷管理.线损分析,最终达到自动抄表.错峰用电.用电检查(防窃电) .负荷预测 ...

  10. 基于.NET Socket API 通信的综合应用

    闲谈一下,最近和客户进行对接Scoket 本地的程序作为请求方以及接受方,对接Scoket 的难度实在比较大,因为涉及到响应方返回的报文的不一致性,对于返回的报文的格式我需要做反序列化的难度增大了不少 ...

最新文章

  1. 库克退休前的最后一战:不是苹果汽车而是……
  2. java和python可以在一个项目中同时使用么-可以同时用python和java开发一个app吗?...
  3. IP地址的三种表示格式 及 在Socket编程中的应用
  4. oracle set markup,oracle sql*plus set spool介绍(二)
  5. 算法(伪代码)的书写
  6. CISSP的成长之路(二十一):用户持有凭证
  7. 淘宝弹性布局方案lib-flexible实践
  8. java实训遇到问题解决_「instantiationexception」关于java出现 java.lang.InstantiationException异常的分析与解决方案 - seo实验室...
  9. element 搜索匹配_分享一个element-ui级联选择器的搜索问题,顺便问下有没有解决方案。...
  10. 记录——《C Primer Plus (第五版)》第十一章编程练习第三题
  11. jidnserror.wo.com.cn:8080错误解决方法
  12. 设计模式学习笔记(六:责任链模式)
  13. 2022年深圳有哪些好玩的小镇古城推荐
  14. 用DialogBox生成的对话框一开始就隐藏起来
  15. 3ds Max Taper、Twist和Bend的运用——衣架的制作
  16. ArcGIS 把字段允许空值设为否
  17. 查询京东快递物流状态,快速筛选出代收的单号
  18. mac finder 如何查看隐藏文件夹
  19. 自己动手做聊天机器人 一-涉及知识
  20. 小米嵌入式软件工程师笔试题目解析

热门文章

  1. Day.js 是一个仅 2kb 大小的轻量级 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样,dayjs...
  2. 鉴客 C# 抓取页面(带认证)
  3. 802.11n 重新扬帆
  4. docker compose入门
  5. springboot的if else过多解决方案
  6. ArrayList的动态扩容机制
  7. React Native重构路线图发布!
  8. 使用docker-compose 大杀器来部署服务 上(转)
  9. Java运算符和类型转换
  10. yum grouplist 安装gnome桌面环境