近日,網友求助:自己的Smart 700 IE V3觸摸屏項目編譯出錯,從報錯信息上找不到任何幫助,自己比較抓狂啦,報錯信息見下圖(數組超出範圍):
![「案例」你見過西門子觸摸屏Smart 700 IE V3的這種編譯出錯嗎?](http://p2.ttnews.xyz/loading.gif)
和他聯繫後,拿到了源程序,開始查故障:
1、由於是數組超出範圍,首先去找可能用到索引的地方:查看所有畫面,沒有見到索引的動畫、複雜動態顯示之類的引用。
2、查圖片列表、文本列表、報警設置、連接中的區域指針等等,都沒有發現問題。
3、是不是畫面裡有什麼隱藏的問題?於是一副一副畫面刪除,編譯,到最後只剩主畫面了,還是編譯出錯。將主畫面上的內容逐個區域刪除,直到最後只有空畫面,還是編譯出同樣的錯誤。(測試時,會出現別的錯誤,暫時不用例會)。
4、將變量列表裡的條目全部刪除,編譯,超限的報錯消失。恢復變量。然後,逐步成組刪除變量,最後發現是這幾個變量問題:
![「案例」你見過西門子觸摸屏Smart 700 IE V3的這種編譯出錯嗎?](http://p2.ttnews.xyz/loading.gif)
5、是不是地址超出了使用範圍?和網友溝通,PLC為S7-200SMART,確認沒有超出範圍,有的CPU上有36個DI,地址區間可以是:I0.0-I4.3呢,應該沒有超限。
6、繼續採用二分法,一半一半刪除測試,最終發現是I2.6這個變量有問題。重新建了一個I2.6的變量,刪除原變量,則編譯通過。
7、這個I2.6的變量有什麼問題呢?難道是後臺數據庫被破壞了?於是點開該變量的屬性,終於發現了原因:
應該是使用了一個不恰當的函數,或者函數的參數沒有給對導致。
好隱蔽的一個小地雷呀!
說明:
1、本文是實踐經驗,非嚴格論文,與相關產品和理論可能不完全相符。
2、如需進行控制、三電相關技術求助,交流,請留言,也可加入技術討論群:877456127
閱讀更多 iHM工控 的文章