寫PLC程式時,我用Function Block建了很多常用元件,後來發現我在元件中採用的思考方式接近這個 Five Rung 模式,只是它更嚴謹了些。
最具爭議的梯形邏輯編程模式可能是Five Rung邏輯塊。模式的目的是封裝單個機器“作動”所需的所有元素。構成作動的概念有點模糊,但通常如下:
- PLC做一些動作來啟動作業(例如打開閥門或告訴機器人運動)
- 有某種信號指示運動已完成(例如傳感器)
- 我們要監視完成時間,如果花費的時間太長,則會產生故障
可以想像,很多機器控制都可以利用這種模式。每當您的氣缸帶有反饋傳感器(伸出/縮回)時,您都可以在其中扔出兩個五階邏輯塊。當您必須命令運動控制器或機器人將一個或多個軸移動到給定位置時,也可以使用它。
之所以稱為五階模式,是因為通常使用5個線圈:
- 前提條件(又名觸發器)
- 安全
- 命令
- 完成(也稱為“就位”)
- 錯誤
五階
這種模式的某些變體會將“安全”梯級置於“觸發”梯級之前,但我想反過來,因為“觸發”梯級確實指示運動何時開始。在典型程序中,如果您使用“步進”模式,則觸發器將由“步進進行中”觸點驅動。請注意,在更複雜的程序中,此動作可能是由序列中的許多不同步驟啟動的,因此您只需在此處並行放置一堆“正在進行中”的聯繫人即可。在不使用步進模式的程序中,觸發線圈可以直接由邏輯驅動,例如推出一些其他氣缸,然後輸入零件。重要的是要認識到,Step模式具有更大的可擴充性,並且對於較大的程序而言更好,但這不是唯一的方法。
觸發線圈只需要打開就可以啟動作動,並且僅在機器處於自動模式時才起作用。觸發線圈不必一直保持開啟狀態。在某些情況下,通常將作動完成傳感器作為常閉觸點放在此Rung中,這樣,如果軸已經在該位置,運動就不會啟動。在我們的案例中,這是多餘的,因為我們稍後會處理,如您所見。
安全梯級是在整個運動過程中必須滿足的一組條件。典型範例是“所有E-Stops OK”,但您在此處看到的其他情況是來自乾擾軸的信號。例如,假設您有兩個氣缸A和B,並且一次只能推出其中一個。通常將“氣缸A縮回”傳感器(以及“氣缸A推出”輸出)放在“氣缸B推出五階”安全梯級中,反之亦然。這是對您的邏輯的很好的雙重檢查,因此,即使您在序列邏輯中犯了一個錯誤,至少也可以防止兩個氣缸相互碰撞。
在此模式下,命令梯級充當記憶。它記得我們正在嘗試執行此作動。它可以通過觸發信號在自動模式下啟動,也可以通過按鈕或其他手動控制在手動模式下啟動。請注意,即使在手動模式下也必須滿足安全條件,因此我們不冒險讓操作員無意中撞到機器。一旦命令線圈接通,它就會自保持,通常直到動作完成為止,但是如果安全梯級off(基本上是中止),則電路也會斷開。
請注意,上面的範例顯示了“自動模式”信號,但是通常會看到該信號已被“自動循環運行”信號替換,因為大多數機器都要求您將機器置於“自動模式”,然後使用另一個按鈕啟動循環。有時,這是在“命令”梯級中捕獲的,而有時是在“觸發”梯級中捕獲的。
In Position rung負責弄清楚您如何知道運動已完成。如果您有傳感器,則可以使用它。如果您從運動控制器或機器人返回了“運動完成”信號,則也可以輕鬆地對該信號使用上升沿檢測(在這種情況下,我將其稱為“完整”梯級,而不是“In Position”梯級)。在執行下一步之前,在此梯級中放置一個計時器以“確保”運動確實已經完成也很常見。我寧願不使用計時器,除非我的機器出現某種麻煩的問題,但是我已經看到了一些邏輯,在每個位置梯級中都有一個計時器。計時器的問題在於,它們會減慢您的周期時間,而沒人願意這樣做。請注意,最好使用“就位”線圈作為該軸處於此位置的規範指示。意思是說,如果程序的其他部分需要知道氣缸處於“推出”位置,則最好使用“In Position”線圈,而不要使用輸入本身。例如,由於干涉而不得不將傳感器移至另一個輸入,或者由於“彈跳”而要添加計時器,則您可以在同一個地方更改邏輯。或者由於“彈跳”而要添加計時器。如果您使用的是步進模式,通常在“步進完成”梯級中使用“就位”信號。
接下來的兩個梯級一起構成了Fault梯級,有時您可能會看到它們組合成一個梯級,具體取決於工程師的偏好。Fault梯級為作動實現了一個簡單的逾時錯誤。如果您要推出氣缸,並且花費一秒鐘以上的時間,則可能有問題。這是狀態線圈模式的示例,並且要求操作員重置故障才能繼續。重要的是要將此故障報告給操作人員,以指出是哪個作動引起了問題。請注意,它還會退出安全梯級以中止運動。這是可選的,但通常是一個好主意,因為軸或氣缸可能會被卡住,並且您想停止嘗試移動它以防止進一步損壞機器。但其它狀況下,您並不總是想停止作動,這時就要自己判斷寫法了。
在我的程序中,通常將使用梯形圖邏輯模式的三級系統:
- 最高級別:任務模式
- 中級:Step模式
- 最低級別:Five Rung模式
例如,任務可能是“撿起零件”。然後將有一個程序,其中包含執行拾起零件序列所需的所有步驟,例如“推出氣缸並打開真空”,“推出夾爪”,“驗證真空吸力”,“縮回夾爪”,“縮回氣缸”。然後,我將有幾個低階程序,例如“ Arm”,“ Gripper”和“ Vacuum”。Arm和Gripper程序中每個都有兩個“五個梯級”邏輯塊,一個用於“推出”,一個用於“縮回”。真空並不是真正的運動,因此它具有更簡單的開/關型邏輯,並且其中包含某種真空傳感器反饋邏輯。
我應該警告您,當某人第一次看到Five Rung邏輯塊時,他們通常會問:“為什麼只想要打開一個閥就需要這麼多的邏輯?” 好吧,這就是經驗豐富的梯形邏輯程序員和經驗不足的程序員之間的區別。最終,經驗不足的程序員將編寫一些非常簡單明了的邏輯來打開和關閉閥門,然後當氣缸運動未完成(或傳感器停止工作)時,他們將不得不添加某種故障判斷。他們將不得不區分它是在手動模式下而不是在自動模式下運行的,並且在他們知道之前,他們已經創建了自己的Five Rung邏輯塊的自定義版本。在他們的下一個程式中,他們可能仍會這樣做。
梯形圖邏輯程序的更多模式。
Written with StackEdit.