一組PLC程序的邏輯錯(cuò)誤分析
2 搶答器程序
題目:搶答器程序
來源:plc應(yīng)用技術(shù)開發(fā)與實(shí)踐
編程平臺(tái):西門子公司 s7-200
問題描述:
?。?)主持人控制開始按鈕;
?。?)3個(gè)搶答者每人控制自己的搶答按鈕;
?。?)開始按鈕按下之后所有警報(bào)器斷電;
?。?)之后每個(gè)搶答按鈕按下將使自己的警報(bào)器得電,并鎖住其他搶答者輸入信號(hào)的有效性。
變量分配:
i0.0 主持人按鈕;
i0.1,i0.2,i0.3 分別為三個(gè)搶答者按鈕;
q0.0,q0.1,q0.2 分別為對(duì)應(yīng)于搶答者的警報(bào)器輸出;
原書給出的搶答器梯形圖程序(見圖2)。
圖2 搶答器梯形圖程序
plc程序語義:
上述梯形圖程序的語義可以用比較簡(jiǎn)短的方式表達(dá)出來:
q0.0 := (i0.1 or q0.0) and ~i0.0 and ~q0.1 and ~q0.2;
q0.1 := (i0.2 or q0.1) and ~i0.0 and ~q0.0 and ~q0.2;
q0.2 := (i0.3 or q0.2) and ~i0.0 and ~q0.0 and ~q0.1;
其中~i0.0表示i0.0的邏輯非。
plc的程序周期性地重復(fù)執(zhí)行,每個(gè)周期時(shí)間很短。在一個(gè)周期中,plc將讀入輸入值(這里是i0.1,i0.2和i0.3),經(jīng)過對(duì)上述程序的計(jì)算之后,把輸出變量(這里是q0.0,q0.1和q0.2)的值送到外部。注意上述程序在每個(gè)周期中都重復(fù)執(zhí)行。在每個(gè)周期中,程序的執(zhí)行由上往下由左至右。
當(dāng)一個(gè)搶答按鈕按下之后(比如i0.1=1),對(duì)應(yīng)的輸出(q0.0)馬上變成1。在下一周期中,即使該按鈕方開(i0.1=0)程序的輸出依然會(huì)保持為0,原因是程序依靠自反饋?zhàn)饔茫╫r q0.0)。同時(shí),由于在另外兩個(gè)程序段中含有~q0.1,因此它們的輸出都無法變成1,直到主持人按鈕i0.0把q0.0重新置0為止。










