新聞中心

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

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

        作者: 時間:2014-01-13 來源:網絡 收藏


        這是一個比較嚴重的錯誤,因為此處本應經過綠燈閃爍轉為紅燈,但系統卻始終保持綠燈。這樣的系統是無法接受的。

        這一問題的解決比較復雜一點。由于我們的主要任務是發現錯誤,此地我們不再討論如何修正這一錯誤的問題。

        圖9 東西向直行綠燈控制程序分析圖

        5 第二個十字路口交通燈控制程序

        本節討論另一本書上的交通燈控制程序中的錯誤。這一程序沒有處理強通控制這樣的復雜問題,但是人行道控制同主干道控制分開處理,結果在人行道控制上出現了錯誤。

        題目:交通燈控制程序

        來源:plc應用開發實用子程序

        編程平臺:西門子s7-200

        時序控制:(90秒周期)

        南北主干道 左轉綠10秒,綠30秒,綠閃3秒,黃2秒,紅45秒;

        東西人行道:紅13秒,綠27秒,綠閃3秒,紅47秒;

        東西主干道: 紅45秒,左轉綠10秒,綠30秒,綠閃3秒,黃2秒;

        南北人行道:紅58秒,綠27秒,綠閃3秒,紅2秒。

        注:

        (1)綠閃包括轉向綠燈和轉向綠燈;

        (2)東西人行道指東西兩端的人行道。

        測試顯示該程序時序上運行正確,但是在關機時出了問題。

        程序錯誤:按下系統停止開關,大部分燈都熄滅,但兩個方向的人行道上亮起紅燈。

        程序分析:

        我們以控制東西方向人行道紅燈的變量q1.3的計算為例進行分析。下面把相關程序段專門抽出來進行分析(見圖10)。

        圖10 相關程序段分析圖

        圖中可見,當m0.4為0 時q1.3將輸出1。當t7,t8為0時m0.4必定為0。系統停止開關是i0.2,它按下之后會使m0.1變為0,該變量是控制系統活動的主要變量,它變為0將使一系列變量變為0,也包括t7和t8。然而這樣做卻沒有關掉東西兩端人行道的紅燈。南北兩端人行道紅燈采用的是類似程序,因此也沒有關掉。

        程序修正:

        只需把m0.1直接加入到人行道紅燈的控制中即可。

        6 結束語

        本文分析了來自兩本plc教材的4個程序例子,從中找出大大小小8個錯誤,并對這些錯誤的原因進行了分析。我們希望這個分析能夠幫助程序員減少編程錯誤。

        本文目的是為了揭示plc程序錯誤的普遍性。這些錯誤不能簡單歸咎于作者的失誤,主 要原因是編程模式的復雜性以及測試手段的缺乏。

        失誤是人類的普遍行為。對于計算機程序這樣復雜的對象,出錯經常出現。程序編制過程本身就是一個不斷嘗試不斷糾正錯誤的過程。然而,在plc領域,離線的調試工具比較薄弱,迄今為止最好的調試方式依然是現場調試,但是這一方式過于耗費時間,而且一般教師和學生都沒有這樣的條件。這是程序錯誤率高的根本原因。

        作者簡介

        陳鋼 男 現就職于鎮江靈芯軟件試驗室,從事plc測試軟件的開發和商業化工作。

        參考文獻

        [1]陳鋼,宋曉宇,顧明等.coq定理證明器輔助plc程序驗證和分析[j].北京大學學報,2010(1).

        [2]求是科技.plc應用開發技術與工程實踐[m].北京:郵電出版社,2005.

        [3]賈德勝.plc應用開發實用子程序[m].北京:郵電出版社,2006(1).

        西門子plc相關文章:西門子plc視頻教程



        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长宁县| 五大连池市| 高邮市| 汝南县| 高台县| 奇台县| 五原县| 晋州市| 金秀| 汉寿县| 青海省| 罗城| 房山区| 霍州市| 婺源县| 蒙阴县| 普安县| 浦县| 武穴市| 和龙市| 江永县| 泰宁县| 扬中市| 安塞县| 永胜县| 澄迈县| 龙游县| 建昌县| 馆陶县| 阳东县| 东宁县| 九龙城区| 正阳县| 中宁县| 海伦市| 砀山县| 桃江县| 长沙县| 青铜峡市| 彩票| 伊金霍洛旗|