接口属性

一个 "属性", 在CoDeSys中作为一种面向对象的编程方式,除了作为方法和程序使用之外,也可以用于 “接口”接口的定义。在这种情况下命名为接口属性可以通过命令 “添加对象” / 接口属性添加到选定的设备树中

更多有关属性和它的操作方法,请参阅 “属性”

一个接口属性是接口的扩展描述。这意味着像接口本身一样,它只定义了些属于接口的 'get' 和/或者 'set' (可以两者都应用或者利用两者之一),但是他们没有提供任何的实现代码。当一个功能块在接口扩展的时候包含属性,这些属性和与它们相关的 get 和/或者 set 存储器将自动的插入到设备树下的功能块对象中,然后可以通过编辑添加实现代码。

示例

查看以下图表:接口NamedItem已经包含属性Name含有Get和一个Set访问方式。本例中的Get用于读取实现功能块接口的名称,Set方式用于写入一个名称到功能块中。所有的方法都不能在接口内进行编辑,但是可以在之后的功能块中进行编辑。

在当前的功能块示例中FB_Name_xy1:已经添加到设备树中,包含接口的实现(FUNCTION_BLOCK FB_Name_xy1 IMPLEMENTS NamedItem)。所以属性Name含有GetSet方法机会自动添加到FB_Name_xy1功能块下。在这里可以进行方法的编辑,例如通过一种方式读取name_of_xy1变量,因此项目的名称可以 "获得"。在另一个功能块中,也包含相同的接口,方法Get可以用其他的代码去实现,去读取其他项目的名称。示例中的Set方式用于将程序定义的名称PLC_PRG ('abc')写入功能块FB_Name_xy2

插图 17: 在两个功能块中实现项目命名的接口

两个功能块实现接口命名:

功能块 FB_Name_xy1

FUNCTION_BLOCK FB_Name_xy1 IMPLEMENTS NamedItem
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    name_of_xy1: STRING:='xy1';
END_VAR
 

功能块 FB_Name_xy2

FUNCTION_BLOCK FB_Name_xy2 IMPLEMENTS NamedItem
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    name_of_xy2: STRING:='xy2';
 name_got_from_PLC_PRG: STRING;
END_VAR
 

在以下的功能块中 Get 和 Set 实施代码:

FB_Name_xy1.Get

VAR
END_VAR
name := name_of_xy1;
 

FB_Name_xy2.Get

VAR
END_VAR
name := name_of_xy2;
 

FB_Name_xy2.Set

VAR
END_VAR
name_got_from_PLC_PRG:=name;
 

程序 PLC_PRG中的代码实现

PROGRAM PLC_PRG
VAR
    FBxy1_inst: FB_Name_xy1;
    FBxy2_inst: FB_Name_xy2;
    namexy1: STRING;
    namexy2: STRING;
END_VAR

//get name out of fb
namexy1:=FBxy1_inst.Name;
namexy2:=FBxy2_inst.Name;
//write name to fb
FBxy2_inst.Name:='abc';