本文档说明 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)
前置技术参数
| 参数键名 | 值 |
|---|---|
address | 127.0.0.1:4444 |
脚本模板
urls = [
"http://${attribute.address}/tags"
]替换结果
urls = [
"http://127.0.0.1:4444/tags"
]4.2 示例 B:控制配置动态 URL 生成(YAML)
本示例演示技术参数与物模型属性上下文变量混用的场景。
前置条件
| 类型 | 键名 | 值 |
|---|---|---|
| 技术参数 | address | 127.0.0.1:4444 |
| 上下文变量 | tslProperty.name | b.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 | 检查设备技术参数配置列表 |
| 大小写不匹配导致失败 | Address 与 address 混用 | 与技术参数定义保持精确一致 |
| 数值类型被作为字符串处理 | 默认按字符串替换 | 如需数值运算,由下游配置自行转换 |