? ? ? ?

咨詢電話

ENGLISH0755-88840386
您的位置:首頁 > 新聞中心>詳情頁

基于 RTX 稱重控制儀表的設計方案

發布時間:2019-11-18 08:57:47 |來源:網絡轉載

1 引言

隨著嵌入式系統 EOS 應用的日益廣泛,控制系統的規模和難度也隨之加大,對嵌入式系統的軟件開發效率的要求也越來越高,像 μcos,Lin-ux,RTX 等,尤其 RTX 和 μcos 更加突出其實時性,在稱重控制行業,越來越多的稱重控制儀表都采用嵌入式操作系統,在沒有操作系統支持的情況下,多任務調度成為單片機應用系統構造上的重要難題 [1] 。比起傳統在單片機上運行程序,它的運行效率更高,穩定性更好,實時性更好,同時也便于對產品軟件進行維護,相比傳統單片機裸奔,運用 RTX 開發稱重控制儀表具有如下幾個優點:

●可搶占的任務調度—— — 根據需要進行調用,從而確保了更好的程序流和稱重事件響應;

●多任務——— 任務調度會產生同時執行多個任務的效應;

●確定性的行為——— 在定義的時間內處理事件和中斷;

●較短的 ISR——— 實現更加確定的中斷行為;

●任務間通信——— 管理多個任務之間的數據、內存和硬件資源共享,如見圖 1 所示;

●自定義的堆棧使用——— 每個任務分配一個定義的堆??臻g,從而實現可預測的內存使用;

●系統管理——— 可以專注于應用程序開發而不是資源管理 ( 內務處理 )。

 

2  RTX 內核簡介及稱重儀表的原理

2.1 RTX內核構架

Keil RTX定性為實時操作系統 RTOS,適用于ARM核和 Cortex- M3 內核的設備。

●任務調度 Scheduler,完成任務間的切換和中斷的嵌套;

●互斥事件 Mutex,當共享內部資源時,設置互斥標志,可以防止共享沖突;

●內存分頻 MemoryPool,任務通過調用內存管理,分配和釋放內存,節約空間;

●郵箱管理 Mailbox,可通過郵箱管理,在任務與任務間進行數據交互;

●延時間隔 Delay&Interval,通過延時間隔調用,提高運行的實時性;

●事件信號 Event&Semaphore,實現任務間的等待執行。

2.2 稱重儀表原理

稱重儀表如圖 3 所示的部件主要完成稱重數據采集、稱重數據顯示、參數存儲、按鍵輸入、還包含串口通訊、IO 控制、打印輸出等一系列任務,這些任務的執行都有一套參考標準,即必須嚴格按照 GB/T 7724- 2008 《電子稱重儀表》[2] 和GB/T 23111- 2008 《 非自動衡器》[3] 來處理數據。下面對框圖的功能模塊作分析。

2.2.1 ARM CortexM3 的處理器

它有 1 個 128KB Flash,1 個 20KB SRAM,4個 16 位定時器,100 個可編程的 I/O 引腳,具有I2C、SPI、USB、15SART和 CAN接口,2 路 10 通道 12 位A/D 轉換器,RTC 功能模塊,WDT 功能和高級電源管理功能,最高支持 72MHz 主頻;提高 CPU的運行速率。

2.2.2  AD稱重數據采集

稱重數據采集的是 0mV~10mV 稱重傳感器電橋信號,我們在設計儀表時一般選擇帶內部增益放大器的 AD,或者在傳感器和 AD 設備之間增加一道信號放大環節,這樣可以幫助我們采集到更多的有用信號。本方案我們選擇 24bit 高精度Σ- Δ 型自帶內部增益放大的 AD轉換器。

2.2.3 顯示器

一般常用七段數碼管,也有采用點陣液晶,點陣液晶可以顯示中文,方便 HMI 交互。

2.2.4 存儲器件

市場上的存儲器很多,目前較流行的是電擦除的 AT24CXX 系列,我們采用鐵電 FM24CXX 的存儲器,鐵電的速率比 AT24CXX 電擦除的要快,而且無擦寫次數限制,使用壽命更長。

2.2.5 實時時鐘

實時時鐘可以提供準確的運行時間總和,可以用于實時打印和實時監控記錄,方便根據日期調出數據等。

2.2.6  IO擴展

由于 MCU 的 IO 管腳驅動能力的限制,而帶動設備通常不僅需要增加驅動能,還要防止設備對 CPU 的干擾,一般我們采用光隔離或磁隔離去驅動 MOS 管或繼電器,這樣設備的運行干擾就相對小很多,而且能增加驅動設備的能力。

2.2.7 串口通訊

串口設計為了提高 EMC 特性和對外部的抗干擾,這里常選擇 ADI 磁隔離器件,串口通訊一般有標準 RS232/RS485 信號,工業比較流行的總線還有 Profibus- DP 和 CAN 總線,主要用于與 PLC、DCS等外設數據交互,控制和打印信息的輸出。

3 實時稱重系統軟件設計

任務分配完后必須根據需要分配優先級,比如想要得到較高的按鍵響應,可以把任務 1 的優先級設為最高,但是本文主要是分析稱重數據的實時監控,所以我們需要將任務 3 的優先級設為最高,這樣可以以最快的響應速度處理稱重數據。

