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










