跳到主要内容

脚本管理

打开“开发配置 → 脚本管理”。普通采集不需要脚本;要把原始值换算成工程值、计算多个点位或自定义上传格式时再使用。

脚本管理页面

把原始值缩小十倍

例如设备读到 1234,希望页面显示 123.4。先准备一个正常采集的数值变量,再执行以下步骤。

新建脚本

  1. 在“本地脚本”点击列表右上方的加号。
  2. 脚本名称填 ScaleByTen,类型选择“数据转换”,分类留空即可。
  3. 点击“确定”,进入编辑器。
  4. 将代码编辑区内容替换为下面两行。这里只写计算内容,不要再包一层类或方法。
// 将设备的整数原始值换算为带一位小数的工程值。
return Math.Round(Convert.ToDouble(raw) * 0.1, 1);
  1. 点击编辑器右上角的“编译并保存”图标;鼠标停在图标上可看到名称。在底部“编译日志”确认出现“编译成功”,没有加载或保存失败提示。

ScaleByTen 的两行换算代码与编译成功日志

绑定到变量

  1. 返回“开发配置 → 采集配置”,编辑要换算的变量。
  2. 在“基本信息”的“表达式配置”区域,将“读表达式”选择为 ScaleByTen,点击“确定”。
  3. 等待下次采集,查看“原始值”和“当前值”:原始值为 1234 时,当前值应为 123.4
  4. 读到的原始数据类型仍按设备寄存器设置,不要为了显示小数就把原来读取整数寄存器的类型改成浮点类型。

同一变量的原始值为 1234,换算后当前值为 123.4

仅编译脚本不会自动绑定变量。这个脚本只修改读出的显示值,不修改设备寄存器,也不自动提供反向写入换算。

取消换算时,重新编辑变量,把鼠标移到“读表达式”选择框上,点击右侧出现的清除图标,再点击“确定”。下次采集后,当前值恢复为未经这个脚本换算的值。

修改已有脚本

在列表点击“编辑”,修改后再次点击“编译并保存”。返回变量或目标页面检查实际结果,不能只看编译成功。

同名脚本可能被多个变量或目标使用,修改前先记录原代码并确认引用范围。只是调整一个变量的比例时,优先使用带输入参数的脚本,为该变量单独填写参数。

输入参数

“数据转换”和“内存变量”类型在编辑器底部提供“输入参数”。

  1. 添加参数,填写参数名、数据类型、初始值和描述。
  2. 在代码中按参数名使用它,点击“编译并保存”。
  3. 到引用这个脚本的变量配置中选择读表达式,在出现的参数区域填写该变量的值并保存。

普通乘十或除十不必先学习参数配置。需要可调比例、偏移量时,使用带参数的线性换算示例

脚本类型

要做什么选择类型在哪里使用
换算设备原始值数据转换采集变量的读表达式;写入换算使用写表达式
根据已有变量计算新值内存变量内存计算的读表达式
改变上传对象或 JSON 字段动态模型-变量数据等转发目标的对应模型脚本属性
自定义历史或实时表的入库逻辑动态 SQL-变量数据支持该脚本的数据库转发目标
自定义报警入库逻辑动态 SQL-告警变量历史报警目标
自定义 MQTT 请求格式MQTT RPCMQTT 客户端或服务端的 RPC 脚本属性
开发完整扩展完整代码二次开发调用,不是普通变量计算入口

设备、插件事件等其他脚本类型只在对应调用功能支持时使用,不能因为列表里能创建,就认为所有转发目标都能选择它。详细代码格式见脚本开发说明

编译日志

编译失败时先看第一条红色错误,点击错误定位代码。修正后再次编译。出现“编译成功但加载失败”或“保存失败”时,本次操作还没完成,不要离开页面丢失修改。

“已加载脚本”页签用于查看运行时可用脚本;“本地脚本”用于编辑已保存的源码。两者用途不同。

常用操作

操作步骤
单独重新编译在本地脚本列表点击该行“编译”
批量编译勾选脚本,点击批量编译按钮,查看每项结果
删除先解除变量、目标或其他功能中的引用,再点击“删除”并确认
找不到刚创建的脚本清空列表筛选;确认编译、加载和保存均成功后刷新

AOT 运行时不支持动态加载脚本。需要在 Web 中编译并使用脚本时,应使用支持动态代码加载的 Runtime 发布包。

相关链接