李曉楠,馮國(guó)勝,彭朝亮,季浩浩,張小榮
(1.石家莊鐵道大學(xué) 機(jī)械工程學(xué)院,河北 石家莊 050043;2.長(zhǎng)城汽車股份有限公司 哈弗技術(shù)中心技術(shù)管理部,河北 保定 071000)
基于TMS320F2812的多路信號(hào)采集與控制設(shè)計(jì)
李曉楠1,馮國(guó)勝1,彭朝亮1,季浩浩2,張小榮1
(1.石家莊鐵道大學(xué) 機(jī)械工程學(xué)院,河北 石家莊 050043;2.長(zhǎng)城汽車股份有限公司 哈弗技術(shù)中心技術(shù)管理部,河北 保定 071000)
基于TMS320F2812開發(fā)板,通過模/數(shù)轉(zhuǎn)換器ADC將模擬采集信號(hào)轉(zhuǎn)換為數(shù)字量傳輸?shù)介_發(fā)板中進(jìn)行處理計(jì)算,并通過SCI串口通信將數(shù)據(jù)傳輸?shù)絇C機(jī)上,使用LabVIEW編制了多路信號(hào)的顯示界面和發(fā)送數(shù)據(jù)界面。通過在LabVIEW界面中輸入控制變量,實(shí)現(xiàn)了對(duì)某路輸出電壓的控制,為后續(xù)的利用LabVIEW界面輸入控制變量進(jìn)而直接控制電機(jī)奠定了基礎(chǔ)。
信號(hào)采集;串口通信;TMS320F2812;LabVIEW
信號(hào)采集是系統(tǒng)狀態(tài)監(jiān)測(cè)必不可少的環(huán)節(jié),而系統(tǒng)的狀態(tài)參數(shù)往往是多個(gè),如汽車上的信號(hào)包含了電壓、電流、發(fā)動(dòng)機(jī)轉(zhuǎn)速、節(jié)氣門開度等。通過對(duì)系統(tǒng)的各路信號(hào)進(jìn)行采集從而實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的運(yùn)行狀態(tài),進(jìn)而對(duì)監(jiān)測(cè)結(jié)果作出判斷并處理[1]。實(shí)驗(yàn)采用了合眾電子研發(fā)的TMS320F2812開發(fā)板,將模擬信號(hào)轉(zhuǎn)換為數(shù)字量處理,最終通過LabVIEW實(shí)時(shí)進(jìn)行監(jiān)測(cè),使采集結(jié)果更加直觀。此外,考慮到DSP開發(fā)板控制外部設(shè)備運(yùn)轉(zhuǎn)時(shí),經(jīng)常會(huì)涉及到手動(dòng)更改程序或者更改外部電路負(fù)載來(lái)控制變量的輸入,給實(shí)際操作帶來(lái)了很大不便,于是模擬了通過在LabVIEW中添加發(fā)送界面來(lái)直接控制外部設(shè)備的運(yùn)行。
1.1 ADC模/數(shù)轉(zhuǎn)換原理
本系統(tǒng)信號(hào)采集部分主要涉及到了DSPF2812的模/數(shù)轉(zhuǎn)換器ADC模塊,ADC采集模塊為12位,16個(gè)采樣通道,分別為ADCINA0~ADCINA7和ADCINB0~ADCINB7。由于ADC在進(jìn)行數(shù)模轉(zhuǎn)換時(shí)遵循線性關(guān)系,3 V的模擬量對(duì)應(yīng)著數(shù)字量為0xFFF0,轉(zhuǎn)換為十進(jìn)制為65 520;0 V的模擬量轉(zhuǎn)換后的數(shù)字量為0。由圖1的ADC線性轉(zhuǎn)換關(guān)系可得以下關(guān)系式:
ADResult=(VoltInput-ADCLO)/3.0×65 520
(1)
式中:ADResult為結(jié)果寄存器值,VoltInput為電壓輸入值,ADCLO為參考電壓默認(rèn)值0 V。
將結(jié)果寄存器值A(chǔ)DResult向右移4位,這樣低四位將被占用,高四位將空閑出來(lái)等待下一個(gè)數(shù)據(jù)的傳入。此時(shí)3 V的電壓值將對(duì)應(yīng)數(shù)字量為0x0FFF,轉(zhuǎn)換為十進(jìn)制是4 095;同樣0 V的電壓值轉(zhuǎn)換后的數(shù)字量仍為0[2]。根據(jù)圖2的線性轉(zhuǎn)換關(guān)系可以推算出另一個(gè)換算公式:
(ADResult>>4)=(VoltInput-ADCLO)/3.0×4 095
(2)
分析以上兩個(gè)公式可知,只要把握其線性關(guān)系及其原理,就可以在需要時(shí)對(duì)其進(jìn)行移位調(diào)整,最終結(jié)果是一樣的。
1.2 系統(tǒng)的總體設(shè)計(jì)
此次設(shè)計(jì)使用ADCINA0~ADCINA2三路通道進(jìn)行信號(hào)采集,采用的方式為級(jí)聯(lián)式順序采樣模式,通過采集開發(fā)板的三路電壓信號(hào),將采集到的電壓信號(hào)通過RS232串口線傳回PC機(jī),并通過LabVIEW界面顯示。此外,在LabVIEW界面中設(shè)計(jì)了發(fā)送緩沖區(qū)作為控制模塊,通過在發(fā)送緩沖區(qū)輸入數(shù)值來(lái)控制某一路電壓輸出值的大小。整體設(shè)計(jì)如圖3所示。
2.1 TMS320F2812程序設(shè)計(jì)
查詢方式傳輸通信,就是通過判斷發(fā)送緩沖器和接收緩沖器的就緒標(biāo)志位TXRDY和RXRDY是否已經(jīng)被置位進(jìn)而完成操作。發(fā)送數(shù)據(jù)流程如圖4所示,當(dāng)發(fā)送緩沖器SCITXBUF把數(shù)據(jù)發(fā)送給移位寄存器TXSHF后,SCITXBUF清空,TXRDY置1,表示可以發(fā)送新的數(shù)據(jù);同樣當(dāng)接收移位寄存器RXSHF把接收到的數(shù)據(jù)傳給接收緩沖器SCIRXBUF后,RXRDY置1,表示可以讀取新數(shù)據(jù)[3]。通過查詢二者的置位情況,CPU才能夠執(zhí)行下一個(gè)命令。
2.2 LabVIEW界面及后面板設(shè)計(jì)
將RS232與PC機(jī)連接后,自動(dòng)識(shí)別COM串口。LabVIEW前后面板設(shè)計(jì)如圖5、圖6所示,添加VISA串口通信協(xié)議,并設(shè)置其數(shù)據(jù)格式;在While循環(huán)中嵌套條件結(jié)構(gòu)用于判斷是否發(fā)送數(shù)據(jù);在條件結(jié)構(gòu)中嵌套一個(gè)4層順序結(jié)構(gòu),第0層為寫入緩沖區(qū),第1層設(shè)置等待200 ms,第2層為讀取緩沖區(qū),第3層添加了三個(gè)局部變量,分別設(shè)置寫入緩沖區(qū)、讀取緩沖區(qū)和數(shù)據(jù)通信;同時(shí)在順序結(jié)構(gòu)中又嵌套了一個(gè)條件結(jié)構(gòu),用于判斷寫入與讀取的是否一致;若寫入與讀取數(shù)據(jù)一致,則顯示通信正常,否則通信異常[5]。
在LabVIEW前面板中選擇COM3串口,將波特率改為19 200,分別運(yùn)行CCStudio v3.3中的程序與LabVIEW程序。通過在寫入緩沖區(qū)寫入ADRESULT65520,點(diǎn)擊發(fā)送按鈕。在接收緩沖區(qū)中收到同樣的字符,且數(shù)據(jù)通信顯示通信正常。在CCStudio v3.3主程序中通過Watch Window觀察數(shù)據(jù)結(jié)果寄存器Sci-VarRx的ASCII碼值i從0~12分別為65、68、82、69、83、85、76、84、54、53、53、50 、48,剛好對(duì)應(yīng)著ADRESULT65520十三個(gè)字符的ASCII碼值,表示SCI傳輸信號(hào)正常。其中觀察到的0~6位ASCII碼值如圖7所示。
3.1 TMS320F2812三路數(shù)據(jù)傳輸編程
本文對(duì)ADCINA0~ADCINA2三個(gè)通道進(jìn)行電壓信號(hào)采集,選擇級(jí)聯(lián)模式的順序采樣方式。SEQ1與SEQ2級(jí)聯(lián)成 16狀態(tài)的序列發(fā)生器SEQ,最大轉(zhuǎn)換通道寄存器的值MAXCONV1設(shè)置為2[6],ADCINA0~ADCINA2三路通道轉(zhuǎn)換結(jié)果分別對(duì)應(yīng)著adc[0]~adc[2]三個(gè)結(jié)果寄存器的值。
DSP需要接收LabVIEW傳輸過來(lái)的數(shù)據(jù),于是定義了兩個(gè)無(wú)符號(hào)整型變量a、b。其中a為控制模擬電壓輸出的倍數(shù),對(duì)應(yīng)于LabVIEW界面的寫入緩沖區(qū)窗口,其輸入范圍為0~9十個(gè)整數(shù)。當(dāng)a值等于0時(shí),控制輸出電壓為0 V,當(dāng)a等于9時(shí),即控制輸出電壓為初始值的9倍。b值為用于儲(chǔ)存最終輸出電壓值的結(jié)果寄存器,其范圍值在0~3 V之間。在while循環(huán)下,a讀取接收緩沖寄存器的值,該值由在LabVIEW界面寫入緩沖區(qū)輸入并發(fā)送,由于a讀取完后儲(chǔ)存的數(shù)值為ASCII碼值,需要將a值減去0所對(duì)應(yīng)的ASCII碼值48后,再與第一路的結(jié)果寄存器值adc[0]相乘。將此運(yùn)算結(jié)果傳輸給結(jié)果寄存器b,最后發(fā)送緩沖器讀取b的值,并通過LabVIEW顯示輸出電壓值。
ADC采集時(shí)是12位的,而串行通信SCI在進(jìn)行收發(fā)時(shí)是8位的,所以在將ADC采集到的數(shù)據(jù)通過SCI發(fā)送時(shí),將高8位和低4位分組進(jìn)行發(fā)送。即先將ADC采集到的12位數(shù)據(jù)位向右移8位,傳輸?shù)桨l(fā)送緩沖寄存器中,再將剩余的4位一并發(fā)送,最后在LabVIEW中進(jìn)行數(shù)據(jù)重組。由于在發(fā)送過程中涉及到了數(shù)據(jù)的拆分與重組,計(jì)算機(jī)無(wú)法識(shí)別接收到的數(shù)據(jù)是高8位還是低4位,導(dǎo)致最后結(jié)果的不確定性。于是在發(fā)送數(shù)據(jù)時(shí)添加了ABCD標(biāo)志位,用于判斷讀取數(shù)據(jù)的初始位置,即當(dāng)計(jì)算機(jī)接收到十六進(jìn)制數(shù)ABCD時(shí),便從其下一位開始讀取數(shù)據(jù),這樣就解決了讀取數(shù)據(jù)的不確定性問題。SCI接收與發(fā)送的主程序如下:
while(SciaRegs.SCIRXST.bit.RXRDY == 1)
a= SciaRegs.SCIRXBUF.all;
b=(a-48)*adc[0];
while(SciaRegs.SCICTL2.bit.TXEMPTY==0){};
SciaRegs.SCITXBUF=0xAB;
while(SciaRegs.SCICTL2.bit.TXEMPTY==0){};
SciaRegs.SCITXBUF=0xCD;
……
3.2 三路數(shù)據(jù)傳輸LabVIEW設(shè)計(jì)
在LabVIEW界面加入了發(fā)送數(shù)據(jù)窗口,設(shè)計(jì)了0~9十個(gè)檔位,分別對(duì)應(yīng)了將第三路的輸出電壓值擴(kuò)大到最初值的0~9倍。而第一、二路輸出的電壓值作為對(duì)比保持不變。此應(yīng)用可以通過LabVIEW界面控制輸出電壓值進(jìn)而對(duì)外部設(shè)備運(yùn)行狀態(tài)進(jìn)行控制。
LabVIEW后面板程序如圖8所示,在while循環(huán)嵌套了一個(gè)條件結(jié)構(gòu),用于控制信號(hào)采集的開始與停止,在此條件結(jié)構(gòu)中又嵌套了一個(gè)三層順序結(jié)構(gòu),分別為VISA寫入程序,等待20 ms,數(shù)據(jù)接收程序[7]。其中VISA寫入程序?qū)?yīng)于前面板的寫入緩沖區(qū),用于輸入控制模擬電壓放大的倍數(shù);數(shù)據(jù)接收程序則對(duì)應(yīng)輸出的波形圖。在將接收到的數(shù)據(jù)高8位與低4位進(jìn)行重組時(shí),需要先將數(shù)據(jù)向右移8位再與剩余值組合,于是將高8位乘以28后再按照ADC數(shù)/模轉(zhuǎn)換公式運(yùn)算,將數(shù)字量轉(zhuǎn)換為模擬量并通過波形圖顯示。
本系統(tǒng)為三路信號(hào)采集與控制設(shè)計(jì),測(cè)試結(jié)果如圖9所示。其中信號(hào)輸出1與信號(hào)輸出2為實(shí)際測(cè)得電壓值常量,分別為0.33 V和1.75 V。信號(hào)輸出3為可控輸出電壓值,其初始值與信號(hào)輸出1相同,為0.33 V。通過在界面中的寫入緩沖區(qū)依次輸入0~9十個(gè)數(shù)字,并分別點(diǎn)擊確定按鈕,可以觀察到信號(hào)輸出3中,電壓值由初始值的0.33V產(chǎn)生階梯性跳變。一共產(chǎn)生了0~9十層階梯數(shù),每個(gè)數(shù)字代表著輸出電壓值變?yōu)槌跏贾档肗倍,當(dāng)輸入數(shù)值為0時(shí),電壓值為0 V,當(dāng)輸入值為9時(shí),信號(hào)輸出3值為2.89 V,正好為初始值0.33 V的9倍。
基于TMS320F2812的多路信號(hào)采集與控制設(shè)計(jì)可同時(shí)對(duì)多路信號(hào)進(jìn)行采集與分析,通過與LabVIEW的結(jié)合,使采集到的數(shù)據(jù)更加直觀,方便,準(zhǔn)確。此外,在信號(hào)采集的基礎(chǔ)上添加了控制過程,通過LabVIEW界面輸入數(shù)值,可以實(shí)現(xiàn)對(duì)某路輸出電壓的控制,為后續(xù)的通過控制輸出電壓方式驅(qū)動(dòng)外圍電路,進(jìn)而控制外部設(shè)備的運(yùn)行狀態(tài)奠定了基礎(chǔ)。免去了通過修改程序或是更改外部電路負(fù)載來(lái)控制變量的不便,減小了工作量,在實(shí)際工程中有較好的應(yīng)用前景。
[1] 韓豐田.TMS320F281xDSP原理及應(yīng)用技術(shù)[M].北京:清華大學(xué)出版社,2009.
[2] 顧衛(wèi)鋼.手把手教你學(xué)DSP-基于TMS320X281x[M].北京:北京航空航天大學(xué)出版社,2011.
[3] 劉瑞濤,容海亮,張華.基于單片機(jī)的多路信號(hào)采集系統(tǒng)設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2013,31(2):138-139.
[4] 王彬,王靈莉,王旭柱.基于LabVIEW與USB2.0的DSP數(shù)據(jù)采集與處理系統(tǒng)[J].微型機(jī)與應(yīng)用,2013,32(6):32-34.
[5] 段永杰,趙河明,劉振強(qiáng),等.基于DSP的多通道無(wú)線數(shù)據(jù)采集方法研究[J].水電能源科學(xué),2010,28(6):109-111.
[6] 郭偉,潘仲明,杜金榜,等.多通道高速實(shí)時(shí)數(shù)據(jù)采集與處理平臺(tái)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2009,17(8):1644-1647.
[7] 張雪華,萬(wàn)舟,吳建德.基于LabVIEW與DSP串口通信的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].云南大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,72(S2):106-111.
Designof Multi-Channel Signal Acquisition and Control
Based on TMS320F2812
LI Xiao-nan1, FENG Guo-sheng1, PENG Chao-liang1, JI Hao-hao2, ZHANG Xiao-rong1
(1.Department of Mechanical Engineering, Shijiazhuang Tiedao University, Shijiazhuang 050043, Hebei, China; 2.Department of HAVAL Technology Center, Great Wall Motor Co., LTD, Baoding 071000, Hebei, China)
The TMS320F2812 development board was used to convert analog signals to digital value through the A/D converter ADC, and transmit data to PC through the SCI serial communication. Besides, the software LabVIEW was used to compile the multipath signal display and send data interface. It realized controlling a channel output voltage through inputting controlled variable in the LabVIEW interface, which laid a foundation for controlling the motor speed directly through LabVIEW interface.
signal acquisition; serial communication; TMS320F2812; LabVIEW
河北省自然科學(xué)基金項(xiàng)目(混合動(dòng)力客車能量控制策略研究):Z2014210050;石家莊市科研計(jì)劃項(xiàng)目(混合動(dòng)力客車能量控制系統(tǒng)開發(fā)):161080401A;河北省研究生創(chuàng)新項(xiàng)目(公鐵兩用通用化回轉(zhuǎn)底盤的設(shè)計(jì)與模型制作):yc2016003
2016-05-18
李曉楠(1990-),男,河北石家莊人,在讀碩士研究生,主要從事車輛電子控制研究,郵箱284289502@qq.com。
TP274
A
1008-9446(2016)06-0039-06