富士的SPH系列PLC所使用的ST:
IF ENABLE THEN
(*如果復位按鈕按下,那么系統復位*)
IF RESET THEN
LOOP_CASE := 0;
END_IF;
(*如果運行過程中氣壓,風壓異常,停止*)
IF (NOT(X4) OR NOT(X5)) AND LOOP_CASE <> 0 THEN
LOOP_CASE := -10;
END_IF;
(*步進循環*)
CASE LOOP_CASE OF
-10: Y0 := FALSE;
Y1 := FALSE;
Y2 := FALSE;
Y3 := FALSE;
Y4 := TRUE;
Y5 := FALSE;
STEP := LOOP_CASE;
0:(*如果氣壓正常,那么程序繼續運行*)
IF X5 THEN
LOOP_CASE := 10;
STEP := LOOP_CASE;
ELSE
LOOP_CASE :=-10;
STEP := LOOP_CASE;
END_IF;
10:(*開風機,同時檢測風壓是否正常*)
Simple_Button_1(Button:=X1);
Y4:=Simple_Button_1.Out_Coil;
IF Y4 THEN
IF X4 THEN
LOOP_CASE := 20;
ELSE
LOOP_CASE := -10;
END_IF;
END_IF;
STEP := LOOP_CASE;
20:(*燃燒啟動,同時啟動后延時10S*)
Simple_Button_2(Button:=X2);
Y3:=Simple_Button_2.Out_Coil;
IF Y3 THEN
IF CLOCK_1S THEN
DelayTime := DelayTime + 1;
END_IF;
IF DelayTime >= 10 THEN
LOOP_CASE := 30;
DelayTime := 0;
END_IF;
END_IF;
STEP := LOOP_CASE;
30:(*Y0輸出,延時2S*)
Y0:=TRUE;
IF Y0 THEN
IF CLOCK_1S THEN
DelayTime := DelayTime + 1;
END_IF;
IF DelayTime >= 2 THEN
LOOP_CASE := 40;
DelayTime := 0;
END_IF;
END_IF;
STEP := LOOP_CASE;
40:(*Y2輸出,延時1S*)
Y2:=TRUE;
IF Y2 THEN
IF CLOCK_1S THEN
DelayTime := DelayTime + 1;
END_IF;
IF DelayTime >= 1 THEN
LOOP_CASE := 50;
DelayTime := 0;
END_IF;
END_IF;
STEP := LOOP_CASE;
50:(*Y1輸出,延時3S*)
Y1:=TRUE;
IF Y1 THEN
IF CLOCK_1S THEN
DelayTime := DelayTime + 1;
END_IF;
IF DelayTime >= 3 THEN
LOOP_CASE := 60;
DelayTime := 0;
END_IF;
END_IF;
STEP := LOOP_CASE;
60:(*點火次數檢測*)
IF COUNT>=3 THEN
LOOP_CASE := 200;
ELSE
LOOP_CASE :=70;
END_IF;
STEP := LOOP_CASE;
70:(*火焰檢測*)
IF X0 THEN
Y3 := FALSE;
ELSE
LOOP_CASE := 80;
END_IF;
STEP := LOOP_CASE;
80:(*點火失敗的處理*)
Y1:=FALSE;
Y2:=FALSE;
Y3:=TRUE;
IF (NOT Y1) AND (NOT Y2) AND Y3 THEN
IF CLOCK_1S THEN
DelayTime := DelayTime + 1;
END_IF;
IF DelayTime >= 10 THEN
LOOP_CASE := 90;
DelayTime := 0;
END_IF;
END_IF;
STEP := LOOP_CASE;
90:(*Y2輸出,延時1S*)
Y2 := TRUE;
IF Y2 THEN
IF CLOCK_1S THEN
DelayTime := DelayTime + 1;
END_IF;
IF DelayTime >= 1 THEN
LOOP_CASE := 100;
DelayTime := 0;
END_IF;
END_IF;
STEP := LOOP_CASE;
100:(*Y1輸出,計數器加1*)
Y1 := TRUE;
COUNT := COUNT + 1;
LOOP_CASE := 60;
STEP := LOOP_CASE;
200:(*重啟動*)
Y0 := TRUE;
Y1 := FALSE;
Y2 := FALSE;
Y3 := TRUE;
Y4 := TRUE;
IF NOT X6 THEN
IF CLOCK_2S_Out THEN
Y5 := TRUE;
ELSE
Y5 := FALSE;
END_IF;
END_IF;
IF X3 THEN
COUNT := 0;
LOOP_CASE := 60;
STEP := LOOP_CASE;
END_IF;
END_CASE;
END_IF;
問題是這樣的樣例對您有多大的幫助呢???