使用变量配置将功能块的变量映射到流程图。对于功能块中的声明,将变量分配给设备输入/输出,而不提供完整地址。之后,将在全局变量列表(包括VAR_CONFIG
声明)中为应用程序的所有功能块实例集中提供确切地址。这个包含VAR_CONFIG
声明的全局变量列表被称为 "变量配置"。




注意

对于分配给 I/O 地址的变量的更改,CODESYS 会立即显示在流程图中。对于由变量配置映射的变量变化,CODESYS 在负责任务结束前不会显示。
在功能块中声明变量
在函数块中声明变量时,应在关键字VAR
和END_VAR
之间声明变量,并为变量分配不完整的地址。用星号 (*
) 标记这些不完整的地址。
语法
<identifier> AT %<I|Q>*:<data type>;
示例
定义两个本地 I/O 变量:输入变量xLocIn
和输出变量xLocOut
。
FUNCTION_BLOCK locio VAR xLocIn AT %I*: BOOL := TRUE; xLocOut AT %Q*: BOOL; END_VAR
全局变量列表变量配置中地址的最终定义
在用作变量配置的全局变量列表中,用关键字VAR_CONFIG
和END_VAR
之间的绝对地址定义变量声明。
您必须用完整的实例路径声明VAR_CONFIG
变量,并用点(.)分隔各个 POU 和实例名称。声明中必须包含一个地址,其类别(输入/输出)必须与功能块中的不完整地址(%I*、%Q*)的类别一致。数据类型也必须一致。
语法
<instance variable path> AT %<I|Q><location>: <data type>;
如果路径实例不存在,则会报错。如果您用不完整的地址声明的变量没有可用的地址配置,CODESYS 也会打印错误信息。
示例
上例中的locio
功能块在程序中的使用如下:
PROGRAM PLC_PRG VAR locioVar1: locio; locioVar2: locio; END_VAR
全局变量列表中的正确变量配置可以如下所示:
VAR_CONFIG PLC_PRG.locioVar1.xLocIn AT %IX1.0 : BOOL; PLC_PRG.locioVar1.xLocOut AT %QX0.0 : BOOL; PLC_PRG.locioVar2.xLocIn AT %IX1.0 : BOOL; PLC_PRG.locioVar2.xLocOut AT %QX0.3 : BOOL; END_VAR
创建变量配置
要求:您打开了一个项目,其中包括带有现场设备的控制器配置。该项目包含一个程序(如PLC_PRG
)和一个功能块(如func1
)。现场设备有输入和输出。在声明编辑器的选项中选择文本视图。
在功能块中,将变量分配给地址不完整的设备 I/O,然后创建变量配置。
-
双击设备树中的功能块(如
func1
)。功能块编辑器打开。
-
在关键字
VAR
和END_VAR
之间键入以下内容:在下一行中键入xLocIn AT %I*: BOOL := TRUE;
和XLocOut AT %Q*:BOOL;
。您声明了一个输入变量
xLocIn
,并将其分配给现场设备的不完整输入地址%I*
。您已将已声明的输出变量分配给不完整的输出地址%Q*
。 -
单击设备树中的
PLC_PRG
对象,然后在VAR
和END_VAR
之间的程序声明部分添加以下内容:locioVar1: func;
locioVar2: func;
-
右键单击设备树中的 “Application” 对象,然后单击“Add Object Global Variable List”,然后在 “Add Global Variable List” 对话框中单击 “Add”。
全局变量列表将添加到设备树中,并在编辑器中打开。
-
将关键字
VAR_GLOBAL
更改为VAR_CONFIG
。 -
单击“声明 添加所有实例路径” 。
添加了以下实例路径:
PLC_PRG.logioVar1.xLocIn AT %I*;
PLC_PRG.logioVar2.xLocIn AT %I*;
PLC_PRG.logioVar1.xLocOut AT %Q*;
PLC_PRG.logioVar2.xLocOut AT %Q*;
-
现在,将不完整的地址
%I*
和%Q*
替换为绝对完整的地址。