Codesys代码代写,程序开发,软件定制,bug修改,问题咨询: 淘宝搜索店铺【林磊教育】
接口是一个协议、规范;例如电源插座接口,它就是一个规范,中国制定的插座标准;
每个厂家插座的生产技术、工艺都不一样。插座的内部实现对于电器来说是完全屏蔽的;但任何厂家只要按照插座标准制作,我们的电器就能正常使用。
接口和实现分离,方便分工协作、应对变化性、测试方便;
要控制一个轴前进后退运动,需要用到电机,需要开发前进 后退功能
(2)使用 上述Driver接口 定义台达电机功能块,并实现点动前进、后退的方法
FUNCTION_BLOCK PUBLIC Driver_Delta IMPLEMENTS Driver
(3)使用上述Driver接口 定义三洋电机功能块,并实现点动前进、后退的方法
FUNCTION_BLOCK PUBLIC Driver_SANYO IMPLEMENTS Driver
(4) 后面还有很多厂家的电机,就不一 一 举例,有了统一的接口,不管什么厂家的电机,直接统一调用进行操作就好
例如定义一个操作电机的函数
FUNCTION DriveForwad : BOOL
VAR_INPUT
m_dirver :Driver;//声明电机接口变量,不管什么厂家的电机,用统一的输入参数
END_VAR
VAR
END_VAR
m_dirver.JogForward();
在程序中进行应用
PROGRAM PLC_PRG
VAR
m_Driver_Delta: Driver_Delta;//台达
m_Driver_SANYO: Driver_SANYO;//三洋
END_VAR
DriveForward(Driver_Delta);
DriveForward(Driver_SANYO);
//其他电机等等
同一个函数接口,实现不同的功能;
比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类)之一消息有不同的响应,如类别动物有“叫()”之动作,而类别鸡会“啼叫()”,类别狗则会“吠叫()”,则称之为多态
(1)定义一个动物功能块(父类),有一个 “叫()”的动作
FUNCTION_BLOCK PUBLIC Animal
(2)定义一个继承动物的猫功能块,实现 “叫()”的动作
FUNCTION_BLOCK cat EXTENDS Animal
(3)定义一个继承动物的狗功能块,实现 “叫()”的动作
FUNCTION_BLOCK dog EXTENDS Animal
(4)我们听一下叫声,不同的动物,只要一个输入参数就可以;
(5)运行结果
继承: Codesys子类继承父类的方法,属性,动作(private可以继承,只是没有访问权限)
多态:Codesys只支持纯虚函数(只声明,不实现),纯虚属性,有纯虚函数的功能块叫做纯虚类,不能实例化,通过指针的方式实现多态
继承和多态都是子类的访问权限的问题,要心中有表,不要混淆
。。。。。。。。。。。。。。
。-------------------------------------。
。 。 。 。 。----------------------。
。 。-------- 。----------------------。
。 。-------- 。 ---------------------。
。 。。 。 。-----------------------。
。-------------------------------------。
。。。。。。。。。。。。。。