一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用操作系統(tǒng)μC/OS-Ⅱ?qū)崿F(xiàn)數(shù)控執(zhí)行控制器的系統(tǒng)設(shè)計

電子設(shè)計 ? 來源:現(xiàn)代電子技術(shù) ? 作者:劉艷軍 ? 2020-03-06 08:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式操作系統(tǒng)μC/OS-Ⅱ是一個可裁剪、源碼開放、結(jié)構(gòu)小巧、搶先式的實時多任務(wù)內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高,占用空間小,可移植性強(qiáng),實時性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn)。數(shù)控系統(tǒng)是一個典型的強(qiáng)實時性系統(tǒng),具有可確定性??纱_定性主要是確保條件出現(xiàn)到由此引起的動作開始(或者結(jié)束)的時間在一個準(zhǔn)確的時段內(nèi)。在數(shù)控系統(tǒng)中,條件是由操作員的指令(如:緊急停止、移動x軸等)或是機(jī)床的狀態(tài)(如刀具破損等)引起的。本文分析了數(shù)控系統(tǒng)任務(wù)的特點(diǎn),結(jié)合μC/OS-Ⅱ的內(nèi)核體系,對μC/OS-Ⅱ的任務(wù)分類、任務(wù)調(diào)度和中斷服務(wù)策略做了改進(jìn),使其更加適合于數(shù)控系統(tǒng)的應(yīng)用。

1、 μC/OS-Ⅱ?qū)θ蝿?wù)的分類

μC/OS-Ⅱ中每個任務(wù)有5種狀態(tài):休眠(DORMANT)、就緒(READY)、運(yùn)行(RUNNING)、等待(WAITING)、中斷(ISR)。休眠狀態(tài)的任務(wù)駐留在存儲器中,還未被內(nèi)核使用;就緒狀態(tài)的任務(wù)準(zhǔn)備執(zhí)行,優(yōu)先級低于當(dāng)前執(zhí)行的任務(wù),沒有得到CPU控制權(quán);任務(wù)得到CPU控制權(quán)后就處于運(yùn)行狀態(tài);等待事件發(fā)生的任務(wù)處于等待狀態(tài),事件可以是I/O操作完成、共享資源可以利用、時鐘周期到等;任務(wù)執(zhí)行過程被中斷服務(wù)例程中斷,任務(wù)就處于中斷狀態(tài)。

2 、μC/OS-Ⅱ面向數(shù)控系統(tǒng)的改進(jìn)

2.1 數(shù)控系統(tǒng)任務(wù)的特點(diǎn)

在數(shù)控系統(tǒng)中,任務(wù)可分為兩種:周期運(yùn)行的任務(wù)和信號觸發(fā)運(yùn)行的任務(wù),這里所說的信號即包括硬件信號,也包括軟件信號。周期運(yùn)行的任務(wù)有定時信號采樣、定時I/O口掃描、定時通信等。信號觸發(fā)運(yùn)行的任務(wù)有中斷信號(硬件信號)觸發(fā)的中斷服務(wù)任務(wù),命令消息信號(軟件信號)觸發(fā)的命令解釋任務(wù)等。另外,數(shù)控系統(tǒng)中,有些任務(wù)還具有運(yùn)行時間短,運(yùn)行頻率高,要求實時性高的特點(diǎn),如信號采樣、數(shù)控機(jī)床中的插補(bǔ)控制等。

2.2 改進(jìn)后的任務(wù)劃分

在改進(jìn)后的嵌入式操作系統(tǒng)中任務(wù)分為兩類:普通任務(wù)和搶占式任務(wù)。普通任務(wù)指通過操作系統(tǒng)調(diào)度器調(diào)度運(yùn)行的任務(wù),調(diào)度方法如圖1所示;搶占式任務(wù)指那些不通過調(diào)度器調(diào)度運(yùn)行,而是在中斷處理中直接運(yùn)行的任務(wù)。下面詳細(xì)說明這兩種任務(wù)。

采用操作系統(tǒng)μC/OS-Ⅱ?qū)崿F(xiàn)數(shù)控執(zhí)行控制器的系統(tǒng)設(shè)計

2.2.1 普通任務(wù)

