www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]1. 引言隨著計算機的不斷發(fā)展,越來越多的,優(yōu)秀的編程思想被提出來,并付諸實踐。在某些方面已出現(xiàn)了根本性的變革。另一方面,單片機自從80年代誕生以來,便以飛快的速度發(fā)展起來,但由于其物理條件的限制,單片機

1. 引言

隨著計算機的不斷發(fā)展,越來越多的,優(yōu)秀的編程思想被提出來,并付諸實踐。在某些方面已出現(xiàn)了根本性的變革。另一方面,單片機自從80年代誕生以來,便以飛快的速度發(fā)展起來,但由于其物理條件的限制,單片機控制系統(tǒng)的編程仍然局限于經(jīng)驗的模式,很少應用那些新提出的高級語言的編程思想。如果將不斷發(fā)展的編程思想與廣泛應用的單片機控制系統(tǒng)結合起來,一定會大大促進單片機控制系統(tǒng)的進一步發(fā)展。使其更廣泛的應用于各個方面。

在下面這個具體項目中,實際情況對系統(tǒng)有一些比較苛刻的要求。按照一般的單線程的控制方法已經(jīng)無法滿足實際需求。具體情況如表1(表1所示為生化分析儀的設計中對單片機系統(tǒng)的要求的一部分)


表1

表1所示只占了整個系統(tǒng)要求的1/6。下面對表1中的幾項內(nèi)容加以說明。

對象M1開始動作17操作,即首先步進電機M1(正向)轉(zhuǎn)動查找光電開關信號PS1;查到后執(zhí)行兩次‘過程1‘。過程1:向電機打出30拍。由表1可知該動作從C  段執(zhí)行到  K段停止;

對象M2即步進電機M2等對象M1執(zhí)行完動作17后執(zhí)行動作23等。對象M3和對象M4 則在開始時同時啟動,分別執(zhí)行各自的動作。各個對象之間有的獨立,有的相互關聯(lián)。

整個項目需要控制16臺步進電機,21個電磁閥,3個泵,1個直流電機,系統(tǒng)要求全部執(zhí)行時間為6秒鐘,系統(tǒng)要求步進電機以其最快的速度 -----40us—60us打拍。如果以單線程的方式編程讓一臺電機轉(zhuǎn)到位之后,再轉(zhuǎn)其他電機。這樣16臺電機打一拍就需要640us---960us 已經(jīng)無法滿足系統(tǒng)要求。這就需要使單片機并行控制多臺電機運轉(zhuǎn)。這種以并行的方式驅(qū)動各個電機同時啟動可以在最短的時間將各個電機同時到位。在轉(zhuǎn)動電機的同時還需要檢測一些開關量已確定電機的位置。為了實現(xiàn)這個目的。下面提供第一種解決方案(此方案是常用的方案之一,但作者并不推薦這個方案。因為這個方案成本太高。)。

方案一:  硬件實現(xiàn)。

我們可以用多個CPU,將各個電機的控制分到不同的CPU中執(zhí)行,并可將不互相沖突的電機控制過程放到一個CPU中,其結構如圖1


圖1多cpu實現(xiàn)方案結構圖

如圖所示系統(tǒng)中設定一個主CPU,其功能為與計算機通訊,并將計算機下達的指令分發(fā)給相應的從CPU,更主要的是主CPU將監(jiān)控整個并行控制的運作。因為各個控制過程之間有的彼此關聯(lián),所以主CPU不僅要控制各個線程的執(zhí)行,還要兼顧線程之間的通訊。以表1為例,具體作法如下:

1.開始后,主CPU發(fā)給從CPU1一個信號,從CPU啟動對象M1進行動作17,并由從CPU向主CPU返回一個信號。主CPU收到信號后,置起標志1。當對象M1進行完動作17后,從CPU向主CPU發(fā)出信號,CPU將標志1清掉。

2.開始后,主CPU發(fā)給從M2一個信號,從CPU啟動對象M2。從CPU向主CPU不斷查詢標志1。當標志1被清掉后,從//控制對象2執(zhí)行動作23。

3.開始后,主CPU發(fā)給從CPU一個信號,從CPU啟動對象M3和對象M4。執(zhí)行動作25,然后開電磁閥6,然后延時1秒,關電磁閥6,執(zhí)行動作24,然后執(zhí)行動作26,等////1的動作17完成后,啟動步進電機20,執(zhí)行動作25,等等。

如上所說, 主CPU設置了多個標志位用以跟蹤各個線程的運行情況。并用這些標志位承擔了各個相關線程之間的通訊。凡是線程運行到與其他線程相關的地方都會在主CPU 內(nèi)設置一個標志位以供其它相關線程查詢。而那些不相關的線程可以完全獨立運行。相關線程除了需檢測標志的部分,其他部分也可獨立運行。

這種多CPU控制的作法實現(xiàn)了單片機的并行運作方式。但多CPU的控制方案成本幾乎是成倍提高,而且在硬件的基礎上實現(xiàn)的多CPU之間的通訊花費時間稍長。并且容易有干擾。

方案二(作者推薦): 另一種實現(xiàn)的方法是在軟件的層面上模擬多cpu的運作。從而實現(xiàn)單片機的偽并行處理.這種實現(xiàn)方法借鑒了計算機實現(xiàn)多線程的編程方法。

多線程編程編程思想,即:同時給CPU分配了幾個任務或線程。當然計算機 CPU實際上不可能同一時間做幾件事,而是把時間分到不同的線程,使每個線程都有點進展。如果一個線程無法進行,比如線程要求的鍵盤輸入尚未取得,則轉(zhuǎn)入另一個線程的工作。通常,CPU在線程間的切換非常迅速,使人們感覺好象所有的線程是同時進行的。

