在威纶通HMI的界面设计中,嵌入窗口功能主要通过两种元件实现:间接窗口和直接窗口。它们允许你在主窗口内动态加载并显示其他窗口的内容,是实现复杂界面交互和模块化设计的关键工具。

间接窗口 与 直接窗口 的核心区别在于控制方式:
- 间接窗口:使用字寄存器的数值来控制指定编号窗口的开启与关闭。你可以将窗口编号写入寄存器,对应的窗口内容就会显示出来。
- 直接窗口:使用位寄存器的状态(ON/OFF)来控制窗口的开启与关闭。当指定位被置位时,对应的窗口内容就会显示。
这两种窗口的显示逻辑也有细微差别。对于间接窗口,其显示范围有两种处理方式:
- 预定义区域:先在当前窗口上绘制一个矩形区域。弹出的窗口内容会在这个区域内显示,且不会超出该区域的宽度和高度。
- 自动调整:勾选“自动调整窗口尺寸”功能。启用后无需预先绘制区域,系统会根据要弹出窗口的原始尺寸,自动调整并显示在当前窗口之上。
想要关闭一个由间接窗口弹出的子窗口,只需将其控制的字寄存器数值设置为 0 即可。
如何配置间接窗口?
在EasyBuilder Pro软件中,点击任务栏的【元件】->【嵌入窗口】->【间接窗口】按钮,即可打开其属性设置对话框。

在“一般属性”页中,有几个关键设置项:
- 窗口控制条:勾选此项后,弹出的子窗口会带有一个控制条。用户可以通过拖动这个控制条来移动子窗口的位置。

- 读取地址:在这里设置控制设备和地址(例如
Local HMI 的 LW 寄存器)。当你改变该地址内的数值为一个有效的窗口编号(如10, 11, 20等)时,对应的窗口内容就会显示在弹出区域。显示的比例和位置可以在“位置”页进行详细设定。
- 使用窗口编号偏移量:这是一个容易让人困惑但很实用的功能。勾选后,读取地址中的数值会加上这里设置的偏移量,其结果才是最终生效的窗口编号。默认偏移量是
-10。这是因为新建项目时,第一个窗口的默认编号是10。设置偏移量为-10后,当你在地址中写入 10,系统实际会去寻找编号为 0 (10 + (-10)) 的窗口,这通常用于匹配一些从0开始计数的编程习惯。
接下来看“位置”属性页,这里决定了窗口如何呈现。

- 自动调整窗口尺寸:如前所述,勾选此项后,系统会自动根据目标窗口的原始尺寸进行显示,并按照设定的“对齐”方式(如左上角、居中)来摆放。这省去了手动绘制显示区域的步骤,非常方便。
关闭弹出窗口除了向控制字寄存器写 0 之外,还有一个更友好的方法:你可以在弹出窗口本身上,放置一个 [功能键] 元件,将其模式设置为 “关闭窗口”。这样,用户点击这个功能键,就能直接关闭当前所在的弹出窗口,无需去操作背后的寄存器。这体现了良好的人机交互设计。
直接窗口又是如何工作的?
直接窗口 的用法与间接窗口非常相似,主要区别依然是控制逻辑。它使用位寄存器的状态来触发。
首先,你同样需要在当前窗口上定义一个显示区域。当指定的位寄存器状态从 OFF 变为 ON 时,预设的窗口内容就会在这个区域内显示出来,其尺寸同样不会超出预定义区域。将该位寄存器的状态恢复为 OFF,即可关闭这个弹出窗口。
简单来说,两者的核心差异可以归结为:直接窗口是“开关式”控制(位信号),间接窗口是“选台式”控制(字数值)。理解了这个底层逻辑,就能更好地根据实际的控制系统需求来选择合适的元件。
一个简单的类比
是不是觉得它和 功能键 切换基本窗口的功能有点像?确实,它们都能带来界面跳转。但功能键通常一个按键只能固定切换到一个指定的页面。而间接窗口的强大之处在于,一个间接窗口元件,可以通过改变其控制地址中的数值,动态地切换显示多个不同的窗口内容,大大提升了界面设计的灵活性和复用性。这种基于地址和数值的映射思想,在许多底层系统设计中都能见到踪影。
|