一組PLC程序的邏輯錯誤分析
●程序問題
如果兩個搶答者在同一時刻按下按鈕,在程序中處于前面的搶答者的警報器輸出正常,另一個搶答者的警報器沒有輸出。
●程序分析
本問題分成三個程序段,它們本應(yīng)并行執(zhí)行方能達到公平的效果。但plc的cpu只能順序執(zhí)行程序,因此在程序中位置處于前面的搶答者的輸出產(chǎn)生之后,后面的程序輸出就被立即阻斷。因此兩個按鈕同時按下時,只有其中的一個得到響應(yīng)。
plc的編程模式來源于繼電器電路控制系統(tǒng),在那些系統(tǒng)中,上述三個程序段對于三個并行運行的電路,但是轉(zhuǎn)到cpu中之后,這些程序就不得不順序執(zhí)行。并行模型與順序執(zhí)行的沖突是許多程序錯誤的原因。在作者先前的論文中就對這一問題進行了分析[1]。
在順序執(zhí)行的機器上面實現(xiàn)plc并行語義是可能的。但是依然需要小心各種陷阱。下面的第一次嘗試存在一個錯誤,再后面一個程序改正了這個錯誤,通過了程序測試。
●程序修正嘗試
克服上面問題的一個自然的想法是使用中間變量保存每個程序段的輸出。這一思路導(dǎo)致下面的程序?qū)崿F(xiàn)(見圖3):
圖3 程序修正嘗試程序?qū)崿F(xiàn)圖
使用這一程序時,如果兩個搶答者的按鈕同時按下,對應(yīng)的兩個警報器會同時響。但是,在下一周期,兩個警報器的輸出又會同時恢復(fù)到0。原因是每一個搶答輸入都會導(dǎo)致另一個搶答無效,兩個搶答輸入就會同時導(dǎo)致對方無效。
●最終程序
下面的程序克服了上述問題,并且通過了基本的測試檢查(見圖4)。
它同前面程序不同之處在于把q0.0等變量的管轄范圍放寬了,因此一旦q0.0為1,只要主持人按鈕不按下,它的值就能繼續(xù)保持下去。
圖4 基本測試檢查結(jié)果
3 噴泉程序
題目:plc在噴泉中的應(yīng)用
來源:plc應(yīng)用技術(shù)開發(fā)與實踐
編程平臺:三菱公司fx2n系列
問題描述
?。?)噴泉有a,b,c 3組噴頭;
?。?)按動開始按鈕后,a組先噴,10秒后停,然后b組和c組同時噴;
?。?)b和c噴10秒后b停,再10秒后c停;
(4)a,b又噴,5秒后,c也噴,持續(xù)10秒后全部停;
?。?)再5秒后重返上述(2)到(4)步;
?。?)按動停止按鈕后,a,b,c 3組噴頭全部停。










