上一篇说到ST编程的架构,今天讲交互思路,重复调用的优势,ST语言的优势和面向对象与面向过程的区别!
通信交互:
ST编程的架构,由很多独立的子程序或者功能块组成,这就表明各个功能块之间,或独立的功能之间必须要交互。因此,其首先必须具有交互数据。各个独立硬件之间也需要通信!
如上图中,每个单元都具有”Data”数据结构。Data里面存储了当前单元的状态信息。而其它单元可以通过Data去读取该单元的状态,也可以直接对Data进行写操作,修改状态。
本文对功能块(FB)的使用方法,和传统介绍的方法不太一样,构思巧妙,用法独特:利用了FB的特性,在某些场合把FB当作了数据结构来使用。例如伺服轴“Axis_PTP_CoE”采用了类似的思维。读者就可以简单地把它们当作数据结构来看待。
本程序的交互逻辑是:
各个单元之间:通过“Data”数据进行交互。
维护和重复调用的优势:
制造系统作为一个复杂的大系统,它的开发与维护日趋变得异常困难。
基于模块化的思想,可以对模块单元程序进行重复调用。每个单元模块都有其独立的程序区、数据区和设置区。在重复调用该单元时,直接复制整个单元模块,就能把该单元相关的逻辑、接口、数据、参数等等一同复制过来,简单便捷。外围辅助程序的编写,也已经可以即拿即用。
ST 语言的优点:
面向对象/面向过程的有机结合
面向过程很好理解,指的是程序员接到需求,会把它拆成一个一个的命令,然后串起来交给计算机去执行。举个例子,客户说要把大象装进冰箱里。程序员列了几个步骤:
把冰箱门打开。
把大象装进去。
把冰箱门关上。
上面每一个步骤,程序员都会用一个「函数」来实现。「函数」是一些代码的集合体,每个函数可以实现一个功能。比如我要定义一个打开冰箱门的函数:
所有函数定义好了之后,依次调用就可以了:
openTheDoor();
pushElephant();
closeTheDoor();
需求完成,顺利交工。但是你以为这样就结束了?Naive。客户说才刚刚开始呢。
「我要把大象装微波炉里」
「我要把狮子也装冰箱里」
「我要把大象装冰箱,但是门别关,敞着就行」
如果还是用面向过程的方法来应付,每次需求的变更,程序员就要把整个系统通读一遍,找出可用的函数(如果没有就再定义一个),最后依次调用它们。最后系统越来越杂乱无章难以管理,程序员不堪重负。
面向对象从另一个角度来解决这个问题。它抛弃了函数,把「对象」作为程序的基本单元。那么对象到底是个什么东西呢?对象就是对事物的一种抽象描述。人们发现,现实世界中的事物,都可以用「数据」和「能力」来描述。比如我要描述一个人,「数据」就是他的年龄、性别、身高体重,「能力」就是他能做什么工作,承担什么样的责任。
例如你可以让「狗」这个对象「吃狗粮」,就可以把「吃狗粮」的命令发给「狗」让其执行,然后我们就实现了「狗吃狗粮」的需求。
现在对象有了,如何进行面向对象的编程呢?很简单,依次向不同的对象发送命令就可以了。回到上面的例子,用面向对象来实现,我们会先定义一个「冰箱」对象,它的「数据」就是当前的冷冻温度,或者该冰箱已经有了多少头大象,「能力」就是开门、关门。还有一个「大象」对象,它的「数据」可以是大象的智商、体积,「能力」就是「自己跑到冰箱里去」。然后我们依次:
向冰箱下达「开门」的命令。
向大象下达「进冰箱」的命令。
向冰箱下达「关门」的命令。
总结为:“面向过程”是做一件事,“面向对象”是造一堆东西。
本文暂时没有评论,来添加一个吧(●'◡'●)