标志
关键词: INTERFACE
接口是面向对象编程的一种手段。对象ITF
描述了一组方法和属性原型。在这里,原型指的是方法和属性只包含声明而不包含实现。
这样,具有共同属性的不同功能块就能以相同的方式使用。使用命令“Project Add Object Interface” 将对象“ITF” 添加到应用程序或项目中。
“Inheritance” |
|
“名称” |
接口名称 |
“扩展” |
|
您可以将对象“Interface property” 和“Interface Method” 添加到对象“ITF” 中。接口方法可能只包含输入、输出和输入/输出变量的声明,而不包含实现。
为了在程序中也能使用接口,必须有一个实现该接口的功能块。
这意味着
-
功能块在其声明部分的 IMPLEMENTS 列表中包含接口
-
功能块包含接口的所有方法和属性原型的实现
一个功能块可以实现一个或多个接口。您可以在不同的功能块中使用参数相同但执行代码不同的方法。
请注意以下几点:
-
不得在接口中定义变量。接口没有实现部分,也没有动作。只定义方法集合,其中只能定义输入、输出和输入/输出变量。
-
CODESYS 总是将以接口类型声明的变量视为引用。
-
实现接口的功能块必须包含接口方法的实现代码。您对方法的命名与接口中的完全相同,方法中包含的输入、输出和输入/输出变量也与接口中的相同。




注意

界面参考和在线更改
编译器版本 < 3.4.1.0 时可能会出现以下情况:如果函数块因添加或删除变量或变量类型发生变化而改变数据,那么CODESYS 会将函数块的所有实例复制到新的内存位置。但在这种情况下,接口引用指的不是新的内存位置,而是旧的内存位置。
在编译器版本大于等于 3.4.1.0 的情况下,CODESYS 会自动对接口引用进行重新编址,以便在在线更改时,CODESYS 也能引用正确的接口。CODESYS 需要额外的代码和更多的时间来完成这项工作,因此可能会出现抖动问题,这取决于相关对象的数量。因此,在执行联机更改之前,CODESYS 会显示相关变量和接口引用的数量,然后您就可以决定是执行联机更改还是中止联机更改。
示例
接口定义及其在功能块中的使用
您已在应用程序下方插入了接口“ITF” 。接口包含“Method1” 和“Method2” 方法。“ITF”,“Method1” 和“Method2” 不含执行代码。您只需在方法的声明部分插入所需的变量声明。
如果随后在设备树中插入实现接口“ITF” 的功能块,CODESYS 也会自动在功能块下插入方法“Method1” 和“Method2” 。在这里,您可以在方法中执行特定于功能块的代码。
