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