精品视频一区二区观看,欧美一区二区视频三区,日韩一区二区三区不卡,欧美中文综合在线视频,欧美综合网亚洲综合网

      ? ? ? ?

      咨詢電話

      ENGLISH0755-88840386
      新聞中心

      咨詢電話

      0755-88840386
      您的位置:首頁 > 學習專題 > 專業(yè)技術專題 > 工業(yè)自動化稱重儀表>詳情頁

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

      發(fā)布時間:2020-10-12 10:50:59 |來源:網絡轉載

      1引言
      隨著嵌入式系統(tǒng)EOS應用的日益廣泛,控制系統(tǒng)的規(guī)模和難度也隨之加大,對嵌入式系統(tǒng)的軟件開發(fā)效率的要求也越來越高,像Ficos,Linux,RTX等,尤其RTX和acos更加突出其實時性,在稱重控制行業(yè),越來越多的稱重控制儀表都采用嵌入式操作系統(tǒng),在沒有操作系統(tǒng)支持的情況下,多任務調度成為單片機應用系統(tǒng)構造上的重要難題叫比起傳統(tǒng)在單片機上運行程序,它的運行效率更高,穩(wěn)定性更好,實時性更好,同時也便于對產品軟件進行維護,相比傳統(tǒng)單片機裸奔,運用RTX開發(fā)稱重控制儀表具有如下幾個優(yōu)點:
      •可搶占的任務調度——根據需要進行調用,從而確保了更好的程序流和稱重事件響應;
      •多任務——任務調度會產生同時執(zhí)行多個任務的效應;
      •確定性的行為——在定義的時間內處理事件和中斷;
      •較短的ISR——實現更加確定的中斷行為;
      •任務間通信——管理多個任務之間的數據、內存和硬件資源共享,如見圖1所示;
      •自定義的堆棧使用——每個任務分配一個定義的堆??臻g,從而實現可預測的內存使用;
      •系統(tǒng)管理——可以專注于應用程序開發(fā)而不是資源管理(內務處理)。

      任務內存分配圖

      1任務內存分配

      2RTX內核簡介及稱重儀表的原理
      2.1RTX內核構架
      IRTX定性為實時操作系統(tǒng)RTOS,適用于中斷的嵌套;
      •互斥事件Mutex,當共享內部資源時,設置互斥標志,可以防止共享沖突;
      •內存分頻MemoryPool,任務通過調用內存管理,分配和釋放內存,節(jié)約空間;
      •郵箱管理Mailbox,可通過郵箱管理,在任務與任務間進行數據交互;
      •延時間隔Delay&Interval,通過延時間隔調用,提高運行的實時性;
      •事件信號Event&Semaphore,實現任務間的等待執(zhí)行。
      2.2稱重儀表原理
      稱重儀表如圖3所示的部件主要完成稱重數據采集、稱重數據顯示、參數存儲、按鍵輸入、任務調度Scheduler,完成任務間的切換和ARM核和Cortex-M3內核的設備。內核處理包含還包含串口通訊、10控制、打印輸出等一系列任務,這些任務的執(zhí)行都有一套參考標準,即必須嚴格按照GB/T7724-2008《電子稱重儀表》冏和GB/T23111-2008《非自動衡器》回來處理數據。下面對框圖的功能模塊作分析。
      2.2.1ARMCortexM3的處理器
      它有1個128KBFlash,1個20KBSRAM,4個16位定時器,100個可編程的I/O引腳,具有I2C、SP1、USB、15SART和CAN接口,2路10通道12位A/D轉換器,RTC功能模塊,WDT功能和高級電源管理功能,最高支持72MHz主頻;提高CPU的運行速率。
      2.2.2AD稱重數據采集
      稱重數據采集的是OmV-lOmV稱重傳感器電橋信號,我們在設計儀表時一般選擇帶內部增益放大器的AD,或者在傳感器和AD設備之間增加一道信號放大環(huán)節(jié),這樣可以幫助我們釆集到更多的有用信號。本方案我們選擇24bit高精度2-A型自帶內部增益放大的AD轉換器。
      2.2.3顯示器
      一般常用七段數碼管,也有采用點陣液晶,點陣液晶可以顯示中文,方便HMI交互。
      2.2.4存儲器件
      市場上的存儲器很多,目前較流行的是電擦除的AT24CXX系列,我們采用鐵電FM24CXX的存儲器,鐵電的速率比AT24CXX電擦除的要快,
      而且無擦寫次數限制,使用壽命更長。
      225實時時鐘
      實時時鐘可以提供準確的運行時間總和,可以用于實時打印和實時監(jiān)控記錄,方便根據日期調出數據等。
      2.2.310擴展
      由于MCU的10管腳驅動能力的限制,而帶動設備通常不僅需要增加驅動能,還要防止設備對CPU的干擾,一般我們采用光隔離或磁隔離去驅動MOS管或繼電器,這樣設備的運行干擾就相對小很多,而且能增加驅動設備的能力。
      2.2.7串口通訊
      串口設計為了提高EMC特性和對外部的抗干擾,這里常選擇ADI磁隔離器件,串口通訊一般有標準RS232/RS485信號,工業(yè)比較流行的總線還有Profibus-DP和CAN總線,主要用于與PLC、DCS等外設數據交互,控制和打印信息的輸出。
      3實時稱重系統(tǒng)軟件設計
      3.1軟件設計流程圖(如圖4所示)    .
      任務分配完后必須根據需要分配優(yōu)先級,比    「”
      如想要得到較高的按鍵響應,可以把任務1的優(yōu)先級設為最高,但是本文主要是分析稱重數據的實時監(jiān)控,所以我們需要將任務3的優(yōu)先級設為最高,這樣可以以最快的響應速度處理稱重數據。
      注解,配置ARM7內核的時鐘和外設等信息,以保證外設的正確運行。
      注解2:RTX內核的初始化,包含內核時鐘,堆棧,任務數量等的分配,并創(chuàng)建第一個任務。
      注解3:"_taskvoidTaskO_init()”任務作用是根據需要創(chuàng)建用戶任務,流程圖(如圖4所示)

      軟件流程圖

      的os_tsk_create(Taskl_Key,13),就是創(chuàng)建了以TaskLKey為函數名的任務1,并且分配了其優(yōu)先級為13,而且把創(chuàng)建任務時的任務序號存放在以TID_為前綴的變量里面,這是因為以后對任務的操作都需要用到此任務序號,這個序號是RTX內核自動分配的,具有唯一性。
      注解七多任務的調度和切換詳見3.2章節(jié)舉例說明。
      注解\RTX系統(tǒng)自帶的任務當TCB(任務管理器)列表內無就緒可執(zhí)行任務,內核暫時會切換執(zhí)行空閑任務。
      注解氣中斷入口函數。
      注解七用戶函數可以根據用戶需要任意增加和減少,RTX內核任務最大可運行255個。
      3.2任務切換舉例
      任務的切換是要通過內核TCB來管理的,假如當前正在運行任務2“VoidTask2_Disp°”,此時AD轉換完成,給CPU發(fā)送一個中斷信號進入中斷,中斷的任務就是告訴RTX內核,任務3“VoidTask2_Disp°”已經就緒,內核則會判斷任務3的優(yōu)先級是否比任務2優(yōu)先級高,如果是,則重新分配任務,把顯示任務的運行狀態(tài)壓入顯示任務的堆棧,再把數據采集任務的信息從數據采集任務的堆棧中恢復到MCU工作寄存器中,啟動數據采集任務,而顯示任務則被掛起暫停,直到任務3完成,把CPU控制權釋放。任務切換流程如圖5所示。
      4需要注意的問題
      在應用RTX時應注意以下幾點:
      4.1盡可能不使用循環(huán)任務切換。如果由os_dly_wait()函數來進行任務觸發(fā),則不需要保存任務內容。由于正處于等待運行的任務并不需要等待全部循環(huán)切換時間結束,因此os_dly_wait0函數可以改進RTX內核系統(tǒng)響應時間,更加突出實時效果。
      4.2如果使用時間片,不要將時鐘節(jié)拍中斷速率設置得太高或太低,設定為一個較低的數值在增加每秒的時鐘節(jié)拍個數的同時會增加RTX內核調度所產生的開銷,因為每次時鐘節(jié)拍中斷大約需要100個?200個CPU周期;也不可將時鐘節(jié)拍率太高,否則會增加中斷響應時間,導致中斷響應不及時,所以個人建議不使用時間片任務切換。

      任務切換流程圖

      圖5任務切換流程換。我們做軟件的時候,可以在有較大數據量處理的任務中間穿插。sJly.waitO函數,以便其它任務得到響應,又不影響本次任務的運行。
      4.3_alloc_boxO函數比較方便的根據需要隨時分配內存給任務,但是當我們使用完本次內存后一定要利用_free_box()釋放內存,否則不停的被創(chuàng)建內存而不去釋放,那么運行時間一長,內存占用達到飽和,內存溢出了直接會導致系統(tǒng)癱瘓,這個錯誤是致命性的,而且有時候不容易被發(fā)現,是一個隱患。
      4.4每一個任務必須都是一個死循環(huán),例如:
      _taskvoidTaskl_key(void)
      (
      ********    /*添加任務變量,給設備
      初始化*/
      os_itv_set(2);/*設置本任務每20ms發(fā)生一次*/
      while⑴
      (
      KeyManageQ;    /*按鍵掃描和處理*/
      os_itv_waitO;    /*等待下一個20ms的到來
      如果沒有while(l)把PC指針控制在Taskl_key(void),那么當運行完一次任務后,PC指針就會跑飛,程序就會亂掉,直接導致系統(tǒng)崩潰。
      4.5稱重過程是一個強實時過程,需要CPU及時采集秤臺過程的數據并快速分析有效數據,從而計算其重量。如果CPU速度過慢或者程序邏輯結構設計不合理,必然會導致儀表在穩(wěn)定性和實時稱重控制方面的不足囹,所以必要時我們可以把稱重數據采集任務的優(yōu)先級設為最高。
      5結論
      本文介紹了多任務的創(chuàng)建、切換和并發(fā)多任務運行,并分析了RTX高效率數據采集的實時性,RTX內核一旦接收到事件響應,可以在最短的時
      換的機制。且每個任務都可以隨時被創(chuàng)建和刪除,不僅可以把暫時不用的任務先從TCB中抽出掛起,也可以當再次需要的時候再把它拉入運行TCB列表。本文只提到了幾個運用RTX設計稱重儀表的關鍵點,希望對同類系統(tǒng)設計有一定的借鑒意義。    

       

      文章來源于網絡轉載,侵刪

      分享到