多線程編程中有一個很重要的環(huán)節(jié):各個線程之間的通訊與控制問題

在多線程編程中,每個線程都用編碼提供線程的行為,用數(shù)據(jù)供給編碼操作。多個線程同時處理同一編碼和數(shù)據(jù),不同線程可能各有不同的編碼和數(shù)據(jù)。事實上,編碼和數(shù)據(jù)部分是相當獨立的,需要時即可向線程提供。因此經(jīng)常是幾個線程使用同一段編碼和數(shù)據(jù)這就會出現(xiàn)下面的情況

當一個線程在調(diào)用數(shù)據(jù)時,另一個線程可能正在修改這些數(shù)據(jù)。則前一個線程所調(diào)用的數(shù)據(jù)出現(xiàn)了不確定性。這會影響整個運行結果。為了避免這個問題,多線程編程中,各個線程之間通訊和控制尤為重要。在將多線程的思想向單片機控制系統(tǒng)移植時,這點要非常注意。因為系統(tǒng)多線程運作的實現(xiàn)從其最基本的層面看仍然是單線程的操作;他的實現(xiàn)歸根結底是利用了計算機的高速度。它將系統(tǒng)運行的基準時間分成了許多時間片,將各個時間片分給不同的線程,如此一來在一個基準時間內(nèi)各個線程全都向前行進了一步,然后運行下一個基準時間,周而復始。這樣在用戶層的角度看來,各個線程是同步進行的。只要速度夠塊,時間片的劃分不會影響用戶層面上的應用,這樣就可以實現(xiàn)多線程的操作。近年來單片機速度的大幅度提升,這就使多線程思想向單片機控制系統(tǒng)的移植成為可能。

在整個項目中全部的輸入信號共39個;同時并行查詢的對象最多時有61個系統(tǒng)要求以步進電機最快的速度打拍。時間約40us---60us,為了保證步進電機打拍的穩(wěn)定性和靈活性。我選用了DSP內(nèi)部的一個定時器,定時時間為打拍時間的1/3—1/5。設定為10us中斷。這個時間為整個系統(tǒng)運行的基準時間。在這段時間內(nèi),系統(tǒng)要查詢一遍所有對象并向相應的步進電機打拍。在一些線程中還需要采樣多次。換句話說,在這個系統(tǒng)時間內(nèi)。所有線程都要向前行進一步。

就像計算機一樣,將這個基準時間分為多個時間片。將各個時間片分給不同的線程,在這種情況下,各個線程的執(zhí)行是間斷的。這與用硬件模擬多線程有本質(zhì)的不同。像這樣既要應用各線程執(zhí)行的間斷性,又要保證各線程運行的連續(xù)性。這對軟件的設計有了很高的要求,這同時也是單片機控制系統(tǒng)用軟件模擬多線程方法中的難點之一,為了解決這個問題,可在個線程自帶線程進度指示器用來標志線程的運行進度,即用一個變量記載線程的每一步;如圖2


圖2

系統(tǒng)設定線程進度指示器用來指引線程的連續(xù)運行,同時在一個中斷中輪詢所有對象。其編程結構大致如下:

時鐘中斷:
    線程1:
         線程進度標志:
           1:    ;
           2:    ;
           3 ;
       
        線程2:
   線程進度標志:
         1:    ;
         2:    ;
        。。。。。。。。

用軟件模擬多線程還有很多要注意的地方。

如果選用20兆的DSP來實現(xiàn)控制功能,步進電機最快的打拍速度為40us---60us,則有下面的計算結果,,取1/4,即10us產(chǎn)生一中斷,在中斷里查詢61個對象。20兆DSP單條指令的執(zhí)行時間大約為50ns在一次中斷內(nèi)可執(zhí)行的語句數(shù)=10us/50ns=200條,如果在分給61個對象,每個對象所分得的指令數(shù)僅為3條,已經(jīng)不夠用了,即使選擇60兆的DSP,說分指令也只是9條,若以犧牲打拍的靈活性為代價,以60us為已中斷。則每個對象所分得的指令數(shù)僅為36條勉強夠用,如果所控制的對象再多的話,軟件編程的靈活性將進一步被壓縮,

下面提出了一種擴展的多線程模擬方法,如圖3


圖3   

s1,s2為系統(tǒng)運行的基準時間,M1.1 為第一對象組中第一對象。M1.2 為第一對象組中第二對象。

這種擴展的多線程模擬方法仍將系統(tǒng)時間化成多個時間片,與上面不同的是有幾個線程(對象)組成一個線程組,共享同一個時間片,例如:當系統(tǒng)運行到第一次基準時間的第一個時間片時,由共享時間片的第一個線程占用,當系統(tǒng)運行到第2次基準時間的第1個時間片時,由共享時間片的第2個線程占用,如此類推,這種擴展模式可以靈活的掌控線程與所用時間的比例,但是這是以犧牲運行時間為代價的。

結論:本文對單片機控制系統(tǒng)的編程思想作出了擴展,將本屬于計算機高級語言編程思想的多線程編程移植到單片機控制系統(tǒng)中。這種方法使單片機控制系統(tǒng)可工作于對系統(tǒng)運行速度要求很高的系統(tǒng)中,并且對其他的高級語言編程思想,如對事件句柄的處理等向單片機控制系統(tǒng)移植起了示范作用。

參考文獻
  [1]柳永新主編。Windows c 程序設計入門與提高。清華大學出版社,1999,6。
  [2]李朝青主編。單片機原理及接口技術,1994。

 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關鍵。

關鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅(qū)動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關鍵字: LED 驅(qū)動電源 開關電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅(qū)動電源
關閉