衡阳派盒市场营销有限公司

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

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

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

基于μC/OS-II和TMS320LF2407A實(shí)現(xiàn)集散式數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:微計(jì)算機(jī)信息 ? 作者:鐘堅(jiān)文,蔡旭 ? 2021-06-21 15:19 ? 次閱讀

應(yīng)用實(shí)時(shí)多任務(wù)操作系統(tǒng)RTOS)作為嵌入式設(shè)計(jì)的基礎(chǔ)和開發(fā)平臺(tái)將成為嵌入式應(yīng)用設(shè)計(jì)的主流。μC/OS-II是一種源碼公開、可移植性、可固化、可裁剪、占先式的實(shí)時(shí)多任務(wù)操作系統(tǒng),目前已經(jīng)得到廣泛的應(yīng)用。

在為電力系統(tǒng)接地選線裝置開發(fā)的數(shù)據(jù)采集監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)中,設(shè)計(jì)了集散式的數(shù)據(jù)采集結(jié)構(gòu),靈活的組態(tài)適應(yīng)了目前國(guó)內(nèi)多數(shù)中低壓輸配電網(wǎng)的數(shù)據(jù)采集需求。在此硬件平臺(tái)上,將實(shí)時(shí)操作系統(tǒng)μC/OS-II移植到TMS320LF2407A型號(hào)的DSP上,實(shí)現(xiàn)了多任務(wù)的并行執(zhí)行,系統(tǒng)的可靠性和實(shí)時(shí)性得到大幅提升;設(shè)計(jì)了CAN總線驅(qū)動(dòng)程序,使得下位采集處理模塊與上位的主控制器具備了可靠快速的通信功能和協(xié)調(diào)功能。

1.集散式的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

系統(tǒng)的整體結(jié)構(gòu)如圖1所示:

圖1集散式選線系統(tǒng)整體結(jié)構(gòu)

圖中反映出目前變電站常見的網(wǎng)絡(luò)結(jié)構(gòu)。一般的基于集中式數(shù)據(jù)采集方式在應(yīng)用上存在一定的缺點(diǎn),比如針對(duì)不同變電站實(shí)際情況配置不夠靈活等。而基于集散式的數(shù)據(jù)采集系統(tǒng)卻具有系統(tǒng)適應(yīng)能力強(qiáng),組態(tài)方便,可靠性高等優(yōu)點(diǎn)。因此,根據(jù)變電站網(wǎng)絡(luò)的這種結(jié)構(gòu),本裝置設(shè)計(jì)采用集散式數(shù)據(jù)采集的方式,即在每條支路上均掛接一個(gè)獨(dú)立的智能數(shù)據(jù)采集及處理模塊負(fù)責(zé)實(shí)時(shí)采集和數(shù)據(jù)預(yù)處理;主控制器與各智能采集處理模塊通過CAN現(xiàn)場(chǎng)總線進(jìn)行通訊,從而不僅實(shí)現(xiàn)主控的功能,還具備靈活的集散擴(kuò)充性能。

2.CAN總線接口的設(shè)計(jì)

在各種現(xiàn)場(chǎng)總線網(wǎng)絡(luò)中,最早為汽車電子設(shè)備互連而開發(fā)的CAN總線由于其簡(jiǎn)單靈活的配置以及強(qiáng)大的實(shí)時(shí)控制和檢錯(cuò)糾錯(cuò)能力而在諸多自動(dòng)化領(lǐng)域中得到了廣泛的使用。

美國(guó)TI公司DSP產(chǎn)品線中的2000系列是專為工業(yè)控制應(yīng)用設(shè)計(jì)的數(shù)字信號(hào)處理器,具有強(qiáng)大的數(shù)字信號(hào)處理能力,還集成了豐富的外設(shè)和I/O,成為現(xiàn)代電機(jī)控制、電力系統(tǒng)自動(dòng)化等應(yīng)用中很好選擇。在這款DSP處理器上,自帶了兼容CAN2.0B標(biāo)準(zhǔn)的CAN總線控制器,因此只需外接一片CAN總線收發(fā)芯片即可使模塊具有完整的CAN總線通信能力,在此使用支持1Mbps的PCA82C250收發(fā)器芯片,接口設(shè)計(jì)見圖2。

