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










