Skip to main content

使用接口调用对话框

您可以为称为对话框的可视化定义一个界面。

使用可视化类型为此创建可视化 对话 并为对话框声明一个接口。通过用户输入在初级可视化中引用可视化并将参数传输到界面。

当您将可视化调用为集成可视化时,传递的参数必须是基本数据类型的变量。如果将可视化项命名为 CODESYS TargetVisu 或者 CODESYS WebVisu,则参数也可以具有自定义数据类型。

主要程序

  1. 将可视化的可视化类型设置为对话框。

  2. 在对话框的界面编辑器中声明变量。

    该对话框有一个界面。您可以在调用对话框时传递参数。

  3. 配置对话框的元素并使用接口变量。

  4. 在另一个可视化(通常是主可视化)中选择一个元素来配置对话框的打开方式。

  5. 在里面 输入配置 → OnMouseDown 属性,点击 配置.

    输入配置 对话框打开。

  6. 选择 打开对话框 在选定的输入操作列表中。

  7. 从中选择一个 对话 列表框。

    如果所选对话框具有接口,则接口变量在下面列出。

  8. 将传递参数分配给接口变量 价值 柱子。

  9. 更新 _cds_icon_output_channel.png _cds_icon_varinout.png 如果是结果,则为参数 列表,选择应更新参数的结果。

  10. 激活选项 打开对话框模式.点击 好的 退出对话框。

    对话框打开已配置。

提示

同时执行多次对话需要对话的多个实例。在下载应用程序时,这些必须已经下载到可视化设备。为此,请在可视化管理器中设置要下载的实例数 (可视化 标签)。

注意

0_Sample_Project 示例项目: 对话框

示例

在下面,您将找到实现的示例 visMain 可视化和 visChangeUserLevel 对话框。

19. 主要可视化: visMain
_visu_img_vismain.png
7. 的元素清单 visMain 可视化

类型

姓名

元素属性

描述

Text Field

用户等级

文本 → 文本 : %i

带占位符的输出

文本变量 → 文本变量PLC_PRG.iLevel

的分配 PLC_PRG.iLevel 变量到占位符。包括级别编号。

Button

Button for change user level

文本 → 文本Change user level

输入配置 → onMouseDown → 打开对话框: Open Dialog: visChangeUserLevel

当用户点击 Change User Level 按钮, visChangeUserLevel 对话框打开,参数列表存储在这里。

提示:点击 配置 查看存储在中的配置 输入配置 对话框 → 打开对话框 输入操作。





20. 按钮的输入配置

这个 打开对话框 为 “更改用户级别” 按钮实现了输入操作。结果,一个对话框打开 (OnMouseClick))。

对话框

visChangeUserLevel

该列表框自动提供所有已配置为对话框的项目范围的可视化效果。

sItfTitle

STRING

'Change user level'

传输标题的字符串。

sItfLevel0

STRING

'pwd0'

传输一个字符串作为 Level0 的密码。

sItfLevel1

STRING

'pwd1'

传输一个字符串作为 Level1 的密码。

sItfLevel2

STRING

'pwd2'

传输一个字符串作为 Level2 的密码。

sItfLevel3

STRING

'pwd3'

传输字符串作为 Level3 的密码。

sItfLevel4

STRING

'pwd4'

传输字符串作为 Level4 的密码。

sItfLevel5

STRING

'pwd5'

传输一个字符串作为 Level5 的密码。

sItfLevel6

STRING

'pwd6'

传输字符串作为 Level6 的密码。

sItfLevel7

STRING

'pwd7'

传输一个字符串作为 Level7 的密码。

iItfLevel

INT

PLC_PRG.iLevel

为用户指定的级别传输变量。

sItfPwd

STRING

PLC_PRG.sPwd

传递密码变量。

8. 清单:“更新 _visu_icon_output.png_visu_icon_inout_parameter.png 如果是结果,则为参数”

使用

价值

_cds_icon_option_activated.png

好的

当可视化用户单击按钮时,对话框将打开并返回 “确定” 结果。



_cds_icon_option_activated.png 打开对话框模态

因此,启用后,无法在对话框之外进行输入。



21. 对话框: visChangeUserLevel

该对话框提供了用于选择级别和输入密码的元素。

如果密码匹配,那么 好吧 按钮已启用。然后,用户可以关闭对话框。关卡的输入也适用。

_visu_img_dialog_change_user_level.png

对话框接口声明 visChangeUserLevel

VAR_INPUT
    sItfTitle: STRING; // titel of the dialog box
    sItfLevel0: STRING; //password level 0
    sItfLevel1: STRING; //password level 1
    sItfLevel2: STRING; //password level 2
    sItfLevel3: STRING; //password level 3
    sItfLevel4: STRING; //password level 4
    sItfLevel5: STRING; //password level 5
    sItfLevel6: STRING; //password level 6
    sItfLevel7: STRING; //password level 7
END_VAR
VAR_IN_OUT
    iItfLevel: INT; // user input: level
    sItfPwd: STRING; //user input: password
END_VAR                        
9. 对话框的元素列表

类型

姓名

元素属性

描述

#0 Image

Background

静态 IDVisuDialogs.ImagePoolDialogs.Login

