Visu:带和不带直接传递变量的对话框({attribute 'VAR_IN_OUT_AS_POINTER'})
- 创建标准项目并选择 CODESYS Control Win V3 作为设备。
- 通过网络扫描连接目标系统。

- 创建并编辑一个名为 FB_Sample 的 FB,如下所示:
声明
FUNCTION_BLOCK FB_Sample
VAR_INPUT
byInstanz : BYTE;
END_VAR
VAR
udiCount : UDINT;
xReset : BOOL;
udiValue : UDINT;
sText : STRING := 'Input something';
END_VAR
VAR CONSTANT
c_udiOffset : UDINT := 10000;
END_VAR
实现
udiCount := udiCount+1;
udiValue := byInstanz * c_udiOffset + udiCount;
IF udiValue >= (byInstanz+1) * c_udiOffset THEN
udiValue := byInstanz * c_udiOffset;
END_IF
IF xReset THEN
udiCount := 0;
END_IF
- 修改 PLC_PRG 如下:
声明
PROGRAM PLC_PRG
VAR
fbSample1 : FB_Sample := (byInstanz := 1);
END_VAR
实现
fbSample1();
- 在设备树中插入可视化。 然后 Visualization Manager 会自动插入可视化类型 TargetVisu 和 WebVisu。 此外,还会自动创建一个 VISU_TASK。

- 创建一个名为 dlgSample 的附加可视化 。 从上下文菜单中,打开并设置页面的属性对话框,如下所示:

- 从 Visualization/Interface Editor 中,打开并编辑界面编辑器,如下所示:

在页面上设置一个矩形用于显示计数器值,编辑属性如下:

复制元素并编辑属性,如下所示:

设置一个额外的矩形元素并编辑属性如下:

复制矩形并编辑属性如下:

- 为了显示 FB 的当前值并调用对话框,我们编辑 Visualization 页面。 设置一个矩形,编辑属性如下:

打开对话框文本和变量格式 %u 之间的换行符是使用组合键 [Ctrl] + [Return] 进行的。
分配输入配置时,您还必须在对话框中设置以下属性:

在页面上设置一个额外的矩形,编辑属性如下:

- 将项目加载到控制器并启动它。 现在当您打开对话框时,您会注意到对话框中的值没有改变,或者在对话框关闭之前对文本的调整不会传递给变量:

- 为了直接传递变量和对话框元素之间的更改,必须将属性 VAR_IN_OUT_AS_POINTER 添加到对话框的接口,其中必须考虑大写/小写:

添加属性后,必须再次执行Build/Clean all,然后再次将程序下载到控制器中。
现在值应该更新为“在线”:
