Skip to content

1. EBCompiler

EB(EdgeBus)是一款运行在低功耗MCU上的虚拟机,EB是基于通过TypeScript编程可实现复杂传感器对接业务。EB的详细介绍见 EB compiler SDK 使用说明

ThinkLink 提供了EB的云编译平台,用户输入TypeScript代码后,即可实现在线编译成obin文件用于设备升级。

推荐使用 EBHelper 简化开发

手写 EB 表达式需要深入了解 SDK 底层 API,工作量大且容易出错。 EBHelper 是官方提供的"配置即代码"工具集——只需填写一份 JSON 风格的 UserConfUPItem 配置,即可自动生成查询事件、上行事件、COV 阈值分配、CRC 规则等全部 EB 代码。 支持 Modbus RTU、DL/T 645-2007、CJ/T 188 等主流协议,大幅降低 EB 开发门槛。

1.1. 新增EB代码

注意1 :与使用SDK不同的是,main 函数 编写和运行已经内置到云编译内部,在代码中需要剔除。

注意2 :每个代码要保持BzType 和 BzVersion 的组合是唯一的,否则会造成设备升级失败

注意3 : SwVersion的版本要与设计设备的固件版本保持一致,当前最新的EB版本为31

  • [ 1 ] 点击新增后,系统会默认给出一个示例,将编写好的代码将示例代码替换即可。
  • [ 2 ] 给EB代码起个名字,加上备注
  • [ 3 ] 点击运行后,可生成对应的obin文件
  • [ 4 ] 点击保存固件包,可将编译生成的固件包保存到系统中,用于EB升级。
  • [ 5 ] 点击保存,可EB的代码保存到系统中

1.2. 使用 EBHelper 快速开发

对于 Modbus、DL/T 645-2007、CJ/T 188 等标准协议,强烈建议使用 EBHelper 代替手写 EB 底层代码。

对比:手写 vs EBHelper

方面手写 EB 表达式使用 EBHelper
代码量数百行十几行 JSON 配置
CRC 规则需手动配置自动按协议选择
地址长度需手动设置按协议自动推断
COV 阈值分配需手动管理 APP 段偏移自动分配,不冲突
上行帧布局需手动计算 txIndex自动计算
周期可调需手动绑定 APP 段upPeriodIndex: -1 一行搞定

最简示例(Modbus RTU)

typescript
import { EBModel, UserConfUPItem, EventInfoItem } from "@EBSDK/EBCompiler/all_variable";
import { CheckbitEnum, getOtaConfig } from "@EBSDK/otaConfig";

const eventInfo: UserConfUPItem[] = [
  {
    dataType: "0x23",
    upPeriodIndex: -1,          // 自动分配 APP 段周期寄存器,支持运行时 RPC 调整
    quInfo: [
      {
        protocol: "modbus",
        addr: "0x01",
        code: "0x03",
        listVal: [
          { start: "0x0000", end: "0x0001", covType: "Uint32BE" }
        ]
      }
    ]
  }
];

let otaConfig = getOtaConfig({
  SwVersion: 31, BaudRate: 9600, StopBits: 1,
  DataBits: 8, Checkbit: CheckbitEnum.NONE,
  BzType: 10001, BzVersion: 1
});

const MAIN_FUNC = (ebModel: EBModel) => {
  for (const conf of eventInfo) {
    const ev = new EventInfoItem(conf);
    ev.upEventSetup();
    ev.eventInstall();
  }
  return JSON.stringify(ebModel, null, 2);
};

更多协议示例(DL/T 645-2007、CJ/T 188)参见 EBHelper 示例代码