部分: Visu
SEC Visu //optional: yes, modifier: [UPDATE] Toplevel_Tab; //optional: yes, type: bool Embedded := [%PAGE_VISU%, <visu1>,...]; //optional: yes, type: VisuList Embedded_Proxy := [%PAGE_VISU%, <visu1>,...]; //optional: yes, type: VisuList Page =: [<visu1>, <visu2>,...]; //optional: yes, type: VisuList SEC DefaultEmbeddings //optional: yes SEC Embedding : <visu identifier> //optional: yes, modifier: [HIDE, UPDATE] VisuName := <visu name>; //optional: no, type: literal Target := <target name>; //optional: yes, type: literal ProxyVisuName := <visu name>; //optional: yes, type: literal LinkId := <linkID>; //optional: yes, type: literal END_SEC END_SEC SEC Toplevel_Tab_Hotkey //optional: yes Hotkey := <keycode>; //optional: no, type: literal Modifiers := <modifier>; //optional: yes, modifier: [SHIFT, CONTROL, ALT] END_SEC END_SEC
有关定义类型语法的详细信息,请参阅 部分 模块声明。
Toplevel_Tab
定义复选框是否 创建顶级选项卡 默认情况下,HMI 编辑器中的激活或禁用。Page
定义模块可用可视化对象的列表。Embedded
定义将嵌入其他可视化屏幕中的子模块的可用可视化对象的列表。使用占位符
%PAGE_VISU%
代替可视化名称,生成的可视化屏幕可以选择性地嵌入到其他屏幕中。Embedded_Proxy
定义模块的可用可视化对象的列表。该列表仅在以下情况下使用:decoupled module
被插入到一个decoupled slot
如果它不是在其父模块实例的控制器下创建的(作为代理)。对于导入另一个模块的模块,占位符
%NONE%
可以用来代替可视化名称。这会导致导入的可视化被隐藏。这种方法适用于可视化屏幕列表以及嵌入式(代理)可视化屏幕。部分:
DefaultEmbeddings
:此部分用于默认嵌入的规范,然后它将作为预配置出现在 人机界面 子模块的选项卡(类似于“Default_Allocation”部分,请参阅部分:老虎机
)。所需的默认嵌入将在小节中描述Embedding
。要求:指定的可视化对象和代理必须在模块的可能嵌入列表中可用(参见上文:
Embedded
和Embedded_Proxy
)。部分:
Toplevel_Tab_Hotkey
:此部分将热键定义为顶层页面的默认设置。键盘快捷键不得多次使用。可以在模块编辑器中调整此设置 人机界面 标签。
SEC Visu Toplevel_Tab ; Page := [VISU_CNC_Machine_1, VISU_CNC_Machine_2]; Embedded := [%PAGE_VISU%]; SEC DefaultEmbeddings SEC Embedding : No1 VisuName := SubModule_Emb; Target := '../../TopLevel_2'; END_SEC SEC Embedding : No2 VisuName := SubModule_Emb_2; //ProxyVisuName := SubModule_Emb_1; Target := '';// leave empty for next ancestor END_SEC END_SEC SEC Toplevel_Tab_Hotkey Hotkey := T; Modifiers := SHIFT | CONTROL; END_SEC END_SEC
可视化名称是相应可视化对象的名称(不区分大小写)。可视化对象必须与模块功能块处于同一层级。
所有可视化对象和嵌入式可视化对象都可以有一个名称为 VAR_IN_OUT 的变量
inst
,它可以是模块功能块的类型或基类的类型。变量名不区分大小写。VAR_IN_OUT
inst : <MODULE_FB> ;
END_VAR
作为此处描述的 VAR_IN_OUT 选项的替代方案,还可以使用 VAR_INPUT 变量。该变量必须满足以下要求:
姓名:
inst
类型:模块功能块实现的接口
嵌入式可视化对象可以有两个附加变量(变量名称不区分大小写):
VAR_INPUT
paVisuFB : POINTER TO POINTER TO AC_Visu_Base ;
iOwnFrameIndex : INT ;
END_VAR
这些变量必须一起定义;不允许只定义一个而没有另一个。这两个变量使嵌入式可视化能够切换顶层可视化中的中心框架。
paVisuFB
是一个指针数组AC_Visu_Base instances
。使用全局可视化变量CURRENTCLIENTID
访问当前客户端的正确实例。帧切换由以下形式的 ST 操作执行:paVisuFB[CURRENTCLIENTID]^.uiFrameIdx := iOwnFrameIndex ;
iOwnFrameIndex
是本模块的可视化图像在该顶层框架中的索引。 (如果自己的模块没有定义可视化图像,则该索引为-1。)除了上面提到的变量之外,不允许使用其他 VAR_INPUT、VAR_OUTPUT 或 VAR_INOUT 变量。
这
AC_Visu_Base
实例提供附加功能GetModuleFrameIndex
。此函数返回模块实例的顶级可视化中可视化屏幕(如果存在)的索引(请参阅IModule
在AC_Module_Base.library)
。通过此功能,您可以跳转到模块实例树中的任何可视化屏幕。为了还启用模块代码内的导航,模块的环境(请参阅IModule
在AC_Module_Base.library
)拥有一名会员,Environment.visus
,对应于上面提到的paVisuFB
指针。
提示
能够使用变量 CURRENTCLIENTID
, 图书馆 VisuGlobalClientManager
(类别“Intern|Visu”)必须添加到项目中。
第一个可视化将用作默认设置。