DL/T 645与DL/T 698协议优劣对比与使用方法,一文看懂两者区别和使用方法!

张开发
2026/4/11 4:58:02 15 分钟阅读

分享文章

DL/T 645与DL/T 698协议优劣对比与使用方法,一文看懂两者区别和使用方法!
目录引言一、协议背景与设计哲学1.1 DL/T 645协议面向过程的“点对点”设计1.2 DL/T 698协议面向对象的“系统级”设计二、协议架构与技术特性对比2.1 帧结构与数据表示2.2 数据模型与扩展性2.3 通信方式与物理层支持三、安全机制对比3.1 DL/T 645的安全能力3.2 DL/T 698的安全体系四、应用场景与生态适配4.1 DL/T 645的适用场景4.2 DL/T 698的适用场景五、优劣综合评估与总结5.1 DL/T 645优势与局限5.2 DL/T 698优势与局限5.3 共存而非替代六、DL/T 645协议的使用方法6.1 硬件连接与物理层配置6.2 帧格式详解6.3 地址域的处理最容易出错的地方6.4 控制码6.5 数据域的加解密规则6.6 校验码的计算6.7 实战读取正向有功总电能的完整操作6.8 拉合闸控制示例6.9 上位机/嵌入式实现方案6.10 协议切换七、DL/T 698.45协议的使用方法7.1 核心概念理解“面向对象”7.2 帧结构比645复杂得多7.3 应用层服务APDU7.4 实战GET服务读取数据的完整操作7.5 地址域的灵活寻址7.6 预连接服务7.7 安全机制的使用7.8 上位机/嵌入式实现方案八、DL/T 645与DL/T 698使用方法的直观对比8.1 一个形象的类比九、使用中的常见问题与注意事项9.1 645协议的常见坑十、选型建议何时用645何时用698引言在中国的智能电网建设中电能表与主站系统之间的通信协议经历了从简单到复杂、从单一功能到多功能集成的演进过程。DL/T 645和DL/T 698作为两代最具代表性的电能表通信协议承载着不同历史阶段的技术需求与设计理念。前者是面向“单个电表”的本地化语言主要解决“怎么从一块电表里把数据读出来”的问题后者则是面向“整个台区”的系统级语言考虑的是如何高效、安全地管理成百上千块电表。两者并非简单的替代关系而是各有优劣、互为补充。本文将全面对比分析DL/T 645与DL/T 698协议深入剖析两者在设计理念、技术架构、功能特性、安全机制及实际应用场景上的差异与优劣。一、协议背景与设计哲学1.1 DL/T 645协议面向过程的“点对点”设计DL/T 645是中国电力行业为规范电能表与数据终端设备之间数据交换而制定的国家标准全称为《多功能电能表通信协议》目前工程实践中主流版本为DL/T 645-2007。其核心设计思想是“主从问答式”架构——整个通信过程中始终由一个“主站”发起请求扮演“提问者”的角色而“从站”电表则被动响应扮演“回答者”的角色一次完整的通信必定是“一问一答”。从设计哲学上看DL/T 645是一个典型的面向过程的协议。它将电表的各种测量值看作一个个独立的“点”并给每个点分配一个唯一的数据标识DI。通信方式就是简单的“读取某标识的数据”或“写入某标识的参数”。协议结构固定帧格式由帧头、地址域、控制码、数据域、校验码和结束符组成所有功能都固化在协议框架之中。1.2 DL/T 698协议面向对象的“系统级”设计DL/T 698.45-2017《电能信息采集与管理系统 第4-5部分通信协议——面向对象的数据交换协议》是国家电网公司为应对智能电网发展需求而推出的新一代通信标准。其核心理念源自国际标准IEC 61850采用面向对象的建模方法将设备功能抽象为接口类、对象与属性从根本上改变了数据交互的方式。在DL/T 698协议中“面向对象”的核心在于不再将设备看作一堆零散的数据点而是将其建模为一组具有属性和行为的对象。协议定义了26个标准接口类每个接口类由类标识码进行标识接口类的实例称为接口类对象每个对象对应于一个唯一的对象标识OI。例如“电能量接口类”class_id1包含了正向有功电能、反向有功电能、各费率电能等属性。这种设计使得数据有了天然的语义关联通信双方不再需要依赖外部“点表”来理解每个数据项的含义。二、协议架构与技术特性对比2.1 帧结构与数据表示DL/T 645帧结构DL/T 645的帧结构相对简单而固定。每帧以固定字节0x68开始后面依次是6字节地址域、1字节控制码、1字节数据长度、可变长度的数据域、1字节累加和校验码最后以0x16结束。地址域采用6字节BCD编码最多可表示12位十进制数通常直接对应电表铭牌上的表号。这种固定结构的优点是解析逻辑简单开发门槛极低嵌入式设备只需少量代码即可实现。但缺点同样明显数据域长度受限于1字节长度字段最大255字节实际使用中通常更小扩展性极差新增功能只能通过新增数据标识来实现且缺乏对数据语义的自描述能力。DL/T 698帧结构DL/T 698的帧结构更为复杂和灵活。帧头包含长度域L2字节、控制域C1字节、可变长度的地址域A和帧头校验HCS。链路用户数据域承载应用层协议数据单元APDU帧尾包含帧校验FCS和结束字符0x16。地址域采用可变长度设计格式为1个地址特征字节加上N个实际地址字节N1~16支持单地址、组地址、通配地址和广播地址等多种寻址方式。这种设计的优势在于长度域扩展为2字节最大可支持512字节的数据长度适应大规模数据交换需求地址结构灵活支持多层级设备寻址应用层APDU采用A-XDR编码规则带数据类型可自解析。但相应地帧结构复杂导致解析代码量大幅增加对嵌入式设备的处理能力要求更高。2.2 数据模型与扩展性DL/T 645固定标识扩展困难DL/T 645采用数据标识DI来定位数据每个数据标识对应一个固定的物理量或参数。例如DI00000000H代表当前正向有功总电能DI02010100H代表A相电压。这种方式简单直观但存在根本性缺陷通信双方必须依赖一份庞大的“点表”来约定每个地址代表什么含义协议本身不携带任何语义描述信息。当需要新增数据类型时只能在标准修订中追加新的DI且不同厂商对DI的扩展方式不一致导致互操作性问题。DL/T 698接口类对象灵活扩展DL/T 698通过“接口类IC→对象标识OI→属性标识PI→对象属性描述符OAD”的四级标识体系定位数据。协议定义了32个标准接口类涵盖电能量、瞬时量、事件记录、控制、设备信息、分布式能源等几乎所有电力数据采集场景。新增功能时只需定义新的接口类或在现有接口类中增加属性无需修改协议框架本身。这种设计使得DL/T 698具备极强的可扩展性能够灵活支持四表集抄水、电、气、热、分布式能源监控、电动汽车充电管理等新兴业务场景。2.3 通信方式与物理层支持对比维度DL/T 645DL/T 698通信架构主从式仅1主多从客户机/服务器物理接口RS-485、红外RS-485、红外、以太网、4G、载波波特率1200~9600 bps1200~115200 bps自适应通信模式请求/响应仅主站发起请求/响应通知/确认支持主动上报DL/T 645仅支持基于RS-485或红外的主从架构最高波特率9600 bps且从站只能被动响应无法主动上报事件。DL/T 698则支持多种物理层传输方式波特率可自适应至115200 bps并支持服务器主动上报的通知/确认模式当设备发生故障或事件时能主动向主站报告大幅提升了系统的实时响应能力。三、安全机制对比3.1 DL/T 645的安全能力DL/T 645协议在设计之初对安全性的考虑相对有限。协议本身不提供加密和认证机制实际系统中通常通过专用网络隔离、边缘网关安全策略和上层平台权限控制来保障通信安全。除数据回抄数据外所有数据可以明文抄读不支持安全模式修改和身份认证启用功能。在智能电网对数据安全要求日益提升的背景下这一短板愈发突出。3.2 DL/T 698的安全体系安全性是DL/T 698协议的核心设计之一。协议全面采用国密算法SM4实现了身份认证防止非法设备接入、数据加密通信内容无法被窃听和完整性校验数据无法被篡改三重保护。此外协议还内置了角色访问控制RBAC机制不同权限的操作员只能访问其授权范围内的数据和功能。大部分数据抄读需要明文加验证码所有数据可以指定安全模式支持身份认证启用功能启用后所有数据需加密身份认证后才能读取。这使得DL/T 698能够满足远程费控、敏感参数配置等高级应用的安全需求。四、应用场景与生态适配4.1 DL/T 645的适用场景DL/T 645的简洁性决定了它在以下场景中具有不可替代的优势传统远程抄表系统协议结构固定、命令集简洁明了开发门槛低适合对智能电表进行低频周期性数据采集。低资源嵌入式设备帧解析无需复杂计算内存和Flash占用小适合老旧电表和低成本终端设备。单设备点对点调试用一个USB转485转换器配合串口调试助手就能直接和电表“对话”调试极为直观。此外DL/T 645具有极强的存量兼容性。现有电力系统中大量老旧电表仅支持DL/T 645全面替换成本高昂。协议本身支持DLT645-97和DLT645-2007两个版本的向前兼容新出厂电表大多同时支持两者保障了系统的平滑演进。4.2 DL/T 698的适用场景DL/T 698瞄准的是智能电网的高级应用场景四表集抄与多表合一将水表、电表、气表、热表相结合实现统一的通信管理和数据采集这是DL/T 645难以胜任的。分布式能源接入协议预留了分布式能源接口类IC0x15支持光伏/风电发电量、并网状态、功率限制等参数的采集与管理。实时监控与远程控制支持服务器主动上报事件和远程参数设置适用于高压监测、故障诊断等需要高实时性的场景。海外市场与MID认证DL/T 698采用国际标准化的A-XDR编码规则和CRC16校验相比DL/T 645更符合欧盟MID认证对数据安全性和完整性的要求。五、优劣综合评估与总结5.1 DL/T 645优势与局限优势简单易用协议结构固定数据解析无需复杂计算嵌入式实现代码量少开发周期短。成本低廉硬件支持广泛几乎所有RS-485芯片和红外模块都可用维护成本低。存量生态强大大量在网运行的智能电表仅支持DL/T 645替换需要巨大的时间和资金成本。精准匹配电表专用需求协议专为电能计量设计支持分钟级数据冻结、谐波分析等电力专业功能数据标识体系完整覆盖电表所有核心功能。局限扩展性差协议结构固定新增功能只能通过新增数据标识实现缺乏灵活性。采集效率低对于大数据块缺乏灵活的批量读取方式逐条读取效率低下。安全性不足协议本身无加密认证机制依赖外部安全措施。互操作性局限上下行协议不一致电能表通信协议和采集终端通信协议不统一无法实现数据溯源。5.2 DL/T 698优势与局限优势面向对象扩展性强通过接口类和对象模型实现功能动态扩展新增功能无需修改协议框架。采集效率高支持预连接服务和批量数据传输减少冗余信息支持多种查询方式。安全性全面内置国密算法加密、身份认证、RBAC访问控制等完善的安全机制。上下行协议一致主站、采集终端和电能表之间采用统一的通信协议可实现数据溯源。多业务支持不仅支持传统电量采集还支持远程控制、故障诊断、多能源表计兼容等高级功能。局限开发复杂度高需要面向对象编程能力传统电力企业的技术转型存在一定门槛。资源消耗大协议栈代码量大对MCU的Flash和RAM要求更高如需要512KB Flash、32KB RAM级别的主控芯片。生态依赖性强需要设备端和主站端同时支持698协议推广过程中面临存量设备升级的阻力。厂商实现差异由于不同电表厂家对通信协议的使用和解释不一致导致均采用DL/T 698.45的电能表在通信方面也可能出现偏差。5.3 共存而非替代综合来看DL/T 645与DL/T 698之间并非简单的“新协议取代旧协议”的关系而是面向不同场景、各有侧重的互补关系。DL/T 645满足传统设备低成本和简单通信需求DL/T 698驱动智能电网的高效管理与扩展。对于简单抄表场景DL/T 645的性价比更高开发和使用成本更低而对于智能电网、四表集抄、分布式能源管理等复杂场景DL/T 698的面向对象架构和安全机制则具有不可替代的优势。正因如此即便国家电网已逐步将电能表更新换代为DL/T 698协议版本短期内DL/T 645仍将是存量市场的主力协议。两种协议将在未来相当长一段时间内共存发展通过协议转换网关实现混合组网。对于项目选型而言关键在于根据实际需求——是追求开发效率和低成本还是追求扩展性和安全性——做出恰当的判断。六、DL/T 645协议的使用方法6.1 硬件连接与物理层配置DL/T 645协议最常用的物理层是RS-485半双工异步串行通信连接方式如下接线USB转RS-485转换器的A或端接电表的485A端子B或-端接电表的485B端子。部分国产电表的端子标注为“A1/A2”或“D/D-”实际对应RS-485的A和B。串口参数典型配置为波特率2400bps部分电表支持1200~9600bps可调、8位数据位、1位停止位、偶校验。部分电表默认波特率也可能是1200bps若通信失败可尝试调整。半双工特性RS-485是半双工总线同一时刻只能有一方在发送。因此编程时需要做到“发完再收、收完再发”不能边发边收。6.2 帧格式详解DL/T 645-2007的帧结构固定每一帧由以下字段依次组成字段长度说明前导码1~4字节FEH用于唤醒接收方可省略帧起始符1字节固定为68H地址域A0~A56字节电表地址表号BCD编码帧起始符1字节固定为68H控制码C1字节定义命令类型数据域长度L1字节数据域的字节数数据域DATA可变具体数据内容校验码CS1字节从第一个68H到校验码前所有字节的算术和取低字节结束符1字节固定为16H6.3 地址域的处理最容易出错的地方地址域是使用645协议时最容易踩坑的环节。规则如下取电表铭牌编号例如电表条码编号为NO.221003012617从右侧取若干位常见取最后12位或最后8位不同厂商不同。两两一组倒序排列以上述编号为例取最后12位为10 03 01 26 17从右向左两位一组在地址域中按从左到右的顺序填写为17 26 01 03 10不足6字节时用00补齐为17 26 01 03 10 00。重要提示不同厂家对地址域取位规则不同——有的取最后12位有的取最后8位有的取最后4位。调试时若收不到回应首先尝试更换地址长度。6.4 控制码控制码占用1字节其高4位表示功能码低4位表示后续帧标志11H读数据14H写数据15H广播校时1CH拉合闸控制91H读数据应答无后续帧B1H读数据应答有后续帧6.5 数据域的加解密规则645协议中数据域的所有字节在发送前需要加33H接收后需要减33H。这是因为协议设计时采用加33H来避免数据与特殊控制字符如68H、16H冲突。示例要发送数据00→ 加33H后发送33接收到数据81→ 减33H后得到4E6.6 校验码的计算校验码是从第一个68H开始到校验码之前的所有字节的算术和取低字节即模256的结果。例如对于指令68 17 26 01 03 10 22 68 11 04 33 33 33 33将所有字节相加后取低字节作为校验码填入。6.7 实战读取正向有功总电能的完整操作请求帧主机发送以地址为17 26 01 03 10 22的电表为例读取正向有功总电能textFE FE FE FE 68 17 26 01 03 10 22 68 11 04 33 33 34 33 24 16 │ │ │ │ │ │ │ │ │ 前导码 │ 地址域 │ 控 长 数据域 校 结 (唤醒) 68 68 制 度 验 束数据域33 33 34 33的解析每个字节减33H后得到00 00 01 00按照低位在前、高位在后的规则重组为00 01 00 00对照协议文档中的数据标识编码表该标识表示“正向有功总电能”响应帧电表返回textFE 68 17 26 01 03 10 22 68 91 08 33 33 34 33 74 38 33 33 BA 16 │ │ │ │ 控 长度 数据域 校验数据域中74 38 33 33减33H后为实际电能值具体解析方式为减33H后得到41 05 00 00按低位在前重组为00 00 05 41再乘以电表倍率即为实际电能读数。6.8 拉合闸控制示例拉合闸是645协议中较复杂的操作因为需要同时提供密码、操作者代码和时间戳且全部要加33H拉闸请求帧text68 06 00 07 01 24 20 68 1C 10 35 33 33 33 34 89 67 45 4D 33 38 89 49 3C 34 57 D6 16其中1C控制码拉合闸控制35 33 33 33 34 89 67 45密码4字节原密码各加33H4DN11AH33H4DH1AH表示跳闸33N2保留位38 89 49 3C 34 57时间戳ss mm hh DD MM YY各加33H合闸时N1改为4FH1CH33H4FH1CH表示合闸其余格式相同6.9 上位机/嵌入式实现方案方案一串口调试助手调试在正式写代码之前强烈建议先用串口调试助手手动验证通信是否正常连接USB转485转换器到电表和电脑打开串口调试助手设置波特率2400、8数据位、1停止位、偶校验以HEX格式发送请求帧观察是否有正确响应若收不到回应依次检查波特率是否匹配→地址域长度是否正确→数据域是否已加33H→校验码是否正确方案二C语言嵌入式实现核心函数包括build_645_frame()根据地址、控制码、数据域构建完整帧calc_checksum()计算校验码send_frame()通过串口逐字节发送parse_response()解析返回帧对数据域减33H并重组方案三使用现成驱动/库许多云平台和工业网关已内置DL/T 645-2007驱动用户只需配置数据表示编码和读取数据格式即可获取相应监测数据无需手动拼接和解析帧。6.10 协议切换部分电表同时支持DL/T 645和ModBus-RTU两种协议可通过特定数据帧在两者之间切换。切换帧格式需查阅具体电表的手册不同厂商的切换指令可能不同。七、DL/T 698.45协议的使用方法7.1 核心概念理解“面向对象”在使用698协议之前必须先理解其核心概念。DL/T 698.45采用面向对象建模将设备功能抽象为接口类IC、对象OI和属性PI三级结构接口类IC一组具有相同特征和行为的对象的模板由类标识码class_id标识。协议定义了26个标准接口类如“电能量接口类”class_id1、“瞬时量接口类”class_id3等。对象OI接口类的具体实例一个对象对应一个唯一对象标识。例如“正向有功总电能”是一个对象其对象标识为00 10。属性PI对象具有的属性如“值”“单位”“时标”等。引用一个对象的某个属性时使用对象属性描述符OAD格式为class_id OI PI。7.2 帧结构比645复杂得多DL/T 698.45的帧结构分为数据链路层帧和应用层协议数据单元APDU两部分数据链路层帧结构字段长度说明帧起始符1字节固定为68H长度域L2字节除起始符和结束符外的帧字节数控制域C1字节含方向位、分帧标志、扰码标志、功能码地址域A可变服务器地址SA 客户机地址CA1字节帧头校验HCS2字节对帧头部分的CRC校验链路用户数据可变承载应用层APDU帧校验FCS2字节对整个帧的CRC校验结束符1字节固定为16H控制域C的关键位定义bit50此帧链路用户数据为完整APDUbit51为APDU片段分帧传输bit30不加扰码bit31加扰码发送时链路用户数据按字节加33H功能码0113表示用户数据7.3 应用层服务APDU应用层是698协议唯一包含服务组件的协议层定义了客户机和服务器之间的信息交换方式服务类型GET读取客户机请求读取服务器的接口类对象属性值对应数据类型代码05SET设置客户机请求设置服务器的接口类对象属性值ACTION操作客户机请求服务器执行某个操作REPORT上报服务器主动向客户机上报事件或数据PROXY代理代理服务用于透传信息交换模型请求/响应类型客户机发起服务器响应适用于读取、设置、操作等通知/确认类型服务器主动上报客户机回复确认适用于事件上报7.4 实战GET服务读取数据的完整操作以下示例展示如何用698协议读取一个对象属性请求APDU客户机发送text05 01 08 40 00 02 00 00 │ │ │ │ │ ① ② ③ ④ ⑤①05数据类型表示GET读取服务②01扩展描述01读取一个对象属性02读取多个对象属性③08服务优先级响应时原样返回④40 00 02 00OAD对象属性描述符其中40 00表示日期时间对象02表示要读取其属性参数00表示特征/索引⑤00无时间标签响应APDU服务器返回text85 01 08 40 00 02 00 01 1C 07 E4 08 06 12 29 19 00 00 │ │ │ │ │ │ │ ① ② ③ ④ ⑥ ⑦ ⑧①85数据类型80H05H85H表示GET响应②01回复一个对象属性③08服务优先级原样返回④40 00 02 00OAD与请求相同⑥01结果类型1数据0出错⑦1C 07 E4 08 06 12 29 19实际数据1CH为时间数据类型后续为日期2020-08-06 18:41:25⑧00 00无跟随上报信息无时间标签7.5 地址域的灵活寻址698协议的地址域支持四种寻址方式单地址对单个指定服务器通信组地址对属于同一群组的服务器通信无需应答通配地址地址中含通配符AH可匹配多个服务器广播地址固定为AAH对所有服务器通信无需应答这种灵活的寻址方式使得698协议可以高效地管理大规模设备集群。7.6 预连接服务698协议引入了预连接服务用于建立和维护客户机与服务器之间的连接关系。预连接过程包括登录客户机向服务器发起登录请求进行身份认证心跳定期发送心跳报文维持连接状态登出断开连接时发送登出请求这是698协议面向系统级管理的重要特征之一在645协议中完全不存在。7.7 安全机制的使用698协议内置了基于国密算法的安全体系身份认证在登录阶段进行双向身份认证防止非法设备接入数据加密通信内容使用SM4加密无法被窃听完整性校验通过帧校验FCS确保数据未被篡改RBAC访问控制不同权限的操作员只能访问其授权范围内的数据和功能启用安全模式后大部分数据抄读需要明文加验证码所有数据可指定安全模式。7.8 上位机/嵌入式实现方案698协议的实现复杂度显著高于645建议使用现成的协议栈大多数主站系统、采集终端厂商已提供698协议栈开发者无需从零实现调用标准API通过GET/SET/ACTION等标准服务原语操作对象而非手动拼接帧参照APDU编码示例协议文档附录D提供了完整的APDU编码举例可作为开发参考八、DL/T 645与DL/T 698使用方法的直观对比使用维度DL/T 645DL/T 698.45数据定位方式查数据标识DI直接读取查接口类→对象→属性通过OAD定位读取操作构建11控制码的读数据帧构建GET服务的APDU地址处理6字节BCD地址两两倒序可变长度地址支持单/组/广播地址数据加解密数据域逐字节加33H/减33H链路层可选扰码加33H应用层可选SM4加密校验方式累加和取低字节帧头HCSCRC 帧尾FCSCRC主动上报不支持支持通过REPORT服务连接管理无支持预连接登录/心跳/登出开发难度低帧结构固定可手动拼接高需要理解面向对象模型和APDU编码调试方式串口调试助手直接发送HEX帧即可一般需要专用调试工具或协议栈8.1 一个形象的类比问题二数据域忘记加33H问题四半双工冲突问题三校验码算错使用645协议像是用遥控器直接输入频道号数据标识DI按下“确定”键电视就换到那个频道——直接、粗暴、高效。使用698协议像是在智能电视上打开一个App通过菜单层层导航找到想要的功能——灵活、强大但操作步骤更多。九、使用中的常见问题与注意事项9.1 645协议的常见坑问题一地址域总是搞错现象发送请求后无任何回应排查先确认电表铭牌编号尝试取最后12位、最后8位、最后4位三种长度分别测试确认是否已两两倒序地址域是否夹在两个68H之间现象发送请求后无回应或返回错误解决645协议规定数据域所有字节在发送前必须加33H接收后必须减33H。这是最容易遗忘的一步现象电表有回应但返回异常码解决校验码是从第一个68H开始到校验码之前所有字节的算术和取低字节模256使用累加和而非CRC校验现象偶尔能收到数据偶尔收不到解决RS-485是半双工编程时必须确保发送完毕后关闭发送、打开接收再等待数据。不能边发边收现象电表有回应但返回异常码解决校验码是从第一个68H开始到校验码之前所有字节的算术和取低字节模256使用累加和而非CRC校验问题四半双工冲突现象偶尔能收到数据偶尔收不到解决RS-485是半双工编程时必须确保发送完毕后关闭发送、打开接收再等待数据。不能边发边收十、选型建议何时用645何时用698优先使用DL/T 645的场景简单的远程抄表项目仅需要周期性读取电压、电流、功率、电能等基础参数开发周期短团队对电力协议不太熟悉希望快速上手嵌入式设备资源有限如8位单片机、小容量Flash需要与大量存量电表对接优先使用DL/T 698的场景需要高级功能四表集抄水、电、气、热统一管理、分布式能源监控、电动汽车充电管理等需要电表主动上报事件而非被动轮询对数据安全有严格要求远程费控、敏感参数配置需要灵活扩展功能未来可能新增数据采集项管理大规模设备集群需要高效的批量操作和灵活寻址

更多文章