电表的698通信协议

news2024/11/17 5:46:41

原文连接:https://blog.csdn.net/ss86655/article/details/109997891

该协议规定了用电信息的数据交换过程,一般用于主站与电能表之间、终端与电能表之间的数据交换,主站与终端一般用不同的客户机地址来区分。

1、通信架构

有两种方向的数据交换。

  1. 是请求/响应类型的数据交换,主机请求从机,从机提供响应,涉及到读取、设置、操作、代理等服务。
  2. 通知/确认类型的数据交换,从机主动上报,主机回复确认,涉及到上报服务,在开发过程中,主机指客户机,包括主站(某上位机)或终端(集中器),从机指服务器,这里就是电表。

二:帧结构

(1)698采用异步传输,不需要接收方和发送方时钟的同步,会有起始字符,结束字符。帧格式如图:

在这里插入图片描述

举例:

68 1f 00 43 05 08 00 00 00 00 00 10 b5 0b 06 01 04 40 00 02 00 1c 07 e0 09 0b 12 1e 00 00 05 69 16
①.起始的68:代表字符的起始码;
②.末尾的16:代表结束字符。
③1f 00:长度域,由2字节组成,取bit0-bit13,指除起始字符和结束字符之外的帧字节数。注意此处实际应为00 1f,因为我用到的上位机软件设计如此。这里指这一串数据有1f字节,即31字节。
④ 43:控制域,1字节,定义如下图,16进制的43转为二进制即:01000011。
在这里插入图片描述
4.1 bit7和bit6组合的意义如下图:
在这里插入图片描述
4.2 功能码定义如下图:
在这里插入图片描述
可看出来该帧是由客户机发起一个请求,功能码为应用连接管理及数据交换服务,实际上,这也是用得最多的一个功能码。

⑤ 05 08 00 00 00 00 00:服务器地址。服务器地址定义如下:
在这里插入图片描述
bit0-bit3:地址字节数,注意此处是加1表示字节长度

bit4-bit5:逻辑地址

bit6-bit7:0表示单地址,1表示通配地址,2表示组地址,3表示广播地址

此处05 08 00 00 00 00 00中,05表示单地址,地址长度为5+1,08 00 00 00 00 00表示真实地址00 00 00 00 00 08.

⑥ 10:客户机地址16.

⑦ b5 0b:帧头校验,是对帧头部分除起始字符和帧头检验本身之外的所有字节的校验

⑧.06 01 04 40 00 02 00 1c 07 e0 09 0b 12 1e 00 00:应用层数据。此处含义下面讲。

⑧05 69:帧校验,是对整帧除起始字符、结束字符和帧校验本身之外的所有字节的校验。

3、应用层:
(1)对于RS485、红外、载波等通信通道,当物理连接建立后,预连接的通道即存在,不需额外建立预连接。

(2)读取:698标准是面向对象的,一个对象对应一个唯一的标识,对象标识有两字节组成。下面以主机发出读取日期的请求,从机响应当前日期为例说明。

请求APDU:05 01 08 40 00 02 00 00

响应APDU:85 01 08 40 00 02 00 01 1C 07 E4 08 06 12 29 19 00 00

请求:

①05:表示读取

②01:表示读取一个对象属性

③08:服务优先级,响应帧里将此数据回复给主机

④40 00 02 00:OAD,表示对象标识,在698标准里40 00表示为日期时间的对象,02表示要读取它的属性参数,00表示特征、索引等,在正向有功等电能数据处就有用到。

⑤00:表示无时间标签。

响应:

①85:表示回复

②01:表示回复一个对象属性

③08:服务优先级

④40 00 02 00:表示日期时间属性值这个对象

⑤01:表示结果类型,1为数据,0表示出错

⑥1c 07 e4 08 06 12 29 19:1c表示时间数据的类型,后面那一串就是真正的日期数据,为2020-08-06 18:41:25,读者可自行换算一下。

⑦00:表示无跟随上报信息

⑧00:表示无时间标签

(3)设置:同样地以设置时间为例说明

请求:06 01 2E 40 00 02 00 1C 07 E4 08 06 12 2B 28 00

①06:表示设置

②01:表示设置一个对象属性

③2e:服务优先级,响应帧里将此数据回复给主机

④40 00 02 00:OAD,表示对象标识,表示为日期时间的对象,02表示要读取它的属性参数,00表示特征、索引。

⑤1C 07 E4 08 06 12 2B 28:1c表示时间数据的类型,表示设置时间为2020-08-06 18:41:25

⑥00:无时间标签

响应:86 01 2E 40 00 02 00 00 00 00

①86:表示回复设置

②01:表示回复一个对象属性

③2e:服务优先级

