姚海軍
(西安航空職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)工程系,陜西 西安 710089)
計(jì)算機(jī)的發(fā)展從1946年的ENIAC到目前已經(jīng)歷了4代,是一個(gè)從電子管到大規(guī)模集成電路、從機(jī)器語(yǔ)言到高級(jí)語(yǔ)言、從面向過程到面向?qū)ο?、從僅用于科學(xué)計(jì)算到多媒體信息技術(shù)、從純粹的機(jī)器到人工智能的發(fā)展過程,已經(jīng)在通信、金融、交通運(yùn)輸、信息管理,乃至包括航天航空、工業(yè)控制等在內(nèi)的各個(gè)行業(yè)上得到了普遍地應(yīng)用。
隨著科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)在工業(yè)生產(chǎn)中的應(yīng)用越來越廣泛,目前可編程邏輯控制器(Programming Logical Controller,PLC)/分布式控制系統(tǒng)(Distributing Control System,DCS)已成為工業(yè)控制自動(dòng)化中兩大主流控制系統(tǒng),而且集成度越來越高,尤以后者更為突出。面向?qū)ο蟮木幊趟枷牒头椒ㄒ褲B透到系統(tǒng)設(shè)計(jì)與編程之中,通過通信協(xié)議將工程數(shù)據(jù)庫(kù)與操作界面的控制信息有機(jī)地結(jié)合起來,通過工控軟件內(nèi)嵌的迷你(MINI)腳本[1],實(shí)現(xiàn)了對(duì)系統(tǒng)設(shè)備的實(shí)時(shí)監(jiān)控、對(duì)控制信息的采集和處理。PLC/DCS的使用,對(duì)企業(yè)人力資源的充分利用、員工工作環(huán)境的改善、提高勞動(dòng)生產(chǎn)率和產(chǎn)品質(zhì)量,對(duì)于事故分析、故障處理、為管理者的生產(chǎn)決策提供了量化的依據(jù)都有著極大的意義。
作者有多年從事工業(yè)控制自動(dòng)化PLC/DCS控制系統(tǒng)組態(tài)、編程、管理和維護(hù)經(jīng)驗(yàn),對(duì)工控軟件比較熟悉;目前又在高職院校從事計(jì)算機(jī)技術(shù)的教學(xué)工作,在教學(xué)過程中,尤其是像在Java,VB,C#等面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言教學(xué)中,總有似曾相識(shí)的感覺,那就是工控軟件中的面向?qū)ο蟮奶攸c(diǎn)。事實(shí)上,工控軟件編程中的面向?qū)ο髮?duì)于學(xué)生才具有真正意義,它是把理論用于實(shí)踐的具體表現(xiàn),是把計(jì)算機(jī)技術(shù)轉(zhuǎn)化成企業(yè)生產(chǎn)力。因此把企業(yè)中工控軟件的編程思想和方法作為實(shí)例運(yùn)用到面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的教學(xué)當(dāng)中,讓學(xué)生更容易理解和接受,而在教學(xué)工控軟件的編程時(shí),將面向?qū)ο蟮睦碚摑B透進(jìn)去,讓學(xué)生在理論上有所收獲和提升,為他們的后天發(fā)展提供幫助,這也是工學(xué)結(jié)合在高職教學(xué)活動(dòng)中具體實(shí)踐的體現(xiàn)。
面向?qū)ο笳Z(yǔ)言[2]是指以對(duì)象為基本的編程單元,其下包含屬性和方法。與傳統(tǒng)的面向過程語(yǔ)言不同,面向?qū)ο笳Z(yǔ)言的重要特點(diǎn)之一就是引入了類的概念。類就是現(xiàn)實(shí)生活中具有共同特性的事物(對(duì)象)的抽象。面向?qū)ο缶哂蟹庋b性、繼承性和多態(tài)性的特點(diǎn)。封裝性是指類封裝了對(duì)象的屬性和方法,封裝可以隱藏實(shí)現(xiàn)的細(xì)節(jié),使得編程代碼模塊化,實(shí)現(xiàn)了代碼的可復(fù)用性。繼承性,指可以從一個(gè)類(稱之為父類或超類)擴(kuò)展成一個(gè)新類(子類或派生類),子類可以繼承父類的屬性和方法,而且可以發(fā)展自己新的屬性和方法,通過繼承可以更有效地組織程序結(jié)構(gòu),明確類間的關(guān)系,充分利用已有的類來完成更復(fù)雜、更深入的開發(fā)。采用繼承的方式來組織設(shè)計(jì)系統(tǒng)中的類,可以提高程序的抽象程度,使其更接近人的思維方式,使程序結(jié)構(gòu)更清晰并降低編碼和維護(hù)的工作量。多態(tài)性就是類中行為的多種表現(xiàn)形式,具體來說,可以用“一個(gè)對(duì)外接口,多個(gè)內(nèi)在實(shí)現(xiàn)方法”表示。在運(yùn)行時(shí)根據(jù)傳遞的不同的對(duì)象引用,來調(diào)用相應(yīng)的處理方法。
類是對(duì)象的抽象,對(duì)象是類的具體化,是實(shí)例。有了類的概念,有了面向?qū)ο蟮木幊趟枷耄貏e是面 向?qū)ο笏哂械姆庋b性、繼承性和多態(tài)性等特性,可以在編程中大大減少編碼的重復(fù)工作,提高編程效率,同時(shí)也提高了程序的可讀性和可移植性。在工控中的應(yīng)用更能體現(xiàn)這個(gè)優(yōu)越性。
在企業(yè)中,傳統(tǒng)的控制方式是繼電接觸式控制方式[3-4],在控制設(shè)計(jì)方面主要靠工程技術(shù)人員的經(jīng)驗(yàn)來完成設(shè)計(jì)任務(wù),一旦工藝過程發(fā)生變化,原理圖發(fā)生更改,接線也要修改,工作量大且控制可靠性差。而現(xiàn)代的PLC/DCS控制系統(tǒng)中,可以通過梯形圖邏輯[5](Ladder Logic)的編程方法,借助圖形化的操作界面GOS(Graphics Operating Station,圖形操作站)的設(shè)計(jì)來實(shí)現(xiàn)對(duì)所有設(shè)備(包括模擬量、開關(guān)量及通訊參數(shù))的實(shí)時(shí)監(jiān)控,即便是工藝過程發(fā)生了變化,控制功能改變了,也不需要改變I/O端子和現(xiàn)場(chǎng)設(shè)備的接線關(guān)系,只需要修改其梯形圖程序就可以了,而且對(duì)于設(shè)備間的聯(lián)鎖關(guān)系、時(shí)間控制(如啟動(dòng)延時(shí),只需要在啟動(dòng)回路中加入一個(gè)時(shí)間功能塊,取代了傳統(tǒng)的連接時(shí)間繼電器的方式)等問題無需硬接線,只需要在梯形圖邏輯中加入相應(yīng)的功能塊就可以了。這樣,不但減少了員工的工作強(qiáng)度,更重要的是減少了系統(tǒng)的故障率,有利于系統(tǒng)維護(hù)和質(zhì)量監(jiān)控。
以電機(jī)的控制為例,無論是哪種電機(jī),都具有通信、備妥、運(yùn)行、停車、故障等狀態(tài)和啟動(dòng)、停車等行為,因此可以把它抽象為一個(gè)電機(jī)類(基類)。而高壓電機(jī)、直流電機(jī)、伺服電機(jī)等,雖然也是電機(jī),但在狀態(tài)和行為上又各有不同,因此可以從該電機(jī)類派生(繼承)。而不同類型電機(jī)(直流電機(jī)、交流電機(jī)等)的啟動(dòng)、停車方法,也就表現(xiàn)為電機(jī)啟動(dòng)、停車方法的多態(tài)。
圖1是PLC程序設(shè)計(jì)中采集電機(jī)狀態(tài)的通用邏輯。把電機(jī)的狀態(tài)值保存在16位保持寄存器4XXXX中,在該寄存器中,以不同的位(對(duì)應(yīng)于不同繼電器的通斷或組合)來表示不同的狀態(tài)。當(dāng)取得某種狀態(tài)時(shí),使用圖中的MBIT位修改功能塊[5],將相應(yīng)的位置1,使得保持寄存器取得相應(yīng)的值。這樣寄存器的不同值就對(duì)應(yīng)電機(jī)的不同狀態(tài)。
圖1 電機(jī)狀態(tài)的PLC通用網(wǎng)絡(luò)Fig.1 PLC universal network of motor status
圖2是一個(gè)普通交流電機(jī)控制的PLC通用邏輯。在這個(gè)控制邏輯中,當(dāng)(組)啟動(dòng)命令發(fā)布以后,在滿足啟動(dòng)方式、設(shè)備聯(lián)鎖、工藝聯(lián)鎖、啟動(dòng)延時(shí)、停車延時(shí)等一系列要素之后,電機(jī)啟動(dòng)并運(yùn)行;而交流電機(jī)的停車是通過斷開啟動(dòng)線圈來實(shí)現(xiàn)的。
圖2 交流電機(jī)PLC控制的通用梯形圖邏輯Fig.2 Universal ladder diagram logic in AC motor controlling
而在工作站上,一般用一個(gè)實(shí)心圓表示電機(jī)(也可以用自己喜歡的圖形符號(hào),被稱為Symbol[5]或Shape[6]),用圖形的不同顏色表示電機(jī)的不同狀態(tài)。在使用Honeywell公司的PlantScape(PS)[6]控制軟件包中的 ControlBuilder設(shè)計(jì)操作站界面時(shí),做出一系列代表不同狀態(tài)的Shape(彩色實(shí)心圓),利用它提供的ShapeLink工具,把這些Shape封裝在一起,形成了PS中的電機(jī)類,如圖3所示。
圖3 PS中電機(jī)類的制作過程Fig.3 Creating procedure of motor class in PlantScape software
在控制界面設(shè)計(jì)上,有一個(gè)重要的工作就是“貼標(biāo)簽”,“貼標(biāo)簽”則是類的實(shí)例化過程,它把生產(chǎn)線上實(shí)際使用的該類電機(jī)命名,命名是以工程數(shù)據(jù)庫(kù)為依據(jù),在運(yùn)行時(shí)通過ODBC技術(shù),將界面上的設(shè)備與工程數(shù)據(jù)庫(kù)相連接(設(shè)備與狀態(tài)保持寄存器一一對(duì)應(yīng)),PLC程序獲得電機(jī)狀態(tài)寄存器的值,這個(gè)值就是圖1所產(chǎn)生的電機(jī)的狀態(tài)值,進(jìn)而改變了操作站上電機(jī)的顏色,從而實(shí)現(xiàn)對(duì)電機(jī)實(shí)時(shí)的動(dòng)態(tài)的監(jiān)控。
對(duì)于直流電機(jī),啟動(dòng)和停車多使用脈沖信號(hào)并分開進(jìn)行。由于脈沖信號(hào)無法使線圈自保,所以利用計(jì)時(shí)器功能塊[5]的工作特點(diǎn),并使用一個(gè)內(nèi)部線圈來啟動(dòng)電機(jī)并實(shí)現(xiàn)啟動(dòng)自保,以保證電機(jī)的持續(xù)運(yùn)行(如圖4所示)。
相對(duì)于啟動(dòng)回路,停車回路就要簡(jiǎn)單得多,它只需要通過緩?fù)\嚸罱o停車線圈發(fā)一個(gè)脈沖信號(hào),使停車?yán)^電器吸合即可(如圖5所示)。這也就是對(duì)電機(jī)控制方法的修改,即面向?qū)ο蟮亩鄳B(tài)。
圖4 直流電機(jī)PLC控制啟動(dòng)回路的通用梯形圖邏輯Fig.4 Universal ladder diagram logic in DC motor start controlling
圖5 直流電機(jī)PLC控制停車回路的通用梯形圖邏輯Fig.5 Universal ladder diagram logic in DC motor stop controlling
其他的電機(jī),如伺服電機(jī)、變頻調(diào)速電機(jī),多驅(qū)動(dòng)的電機(jī),使用軟啟動(dòng)的電機(jī)、間歇運(yùn)轉(zhuǎn)的電機(jī)等,就是該電機(jī)類的派生類,其啟動(dòng)、停車等操作同樣也是電機(jī)類用啟動(dòng)停車方法多態(tài)性的表現(xiàn)。
在面向?qū)ο蟪绦蛟O(shè)計(jì)的教學(xué)中,設(shè)計(jì)類似的項(xiàng)目教學(xué),模擬實(shí)際的工況和控制過程,可以達(dá)到理論與生產(chǎn)實(shí)際相結(jié)合、教學(xué)與就業(yè)相結(jié)合的目的。在模擬實(shí)驗(yàn)時(shí),建立數(shù)據(jù)庫(kù)取代工程數(shù)據(jù)庫(kù),并對(duì)控件的事件編寫相應(yīng)的代碼。下面就是用VB語(yǔ)言編寫顯示電機(jī)狀態(tài)的例子,代碼如下(假設(shè)電機(jī)類的圖形符號(hào)名稱是Motor,狀態(tài)寄存器為整型數(shù)據(jù)Motor_Status,要想實(shí)現(xiàn)定時(shí)刷新,只要添加Timer控件定時(shí)觸發(fā)即可):
對(duì)于16位的狀態(tài)寄存器,它可以存放216種狀態(tài)。在實(shí)際使用中,只用了為數(shù)很少幾種情況(如例中的幾種case),而且有些值,如136或137,無備妥故障運(yùn)行狀態(tài)或有備妥故障運(yùn)行狀態(tài),看似不可能而實(shí)際是存在的,可以通過這個(gè)狀態(tài)值分析出設(shè)備目前已經(jīng)脫離了集中控制。
學(xué)生還可利用Java,C++,C#等其他面向?qū)ο蟮木幊陶Z(yǔ)言,來完成這個(gè)設(shè)計(jì)。這樣,學(xué)生一方面可以學(xué)習(xí)、理解面向?qū)ο蟮木幊趟枷朐趯?shí)際工程中的應(yīng)用;另一方面,在教學(xué)中,學(xué)生可以感受計(jì)算機(jī)語(yǔ)言的應(yīng)用領(lǐng)域的廣泛,化抽象為具體,提高學(xué)習(xí)的興趣,為用而學(xué),學(xué)以致用。與實(shí)際不同的是,工程中使用的是實(shí)時(shí)動(dòng)態(tài)采集來的數(shù)據(jù),而且工況要復(fù)雜得多。
教學(xué)過程中,通過設(shè)計(jì)并實(shí)施這些項(xiàng)目,在工廠電氣控制技術(shù)課程的PLC教學(xué)中,配合實(shí)驗(yàn)和實(shí)訓(xùn),可讓學(xué)生感受到真實(shí)的工況環(huán)境,把所學(xué)的PLC技術(shù)為生產(chǎn)服務(wù),使課堂與生產(chǎn)實(shí)際親密結(jié)合,加深對(duì)控制技術(shù)的理解,真正實(shí)現(xiàn)電氣控制自動(dòng)化,并為學(xué)生最終實(shí)現(xiàn)無縫就業(yè)提供幫助。工控軟件很多,比如Heuristics Inc的 ONSPEC32,Bailey公司的INFI-90,Honeywell公司的 PlantScape,Simens的 Step 7 等控制軟件包中,都蘊(yùn)含有面向?qū)ο蟮乃枷耄捕加衅渚唧w的實(shí)現(xiàn)方法。計(jì)算機(jī)軟件專業(yè)的學(xué)生,通過類似的項(xiàng)目,可以理解所學(xué)知識(shí)的應(yīng)用價(jià)值,拓寬就業(yè)渠道。因此將面向?qū)ο缶幊趟枷肱c工業(yè)控制自動(dòng)化結(jié)合起來,有利于學(xué)生知識(shí)的拓展、可持續(xù)發(fā)展,更可為社會(huì)培養(yǎng)出更多更好的復(fù)合型技術(shù)人才。
“Leaning For Work,Learning In Work”,這應(yīng)該是老師和學(xué)生都應(yīng)該重視的問題,切實(shí)做到工與學(xué)的結(jié)合,培養(yǎng)出高素質(zhì)的應(yīng)用型人才。
[1]Fangmark I,Van Bavel B,Marklund S,et al.Influence of combustion parameters on the formation of polychlorinated dibenzo p dioxins,dibenzofurans,benzenes,biphenyls and polyaromatic hydrocarbons in a pilot incinerator[J].Environ.Sci.Tech-nol,1993(27):1602-1610.
[2]劉世峰.Visual Basic程序設(shè)計(jì)[M].北京:中國(guó)廣播電視大學(xué)出版社,2006.
[3]邵鵬鳴.Visual C#程序設(shè)計(jì)基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2006.
[4]張運(yùn)波.工廠電氣控制技術(shù)[M].北京:高等教育出版社,2006.
[5]Honeywell.Plant scape control manual[M].USA:Honeywell Industry Colleage,2004.
[6]Schneider公司.Modicon concept 2.5編程軟件使用手冊(cè)[Z].Schneider公司,2000.