根據(jù)數(shù)控系統(tǒng)任務(wù)多為周期任務(wù)和信號觸發(fā)任務(wù)這一特點(diǎn),將普通任務(wù)分為兩種:定時運(yùn)行的周期任務(wù)(簡稱周期任務(wù))和信號觸發(fā)運(yùn)行的隨機(jī)任務(wù)(簡稱隨機(jī)任務(wù))。相應(yīng)的,任務(wù)狀態(tài)被劃分為6種:運(yùn)行態(tài)、就緒態(tài)、等待態(tài)、停止態(tài)、掛起態(tài)和中斷態(tài)。圖1為改進(jìn)后的任務(wù)狀態(tài)切換圖。

在這六種狀態(tài)中,運(yùn)行態(tài)、就緒態(tài)和中斷態(tài)對應(yīng)μC/OS-Ⅱ的READY,RUNNING和ISR;掛起態(tài)是任務(wù)在執(zhí)行完成前,因等待某事件或資源而被迫停止運(yùn)行,等待事件或資源到來的狀態(tài);等待態(tài)是周期任務(wù)完成一次運(yùn)行,等待運(yùn)行周期到再次運(yùn)行時的狀態(tài);停止態(tài)是隨機(jī)任務(wù)等待其觸發(fā)信號的狀態(tài)。這里去掉了休眠態(tài),即沒有任務(wù)的刪除,所有的任務(wù)一旦建立,在系統(tǒng)運(yùn)行期間一直存在。這樣的處理是因為在數(shù)控系統(tǒng)應(yīng)用中,所有建立的任務(wù)一定是有用的,即在系統(tǒng)運(yùn)行期間一定會被執(zhí)行,無用的代碼和任務(wù)不會被添加。在μC/OS-Ⅱ中,設(shè)定每個任務(wù)都是一個無限的循環(huán),即任務(wù)函數(shù)永不返回,這樣做是不合適的。該操作系統(tǒng)允許任務(wù)函數(shù)返回,返回后調(diào)用函數(shù)OSTaskEndDeal(),該函數(shù)根據(jù)任務(wù)的類別,把周期任務(wù)放入等待隊列,把隨機(jī)任務(wù)放入停止隊列。

2.2.2 搶占式任務(wù)

搶占式任務(wù)為執(zhí)行時間短且執(zhí)行頻率高于OS系統(tǒng)時鐘頻率(如信號采樣),或?qū)崟r要求高(如數(shù)控機(jī)床中的插補(bǔ)控制)的任務(wù)。調(diào)度任務(wù)時間(主要是任務(wù)切換所花費(fèi)的時間)往往比這類任務(wù)運(yùn)行一次的時間還多,這顯然是不合理的,搶占式任務(wù)正是為解決這種不合理而設(shè)計的。搶占式任務(wù)不通過OS調(diào)度器調(diào)度運(yùn)行,也不采用TCB(任務(wù)控制塊)標(biāo)識它們,而是在它們的中斷觸發(fā)信號到達(dá)時,在中斷中_直接處理,這樣做節(jié)省了調(diào)度、任務(wù)切換的時間。但是,由于搶占式任務(wù)沒有TCB,也就沒有相應(yīng)的任務(wù)堆棧,所以搶占式任務(wù)在使用資源上要特別注意:一定要使用獨(dú)立的資源。這樣既可以使搶占式任務(wù)正常運(yùn)行,又可以避免搶占式任務(wù)對被中斷程序的環(huán)境造成破壞。具體辦法如下:

(1)專用寄存器組。若處理程序中使用了寄存器,則為其分配專用的寄存器組,這樣也省去了保存/恢復(fù)寄存器的時間消耗。

(2)全局變量。因為函數(shù)內(nèi)部的局部變量是分配在堆棧中的,直接處理方式不形成任務(wù),沒有自己的堆棧,如果使用局部變量,其局部變量會分配在被中斷任務(wù)的堆棧內(nèi),所以在該方式下任務(wù)應(yīng)使用全局變量。用戶在設(shè)計搶占式任務(wù)時要有一定限制,否則會影響系統(tǒng)的響應(yīng)時間。具體限制如下:第一,數(shù)量不能太多,最好小于等于3個;第二,必須是執(zhí)行時間短,執(zhí)行頻率高的任務(wù)才能被設(shè)為搶占式任務(wù)。

3 、需要修改的內(nèi)核數(shù)據(jù)和函數(shù)

3.1 任務(wù)控制塊的修改

