「案例」你見過西門子觸摸屏Smart 700 IE V3的這種編譯出錯嗎?

近日,網友求助:自己的Smart 700 IE V3觸摸屏項目編譯出錯,從報錯信息上找不到任何幫助,自己比較抓狂啦,報錯信息見下圖(數組超出範圍):

「案例」你見過西門子觸摸屏Smart 700 IE V3的這種編譯出錯嗎?

和他聯繫後,拿到了源程序,開始查故障:

1、由於是數組超出範圍,首先去找可能用到索引的地方:查看所有畫面,沒有見到索引的動畫、複雜動態顯示之類的引用。

2、查圖片列表、文本列表、報警設置、連接中的區域指針等等,都沒有發現問題。

3、是不是畫面裡有什麼隱藏的問題?於是一副一副畫面刪除,編譯,到最後只剩主畫面了,還是編譯出錯。將主畫面上的內容逐個區域刪除,直到最後只有空畫面,還是編譯出同樣的錯誤。(測試時,會出現別的錯誤,暫時不用例會)。

4、將變量列表裡的條目全部刪除,編譯,超限的報錯消失。恢復變量。然後,逐步成組刪除變量,最後發現是這幾個變量問題:

「案例」你見過西門子觸摸屏Smart 700 IE V3的這種編譯出錯嗎?

5、是不是地址超出了使用範圍?和網友溝通,PLC為S7-200SMART,確認沒有超出範圍,有的CPU上有36個DI,地址區間可以是:I0.0-I4.3呢,應該沒有超限。

6、繼續採用二分法,一半一半刪除測試,最終發現是I2.6這個變量有問題。重新建了一個I2.6的變量,刪除原變量,則編譯通過。

7、這個I2.6的變量有什麼問題呢?難道是後臺數據庫被破壞了?於是點開該變量的屬性,終於發現了原因:

「案例」你見過西門子觸摸屏Smart 700 IE V3的這種編譯出錯嗎?

應該是使用了一個不恰當的函數,或者函數的參數沒有給對導致。

好隱蔽的一個小地雷呀!


說明:

1、本文是實踐經驗,非嚴格論文,與相關產品和理論可能不完全相符。

2、如需進行控制、三電相關技術求助,交流,請留言,也可加入技術討論群:877456127


分享到:


相關文章: