結(jié)構(gòu)化和標(biāo)準(zhǔn)化的 PLC 自動(dòng)編程方法

可 編 程 邏 輯 控 制 器(Programmable LogicController,PLC)本質(zhì)上是一種專為工業(yè)環(huán)境應(yīng)用而設(shè)計(jì)的計(jì)算機(jī)。PLC 具有高可靠性、功能強(qiáng)大、靈活易用、性價(jià)比高等特點(diǎn),已經(jīng)廣泛應(yīng)用于鋼鐵、石油、化工等各個(gè)行業(yè)。在自動(dòng)化工程實(shí)施過(guò)程中,規(guī)范、高效的 PLC 程序不僅是整個(gè)工程項(xiàng)目順利實(shí)施的重要保障,也會(huì)給將來(lái)的系統(tǒng)維護(hù)提供極大的便利。本文提出的一種基于結(jié)構(gòu)化、標(biāo)準(zhǔn)化的 PLC自動(dòng)編程方法,力求規(guī)范項(xiàng)目開(kāi)發(fā)過(guò)程,提高項(xiàng)目開(kāi)發(fā)、實(shí)施效率。

早期的 PLC 主要用來(lái)代替繼電器實(shí)現(xiàn)邏輯控制,繼電器控制的設(shè)計(jì)思想是設(shè)計(jì)PLC程序的主要方法。隨著技術(shù)的發(fā)展,PLC 的功能已經(jīng)遠(yuǎn)遠(yuǎn)不止邏輯控制的范圍,應(yīng)用領(lǐng)域越來(lái)越廣,控制功能和任務(wù)也愈發(fā)多變和復(fù)雜,采用傳統(tǒng)的繼電器控制設(shè)計(jì)思想。進(jìn)行 PLC 程序設(shè)計(jì)已經(jīng)不能滿足要求。隨著計(jì)算機(jī)軟件技術(shù)的不斷發(fā)展,出現(xiàn)了多種程序設(shè)計(jì)思想,如結(jié)構(gòu)化程序設(shè)計(jì)思想、面向?qū)ο蟮某绦蛟O(shè)計(jì)思想以及事件驅(qū)動(dòng)的程序設(shè)計(jì)思想等。其中,結(jié)構(gòu)化程序設(shè)計(jì)是一種應(yīng)用廣泛、易于理解和實(shí)現(xiàn)且比較契合工業(yè)控制程序開(kāi)發(fā)要求的設(shè)計(jì)方法。

結(jié)構(gòu)化和標(biāo)準(zhǔn)化的 PLC 自動(dòng)編程方法的圖1



結(jié)構(gòu)化程序設(shè)計(jì)是以模塊化設(shè)計(jì)為中心,將一個(gè)大的程序功能分割為若干個(gè)相互獨(dú)立的小模塊,各個(gè)模塊相對(duì)獨(dú)立、功能單一,使得程序結(jié)構(gòu)清晰、接口簡(jiǎn)單。結(jié)構(gòu)化程序設(shè)計(jì)采用“自頂而下、逐步細(xì)化”的程序設(shè)計(jì)方法和“單入口單出口”的控制結(jié)構(gòu)。結(jié)構(gòu)化程序的結(jié)構(gòu)簡(jiǎn)單清晰、模塊化強(qiáng),貼近人們習(xí)慣的推理式思維方式。

把計(jì)算機(jī)結(jié)構(gòu)化程序設(shè)計(jì)思想引入到 PLC 程序設(shè)計(jì)中來(lái),應(yīng)當(dāng)包括兩層含義:一是指程序的架構(gòu)設(shè)計(jì),即把程序要完成的功能分解為子目標(biāo),再逐步細(xì)化,分解為具體的小目標(biāo)。一般常用的方法是根據(jù)工藝流程和設(shè)備對(duì)程序功能進(jìn)行分解。二是指程序的復(fù)用化設(shè)計(jì),即某一段程序可以被多次、重復(fù)調(diào)用,也就是設(shè)計(jì)通用化的功能模塊。如對(duì)于功能相同或類似的閥門(mén)可以編寫(xiě)一個(gè)模塊后多次、重復(fù)調(diào)用,不同的輸入條件可以得到不同的輸出結(jié)果,如果有功能需求發(fā)生變化只需要修改該模塊的程序即可,從而能夠大大簡(jiǎn)化編程和調(diào)試。以冶金企業(yè)煤氣加壓站控制系統(tǒng)為例,程序要完成的功能可以先分為三大部分:信號(hào)處理、報(bào)警聯(lián)鎖和設(shè)備控制,然后在此基礎(chǔ)上按照功能要求和設(shè)備類型進(jìn)一步細(xì)化。各個(gè)子程序中會(huì)調(diào)用相同的功能模塊,如加壓機(jī)電機(jī)子程序和輔助油泵子程序都重復(fù)調(diào)用了電機(jī)控制功能模塊,如表 1 所示。


