史騰虎,李少波,于麗婭,周 鵬
(貴州大學(xué)機(jī)械工程學(xué)院,貴州 貴陽(yáng) 550025)
可編程序邏輯控制器( programmable logic controller,PLC)是一種基于數(shù)字運(yùn)算的電子操作系統(tǒng),專為工業(yè)環(huán)境而設(shè)計(jì),它因1969 年美國(guó)數(shù)字設(shè)備公司(digital equipment corporation, DEC) 為通用汽車(general motors,GM)公司開(kāi)發(fā)汽車生產(chǎn)流水線而出現(xiàn)[1-2]。 到目前為止,PLC 不僅擁有豐富的邏輯指令,還具有強(qiáng)大的運(yùn)算能力和通信功能,在現(xiàn)代工業(yè)的各個(gè)領(lǐng)域都有它的應(yīng)用,已成為自動(dòng)化控制的核心。 為更好地推動(dòng)工業(yè)自動(dòng)化的發(fā)展、提高編程的效率,有必要系統(tǒng)論述自PLC 誕生以來(lái),在工業(yè)界廣泛應(yīng)用的幾種主要的編程方法和編程方式,對(duì)比它們各自的特點(diǎn)和適用的工程范圍,從而揭示從簡(jiǎn)單工程到復(fù)雜工程之間的邏輯主線,為廣大工程人員的工業(yè)應(yīng)用提供必要的參考。
PLC 編程方法是指編排工程邏輯關(guān)系的一種設(shè)計(jì)。 根據(jù)這種設(shè)計(jì),可以快速、準(zhǔn)確地編寫出滿足相應(yīng)功能要求的程序。 雖然目前PLC 已經(jīng)形成了五大編程語(yǔ)言:語(yǔ)句表(statement list,STL)、梯形圖(ladder diagram,LAD)、功能塊圖(function block diagram,FBD)、順序功能圖(sequential function chart,SFC)、結(jié)構(gòu)化文本(structured text,ST)[3-4],但無(wú)論哪一種語(yǔ)言都可以依據(jù)本文所論述的方法實(shí)現(xiàn)快速、準(zhǔn)確的編程。因LAD 語(yǔ)言更為廣大電氣工程人員所接受,所以本文以此為例進(jìn)行編程方法的展示。
經(jīng)驗(yàn)設(shè)計(jì)法是依據(jù)工程人員的先驗(yàn)知識(shí)而直接編程的一種方法,多針對(duì)較簡(jiǎn)單工程。 因其運(yùn)行邏輯關(guān)系簡(jiǎn)單而能夠直接構(gòu)思出來(lái),所以為節(jié)約網(wǎng)絡(luò)數(shù),多采用起保停編程方式進(jìn)行程序的編寫。 同時(shí),當(dāng)顧客的要求發(fā)生改變時(shí),富有經(jīng)驗(yàn)的工程人員可以現(xiàn)場(chǎng)改編程序并直接將其投入生產(chǎn)。
案例1:單擊開(kāi)始按鈕I0.0,電機(jī)1(Q0.0)立即啟動(dòng);間隔15 s(T37)后,電機(jī)2(Q0.1)啟動(dòng);再間隔20 s(T38)后,電機(jī)3(Q0.2)啟動(dòng)。 單擊停止按鈕I0.1,電機(jī)3 立即停止;間隔25 s(T39)后,電機(jī)2 停止;再間隔10 s(T40)后電機(jī)1 停止。
此工程運(yùn)行邏輯關(guān)系比較簡(jiǎn)單,可以直接構(gòu)思出來(lái),所以通常憑借編程經(jīng)驗(yàn)直接采用起保停的編程方式進(jìn)行編寫。
案例1 的程序如圖1 所示。
圖1 案例1 的程序圖Fig.1 Procedure diagram of Case 1
PLC 價(jià)格昂貴且功能強(qiáng)大,將其應(yīng)用于簡(jiǎn)單工程會(huì)浪費(fèi)內(nèi)部極其豐富的軟元件資源。 因此,針對(duì)這類工程,目前大都是用交流接觸器、中間繼電器、時(shí)間繼電器等硬件直接組成并行的硬件邏輯電路[5-6],總體成本比直接使用PLC 低很多。 案例1 的并行硬件邏輯電路如圖2 所示。
圖2 案例1 的并行硬件邏輯電路Fig.2 Parallel hardware logic circuit of Case 1
圖2 中:FU 為熔斷器;BB 為熱保護(hù)器;KF 為時(shí)間繼電器;SF 為按鈕;QA 為電機(jī)的交流接觸器。 與圖1中的軟元件的對(duì)應(yīng)關(guān)系為:KF1~KF4 對(duì)應(yīng)于T37~T40;SF1~SF2 對(duì)應(yīng)于I0.0~I(xiàn)0. 1;QA1~QA3 對(duì)應(yīng)于Q0.0~Q0.2。
時(shí)序圖設(shè)計(jì)法是針對(duì)較復(fù)雜工程而采用的一種編程方法。 這類工程因涉及并行、循環(huán)等分支,單憑借編程經(jīng)驗(yàn),一般難以厘清各機(jī)構(gòu)之間的運(yùn)行邏輯關(guān)系,因此需要一定的編程方法。
時(shí)序圖是專為描述這類工程而開(kāi)發(fā)的流程展示圖,是在波形圖的基礎(chǔ)上演變而來(lái)的[7]。 時(shí)序圖利用波形圖的高電平表示輸出點(diǎn)的ON 狀態(tài)、低電平表示輸出點(diǎn)的OFF 狀態(tài);跳變位置表示觸發(fā)條件,而跳變與跳變之間的距離則表示運(yùn)行時(shí)間上的間隔。 因此,時(shí)序圖清晰地表示出了工程的運(yùn)行邏輯關(guān)系,十分有利于據(jù)此編寫程序。
案例2:單擊啟動(dòng)按鈕(I0.0),南北紅燈亮25 s,這期間,東西綠燈先亮20 s(T37),再以1 Hz 的頻率閃爍3 次(C0),接著東西黃燈亮2 s(T38)。 25 s 后,南北紅燈熄滅30 s,東西紅燈開(kāi)始亮30 s,南北綠燈先亮25 s(T39),然后以1 Hz 的頻率閃爍3 次(C1),接著南北黃燈亮2 s(T40)。 之后循環(huán)運(yùn)行,單擊停止按鈕(I0.1),所有燈熄滅。 根據(jù)以上所述,案例2 的時(shí)序圖如圖3 所示。
圖3 案例2 的時(shí)序圖Fig.3 Sequence diagram of Case 2
由于復(fù)雜工程往往涉及選擇、跳轉(zhuǎn)、嵌套等復(fù)雜分支,時(shí)序圖一般難以描述,需要新的設(shè)計(jì)方法。 順序功能圖設(shè)計(jì)法是針對(duì)復(fù)雜工程而采用的一種編程方法。
順序功能圖以通用輔助繼電器(M)作為運(yùn)行環(huán)節(jié)的中心,以十字線條作為流程的導(dǎo)向和觸發(fā)條件,以方框表示每一個(gè)環(huán)節(jié)應(yīng)該運(yùn)行的軟元件種類和數(shù)量。 通過(guò)線框組合,可清晰地描述出復(fù)雜工程的運(yùn)行邏輯關(guān)系。 當(dāng)工程要求發(fā)生變化時(shí),可在圖上直接進(jìn)行修改。
案例3:按下啟動(dòng)按鈕,GP1、GP2、GP3 泵分別將堿、聚合物、水抽入1#、2#、3#容器,抽滿后分別發(fā)出信號(hào),GP1、GP2、GP3 泵關(guān)閉。 此時(shí)若接通I1.4,則GP4、GP6 泵分別將1#、3#抽到4#容器;若接通I1.5,則GP5、GP6 泵分別將2#、3#抽到4#容器。 同時(shí)啟動(dòng)攪拌器60 s,4#滿或者1#、2#、3#容器空,則GP4、GP5、GP6 泵關(guān)閉。攪拌時(shí)間到后,檢測(cè)均勻程度:若不合格,則再次攪拌60 s;若合格,GP7 將4#抽到5#,直至4#空或者5#容器滿,GP7 泵關(guān)閉。 至此,一個(gè)循環(huán)完成。 按啟動(dòng)按鈕后,新一輪循環(huán)開(kāi)始。 案例3 的示意圖如圖4 所示。
圖4 案例3 的示意圖Fig.4 Schematic diagram of Case 3
與經(jīng)驗(yàn)設(shè)計(jì)法、時(shí)序圖設(shè)計(jì)法不同,功能圖設(shè)計(jì)法多應(yīng)用于復(fù)雜工程。 在編排相應(yīng)的順序功能圖之前,必須首先定義好相應(yīng)的輸入、輸出點(diǎn)地址,才能夠設(shè)計(jì)出邏輯關(guān)系清晰的功能圖。 針對(duì)案例3,輸入、輸出點(diǎn)地址分配如表1 所示。
表1 輸入、輸出點(diǎn)地址分配Tab.1 Address assignment of input and output points
根據(jù)案例3 的描述,以及相應(yīng)的輸入、輸出點(diǎn)地址分配,編排工程的整體流程。 案例3 的順序功能如圖5 所示。
圖5 案例3 的順序功能圖Fig.5 Sequence function diagram of Case 3
圖5 中:SM0.1 為初始掃描到ON;M 為通用輔助繼電器;“=1”指上面并行條件同時(shí)滿足時(shí)成立;“*”為“與”條件;“+”為“或”條件。
編程方式是將編程方法具象化的手段。 就目前而言,PLC 主要有三種編程方式:起保停編程方式、置復(fù)位編程方式和順序控制指令編程方式。 每種編程方式都有其優(yōu)缺點(diǎn),綜合應(yīng)用才能夠達(dá)到最佳的編程效果。
起保停編程方式以步為中心,與傳統(tǒng)的并行硬件邏輯電路相似。 其也正是由此演化而來(lái)的[8-10],所以這種編程方式最為廣大電氣工程人員所接受。 圖1 程序采用了起保停編程方式進(jìn)行編寫,可以和圖2 并行硬件邏輯電路圖作對(duì)比。 這里有兩點(diǎn)需要注意。 一是PLC 內(nèi)部沒(méi)有如硬件時(shí)間繼電器的即通電即保持接通/斷開(kāi)的觸點(diǎn),所以需要利用通用輔助繼電器(M)來(lái)作為自鎖的供電電路。 二是PLC 中的時(shí)間繼電器(T)只有在分辨率為100 ms 的情況下才可用自身常閉觸點(diǎn)斷自己的供電,而分辨率為10 ms 和1 ms 的時(shí)間繼電器則不可。 這與不同分辨率的時(shí)間繼電器在PLC內(nèi)部具有不同的刷新方式有關(guān)。
交通燈的置復(fù)位編程方式如圖6 所示。
圖6 交通燈的置復(fù)位編程方式Fig.6 Set/reset programming mode for traffic lights
置復(fù)位編程方式是在起保停編程方式基礎(chǔ)上改進(jìn)的一種編程方式。 起保停編程方式每一步不僅需要考慮自身網(wǎng)絡(luò),還需要考慮與上、下網(wǎng)絡(luò)之間的聯(lián)系[11-13],因此每一步編程都需要跨越3 個(gè)網(wǎng)絡(luò)。 而置復(fù)位編程方式只需要考慮自身網(wǎng)絡(luò)情況,邏輯關(guān)系更加清晰。 所以,在同等工程量下,置復(fù)位編程方式一般比起保停編程方式所用到的軟元件總量要少。
如1.2 節(jié)中所述工程:根據(jù)圖3,按照從左到右、從上到下的順序依次編程(并規(guī)定東西綠燈閃爍用M0.1,南北綠燈閃爍用M0.0,T37~T40 自鎖供電用M0.2~M0.5);用置復(fù)位編程方式進(jìn)行程序的編寫,則如圖6 所示(文中只給出Q0.1、Q0.4、T37~T40 的程序)。
圖6 中:SM0. 5 為時(shí)鐘脈沖,通0. 5 s,斷0. 5 s。實(shí)際編程按下降沿計(jì)數(shù),所以綠燈長(zhǎng)亮的編程時(shí)間均應(yīng)比工程規(guī)定的時(shí)間少0.5 s,即計(jì)數(shù)值應(yīng)為4 而非3。
以1.3 節(jié)所舉的工程為例,用三種編程方式進(jìn)行其前七步中心環(huán)節(jié)的編程。
三種編程方式的比較如圖7 所示。
圖7 三種編程方式的比較Fig.7 Comparison of three programming methods
順序控制指令是PLC 生產(chǎn)廠家專為便于工程人員編寫順序控制程序而開(kāi)發(fā)出的指令[14-15]。 由于順序控制指令由各個(gè)PLC 生產(chǎn)廠家提供,因此每個(gè)廠家規(guī)定的指令形式、數(shù)量及使用方法都有所不同[16-20],不像前兩種編程方式,在任何品牌PLC 中都通用。
以S7-200 PLC 為例,SIEMENS 公司提供了四條順序控制指令:順序狀態(tài)開(kāi)始(SCR)、順序狀態(tài)轉(zhuǎn)換(SCRT)、順序狀態(tài)結(jié)束(SCRE)、條件順序狀態(tài)結(jié)束(CSCRE)[21-23]。 需要注意的是:用順序控制指令進(jìn)行編程時(shí),中間繼電器不再是通用輔助繼電器(M),而是順序控制繼電器(S)[24-26],否則程序無(wú)法運(yùn)行。
針對(duì)不同類型的工程,采用適配的編程方法,才能達(dá)到最佳的編程效果。 針對(duì)簡(jiǎn)單工程,因其運(yùn)行邏輯關(guān)系簡(jiǎn)單而能夠直接構(gòu)思出來(lái),所以常采用經(jīng)驗(yàn)設(shè)計(jì)法。 因?yàn)楣こ踢壿嬯P(guān)系簡(jiǎn)單,將主要精力集中在單個(gè)網(wǎng)絡(luò)集成度上,反而使得起保停編程方式在簡(jiǎn)單工程中更具有優(yōu)勢(shì)。
針對(duì)較復(fù)雜工程,若直接采用順序功能圖設(shè)計(jì)法,步驟較為繁瑣,反而會(huì)導(dǎo)致開(kāi)發(fā)效率的降低,故時(shí)序圖設(shè)計(jì)法是更優(yōu)的設(shè)計(jì)方法。
復(fù)雜工程運(yùn)行分支的復(fù)雜性,使順序功能圖設(shè)計(jì)法成為唯一適用的設(shè)計(jì)方法。 也正因?yàn)檫@個(gè)特點(diǎn),順序功能圖設(shè)計(jì)法能夠向下兼容所有的工程類型。 但研究發(fā)現(xiàn),順序功能圖設(shè)計(jì)法是三種編程方法中設(shè)計(jì)步驟較為繁瑣的。 遵循“能用簡(jiǎn)單,不用復(fù)雜”的原則,是保證開(kāi)發(fā)效率的基礎(chǔ)。
通過(guò)圖1、圖6 和圖7 的比較分析,本文提出考核編程方式的兩個(gè)重要指標(biāo):單個(gè)網(wǎng)絡(luò)集成度、邏輯關(guān)系清晰度。 單個(gè)網(wǎng)絡(luò)集成度以一個(gè)網(wǎng)絡(luò)內(nèi)具有的軟元件總量多少作為評(píng)判標(biāo)準(zhǔn),邏輯關(guān)系清晰度以本網(wǎng)絡(luò)與上下網(wǎng)絡(luò)間的聯(lián)系程度作為評(píng)判標(biāo)準(zhǔn),因此可以得出編程方式特點(diǎn)的比較,如表2 所示。
由表2 可知:起保停編程方式單個(gè)網(wǎng)絡(luò)集成度最高、邏輯關(guān)系清晰度最低、在簡(jiǎn)單工程中網(wǎng)絡(luò)數(shù)最少,所以最適合簡(jiǎn)單工程;順序控制指令編程方式單個(gè)網(wǎng)絡(luò)集成度最低、邏輯關(guān)系清晰度較高、在所有工程中網(wǎng)絡(luò)數(shù)最多,所以最適合復(fù)雜工程;置復(fù)位編程方式單個(gè)網(wǎng)絡(luò)集成度適中、邏輯關(guān)系清晰度達(dá)到順序控制指令編程方式的等級(jí)、在所有工程中網(wǎng)絡(luò)數(shù)均適中,所以適用于所有的工程類型,整體最有優(yōu)勢(shì)。 同時(shí),通過(guò)對(duì)圖1、圖6 和圖7 的進(jìn)一步分析可以得出,隨著工程復(fù)雜度的提高,編程時(shí),其邏輯關(guān)系清晰度的重要性遠(yuǎn)大于單個(gè)網(wǎng)絡(luò)集成度。
表2 編程方式特點(diǎn)的比較Tab.2 Feature comparison of programming modes
此外,置復(fù)位編程方式以轉(zhuǎn)換條件為中心,而起保停編程方式以步為中心進(jìn)行編程[25],因此置復(fù)位編程方式可以直接處理如圖8(a)所示的兩步閉環(huán)操作,而起保停編程方式則不可。 若想運(yùn)用起保停編程方式,必須將圖8(a)改為圖8(b)。 這樣無(wú)疑將增加程序的復(fù)雜度和網(wǎng)絡(luò)數(shù)。
圖8 兩步閉環(huán)功能圖的比較Fig.8 Comparison of two-step closed loop function diagrams
本文系統(tǒng)論述了PLC 在工業(yè)界廣泛應(yīng)用的三種主要的編程方法和編程方式,并進(jìn)行了詳細(xì)的比較。隨著工程復(fù)雜度的提高,其邏輯關(guān)系清晰度的重要性遠(yuǎn)大于單個(gè)網(wǎng)絡(luò)集成度,從而揭示了從簡(jiǎn)單工程到復(fù)雜工程之間的邏輯主線,并得出了順序功能圖設(shè)計(jì)法可以兼容所有工程類型,置復(fù)位編程方式在三種編程方式中整體最優(yōu)的結(jié)論。
雖然PLC 已廣泛應(yīng)用于現(xiàn)代工業(yè)的各個(gè)領(lǐng)域,經(jīng)過(guò)幾十年的發(fā)展有了長(zhǎng)足的進(jìn)展,但仍有以下問(wèn)題要解決。 ①雖然PLC 已經(jīng)形成了五大編程語(yǔ)言,但即使是同一種編程語(yǔ)言,各PLC 生產(chǎn)廠家所規(guī)定的指令形式、使用方法仍有較大不同,這給工程人員帶來(lái)了困擾。 ②盡管PLC 已經(jīng)形成了主程序調(diào)用子程序、中斷程序的工作模式,但仍然無(wú)法滿足一些復(fù)雜工程中的應(yīng)用場(chǎng)景,如大型系統(tǒng)之間程序的無(wú)縫配合、脈沖中斷程序的及時(shí)響應(yīng)等。
PLC 沒(méi)有可視化窗口,需要另外搭配相應(yīng)的觸摸屏設(shè)備。 因此,將觸摸屏和PLC 進(jìn)行集成,或提高計(jì)算機(jī)的可靠性來(lái)代替PLC,以及研發(fā)通用的高級(jí)編程語(yǔ)言,可能是今后的發(fā)展方向。