PLC狀態機編程第六篇-優化PLC程序生成


還記得第一篇博客中,我們在狀態機中手寫上升沿來處理有別於傳統的一鍵啟停程序,那個手寫的上升沿就是優化手段。stateflow狀態機是帶事件的,事件本身支持上升沿和下降沿等事件,在這里,如果我們選擇用事件來作沿觸發,會導致程序不可讀,很復雜,所以我們手寫上升沿,保證了程序的簡潔。請看下圖。

1

那么我們不用它的上升沿,如何處理需要上升沿的情況。我們手寫一個,請看下圖。

2

在stateflow中新添加三個local變量,都是bool型的。tempStop是保持上次的stop值,risingTrigStop是上升沿,fallingTrigStop是下降沿。Stop狀態中的轉移條件我們把〔stop〕換為〔risingTrigStop〕,直接用上升沿了。

我們知道狀態機分為三種類型, Moore和Mealy狀態機,還有就是他們的混合狀態機。Moore狀態機就是輸出只跟當前狀態相關,比如當前狀態是Set,那么只能在Set狀態中來控制輸出。Mealy狀態機呢,可以在轉移條件上輸出,請看下圖。

3

這種類型的狀態機生成的程序會復雜,不大好理解。當然我們在matlab中,也不可能真正設置成Moore狀態機,Moore狀態機限制很大,en,du,ex等指令就無法使用,那么我們的上升沿也就無法使用。然后繼續下面的設置。

4

自此,我們的狀態機優化完成,生成的程序和自己寫的很接近,效率很高了。但也犧牲了很多特有的功能,比如狀態機的事件,不過好像事件在PLC里用途不是很大。。

 

到現在我們把狀態機介紹的差不多了,狀態機中還有很多強大的功能,需要進一步學習stateflow。


免責聲明!

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



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