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


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