PLC狀態機編程-如何在STL中使用狀態機


搞PLC編程多年,一直不知道狀態機,學習matlab后,發現狀態機編程異常方便,過去很多編程時的疑惑豁然開朗起來。今天跟大家分享一下如何在STL中使用狀態機。

下面是用狀態機描述的控制任務。

stl1

這個狀態機較簡單,那如何在STL中把它描述出來呢? 這里我們選擇用JL指令。。。我就直接上代碼了,一看便知。但JL程序只能用來表示單步狀態,遇到並行狀態就處理不了了。。下次我們用ST語言來描述更復雜的狀態機。。

 

       L     #state     //  把#state的值載入累加器
       JL    rng1      // 如果累加器的值,大於4,也就是說,跳轉分支不包含下面的分支,就跳轉到rng1,說明出錯。。

                         //  其實這條語句相當於 else 語句
       JU    st0    // 當累加器的值為0時, 走這個分支
       JU    st1    // 當累加器的值為1時, 走這個分支
       JU    st2    // 當累加器的值為2時, 走這個分支
       JU    st3    // 當累加器的值為3時, 走這個分支
       JU    st4    // 當累加器的值為4時, 走這個分支

rng1: SET
       S     #error
       BEU

st0:  L     1                           // 這個 1 就是下個狀態。
       A     #transition01         // 這個轉移條件滿足,狀態將由state0,轉移到 state1,下面的流程類似。。。
       JC    next
       JU    ovr

st1:  L     2
       A     #transition12
       JC    next

      L     3
       A     #transition13
       JC    next
       JU    ovr

st2:  L     4
       A     #transition24
       JC    next
       JU    ovr

st3:  L     1
       A     #transition31
       JC    next
       JU    ovr

st4:  L     3
       A     #transition43
       JC    next
       JU    ovr

next: T     #state
ovr:  NOP 0


免責聲明!

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



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