freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于嵌入式的智能電梯控制系統(tǒng)的設(shè)計與實現(xiàn)(編輯修改稿)

2025-07-24 20:27 本頁面
 

【文章內(nèi)容簡介】 11倍后送入DSP的AD采樣通道,DSP將實際中的模擬量通過AD模塊轉(zhuǎn)換成相應(yīng)的數(shù)字量,最后通過計算,判斷獲得希望的控制模式。由于DSP的管腳耐壓值有限,電壓經(jīng)運算放大器放大后,可能超出正常范圍,所以在DSP的管腳輸入端接有二極管限幅電路,使得當(dāng)DSP管腳處電壓輸入過大時被有效的限制在允許的范圍內(nèi)。圖 313 電流檢測模塊 故障報警模塊當(dāng)系統(tǒng)出項故障時,DSP在完成系統(tǒng)停機保護的同時,輸出GPIO端口將發(fā)出高電平,Q2三極管導(dǎo)通,故障燈與響鈴?fù)瑫r得電,發(fā)出聲光報警提示用戶。如圖313所示。圖 314 故障報警模塊 編程與仿真接口可以通過串行接口RS232進行通訊及仿真,方便了嵌入式程序的編輯與調(diào)試。如圖315所示。圖 315 編程及仿真接口 第4章 系統(tǒng)程序設(shè)計 嵌入式實時操作系統(tǒng)1. 嵌入式實時操作系統(tǒng)概念嵌入式實時操作系統(tǒng)(Embedded RealTime Operating System)是一種實時的、支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)(包括硬、軟件系統(tǒng))極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等。嵌入式操作系統(tǒng)具有通用操作系統(tǒng)的基本特點,如能夠有效管理越來越復(fù)雜的系統(tǒng)資源。能夠把硬件虛擬化,使得開發(fā)人員從繁忙的驅(qū)動程序移植和維護中解脫出來,能夠提供庫函數(shù)、驅(qū)動程序、工具集以及應(yīng)用程序。嵌入式實時操作系統(tǒng)負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度作業(yè),控制、協(xié)調(diào)并發(fā)活動,它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過裝卸某些模塊來達(dá)到系統(tǒng)所要求的功能[13]。2. 嵌入式實時操作系統(tǒng)的開發(fā)方式由于嵌入式應(yīng)用軟件的特殊性,往往要求應(yīng)用程序設(shè)計者具有一定的實時操作系統(tǒng)的專門知識,能合理地劃分任務(wù),合理地配置系統(tǒng)以及目標(biāo)聯(lián)機的調(diào)試。因此,要設(shè)計實現(xiàn)一個高性能的實時應(yīng)用軟件,需有強有力的交叉開發(fā)工具系統(tǒng)的支持。開發(fā)平臺稱為宿主機,應(yīng)用系統(tǒng)稱作目標(biāo)機。宿主機與目標(biāo)機可采用相同或不相同的機型.。,在這種獨立的實時軟件開發(fā)系統(tǒng)上,應(yīng)配備完整的實時軟件開發(fā)的工具,如高級語言、在線調(diào)試器和在線仿真器等。宿主機和目標(biāo)機之間通過網(wǎng)絡(luò)、串口或其它方式相連,一般來說這個網(wǎng)絡(luò)和串口是目標(biāo)機的一部分,要占用目標(biāo)機用戶的部分資源,用戶必須給操作系統(tǒng)提供相應(yīng)的驅(qū)動程序。在進行應(yīng)用軟件調(diào)試之前必須要保證目標(biāo)機的硬件系統(tǒng)能夠正常運行,宿主機的應(yīng)用程序代碼可以下載到目標(biāo)機中去,而且有關(guān)設(shè)備的驅(qū)動程序需調(diào)試正確。因此,嵌入式實時軟件開發(fā)過程較為復(fù)雜[14]。RTOS對于開發(fā)單位和開發(fā)者個人來說也是一種提高。引入RTOS的開發(fā)單位,相當(dāng)于引入了一套行業(yè)中廣泛采用的嵌入式系統(tǒng)應(yīng)用程序開發(fā)標(biāo)準(zhǔn),使開發(fā)管理更簡易、有效?;赗TOS和C語言的開發(fā),具有良好的可繼承性,在應(yīng)用程序、處理器升級以及更換處理器類型時,現(xiàn)存的軟件大部分可以不經(jīng)修改地移植過來(據(jù)專家預(yù)測,優(yōu)秀RTOS上跨處理器平臺的程序移植只需要修改l4%的內(nèi)容)。對于開發(fā)人員來說,則相當(dāng)于在程序設(shè)計中采用一種標(biāo)準(zhǔn)化的思維方式,提高知識創(chuàng)造的效率。同時因為具有類似的思路,可以更快地理解同行其它人員的創(chuàng)造成果[15]。3. 嵌入式實時操作系統(tǒng)內(nèi)核嵌入式實時操作系統(tǒng)中最關(guān)鍵的部分是實時多任務(wù)內(nèi)核。它主要實現(xiàn)任務(wù)管理、定時器管理、存儲器管理、任務(wù)間通信與同步、中斷管理等功能。如何實現(xiàn)一個效率高,體積小,移植功能強大,易于定制的實時操作系統(tǒng)內(nèi)核是開發(fā)嵌入式操作系統(tǒng)的關(guān)鍵問題[16]。 μC/OS—Ⅱ的基本功能介紹本設(shè)計將重點運用μC/OS—Ⅱ嵌入式實時操作系統(tǒng)作為軟件開發(fā)平臺,進行應(yīng)用系統(tǒng)軟件的設(shè)計。1. μC/OS—Ⅱ的初始化和啟動在調(diào)用μC/OS—Ⅱ的其他服務(wù)之前,μC/OS—Ⅱ總要求用戶首先調(diào)用系統(tǒng)初始化函數(shù)OSInit(),完成對μC/OS—Ⅱ中一些變量和數(shù)據(jù)結(jié)構(gòu)的初始化。μC/OS—Ⅱ還初始化了4個空數(shù)據(jù)結(jié)構(gòu)緩沖區(qū)。每個緩沖區(qū)都是單向鏈表,允許μC/OS—Ⅱ從緩沖區(qū)迅速得到或釋放一個其中的元素。μC/OS—Ⅱ安排總的系統(tǒng)任務(wù)數(shù)OS_N_SYS_TASKS,控制塊OSTCB的數(shù)目也就自動確定了。當(dāng)然,包括組合結(jié)構(gòu)的任務(wù)控制塊分配給空閑任務(wù)和統(tǒng)計任務(wù)。多任務(wù)的啟動是用戶通過調(diào)用OSStart()實現(xiàn)的。然而,啟動μC/OS—Ⅱ前,用戶至少要建立一個應(yīng)用任務(wù)。當(dāng)調(diào)用OSStart()時,OSStart()從任務(wù)就緒表中找出那個用戶建立的優(yōu)先級最高任務(wù)的任務(wù)控制塊。然后,OSStart()調(diào)用最高優(yōu)先級就緒任務(wù)啟動函數(shù)OSStartHighRdy(),這個文件與選擇的微處理器有關(guān)。實質(zhì)上,函數(shù)OSStartHighRdy()是將任務(wù)棧中保存的值彈回到CPU寄存器中,然后執(zhí)行一條中斷返回指令,中斷返回指令強制執(zhí)行該任務(wù)代碼。注意,OSStartHighRdy ()將永遠(yuǎn)不會返回到OSStart()。2. 任務(wù)管理在μC/OS—Ⅱ中,任務(wù)通常是一個無限的循環(huán),任務(wù)是絕對不會返回的。故返回參數(shù)必須定義成void。協(xié)μC/OS—Ⅱ可管理多達(dá)64個任務(wù),但μC/OS—Ⅱ保留了優(yōu)先級為0、2的任務(wù)??晒┯脩羰褂玫挠卸噙_(dá)56個應(yīng)用任務(wù)。必須給每個任務(wù)賦以不同的優(yōu)先級,μC/OS—Ⅱ初始化時,最低優(yōu)先級總是被賦給空閑任務(wù)。為了使μC/OS—Ⅱ能夠管理用戶任務(wù),用戶必須在建立一個任務(wù)的時候,將任務(wù)的起始地址與其他參數(shù)一起傳給OSTaskCreate()或OSTaskCreateExt()函數(shù)。每個任務(wù)的就緒標(biāo)志都放在就緒表(ready1ist)中,就緒表中有兩個變量OSRdyGrp和OSRdyTbl[]。在OSRdyGrp中,任務(wù)按優(yōu)先級分組,8個任務(wù)即為一組。OSRdyGrp中的每一位表示8組任務(wù)中每一組中是否有進入就緒狀態(tài)的任務(wù),任務(wù)進入就緒態(tài),就緒表OSRdyTbl[]中相應(yīng)元素的相應(yīng)位也置位。在μC/OS—Ⅱ中,確定該哪個任務(wù)運行的工作是由調(diào)度器(scheduler)完成的。任務(wù)級的調(diào)度是由函數(shù)OSSched()完成的。任務(wù)切換很簡單,將被掛起任務(wù)的微處理器存儲器推入堆棧,然后將較高優(yōu)先級的任務(wù)的寄存器值從棧中恢復(fù)到寄存器中。OSSched()的所有代碼都屬于臨界區(qū)代碼。在尋找進入就緒態(tài)的最高優(yōu)先級的任務(wù)的過程中,為防止中斷服務(wù)程序把一個或幾個任務(wù)的就緒位置位,中斷是被關(guān)掉的。3. 常用的任務(wù)管理函數(shù)OSTaskDel()用于將任務(wù)返回并處于休眠態(tài),其代碼不再被μC/OS—Ⅱ調(diào)用,也就是刪除任務(wù)。刪除空閑任務(wù)和在中斷服務(wù)子程序中(ISR)刪除一個任務(wù)是不允許的,但可以刪除統(tǒng)計任務(wù)??赏ㄟ^指定OS_PRIOSELF參數(shù)來刪除自己。OSTaskChangePrio()用來改變建立任務(wù)的時候分配給任務(wù)的優(yōu)先級。用戶需要指定任務(wù)當(dāng)前的優(yōu)先級和新的優(yōu)先級。OSTasksuspend()用來掛起任務(wù)。如果被掛起的任務(wù)同時也在等待延時的期滿,則掛起操作需要被取消,任務(wù)繼續(xù)等待延時期滿,并轉(zhuǎn)入就緒態(tài)。任務(wù)可掛起自己或其他任務(wù),但必須確保不是在掛起優(yōu)先級是無效的任務(wù)或空閑任務(wù)。OSTaskResume()用于恢復(fù)被掛起的任務(wù)。OSTaskResume()首先要確保被恢復(fù)的任務(wù)不是空閑任務(wù),這個測試也是在恢復(fù)優(yōu)先級為OS_RIO_SELF的任務(wù)。接著,檢查要恢復(fù)的任務(wù)是否存在,是否是被掛起的。OSTaskQuery()用來獲得自身或其他應(yīng)用任務(wù)的信息。OSTaskQuery()獲得的是對應(yīng)任務(wù)的OS_TCB中內(nèi)容的拷貝。4. 時間管理μC/OS—Ⅱ一日的時鐘節(jié)拍μC/OS—Ⅱ需要用戶提供周期性信號源,用于實現(xiàn)延時和確認(rèn)超時。時鐘節(jié)拍的實際頻率取決于用戶應(yīng)用程序的精度。時鐘節(jié)拍源可以采用嵌入式處理器的硬件定時器。μC/OS—Ⅱ中的時鐘節(jié)拍服務(wù)是通過在中斷子程序中調(diào)用OSTimeTick()實現(xiàn)的。時鐘節(jié)拍中斷服務(wù)子程序的代碼必須用匯編語言編寫。OSTimeTiekHook()開始,這個外連函數(shù)可以將時鐘節(jié)拍函數(shù)OSTimeTiek()予以擴展。OSTiIneTiok()中大量工作是給每個用戶任務(wù)控制塊OS_TCB中的時間延時項OSTCBDly減1(該項不為零時)。OSTimeTiek()從OSTCBList開始,沿著OS_TCB鏈表做,一直到空閑任務(wù)。當(dāng)某個任務(wù)的任務(wù)控制塊中的時間延時項OSTCBDly減到了零,這個任務(wù)就進入就緒態(tài)。被任務(wù)掛起函數(shù)OSTasksuspend()掛起的任務(wù)則不會進入就緒態(tài)。OSTimeTiek()的執(zhí)行時間直接與應(yīng)用程序中建立的任務(wù)數(shù)成正比。5. 郵箱郵箱是協(xié)μC/OS—Ⅱ中一種通信機制,它可使一個任務(wù)或者中斷服務(wù)子程向另一個任務(wù)發(fā)送一個指針型變量。該指針指向一個包含了特定“消息”的數(shù)據(jù)結(jié)構(gòu)。要在μC/OS—Ⅱ中使用郵箱。使用郵箱前,必須先建立該郵箱,并指定指針初始值。OS_M如果郵箱用來通知一個事件的發(fā)生,就要初始化該郵箱為NULL。如果郵箱用來共享某些資源,就要初始化該郵箱為一個非NULL的指針。6. μC/OS—Ⅱ的中斷處理下面我們來了解一下在協(xié)μC/OS—Ⅱ中是如何處理中斷的。在用戶中斷服務(wù)子程序中,用戶代碼應(yīng)該將全部CPU寄存器推入當(dāng)前任務(wù)棧。μC/OS—Ⅱ需要知道用戶在做中斷服務(wù),故用戶應(yīng)該調(diào)用OSIntEnter(),或者將全局變量OSIntNesting直接加1,這兩種方法的選擇取決于用戶的微處理器。因為,如果用戶使用的微處理器有存儲器直接加1指令,用將全局變量OSIntNesting直接加1的方法比調(diào)用OSIntEnter()快得多。但如果用戶使用的微處理器沒有這樣的指令,就必須先將OSIntNesting讀入寄存器,再將寄存器加l,然后再寫回到變量OSIntNesting中去,這種情況下調(diào)用OSIntEnter()更簡單。要當(dāng)心的是,有些情況下,從OSIntEnter()返回時,會把中斷開了。這時,在調(diào)用OS1ntEnter()前要先清中斷源,否則,中斷會連續(xù)反復(fù)發(fā)生,程序就會崩潰。μC/OS—Ⅱ允許中斷嵌套,因為μC/OS—Ⅱ跟蹤嵌套層數(shù)OSIntNesting。然而,為了允許中斷嵌套,在多數(shù)情況下,用戶應(yīng)在開中斷前先清中斷源。調(diào)用脫離中斷函數(shù)OS1ntExit()標(biāo)志中斷服務(wù)子程序的終結(jié), OSIntExit()將中斷嵌套層數(shù)計數(shù)器減1。當(dāng)中斷嵌套層數(shù)計數(shù)器減到O時,所有中斷就都完成了,此時μC/OS—Ⅱ要判斷有沒有優(yōu)先級較高的任務(wù)被中斷服務(wù)子程序喚醒了。如果有,μC/OS—Ⅱ就返回到那個高優(yōu)先級的任務(wù), OSIntExit()返回到調(diào)用點,此時OSIntExit()將占用較長的運行時間。保存的寄存器的值是在這個時候恢復(fù)的,然后是執(zhí)行中斷返回指令。注意,如果調(diào)度被禁止了,μC/OS—Ⅱ?qū)⒈环祷氐奖恢袛嗔说娜蝿?wù)。用戶中斷服務(wù)中做的要盡可能少,要把大部分工作留給任務(wù)做。如果需要做任務(wù)切換,OSIntExit()將調(diào)用OSIntctxsw()[17]。 μC/OS—Ⅱ?qū)崿F(xiàn)對智能電梯控制系統(tǒng)的管理主控制器在硬件設(shè)計上要求嵌入式微處理器及外圍邏輯、驅(qū)動和接口電路具有快速處理、高度集成和抗干擾的性能。在軟件設(shè)計上原來采用的“前后臺系統(tǒng)”的編程方式實時性較差,對那些實時性要求高的任務(wù)不可能立刻得到處理,最壞情況下的任務(wù)的響應(yīng)時間取決于整個后臺循環(huán)的執(zhí)行時間,因為循環(huán)一圈的執(zhí)行時間不是常數(shù),程序經(jīng)過某一點的準(zhǔn)確時間也就不能確定。程序修改了,循環(huán)時序也會受影響。而且在流程的任何一處因某種意外不能正常工作,整個系統(tǒng)就會“死機”[18]??紤]到這些情況,有必要在電梯控制系統(tǒng)中引入嵌入式實時操作系統(tǒng)作為軟件開發(fā)平臺,本文選用的嵌入式實時操作系統(tǒng)是源碼公開、成熟的協(xié)μC/OS—Ⅱ。在電梯控制系統(tǒng)中使用嵌入式實時操作系統(tǒng)協(xié)μC/OS—Ⅱ,可以將應(yīng)用程序分解成多任務(wù),簡化了應(yīng)用系統(tǒng)軟件的設(shè)計。使得電梯控制系統(tǒng)的實時性得到保證,而且良好的多任務(wù)設(shè)計,有助于提高系統(tǒng)的穩(wěn)定性與可靠性。下面將介紹電梯主控制器各個功能模塊及如何采用μC/OS—Ⅱ?qū)Ω鱾€功能模塊的管理[19]。 主程序流程電梯控制系統(tǒng)控制策略與方法以流程圖表示,如圖41所示。圖41電梯控制系統(tǒng)主程序流程圖 初始化模塊初始化模塊是電梯控制系統(tǒng)初始運行部分,負(fù)責(zé)初始化系統(tǒng)的各種參數(shù),根據(jù)情況把電梯設(shè)置成一種初始上電運行狀態(tài)。初始化模塊包括:(1) DSP系統(tǒng)初始化函數(shù)SYS_INIT()。完成DSP系統(tǒng)的配置寄存器和接口模塊時鐘控制。主要包括系統(tǒng)控制和狀態(tài)寄存器、中斷優(yōu)先級和中斷向量表、外設(shè)中斷擴展控制器、中斷向量、CPU中斷寄存器、外設(shè)中斷寄存器等。(2) 定時器初始化函數(shù)EVB_init()。DSP有四個通用定時器,選擇定時器3做為整個軟件程序定時的基準(zhǔn)。完成定時器內(nèi)外時鐘的選擇,設(shè)置可編程定標(biāo)器的初值,選擇計數(shù)時鐘頻率,計數(shù)模式等,并向操作系統(tǒng)時鐘節(jié)拍函數(shù)OSTimeTick()提供基本計時單位。完成初始化各個定時標(biāo)志的初始化的工作。(3) 光電編碼器初始化函數(shù)EVA_init()。選擇定時器2作為光電編碼器輸入脈沖處理的基本時鐘信號。完成正交編碼信號計數(shù)模式,計數(shù)方向等。(4) I/O初始化函數(shù)I幾init()。在電梯上電的的初始狀態(tài),系統(tǒng)的I/O狀態(tài)是隨機的,這樣對電梯造成的極大的危險。I/O初始化主要是根據(jù)初始情況設(shè)置I/O口的輸入輸出狀態(tài),是電梯達(dá)到一個比較穩(wěn)定、安全的狀態(tài)。(5) 復(fù)雜可編程邏輯器件(CPLD)接口初始化函數(shù)Cpld_Init()。數(shù)字信號處理器(DSP)通過數(shù)據(jù)總線向CPLD輸出初始狀態(tài)數(shù)據(jù),完成CPLD初始化。(6) CAN控制器的初始化CAN_init()。對DSp320LF2407中的CAN控制段中的寄存器進行初始化,設(shè)置CAN控制器的波特率、各個郵箱的功,接收屏蔽碼等。(7) 串行通信接口初始化函數(shù)SCI_init()。主控制器與液晶顯示模塊采用串行通信接口進行通訊。完成串行通信口可編程的數(shù)據(jù)格式、波特率的設(shè)置等。(8) 串行外設(shè)接口初始化函數(shù)SPI_init()。主控制器采用串行外設(shè)接口 (SPI)對串行EEPR伽管理,用于系統(tǒng)斷電后非易失數(shù)據(jù)保存。初始化函數(shù)完成完成串行外設(shè)接口可編程的數(shù)據(jù)格式、波
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1