結(jié)構(gòu)化和標(biāo)準(zhǔn)化的 PLC 自動(dòng)編程方法的圖2


采用結(jié)構(gòu)化編程方法可以大大提高 PLC 程序的質(zhì)量并縮短工程調(diào)試時(shí)間,但是在工程實(shí)踐中由于PLC 編程人員的個(gè)人習(xí)慣和素質(zhì)差異,往往會(huì)造成程序風(fēng)格迥異,程序質(zhì)量參差不齊,互通性差;甚至同一個(gè)人在不同時(shí)期、不同項(xiàng)目中編寫(xiě)的程序也會(huì)存在不統(tǒng)一或隨意性。因此,在 PLC 結(jié)構(gòu)化編程的基礎(chǔ)上如果能夠?qū)?PLC 編程的各個(gè)環(huán)節(jié)進(jìn)行統(tǒng)一規(guī)范,將大大降低程序質(zhì)量的差異、實(shí)現(xiàn) PLC 程序的標(biāo)準(zhǔn)化。這些環(huán)節(jié)主要包括:

(1)模塊庫(kù)標(biāo)準(zhǔn)化:即形成統(tǒng)一的模塊庫(kù)供編程人員使用。對(duì)于一個(gè)程序員、一個(gè)部門(mén)或公司來(lái)說(shuō),可以把工程實(shí)踐中積累的功能模塊進(jìn)行分類、提煉和總結(jié),形成個(gè)人、部門(mén)或公司級(jí)的模塊庫(kù)。后續(xù)的工程可以從模塊庫(kù)中集中、統(tǒng)一提取模塊使用,而在工程應(yīng)用這些模塊的過(guò)程中也可以促進(jìn)模塊功能的統(tǒng)一改進(jìn)和完善。在部門(mén)或公司層面上,統(tǒng)一的模塊庫(kù)不僅有利于模塊庫(kù)的維護(hù)和管理,而且模塊庫(kù)只需要少數(shù)水平高的編程人員負(fù)責(zé)編寫(xiě)和維護(hù),大多數(shù)編程人員只需要簡(jiǎn)單的使用這些模塊即可,既統(tǒng)一了程序質(zhì)量、保證了程序的標(biāo)準(zhǔn)化設(shè)計(jì),也避免了很多重復(fù)勞動(dòng)。

(2)程序架構(gòu)標(biāo)準(zhǔn)化:盡管工藝流程各不相同,但對(duì)于 PLC 程序來(lái)說(shuō)仍具有很多共性,如信號(hào)處理、報(bào)警、通訊處理和設(shè)備控制等。因此,可以根據(jù)行業(yè)特點(diǎn)對(duì) PLC 程序架構(gòu)進(jìn)行統(tǒng)一劃分規(guī)定。

(3)存儲(chǔ)器分配標(biāo)準(zhǔn)化:PLC 程序中的各類變量一般需要分類或分組存放,如在西門(mén)子 STEP7 軟件中,可以采用不同的數(shù)據(jù)塊對(duì)變量進(jìn)行分門(mén)別類的存放,這些數(shù)據(jù)塊的編號(hào)、命名和存儲(chǔ)內(nèi)容都可以進(jìn)行統(tǒng)一的規(guī)定。

(4)變量定義標(biāo)準(zhǔn)化:良好的變量定義方法不僅有利于提高程序的可讀性,同時(shí)也有利于程序的排錯(cuò)和調(diào)試。因此,按照相關(guān)設(shè)計(jì)規(guī)范(如《自控設(shè)計(jì)常用圖例和符號(hào)》)結(jié)合工程特點(diǎn),對(duì)變量定義方法進(jìn)行統(tǒng)一規(guī)定是十分必要的。