圖2采集模塊CAN總線接口

3.μC/OS-II在2407上的移植

絕大部分μC/OS-II的源碼是用移植性很強(qiáng)的ANSIC寫的,只有和微處理器硬件相關(guān)的那部分是用匯編語(yǔ)言寫的。而TI公司提供的編譯器CodeComposerStudio(C2000)V2.20支持C語(yǔ)言和匯編語(yǔ)言開發(fā),筆者在此編譯器的基礎(chǔ)上完成了μC/OS-II的移植。移植工作主要集中在三個(gè)文件的修改工作:修改頭文件OS_CPU.H相關(guān)的內(nèi)容,包括:數(shù)據(jù)類型定義、堆棧增長(zhǎng)方向、中斷相關(guān)的一些宏定義等;OS_CPU_C.C中編寫任務(wù)堆棧初始化函數(shù)及系統(tǒng)HOOK函;OS_CPU_A.ASM中編寫四個(gè)匯編語(yǔ)言函數(shù):OSStartHighRdy(),OSCtxSw(),OSIntCtxSw()和OsTickISR()。

具體移植過程由于不是本文重點(diǎn),恕筆者不再詳述。

4.基于緩沖隊(duì)列支持下的CAN總線驅(qū)動(dòng)程序設(shè)計(jì)

驅(qū)動(dòng)程序是連接底層的硬件和上層的API函數(shù)的紐帶,有了驅(qū)動(dòng)程序模塊,就可以把操作系統(tǒng)的API函數(shù)和底層的硬件分開來(lái)。任何一個(gè)硬件的改變、刪除或者添加,只需要隨之改變、刪除或者添加提供給操作系統(tǒng)的相應(yīng)的驅(qū)動(dòng)程序就可以了,并不會(huì)影響到API函數(shù)的功能,更不會(huì)影響到用戶的應(yīng)用程序。同時(shí),為了保證在實(shí)時(shí)多任務(wù)操作系統(tǒng)中,對(duì)硬件訪問的唯一性,系統(tǒng)的驅(qū)動(dòng)程序要受控于相應(yīng)的操作系統(tǒng)的多任務(wù)之間的同步機(jī)制。

(1)μC/OS-II的通信機(jī)制

μC/OS-II在處理任務(wù)之間的通信和同步的時(shí)候,主要通過以下幾種方式:信號(hào)量(Semaphore),郵箱(Mailbox),消息隊(duì)列(Queue)和互斥信號(hào)量(Mutex)。具體的通過事件控制塊(ECB)來(lái)實(shí)現(xiàn)。μC/OS-II中定義的數(shù)據(jù)結(jié)構(gòu)OS_EVENT能夠維護(hù)任務(wù)間通信和同步的所有信息,該數(shù)據(jù)結(jié)構(gòu)不僅包含了事件本身的定義,如信號(hào)量的計(jì)數(shù)器、指向郵箱的指針、指向消息隊(duì)列的指針數(shù)組、互斥量中能否獲得資源的Flag和正在使用該互斥量的任務(wù),還定義了等待該事件的所有任務(wù)列表。事件發(fā)生后,等待的優(yōu)先級(jí)最高的任務(wù)進(jìn)入就緒態(tài)。

(2)緩沖隊(duì)列的設(shè)計(jì)和通信任務(wù)的配合