注解1 :配置 ARM7 內核的時鐘和外設等信息,以保證外設的正確運行。

注解2 :RTX 內核的初始化,包含內核時鐘,堆棧,任務數量等的分配,并創建第一個任務。

注解3 :“__task void Task0_init()”任務作用是根據需要創建用戶任務,流程圖(如圖 4 所示)上的 os_tsk_create (Task1_Key,13), 就 是 創 建 了以Task1_Key 為函數名的任務 1,并且分配了其優先級為 13,而且把創建任務時的任務序號存放在以TID_ 為前綴的變量里面,這是因為以后對任務的操作都需要用到此任務序號,這個序號是 RTX 內核自動分配的,具有唯一性。

注解4 :多任務的調度和切換詳見 3.2 章節舉例說明。

注解5 :RTX 系統自帶的任務當 TCB( 任務管理器 ) 列表內無就緒可執行任務,內核暫時會切換執行空閑任務。

注解6 :中斷入口函數。

注解7 :用戶函數可以根據用戶需要任意增加和減少,RTX內核任務最大可運行 255 個。

3.2 任務切換舉例

任務的切換是要通過內核 TCB 來管理的,假如當前正在運行任務 2“Void Task2_Disp()” ,此時AD 轉換完成,給 CPU 發送一個中斷信號進入中斷,中斷的任務就是告訴 RTX 內核,任務 3“Void Task2_Disp()”已經就緒,內核則會判斷任務 3 的優先級是否比任務 2 優先級高,如果是,則重新分配任務,把顯示任務的運行狀態壓入顯示任務的堆棧,再把數據采集任務的信息從數據采集任務的堆棧中恢復到 MCU 工作寄存器中,啟動數據采集任務,而顯示任務則被掛起暫停,直到任務 3 完成,把 CPU 控制權釋放。

4 需要注意的問題

在應用 RTX時應注意以下幾點:

4.1 盡可能不使用循環任務切換。如果由os_dly_wait()函數來進行任務觸發,則不需要保存任務內容。由于正處于等待運行的任務并不需要等待全部循環切換時間結束,因此 os_dly_wait()函數可以改進 RTX 內核系統響應時間,更加突出實時效果。

4.2 如果使用時間片,不要將時鐘節拍中斷速率設置得太高或太低,設定為一個較低的數值在增加每秒的時鐘節拍個數的同時會增加 RTX 內核調度所產生的開銷,因為每次時鐘節拍中斷大約需要 100 個 ~200 個 CPU周期;也不可將時鐘節拍率太高,否則會增加中斷響應時間,導致中斷響應不及時,所以個人建議不使用時間片任務切換。我們做軟件的時候,可以在有較大數據量處理的任務中間穿插 os_dly_wait()函數,以便其它任務得到響應,又不影響本次任務的運行。

4.3 _alloc_box()函數比較方便的根據需要隨時分配內存給任務,但是當我們使用完本次內存后一定要利用 _free_box()釋放內存,否則不停的被創建內存而不去釋放,那么運行時間一長,內存占用達到飽和,內存溢出了直接會導致系統癱瘓,這個錯誤是致命性的,而且有時候不容易被發現,是一個隱患。

4.4 每一個任務必須都是一個死循環,例如:

__task void Task1_key (void)

{

 /* 添加任務變量,給設備初始化 */

os_itv_set(2); /* 設置本任務每 20ms 發生一次 */

while(1)

{

KeyManage(); /* 按鍵掃描和處理 */

os_itv_wait(); /* 等待下一個 20ms 的到來 */

}

}

如果沒有 while(1)把 PC 指針控制在 Task1_key(void),那么當運行完一次任務后,PC 指針就會跑飛,程序就會亂掉,直接導致系統崩潰。

4.5 稱重過程是一個強實時過程,需要 CPU及時采集秤臺過程的數據并快速分析有效數據,從而計算其重量。如果 CPU 速度過慢或者程序邏輯結構設計不合理,必然會導致儀表在穩定性和實時稱重控制方面的不足 [4] ,所以必要時我們可以把稱重數據采集任務的優先級設為最高。

5 結論

本文介紹了多任務的創建、切換和并發多任務運行,并分析了 RTX高效率數據采集的實時性,RTX 內核一旦接收到事件響應,可以在最短的時間內去處理,這樣,提高采集效率的同時又可以提高控制的實時性。而不像傳統程序只能順序執行完一圈后才能被響應。任務切換是 RTX 的一個基本服務,在實際應用中還要對任務切換時的堆棧管理有一定了解,這樣才能更好地掌握任務切換的機制。且每個任務都可以隨時被創建和刪除,不僅可以把暫時不用的任務先從 TCB 中抽出掛起,也可以當再次需要的時候再把它拉入運行 TCB 列表。本文只提到了幾個運用 RTX 設計稱重儀表的關鍵點,希望對同類系統設計有一定的借鑒意義。

 

本文源于網絡轉載,如有侵權,請聯系刪除

分享到
亚洲 卡通 欧美 制服 中文_青柠电影免费观看在线高清6_西瓜视频在线观看免费_一边伸舌头一边快速喘气表情
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>