為什麼 PLC 梯形圖要這樣設計?意義在哪?

初學plc

我覺得plc梯形圖實在很笨,感覺基本上就是把電機線路畫了一遍,外加點其他功能。

這樣設計的意義在哪裡?用通常計算機編程那種高級語言的語法不會好嗎?更高效,直觀,而且維護移植都會方便很多。

覺得難的話,那種兒童編程用的流程圖比梯形圖強很多啊。


梯形圖對程序員不是很友好, 主要是思維方式不一樣. @無力的西西里安 在答案里也說了, PLC 支持類似 pascal 的語言. 據我所知, 西門子家的 PLC 支持 SCL 語言, 已經很接近編程語言了, 循環, 函數, 數組都有, 支持單步調試, 查看變數. 而且有些梯形圖無法完成的功能 SCL 都能很好的完成. 題主不妨試試.


因為出現梯形圖的年代遠遠早於計算機的發明。使用可以用C語言這樣的高級語言進行編程的嵌入式系統進行工業控制更是幾十年以內的事。大量應用在普通工業領域就更近了,也就是二十年。

出現計算機以前,所有的邏輯和計算都是通過繼電器和各種模擬電路實現的。所以出現了梯形圖這樣簡化電路圖來表示控制邏輯是很自然的。一部分這樣的電路在今天仍然在大量使用,因為對於非常簡單的功能,十幾個繼電器仍然比一個PLC便宜。老工程師常說的梯形圖直觀,就是對這些電路來說的。

但是如今的PLC已經完全是一個基於現代計算機構架的嵌入式系統,可以實現的運算複雜度遠遠超過當時發明梯形圖的人的想像。在進行這些比較複雜(其實在計算機的角度看一點也不複雜,一個switch case語句就夠梯形圖喝一壺的)的邏輯時梯形圖並不是最好的選擇。

以目前PLC程序最通用的標準IEC61131-3來看,它同時支持了梯形圖,框圖,彙編,和類似Pscal的高級語言等等五種形式。工程師可以根據應用來選擇最適合的方式。


上世紀70年代,上海市業餘工業大學,電子技術講座(一)《晶體管整流電路》。

這是70年代少有的應用電子類書籍,書中大量實例均直接來自工業實踐,在當時電子愛好者和電子電氣工程師心目中的地位,相當於80年代《BASIC語言》和90年代《C程序設計》在當年程序員心目中的地位,全套書共有4本,分別是《晶體管整流電路》、《晶體管放大與振蕩電路》(相當於模電)、《晶體管收音機》(相當於高頻)和《晶體管開關電路》(相當於數電)。

《晶體管整流電路》一書中的一個工業實際例子「直流能耗制動」,核心是繼電器—接觸器時間順序控制電路,電路圖截圖如下(圖片來自網上的電子書):

核心控制部分,與PLC梯形圖有何本質區別?PLC的原始設計目標,就是為了取代繼電器—接觸器時間順序控制電路,那麼採用與設計繼電器—接觸器時間順序控制電路類似的方式,設計PLC時間順序控制邏輯,在當年PLC剛剛出現時,自然是理所當然的事情,相應的設計工具,也就是梯形圖了。

梯形圖和PLC編程語言的區別,實際上就是電氣工程師與程序員思維方式的區別罷了。

註:圖中符號和今天所用符號有一定差異,予以注釋說明:

C:接觸器,JS:時間繼電器,JZ:中間繼電器,JR:熱繼電器(過流保護)。


因為PLC出現的年代,個人計算機都沒有出現,而梯形圖是最簡易,最直觀的編程方法。但是時代是不斷變化的,現在哪怕是小型的入門plc,除了梯形圖,也是支持各種其他編程方法的,具體請細讀手冊。

不同的編程方法,優缺點都是不一樣的,綜合起來用才是最合適,最有效率的。


PLC主要面向工業控制,應該用最直觀的工廠語言,所以它的編程語言是梯形圖。

這種梯形圖很接近以前繼電器時序圖,使之轉換過渡變得方便簡單,不需太多培訓就能上手,然而性能遠超前者,並且可以很方便地更改控制順序動作。


因為自動化是以電氣為本的。

梯形圖雖然「笨」,卻最能還原電路圖,對當時以「電氣」為本的自動化工程師來說是一個最直觀,方便的選擇。

而且當時也確實沒有其他比梯形圖更好的語言了。你可以試試西門子的IL,現場調試糾錯令人痛不欲生。

現在當然也有使用ST這種「類計算機編程語言」來編寫的PLC程序,但一般都是用來替代Grafcet,處理一些較複雜的進程。關鍵的輸入輸出控制還依然普遍使用梯形圖。

畢竟對於工業控制來說,直觀方便,調試糾錯快,才是最要緊的。


越是底層的語言越是複雜。而PLC只需要簡單的與、或、非和一點模擬量運算。 顯然是用梯形圖等上層語言開發更簡單。

另外提醒圖與電氣原理圖相似更便於電氣專業人員的學習和使用,不然想要干好工業自動化還要在學一遍C等底層語言么?玩意學完之後改行去做碼農自動化行業豈不是又少了一名閃耀的新星。(別問我怎麼知道的)


題主說的流程圖也有,叫順序控制功能圖。

工業上應用有點功能導向的思路,在什麼領域就是

電氣控制,繼電器、接觸器控制電機,延伸出梯形圖。

順控來自於機電一體化,半/自動化設備,以步為中心。完成一套既定動作需要多少步。控制圍繞這個進行。

還有功能塊圖,來自於數字電路領域(早期工業控制都是專門的數字電路器件,PLC還晚)。

最後指令語句表、結構化文本等,是計算機編程領域。

行業化應用廣泛就誕生了很多PLC編程組態用編程方法。


推薦閱讀:

什麼是安全證書,訪問者到底是怎麼校驗安全證書的,服務端返回安全證書後,客戶端再向誰驗證呢?
關於分散式的問題?
蘋果是如何知道用戶家在哪?
Intel CPU 的三角函數精度問題,會對現實生活產生什麼影響?
從數據結構角度,Golang和Swift對比,有何優缺點?

TAG:編程 | 自動控制 | 電機 | 電氣工程 | 可編程邏輯控制器PLC |