一組PLC程序的邏輯錯(cuò)誤分析
輸入輸出變量分配:
x0001:開始按鈕
x0002:結(jié)束按鈕
y0001:a組噴頭
y0002:b組噴頭
y0003:c組噴頭
內(nèi)部繼電器:m0—m5
定時(shí)器分配(見圖5):
t0:a組噴10秒; 0—10
t1:b,c組噴10秒; 10—20
t2:c組噴10秒; 20—30
t3:a,b組噴5秒;30—35
t4:a,b,c組噴10秒; 35—45
t5:a,b,c組停噴5秒; 45—50
同前一程序相比,這一程序中增加了t0,t1等定時(shí)器。定時(shí)器用t標(biāo)識(shí),它的上方是定時(shí)器變量名,下方是預(yù)定的定時(shí)延遲。本例使用的是ton類型定時(shí)器,這種定時(shí)器只要輸入端由0轉(zhuǎn)1計(jì)時(shí)就開始,在計(jì)時(shí)過(guò)程中,輸入端必須始終保持為1,一旦定時(shí)器到時(shí),它所對(duì)應(yīng)的變量就立即由0轉(zhuǎn)1。在計(jì)時(shí)過(guò)程中,如果輸入端轉(zhuǎn)0,則計(jì)時(shí)停止,定時(shí)器到時(shí)之后,只要輸入端繼續(xù)為1,那么計(jì)時(shí)器變量也繼續(xù)保持為1,一旦輸入變0,計(jì)時(shí)變量也轉(zhuǎn)為0。本例中的定時(shí)器按十分之一秒為單位計(jì)時(shí)。
這個(gè)程序含有三個(gè)錯(cuò)誤,它的某些噴頭在預(yù)定停止的時(shí)刻沒有停止,在預(yù)定開始的時(shí)刻沒有開始。
程序錯(cuò)誤(1):按照要求程序開始后20秒,c組噴發(fā)應(yīng)該停止,但該程序卻沒有停止c的噴發(fā)。
原因分析
c的噴發(fā)受到m1,m2和m3的控制,它們分別控制c組的第一,第二和第三次噴發(fā)。在第二次噴發(fā)結(jié)束之后,m2為0,噴發(fā)本應(yīng)停止,但調(diào)試中發(fā)現(xiàn)c的輸出(y0002)繼續(xù)為1,單步調(diào)試發(fā)現(xiàn), 此時(shí)m1為1,由此造成c組輸出繼續(xù)。分析發(fā)現(xiàn),產(chǎn)生m1的梯形圖有錯(cuò)。應(yīng)該使用m1來(lái)產(chǎn)生反饋,但程序中用了b組的輸出變量y0001。 該變量恰好在c組第二次噴發(fā)之后重新置1,因此造成了c組繼續(xù)噴發(fā)。將此處改成m1之后這一錯(cuò)誤即可消除。
程序錯(cuò)誤(2):程序開始后50秒,a組噴發(fā)應(yīng)該重新開始,但實(shí)際運(yùn)行中并未開始。
原因分析:
這是一個(gè)定時(shí)時(shí)間寫錯(cuò)的簡(jiǎn)單錯(cuò)誤。定時(shí)器t4設(shè)定的時(shí)間應(yīng)為5秒(50),但梯形圖中錯(cuò)寫成100(該書指令表程序中也是寫50,梯形圖中是一個(gè)失誤)。
程序錯(cuò)誤(3):在糾正了上面兩個(gè)錯(cuò)誤之后,程序依然無(wú)法通過(guò)測(cè)試。50秒之后,c組不應(yīng)該開始噴發(fā),但實(shí)際運(yùn)行中噴發(fā)。
原因分析:
50秒之后,程序進(jìn)入下一周期。此時(shí)程序該如何運(yùn)行在原書中沒有清楚描述,這屬于描述不全。根據(jù)程序的具體實(shí)現(xiàn),可以看出作者的意圖是在50秒之后把整個(gè)噴發(fā)過(guò)程重演一遍。基于這樣的理解,程序應(yīng)該在50秒之后開始a組噴發(fā),但程序運(yùn)行結(jié)果是,不但a組噴發(fā),而且c組也噴發(fā),后一行為不符合規(guī)定。
出現(xiàn)這一現(xiàn)象的原因在于,m0的梯形圖中使用了y000來(lái)實(shí)現(xiàn)反饋。這一錯(cuò)誤同第一個(gè)錯(cuò)誤類似,只是這一方式在一個(gè)周期的運(yùn)行中沒有問(wèn)題,在第二周期中就會(huì)出現(xiàn)問(wèn)題。在該圖中用m0取代y000就能消除這一錯(cuò)誤。
在消除了以上問(wèn)題之后得到梯形圖如圖6所示。
圖5 定時(shí)器分配程序圖
圖6 梯形圖










