陳潤星 劉杰 李龍杰 何鵬賡 李澤銀 石義金



關鍵詞:HWD32F429;數據記錄;Modbus協議;eMMC存儲
0 引言
目前國內多數嵌入式的數據記錄系統常用STM32 系列作為主控MCU,以國產MCU設計的數據記錄系統較少,針對這一問題設計了一款基于國產MCU的主從冗余數據記錄系統,可實現雙通道Modbus協議數據的存儲和讀取,該系統高效穩定,可在多種需要數據存儲場景進行使用。基于HWD32F429的主從冗余數據記錄系統,以國產HWD32F429替代STM32系列的芯片,可以使整個系統的全國產化率超過98%。
1 數據記錄系統的硬件設計
1.1 HWD32F429芯片
HWD32F429 系列是基于 ARM? Cortex?-M4 32-bit RISC CPU,最高工作頻率 240MHz 的高性能MCU。HWD32F429 集成了豐富的外設接口,包括 SPI、I2C、UART、CAN、網口等,適用于多種應用場景,如工業控制、智能家居、物聯網等。
HWD32F429 系列提供 144pin、176pin 的 LQFP 封裝,208pin 的 TFBGA 封裝,用于高性能變頻控制、數字電源、智能硬件、IoT 連接模塊等領域。此外,該芯片還具有錯誤處理和診斷功能,可以實現故障檢測和定位,提高了系統的可靠性和穩定性。
本文設計數據記錄系統主控HWD32F429采用144pin的LQFP 封裝。
1.2 數據接收模塊
基于國產芯片HWD32F429數據記錄系統與外部接口模塊間有3路串行通信接口,其中2路接收來自外部系統A、B的待存儲數據并互為冗余[1],另外1路串行通信作對外調試接口,用于接收上位機發送的調試命令,串行通道設計示意圖如圖1所示。
數據接收均通過UART+JM3096T 收發器實現,JM3096T是一款國產高可靠性隔離全雙工RS422收發器,實現控制信號與現場信號的隔離及電平轉換。其中一路接收模塊原理圖如圖2所示。
1.3 eMMC 存儲模塊
高速eMMC 存儲芯片TEE12833TW0 具有高集成、高性能、低功耗以及高數據吞吐量等特點,其單片存儲容量可達128GB,本身內部集成控制芯片可以自我管理壞塊以及錯誤檢測和糾正,該國產eMMC存儲芯片采用標準接口可被廣泛應用在通信、軍事、航天、航空等領域的數據采集與存儲系統。數據記錄系統存儲模塊原理圖如圖3所示。
1.4 以太網通信模塊
數據記錄系統有一路以太網通信接口作為上位機讀取數據的接口。接口設置在前面板,方便操作員連接。以太網通信模塊設計如圖4所示。
HWD32F429 自帶MAC 功能,并提供MII 接口。PHY芯片采用EM971AP型芯片。EM971AP為一款支持10/100 兆的以太網物理收發器電路,集成以太網PHY,支持10BASE-T、100BASE-TX,支持MII 接口,能夠替換LXT971A芯片。網絡變壓器采用LT1306-A,實現對外的10/100Mbps自適應以太網通信功能,以太網通信原理圖設計見圖5所示。
2 數據記錄系統軟件設計
2.1 軟件設計架構
數據記錄系統嵌入式軟件主要4個功能任務:數據接收任務、數據存儲任務、數據讀取任務、錯誤處理任務。軟件體系架構如圖6所示。這些任務模塊利用FreeRTOS的多任務并行處理技術,通過消息和信號量的同步機制實現彼此的同步協作。
在數據記錄系統啟動成功后,系統首先通過初始化模塊來確保硬件的正確啟動。接著,系統會開啟功能調度任務,創建一個消息指針隊列,用于管理進程的開啟,并監控數據通信的狀態。
數據接收任務通過兩路 UART 接收來自外部系統的數據,為了確保系統的可靠性,采用 Modbus 通信協議進行數據傳輸。數據存儲任務負責將UART 接收到的數據存儲到 eMMC 存儲芯片中。數據讀取任務則通過以太網口等待數據讀取查詢指令,一旦檢測到查詢指令,就讀取 eMMC 相應數據。通常情況下,數據記錄系統的數據讀取過程都在非工作狀態下進行,因此當系統進入數據讀取任務時,會關閉其他任務,以保證讀取操作的獨立性。為了提高開發效率和可靠性,軟件移植了FATFS 和 LwIP,分別用于輔助完成文件管理和網絡處理[2-5]。
系統功能調度任務負責啟動其他功能任務。在初次運行時,它將開啟數據接收任務。
2.2 數據接收任務
數據記錄系統通過兩路UART接收從外部系統傳入的數據,兩路數據接收通道互為冗余,系統連接圖如圖7所示。
為了保證數據的可靠性,采用Modbus通信協議,數據記錄系統作為從機,外部待存儲設備作為主機,配置設備地址0xe7,功能碼為16,對應為寫入多點數據,由于Modbus 協議規定單幀數據大小不超過256Bytes,所以當待存儲數據超過256Bytes,需要被分為多幀Modbus數據,接收到多幀數據后再組幀形成待存儲的數據,存儲數據請求幀格式示意圖如圖8 所示。
當數據存儲系統接收到串口中斷數據,則對接收數據按照Modbus協議進行解幀和校驗處理,根據校驗結果返回響應數據,用于通知主機Modbus數據幀是否接收成功。返回的響應數據如圖9所示。
考慮到系統運行過程中數據接收時間可能具有隨機性,為確保系統高效運行,我們建立了一個深度為 256 的 FIFO,用于暫存已接收到的數據,防止存儲數據和接收數據發生沖突,導致數據丟失。只有在數據驗證無誤時,才會啟動相關的數據存儲進程,從而實現多任務雙工。
2.3 數據存儲任務
數據存儲任務是整個系統的關鍵所在,解決數據可靠高效地寫入進eMMC存儲芯片的問題。FreeR?TOS的內核未帶文件系統,為了簡化編程流程以及提升開發效率,在設計中加入高效、資源占用率低、專為小型嵌入式系統設計的文件管理系統FATFS。
為了方便對數據存儲和讀取時的查找,數據文件以每幀數據開頭的時間戳配合其他信息命名。文件名參數對應關系如圖所示,其中NO用于區分一秒內多幀存儲數據的次序數,通道號用于區分兩路存入數據的UART通道,確保每一幀數據都能被正確保存且可以區分。
2.4 數據讀取任務
數據記錄系統另一個關鍵功能是確保存儲在eMMC中的數據能夠快速準確地讀取出來。針對大容量存儲的情況下,快速查找并及時返回某個文件對操作員使用體驗來講有重要的意義。本文的數據記錄系統采用以太網作為數據讀取的傳輸途徑。利用第三方LwIP網絡協議棧實現網絡通訊功能。當接收到來自以太網的數據讀取指令,首先檢查指令合法性,如果查詢指令合法,則向任務管理進程發送網絡查詢數據接收成功消息。
2.5 錯誤處理任務
從系統安全角度出發,最理想的錯誤處理策略是盡量規避錯誤。當無法避免或糾正錯誤時,應采取相應的報警措施。此外,系統應根據錯誤的嚴重程度對錯誤進行分類。本軟件依據對系統功能影響程度對錯誤進行分級處理,分類標準與分類結果如圖11 所示。
存儲芯片中應建立一個專門用于記錄系統錯誤的日志文件,以記錄發生的所有錯誤。當發生第 III 類低風險錯誤時,黃色指示燈應常亮;當發生II 類中風險錯誤時,橙色指示燈閃爍;當發生第 I 類高風險錯誤時,紅色指示燈應始終閃爍,直到操作員排除故障且系統重新上電。發生風險錯誤可通過調試串口實時輸出,錯誤類型,方便操作員排除故障。
3 系統測試
為了驗證基于HWD32F429數據記錄系統的功能和性能,采用QT軟件平臺設計了數據記錄系統測試軟件,用于模擬數據的存儲、讀取以及校驗功能。系統測試連接示意圖如圖12所示。
該測試軟件間隔50ms 發送數據長度為256 的Modbus協議幀,通過連接網絡讀取校驗雙通道存儲的數據,測試軟件如圖13所示。
4 結束語
本文設計的主從冗余數據記錄系統主要采用ARM+eMMC 的架構,選用國產芯片 HWD32F429 作為主控制器。該系統能夠滿足以 Modbus 為協議的各類設備的數據記錄需求,在實現嵌入式設備的國產化替代方面具有一定的價值。