④40 00 02 00:表示日期时间属性值这个对象

⑤00:表示设置成功

⑥00:无跟随上报信息

⑦00:无时间标签

(4)操作:实际为执行对象标识的方法。以清除瞬时冻结关联属性表为例,进行说明

请求:07 01 07 50 00 08 00 00 00

①07: 表示操作

②01:表示一个对象

③07:服务优先级

④50 00 08 00:OMD,表示瞬时冻结的08方法,即清除关联属性。

⑤00 :表示使数据为空

⑥00:无时间标签

响应:87 01 07 50 00 08 00 00 00 00 00

①87: 表示操作回复

②01:表示一个对象

③07:服务优先级

④50 00 08 00:OMD,表示瞬时冻结的08方法,即清除关联属性。

⑤00 :表示操作成功

⑥00:数据为空

⑦00:无跟随上报

⑧00:无时间标签

实际上,以上的读取、设置、操作等方法都是举了简单的例子,但看懂了这些报文,其它都是在这个的基础上面扩展的,包括但不限于读取记录型数据、读取若干个属性、设置若干个属性、操作若干个方法后读取若干个方法等服务。

698的特殊之处

在我看来,698与一般的通信协议无异,建立在不同的物理层上,可以是485、红外、载波甚至是TCP/IP等通信通道。如以上所解释,其帧头虽有特定含义,无非是起始字符、长度域、控制域、地址域加帧头校验,帧尾则是简单的帧校验加结束字符,整个帧格式也并不难理解。只是698在应用层和连接机制里定义了自己的一套规则,这是一套不同于645的、基于面向对象建模方法的规则,我对645的了解不多,大概知道645的数据标识系统是基于直接引用的,而698的数据标识系统基于直接引用和间接引用。举个例子,数据标识0010表示正向有功电能,使用数据标识2021表示数据冻结时间,使用数据标识5002表示分钟冻结,其中分钟冻结是一个集合对象,里面包含了一些基本对象属性ABC…,也可以按需添加,当我要读当前正向有功电能的时候,我可以使用…05…0010…,这是直接引用,其中05表示读取;当我要读分钟冻结里某个数据冻结时间正向有功电能的时候,基于698,我可以使用…05…5002…2021…0010…,这个对象里的对象来间接引用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux系统中代码突然无法执行,没有权限访问文件,但是可以在文件管理器中查看文件

前言 这段时间遇到了一个非常离谱的问题,我的只要设计移动硬盘中数据的所有代码突然无法运行,我折腾了很久一直觉得是移动硬盘坏了,但拿到其他电脑上去是可以运动的。今天终于偶然发现了问题。 直接说结论: 移动硬盘的挂载点变了…

SQL-DML、DQL查询数据

SQL-DML、DQL查询数据 1 DML DML主要是对数据进行增(insert)删(delete)改(update)操作。 1.1 添加数据 给指定列添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);给全部列添加数据 INSERT…

MySQL数据库性能优化技巧介绍

MySQL是目前最流行和广泛使用的开源关系型数据库之一,随着数据量的增长和访问负载的提高,优化数据库性能变得至关重要,以确保系统能够高效地处理大量的并发请求。本文将记录一些MySQL数据库性能优化的技巧,提高数据库的运行效率&a…

程序员——应届生毕业,竟有20k高薪岗位?!

马士兵优极限训练营让我在技术和个人能力上都有了很大的提升。在未来的职业生涯中,我会继续努力,不断学习和成长,为自己和社会做出更大的贡献 01 选择大数据 只因更有前景 我是计算机专业出身,但是在大学的时候我对大数据行业更…

vue3 ---- 递归组件生成menu菜单 路由守卫鉴权

目录 递归组件​ el-menu 父组件 子组件 路由 Vue路由守卫实现登录鉴权 全局守卫 路由独享的守卫 组件内的守卫 完整的导航解析流程 对于一些有规律的DOM结构,如果我们再一遍遍的编写同样的代码,显然代码是比较繁琐和不科学的,而且…

5个有效方法教你如何正确使用云渲染,防错必备!

随着技术的进步和计算能力的提升,云渲染成为了现代计算机图形学和动画制作中不可或缺的一环。无论是在电影、游戏还是建筑可视化等领域,渲染图像的质量和效率都对最终结果有着巨大的影响。然而,云渲染也面临着一些潜在的问题,如渲…

一文看懂B TREE和B+TREE数据结构实现过程及数据存储结构

概述 一文看懂B TREE和BTREE数据结构实现过程及数据存储结构 一、B tree数据结构实现过程 这里有一个陌生区关于 Max. Degree,这个你可以理解为阶,也可以理解为度,即B 树的阶数(一个节点存储的键的数量) 这里有一个陌生区关于…

