在大多数情况下,使用 pragma{attribute 'hide'} 隐藏变量和 POU 并不能达到预期效果。相反,您应该使用 pragma{attribute 'conditionalshow'} 。
该pragma可防止在CODESYS 用户界面上显示用其定义的变量和 POU。因此,您可以有意隐藏这些标识符,而不限制访问。这在开发图书馆时非常有用。
受影响的功能:
-
库管理
-
调试
-
输入助理
-
功能 "列出组件"
-
监测
-
符号配置
使用该pragma定义的变量或 POU 既不会在库管理器中显示,也不会在输入助手或 "组件列表 "功能中显示。该 pragma 阻止在符号配置中显示这些被标记的变量。因此,不能将这类变量作为符号导出。这些变量在联机模式下也是不可见的,因此无法监控其值。此外,您不能使用任何调试功能,在检查错误时也得不到任何支持。
语法 :
{attribute 'hide'}
插入位置:对于变量,在变量声明行的上方。对于 POU,在第一行。
如果应用程序开发人员知道隐藏 POU 和变量的确切实例路径,就可以在代码中访问它们。
隐藏变量示例
功能块FB_MyA 包含属性 pragma{attribute 'hide'} ,用于隐藏本地变量xInvisibleIn 。
FUNCTION_BLOCK FB_MyA
VAR_INPUT
iInA : INT;
{attribute 'hide'}
xInvisibleIn : BOOL;
xInit: BOOL;
END_VAR
VAR_OUTPUT
iOutA : INT;
END_VAR
VAR
iCounter : INT;
END_VAR
主程序中定义了两个功能块实例FB_MyA 。
PROGRAM PLC_PRG VAR fbMyA1, fbMyA2 : FB_MyA; xVar2 : BOOL; iVar1 : INT; iVar2 : INT; END_VAR fbMyA1(iInA := 1, xInit := TRUE, xInvisibleIn := TRUE, iOutA => iVar1); fbMyA2(iInA := 1, xInit := TRUE, iOutA => iVar2);
当fbMyA1 的输入值被执行时,输入fbMyA1. 时打开的 "List components "函数(在PLC_PRG 的执行部分)会显示变量iInA 、xInit 和iOutA ,但不会显示隐藏变量xInvisibleIn 。
隐藏式库 POU 示例
FB_A 是HiddenFunctionality 库的一个功能块,默认命名空间为HIDDEN 。要向应用程序开发人员隐藏标识符和 POU 代码,可在 POU 声明的开头使用属性 pragma{attribute 'hide'} 。要以同样的方式隐藏下级 POU(动作、方法、属性和转换),也应以{attribute 'hide'} 开始声明。
{attribute 'hide'}
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
iA : INT;
iCount : INT;
iInvisible : INT;
END_VAR
{attribute 'hide'}
METHOD METH_Count : INT
VAR_INPUT
END_VAR
iCount := iCount + 1;
{attribute 'hide'}
METHOD METH_Invisible : BOOL
VAR_INPUT
END_VAR
iInvisible := iInvisible + 1;
{attribute 'hide'}
PROPERTY PUBLIC prop_iA : INT
对于应用程序开发人员来说,所有 POU 都是不可见的。只有知道实例路径,才能使用它们。
PROGRAM PLC_PRG VAR fbHidden : HIDDEN.FB_A; // Hidden function block from library HiddenFunctionality iCounter : INT; END_VAR fbHidden.METH_Invisible(); iCounter := fbHidden.iInvisible;
在联机模式下,不执行监控。

使用 pragmahide_all_locals 可以隐藏 POU 的所有局部变量。