面向?qū)ο缶幊淌怯?jì)算機(jī)高級(jí)語言的一種先進(jìn)的編程模式,,在工業(yè)控制系統(tǒng)的
PLC程序中也可以采用這種設(shè)計(jì)思想,,雖然我們無法實(shí)現(xiàn)面向?qū)ο蟮暮芏鄡?yōu)秀特點(diǎn)如“繼承",甚至于它根本就不具備面向?qū)ο缶幊陶Z言的特點(diǎn),,但面向?qū)ο缶幊痰幕靖拍罹褪穷惡皖惖膶?shí)例(即對(duì)象),,我們只需要使用這種概念就可以了。在計(jì)算機(jī)編程中我們需要把一些事物抽象和歸納,,才能編寫類,,而在工業(yè)控制系統(tǒng)中,控制對(duì)象如:電機(jī),,閥等等是很明顯的控制類別,,不需要抽象就可以很明顯的針對(duì)它們編寫類,以下將會(huì)用到西門子的Step7編程語言和施奈德的Unity編程語言來講解PLC的面向?qū)ο缶幊獭?/div>
一,、實(shí)現(xiàn)方式
面向?qū)ο缶幊淘赟tep7中使用功能塊(即FB)編程,,一談到此大家就會(huì)想到西門子提出的模塊化編程,不錯(cuò),,就是這個(gè)模塊化編程,,但西門子提出的模塊化、背景數(shù)據(jù)塊,、多重背景等名詞并不能讓大家很明白的理解和使用這種優(yōu)秀的設(shè)計(jì)理念,。如果大家從面向?qū)ο缶幊痰慕嵌热ダ斫猓瑒t可以很好的理解這種設(shè)計(jì)模式,?!癋B塊"被看成“類",它可以被看成是對(duì)相似的控制對(duì)象的代碼歸納,,如對(duì)MM440的變頻器可以編寫FB塊:MtrMM440,這在面向?qū)ο缶幊讨蟹Q為“類",,當(dāng)需要編程控制具體的電機(jī)時(shí),,可以給它分配一個(gè)背景DB塊,在面向?qū)ο缶幊讨蟹Q為類的實(shí)現(xiàn)(即創(chuàng)建類的實(shí)例:對(duì)象),,當(dāng)需要控制多個(gè)電機(jī)時(shí),,可以分配不同的背景DB到這個(gè)FB塊,即創(chuàng)建類的多個(gè)實(shí)例,。Step7中有另外一種程序塊,,即FC塊,以FC塊為主的編程在西門子中稱為結(jié)構(gòu)化編程,,這也可以類比于計(jì)算機(jī)編程中的面向過程編程,,即純粹以函數(shù)為主體的編程,。
施奈德的Unity軟件編程可以更好的理解面向?qū)ο缶幊?。它的DFB定義中包含輸入/輸出參數(shù),私有/共有變量,,以及代碼實(shí)現(xiàn),,而這正是計(jì)算機(jī)的面向?qū)ο缶幊讨小邦?的基本元素,而創(chuàng)建類的實(shí)例(對(duì)象)就像創(chuàng)建普通的“布爾"變量一樣,,只需在“FunctionBlocks"中定義這種“類"的變量即可,。
Step7和Unity都可以采用面向過程和面向?qū)ο缶幊谭绞剑@兩種編程方式的區(qū)別類似于計(jì)算機(jī)高級(jí)語言中的C語言和C++語言編程的區(qū)別,。
以下的講解將會(huì)把Step7中的FB和Unity中的DFB稱為“類",,Step7中的FB+背景DB以及Unity中DFB的實(shí)例稱為“對(duì)象"。
二,、面向?qū)ο缶幊碳軜?gòu)
以上講解的是實(shí)現(xiàn)細(xì)節(jié),,而編程思想是建立在程序架構(gòu)上的,不是某個(gè)局部使用了面向?qū)ο蠓绞?,則可以稱之為這種編程就是面向?qū)ο缶幊?。這種編程需要從以下方面著手:
1、電路設(shè)計(jì)的結(jié)構(gòu)化,。
這里主要以自動(dòng)線為主介紹,,對(duì)于單機(jī)機(jī)床可以是它的簡化結(jié)構(gòu),
<1>,、自動(dòng)線層:這是最高層次,,它擁有一個(gè)主PLC,對(duì)屬于它下面的各區(qū)域控制
<2>,、工程層:擁有獨(dú)立的配送電系統(tǒng),,但沒有PLC,只有分布式模塊,,由自動(dòng)線控制,。顧名思義,,它有著較大的獨(dú)立性,可以作為一個(gè)單獨(dú)的工程項(xiàng)目設(shè)計(jì)和制造,,當(dāng)自動(dòng)線比較小時(shí),,可以省略該層次。
<3>,、功能組層:根據(jù)工藝劃分,,將實(shí)現(xiàn)某一個(gè)工藝功能的區(qū)段設(shè)備劃分為一個(gè)功能組,它隸屬于工程層,,當(dāng)工程層被省略時(shí),,隸屬于自動(dòng)線層。
面向?qū)ο缶幊滩⒉灰欢ㄒ笫褂靡陨系慕Y(jié)構(gòu),,但好的電氣結(jié)構(gòu)更利于面向?qū)ο缶幊獭?/div>
2,、任何控制對(duì)象邏輯都在“類"中實(shí)現(xiàn)。
為了做到這點(diǎn),,必須分析與控制對(duì)象相關(guān)的信息,,譬如,對(duì)于一個(gè)電機(jī),,有以下相關(guān)的信息需要考慮:
輸入信息:
<1>,、電路保護(hù)信息,如電機(jī)的空氣開關(guān),,熱繼電器等,。
<2>、功能保護(hù)信息,,如運(yùn)動(dòng)電機(jī)的限位開關(guān),,風(fēng)機(jī)的風(fēng)壓開關(guān),油泵的油位開關(guān)等,。
<3>,、啟動(dòng)和終止條件,以上的電路保護(hù)和功能保護(hù)都可能導(dǎo)致電機(jī)運(yùn)轉(zhuǎn)終止,,復(fù)位也可能導(dǎo)致重啟動(dòng),,但這里的條件指的是正常運(yùn)行的啟動(dòng)和終止條件,譬如順序控制的流程步,。