IEC 61131-3 的扩展的属性可用作面向对象的编程的方法。其由一对访问器方法(Get、Set)组成。它们允许将 POU 或 GVL 内部声明的变量的读取或写入访问封装到函数调用中,同时保持变量访问语法。
要将属性作为对象在程序或功能块、GVL 或接口节点下插入,可在应用程序树中选择节点,单击绿色加号按钮,并执行命令属性。作为备选方法,可右键单击节点并从上下文菜单执行命令添加对象 > 属性。
在添加属性对话框中,指定名称、返回类型、所需实现语言以及可选择指定的 Access Specifier。
可使用和用于方法的一样的访问说明符:
oPUBLIC
oPRIVATE
oPROTECTED
oINTERNAL
注意: 也可在接口中声明属性。
EcoStruxure Machine Expert 利用功能块内的继承简化面向对象的编程:当在继承自另一功能块的功能块上执行添加对象时,列出基本功能块中使用的动作、方法、属性和转换元素以供选择:
o在基本功能块中定义的访问说明符为 PUBLIC、PROTECTED 和 INTERNAL 的动作、方法、属性和转换元素可供选择。您可以调整继承对象的定义。在继承对象中,将相同的访问说明符分配给源元素。
o访问说明符为 PRIVATE 的动作、方法、属性和转换不可选择,因为对基本功能块的访问受限。
名为访问器的两个特殊方法将自动插入应用程序树中的属性对象下。如果属性只能用于写入或读取,可删除其中一个。和属性一样(请参阅之前内容),可在显式添加访问器时,通过添加对象对话框在声明部分向访问器分配访问修饰符。
oSet 访问器在写入属性时被调用。
oGet 访问器在读取属性时被调用。
示例:
功能块 FB1 具有使用本地变量 milli 的属性 seconds。该变量由属性 Get 和 Set 确定:
Get 实现示例
seconds := milli / 1000;
Set 实现示例
milli := seconds * 1000;
您可写入功能块的属性(Set 方法),例如通过 fbinst.seconds := 22; 来写入。
(fbinst 是 FB1 的实例)。
您可读取功能块的属性(Get 方法),例如通过 testvar := fbinst.seconds; 来读取。
在下面的示例中,会将属性 seconds 分配至功能块 FB1:
属性可具有额外的局部变量但是没有额外的输入,并且和功能或方法相比也不能有额外输出。
注意: 将方法或属性从 POU 复制或移动到接口时,将自动删除包含的实现。从接口复制或移动到 POU 时,需要指定所需的实现语言。
可借助内联监视或监视列表于在线模式下监视属性。监视属性的前提条件是在其定义的顶部添加 pragma {attribute 'monitoring' := 'variable'} (请参阅属性监控一章)。