模板:input / keypad / table 与模板变量、批量替换

模板 = 一个 PowerPoint 组 + 模板元数据(模板名、变量列表、变量值)。它在原生“打组”之上加了一层“变量化”能力:先把一组组件画好、打成组、存成模板,之后从模板库插入,只需填 PLC、DB 这类少量变量,整组里所有动画的 Tag 地址就会自动套上对应设备。这样既保留 PPT 原生编辑体验,又把“同一个设备模板复制很多份、Tag 地址一条条手改”的成本降下来。

功能

功能: 模板:input / keypad / table 与模板变量、批量替换

用模板把一组画好的组件存成可复用资产,插入后只填 PLC、DB 等少量变量就能完成整组 Tag 绑定。内置 input / keypad / table 三种模板分别做输入框、数字键盘和动态表格;Template Edit 编辑实例,Batch Replace 批量替换文本和模板变量。

它是什么、解决什么问题

模板 = 一个 PowerPoint 组 + 模板元数据(模板名、变量列表、变量值)。它在原生“打组”之上加了一层“变量化”能力:先把一组组件画好、打成组、存成模板,之后从模板库插入,只需填 PLC、DB 这类少量变量,整组里所有动画的 Tag 地址就会自动套上对应设备。这样既保留 PPT 原生编辑体验,又把“同一个设备模板复制很多份、Tag 地址一条条手改”的成本降下来。

产品提供三种内置模板:input(输入框,三种绑定模式)、keypad(给输入框配数字键盘)、table(动态表格)。功能区 Templates 分组里有三个入口:Template Library(模板库)、Template Edit(编辑选中的模板实例)、Batch Replace(批量替换)。

使用方法:保存、插入与各编辑器字段

保存与插入:在 PPT 里把一组组件画好并打组,选中后到 Template Library 点 Save 存入本地模板库;之后在模板库中双击或拖拽插入,新插入的组会被标记为“模板实例”。模板库还支持 Import / Export(在不同电脑间交换模板)和 Delete。

Template Edit 编辑实例的字段(按模板类型不同):

  • 所有实例通用:Position and Size 区的 X / Y / Width / Height(顶部还会只读显示 Instance / Template / Group)
  • 普通模板实例:Template Variables 区按扫描到的 <变量名> 逐行列出输入框(如 PLC、DB、RUN_TAG),填进去即对整组生效
  • input 模板:Input Mode(Plain Input 仅留本地输入值不自动写 / Runtime Variable 绑运行时变量 / PLC Tag 绑 PLC 标签)、Variable 或 PLC Tag(随模式切换)、Write Trigger(默认 Immediate)、Font Size
  • keypad 模板:Target Input(选当前页里要操作的输入模板;数字键追加字符,Back 删一位,Clear 清空,OK 通过目标输入框写出)
  • table 模板:Table Name、Table Text ID、Headers、Header Text IDs、Rows(Rows 可填数组、变量名或函数名)
// 表达式里写模板变量(分段式 / 整体式)
ReadTagBoolean('<PLC>.<DB>.RUN', false)
ReadTagBoolean('<RUN_TAG>', false)
// 实例填 PLC=PLC_LINE01, DB=DB_PUMP01 -> 运行时等价于 PLC_LINE01.DB_PUMP01.RUN

Template Edit 通用区域按什么顺序填

先选中模板实例根组,再点击功能区 Template Edit。顶部 Instance、Template、Group 只用于确认选中的实例;Position and Size 中填写 X、Y、Width、Height;Template variables 只修改当前实例的占位符值。按从上到下的顺序完成,再进入对应的 Input、Keyboard、Table、Alarm 或 Chart 区。

  • Instance:确认当前页实例名称。
  • Template:确认来源模板,避免编辑错实例。
  • Group:确认模板所属分类。
  • X / Y:实例左上角位置。
  • Width / Height:实例整体尺寸。
  • Template variables:逐项填写当前设备或当前页面使用的值。
  • 底部显示 ValidationMessage 时,先修正对应字段再 Save。

Input 模板逐项配置

Input mode 先决定值保存在哪里,再填写随模式出现的目标字段。Plain Input 只保留输入内容;Runtime Variable 写入当前运行时变量;PLC Tag 对应设备 Tag。需要自动提交时选择 Immediate,需要由外部按钮或脚本统一提交时选择 External。最后设置 Font size。

  • Plain Input:不填写 Variable 或 PLC Tag,适合先收集文本。
  • Runtime Variable:填写变量名,供当前页面其他对象读取。
  • PLC Tag:填写完整 Tag;可使用 <PLC> 等模板占位符。
  • Immediate:确认输入后立即按当前绑定写出。
  • External:输入暂存,等待外部动作处理。
  • 保存后在运行页输入一个示例值,检查显示、提交和取消是否符合预期。

Keypad 模板连接目标输入框