(5)其他:對(duì)于 PLC 程序的很多細(xì)節(jié)也應(yīng)當(dāng)進(jìn)行統(tǒng)一規(guī)定,如工程的命名、模塊的命名、網(wǎng)絡(luò)地址的分配等。

結(jié)構(gòu)化和標(biāo)準(zhǔn)化的 PLC 自動(dòng)編程方法的圖3



按照統(tǒng)一的設(shè)計(jì)標(biāo)準(zhǔn)、統(tǒng)一的模塊庫(kù)進(jìn)行 PLC編程,會(huì)使 PLC 程序的編制形成一種“固定套路”:建立程序框架→建立變量→調(diào)用相關(guān)模塊→填寫(xiě)模塊的輸入 / 輸出管腳→程序測(cè)試和調(diào)試。這種看似枯燥乏味的編程過(guò)程,實(shí)際存在不少有規(guī)律性、重復(fù)性的工作可以交給計(jì)算機(jī)軟件去完成,從而實(shí)現(xiàn)變量和代碼的自動(dòng)生成,即 PLC 程序的自動(dòng)編程。這樣能夠大大降低軟件開(kāi)發(fā)的工作量,提高工作效率。可以說(shuō),PLC 自動(dòng)編程是建立在結(jié)構(gòu)化和標(biāo)準(zhǔn)化設(shè)計(jì)的基礎(chǔ)上,采用工具軟件輔助生成程序的一種設(shè)計(jì)方法。

下面以電機(jī)的控制程序?yàn)槔?jiǎn)要說(shuō)明 PLC 程序自動(dòng)編程的流程:假設(shè)有兩臺(tái)電機(jī)分別叫 1 #電機(jī)和 2 #電機(jī),需要實(shí)現(xiàn)手動(dòng)啟動(dòng)和停止的功能。手動(dòng)編程首先需要定義表 2 中的變量。

結(jié)構(gòu)化和標(biāo)準(zhǔn)化的 PLC 自動(dòng)編程方法的圖4


可以看出,兩臺(tái)電機(jī)的變量名稱和注釋中具有相同的后綴,而變量名稱中不同的部分就是前綴(設(shè)備編號(hào)):Motor1 和 Motor2,注釋中不同的部分就是設(shè)備名稱:1 #電機(jī)和 2 #電機(jī)。接下來(lái)就可調(diào)用一個(gè)事先編寫(xiě)好的通用的電機(jī)控制模塊(FB200),并為這個(gè)模塊分別填寫(xiě)不同的參數(shù),如圖 1 所示


結(jié)構(gòu)化和標(biāo)準(zhǔn)化的 PLC 自動(dòng)編程方法的圖5


從上述手動(dòng)編程的過(guò)程和結(jié)果來(lái)看,由于采用了相同的電機(jī)控制模塊(FB200)和相同的變量命名方法,兩臺(tái)電機(jī)控制程序的差異很小,主要是設(shè)備編號(hào)和設(shè)備名稱的不同所帶來(lái)的,而且這種差異是極其有規(guī)律的,因此上面的變量和代碼可以采用軟件生成并導(dǎo)入到 PLC 編程軟件中去。我們采用 Excel VBA 開(kāi)發(fā)了一個(gè)工具軟件,用于自動(dòng)生成 PLC 程序代碼和變量 ( 基于西門(mén)子 STEP7平臺(tái) )。該軟件首先將模塊庫(kù)中各個(gè)模塊的詳細(xì)信息存儲(chǔ)在一張表格中,包括模塊名稱、編號(hào)、各引腳參數(shù)名稱、類型、參數(shù) ID 前后綴、參數(shù)名稱前后綴、參數(shù)變量存儲(chǔ)區(qū)域等,這些信息用于生成變量和代碼中的共性部分,然后由編程人員手動(dòng)輸入個(gè)性部分——設(shè)備編號(hào)、名稱等,從而生成的變量和代碼將以文本的形式導(dǎo)入到 Step7 軟件中去,最終形成 PLC 程序。由于 Step7 軟件支持文本格式的語(yǔ)句表(STL)程序與梯形圖程序(LAD)以及功能塊圖程序(FBD)互相轉(zhuǎn)換,因此最終生成的 PLC 程序也可以轉(zhuǎn)換成更為直觀的梯形圖或功能塊圖程序。整個(gè)自動(dòng)編程的大致流程如圖 2 所示(虛框內(nèi)為該軟件的功能)。

