問題|一組PLC程序的邏輯錯誤分析(2)
3 噴泉程序 題目:plc在噴泉中的應用 來源:plc應用技術(shù)開發(fā)與實踐 編程平臺:三菱公司fx2n系列 問題描述 (1)噴泉有a,b,c 3組噴頭; (2)按動開始按鈕后,a組先噴,10秒后停,然后b組和c組同時噴; (3)b和c噴10秒后b停,再10秒后c停; (4)a,b又噴,5秒后,c也噴,持續(xù)10秒后全部停; (5)再5秒后重返上述(2)到(4)步; (6)按動停止按鈕后,a,b,c 3組噴頭全部停。 輸入輸出變量分配: x0001:開始按鈕 x0002:結(jié)束按鈕 y0001:a組噴頭 y0002:b組噴頭 y0003:c組噴頭 內(nèi)部繼電器:m0—m5 定時器分配(見圖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等定時器。定時器用t標識,它的上方是定時器變量名,下方是預定的定時延遲。本例使用的是ton類型定時器,這種定時器只要輸入端由0轉(zhuǎn)1計時就開始,在計時過程中,輸入端必須始終保持為1,一旦定時器到時,它所對應的變量就立即由0轉(zhuǎn)1。在計時過程中,如果輸入端轉(zhuǎn)0,則計時停止,定時器到時之后,只要輸入端繼續(xù)為1,那么計時器變量也繼續(xù)保持為1,一旦輸入變0,計時變量也轉(zhuǎn)為0。本例中的定時器按十分之一秒為單位計時?! ∵@個程序含有三個錯誤,它的某些噴頭在預定停止的時刻沒有停止,在預定開始的時刻沒有開始?! 〕绦蝈e誤(1):按照要求程序開始后20秒,c組噴發(fā)應該停止,但該程序卻沒有停止c的噴發(fā)?! ≡蚍治觥 的噴發(fā)受到m1,m2和m3的控制,它們分別控制c組的第一,第二和第三次噴發(fā)。在第二次噴發(fā)結(jié)束之后,m2為0,噴發(fā)本應停止,但調(diào)試中發(fā)現(xiàn)c的輸出(y0002)繼續(xù)為1,單步調(diào)試發(fā)現(xiàn), 此時m1為1,由此造成c組輸出繼續(xù)。分析發(fā)現(xiàn),產(chǎn)生m1的梯形圖有錯。應該使用m1來產(chǎn)生反饋,但程序中用了b組的輸出變量y0001。 該變量恰好在c組第二次噴發(fā)之后重新置1,因此造成了c組繼續(xù)噴發(fā)。將此處改成m1之后這一錯誤即可消除?! 〕绦蝈e誤(2):程序開始后50秒,a組噴發(fā)應該重新開始,但實際運行中并未開始?! ≡蚍治觯骸 ∵@是一個定時時間寫錯的簡單錯誤。定時器t4設定的時間應為5秒(50),但梯形圖中錯寫成100(該書指令表程序中也是寫50,梯形圖中是一個失誤)。 程序錯誤(3):在糾正了上面兩個錯誤之后,程序依然無法通過測試。50秒之后,c組不應該開始噴發(fā),但實際運行中噴發(fā)?! ≡蚍治觯骸 ?0秒之后,程序進入下一周期。此時程序該如何運行在原書中沒有清楚描述,這屬于描述不全。根據(jù)程序的具體實現(xiàn),可以看出作者的意圖是在50秒之后把整個噴發(fā)過程重演一遍?;谶@樣的理解,程序應該在50秒之后開始a組噴發(fā),但程序運行結(jié)果是,不但a組噴發(fā),而且c組也噴發(fā),后一行為不符合規(guī)定?! 〕霈F(xiàn)這一現(xiàn)象的原因在于,m0的梯形圖中使用了y000來實現(xiàn)反饋。這一錯誤同第一個錯誤類似,只是這一方式在一個周期的運行中沒有問題,在第二周期中就會出現(xiàn)問題。在該圖中用m0取代y000就能消除這一錯誤?! ≡谙艘陨蠁栴}之后得到梯形圖如圖6所示?! ?center>
4 十字路口交通燈控制程序 題目:交通燈控制程序 來源:plc應用技術(shù)開發(fā)與實踐 編程平臺:omron公司cqm1系列 ●任務描述 工作順序:啟動按鈕,南北綠燈,東西紅燈,東西綠燈,南北紅燈。按此順序循環(huán)?! r序控制:(90秒周期) ●主干道 南北左轉(zhuǎn)燈:綠10秒,黃2秒,紅78秒; 南北直行燈:紅10秒,綠30秒,綠閃3秒,黃2秒,紅45秒; 東西方向左轉(zhuǎn)燈和直行燈的工作方式與上相仿,但延遲45秒。人行道燈與主干道直行燈相同?! 駨娡刂啤 〈蜷_強通開關(guān),強通方向綠燈亮,斷開強通開關(guān),綠燈閃3秒,恢復正??刂? 閃爍控制,亮0.5秒,暗0.5秒,持續(xù)3秒; 這個程序比較長,不便全部抄錄在此。這里僅指出程序中的幾個錯誤,并列出相關(guān)的程序段?! 〕绦蝈e誤(1):閃爍控制錯誤。閃爍過程通過一個專門的程序段控制,按要求該程序應該每隔0.5秒輸出1,然后0.5秒輸出0,不斷循環(huán)。圖7是書中該程序的實現(xiàn): 其中只用到tim050一個定時器,計時單位為十分之一秒。omron的tim型定時器的工作方式同西門子ton型定時器相仿,當輸入為1時啟動計時,一旦輸入轉(zhuǎn)0,立即停止計時,定時器變量輸出復位為0?! ∑鹗紶顟B(tài)tim050的值為0,取反后送入定時器1,啟動計時,5個單位之后到時定時器產(chǎn)生信號1。該信號經(jīng)反饋之后,把0送入定時器,這一輸入值立即把定時器輸出重新變?yōu)?。因此,該段程序只能產(chǎn)生非常短暫的1,而不是持續(xù)0.5秒的1。當該信號用于驅(qū)動綠燈時,無法產(chǎn)生正常的均勻閃爍效果?! 〕绦蛐拚?見圖8)
5 第二個十字路口交通燈控制程序 本節(jié)討論另一本書上的交通燈控制程序中的錯誤。這一程序沒有處理強通控制這樣的復雜問題,但是人行道控制同主干道控制分開處理,結(jié)果在人行道控制上出現(xiàn)了錯誤。 題目:交通燈控制程序 來源:plc應用開發(fā)實用子程序 編程平臺:西門子s7-200 時序控制:(90秒周期) 南北主干道 左轉(zhuǎn)綠10秒,綠30秒,綠閃3秒,黃2秒,紅45秒; 東西人行道:紅13秒,綠27秒,綠閃3秒,紅47秒; 東西主干道: 紅45秒,左轉(zhuǎn)綠10秒,綠30秒,綠閃3秒,黃2秒; 南北人行道:紅58秒,綠27秒,綠閃3秒,紅2秒?! ∽ⅲ骸 ?1)綠閃包括轉(zhuǎn)向綠燈和轉(zhuǎn)向綠燈; (2)東西人行道指東西兩端的人行道?! y試顯示該程序時序上運行正確,但是在關(guān)機時出了問題。 程序錯誤:按下系統(tǒng)停止開關(guān),大部分燈都熄滅,但兩個方向的人行道上亮起紅燈?! 〕绦蚍治觯骸 ∥覀円钥刂茤|西方向人行道紅燈的變量q1.3的計算為例進行分析。下面把相關(guān)程序段專門抽出來進行分析(見圖10)?! ?center>
圖中可見,當m0.4為0 時q1.3將輸出1。當t7,t8為0時m0.4必定為0。系統(tǒng)停止開關(guān)是i0.2,它按下之后會使m0.1變?yōu)?,該變量是控制系統(tǒng)活動的主要變量,它變?yōu)?將使一系列變量變?yōu)?,也包括t7和t8。然而這樣做卻沒有關(guān)掉東西兩端人行道的紅燈。南北兩端人行道紅燈采用的是類似程序,因此也沒有關(guān)掉?! 〕绦蛐拚骸 ≈恍璋裮0.1直接加入到人行道紅燈的控制中即可?! ? 結(jié)束語 本文分析了來自兩本plc教材的4個程序例子,從中找出大大小小8個錯誤,并對這些錯誤的原因進行了分析。我們希望這個分析能夠幫助程序員減少編程錯誤?! ”疚哪康氖菫榱私沂緋lc程序錯誤的普遍性。這些錯誤不能簡單歸咎于作者的失誤,主 要原因是編程模式的復雜性以及測試手段的缺乏。 失誤是人類的普遍行為。對于計算機程序這樣復雜的對象,出錯經(jīng)常出現(xiàn)。程序編制過程本身就是一個不斷嘗試不斷糾正錯誤的過程。然而,在plc領(lǐng)域,離線的調(diào)試工具比較薄弱,迄今為止最好的調(diào)試方式依然是現(xiàn)場調(diào)試,但是這一方式過于耗費時間,而且一般教師和學生都沒有這樣的條件。這是程序錯誤率高的根本原因。
自動對焦:
咨詢詳情:如需咨詢文中涉及的相關(guān)產(chǎn)品或解決方案詳情,請加微信:ZiDongHuaX 。
微信聯(lián)盟:,各細分行業(yè)微信群:點擊這里進入。
鴻達安視:水文水利在線監(jiān)測儀器、智慧農(nóng)業(yè)在線監(jiān)測儀器 金葉儀器: 氣體/顆粒物/煙塵在線監(jiān)測解決方案
西凱昂:SMC氣動元件、力士樂液壓元件、倍加福光電產(chǎn)品等 山東諾方: 顆粒物傳感器、粉塵濃度傳感器
深圳金瑞銘:RFID射頻識別、智能傳感器等物聯(lián)網(wǎng)解決方案 北京英諾艾智: 容錯服務器、邊緣計算解決方案
微信聯(lián)盟:,各細分行業(yè)微信群:點擊這里進入。
鴻達安視:水文水利在線監(jiān)測儀器、智慧農(nóng)業(yè)在線監(jiān)測儀器 金葉儀器: 氣體/顆粒物/煙塵在線監(jiān)測解決方案
西凱昂:SMC氣動元件、力士樂液壓元件、倍加福光電產(chǎn)品等 山東諾方: 顆粒物傳感器、粉塵濃度傳感器
深圳金瑞銘:RFID射頻識別、智能傳感器等物聯(lián)網(wǎng)解決方案 北京英諾艾智: 容錯服務器、邊緣計算解決方案
我要收藏
個贊
評論排行