当前页必须先有 Input 模板。选择 Keypad 实例进入 Template Edit,在 Keyboard 区的 Target input 中选择或填写目标输入实例名称,保存后导出并验证数字、退格、清空、确认和取消。窗口提示 No input templates were found 时,先插入并保存 Input 模板,再重新打开 Keypad 编辑器。

  • 先配置 Input,再配置 Keypad。
  • Target input 必须是当前页实际存在的输入模板实例。
  • 重命名输入实例后,重新检查 Keypad 的 Target input。
  • PLC Tag 模式下验证确认动作是否触发权限、确认和写入。

Table 模板逐项配置

Table name 用于识别表格实例,Table text ID 用于表格整体文本标识。先设 Font size 和每列宽度,再填写 Headers、Header text IDs 和 Rows。只要填写了列宽,所有已配置列的百分比合计必须为 100;全部留空时按等宽分配。

  • Table name:给脚本和维护人员识别的稳定名称。
  • Table text ID:需要多语言或文本映射时填写。
  • Column layout:逐列填写百分比,合计 100%。
  • Headers:表头显示文本。
  • Header text IDs:与表头对应的语言键或文本标识。
  • Rows:填写数组、页面脚本变量名或返回数组的函数名。
  • 保存后分别用 0 行、1 行和多行数据进行验证。

Alarm 模板筛选范围怎么填

Alarm 区用于限定当前报警模板显示的范围。按需要勾选显示项,并在 Tags、PLC codes、Function groups、Device groups、Signal groups 中填写目标。多个值使用逗号或换行分隔。不要把显示名称填进编码字段。

  • Tags:device-code.tag-code。
  • PLC codes:只填 device-code。
  • Function groups:device-code.group-code。
  • Device groups:device-code.group-code。
  • Signal groups:device-code.group-code。
  • 只填写实际需要限制的维度;保存后在 HQControl 用已知报警验证结果范围。

模板变量、运行时变量和页面参数不是一回事

模板章节中最容易混淆的是四类名称相似但生命周期不同的值。选错机制会出现“当前页能用、跳页后丢失”或“导出后仍残留占位符”的问题。

  • 模板变量 <PLC> / <DB> / <RUN_TAG>:模板实例级替换值,导出前必须替换完成;它不是运行时页面参数。
  • Plain Input:只保存输入模板当前值,通过 template.getValue("输入模板实例名") 读取;不会自动跨页。
  • Runtime Variable:当前运行页面内的变量,用于页面联动;不要当作跨页面协议。
  • PLC Tag:由宿主设备数据层维护,可跨页面读取同一 Tag,但这属于数据绑定,不是页面参数。
  • 页面参数:通过 Open Link、openPage 或 Open Page as Popup 发送,由目标页 GetPageParameter* 读取。

适用场景

两个典型场景:

1)同类设备做很多份:一台泵/阀门画好存成模板,每多一台就从模板库插一份,进 Template Edit 填这台的 PLC、DB,整组动画自动指向该设备地址,不用逐条改 Tag。

2)做带输入和键盘的操作区:插入 input 模板并设为 Runtime Variable 或 PLC Tag,再插入 keypad 模板、在 Target Input 选中这个输入框,现场用数字键盘录入并写出。需要在脚本里读输入值时用 template.getValue("输入组件名")。

Batch Replace 适合:页面复制后快速改名、成组实例内容替换、统一术语,以及替换模板变量占位。打开后顶部显示 Scope(Selected content 选区 / Current page 当前页)和 Detected Variables(识别到的 <变量名>),填 Find / Replace,下方表格按 Type / Object / Replace In / Current Text / After Replace 实时预览命中行,确认后点 Replace。

边界与易错点

常见误区:

  • 变量名必须用尖括号包起来;支持字母、数字、下划线和中文,但横杠、点号、空格不能放在变量名内部。团队模板建议用 <PLC>、<RUN_TAG> 这类 ASCII 大写名称;Tag 路径写成 <PLC>.<RUN_TAG>。
  • 模板变量是“实例级”配置,只挂在模板实例根组上:复制整组时变量一起带走,所有子组件共享同一组值,不要指望逐个子组件单独设
  • 编辑/插入时允许变量留空,但导出时会校验,若仍残留未替换的 <变量名> 会报错,导出前要填全
  • Template Edit 只对“模板实例根组”可用:选中普通组件或普通组时按钮不可用;选错对象会发现编辑器打不开或没有变量行
  • keypad 必须先有输入模板:若当前页还没有 input 模板,Target Input 会提示先插入输入模板再回来配
  • Batch Replace 是改文本/占位的工具,不替代模板结构调整;若每次替换后还要大量手改布局,说明该回模板源把模板定型,而不是反复批量替换
新版 HQ VISU Designer 模板实例编辑界面
图示 1: 模板实例 Template Edit

当前版本的 Template Edit:确认实例来源、位置尺寸,并填写本实例的模板变量。