(1)修改OSTCBDly的含義。在μC/OS-Ⅱ中,OSTCBDly表示任務(wù)延時的時鐘節(jié)拍數(shù),或者任務(wù)掛起時的超時時鐘節(jié)拍數(shù)。如果這個變量為0,則表示任務(wù)不延時,或者表示等待事件發(fā)生的時間沒有限制,修改后,OSTCBDly描述任務(wù)自運(yùn)行的周期數(shù),其計算公式如式(1)所示。若該項為零,任務(wù)為信號觸發(fā)的隨機(jī)任務(wù)。

(2)在TCB增加一項OSTCBDlyD作為任務(wù)自運(yùn)行周期動態(tài)值。

INT16UOSTCBDlyD; /*任務(wù)自運(yùn)行周期動態(tài)值*/其中,OSTCBDlyD是任務(wù)等待運(yùn)行時間的動態(tài)值。若任務(wù)在等待態(tài),其初值為OSTCBD-ly;若任務(wù)為掛起態(tài),其初值為超時限制值。系統(tǒng)時鐘處理函數(shù)OSTimeTick()對OSTCBDlyD減1,當(dāng)OSTCBDlyD小于0時,則將該任務(wù)放入就緒隊列。

(3)增加OSTCBStat的取值。OSTCBStat是任務(wù)的狀態(tài)字。由于增加了停止態(tài)和等待態(tài)兩種任務(wù)狀態(tài),因此需要增加OSTCBStat的取值,具體修改是在文件μCOS_II.H中增加下面信息。

#define OS_STAT_wAIT 0x40 //任務(wù)狀態(tài)字為等待態(tài)

#define OS_STAT_STOP 0x80 //任務(wù)狀態(tài)字為停止態(tài)

3.2 時鐘節(jié)拍函數(shù)的OSTimeTick()修改

通過TCB數(shù)組掃描全部TCB,根據(jù)OSTCBStat的值做不同處理,具體處理如下:

就緒態(tài)的任務(wù),OSTCBDlyD--,若有超時,則進(jìn)行超時處理。

掛起態(tài)的任務(wù),OSTCBDlyD--,若有超時,則將其插入就緒表。

等待態(tài)的任務(wù),OSTCBDlyD--,若到時,則將其加入就緒表。

運(yùn)行態(tài)的任務(wù)和停止態(tài)的任務(wù),不做處理。

3.3 增加函數(shù)OSTaskEndDeal()

當(dāng)前任務(wù)的函數(shù)運(yùn)行完返回時,調(diào)用函數(shù)OSTaskEndDeal(),該函數(shù)完成工作:首先調(diào)用OSTaskStkInit()將該任務(wù)的堆棧初始化;然后判斷任務(wù)是否為最低優(yōu)先級任務(wù),若是,則保持該任務(wù)在就緒態(tài),這樣做的目的是使最低優(yōu)先級任務(wù)始終處于就緒態(tài),就緒表不會為空。若否,則根據(jù)OSTCBCUR→OSTCBDly決定任務(wù)該插入哪個隊列,該值等于零,任務(wù)進(jìn)入停止?fàn)顟B(tài);

不等于零,任務(wù)進(jìn)入等待狀態(tài)。最后,調(diào)用OSStart()選擇新任務(wù)運(yùn)行。

3.4 搶占式任務(wù)的實現(xiàn)

搶占式任務(wù)的設(shè)計需要根據(jù)實際情況做處理,這里以數(shù)控系統(tǒng)中的插補(bǔ)控制為例介紹搶占式任務(wù)的實現(xiàn)。

3.4.1 插補(bǔ)控制任務(wù)的功能

插補(bǔ)控制任務(wù)是根據(jù)加工命令和當(dāng)前點(diǎn)的位置,實時計算各坐標(biāo)軸運(yùn)動的位移和方向。插補(bǔ)時需要用一個定時器作為插補(bǔ)速度的控制,每次定時中斷觸發(fā)一步插補(bǔ)運(yùn)算和輸出,當(dāng)插補(bǔ)到終點(diǎn),定時器停止,插補(bǔ)完成。

3.4.2 插補(bǔ)控制任務(wù)的實現(xiàn)

(1)選擇一個硬件定時器作為插補(bǔ)專用定時器,將插補(bǔ)任務(wù)的代碼放入該硬件定時器的中斷服務(wù)程序中。

(2)為該中斷設(shè)置一組專用的寄存器組,以減少中斷環(huán)境保存和恢復(fù)的時間。

(3)將需要執(zhí)行插補(bǔ)任務(wù)的當(dāng)前位置值和加工命令(如:加工曲線線形、終點(diǎn)值)等信息定義成全局變量,以便與其他任務(wù)實現(xiàn)快速的信息交互。

(4)插補(bǔ)控制任務(wù)的啟動。根據(jù)插補(bǔ)速度設(shè)定定時器初值,初始化插補(bǔ)所用的全局變量,啟動定時器。

4、 基于改進(jìn)后的μC/OS-Ⅱ的數(shù)控機(jī)床執(zhí)行控制器的軟件設(shè)計

數(shù)控機(jī)床系統(tǒng)采用兩級結(jié)構(gòu)。上位機(jī)由專用軟件IPC構(gòu)成,用于實現(xiàn)人機(jī)交互;下位機(jī)由C8051020及其外圍電路的嵌入式執(zhí)行控制器構(gòu)成,負(fù)責(zé)實時、可靠的控制。嵌入式執(zhí)行控制器軟件基于改進(jìn)后的μC/OS-Ⅱ設(shè)計,主要包括下面一些功能:與IPC的通信(發(fā)送任務(wù)和接受任務(wù))、命令解釋(命令解釋任務(wù))和命令執(zhí)行(加工監(jiān)控任務(wù)、插補(bǔ)計算任務(wù)、間隙電壓檢測和限位開關(guān)狀態(tài)檢測任務(wù))。其中,通信有發(fā)送和接收兩方面內(nèi)容;命令解釋時,對開關(guān)量控制命令直接執(zhí)行;命令執(zhí)行中需要進(jìn)行插補(bǔ)計算、檢測間隙電壓和限位開關(guān)狀態(tài)及加工監(jiān)測。各任務(wù)具體設(shè)計如表1所示。

采用操作系統(tǒng)μC/OS-Ⅱ?qū)崿F(xiàn)數(shù)控執(zhí)行控制器的系統(tǒng)設(shè)計

5 、結(jié)語

本文根據(jù)數(shù)控系統(tǒng)任務(wù)特點(diǎn),對μC/OS-Ⅱ的任務(wù)劃分和任務(wù)調(diào)度做了改進(jìn),更加方便數(shù)控系統(tǒng)任務(wù)的在μC/OS-Ⅱ上的添加,同時也便于μC/OS-Ⅱ?qū)Σ煌蝿?wù)的管理。搶占式任務(wù)減少了任務(wù)切換花費(fèi)的時間,并提高了硬件資源的利用率,但應(yīng)注意搶占式任務(wù)的數(shù)量不能過多,最好小于等于3個,否則會影響OS正常運(yùn)行。改進(jìn)后的內(nèi)核已應(yīng)用到了實際項目中,系統(tǒng)穩(wěn)定可靠。

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17113

    瀏覽量

    184355
  • 嵌入式
    +關(guān)注

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317657
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7152

    瀏覽量

    125610
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    uC/OS-Ⅱ的主要特點(diǎn)

    公開源代碼,系統(tǒng)透明,很容易就能把操作系統(tǒng)移植到各個不同的硬件平臺上。可移植性強(qiáng),uC/OS-Ⅱ絕大部分源碼是用ANSI C寫的,可移植性 (Portable)較強(qiáng)。而與微處理
    發(fā)表于 06-07 14:12

    如何將嵌入式操作系統(tǒng)μCOS-Ⅱ面向數(shù)控系統(tǒng)改進(jìn)?

    嵌入式操作系統(tǒng)μCOS-Ⅱ是一個可裁剪、源碼開放、結(jié)構(gòu)小巧、搶先式的實時多任務(wù)內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高,占用空間小,
    發(fā)表于 10-30 07:42

    嵌入式操作系統(tǒng)μCOS-Ⅱ在數(shù)控系統(tǒng)應(yīng)用怎么改進(jìn)?

    嵌入式操作系統(tǒng)μCOS-Ⅱ是一個可裁剪、源碼開放、結(jié)構(gòu)小巧、搶先式的實時多任務(wù)內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高,占用空間小,
    發(fā)表于 03-11 06:47

    如何采用FPGA實現(xiàn)μC/OS-Ⅱ任務(wù)管理模塊?

    本文針對傳統(tǒng)實時操作系統(tǒng)內(nèi)核占用系統(tǒng)資源、影響系統(tǒng)實時性的問題,提出了用單獨(dú)的硬件電路實現(xiàn)實時操作系統(tǒng)中的
    發(fā)表于 04-26 06:14

    嵌入式實時操作系統(tǒng)μc/os-Ⅱ?qū)W習(xí)心得分享

    學(xué)習(xí)μc/os-操作系統(tǒng)一周時間,本來信心滿滿的打算一周搞定μc/os-Ⅱ嵌入式實時操作系統(tǒng),
    發(fā)表于 12-14 08:09

    μC/OS-操作系統(tǒng)筆記總結(jié)

    μC/OS-操作系統(tǒng)筆記總結(jié)(總)μC/OS-操作系統(tǒng)筆記(二)------中斷和時鐘μ
    發(fā)表于 12-16 07:37

    嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在ARM處理上的實現(xiàn)

    嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在ARM處理上的實現(xiàn),講的非常詳細(xì)哦。
    發(fā)表于 03-28 09:49 ?17次下載

    UC/OS-操作系統(tǒng)在ARM處理上的移植

    UC/OS-操作系統(tǒng)在ARM處理上的移植
    發(fā)表于 03-28 09:51 ?27次下載

    基于uC OS和雙MCU的數(shù)控系統(tǒng)研制

    詳細(xì)介紹了μC/OS-II 實時操作系統(tǒng)C8051F124 單片機(jī)上的移植,并設(shè)計了一個基于UC/OS- II 實時
    發(fā)表于 09-03 15:30 ?16次下載

    采用μC/OS-Ⅱ的數(shù)據(jù)采集系統(tǒng)設(shè)計與應(yīng)用

    采用μC/OS-Ⅱ的數(shù)據(jù)采集系統(tǒng)設(shè)計與應(yīng)用    摘要:通用串行總線因 (USB)具有傳輸速度快、即插即用、易于擴(kuò)展、占用系統(tǒng)
    發(fā)表于 03-04 10:46 ?965次閱讀
    <b class='flag-5'>采用</b>μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-</b>Ⅱ的數(shù)據(jù)采集<b class='flag-5'>系統(tǒng)</b>設(shè)計與應(yīng)用

    基于μCOS-Ⅱ的嵌入式洗碗機(jī)控制器的設(shè)計與實現(xiàn)

    關(guān)于嵌入式的 基于μCOS-Ⅱ的嵌入式洗碗機(jī)控制器的設(shè)計與實現(xiàn) 的學(xué)術(shù)論文
    發(fā)表于 04-20 09:58 ?12次下載

    淺談嵌入式操作系統(tǒng)μC/OS-Ⅱ面向數(shù)控系統(tǒng)的改進(jìn)

    嵌入式操作系統(tǒng)COS-Ⅱ是一個可裁剪、源碼開放、結(jié)構(gòu)小巧、搶先式的實時多任務(wù)內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高,占用空間小,可
    發(fā)表于 10-27 15:34 ?1次下載
    淺談嵌入式<b class='flag-5'>操作系統(tǒng)</b>μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-</b>Ⅱ面向<b class='flag-5'>數(shù)控系統(tǒng)</b>的改進(jìn)

    嵌入式操作系統(tǒng)μCOS-Ⅱ面向數(shù)控系統(tǒng)的改進(jìn)

    嵌入式操作系統(tǒng)COS-Ⅱ是一個可裁剪、源碼開放、結(jié)構(gòu)小巧、搶先式的實時多任務(wù)內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高,占用空間小,可
    發(fā)表于 12-01 06:05 ?637次閱讀
     嵌入式<b class='flag-5'>操作系統(tǒng)</b>μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-</b>Ⅱ面向<b class='flag-5'>數(shù)控系統(tǒng)</b>的改進(jìn)

    米爾科技嵌入式實時操作系統(tǒng)介紹

    《嵌入式實時操作系統(tǒng)μC/OS-Ⅱ經(jīng)典實例:基于STM32處理》緊緊圍繞“μC/OS-
    的頭像 發(fā)表于 11-25 09:02 ?2639次閱讀
    米爾科技嵌入式實時<b class='flag-5'>操作系統(tǒng)</b>介紹

    嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在LPC1788上的移植及應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在LPC1788上的移植及應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 10-23 14:07 ?0次下載
    嵌入式實時<b class='flag-5'>操作系統(tǒng)</b>μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-</b>Ⅱ在LPC1788上的移植及應(yīng)用