该属性将具有灰色背景和空白蓝色标题栏的空白对话框的图像分配给该元素。该图像包含在 VisuDialog 图书馆。

#1 Rectangle

Title

文本 → 文本%s

带有文本变量占位符的输出

文本变量 → 文本变量sItfTitle

接口变量的赋值 sItfTitle 在调用时传输参数。

#2 Radio button

Input level

多变的iItfLevel

接口变量的赋值 iItfLevel 在调用时传输参数。包括运行时的用户输入。

列数4

单选按钮顺序左到右

展示

单选按钮设置 → 单选按钮 → 区域: [0] 至 [7]

[<n>] → 文本: <n>

数字从 0 到 7 的八个单选按钮的标签

#3 Text field

Input password

文本 → 文本%s

带有文本变量占位符的输出

文本变量 → 文本变量sItfPwd

接口变量的赋值 sItfPwd 在调用时传输参数。包括运行时的用户输入。

输入配置 → OnMouseDown → 写入变量Variable:,InputType:Edit,Use text output variable: TRUE

在里面 输入配置 对话, 文字输入 被选为 输入类型 列表框和选项 使用文本输出变量 被激活。

#4 Text field

Label for level

文本 → 文本Level:

标签

#5 Text field

Label for password

文本 → 文本Password

标签

#6 Button

OK

文本 → 文本OK

标签

颜色 → 颜色Element base color

颜色 → 报警颜色Alarm filling color

以状态相关颜色配置显示。您可以在颜色之间切换。

颜色变量→切换颜色sItfPwd <> MUX(iItfLevel, sItfLevel0, sItfLevel1, sItfLevel2, sItfLevel3, sItfLevel4, sItfLevel5, sItfLevel6, sItfLevel7);

如果密码和用户输入不一致,则表达式为 TRUE.然后按钮以报警颜色显示。

状态变量 → 停用输入sItfPwd <> MUX(iItfLevel, sItfLevel0, sItfLevel1, sItfLevel2, sItfLevel3, sItfLevel4, sItfLevel5, sItfLevel6, sItfLevel7);

如果密码和用户输入不一致,则表达式为 TRUE.该按钮已停用。

如果密码一致,则启用该按钮。

输入配置 → onMouseDown → 关闭对话框: Close Dialog: visChangeUserLevel, Result: OK

如果用户点击 好的 按钮,然后 visChangeUserLevel 对话框关闭并更新参数。

#7 Button

Cancel

文本 → 文本Cancel

标签

颜色 → 颜色Element base color

展示

输入配置 → onMouseDown → 关闭对话框: Close Dialog: visChangeUserLevel, Result: Cancel

如果用户点击 取消 按钮,然后 visChangeUserLevel 对话框关闭。





22. 输入配置:确定按钮
10. 清单:“更新 _visu_icon_output.png_visu_icon_inout_parameter.png 如果是结果,则为参数”

_cds_icon_option_activated.png

好吧

当可视化用户单击按钮时,对话框将打开并返回 “确定” 结果。





23. 输入配置:取消按钮
11. 清单:“更新 _visu_icon_output.png_visu_icon_inout_parameter.png 如果是结果,则为参数”

_cds_icon_option_activated.png

取消

当可视化用户单击按钮时,对话框将打开,并返回 “取消” 结果。





24. 的实施 PLC_PRG:
PROGRAM PLC_PRG
VAR
    iLevel: INT;
    sPwd : STRING;
END_VAR                       


25. 运行时可视化
_visu_img_vismain_rt.png

单击按钮后,对话框打开并允许输入。如果指定的文本与存储的文本一致,则 好的 已启用:

_visu_img_vismain_open_dialog_rt.png

点击后 好的,应用选择。

_visu_img_vismain_level4_rt.png


提示

该示例显示了多个返回值的过程。但是,使用对话框中的局部变量可以更轻松地返回密码。

以编程方式访问参数

在可视化界面中声明的变量可自动用作结构变量。它们由 <name of visualization>_VISU_STRUCT.因此,您可以访问显示为对话框的可视化界面变量。通常,您在由用户输入调用的函数的应用程序代码中使用该结构。

将指针作为参数传递

要传递复杂的数据结构,您可以标记类型的接口变量 VAR_IN_OUT 带有 pragma 属性 VAR_IN_OUT_AS_POINTER 并将指针或引用作为参数传递。

过程. 使用参考的程序
  1. 声明用户数据对象 (DUT)。

  2. 在对话框的界面编辑器中,声明一个界面变量(VAR_IN_OUT) 通过分配属性作为对数据对象的引用 'VAR_IN_OUT_AS_POINTER' 到变量。

  3. 对用户界面进行编程:在可视化中使用对话框或在可视化元素的输入配置中分配对话框。然后可以访问引用的数据。

26. 示例:使用带有 “VAR_IN_OUT_AS_POINTER” 编译指示的接口
FUNCTION_BLOCK ControlFB
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    bOk : BOOL := TRUE;
    nCounter : INT;
    nValue : INT;
END_VAR
nCounter := nCounter + 1;
                        

使用以下命令声明接口变量 VAR_IN_OUT_AS_POINTER

_visu_img_varinoutaspointer_example.png

用户界面: 对话框打开:

_visu_img_varinoutaspointer_dialog_example.png