微機(jī)系統(tǒng)中,一般串行設(shè)備或者其他字符型設(shè)備都存在外設(shè)處理速度和CPU速度不匹配的問題,所以需要建立相應(yīng)的緩沖區(qū)。向CAN口發(fā)送數(shù)據(jù)時(shí),只要把數(shù)據(jù)寫到緩沖區(qū),然后由CAN控制器逐個(gè)取出往外發(fā)送。從CAN口接收數(shù)據(jù)時(shí),往往等收到若干個(gè)字節(jié)后才需要CPU進(jìn)行處理,所以這些預(yù)收的數(shù)據(jù)可以先存在緩沖區(qū)。緩沖區(qū)可以設(shè)置收到若干個(gè)字節(jié)后再中斷CPU,這樣就避免了因?yàn)镃PU的頻繁中斷而降低系統(tǒng)的實(shí)時(shí)性。

在對(duì)緩沖區(qū)讀寫的過程中,經(jīng)常會(huì)遇到想發(fā)送數(shù)據(jù)的時(shí)候,緩沖區(qū)已滿;想去讀的時(shí)候,接受緩沖卻是空的。對(duì)于用戶程序端,采用傳統(tǒng)的查詢工作方式,頻繁的讀取使得程序效率大為降低。如果引入讀、寫兩個(gè)信號(hào)量分別對(duì)緩沖區(qū)兩端的操作進(jìn)行同步,問題自然解決:用戶任務(wù)想寫但緩沖區(qū)滿時(shí),在信號(hào)量上休眠,讓CPU運(yùn)行別的任務(wù),待ISR從緩沖區(qū)讀走數(shù)據(jù)后喚醒這個(gè)休眠的任務(wù);類似的,用戶任務(wù)想讀但緩沖區(qū)空時(shí),也可以在信號(hào)量上休眠,待外部設(shè)備有數(shù)據(jù)來(lái)了再喚醒。其中,μC/OS-II的信號(hào)量提供了超時(shí)等待機(jī)制,CAN端口本身也有超時(shí)讀寫能力。

接受和發(fā)送的數(shù)據(jù)緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)定義如下:

typedefstruct{

INT16UBufRxCtr;//接受緩沖中的字符的數(shù)目

OS_EVENTBufRxSem;//接受信號(hào)量

INT8UBufRxInPtr;//接收緩沖中下一個(gè)字符的寫入位置

INT8UBufRxOutPtr;//接收緩沖中下一個(gè)待讀出字符的位置

INT8UBufRx[CAN_BUF_SIZE];//接收環(huán)形緩沖區(qū)的大小

INT16UBufTxCtr;//發(fā)送緩沖中字符的數(shù)目

OS_EVENTBufTxSem;//發(fā)送信號(hào)量

INT8UBufTxInPtr;//發(fā)送緩沖中下一個(gè)字符的寫入位置

INT8UBufTxOutPtr;//發(fā)送緩沖中下一個(gè)待讀出字符的位置

INT8UBufTx[CAN_BUF_SIZE];//發(fā)送環(huán)形緩沖區(qū)的大小

}CAN_BUF;

其他接口函數(shù)如下:

VoidCanInitHW();//設(shè)置CAN控制器端口中斷向量

VoidCANSendMsg();//向CAN控制器端口發(fā)送數(shù)據(jù)

VoidCANReceiveMsg();//從CAN控制器端口接受數(shù)據(jù)

圖3基于緩沖隊(duì)列的CAN通信過程

基于緩沖隊(duì)列支持下的CAN通信任務(wù)通信過程如圖3所示。

在該通信任務(wù)中,采用查詢方式發(fā)送,中斷方式接收,任何時(shí)候只要沒有關(guān)中斷,中斷任務(wù)的優(yōu)先級(jí)高于其他任何任務(wù)。可以說,該任務(wù)是“基于中斷響應(yīng)”的。這樣處理的好處是能夠最大的保證了通信的實(shí)時(shí)性,同時(shí)也使得系統(tǒng)資源的利用率大大提高(相比于收發(fā)都采用查詢的方式)。任務(wù)間的通信和同步通過郵箱和信號(hào)量機(jī)制進(jìn)行。

