版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OpenWrt智能网关开发与应用第13章智能电表设备的驱动开发本章内容导航01学习目标明确本章核心知识点与技能要求02正泰电能表介绍了解昆仑DDSU666系列智能电表特性03通信规约解析深入剖析DL/T645-2007协议帧结构04驱动开发实战基于SDM框架的电表驱动实现与调试05驱动注册与编译环境配置——学习驱动注册流程与Makefile配置本章学习目标学习目标掌握DL/T645-2007协议的应用规范与细节。掌握正泰昆仑DDSU666系列单相电子式电能表的驱动开发原理。技能目标独立完成电表通信,实现连接、命令收发及数据解析。熟练使用C语言进行驱动开发,包含数据结构定义与调试。在OpenWrt系统中完成驱动部署、应用运行与测试。素养目标提升问题解决能力,学会独立分析并攻克开发难题。强化动手实践能力,将理论知识转化为实际项目成果。培养创新意识,探索智能电表技术在其他领域的应用。13.1正泰电能表介绍了解智能电表基础Chapter13.1/SmartMeter正泰昆仑DDSU666系列单相电子式电能表设计特点:标准导轨安装采用DIN35mm标准导轨设计,配备段码液晶显示,安装便捷且读数清晰。功能强大:多参量精确测量除精确计量有功电能外,还支持电压、电流、功率、功率因数、频率等全电参量测量。通信灵活:双协议支持配备RS485接口,支持ModbusRTU和DL/T645-2007协议,易于接入自动化系统。应用广泛:多场景覆盖广泛应用于工矿企业、宾馆、学校及大型公建等场所的内部电能测量与考核。DDSU666产品特点标准安装,便捷显示采用DIN35mm标准导轨安装,节省空间;配备段码液晶显示,数据清晰易读。多参量测量,一表多用集成有功电能计量及电压、电流、功率、功率因数、频率等全电参量测量功能。双协议通信,灵活集成支持RS485通信,兼容ModbusRTU和DL/T645-2007两种主流规约,易于系统接入。高准确度与可靠性1级准确度等级,电压、电流回路功耗低,宽温工作设计,适应各种恶劣环境。可选功能丰富,满足定制需求可选择多费率电能计量及存储功能,灵活满足不同用户的计费策略和精细化管理需求。DDSU666主要技术参数电气特性参数参比电压:220V电流规格:经互感式AC1.5(6)A/直接接入AC5(80)A参比频率:50Hz准确度等级:1级电压范围:规定0.9Un~1.1Un/扩展0.7Un~1.2Un物理特性参数显示方式:段码LCD工作温度:规定-25℃~55℃/极限-40℃~70℃功耗指标:电压回路≤1W/5VA;电流回路≤2VA13.2DL/T645通信规约解析掌握智能电表的通信语言SmartMeterCommunicationProtocolAnalysisDL/T645-2007规约简介规约定义与核心定位DL/T645是我国电力行业标准,全称为《多功能电能表通信规约》。其核心目的是统一和规范多功能电能表与数据终端设备之间的数据交换,确保电力系统数据采集的一致性与准确性。本章我们将重点学习目前的主流版本——DL/T645-2007。版本演进:2007vs1997物理层优化调整通信接口参数,与相关国家标准定义保持一致,提升兼容性。控制码扩展新增读通信地址、冻结、电表清零、时间清零等命令,功能更完善。安全性增强引入特殊命令帧密码验证机制,并强制记录操作者代码,防止非法操作。数据标识升级由2字节扩展为4字节,支持更多数据类型和复杂抄读规则。DL/T645-2007帧格式解析帧起始符地址域帧起始符控制码数据域长度数据域校验码结束符68HA0~A5(6字节)68HC(1字节)L(1字节)DATA(变长)CS(1字节)16H帧起始符(68H)标识一帧信息的开始和结束,在地址域前后各出现一次,起定界作用。地址域(A0~A5)6个字节,用于唯一标识一个电能表设备,确保数据发送到正确的目标。控制码(C)1个字节,定义本帧功能,如读数据、写数据、广播校时等操作类型。数据域长度(L)1个字节,指示后续数据域的字节数,接收方根据此值解析数据内容。数据域(DATA)变长字段,包含具体操作数据,如数据标识、密码、测量值等核心信息。校验码(CS)&结束符CS用于验证传输正确性,结束符(16H)标识一帧信息的完整结束。帧格式详解(一):地址域与控制码地址域(AddressField-A0~A5)长度与唯一性:共6字节(12位BCD码),确保每块电表在总线上拥有唯一的通信身份。特殊地址机制:广播地址(999999999999H):无需应答,用于校时等。缩位寻址:高位填充AAH作为通配符,批量操作。传输顺序:低字节在前,高字节在后(LittleEndian)。控制码(ControlField-C)功能与长度:1字节长度,定义帧的类型(读/写/确认)及具体操作功能。关键位定义(D7-D0):D7:帧类型(0-从站数据帧,1-主站命令帧)D6:传输方向(0-正向,1-反向)D5-D0:具体功能码定义常用命令示例:读数据=11H,读地址=13H帧格式详解(二):数据域与校验数据域(DATA)-核心载荷长度限制:读数据最大200字节,写数据最大50字节,由L字段指定。内容结构:数据标识(4字节):指定读取/写入项(如电压、电能)实际数据:测量值或设置值传输安全机制:每个字节需进行加33H处理,接收方减33H还原,确保通信可靠。校验码(CS)-数据卫士计算范围:从帧起始符(68H)开始,到校验码之前的所有字节。计算方法:参与计算的字节进行二进制算术和,不计溢出,结果即为校验码。核心作用:接收方重新计算并比对CS字段,检测数据在传输过程中是否发生错误。13.3软件设计开发协议实战与驱动实现DL/T645协议开发实战数据结构定义dlt645_07_pack_t用于构建(组包)发送帧的数据结构dlt645_07_unpack_t用于解析(解包)接收帧的数据结构协议核心函数ddsu666_pack_frame将数据结构内容构建成完整的发送帧(组包)ddsu666_unpack_frame解析原始数据,提取字段并填充到数据结构(解包)应用层接口函数ddsu666_get_addr发送读地址命令,获取电表通信地址ddsu666_get_voltage发送读数据命令,获取A相电压值扩展接口支持读取电流、功率等其他电参量协议开发:数据结构定义发送帧结构(dlt645_07_pack_t)typedefstruct_dlt645_07_pack{unsignedcharmAddress[6];//地址域(A0-A5)unsignedcharmCtrlCode;//控制码(C)unsignedcharmDataLen;//数据域长度(L)unsignedintmDataItem;//数据标识(4字节)unsignedchar*mDataExtra;//额外数据指针}dlt645_07_pack_t;功能说明:发送数据前,将地址、控制码、数据标识等信息填入此结构,调用组包函数进行处理。接收帧结构(dlt645_07_unpack_t)typedefstruct_dlt645_07_unpack{unsignedcharmAddress[6];//地址域unsignedcharmCtrlCode;//控制码union{unsignedcharmData[64];...};//数据域unsignedcharmChecksum;//校验码}dlt645_07_unpack_t;功能说明:接收数据后,解包函数将解析出的地址、控制码、数据等信息填充到此结构,便于后续提取测量数据。协议开发:组包与解包函数组包函数ddsu666_pack_frame写入帧起始符(0x68)与地址域再次写入起始符,写入控制码与数据长度写入数据域(数据标识加33H处理)计算并写入校验码(CS)写入结束符(0x16),完成组包解包函数ddsu666_unpack_frame过滤前导干扰字符,校验帧起始/结束符提取地址域、控制码及数据域长度提取数据域并进行减33H还原处理提取校验码并进行完整性验证协议开发:获取电表地址与电压获取电表地址(ddsu666_get_addr)intddsu666_get_addr(intfd,charaddr[6]){//1.初始化:广播地址0xAA,控制码0x13(读地址)dlt645_07_pack_tpack={...};//2.组包->发送->接收应答ddsu666_pack_frame(&pack,buf);uart_send(fd,buf);uart_recv_within_timeout(fd,rcv_buf,...);//3.解包并提取结果ddsu666_unpack_frame(&unpack,rcv_buf);memcpy(addr,unpack.mData,6);}获取A相电压(ddsu666_get_voltage)intddsu666_get_voltage(intfd,charaddr[6],float*v){//1.初始化:目标地址,控制码0x11,标识0x02010100dlt645_07_pack_tpack={...};//2.组包->发送->接收应答ddsu666_pack_frame(&pack,buf);uart_send(fd,buf);uart_recv_within_timeout(fd,rcv_buf,...);//3.解包并转换电压值ddsu666_unpack_frame(&unpack,rcv_buf);v=calculate_voltage(unpack.mDataExtra);}驱动开发:定义私有数据结构chint_ddsu666.h(定义驱动上下文)/**@brief正泰DDSU666电能表驱动私有数据结构用于保存串口FD和通信地址等上下文信息/typedefstruct_chint_ddsu666_drvdata{intmFd;/*串口文件描述符*/charmAddress[6];/*电表通信地址*/}chint_ddsu666_drvdata_t;核心结构体定义定义了名为chint_ddsu666_drvdata_t的私有数据结构,作为驱动运行时的上下文载体。关键成员变量解析mFd:串口设备的文件描述符,是与硬件通信的核心句柄。mAddress:6字节通信地址,在open阶段获取,用于后续精准寻址。生命周期管理该结构在设备打开(open)时动态创建,在关闭(close)时销毁,确保资源安全。驱动开发:实现SimpleDeviceModel接口驱动接口函数功能描述chint_ddsu666_probe系统检测到设备时回调,为私有数据结构分配内存。chint_ddsu666_remove系统移除设备时回调,释放私有数据结构占用的内存。chint_ddsu666_open初始化串口通信,并调用ddsu666_get_addr获取电表地址。chint_ddsu666_close关闭设备,释放串口资源。chint_ddsu666_pre在read操作之前调用,执行预处理工作。chint_ddsu666_post在read操作之后调用,执行后处理工作。chint_ddsu666_read核心数据读取接口,调用协议函数获取并返回数据。接口实现:probe,remove,open,closeprobe&remove:内存管理probe分配内存:drvdata=g_malloc0(...)remove释放内存:g_free(drvdata)负责驱动私有数据的创建与销毁,确保无内存泄漏。open接口:初始化核心1.打开串口设备:uart_open(...)2.获取电表地址:ddsu666_get_addr(...)关键步骤,为后续所有通信建立基础连接。close接口:资源释放关闭串口设备:uart_close(drvdata->mFd)简单直接,负责释放打开的硬件资源。完整驱动生命周期流程概览:probe(初始化)→open(连接)→业务通信→close(断开)→remove(销毁)接口实现:readintchint_ddsu666_read(voidpv,voidpriv){//根据配置参数类型分发协议调用switch(config->mType){casePARAM_TYPE_VOLTAGE://读取电压ddsu666_get_voltage(drvdata->mFd,&result);break;casePARAM_TYPE_CURRENT://读取电流ddsu666_get_current(drvdata->mFd,&result);break;default:return-1;}g_snprintf(config->mStrResult,"%.2f",result);return0;}核心逻辑解析1.参数解析通过config->mType判断上层请求类型(电压/电流/功率)。2.协议分发根据参数类型调用对应的底层协议函数(如ddsu666_get_voltage)。3.结果封装将获取到的浮点数值格式化为字符串,填充到mStrResult返回。驱动注册与编译配置驱动注册流程1.导出接口声明在头文件(如peripherals.h)中声明probe/read等接口函数。2.注册全局数组在系统全局驱动操作数组sDrvOps中添加新元素,填入类型标识与函数指针。编译配置(Makefile)#更新DEVMGR_SERVICE_SRC变量DE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无人机飞防作业规范指引
- 会员档案管理细则规范操作手册
- 2025煤炭行业发展年度报告
- 作业帮小学语文阅读理解公式法
- 职业健康管理应急预案
- 2026年养老院员工急救技能培训
- 2026年日间手术管理与质量安全保障体系
- 2026年塔吊基础利用永久结构设计
- 2026年CNC常用刀具选型与切削参数培训
- 2026年酒店行业委托管理模式效果评估
- 关于精益管理办法
- 湖北省部分高中2025届高三下学期四月统考(二模)政治试卷(含解析)
- 白细胞减少症病例讨论
- 年产200吨高纯金属铯铷项目报告书
- 2025具身智能行业发展研究报告
- 委托代缴社保协议书范例
- 智库能力测试题及答案
- 第五单元100以内的笔算加、减法达标卷(单元测试)(含答案)2024-2025学年一年级数学下册人教版
- 陕西单招数学试题及答案
- 《政府与集团项目型公关策略和销售技巧》
- CNAS-CC01:2015 管理体系认证机构要求
评论
0/150
提交评论