西門子plc嵌入式系統常用的技巧
雖然許多充滿希望和夢想,但代碼的高可靠性的嵌入式系統工程師是不是一次性的過程。當一個應用程序被認定為“成功”,他們往往感到放松,但僅僅是因為在受控條件下運行的軟件,并不意味著它將運行明天或一年后。正常。從開發到實施和嚴格的檢測系統良好的發展周期,有可用于開發高可靠嵌入式系統的許多技術。
以下就是小編為大家介紹的7個技巧方法
技巧1——用已知值填充ROM 軟件進行開發工作人員管理往往是一個非常積極樂觀主義的人,只要讓學生他們的代碼忠實地運行需要很長一段時間,就是通過這樣。西門子plc控制器似乎已經很少跳出應用研究程序設計空間并在非預期的代碼空間中執行它。但是,發生改變這種學習情況的可能性不小于緩沖區溢出或錯誤指針丟失引用。確實發生了!發生對于這種教學情況后系統的行為影響將是未定義的,因為我們默認情況下內存空間為0xFF,或者不能因為人們通常不寫入內存區域,所以該值可能導致只有上帝知道。 但是,有相當全面的鏈接器或IDE技巧可用于幫助識別此類風險事件并從中得到恢復。要填充未使用的內存,可以有效使用存在許多國家不同的可能組合,但是中國如果要構建更可靠的系統,顯而易見的選擇是將ISR錯誤及時處理技術程序放在解決這些重要位置。如果這個系統之間出現安全問題能力并且處理器開始在程序空間環境之外執行代碼,它會觸發ISR并提供存儲處理器,寄存器和系統結構狀態的機會,然后再決定糾正操作。
技巧2——檢查CRC嵌入式工程師應用程序的最大好處之一是,我們的IDE和工具鏈可以自動生成應用程序或內存校驗和(校驗和),以驗證基于此校驗和的應用程序是否完整。 有趣的是,在許多情況下,校驗和只在程序代碼加載到設備時使用。 然而,如果將CRC或校驗和保留在內存中,則驗證應用程序在啟動時(甚至對于長時間運行的系統)仍然是確保不發生事故的極好方法。 編程應用程序現在幾乎不可能改變,但考慮到每年交付數十億的西門子plc控制器和潛在的惡劣工作環境,應用程序崩潰的可能性不是零。
技巧3——為了構建一個更可靠的系統,通過在啟動時執行內存檢查來確保您的硬件工作正常是很重要的。 畢竟,硬件會失靈。 幸運的是,軟件從來不會失敗,它只是執行代碼來做它該做的事情,不管是對是錯。 驗證 ram 在啟動時沒有內部或外部問題是確保硬件按預期運行的好方法。 有許多不同的方法來執行 ram 檢查,但通常的方法是寫入一個已知的模式,在讀回之前等待一小段時間。 結果應該是你寫的東西。 事實上,在大多數情況下,內存檢查已經通過,這正是我們想要的。 然而,有一個非常小的機會,檢查不會通過,這提供了一個極好的機會,為系統指出一個硬件問題。
技巧4--使用許多嵌入式開發堆棧監視器,堆似乎是一個非常神秘的力量。當奇怪的事情開始發生,工程師終于難倒,他們開始想,也許正在發生的事情在堆棧中。其結果是,調整大小和盲堆的位置,等等。但這種錯誤通常是無關的堆棧,但它怎么能這么肯定?畢竟,在惡劣的情況下,有多少工程師實際上是一個堆棧大小分析?當執行代碼,應用程序,返回地址和存儲在堆棧中的其他信息所需的變量將會繼續。在堆棧這種機制導致生長在它的內存分配。然而,這種增長可能超過容量限制在編譯時被確定,導致對堆中的相鄰數據存儲區域的損壞。 確保棧的正常運行的一種方法是代碼的堆棧監控系統“健康”部分實現(有多少工程師呢?)。監視器堆以創建堆棧和“其他”的存儲區,并填充已知的比特模式之間的緩沖區。然后,監視器將繼續監控模式,如果有任何變化。如果此位模式被改變,這意味著堆棧增長太多,正要使系統進入地獄的黑暗!在這一點上,監視器可以記錄事件,系統狀態的發生,并為以后的任何其他有用的數據診斷問題。提供了堆疊顯示器的西門子plc控制器系統最實時操作系統(RTOS)或在一個存儲器保護單元(MPU)??膳碌氖?,這些功能默認關閉,或開發商往往故意關閉。在網絡上快速搜索顯示,許多人建議在實時操作系統堆棧關閉顯示器以節省56個字節的閃存空間。等等,這是不值得的努力!
技巧5 - 使用MPU 過去,很難在小型廉價的西門子plc控制器中找到存儲器保護單元(MPU),但這已經開始發生變化,MPU現在可從高端到低端西門子plc控制器提供,這些MPU為嵌入式軟件開發人員提供了大幅提高其固件穩健性的機會。 MPU已經逐漸耦合到操作系統以創建處理是獨立的存儲空間,或者任務可以執行其代碼而不必擔心被踩踏。如果發生某些事情,將取消不受控制的處理,并實施其他保護措施。請注意帶有該組件的西門子plc控制器,如果有的話,請利用此功能。
技巧6 - 建立一個強大的看門狗系統 當看門狗被啟用時,您經常會發現看門狗實現*(這是一個好的開始),但它也可以通過周期性定時器來完成。看門狗被清除;啟用計時器與程序中發生的任何事情完全隔離。使用看門狗的目的是幫助確保如果發生錯誤,看門狗將不會被清除,即當工作暫停時,系統將被強制執行硬件復位以進行恢復。即使系統出現故障,使用獨立于系統活動的計時器也可以使監視程序保持清晰。 嵌入式開發人員需要仔細思考并設計應用程序任務如何集成到監視系統中。例如,有一種技術允許在特定時間段內運行的每個任務表明他們可以成功完成任務。在這種情況下,看門狗不會被清除并強制重置。 對于可靠的系統,構建強大的監視系統非常重要。由于技術太多,很難在這些段落中完全覆蓋它們,但對于本主題,作者將在未來發表相關文章。
技巧7 - 避免易失存儲器分配 不習慣在資源受限環境中工作的工程師可能會嘗試使用其編程語言的功能,這允許他們使用易失性內存分配,畢竟,這是一種常用于計算器系統的技術,只在必要時才分配內存。例如,在使用C開發時,工程師可能更喜歡使用malloc在堆上分配空間。有一個執行的操作,一旦完成,你可以使用free來返回分配的內存供堆使用。當它們發生時,如果應用程序要求空間但沒有所請求的空間,會發生什么?使用易失性內存分配引起的問題非常復雜。妥善處理這些問題是一場噩夢!另一種方法是以靜態方式直接簡化存儲器的分配。例如,不是簡單地在程序中創建256字節長的緩沖區,而是通過malloc請求這個大小的內存緩沖區。可以在應用程序的整個生命周期內維護此分配的內存,而無需考慮堆或內存碎片問題。
結論:這些只是開發人員可以開始構建更可靠的嵌入式系統的一些方法,所有這些技術都使設計人員能夠開發出更可靠的嵌入式系統的秘密。
標題:西門子plc嵌入式系統常用的技巧 地址:http://www.511997.cn/ask/3046.html