PLC狀態機編程第二篇-負載均衡


控制任務

大家好,今天我們用狀態機描述稍復雜的實例,同時用LAD和ST語言寫狀態機.我們的控制任務如下:

真空泵A和真空泵B, 按下啟動按鈕后, 泵A啟動, 3秒后泵B也啟動, 此時泵A仍運行, 當容器真空達到后, 泵B停止, 泵A繼續運行, 維持容器真空. 當按下停止按鈕后, 泵A停止.  再次按啟動按鈕, 泵B啟動, 3秒后泵A也啟動, 此時泵B仍運行, 當容器真空達到后, 泵A停止, 泵B繼續運行, 維持容器真空. 當按鈕停止按鈕后, 泵B停止.

注意: 任何狀態按下停止按鈕, 都停止, 在按啟動后, 切換泵的順序.

首先,我們寫畫狀態機.

1

注意其中兩個中間變量:isActivatedPumpAB和lastPumpA. lastPumpA 是記錄泵的啟動順序,而isActivatedPumpAB保證每次任務,PumpAB只激活一次.另外Idle狀態到PumpA和PumpB少了一個條件,這里我不想修改圖片,直接文字說明一下,應改為

[start && ~stop && ~lastPumpA] 和 [start && ~stop && lastPumpA].

 

 

用LAD表達狀態機

LAD


程序段1到程序段5代表每個狀態, 每個狀態用一個SR指令表示,S管腳是轉移到此狀態的條件,R管腳代表當有其它狀態激活時,就把當前狀態復位掉,一面有狀態同時激活.

狀態機就這么簡單.

 

LAD1

LAD的表達上,有兩點需要注意,每個狀態機需要一個默認的激活步,我們選Idle,那么stateIdle默認是true狀態. 每個步的復位條件,必需RLO上升嚴,否則不會轉移..

 

用SCL表達狀態機

SCL

SCL2

用SCL表達的狀態機中,用case語句表達狀態的轉移.這里我們還是看stateIdle狀態,其中的兩個IF,是兩個轉移條件.#mainState中的值代表當前激活狀態,它一共可以取4個值,代表4個狀態,這里我用常量表示..另外注意初始狀態,我們給#mainState的值初始化為0,代表stateIdel為初始狀態.其它的比較簡單.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM