新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式實現地鐵雜散電流監測裝置

        嵌入式實現地鐵雜散電流監測裝置

        作者: 時間:2011-08-08 來源:網絡 收藏
        3. 4 任務的劃分和構成

        本文引用地址:http://www.104case.com/article/150392.htm

          系統中并行存在的幾個任務按優先級從高到低依次是:顯示任務、鍵盤管理任務、輸出任務、各路數據數據采集任務和數據處理任務。系統采用靜態優先級,這樣系統的控制會相對比較簡單。

          系統中的每個任務包括應用程序、任務堆棧以及任務控制塊( TCB) 三部分。任務控制塊是一個數據結構,當任務的CPU 使用權被剝奪時,ucosII 用它來保存該任務的狀態。當任務重新獲得CPU 的使用權時,任務控制塊能確保任務從被中斷的那一點執行下去。操作系統可以通過查詢任務控制塊的內容從而對任務進行管理。系統中任務的狀態有5 種:休眠態、就緒態、運行態、中斷服務和等待態。狀態之間的轉換如圖5所示。

          休眠態時任務駐留在程序空間中,還沒有交給uc/ os2II 管理。當任務一旦建立,就進入就緒態。就緒態中優先級最高的任務轉為運行態。如果系統的運行導致就緒態中的一個任務優先級高于運行態的任務優先級,則系統通過調度使運行態任務喪失對CPU 的控制權轉為等待態或者就緒態,轉而運行就緒態中的那個任務。這樣就了任務的切換。

          每個處于等待態的任務都對應一個等待時間,時間管理函數可將等待時間已過的等待態的任務轉為就緒態,這實際上也就是時鐘中斷的中斷服務程序。

          3.5 任務的通信和調度

          本系統中任務間的通信采用消息隊列來完成的。消息隊列是uc/ os2II 中的一種通信機制,可以使一個任務或者中斷服務子程序向另一任務發送以指針方式定義的變量。為方便易用,采用消息隊列,用于數據采集任務、數據處理任務、鍵盤管理任務、輸出任務、顯示任務之間的通信。系統通過隊列控制塊來管理消息隊列,每個消息隊列對應一個隊列控制塊。消息的存取基于優先級原則,隊列控制塊中等待任務列表內優先級任務最高的任務先從消息隊列中取消息,系統采用搶占式內核,調度函數總是保證優先級最高的就緒態任務轉為運行態。當就緒態的任務搶占CPU 時,系統執行一次中斷服務程序。當任務中的消息發送完成以及中斷返回時,系統調用調度函數,將任務從等待態轉為就緒態,這樣就緒態中任務的最高優先級就會發生變化,進而影響到運行態和就緒態間的任務切換。在本系統中,正在運行的任務需要通過消息(調用OSQPEND( ) 函數) 來等待一個事件的發生。假如該事件一直沒有出現,調用該函數的任務將被置于等待狀態(優先級最低的任務可不需要等待某個消息) 。此時下一個優先級最高的任務將立即獲得CPU 控制權。

          4 系統的工作過程

          本系統采用兩種方式顯示采集的大小,循環顯示和指定顯示,在正常工作情況下,采用循環顯示方式顯示8路采集大小,每采集完一路電壓,就向數據處理任務發送一條消息,而數據處理任務每處理完一路就向顯示任務發送一條消息,由于鍵盤掃描任務優先級比數據采集任務最高,每當用戶鍵盤選擇時,就搶斷當前采集任務,而去處理用戶需要選擇的那路電壓,并相應顯示。當采集超過一定標準時,系統會報警,以告之人員,另外本系統還留有串行232接口,用于和微機通信,以儲存雜散電流的歷史情況。當所有任務運行完后,開始下一個周期的運行。應用程序與uc/ os2II 的內核是一起下載到單片機系統中。成功的移植需要對內核程序進行一定的修改,主要是修改內核中與硬件密切相關的幾個文件,具體可參考相關文獻.

          5  結束語

          本系統經調試,軟硬件工作均正常。實驗證明,本系統較傳統的數據采集系統在安全性和實時性方面都有了很大的提高,完全能夠適應復雜系統的需要。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        基爾霍夫電流相關文章:基爾霍夫電流定律



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 溆浦县| 榆林市| 通化市| 右玉县| 花垣县| 泗洪县| 闽清县| 南安市| 临汾市| 南江县| 漯河市| 武清区| 文化| 墨玉县| 四会市| 成安县| 临澧县| 宁陵县| 石林| 龙泉市| 谢通门县| 图们市| 怀远县| 桃江县| 丹棱县| 大厂| 岳普湖县| 黑水县| 盐津县| 罗田县| 赣州市| 泰安市| 昌邑市| 丰城市| 锡林郭勒盟| 安福县| 唐山市| 渝中区| 定南县| 南郑县| 会昌县|