核心内容摘要
天堂а在线中文在线畅享:开启极致视听,重塑你的感官宇宙
EBHelper是一款专为简化 EB 代码开发设计的插件工具。
用户仅需完成JSON 格式配置文件即可快速实现设备通信与数据上报无需编写代码。
核心功能与支持规约设计目标简化开发流程通过配置实现通信。
支持协议ModbusDL/T 645Any自定义任意格式数据结构定义EB 上行标准帧结构上行事件采用固定格式封装原始数据字段名偏移长度 (Bytes)含义说明version01协议版本号dataType11数据类型编码covStatus21保留字节供内部 COV 处理status31查询事件状态battery41电池电量addr[]5n子设备地址Modbus 为 1 字节DL/T 645 为 6 字节appData[]5nm应用层原始数据解析由物模型完成配置项详解上行事件配置主配置用于定义数据上报通道及周期。
基础项name(标识名),port(端口, 默认
,addrSize(地址长度)。
版本控制version(默认 0x
,dataType(自动递增)。
周期策略优先级upPeriodupPeriodIndex 默认不触发。
动态调整推荐使用upPeriodIndex起始地址 704 字节对齐。
3.
查询事件配置 (quInfo)定义如何向子设备发起请求。
协议参数支持protocol,code(功能码),addr(设备地址)。
数据注入通过indexAPP,indexCMD,copySize可将 App 参数动态写入命令帧避免硬编码。
校验与触发isLast: 设为true时该查询完成后立即触发数据上行。
listTag: 用于回复报文的基础校验。
3.
数据处理与 COV (listVal)定义从回复报文中提取数据的规则及变化上报 (COV)策略。
提取范围start和end为闭区间。
在 Modbus 中代表寄存器地址非偏移量。
COV 机制支持Uint8/16/32,Int8/16/32,Float(大/小端)。
触发条件采集值与上次发送值的差值绝对值 covAppIndex存储的阈值。
最佳实践建议效率优化减少查询次数尽量用单次查询获取连续数据即使包含少量无效字节回复报文支持达 250 字节。
分包原则若无效数据超过 50 字节建议拆分为多个查询事件。
参数规划动态化优先使用Index类配置如upPeriodIndex便于后期无需重新编译即可调整参数。
内存分配参考70周期相关参数。
110COV 阈值缓存区。
150动态参数源地址。
周期单位参考支持s(秒),m(分),h(时),d(天),y(年)。
示例900s表示 900秒。
参考示例import { Buffer } from buffer; import { buildOtaFile } from EBSDK/run; import { ActionAfertExpr, CalcData, CrcMode, CvtRule, EBBuffer, EBModel, ExprCondition, LoraUpEvent, QueryEvent, SetUpCovDataType, UserConfUPItem,EventInfoItem } from EBSDK/EBCompiler/all_variable; import { CheckbitEnum, getOtaConfig, HwTypeEnum, UpgrdTypeEnum } from EBSDK/otaConfig; //////////////////////////////////////////////////////////////////////////////////////// const eventInfo:UserConfUPItem[][ { name:transh,dataType:0x23,upPeriodIndex:70, // port:22, version:0x83,upPeriod:900s, quInfo:[ { protocol:modbus,addr:0x02,code:0x03, periodIndex:74, //indexAPP:150, indexCMD:0, copySize:4,period:900s,isLast:false,payIndex:3,ackAddrIndex:0, listVal:[ { start: 0, end: 1 ,covType:Uint32BE,covAppIndex:110}, { start: 2, end: 3 ,covType:Uint32BE,covAppIndex:110}, { start: 4, end: 7 }, ] },{ protocol:modbus,addr:0x01,code:0x03,periodIndex:74, //indexAPP:-1, indexCMD:0, copySize:4,period:300s,//isLast:false,payIndex:3,ackAddrIndex:0, hook:false listVal:[ { start: 0x0102, end: 0x0102,covType:Uint16BE,covAppIndex:114} //,covAppIndex ] } ] } ] let otaConfig getOtaConfig({ SwVersion:31, BaudRate: 9600, StopBits: 1, DataBits: 8, Checkbit: CheckbitEnum.NONE, Battery: false, // 非电池供电Class C模式 ConfirmDuty: 60, BzType: 10105, BzVersion: 11 }) const MODBUS_TT (ebModel: EBModel) { for (let i0; ieventInfo.length; i){ let eventnew EventInfoItem(eventInfo[i]); event.upEventSetup() event.eventInstall() } return JSON.stringify(ebModel, null,