一組PLC程序的邏輯錯誤分析
這是一個(gè)比較嚴重的錯誤,因為此處本應經(jīng)過(guò)綠燈閃爍轉為紅燈,但系統卻始終保持綠燈。這樣的系統是無(wú)法接受的。
這一問(wèn)題的解決比較復雜一點(diǎn)。由于我們的主要任務(wù)是發(fā)現錯誤,此地我們不再討論如何修正這一錯誤的問(wèn)題。
圖9 東西向直行綠燈控制程序分析圖
5 第二個(gè)十字路口交通燈控制程序
本節討論另一本書(shū)上的交通燈控制程序中的錯誤。這一程序沒(méi)有處理強通控制這樣的復雜問(wèn)題,但是人行道控制同主干道控制分開(kāi)處理,結果在人行道控制上出現了錯誤。
題目:交通燈控制程序
來(lái)源:plc應用開(kāi)發(fā)實(shí)用子程序
編程平臺:西門(mén)子s7-200
時(shí)序控制:(90秒周期)
南北主干道 左轉綠10秒,綠30秒,綠閃3秒,黃2秒,紅45秒;
東西人行道:紅13秒,綠27秒,綠閃3秒,紅47秒;
東西主干道: 紅45秒,左轉綠10秒,綠30秒,綠閃3秒,黃2秒;
南北人行道:紅58秒,綠27秒,綠閃3秒,紅2秒。
注:
(1)綠閃包括轉向綠燈和轉向綠燈;
(2)東西人行道指東西兩端的人行道。
測試顯示該程序時(shí)序上運行正確,但是在關(guān)機時(shí)出了問(wèn)題。
程序錯誤:按下系統停止開(kāi)關(guān),大部分燈都熄滅,但兩個(gè)方向的人行道上亮起紅燈。
程序分析:
我們以控制東西方向人行道紅燈的變量q1.3的計算為例進(jìn)行分析。下面把相關(guān)程序段專(zhuān)門(mén)抽出來(lái)進(jìn)行分析(見(jiàn)圖10)。
圖10 相關(guān)程序段分析圖
圖中可見(jiàn),當m0.4為0 時(shí)q1.3將輸出1。當t7,t8為0時(shí)m0.4必定為0。系統停止開(kāi)關(guān)是i0.2,它按下之后會(huì )使m0.1變?yōu)?,該變量是控制系統活動(dòng)的主要變量,它變?yōu)?將使一系列變量變?yōu)?,也包括t7和t8。然而這樣做卻沒(méi)有關(guān)掉東西兩端人行道的紅燈。南北兩端人行道紅燈采用的是類(lèi)似程序,因此也沒(méi)有關(guān)掉。
程序修正:
只需把m0.1直接加入到人行道紅燈的控制中即可。
6 結束語(yǔ)
本文分析了來(lái)自?xún)杀緋lc教材的4個(gè)程序例子,從中找出大大小小8個(gè)錯誤,并對這些錯誤的原因進(jìn)行了分析。我們希望這個(gè)分析能夠幫助程序員減少編程錯誤。
本文目的是為了揭示plc程序錯誤的普遍性。這些錯誤不能簡(jiǎn)單歸咎于作者的失誤,主 要原因是編程模式的復雜性以及測試手段的缺乏。
失誤是人類(lèi)的普遍行為。對于計算機程序這樣復雜的對象,出錯經(jīng)常出現。程序編制過(guò)程本身就是一個(gè)不斷嘗試不斷糾正錯誤的過(guò)程。然而,在plc領(lǐng)域,離線(xiàn)的調試工具比較薄弱,迄今為止最好的調試方式依然是現場(chǎng)調試,但是這一方式過(guò)于耗費時(shí)間,而且一般教師和學(xué)生都沒(méi)有這樣的條件。這是程序錯誤率高的根本原因。
作者簡(jiǎn)介
陳鋼 男 現就職于鎮江靈芯軟件試驗室,從事plc測試軟件的開(kāi)發(fā)和商業(yè)化工作。
參考文獻
[1]陳鋼,宋曉宇,顧明等.coq定理證明器輔助plc程序驗證和分析[j].北京大學(xué)學(xué)報,2010(1).
[2]求是科技.plc應用開(kāi)發(fā)技術(shù)與工程實(shí)踐[m].北京:郵電出版社,2005.
[3]賈德勝.plc應用開(kāi)發(fā)實(shí)用子程序[m].北京:郵電出版社,2006(1).
西門(mén)子plc相關(guān)文章:西門(mén)子plc視頻教程
評論