西門子1200 SCL-自動(dòng)售貨機(jī) 編程練習(xí)
西門子1200 SCL-自動(dòng)售貨機(jī) 編程練習(xí)
案例:自動(dòng)售貨機(jī)系統(tǒng)
要求如下:
1.此售貨機(jī)可投入1元,5元,10元幣,投幣口分別為LS1(I0.0),LS2(I0.1),LS3(I0.2).
2.所售商品有4元(I0.3:按鈕;Q0.0:指示燈;Q0.4:驅(qū)動(dòng)閥),6元(I0.4:按鈕;Q0.1:指示燈;Q0.5:驅(qū)動(dòng)閥),10元(I0.5:按鈕;Q0.2:指示燈;Q0.6:驅(qū)動(dòng)閥),12元(I0.6:按鈕;Q0.3:指示燈;Q0.7:驅(qū)動(dòng)閥)商品。
3.當(dāng)投入貨幣總值大于等于所需要購買的商品價(jià)格,對應(yīng)的商品指示燈就會(huì)點(diǎn)亮,此時(shí)按下相應(yīng)的商品按鈕就會(huì)驅(qū)動(dòng)閥動(dòng)作掉出我們所需要的商品,出口閥驅(qū)動(dòng)時(shí)間為2秒。
4.同一時(shí)間只能購買一種商品,不找錢。
分析:
1).編寫此類練習(xí)題,可以逐步分析,細(xì)化,比如:先編寫投幣動(dòng)作,再編寫對應(yīng)商品指示燈亮動(dòng)作,最后編寫購買商品動(dòng)作!
2).可以分析購買4元、6元、10元和12元商品動(dòng)作一樣,那可以先把4元的寫出來,購買其他商品的動(dòng)作與4元商品的動(dòng)作只需要更改變量即可。
3)將所有商品購買動(dòng)作寫出來以后,再考慮同一時(shí)間只能購買一種商品動(dòng)作。
程序:
1)投幣動(dòng)作
2)指示燈接通動(dòng)作
3)購買四元商品動(dòng)作
4)購買六元商品動(dòng)作
5)購買十元商品動(dòng)作
6)購買十二元商品動(dòng)作
完整程序:
//投幣動(dòng)作
#R_1(CLK:=#"1元投口");
IF #R_1.Q THEN
#貨幣總額 += 1;
END_IF;
#R_5(CLK := #"5元投口");
IF #R_5.Q THEN
#貨幣總額 += 5;
END_IF;
#R_10(CLK := #"10元投口");
IF #R_10.Q THEN
#貨幣總額 += 10;
END_IF;
//指示燈亮動(dòng)作
IF #貨幣總額>=4 THEN
#"4元商品指示燈" := 1;
ELSE
#"4元商品指示燈" := 0;
END_IF;
IF #貨幣總額 >= 6 THEN
#"6元商品指示燈" := 1;
ELSE
#"6元商品指示燈" := 0;
END_IF;
IF #貨幣總額 >= 10 THEN
#"10元商品指示燈" := 1;
ELSE
#"10元商品指示燈" := 0;
END_IF;
IF #貨幣總額 >= 12 THEN
#"12元商品指示燈" := 1;
ELSE
#"12元商品指示燈" := 0;
END_IF;
// 購買四元商品
#R_TRIG_4(CLK:=#"4元商品按鈕");
IF #R_TRIG_4.Q AND #"4元商品指示燈" AND NOT #空閑標(biāo)志 THEN
#空閑標(biāo)志 := 1;
#"4元商品驅(qū)動(dòng)閥" := 1;
END_IF;
#T4(IN:=#"4元商品驅(qū)動(dòng)閥",
PT:=T#2S);
IF #T4.Q THEN
#空閑標(biāo)志 := 0;
#"4元商品驅(qū)動(dòng)閥" := 0;
#貨幣總額 -= 4;
#"4元商品按鈕" := 0;
END_IF;
// 購買六元商品
#R_TRIG_6(CLK := #"6元商品按鈕");
IF #R_TRIG_6.Q AND #"6元商品指示燈" AND NOT #空閑標(biāo)志 THEN
#空閑標(biāo)志 := 1;
#"6元商品驅(qū)動(dòng)閥" := 1;
END_IF;
#T6(IN := #"6元商品驅(qū)動(dòng)閥",
PT := T#2S);
IF #T6.Q THEN
#空閑標(biāo)志 := 0;
#"6元商品驅(qū)動(dòng)閥" := 0;
#貨幣總額 -= 6;
#"6元商品按鈕" := 0;
END_IF;
// 購買十元商品
#R_TRIG_10(CLK := #"10元商品按鈕");
IF #R_TRIG_10.Q AND #"10元商品指示燈" AND NOT #空閑標(biāo)志 THEN
#空閑標(biāo)志 := 1;
#"10元商品驅(qū)動(dòng)閥" := 1;
END_IF;
#T10(IN := #"10元商品驅(qū)動(dòng)閥",
PT := T#2S);
IF #T10.Q THEN
#空閑標(biāo)志 := 0;
#"10元商品驅(qū)動(dòng)閥" := 0;
#貨幣總額 -= 10;
#"10元商品按鈕" := 0;
END_IF;
// 購買十二元商品
#R_TRIG_12(CLK := #"12元商品按鈕");
IF #R_TRIG_12.Q AND #"12元商品指示燈" AND NOT #空閑標(biāo)志 THEN
#空閑標(biāo)志 := 1;
#"12元商品驅(qū)動(dòng)閥" := 1;
END_IF;
#T12(IN := #"12元商品驅(qū)動(dòng)閥",
PT := T#2S);
IF #T12.Q THEN
#空閑標(biāo)志 := 0;
#"12元商品驅(qū)動(dòng)閥" := 0;
#貨幣總額 -= 12;
#"12元商品按鈕" := 0;
END_IF;