基于文檔控制的PLC程序開發(fā)方法及實踐研究
劉冰1王素娟2
(1.中國電子系統(tǒng)工程第四建設(shè)有限公司,北京 100070;2.中國建筑設(shè)計研究院有限公司,北京 100044)
摘要:首先講述了一種基于文檔控制的PLC程序的設(shè)計方法;然后以某型成型機程序為例,依次介紹了這種設(shè)計方法流程的各個環(huán)節(jié),展示了其實際應(yīng)用方式;之后分析了多人開發(fā)情況下的應(yīng)用方式;最后總結(jié)了這種設(shè)計方法的特點。這種設(shè)計方法對大型PLC程序的協(xié)作開發(fā)和保障設(shè)備安全都有積極意義。
關(guān)鍵詞:PLC;文檔;程序設(shè)計;流程
收稿日期:2015-07-16
作者簡介:劉冰(1981—),男,河北人,工程師,從事自動化生產(chǎn)廠房類建筑電氣方向的研究、設(shè)計及實施工作。
1開發(fā)方法概述
目前隨著我國經(jīng)濟的不斷發(fā)展,國內(nèi)機械的自動化水平也在不斷提高。本文以三菱Q25H CPU控制的成型機為例,講述了開發(fā)大型PLC程序的一種方法。機械生產(chǎn)設(shè)備的任何意外動作都有可能造成人身傷害或生產(chǎn)事故,因此必須將PLC程序可靠性放在首位。同時,一般機械設(shè)備服役周期往往在10年以上,在服役年限中,根據(jù)工藝變化,調(diào)整PLC程序邏輯不可避免。在實際生產(chǎn)中,往往會在設(shè)備投入運行后增加多個功能模塊。大型PLC程序功能眾多,結(jié)構(gòu)復(fù)雜,而PLC與計算機不同,各種資源(寄存器、定時器等)非常有限,各個功能模塊之間信息交互同時非常頻繁,如何建立一個統(tǒng)一架構(gòu),使得資源調(diào)配有序、合理,信息傳遞通暢,并降低編寫大型程序的難度,同時盡可能減小程序變更時對已經(jīng)存在的模塊可能會互相產(chǎn)生的意外影響,這是需要解決的問題。通過嚴(yán)格的設(shè)計文件,界定PLC資源的分配和每個子程序用途,預(yù)先規(guī)定可預(yù)期的程序變更的語句寫法,同時對非預(yù)期的程序加以界定,確保新編寫模塊對設(shè)備動作影響在可控范圍之內(nèi),這樣就能使程序變更更為安全高效,不需進行繁瑣測試甚至測試性生產(chǎn)來確定程序運行是否沒有誤動作。此種方法通常稱之為文檔式開發(fā)方法,適用于漸進式設(shè)計,可以功能不斷增加而框架不變。程序員編寫程序時,遵循已有架構(gòu),專心編寫要完成的功能即可,這就大大降低了大型程序的編寫難度。
2確定功能需求和硬件框架
輪胎成型機(簡稱TBM)是輪胎制造生產(chǎn)過程中,將半成品部件(如胎面、胎側(cè)、胎冠、型膠、胎體等)按工藝要求組合成成型輪胎胎胚的一種輪胎生產(chǎn)專用設(shè)備。成型機電氣硬件系統(tǒng)由兩個Q25H PLC組成,兩個PLC分別負(fù)責(zé)成型機一段和二段。以控制一段的電氣硬件為對象,則PLC系統(tǒng)包含CC-link總線遠程I/O、Q173運動CPU、Q173所控制的運動總線SSCNET,總線連接至各個伺服模塊。以控制二段的電氣硬件為對象,則PLC系統(tǒng)包含CC-link總線遠程I/O、Q173運動CPU、Q173所控制的運動總線SSCNET,總線連接至各個伺服模塊。
為了完成成型機的控制,現(xiàn)在確定共有以下功能模塊:(1) 網(wǎng)絡(luò)連接;(2) 觸摸屏顯示及控制;(3) 成型輪胎尺寸改變;(4) 輸出控制;(5) 可選設(shè)備控制;(6) 成型輪胎。
根據(jù)已經(jīng)確定的硬件架構(gòu)和功能劃分,就可以開始著手進行程序編寫工作。
3確定架構(gòu)及資源劃分
首先,需要畫出大架構(gòu)圖。在整個架構(gòu)中,公共區(qū)PLC寄存器、定時器和鎖存器是對所有模塊開放讀取權(quán)限的,數(shù)據(jù)交換通過寫入和讀取寄存器、定時器和鎖存器的狀態(tài)來進行。例如:定義M0為PLC狀態(tài),M0為ON則表示PLC狀態(tài)良好,OFF則表示PLC狀態(tài)異常。此M0為LAD01可寫,其余模塊可讀。則新編寫或者任意模塊在需要加入PLC狀態(tài)條件時,就可以直接在梯形圖中加入此條件。這樣,對于一些常用的公共狀態(tài)(是否急停、PLC狀態(tài)、網(wǎng)絡(luò)狀態(tài)),在模塊調(diào)用時就無須專門定義。在進行新模塊的編寫時,大量的、正確的公共狀態(tài)可以隨時調(diào)用,極大地節(jié)省了編寫和測試接口的時間。
3.1PLC資源劃分及文檔編寫
首先,我們需要對PLC資源進行總體的劃分。PLC資源包括寄存器(M點)、定時器(T點)、鎖存器(L點)等。以最常用的M點為例,劃分為梯形圖用、設(shè)備位置狀態(tài)、觸摸屏用……最后分別編寫各個程序塊的資源清單如表1所示。
表1 資源用途劃分表
同樣,如果PLC還有其他資源的話,也進行同樣的劃分。之后,就根據(jù)此次劃分結(jié)果進行下一步劃分,如表2所示。
表2 程序資源分配表
這樣,就完成了對資源到每一模塊的劃分。
注意:這些劃分的資源為各個程序模塊的私有資源,別的模塊不可讀取、使用,這樣就杜絕了新舊程序塊之間的干擾。
3.2公用數(shù)據(jù)區(qū)權(quán)限劃分及文檔編寫
公有數(shù)據(jù)區(qū)權(quán)限劃分應(yīng)當(dāng)遵循一個原則,一個中間繼電器點應(yīng)當(dāng)只有一個模塊有寫入權(quán)限。違背此原則會導(dǎo)致嚴(yán)重后果,千萬注意!公用數(shù)據(jù)區(qū)通常使用非鎖存寄存器,以確保在任何狀態(tài)異常后,通過關(guān)閉PLC電源然后重啟,公用數(shù)據(jù)區(qū)數(shù)據(jù)即可恢復(fù)正常。這對于程序可靠性來說意義重大。
權(quán)限劃分方法如下:首先,確認(rèn)公用數(shù)據(jù)區(qū)。在此例中,公用數(shù)據(jù)區(qū)為M0~M300。然后,確認(rèn)每個數(shù)據(jù)點意義及權(quán)限所屬,以M0為例,如表3所示。
表3 公共資源權(quán)限表
然后做出相應(yīng)的程序模塊對應(yīng)表,如表4所示。
表4 公共資源寫入表
這樣就完成了公有數(shù)據(jù)區(qū)權(quán)限的劃分。在多人同時編寫程序時,每個人手中應(yīng)當(dāng)有同一版本的此公用數(shù)據(jù)表。
3.3輸出及驅(qū)動權(quán)限劃分
輸出和驅(qū)動作為程序輸出的底層,可能接收多個程序模塊的指令。最常見的情況為,電機會接收手動模塊發(fā)來的指令和自動模塊發(fā)來的指令。這在程序復(fù)雜時就會導(dǎo)致混亂。為了解決此問題,引入了輸出模塊專門進行處理。輸出模塊對各個模塊的指令進行判別,然后進行輸出。在引入輸出模塊的同時,對于向輸出模塊輸出指令的程序模塊也應(yīng)當(dāng)是指定的。
舉例:規(guī)定輸出Y12 環(huán)移動(右)由LAD10輸入模塊控制,由LAD04、LAD13程序給LAD10發(fā)出指令,指令位為M505、M613,其他模塊沒有權(quán)限,則如表5所示。
表5 輸出模塊表
將所有輸出列入后形成文檔,輸出模塊按照此文檔編寫。伺服和電機控制權(quán)限與以上所說類似,可以編寫成對應(yīng)的驅(qū)動權(quán)限文件。在多人同時編寫程序時,每個人手中應(yīng)當(dāng)有同一版本的此文檔。
3.4預(yù)留數(shù)據(jù)區(qū)劃分
預(yù)留數(shù)據(jù)區(qū)劃分為一塊,在文件中注明資源起止地址即可。
4功能模塊及文檔編寫
資源的劃分進行完畢后,就可以進行各個功能模塊的編寫了。
4.1已規(guī)劃模塊添加
對于在第2大點中已經(jīng)完成規(guī)劃的程序模塊,在編寫完畢后進行如下審查,審查完畢即可直接加入:(1) 對應(yīng)PLC資源劃分文件檢查模塊內(nèi)使用資源;(2) 對應(yīng)輸出及權(quán)限劃分文件檢查模塊內(nèi)輸出;(3) 檢查模塊邏輯。
4.2已規(guī)劃模塊修改
當(dāng)設(shè)備投入使用后,對已有的模塊進行修改時,有兩種情況:(1) 可預(yù)期的更改:可預(yù)期的更改是指在原來程序設(shè)計時就已經(jīng)考慮到的、可能會發(fā)生變更的更改。這些更改在程序中往往已有同樣功能語句,只需要按照同樣語句進行添加或者修改即可。(2) 不可預(yù)期的更改:不可預(yù)期的更改通常會編寫新的邏輯。這時應(yīng)當(dāng)注意按照資源表,使用編寫邏輯所需資源。編寫中如果發(fā)現(xiàn)需要使用額外的資源,如輸出和驅(qū)動指令權(quán)等,就需要修改相應(yīng)的資源表格,經(jīng)批準(zhǔn),而后才能使用此資源。編寫完畢后,此模塊按照新模塊標(biāo)準(zhǔn)進行獨立模擬運行,無誤后,進行更改。
4.3新模塊添加
編寫新模塊時,有兩種方法:(1) 先用偽代碼寫出邏輯,預(yù)估所需資源,然后改寫相關(guān)資源表,將空余中資源劃出自己所需部分,進行程序模塊編寫。(2) 大致預(yù)估所需資源,然后改寫相關(guān)資源表,將空余中資源劃出自己所需部分,進行程序模塊編寫。兩種方法在實際中都可以采用。模塊編寫完畢獨立測試沒有問題,檢查沒有使用不屬于此模塊的資源后,就可以在程序中加入此模塊了。至此,一套PLC程序的開發(fā)流程就介紹完畢了。
5多人協(xié)作編寫的應(yīng)用方法
大型PLC程序通常會由多人編寫。在多人編寫時,此方式優(yōu)點可以充分發(fā)揮。每個人編寫時,有大量的公用狀態(tài)資源可以直接調(diào)用,同時有明確的私有資源和輸出資源可以調(diào)用。整個項目管理簡單,只需要明確寫明每個模塊的目的和相應(yīng)分配的資源表,就完成了任務(wù)書下達。同時簡化了質(zhì)量控制,只要確保沒有使用不應(yīng)使用的資源,則此模塊的代碼就不會對設(shè)備其他模塊的運行和安全產(chǎn)生損害,通過檢查輸出資源,就可以控制此模塊誤動作時可能產(chǎn)生的后果。
5.1任務(wù)劃分
首先應(yīng)當(dāng)進行第二大點所述的資源劃分,之后就可以將各個程序模塊分給個人了,管理流程相當(dāng)簡單。
5.2任務(wù)權(quán)限劃分
雖然理論上任何工程師都可以進行任何程序模塊的編寫,但在實踐當(dāng)中,通常由經(jīng)驗比較豐富的工程師處理報警、驅(qū)動這類程序的編寫。
根據(jù)任務(wù)可能對設(shè)備造成危險的等級,可以劃分任務(wù)權(quán)限,由權(quán)限較高的工程師承擔(dān)驅(qū)動、輸出等模塊的編寫。
6結(jié)語
通過嚴(yán)格的設(shè)計文件,定PLC資源的分配和每個子程序的用途,預(yù)先規(guī)定可預(yù)期的程序變更的語句寫法,同時對非預(yù)期的程序加以界定,這樣的程序設(shè)計方法在實踐中被證明是簡單有效的。使用此方法,成功開發(fā)了多個十萬行以上的復(fù)雜PLC程序,在包括成型機、鋼絲圈等設(shè)備上獲得了應(yīng)用。應(yīng)用中,編寫開發(fā)時間較短,同時由于文檔簡單、管理方便,還可以以跨國工程師協(xié)作的方式編寫程序。尤為重要的是,該方法控制了新加入的任何程序可能產(chǎn)生的風(fēng)險。每次更改程序后,都可以初步預(yù)估可能有誤動作的部件,使得設(shè)備的使用安全風(fēng)險降至最小。總的來說,此種方法是一種實用的大型PLC程序設(shè)計方法。
王素娟(1984—),女,河北人,工程師,從事建筑電氣方向的研究、設(shè)計工作。