當(dāng)用戶應(yīng)用程序(或任務(wù))要求進(jìn)行遠(yuǎn)程CAN通信的時(shí)候,應(yīng)用程序(或任務(wù))先要獲得BufTxSem并向發(fā)送緩沖區(qū)BufTx裝入報(bào)文,寫入緩沖區(qū)結(jié)束后釋放信號(hào)量BufTxSem,通過郵箱通知CAN通信任務(wù)處理報(bào)文并完成報(bào)文的發(fā)送。

當(dāng)總線發(fā)來(lái)報(bào)文時(shí),接受節(jié)點(diǎn)的CAN控制器會(huì)產(chǎn)生一個(gè)接收中斷,當(dāng)前運(yùn)行任務(wù)被掛起,CAN通信任務(wù)被激活并搶占運(yùn)行,獲取信號(hào)量BufRxSem,然后從總線上讀取報(bào)文并寫入緩沖區(qū),寫入結(jié)束后釋放信號(hào)量BufRxSem,并通過郵箱通知相應(yīng)的用戶應(yīng)用程序(或任務(wù));應(yīng)用程序(或任務(wù))通過獲得信號(hào)量BufRxSem從緩沖區(qū)內(nèi)讀取相應(yīng)的報(bào)文信息。

(3)μC/OS-II的中斷任務(wù)的處理

在μC/OS-II中,中斷服務(wù)程序一般用匯編語(yǔ)言來(lái)寫。以下是中斷服務(wù)程序的示意代碼:

VoidUserISR(void){

保存全部CPU寄存器

調(diào)用OSIntEnter或OSIntNesting直接加1;

執(zhí)行用戶代碼做中斷服務(wù);

調(diào)用OSIntExit;

恢復(fù)所有CPU寄存器;

執(zhí)行中斷返回指令;

}

μC/OS-II提供了兩個(gè)ISR與內(nèi)核的接口函數(shù):OSIntEnter和OSIntExit。OSIntEnter通知內(nèi)核中斷服務(wù)程序開始運(yùn)行了,并把一個(gè)全局變量OSIntNesting加1。此中斷嵌套計(jì)數(shù)器可以確保所有中斷處理完成后再作任務(wù)調(diào)度。另一個(gè)接口函數(shù)OSIntExit則通知內(nèi)核,中斷服務(wù)已結(jié)束。根據(jù)相應(yīng)情況,返回被中斷點(diǎn)(可能是一個(gè)任務(wù)或者被嵌套的中斷服務(wù)程序)或由內(nèi)核作任務(wù)調(diào)度。

用戶編寫的ISR必須被安裝到某一位置,以便中斷發(fā)生后,CPU根據(jù)相應(yīng)的中斷向量運(yùn)行準(zhǔn)確的服務(wù)程序。許多實(shí)時(shí)操作系統(tǒng)都提供了安裝、卸載中斷服務(wù)程序的API接口函數(shù),有些成熟的RTOS甚至對(duì)中斷控制器的管理都有相應(yīng)的API函數(shù)。但μC/OS-II內(nèi)核沒有提供類似的接口函數(shù),需要用戶在對(duì)應(yīng)的CPU移植中自己實(shí)現(xiàn)。在DSP2407中,我們可以在設(shè)計(jì)中斷向量表的時(shí)候把用戶的中斷入口寫好,這樣一旦CAN通信接受中斷發(fā)生時(shí),DSP2407就能自動(dòng)從中斷向量表里讀取相應(yīng)的程序入口,進(jìn)而跳轉(zhuǎn)執(zhí)行用戶的ISR程序。

結(jié)束語(yǔ)

