PLC的面向对象编程(OOP)探秘2-FB和对象

        在1994年SIEMENS推出了STEP 7,当时的IDE是simatic manager。在STEP-7中就包括有FB,FC。在其后发布的IEC61131-3中也定义了FB。从中可以看出参考关系。CODESYS符合IEC61131-3标准,类的定义也是用FB。

        上面讨论了类,下面讨论对象。
        典型的OOP语言都允许用new动态声明一个对象,但是simatic和CODESYS都不允许这样的语法。simatic和CODESYS中都是静态的创建对象,语法是:

                        objName : fbName ;

        所谓静态创建就是不允许用语言的语句创建一个对象,只能在变量声明区声明一个变量。也就是说在编译程序时,所有的对象都是已经定义好的,没有未知未定义的对象。

        我们考虑这样一种情况:在一个FB中声明一个对象,那会怎样?这种情况就有些类似继承了。比如在FB1中声明如下:obj : FB2;

        那么可以讲类FB1中隐含继承了类FB2。当然继承的另一种显式写法是:

        FUNCTION_BLOCK FB1 EXTENDS FB2        

        显式写法只能继承一个父类,而我称为隐式继承的可以继承多个父类的特性。但是隐式继承需要注意的是不要环形继承。否则是无法编译通过的。

        本文档最后要说明的是程序的调用。在CODESYS中假设有声明语句

                     objName : fbName ;

        在语句区,可以这么写

                        objName();

        其实这种写法在OOP中是不准确的。可以把上面的语句映射到OOP中的写法如下:

                        objName.fbName();

        这意思是调用对象objName中的fbName方法。这就是说任何FB本身就是一个方法。这与OOP的概念稍有出入。我们要注意。

        今天讲的内容也是CODESYS视频教学中没有明确提到,但是却是非常重要的内容。因为如果对这些概念不能完全理解,就无法在CODESYS中完成OOP编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值