幾乎所有PLC都有第一次掃描的概念,用於執行程序的初始化操作。對於西門子PLC,OB100和第一次掃描標誌都讓用戶有機會執行自己的操作。
但是,最近發現S7-1200的CPU(不確定其他型號PLC的情況),不管是OB100,還是第一次掃描標誌出現時,都不是真正意義上的PLC完全準備好,交給用戶使用的狀態。
下面的語句用於讀取CPU的硬件信息,在PLC上電時,卻無法得到任何信息。但是,在上電完畢,編程器將CPU停止再啟動時(非斷電),就可以讀到信息了,這說明:CPU上電後,程序開始運行,但是,部分硬件並沒有完全準備好。
因此,程序開發時要注意這個問題,我的做法:
1、對於硬件信息讀取,不斷判斷讀取結果,如果沒有信息,則再讀一次。
2、對於模擬量的讀取,要在啟動的前幾秒裡,將一個安全替代值交給後續程序使用。延時後,再直接使用系統的結果。
3、對於各種開機邏輯,要充分考慮各外部設備的啟動準備時間,因此,最好是延時一個安全時間後,再允許外部動作。
2019年1月5日
說明:
1、本文是實踐經驗,非嚴格論文,與相關產品和理論可能不完全相符。
2、如需控制、三電相關幫助,交流,請關注本人,並加入技術討論QQ群:877456127,那裡有很多熱心同行。
閱讀更多 iHM工控 的文章