西門子SCL編程入門——啟保停電路控制
“啟保停”電路是學習過程中最常見的一個案例,也是最簡單易懂的控制程序。如果采用梯形圖編程,如圖1所示。在實際工程的電路中,很少有這么簡單的起保停電路,一般都需要考慮急停、限位、過載保護等多項因素,啟停信號也可能由多個觸點組成的串、并聯電路。所以“啟保停”電路僅能作為入門學習的案例。
圖1 起保停梯形圖及波形圖
在“啟保停”電路中,啟動信號X1和停止信號X2一般都是觸發信號(實體按鈕或HMI屏幕虛擬按鈕提供的信號),也叫短信號,其按鈕沒有記憶保持功能(目前也有觸發保持型的按鈕,但作為啟動/停止按鈕不常用),不能保證Y1線圈的持續接通。
當啟動信號X1按鈕觸發時(高電平),X1的常開觸點接通,如果此時X2無動作,X2的常閉觸點也接通,則Y1的線圈“通電”,其常開觸點同時接通。此時即使X1回到低電平狀態,其常開觸點斷開,“能流”仍可經Y1的常開觸點和X2的常閉觸點流過Y1,Y1仍為接通狀態,這就是所謂的“自保持”功能。
當停止信號X2觸發時,它的常閉觸點斷開,使Y1的線圈“斷電”,其常開觸點同時斷開。以后即使停止按鈕復位,X2的常閉觸點恢復接通,Y1的線圈仍然“斷電”。
下面我們看看如何用SCL語言實現“啟保停”的功能。
首先從邏輯上分析,要想“Y1接通”這一命題成立,從成立條件上是“X1或Y1為真,且X2為真”,這里就需要IF條件執行語句,其結構:
IF X1=TRUE OR Y1=TRUE AND X2=TRUE THEN
Y1=TRUE;
END_IF; //這種寫法不規范也不全面,這是從分析上先建立一個框架。
這里需要學習“IF:條件執行”指令的內容。
IF:條件執行
使用“條件執行”指令,可以根據條件控制程序流的分支。該條件是結果為布爾值(TRUE 或 FALSE)的表達式。可以將邏輯表達式或比較表達式作為條件。執行該指令時,將對指定的表達式進行運算。如果表達式的值為 TRUE,則表示滿足該條件;如果其值為 FALSE,則表示不滿足該條件。
根據分支的類型,可以對以下形式的指令進行編程:
IF 分支:
IFTHEN
END_IF;
如果滿足該條件,則將執行 THEN 后編寫的指令。如果不滿足該條件,則程序將從 END_IF 后的下一條指令開始繼續執行。
IF 和 ELSE 分支:
IFTHEN
ELSE
END_IF;
如果滿足該條件,則將執行 THEN 后編寫的指令。如果不滿足該條件,則將執行ELSE 后編寫的指令。程序將從 END_IF 后的下一條指令開始繼續執行。
IF、ELSIF 和 ELSE 分支:
IFTHEN
ELSIFTHEN
ELSE
END_IF;
如果滿足第一個條件(<條件 1>),則將執行 THEN 后的指令(<指令 1>)。執行這些指令后,程序將從 END_IF 后繼續執行。
如果不滿足第一個條件,則將檢查第二個條件(<條件 2>)。如果滿足第二個條件(<條件 2>),則將執行 THEN 后的指令(<指令 2>)。執行這些指令后,程序將從 END_IF 后繼續執行。
如果不滿足任何條件,則先執行 ELSE 后的指令(<指令 0>),再執行 END_IF 后的程序部分。
在 IF 指令內可以嵌套任意多個 ELSIF 和 THEN 組合。可以選擇對 ELSE 分支進行編程。
明確了框架,再定義變量,此處只有三個變量X1,X2,Y1,由于X1和X2需要有數字輸入地址,所有需要在PLC變量中進行定義,如圖2所示。I0.0和I0.1是PLC的數字量輸入點,作為外部輸入信號的存儲位,而M10.0則是PLC內部存儲區的一個位變量,作為中間變量使用。如果Y1的信號直接作為輸出信號,需要定義為Qx.x(數字量輸出點)。這里涉及了數據類型,數據類型很多,沒必要全部死記硬背,建議用哪個深入了解一下就可以。
圖2 定義變量
數據類型:
在用戶程序中,可使用預定義的數據類型,并將這些數據類型添加到用戶自定義數據類型中。可使用以下類別:
基本數據類型(二進制數、整數、浮點數、定時器、DATE、TOD、LTOD、CHAR、WCHAR)
復雜數據類型(DT、LDT、DTL、STRING、WSTRING、ARRAY、STRUCT)
用戶自定義數據類型(PLC 數據類型 (UDT))
指針
參數類型
系統數據類型
硬件數據類型
定義變量完成后,下一步就可以編程了。這里需要說明,程序既可以寫在OB1里,也可以新建FB塊,再將FB對應的DB塊添加到OB1中循環執行。對于這種簡單的程序運行結果沒有什么不同,但是對于復雜的程序,建議采用模塊化的多個FB實現,每個FB完成的單個或幾個功能性的或任務性的完整程序,便于后期修改、調試,整個程序也顯得簡潔明了。
“啟保停”程序示例如圖3所示,使用IF指令的嵌套,第一層判斷X1和Y1,嵌套第二層判斷X2,實際上也可以寫成一層,如圖4所示。其實完成一個功能的可以多種程序編寫形式,可以根據自己的習慣進行編寫,只要滿足所需功能,沒有對錯好壞之分。拆分成嵌套的形式,有的時候便于查看,尤其判斷條件多的時候,監控時比較直觀的觀察每個判斷條件的結果。
圖3 啟保停SCL程序1
圖4 啟保停SCL程序2
最后將對應的DB插入到OB1中循環執行即可(如圖5所示)。
圖5 OB1循環執行
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















