首先需要說明的是,這里所說的邏輯不正確,并不是說plc有問題了,而是我們在調(diào)試程序時遇到的一種從常理來說不符合邏輯的一種現(xiàn)象。
有時我們在調(diào)試plc程序時,會遇到程序邏輯不正確的情況,如下面的這些語句所示(三菱q系列plc):
按理說,能流已經(jīng)通過了前面的節(jié)點,輸出線圈(b1117或b1116)就應(yīng)該得電為1,為什么會造成現(xiàn)在這種情況呢?有時遇到這種情況可能百思不得其解,丈二和尚摸不著頭腦。其實造成這種情況無外乎有以下二方面的原因:
★ 輸出線圈的重復(fù)利用
★ plc未掃描執(zhí)行該部分程序
對于第一種情況,由于plc是循環(huán)掃描的工作原理(plc工作原理詳見《plc基礎(chǔ)概念(2) 》),對于同一程序段中的多個線圈,plc只更新最后一個線圈的數(shù)字值(0或1),而對前面的線圈則會不予理會,當(dāng)我們監(jiān)控程序時,就會發(fā)現(xiàn)前面的線圈邏輯不對的情況。
解決方法:可利用編程軟件“軟元件查找”或“交叉使用表”的方法來觀察線圈在同一個程序是否重復(fù)利用,該線圈多次被使用,只要更換其它的線圈就可以了(相關(guān)文章:《plc雙線圈輸出的規(guī)則及在程序設(shè)計中的應(yīng)用(作者:廖常初)》)。
對于第二種情況,由于plc未執(zhí)行掃描此部分程序,此時也會出現(xiàn)邏輯不對的情況發(fā)生。造成plc不執(zhí)行部分程序的原因有很多原因,常見原因有如2個方面:
● 在plc中使用跳轉(zhuǎn)(jump)語句過多,改變了plc的掃描順序而跳過了部分程序,導(dǎo)致部分程序未執(zhí)行,造成該段程序內(nèi)的相關(guān)語句邏輯不正確;
●
部分程序未注冊。像一些plc(如三菱plc),你單純下載了程序還不行,你還需要注冊(需要下載plc參數(shù),詳見《三菱plc程序編寫注意事項一例(原) 》),否則該部分程序不能運行,也會造成plc程序邏輯不正確的情況發(fā)生。
使用jump語句造成邏輯錯誤的例子如下所示(siemens plc):
從例可以看出,當(dāng)i0.0閉合時,由于plc掃描跳過了網(wǎng)絡(luò)2(改變了plc順序掃描的方向),所以plc并不掃描網(wǎng)絡(luò)2,此時,網(wǎng)絡(luò)2中的i0.1和i0.2就是閉合了,q0.0也不閉合。
此處,僅是一個簡單說明性的例子,如果程序很大,jump用的過多,則很容易造成plc邏輯“不正確”的現(xiàn)象發(fā)生,這種情況就不容易看出來了。因此建議在程序中要盡是少用jump語句,可以使用調(diào)用子程序的方法來實現(xiàn)同樣的功能。