面向对象编程(OOP)是一种计算机编程模型,它围绕数据或对象而不是函数来组织软件设计以及逻辑。对象可以定义为具有唯一属性和行为的数据字段。OOP关注开发人员想要的对象操纵,而不是操纵它们所需的逻辑。这种编程方法非常适合大型、复杂和主动更新或维护。面向对象程序的组织也使该方法有利于协作开发,其中项目被分成小组。OOP的其他好处包括代码的可重用性、可伸缩性和效率。
面向对象编程基于以下原则:
1.继承
对象之间的关系和子类可以被分配,允许开发人员在静止时重用公共逻辑维护一个独特的层次结构。OOP的这一特性强制进行更彻底的数据分析,减少开发时间并确保更高的安全性精确度。
下面做一个启停FB,简单示例一下继承的用法。
FUNCTION_BLOCK FB_StartStop
VAR
Start : BOOL;
Stop : BOOL;
Running : BOOL;
END_VAR
//
IF Start THEN
M_Start();
END_IF
IF Stop THEN
M_Stop();
END_IF
METHOD M_Start : BOOL
Running:=TRUE;
METHOD M_Stop : BOOL
Running := FALSE;
运行一下,把Start赋值True。
Start赋值False,Stop赋值True
这里起保停这个功能已经实现。
下面,我们给这个FB添加一些功能,采用继承的方式添加一些状态。
FUNCTION_BLOCK FB_StartStopExtend EXTENDS FB_StartStop
VAR
RunFeedback : BOOL;
FeedbackTon : TON;
Clear : BOOL;
Status : STRING;
RunOK : BOOL;
RunError : BOOL;
END_VAR
//调用父类
SUPER^();
M_Status();
IF Clear THEN
M_Clear();
END_IF
METHOD M_Clear : BOOL
FeedbackTon(IN:=FALSE,PT:=T#5S);
Status :='Idle';
RunOK :=FALSE;
RunError :=FALSE;
METHOD M_Status : BOOL
FeedbackTon(IN:=NOT RunFeedback AND Running,PT:=T#5S);
IF FeedbackTon.Q THEN
Status :='Run Is NOK';
RunOK :=FALSE;
RunError :=TRUE;
END_IF
IF RunFeedback AND Running AND NOT RunError THEN
Status :='Run Is OK';
RunOK :=TRUE;
RunError :=FALSE;
END_IF
仿真测试一下:
Start先赋值True,这时候RunFeedbackTon已经开始计时
RunFeedbackTon计时5s触发报警
这时候给RunFeedback赋值True
给Clear赋值True->False报警清除,状态改变
这里使用一个指针,Super^;SUPER指针指的是到创建此函数块的函数块实例。Super^();通俗来说就是调用父类。
还有一个指针,THIS^,THIS指针是指向它自己的实例,使用到的时候再做演示。