CODESYS帮助页把Interface放在对象列表中,但这个对象并不是一段已经能完成工作的程序。文档首先给出的是方法和属性的原型集合;所谓原型,包含声明而不包含实现。读PLC软件资料时,这个起点很关键:知道某个接口叫什么,还没有知道背后实际执行哪一套逻辑。
原型提供了共同的描述方式。帮助页说,具有共同属性的不同功能块,可以因此按同一种方式使用。共同之处不是它们内部的代码必须一模一样,而是接口先规定了可以面对哪些方法与属性。接口在这里联系的是使用形式与实现对象,并没有把多个功能块压成同一份实现。
文档接着把责任落到功能块上:要使用一个接口,需要有实现该接口的功能块,而且该功能块须提供接口全部方法和属性原型的实现。“全部”不能只当成一个大致范围;若资料只提到其中一个方法,还不能由这一项便说清完整接口的实现关系。这里解释文档的要求,没有检查任何项目是否已经满足它。
相同方法、相同参数与不同代码可以同时成立,是原页明确列出的情形。两个功能块即使向使用者提供同名、同参数的方法,也可以在各自内部采用不同的实现代码。因而,公共声明能说明交流的形式,却不能独自说明内部处理过程,更不能仅凭接口相同就认定两个对象的运行结果或性能已经相同。
数量关系也有自己的范围。一个功能块可以实现一个或多个接口;这说的是功能块与接口之间的对应,并没有使接口本身产生执行内容。原页特别说明,接口没有实现部分,也没有actions。把“实现多个接口”转述成“复制了多段接口执行代码”,就会跳过原文对声明与实现的区分。
变量描述需要在同一层次下理解。接口方法可以声明输入、输出和VAR_IN_OUT变量,但文档又禁止在接口本体中定义普通变量。两句话并不冲突:前者交代方法原型所需的参数,后者限制接口对象自身的内容。不能从原型中出现变量名称,便推断接口保存着功能块那样的一组内部状态。
对整理控制软件说明的人,这份帮助页可以回答一个具体问题:共同约定放在哪里,具体实现由谁承担。本篇只采用原型与实现关系的连续说明,首次发布日期未确认,不转写代码、界面操作或在线改变步骤,也不据接口名称判断生产控制与安全联锁是否成立。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。