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










