Skip to main content

部分: 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

    要求:指定的可视化对象和代理必须在模块的可能嵌入列表中可用(参见上文: EmbeddedEmbedded_Proxy)。

  • 部分: Toplevel_Tab_Hotkey:此部分将热键定义为顶层页面的默认设置。键盘快捷键不得多次使用。可以在模块编辑器中调整此设置 人机界面 标签。

23. 例子
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。此函数返回模块实例的顶级可视化中可视化屏幕(如果存在)的索引(请参阅 IModuleAC_Module_Base.library)。通过此功能,您可以跳转到模块实例树中的任何可视化屏幕。为了还启用模块代码内的导航,模块的环境(请参阅 IModuleAC_Module_Base.library)拥有一名会员, Environment.visus,对应于上面提到的 paVisuFB 指针。

提示

能够使用变量 CURRENTCLIENTID, 图书馆 VisuGlobalClientManager (类别“Intern|Visu”)必须添加到项目中。

第一个可视化将用作默认设置。