codesys 面向对象分析 二

Codesys代码代写,程序开发,软件定制,bug修改,问题咨询: 淘宝搜索店铺【林磊教育】

一、两种指针

1、 this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
  • 形参与成员名字重名,用 this 来区分
    codesys 面向对象分析 二_第1张图片
    codesys 面向对象分析 二_第2张图片
2、super 可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类
  • super 访问父类的方法、属性;
  • super是不能访问父类private修饰的变量和方法的,因为这个只属于父类的内部成员。
    codesys 面向对象分析 二_第3张图片
3、
  • this^()super^() 代码子、父实例功能块的主函数;

​​

二、 接口的介绍-INTERFACE

1、定义

接口是一个协议、规范;例如电源插座接口,它就是一个规范,中国制定的插座标准;codesys 面向对象分析 二_第4张图片

每个厂家插座的生产技术、工艺都不一样。插座的内部实现对于电器来说是完全屏蔽的;但任何厂家只要按照插座标准制作,我们的电器就能正常使用。

2、接口优点

接口和实现分离,方便分工协作、应对变化性、测试方便;

  • 分工协作(软件开发):有了接口标准,可以让电源插座和电器不同的人来完成,分开测试,最后方便的整合在一起
  • 应对变化性: 有了接口标准,可以方便更换不同厂家的电源插座,而不影响电器的使用;也就是可以方便更换实现接口的类;
  • 测试方便 有了接口标准,可以单独测试每个模块,减少其他因素的干扰;
3、codesys 接口举例

要控制一个轴前进后退运动,需要用到电机,需要开发前进 后退功能

(1) 定义电机的一个接口,里面声明点动前进、后退的方法;
在这里插入图片描述


(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);
//其他电机等等

三、功能块实现多态

1、多态定义

同一个函数接口,实现不同的功能;

比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类)之一消息有不同的响应,如类别动物有“叫()”之动作,而类别鸡会“啼叫()”,类别狗则会“吠叫()”,则称之为多态

2、多态定义实现多态有三个必要条件:继承、重写、向上转型。
  • 继承:在多态中必须存在有继承关系的子类和父类。
  • 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
  • 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备父类调用子类的方法。
3、codesys举例

(1)定义一个动物功能块(父类),有一个 “叫()”的动作

FUNCTION_BLOCK PUBLIC Animal

在这里插入图片描述


(2)定义一个继承动物的猫功能块,实现 “叫()”的动作

FUNCTION_BLOCK cat EXTENDS Animal

codesys 面向对象分析 二_第5张图片


(3)定义一个继承动物的狗功能块,实现 “叫()”的动作

FUNCTION_BLOCK dog EXTENDS Animal

codesys 面向对象分析 二_第6张图片


(4)我们听一下叫声,不同的动物,只要一个输入参数就可以;

codesys 面向对象分析 二_第7张图片


(5)运行结果

codesys 面向对象分析 二_第8张图片

codesys 面向对象分析 二_第9张图片


继承: Codesys子类继承父类的方法,属性,动作(private可以继承,只是没有访问权限)

多态:Codesys只支持纯虚函数(只声明,不实现),纯虚属性,有纯虚函数的功能块叫做纯虚类,不能实例化,通过指针的方式实现多态

继承和多态都是子类的访问权限的问题,要心中有表,不要混淆

。。。。。。。。。。。。。。
。-------------------------------------。
。 。 。 。 。----------------------。
。 。-------- 。----------------------。
。 。-------- 。 ---------------------。
。 。。 。 。-----------------------。
。-------------------------------------。
。。。。。。。。。。。。。。

  • 接口:codesys接口就是只有纯虚函数的FB,接口虽然不能定义指针,但是定义接口对象其内部就是一个指针,如果多少个接口函数或者属性,接口对象开辟的内存空间一样,类似别名;当把一个子类赋值给接口对象的时候,其实是吧子类的指针给接口对象;

你可能感兴趣的:(codesys,开发语言)