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