做工業控制的時候,很多開發者喜歡一步一步來,第一步做什么,接著做什么,發生了某個事件執行某個動作處理,這是最簡單也是最符合人的一般思維的方式,簡單的控制系統這么做無疑是非常輕松的,可是一旦工業控制系統變得復雜了的話,一般的流程控制或者順序控制將會十分困難,一是開發者面對復雜的系統很難在短時間內把各種關系捋順,而且這樣做成的系統一旦后期想有一點點的改動都會付出很大的工作量來修改。那么,狀態機控制就是解決復雜控制問題的很好的一種方法。 有限狀態機(Finite-statemachine, FSM),又稱為有限狀態自動機,簡稱狀態機,是一個數學模型。是一個抽象機器,在任何時候都可以處于有限數量的狀態之一。響應某些外部輸入,FSM可以從一個狀態轉換到另一個狀態;從一種狀態到另一種狀態的變化稱為過渡。有限狀態機是非順序的,沒有事先的設定,跳轉到哪個狀態由事件決定。
1.PNG (26.87 KB, 下載次數: 91)
下載附件
2019-10-12 21:57 上傳
狀態機有幾個要素:狀態,條件,動作和下個狀態,在某個狀態時在某種條件(事件)下才會執行某個動作跳轉到下一個狀態,其中動作不是必需的。如圖 1為一個3元有限狀態機的模型,它有著3個狀態,觸發狀態切換的事件最多有23=6個。當機器處于狀態1時,只有發生了事件1才會切換到狀態2,同樣,在狀態2時只有發生了事件2才會切換到狀態1,其余的狀態切換流程以此類推。在某一個狀態,你可以根據需求定義機器的參數,例如溫度達到多少、流量是多少等,在狀態機內部再根據控制算法執行相應的動作調整機器的參數。 要使用狀態機的方法,我們將要處理的對象劃分為一個一個的狀態,某一時刻機器只能處于一個特定的狀態下,在這個狀態下根據輸入條件的變化來決定跳轉到哪個狀態,執行對應的動作,跳轉和狀態是唯一的。這樣的狀態機控制法讓開發工作不再是復雜的流程控制,思路也會更加清晰一點,工作也就簡單了。 最近在做工控、電路板、單片機、儀器、軟件開發定制項目(業務Q:2531-2637-26)的時候,用到一個串口觸摸屏作為人機交互接口,在這個屏上會做很多界面來用于參數的設置和顯示。這時,我就把每個界面當作狀態機的一個狀態來處理,每個界面上的觸摸按鍵反饋的信號就是狀態機的事件,一旦接收到相應的觸摸按鍵的信號(事件),屏的界面就會根據跳轉邏輯發生跳轉并根據指令控制執行器執行相應的動作。由于是串口觸摸屏并用單片機作為的處理器,每個界面(狀態)的顯示、動作的執行等功能我編寫成一個一個的子函數,并在主函數中的while(1)循環中根據狀態號來調用,對于觸摸按鍵信號的接收和狀態號的切換跳轉等簡短的指令我在串口中斷函數中處理,這樣做的好處是讓程序結構清晰,又節省了中斷程序的執行時間避免中斷丟失。
2-3.PNG (92.27 KB, 下載次數: 79)
下載附件
2019-10-12 21:57 上傳
更多精彩,歡迎關注微-信-公-眾-號:yonkotech 沙鷗-成都-2019.10.12
51hei隨意打賞-小.png (35.62 KB, 下載次數: 73)
下載附件
2019-10-12 21:58 上傳
|