西门子PLC标准化轨范面向对象和面向过程的概念_对象_冰箱
图 3‑1 : 面向过程编程方法
面向过程便是剖析出办理问题所须要的步骤,然后用函数把这些步骤一步一步实现,利用的时候一个一个依次调用就可以了
面向工具(Object Oriented)是软件开拓方法。面向工具的观点和运用已超越了程序设计和软件开拓,扩展到如数据库系统、交互式界面、运用构造、运用平台、分布式系统、网络管理构造、CAD技能、人工智能等领域。面向工具是一种对现实天下理解和抽象的方法,是打算机编程技能发展到一定阶段后的产物。
图 3‑2 : 面向工具编程方法
面向工具是把构成问题事物分解成各个工具,建立工具的目的不是为了完成一个步骤,而是为了描述某个事物在全体办理问题的步骤中的行为
面向工具是相对付面向过程来讲的,面向工具方法,把干系的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
在PLC中虽然没有面向工具编程的类等术语的观点,但在PLC中都能找到与面向工具中相类似观点的表达方法;
比如面向工具中类的观点在PLC可以通过UDT定义出来,不同的是PLC中可能须要多个UDT才能将一个工具的类完全表达出来;
面向工具中方法的观点在PLC中可以通过FB表达出来,同时FB的嵌套可以轻微的和面向工具中的继续类似;
而在标准化系统中,所有设备的性能属性都被归纳总结在工艺描述中,那面向工具的编程方法便是将其在程序系统中实例化出来;为便于理解,下文将用一个面向工具的编程思路来阐发“怎么将大象放进冰箱”;
3.2.面向工具和面向过程的不同表达面向过程在面对这样的课题的时候,面向过程的编程职员就会二话不说针对剖析这个需求之后列出了几个步骤:
把冰箱门打开。把大象装进去。把冰箱门关上。上面每一个步骤,程序员都会用一个函数或者功能来实现,比如定义了如下的功能块:
FB_OpenTheDoor();
FB_PushElephant();
FB_CloseTheDoor();
再通过排列组合完成客户的需求,顺利交工。
通过以上描述我们创造,程序员做的事情便是在接到需求往后,会把这些需求拆成一个一个的指令或者步骤,然后根据客户的需求串起来交给掌握器去实行。和上面面向过程的定义是同等的,而且现实中的编程职员(PLC)大部分可能都是这样的做法。
我们以为这样就结束了?但是后续互换客户又说还要实现以下功能:
【我要把大象装冰箱,但是门别关,敞着就行】
【我还须要冰箱的冷藏温度调到10°】
。。。。。。
这个时候我们就必须得把全体程序系统通读一遍,找出可以用的函数(如果没有就再定义一个),末了依次调用它们。随着客户后续哀求的不断提出,末了全体系统越来越凌乱无章难以管理,程序员不堪重负。
面向工具面向工具思维,从另一个角度来办理这个问题。面向工具是把【工具】作为程序的基本单元,我们掌握过程中的驱动器,传感器,智能设备都可以归纳为工具。那么工具到底是什么呢?工具便是对事物的一种抽象描述。人们创造,现实天下中的事物,都可以用「数据」和「能力」来描述。比如我要描述一个人,「数据」便是他的年事、性别、身高体重,「能力」便是他能做什么事情,承担什么样的任务。
例如你可以让「狗」这个工具「吃狗粮」,就可以把「吃狗粮」的命令发给「狗」让其实行,然后我们就实现了「狗吃狗粮」的需求。
如何进行面向工具的编程呢?根据上面课题的需求,演示按照面向工具是怎么编程的。
3.3.工具属性第一步,提炼工具属性。剖析这个需求里面我们要面对的工具是显而易见的,大象和冰箱都是这个需求中明确的实体工具。
装进这个动作是一串的指令,实在包括两方面的动作:打开(冰箱)+装(大象);那这个需求的工具就如下表;
表3-1 : 工具提炼清单表
第二步,工具属性剖析工具。属性剖析便是描述工具特色,像上文说的一样,可以用一些数据和能力来描述,如下表所示提炼的工具的数据和能力。
表 3-2 : 工具属性剖析表
在PLC编程过程中,除了剖析这个工具属性以外,实在我们还要做的便是将工具属性和我们程序构造干系联,细化到程序中就如下表所示。
表 3-3 : 工具属性实例化剖析表
3.4.工具编程3.4.1.冰箱的编程参数解释:可以来自HMI或者信息管理系统,包括冷藏室温度设置和冷冻室温度设置;
输入解释:
存储:向冰箱下达存储指令,存储指令包括的信息有存储的工具(大象),存储的位置(冷冻室还是冷藏室)等;
取件:向冰箱下达取件指令,存储指令包括的信息有取件的工具(大象),取件的位置(冷冻室还是冷藏室)等;
启停命令:此旗子暗记为True的时候冰箱启动,否则冰箱停滞运行;
输出解释:
冷冻室门的开关:True表示冷冻室打开,False表示冷冻室关闭;
冷藏室门的开关:True表示冷藏室打开,False表示冷藏室关闭;
启停状态:True:冰箱已经启动,False:冰箱停滞运行;
属性解释:
三维尺寸:冰箱的外在存储,包括长宽高的尺寸;
冷藏室:当前温度以、当前剩余空间、载重能力;
冷冻室:当前温度以、当前剩余空间、载重能力;
逻辑信息:包括运算逻辑以及运行状态;
运算逻辑信息,比如储存工具不符合当前冰箱的容量、取件工具在冰箱里面不存在、大象重量超重(以上信息冷藏冷冻是分别存储的);
运行状态数,比如冰箱是否启动,是否有故障等等;
将以上信息概括后可以在一个统一的模型中(后续有模型解释)得到表示,详细见下图所示:
图 3‑3 : 冰箱在PLC中的程序模型
3.4.2.大象的编程
参数:没有;
输入解释:
进冰箱:True表示哀求大象进入冰箱,False无定义;
出冰箱:True表示哀求大象走出冰箱,False无定义;
输出解释:
正向行走:True表示大象进冰箱方向行走,False无定义;
反向行走:True表示大象出冰箱方向行走,False无定义;
属性解释:
三维尺寸:大象的体积,包括长宽高的尺寸;
重量:大象的总重量;
智商:大象的智商;
将以上信息概括后可以在一个统一的模型(后续有模型解释)中得到表示,详细见下图所示:
图 3‑4 : 大象在PLC中的程序模型
如此,就将冰箱和大象的模型在程序中得以再造,只要将这两个模型在程序中建立接口关系,那客户的需求将大象装进冰箱就很随意马虎得以实现。此时,只要我们给大象下达走进冰箱的指令,冰箱就会在得到信息后打开对应门,大象自己就走进去了。
若此时大象体积太大或者超重(数据来自传感器),冰箱模块还会奉告系统不能装载大象的缘故原由。
同时,后续客户有其他需求的时候,只要在给冰箱的输入信息中解释,冰箱就会实行相应的动作,比如门打开就好或者冷冻温度设置到-18°等等其他需求;
3.5.其他解释通过上述的描述创造大象和冰箱有两个相同点:
1.两个掌握工具的掌握模型是一样的;
2.两个掌握工具有一个相同的Function:正反转;
表 3-4 : 工具正反转定义表
现假设冰箱工具的程序名为FB_FrIndentityge,大象的程序名为FB_Elephant。那后续的项目中只要有这两个工具,我们要做的事情便是将程序名实例化而已。
面向过程只是着眼于当前工艺需求,编程简便快捷但后续掩护和再次利用比较困难,也无法形成对应模型知识库,干系技能及知识得不到累积和传承。
面向工具便是在制造东西,是将现实中的工具在程序中再造一次。面向工具编程事情量大且须要具备相称的能力将工具的属性提炼总结出来,但面向工具的程序具有模块化,接口化等特点,便于后续的掩护和利用,利于形成行业知识库,技能可以得到累积、发展、传承和更新。
随着技能发展,冰箱的能力会越来越前辈,那对付程序员来说要做的事情便是与时俱进更新FB_Fridge的功能,这样FB_Fridge的版本就会从原始版本随着时期的更新发展到更多的版本。这样,对付冰箱这个工具,我们的再造功能已经完成而且我们还能按照客户需求选择不同版本的程序来知足客户(客户的冰箱可能是老款)的需求;
表3-5 : 两种编程方法优缺陷比拟
3.6.后记上述便是以一个非掌握实体为列演示的面向工具的编程思路,在实际编程中最主要的便是要把工具详细拆分精确,而这些便是前面两章从机器和电气两方面对设备工艺的详细拆分;
不要看上述工艺的拆分,这是最磨练工程师能力的地方;每每很多标准扮装备由于工艺理解不到位,或者工艺总结没有细致详细,到实际事情就创造某个已经做好的标准扮装备,由于个中很小的一个改动或者客户的一个不同哀求的提出,这个标准的设备就又无法适用需求;
以是,前面两章节是全体标准化系统最主要的环节,这两个部分做的很好,后面章节便是将全体工艺在掌握器中搭建出来,只是一个思想的实行者而已;
以是,工艺部分的理解和拆分的标准化,才是我们全体标准化的灵魂;这也应了一句话便是,程序便是工艺;
本文系作者个人观点,不代表本站立场,转载请注明出处!