一直以來對掃描過程中i與q的表現(xiàn)有這樣的錯誤理解:輸入i輸出q狀態(tài)(觸點)在掃描周期過程中不會隨時改變(這是為了plc系統(tǒng)有穩(wěn)定效果,當(dāng)然對于立即刷新指令另當(dāng)別論)。
對于要求邏輯:按鈕(i0.0)按下或者解除時,q0.0輸出翻轉(zhuǎn),多年前寫過下圖程序。
編寫以上邏輯,基于以下思考:
不論那個掃描周期檢測到輸入信號i0.0有變化(沿信號),如果q0.0為0,那么就會執(zhí)行set指令,q0.0變?yōu)?。由于輸出刷新要到掃描結(jié)束時才執(zhí)行,此時q0.0的常開、常閉點不會有變化,所以rst指令不會被執(zhí)行。
接下來的掃描周期,由于已經(jīng)刷新了q0.0的狀態(tài),q0.0的常開、常閉點翻轉(zhuǎn),就為下次檢測到輸入信號i0.0變化時q0.0繼續(xù)翻轉(zhuǎn)做好準(zhǔn)備。
所以以上邏輯應(yīng)該能完成隨著輸入變化輸出隨動翻轉(zhuǎn)變化。
但是上圖程序?qū)嶋H測試,q0.0壓根不動作。當(dāng)年開始學(xué)習(xí)時沒有深究,想當(dāng)然認(rèn)為這樣寫類似于out輸出指令的雙線圈,執(zhí)行了最后那個rst指令。多年來遇到此類問題一直采用中間變量m過度解決,還想當(dāng)然認(rèn)為這是plc的一個特殊點。
這幾天與同事說到q刷新問題,為自己的錯誤理解大吃一驚,如此低級錯誤竟然伴隨自己這么多年!汗顏……
馬上使用如下圖示程序驗證:
有沿信號輸入,q0.0只從0變?yōu)?執(zhí)行一次,q0.1壓根不動作。這就充分說明由于先執(zhí)行了set q0.0,導(dǎo)致q0.0的常閉點立即斷開,緊接著的set q0.1也就不會被執(zhí)行了。
趕緊翻看plc理論方面的書籍,原來白字黑字寫得清清楚楚,有圖為證:
哎!看來學(xué)習(xí)還需要有刨根問底的精神,不敢想當(dāng)然了事。













