<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一組PLC程序的邏輯錯誤分析

一組PLC程序的邏輯錯誤分析

作者: 時(shí)間:2014-01-13 來(lái)源:網(wǎng)絡(luò ) 收藏


plc的編程模式來(lái)源于繼電器電路控制系統,在那些系統中,上述三個(gè)程序段對于三個(gè)并行運行的電路,但是轉到cpu中之后,這些程序就不得不順序執行。并行模型與順序執行的沖突是許多程序錯誤的原因。在作者先前的論文中就對這一問(wèn)題進(jìn)行了分析[1]。

在順序執行的機器上面實(shí)現plc并行語(yǔ)義是可能的。但是依然需要小心各種陷阱。下面的第一次嘗試存在一個(gè)錯誤,再后面一個(gè)程序改正了這個(gè)錯誤,通過(guò)了程序測試。

●程序修正嘗試

克服上面問(wèn)題的一個(gè)自然的想法是使用中間變量保存每個(gè)程序段的輸出。這一思路導致下面的程序實(shí)現(見(jiàn)圖3):



圖3 程序修正嘗試程序實(shí)現圖

使用這一程序時(shí),如果兩個(gè)搶答者的按鈕同時(shí)按下,對應的兩個(gè)警報器會(huì )同時(shí)響。但是,在下一周期,兩個(gè)警報器的輸出又會(huì )同時(shí)恢復到0。原因是每一個(gè)搶答輸入都會(huì )導致另一個(gè)搶答無(wú)效,兩個(gè)搶答輸入就會(huì )同時(shí)導致對方無(wú)效。

●最終程序

下面的程序克服了上述問(wèn)題,并且通過(guò)了基本的測試檢查(見(jiàn)圖4)。

它同前面程序不同之處在于把q0.0等變量的管轄范圍放寬了,因此一旦q0.0為1,只要主持人按鈕不按下,它的值就能繼續保持下去。

圖4 基本測試檢查結果

3 噴泉程序

題目:plc在噴泉中的應用

來(lái)源:plc應用技術(shù)開(kāi)發(fā)與實(shí)踐

編程平臺:三菱公司fx2n系列

問(wèn)題描述

(1)噴泉有a,b,c 3組噴頭;

(2)按動(dòng)開(kāi)始按鈕后,a組先噴,10秒后停,然后b組和c組同時(shí)噴;

(3)b和c噴10秒后b停,再10秒后c停;

(4)a,b又噴,5秒后,c也噴,持續10秒后全部停;

(5)再5秒后重返上述(2)到(4)步;

(6)按動(dòng)停止按鈕后,a,b,c 3組噴頭全部停。

輸入輸出變量分配:

x0001:開(kāi)始按鈕

x0002:結束按鈕

y0001:a組噴頭

y0002:b組噴頭

y0003:c組噴頭

內部繼電器:m0—m5

定時(shí)器分配(見(jiàn)圖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標識,它的上方是定時(shí)器變量名,下方是預定的定時(shí)延遲。本例使用的是ton類(lèi)型定時(shí)器,這種定時(shí)器只要輸入端由0轉1計時(shí)就開(kāi)始,在計時(shí)過(guò)程中,輸入端必須始終保持為1,一旦定時(shí)器到時(shí),它所對應的變量就立即由0轉1。在計時(shí)過(guò)程中,如果輸入端轉0,則計時(shí)停止,定時(shí)器到時(shí)之后,只要輸入端繼續為1,那么計時(shí)器變量也繼續保持為1,一旦輸入變0,計時(shí)變量也轉為0。本例中的定時(shí)器按十分之一秒為單位計時(shí)。

這個(gè)程序含有三個(gè)錯誤,它的某些噴頭在預定停止的時(shí)刻沒(méi)有停止,在預定開(kāi)始的時(shí)刻沒(méi)有開(kāi)始。

程序錯誤(1):按照要求程序開(kāi)始后20秒,c組噴發(fā)應該停止,但該程序卻沒(méi)有停止c的噴發(fā)。

原因分析

c的噴發(fā)受到m1,m2和m3的控制,它們分別控制c組的第一,第二和第三次噴發(fā)。在第二次噴發(fā)結束之后,m2為0,噴發(fā)本應停止,但調試中發(fā)現c的輸出(y0002)繼續為1,單步調試發(fā)現, 此時(shí)m1為1,由此造成c組輸出繼續。分析發(fā)現,產(chǎn)生m1的梯形圖有錯。應該使用m1來(lái)產(chǎn)生反饋,但程序中用了b組的輸出變量y0001。 該變量恰好在c組第二次噴發(fā)之后重新置1,因此造成了c組繼續噴發(fā)。將此處改成m1之后這一錯誤即可消除。

程序錯誤(2):程序開(kāi)始后50秒,a組噴發(fā)應該重新開(kāi)始,但實(shí)際運行中并未開(kāi)始。

原因分析:

這是一個(gè)定時(shí)時(shí)間寫(xiě)錯的簡(jiǎn)單錯誤。定時(shí)器t4設定的時(shí)間應為5秒(50),但梯形圖中錯寫(xiě)成100(該書(shū)指令表程序中也是寫(xiě)50,梯形圖中是一個(gè)失誤)。

程序錯誤(3):在糾正了上面兩個(gè)錯誤之后,程序依然無(wú)法通過(guò)測試。50秒之后,c組不應該開(kāi)始噴發(fā),但實(shí)際運行中噴發(fā)。

原因分析:

50秒之后,程序進(jìn)入下一周期。此時(shí)程序該如何運行在原書(shū)中沒(méi)有清楚描述,這屬于描述不全。根據程序的具體實(shí)現,可以看出作者的意圖是在50秒之后把整個(gè)噴發(fā)過(guò)程重演一遍?;谶@樣的理解,程序應該在50秒之后開(kāi)始a組噴發(fā),但程序運行結果是,不但a組噴發(fā),而且c組也噴發(fā),后一行為不符合規定。

出現這一現象的原因在于,m0的梯形圖中使用了y000來(lái)實(shí)現反饋。這一錯誤同第一個(gè)錯誤類(lèi)似,只是這一方式在一個(gè)周期的運行中沒(méi)有問(wèn)題,在第二周期中就會(huì )出現問(wèn)題。在該圖中用m0取代y000就能消除這一錯誤。

在消除了以上問(wèn)題之后得到梯形圖如圖6所示。

西門(mén)子plc相關(guān)文章:西門(mén)子plc視頻教程




關(guān)鍵詞: PLC程序 存儲器 邏輯錯誤

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>