简单上手!快速将另一个报表的页面添加到 FastReport .NET!

FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开…

ROS:古月居第一次作业(话题与服务编程、动作编程、TF编程)

一.话题与服务编程 话题与服务编程:通过代码新生一只海龟,放置在(5,5)点,命名为“turtle2”;通过代码订阅turtle2的实时位置并打印在终端;控制turtle2实现旋转运动; demo_turtle.l…

智能出行更安全,亚马逊云科技携手木卫四助汽车客户安全合规出海

木卫四(北京)科技有限公司在汽车网络安全领域拥有独特专业知识,其融合人工智能算法的安全检测引擎可以不依赖车辆中安装的代理软件,只需几周即可快速部署实施,是汽车网络安全领域的技术领先者。 在亚马逊云科技初创团…

消息中间件之ActiveMq安装

文章目录 前言安装下载地址安装 使用控制台调整配置文件 前言 2023年年中了,又遇到了老朋友activeMq,上次接触activeMq还是在15年的时候,系统中用到了这个消息中间件。 阔别8年之久,竟然又用到了这个老家伙! 安装 要…

【6.05 代随_48day】 打家劫舍、打家劫舍 II、打家劫舍 III

打家劫舍、打家劫舍 II、打家劫舍 III 打家劫舍1.方法图解步骤代码 打家劫舍 II1.方法代码 打家劫舍 III图解步骤代码 打家劫舍 力扣连接:198. 打家劫舍(中等) 1.方法 确定dp数组(dp table)以及下标的含义 dp[i]&am…

如何利用 Electron 快速开发一个桌面端应用

前言 一直以来都有听说利用electron可以非常便捷的将网页应用快速打包生成为桌面级应用,并且可以利用 electron 提供的 API 调用原生桌面 API 一些高级功能,于是这次借着论证环信 Web 端 SDK 是否可以在 electron 生成的桌面端正常稳定使用,…

基于国产器件的KCF跟踪算法实现与验证

在国产的FT-M6678 DSP上实现KCF算法是我研究生期间的主要工作,KCF算法的原理与实现已经在之前的文章以及我的Gitee仓库中有部分介绍。这里主要介绍DSP与上位机通信的方式,以及XDMA Linux驱动的使用。具体的设计细节可以看我的毕业设计补充材料。 SRIO与…

SpringBoot 使用validator进行参数校验(实例操作+注意事项+自定义参数校验)

一、实例操作 ①、引入依赖 <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.0.4.Final</version></dependency> ②、创建实体类 package com.springboot.entity;im…

蓝桥杯2022年第十三届决赛真题-出差

题目描述 A 国有 N 个城市&#xff0c;编号为 1 . . . N。小明是编号为 1 的城市中一家公司的员工&#xff0c;今天突然接到了上级通知需要去编号为 N 的城市出差。 由于疫情原因&#xff0c;很多直达的交通方式暂时关闭&#xff0c;小明无法乘坐飞机直接从城市 1 到达城市 N&a…

【教学类-10-03】20230603《空心图案3*2-单元格不重复》( 随机图案拼贴)(中班主题)

作品展示&#xff1a; 背景需求&#xff1a; 最近在做小课题结题资料&#xff0c;看到之前做过的几个学具项目&#xff0c;其中的空心图案拼贴画很不错&#xff08;中班上学期做过&#xff09;想到中6班的孩子还没有玩过&#xff0c;就想再打印一套学具&#xff08;中班下学期…

chat聊天系统消息消费时遇到的问题及优化思路(二)

1、前言 考虑下面几个条件下如何提升kafka的消费速度 消息要求严格有序&#xff0c;如chat聊天消息业务处理速度慢&#xff0c;如处理一条数据需要100ms分片不合理&#xff0c;如有的分区很闲&#xff0c;有的分区消息数量积压 2、解决方案 1、顺序问题 关于消息消费时存在…

leetcode701. 二叉搜索树中的插入操作(java)

二叉搜索树中的插入操作 leetcode701. 二叉搜索树中的插入操作题目描述 递归解题解题思路代码演示 二叉树专题 leetcode701. 二叉搜索树中的插入操作 原题链接&#xff1a; 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problem…

保护您的邮件安全:Exchange Reporter Plus 助您全面监控与审计

引言&#xff1a; 在当今数字化时代&#xff0c;电子邮件已成为我们日常生活和工作中不可或缺的沟通工具。然而&#xff0c;随着电子邮件的广泛使用&#xff0c;邮件安全也成为一个备受关注的议题。为了保护组织的敏感信息和防止数据泄露&#xff0c;我们需要一种强大的解决方…