【注:以下內容是以基于 匯川PLC(easy52x) 使用AutoShop編程模擬仿真來寫的,其他品牌PLC可能會略有差異,本文章旨在快速上手STL和SFC編程】
推薦學習順序
梯形圖 --> STL步進梯形圖 --> SFC順序功能圖
STL步進梯形圖
STL步進梯形圖 不同于 普通梯形圖,它可以把一個完整的運行過程分成若干步來完成,每一步就是一種狀態,當滿足某種條件時,就可以從當前狀態切換到下一個狀態;這種控制方式,只有當前狀態下的指令會執行,其他狀態下的指令不會執行;
STL步進梯形圖指令STL步進梯形圖指令只有STL和RET兩個指令,普通梯形圖中的指令也可以使用;
STL 指令功能:表示進入某一狀態S;程序跳至副母線,即程序只會執行當前狀態S處的指令,其他狀態處的指令不會執行;
格式:STL Sn
Sn表示狀態,如S0,S1....等;
舉例:STL S0 //進入狀態0;
左邊最粗的豎線就是主母線,相當于主程序,右邊細一點的豎線就是副母線,相當于狀態S0下的執行過程;
RET 指令功能:表示結束步進梯形圖程序;程序跳至主母線,繼續執行主母線后面的非步進指令或步進指令(如果有的話);
格式:RET
(注意:AutoShop軟件中RET必須直連在STL指令后面,如下a圖所示,b圖和c圖都會報錯!)
為了能把STL步進梯形圖順利轉成SFC順序功能圖,推薦使用SFC的狀態號規則:S0~S9為初始狀態軟元件,S10~S19可以用于特殊目的,其他普通狀態可以使用S20~S889等;
STL步進圖中對狀態號沒有嚴格限制,初始狀態號設置成S0~S9之外的也能用;但是SFC順序功能圖中卻有嚴格的要求,初始狀態號只能是S0~S9,其他普通步進狀態號只能是S10~S889等;
進入初始狀態由于步進狀態S一般使用常開觸點,因此,啟動PLC后并不會直接進入初始狀態,所以,需要我們提前設置好,讓它進入初始狀態,其中,最簡單的辦法就是使用SET指令直接設置為初始狀態;
例如:
M8002軟元件是程序運行的第1個掃描周期標志,程序運行第1個掃描周期為ON,后面一直為OFF,也就是說程序運行第一個掃描周期時M8002導通,S0置1,后面的初始狀態S0常閉觸點也就導通,即進入初始狀態S0;
步進程序的組成一個完整的 STL步進梯形圖 由STL指令進入,到RET指令結束;中間的程序只會在狀態間切換,從當前狀態切換到下一狀態需要滿足跳轉條件;
一個完整的 步進程序 一般由 普通梯形圖 + STL步進梯形圖 組成;一個典型的例子就像這樣:普通梯形圖用于控制進入步進初始狀態,STL步進梯形圖用于實現不同狀態的功能;
即:普通梯形圖 ==> [STL--步進--RET]
也就是說,STL步進梯形圖中也可以穿插普通梯形圖,但是需要遵循規則:普通梯形圖必須插在一個STL步進梯形圖的結尾,不能插在中間;
即:普通梯形圖 ==> [STL--步進--RET] ==> 普通梯形圖 ==> [STL--步進--RET];
關于STL步進梯形圖編程的一些規則(自己去驗證)1)不同狀態S下,可以使用同一個輸出而不出現雙線圈輸出;
2)在一個掃描周期內,從當前狀態切換到下一狀態時,會出現兩個狀態同時接通的瞬間;應對辦法,設置互鎖;
3)相鄰狀態不能使用同一定時器;
4)狀態轉移除了用SET指令也可以用OUT指令,但SFC中OUT指令用于向分離的狀態轉移;
5)中斷和子程序中不能使用STL指令
6)STL步進程序中最好不要用跳轉指令,不是因為禁止使用,而是因為邏輯會變得太復雜;
流水燈實例舉個簡單的例子,現有A、B、C三盞燈,運行要求:啟動按鈕按下,ABC依次亮3秒,然后重復,停止按鈕按下系統停止運行!
以下就是完整的步進程序,只是為了實現仿真功能,不作優化和其他考慮;
網絡1:開機后,按下“啟動按鈕”X0的時候,S0置位(進入初始狀態),M0置位(由于是SET指令,所以會保持),“運行指示”燈Y6亮;運行時,按下“停止按鈕”,M0復位,“運行指示”燈Y6滅;
網絡2:是初始狀態S0;
“啟動按鈕”按下時就會進入初始狀態,初始狀態下用于復位狀態S24,并進入下一個狀態S21;復位S24是因為運行過程中,當按下“停止按鈕”時,會進入停止狀態S24,S24被置位,因此,當再次按下“啟動按鈕”運行系統時,需要復位S24;
網絡3:是狀態S21;
運行時,進入狀態S21后,S21常開觸點和M1常開觸點都置位導通,燈A亮,燈A亮導致計時器開始計時,3秒后,計時器輸出端口Q置位,即M1置位,M1常開觸點閉合,進入狀態S22,S21常開觸點斷開,S21狀態的功能失效(燈A滅,計時器復位);
當按下“停止按鈕”時,M0常開觸點斷開,燈A滅,計時器復位并進入狀態S24(停止狀態);
網絡4:是狀態S22,過程和狀態S21一樣分析;
網絡5:是狀態S23,過程和狀態S21一樣分析;
網絡6: 是狀態S24(停止狀態);該狀態下“停止指示”燈亮,然后退出步進,回到主程序繼續執行;
啟動按鈕(X0)按下彈起后的效果:運行指示燈(Y6)亮;燈A(Y0)、燈B(Y1)、燈C(Y2)分別3秒輪流亮;
停止按鈕(X1)按下彈起后的效果:運行指示燈(Y6)滅,停止指示燈(Y7)亮;
SFC順序功能圖
SFC順序功能圖比STL步進圖還要直觀,它是用圖形符號來展示整個流程的;可以這么說,會寫STL步進圖,基本上就會寫SFC順序功能圖了;SFC只是把某個狀態下要執行的指令全部放在了一個“步進符”中,而轉移條件放在了“狀態轉移條件圖”中;
下面展示一下SFC順序功能圖的樣式:
符號定義至于大家叫它們符號還是叫它們圖塊,怎么順口怎么來吧!
SFC編程的特點
1)和STL步進梯形圖一樣,SFC順序功能圖也需要設置好狀態才能進入初始狀態;這些用于觸發進入初始狀態的梯形圖都可以放在
中來完成;最簡單的辦法就是通過M8002來驅動指令SET S0進入初始狀態;
2)初始狀態號只能是S0~S9,其他普通步進狀態號只能是S10~S889等;
3)SFC中狀態號不能重復使用;
4)SFC可以實現復雜的分支流程,如下圖所示:
SFC實例為了方便對比STL步進圖,就拿前面 STL步進梯形圖 的 流水燈實例 來轉換成SFC順序功能圖,它們整體對應關系如下圖所示:
流水燈實例 網絡1 的轉換流水燈實例 的STL步進圖 網絡1替換前:
替換后:
流水燈實例 的網絡1等效于SFC順序圖中的
,其中
的內置梯形圖如下圖所示,與流水燈實例 的網絡1內容完全一樣;
流水燈實例 的STL步進圖網絡2(初始狀態S0)替換前:
替換后:
和STL步進圖不一樣的地方在于沒有了STL指令
,初始步進符
和普通步進符
就相當于STL指令
;轉移狀態的指令變成了
,轉移條件如下所示:
流水燈實例 的網絡3(狀態S21)、網絡4(狀態S22)、網絡5(狀態S23),把它們轉換成SFC順序圖步驟一樣,下面以網絡3(狀態S21)的轉換為例;
流水燈實例 的STL步進圖網絡3 轉換前:
轉換后:
從上圖中可以看出,除了狀態轉移的指令被移除外,其他的都保留在狀態S21內置梯形圖中;
第一條狀態轉移SET S22指令的條件(M0和M1常開觸點)被替換成了左邊的“‘狀態轉移符’”
;
第二條狀態轉移SET S24指令的條件(M0常開觸點和取反指令)被替換成了右邊的“狀態轉移符”
;
流水燈實例 的STL步進圖網絡6 替換前:
替換后:
總結:普通輸出指令作為該狀態下的執行過程被留在步進符內,而要轉移狀態的SET輸出指令變成“狀態轉移符”,轉移條件就是SET指令的執行條件, 除了STL指令
外;


返回頂部
刷新頁面
下到頁底