Skip to Content

本文档说明 viSCADA 系统中脚本与控制配置引用技术参数的映射规则,适用于设备接入开发者与配置工程师。阅读本文后,你将掌握占位符的语法、解析流程,并能够在 TOML、YAML 等配置中正确引用技术参数。

1 核心机制概述

viSCADA 通过动态占位符替换机制,实现配置项对技术参数的灵活绑定。解析引擎在脚本执行或配置下发前,会将文本中符合特定语法的占位符替换为技术参数的实际值。

2 占位符语法规则

2.1 标准格式

${attribute.<key>}

2.2 语法要素说明

要素规则说明
命名空间前缀attribute.固定写法,不可省略或替换
参数键名 <key>目标技术参数的唯一标识符对应技术参数配置列表中的 key
包裹符号${ ... }必须完整成对,替换时整体消失

⚠️ 大小写敏感性:参数键名的大小写处理以系统底层定义为准。为避免解析失败,配置时务必与技术参数列表中的 key 保持精确匹配

3 解析流程

解析引擎对配置文本的处理遵循以下四个阶段:

阶段动作说明
1 扫描定位扫描配置文本定位所有符合 ${attribute.<key>} 规则的占位符
2 参数读取提取 <key> 并查表从当前关联的技术参数列表中读取对应 value
3 文本替换整体替换占位符连同 ${...} 符号一并替换为 value,默认按字符串处理
4 生成输出输出最终文本交由下游引擎执行或下发

💡 核心逻辑:${attribute.<key>} 将被直接替换为技术参数中 <key> 对应的字符串值。

4 应用示例

4.1 示例 A:脚本参数注入(TOML)

前置技术参数

参数键名
address127.0.0.1:4444

脚本模板

urls = [ "http://${attribute.address}/tags" ]

替换结果

urls = [ "http://127.0.0.1:4444/tags" ]

4.2 示例 B:控制配置动态 URL 生成(YAML)

本示例演示技术参数与物模型属性上下文变量混用的场景。

前置条件

类型键名
技术参数address127.0.0.1:4444
上下文变量tslProperty.nameb.b

配置模板

url: "http://${attribute.address}/tag/${tslProperty.name?url('UTF-8')}"

替换结果

url: "http://127.0.0.1:4444/tag/b.b"

📌 底层行为验证:上述 YAML 配置经系统解析执行后,在 device-server 日志中体现的实际 HTTP 请求如下:

httpPut: PUT http://127.0.0.1:4444/tag/b.b HTTP/1.1

5 常见问题

问题可能原因处理建议
占位符未被替换命名空间前缀拼写错误确认使用 attribute. 而非 attr. 等变体
替换后 key 对应空值技术参数中未定义该 key检查设备技术参数配置列表
大小写不匹配导致失败Addressaddress 混用与技术参数定义保持精确一致
数值类型被作为字符串处理默认按字符串替换如需数值运算,由下游配置自行转换