結(jié)構(gòu)化和標(biāo)準(zhǔn)化的 PLC 自動(dòng)編程方法的圖6



圖 2 中的“手動(dòng)修改代碼 ( 非標(biāo)部分 )”是指一些特定的工藝控制要求如聯(lián)鎖保護(hù)等,這部分代碼需要根據(jù)《軟件詳細(xì)設(shè)計(jì)》進(jìn)行手動(dòng)修改和編程,這點(diǎn)也對(duì)通用性模塊的編程提出了更高的要求,即模塊要留有接口滿足這類特定控制條件下的參數(shù)條件修改。

把上述 PLC 自動(dòng)編程的思路推廣一下,可以把一些固定的工藝流程包含的功能模塊封裝成一個(gè)模塊,如前文舉例的煤氣加壓機(jī),可以把一臺(tái)加壓機(jī)涉及的固定設(shè)備(包括電機(jī)、輔助油泵、機(jī)前 / 后閥門(mén)和輔助設(shè)備等)的 PLC 程序封裝為一個(gè)功能模塊,這樣自動(dòng)生成 PLC 程序的過(guò)程更為簡(jiǎn)單和明了。

結(jié)構(gòu)化和標(biāo)準(zhǔn)化的 PLC 自動(dòng)編程方法的圖7



筆者在多個(gè)工程項(xiàng)目中采用這種方法進(jìn)行自動(dòng)編程,取得了良好的應(yīng)用效果。實(shí)踐證明,PLC 自動(dòng)編程具有以下優(yōu)點(diǎn):一是能夠大大簡(jiǎn)化 PLC 編程過(guò)程,減少程序開(kāi)發(fā)工作量;二是可以避免人為輸入代碼和參數(shù)的錯(cuò)誤;三是在自動(dòng)生成變量的過(guò)程中,實(shí)質(zhì)上是把變量命名要求和規(guī)范嵌入到軟件中去,使得自動(dòng)生成的變量名稱、注釋和存儲(chǔ)區(qū)域等都符合標(biāo)準(zhǔn)化編程的要求;四是在自動(dòng)生成代碼的過(guò)程中,需要查找內(nèi)置在軟件中的對(duì)應(yīng)模塊,從而可以確保生成的 PLC 代碼來(lái)自統(tǒng)一的模塊庫(kù);五是自動(dòng)生成的代碼會(huì)根據(jù)軟件中設(shè)置好的程序框架自動(dòng)劃分為若干個(gè)子程序,從而可以確保 PLC 程序架構(gòu)標(biāo)準(zhǔn)化。

筆者設(shè)想:由于 PLC 自動(dòng)編程降低了編程難度,對(duì)于一些固定的工藝流程和控制對(duì)象,可能只需要自控編程人員甚至是工藝人員進(jìn)行簡(jiǎn)單的工藝參數(shù)選擇和配置就能生成大部分的 PLC 程序。

隨著技術(shù)的不斷進(jìn)步,PLC 硬件功能越來(lái)越強(qiáng)大,所承擔(dān)的功能和任務(wù)也越來(lái)越復(fù)雜和多變,因此 PLC 軟件編程方法已經(jīng)不能局限于傳統(tǒng)的繼電器控制設(shè)計(jì)思想。本文提出的基于結(jié)構(gòu)化和標(biāo)準(zhǔn)化并結(jié)合自編軟件實(shí)現(xiàn) PLC 自動(dòng)編程的設(shè)計(jì)方法,希望能夠起到拋磚引玉的作用。

轉(zhuǎn)自《信息技術(shù)與標(biāo)準(zhǔn)化》,寶信軟件與標(biāo)準(zhǔn)化專欄,上海寶信軟件股份有限公司 袁 翔


登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

2