基于RTOS平臺(tái)上開發(fā)用戶的應(yīng)用程序,便于在實(shí)時(shí)操作系統(tǒng)內(nèi)核下實(shí)現(xiàn)多任務(wù)處理,可以大大縮短產(chǎn)品開發(fā)周期,進(jìn)一步提高應(yīng)用程序的可移植性和可維護(hù)性。基于本文原理開發(fā)的應(yīng)用于集散式數(shù)據(jù)采集系統(tǒng)的CAN總線遠(yuǎn)程通信構(gòu)件具有良好的可擴(kuò)充性和移植性,對(duì)各種實(shí)際現(xiàn)場(chǎng)情況能夠進(jìn)行靈活的配置和設(shè)定,真正實(shí)現(xiàn)了通信模塊驅(qū)動(dòng)程序的封裝。

責(zé)任編輯:gt

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

    關(guān)注

    554

    文章

    8059

    瀏覽量

    350413
  • 數(shù)據(jù)采集
    +關(guān)注

    關(guān)注

    39

    文章

    6251

    瀏覽量

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

    關(guān)注

    37

    文章

    6892

    瀏覽量

    123742
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TMS320LF2407TMS320LF2407a 有什么區(qū)別啊。。。

    TMS320LF2407TMS320LF2407a 有什么區(qū)別啊。。。
    發(fā)表于 02-27 14:05

    基于TMS320LF2407A的調(diào)音器設(shè)計(jì)

    軟件進(jìn)行快速傅里葉變換計(jì)算信號(hào)頻率,最后輸出到液晶顯示器上,從而實(shí)現(xiàn)調(diào)音器的功能。本作品以實(shí)驗(yàn)室提供的TMS320LF2407A教學(xué)系統(tǒng)為基礎(chǔ)平臺(tái)搭建,對(duì)硬件及軟件進(jìn)行設(shè)計(jì)
    發(fā)表于 12-18 11:43

    如何使用TMS320LF2407A的bootrom

    小弟新手,請(qǐng)問各位大俠,如何使用TMS320LF2407A的bootrom,如何滿足bootrom需求的數(shù)據(jù)格式?懇請(qǐng)大俠們指教
    發(fā)表于 07-13 15:33

    TMS320LF2407A為數(shù)字控制系統(tǒng)的設(shè)計(jì)提供了參考

    TMS320LF2407A的體系結(jié)構(gòu)是由什么組成的?TMS320LF2407A有哪些功能特性?TMS320LF2407A在控制領(lǐng)域中的應(yīng)用有哪些?TMS320LF2407A為什么會(huì)為數(shù)
    發(fā)表于 04-14 06:18

    μC OS-IITMS320LF2407 上的移植及應(yīng)用

    詳細(xì)討論μC/OS-IITMS320LF2407 上的移植并給出主要代碼; 分析移植中可能出現(xiàn)的問題,給出解決方法;討論移植過程中代碼的改寫與優(yōu)化,并介紹μC/
    發(fā)表于 05-15 13:53 ?18次下載

    基于μC/OS-II 的CAN總線驅(qū)動(dòng)程序設(shè)計(jì)

    在將嵌入實(shí)時(shí)操作系統(tǒng)μC/OS-II 成功移植到TMS320LF2407A 型號(hào)的DSP 的基礎(chǔ)上,論文介紹了如何在電力
    發(fā)表于 05-26 13:27 ?16次下載

    基于us/OS-II操作系統(tǒng)的斷路器控制器研制

    本文介紹了一種基于us/OS-II 嵌入操作系統(tǒng)TMS320LF2407A DSP 的低壓斷路器新型智能控制器的設(shè)計(jì),對(duì)us/OS-II
    發(fā)表于 08-26 11:32 ?20次下載

    基于TMS320LF2407A直流電機(jī)閉環(huán)調(diào)速控制系統(tǒng)的設(shè)計(jì)

      針對(duì)某型直流電機(jī)調(diào)速系統(tǒng)的要求,采用TMS320LF2407A和AT89C51設(shè)計(jì)一種雙核直流電機(jī)閉環(huán)調(diào)速控制系統(tǒng)TMS320LF2
    發(fā)表于 02-11 12:15 ?65次下載

    基于TMS320LF2407A的SVPWM變頻調(diào)速系統(tǒng)的應(yīng)用

    基于TMS320LF2407A的SVPWM變頻調(diào)速系統(tǒng)的應(yīng)用。
    發(fā)表于 04-18 10:46 ?34次下載

    基于TMS320LF2407A的SVPWM變頻系統(tǒng)的設(shè)計(jì)

    基于TMS320LF2407A的SVPWM變頻系統(tǒng)的設(shè)計(jì)
    發(fā)表于 04-19 13:57 ?19次下載

    TMS320LF2407A匯編指令

    TMS320LF2407A匯編指令(word版1.0)
    發(fā)表于 05-06 16:54 ?33次下載

    基于TMS320LF2407A的SVPWM變頻系統(tǒng)的研究及實(shí)現(xiàn)

    基于TMS320LF2407A的SVPWM變頻系統(tǒng)的研究及實(shí)現(xiàn)
    發(fā)表于 05-06 16:54 ?14次下載

    基于TMS320LF2407的高速數(shù)據(jù)采集系統(tǒng)

    基于TMS320LF2407的高速數(shù)據(jù)采集系統(tǒng)
    發(fā)表于 05-06 15:39 ?7次下載

    基于AT89C51和TMS320LF2407A的直流電機(jī)閉環(huán)調(diào)速控制系統(tǒng)的設(shè)計(jì)

    針對(duì)某型直流電機(jī)調(diào)速系統(tǒng)的要求,采用TMS320LF2407A和AT89C51設(shè)計(jì)一種雙核直流電機(jī)閉環(huán)調(diào)速控制系統(tǒng)TMS320LF2407A
    發(fā)表于 12-06 08:47 ?12次下載
    基于AT89<b class='flag-5'>C</b>51和<b class='flag-5'>TMS320LF2407A</b>的直流電機(jī)閉環(huán)調(diào)速控制<b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)

    控制器TMS320LF2407A系列數(shù)據(jù)手冊(cè)

    控制器TMS320LF2407A系列數(shù)據(jù)手冊(cè)
    發(fā)表于 07-20 09:19 ?13次下載
    反赌百家乐的玩法技巧和规则| 单机百家乐官网的玩法技巧和规则| 威尼斯人娱乐城赌博 | 立即博百家乐的玩法技巧和规则| 百家乐官网海滨网现场| 大发888赌场| 战神百家乐官网的玩法技巧和规则| 富田太阳城二期| 实战百家乐官网十大取胜原因百分百战胜百家乐官网不买币不吹牛只你能做到按我说的.百家乐官网基本规则 | 大发888优惠码| 红树林百家乐官网的玩法技巧和规则 | 金钱豹百家乐的玩法技巧和规则| 百家乐官网游戏下裁| 大发888娱乐场登陆| 老人头百家乐官网的玩法技巧和规则 | 新全讯网网址g5vvv| 打百家乐官网纯打庄的方法| 大发888casino组件下载| 新西兰百家乐官网的玩法技巧和规则 | 新乡县| 百家乐高手论坛| 百家乐官网投注翻倍方法| 大发888吧| 百家乐冯耕耘打法| 百家乐官网平台信誉| 大发888 打法888| 百家乐平台开户哪里优惠多| 百家乐官网教父方法| 全讯网最方便的新全讯网| 澳门百家乐有限公司| 杰克百家乐官网玩法| 监利县| 大发888在线扑| 百家乐如何写路| 百家乐官网10法则| 大发888客服电话 导航| 百家乐缆法排行榜| 百家乐官网干洗店| 大发888真钱账户注册| 百家乐赌场怎么玩| 百家乐官网打鱼秘籍|