陳璐 安徽省淮南技工學校 232100
可編程控制器(PLC)是在繼電器控制和計算機控制基礎上開發的工業自動控制裝置,是計算機技術在工業控制領域的一種應用技術。其主要使用者是工廠廣大電氣技術人員,為了適應他們的傳統習慣,通常PLC 不采用微機的編程語言,而常常采用面向控制過程、面向問題的“自然語言”編程。下面就PLC 編程談談筆者的見解。
IEC(國際電工委員會)于1994 年5 月公布的IEC1131-3(可編程控制器標準的第三部分)中定義了5 種PLC 編程語 言:(1) 梯 形 圖LAD(Ladder Diagram)(2) 語 句 表STL(Statement List)(3) 功 能 塊 圖 FBD(Function Block Diagram)(4) 結構文本ST(Structured Text)(5) 順序功能圖SFC(Sequential Function Chart)。目前,梯形圖和語句表是PLC 的主要編程語言,其中梯形圖是使用得最多的編程語言,被稱為PLC 的第一編程語言。
梯形圖程序中輸入信號和輸出信號之間的邏輯關系一目了然,易于理解并與繼電器電路的表達方式相似,由于梯形圖一定能也較易于轉化為語句表,因此,在設計以開關量控制為主的控制程序時建議使用梯形圖。有時把梯形圖也稱為電路或程序。梯形圖的設計稱為編程。
盡管梯形圖與繼電器電路圖在結構形式、元件符號及邏輯控制功能等方面相類似,但它們又有許多不同之處,梯形圖具有自己的編程規則。
(1)外部輸入、輸出繼電器、內部繼電器、定時器、計數器等器件的接點可多次重復使用,無需用復雜的程序結構來減少接點使用次數。
(2)梯形圖按“自上而下,從左到右”的順序繪制。每一邏輯行總是起于左母線,然后是觸點的連接,最后終止于線圈或右母線(右母線可以不畫出)。左母線與線圈之間一定要有觸點,而線圈與右母線之間則不能有任何觸點。
(3)梯形圖中的觸點可以任意串聯或并聯,但繼電器線圈只能并聯而不能串聯。
(4)觸點的使用次數不受限制。
(5)同一編號的線圈在同一程序中,使用了兩次或多次,稱為“雙線圈輸出”。雙線圈輸出容易引起錯誤操作,應盡量避免線圈重復使用。
(6)對于不可編程梯形圖必須通過等效變換,變成可編程梯形圖。
(7)有幾個串聯電路相并聯時,應將串聯觸點多的回路放在上方,在有幾個并聯電路相串聯時,應將并聯觸點多的回路放在左方。
PLC 編程技巧是在實踐中不斷總結出來的。較好地掌握編程技巧,可提高編程的速度和質量。下面六點是筆者編程是常用的技巧。
1、“上沉下輕”
在每一邏輯行中,串聯觸點多的支路應放在梯形圖上方。如果將串聯觸點多的支路放在梯形圖下方,則語句增多,程序變長。如圖1 所示。
圖1 為兩個邏輯功能相同的梯形圖,但它們對應的語句表程序卻不相同,掃描時間也不同。如將圖1(a)中并聯的兩條支路上、下對換,則變換后的梯形圖即圖1(b),原有的邏輯關系保持不變,但程序簡化了。
(a)梯形圖語句表 (b)梯形圖語句表
0 LD 0003 0 LD 0001
1 LD 0001 1 AND 0002
2 AND 0002 2 OR 0003
3 ORB 3 OUT 2001
4 OUT 2001 4 END
5 END
2、“左沉右輕”
在每個邏輯行中,并聯觸點多的電路應放在梯形圖左方。如果將并聯觸點多的電路放在梯形圖右方,則語句增多,程序變長。如圖2 所示。
圖2 為兩個邏輯功能相同的梯形圖,但它們對應的語句表程序卻不相同,掃描時間也不同。如將圖2(a)中串聯的兩部分電路左、右對調,則變換后的梯形圖即圖2(b),原有的邏輯關系保持不變,但程序簡化了。
(a)梯形圖語句表 (b)梯形圖語句表
0 LD 0003 0 LD 0001
1 LD 0001 1 OR 0002
2 OR 0002 2 AND 0003
3 ANB 3 OUT 2001
4 OUT 2001 4 END
5 END
3、合并邏輯行
梯形圖中,當多個邏輯行都具有相同條件時,常將這些邏輯行合并,能節省語句數。如圖3(a)所示,并聯觸點0001、0002 是各個邏輯行所共有的相同條件,可合并成如圖3(b)所示的梯形圖,利用主控指令或分支指令來編程。當相同條件復雜時,可節省許多存儲空間,這對存儲容量小的PLC 很有意義。
4、等效變換
梯形圖中,不允許一個觸點上有雙向“電流”通過,如圖4(a)所示,觸點0005 上有雙向“電流”通過,該梯形圖不可編程,這是不允許的。對于這樣的梯形圖,應跟據其邏輯功能作適當的等效變換,如圖4(b)所示。再將其簡化成如圖4(c)所示的梯形圖
弄通有關PLC 程序設計理論是重要的。沒有經驗,僅有理論,既無法深刻理解理論,又無法靈活應用理論。任何理論也都只是經驗的總結,歸根到底也都有是來自實踐。
1、經驗積累
經驗有別人的,也有自己的,都很重要。前者要靠細心學習,后者要靠用心積累,都要在一定的時間與必要的精力。別人的經驗有上了書的或登載在雜志上的。有的是細心學習別人的,但多數是我自己的經驗。所有的例子都經我測試過,都經實踐證明是可行的。我想,別的書本或雜志上介紹的也會是這樣的。所以學習這樣楊功的經驗是必要的。還有就是你同事的經驗,也是值得學習。這種經驗離你很“近”,很易借鑒。自己的經驗則是最重要的,要在自己的實踐中,積累自己的經驗,同時,最好在學別人的經驗時,也能親自作些測試,能使自己也有類似的經歷,進而把這些經驗變成自己的。這也是自己經驗的重要積累。
2、經驗升華
經驗還有待升華。升華有三個層次:最低的層次就是建立一個典型的程序庫,供今后再用。若程序復雜,還可建一些功能塊,或子程序,以便以后引用。其次,要總結出有效算法。如單按鈕起停程序庫等。最高層次的升華是把經驗上升到理論的高度,為豐富PLC 程序設計理論作貢獻。我想,隨著PLC使用的普及與提高,是會有越來越多從經驗中升華出來的,而又能用以指導實踐的PLC 編程理論的。
3、經驗應用
經驗積累、經驗升華都是為了應用。經驗應用有三方面:
1)用作工程設計模板。設計新系統時,選用一個或幾個與現設計工程類似的,已取得成功的工程,作樣板進行設計。這既可減輕設計的工作量,又增加設計的成功率。這也是信息可重用的一大好處。
2)用作程序設計參考。在無成功的工程可作樣板時,在新設計的邏輯中,仍有相當一部分控制邏輯,可采用或借用已有典型邏輯,這也可減少設計的工作量,增加設計的成功率。
3)用作算法設計參考。在既無樣板可參照,又無典型可采用時,還可運用過去的一些成功的算法。
總之,PLC 編程要理論與實踐相結合,時時刻刻做個有心人,堅持不懈,循序漸進,方能提高自己的編程水平。