国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

傳感器數(shù)據(jù)采集系統(tǒng)設(shè)計

2018-11-07 04:59劉冠艷
中小企業(yè)管理與科技 2018年27期
關(guān)鍵詞:浮點下位字節(jié)

劉冠艷

(曲靖市麒麟職業(yè)技術(shù)學(xué)校,云南 曲靖 655000)

1 引言

在嵌入式應(yīng)用開發(fā)中,常常需要對傳感器的數(shù)據(jù)進行采集。為保證傳感器采集數(shù)據(jù)的精度,必須使用單精度或雙精度浮點數(shù)進行采集,但是浮點數(shù)據(jù)在計算機內(nèi)部存儲的結(jié)構(gòu)有別于其他類型的數(shù)據(jù),同時由于傳輸?shù)倪^程中存在丟包和干擾現(xiàn)象,為實現(xiàn)在上位機和下位機之間浮點數(shù)據(jù)的采集,本文使用STM32位處理器作為下位機主控,對PC上位機和下位機之間的通訊機制進行了初步研究。

2 下位機設(shè)計

有刷直流電機[2]調(diào)速系統(tǒng)由有刷直流電機、電機驅(qū)動模塊、STM32F103C8T6最小開發(fā)板模塊、霍爾編碼器構(gòu)成。在使用開發(fā)版板串口時,首先對相關(guān)寄存器初始化設(shè)置,以使串口發(fā)送接收數(shù)據(jù)。同時在實際應(yīng)用時為了保證一定的精度,傳感器采集的數(shù)據(jù)通常是浮點數(shù)據(jù)[3],串口發(fā)送接收時需要對浮點數(shù)據(jù)進行處理:發(fā)送時將浮點數(shù)據(jù)轉(zhuǎn)換成字節(jié)數(shù)據(jù),接收數(shù)據(jù)時將字節(jié)數(shù)據(jù)轉(zhuǎn)換成浮點數(shù)據(jù)[4]。

2.1 下位機串口硬件初始化

下位機硬件串口和上位機串口屬性設(shè)置類似,具體代碼如下:

RCC->APB2ENR|=1<<2;//使能串口 1 時鐘

GPIOA->CRH&=0XFFFFFF0F;

GPIOA->CRH|=0X000000B0;//設(shè)置PA口輸入輸出模式

RCC->APB2RSTR|=1<<14;//串口復(fù)位

RCC->APB2RSTR&=~(1<<14);//停止串口復(fù)位

USART1->BRR=mantissa;//設(shè)置串口波特率

USART1->CR1|=0X200C;//一位停止位,無校驗

USART1->CR1|=1<<8;//串口中斷使能 USART1->CR1|=1<<5;//接收緩沖區(qū)非空中斷使能

MY_NVIC_Init(2,1,USART1_IRQn,2);//設(shè)置串口中斷優(yōu)先級

由于下位機串口發(fā)送接收的是字節(jié)數(shù)據(jù),需要將字節(jié)數(shù)據(jù)轉(zhuǎn)換成浮點數(shù)據(jù)[5],通過下列語句進行轉(zhuǎn)換,x為緩沖區(qū)接收到的字節(jié)變量,y為浮點數(shù)據(jù)。

y=(*(float*)&x));

圖1 卡爾曼濾波效果對比

發(fā)送數(shù)據(jù)時需要將浮點數(shù)據(jù)轉(zhuǎn)換成字節(jié)收據(jù)進行發(fā)送,使用下列語句進行轉(zhuǎn)換。x為緩沖區(qū)接收到的字節(jié)變量,y為浮點數(shù)據(jù)[6]。

2.2 卡爾曼濾波

卡爾曼濾波是一種常見的時域濾波方法,該方法可以根據(jù)系統(tǒng)的輸入輸出觀測數(shù)據(jù),對系統(tǒng)狀態(tài)進行最優(yōu)估計[7]。該濾波算法[8]可以有效剔除系統(tǒng)中的隨機噪聲和干擾的影響,便于計算機編程實現(xiàn),并能夠?qū)ΜF(xiàn)場采集的數(shù)據(jù)進行實時更新和處理,因此,在許多方面得到了廣泛應(yīng)用。濾波效果見圖1。

3 上位機設(shè)計

上位機串口通訊軟件采用Visual studio2005 C#語言編寫,由于上位機和下位使用串口進行通訊,因此在編寫上位機軟件時必須引用System.IO.Ports命名空間,在程序開頭部分使用下列語句:using System.IO.Ports。

引用后創(chuàng)建串口變量并對它的屬性進行設(shè)置,并將串口serialPort的波特率設(shè)置為9600kbs,8位數(shù)據(jù)位,一個停止位,無奇偶校驗。

在程序中使用Read()方法讀取緩沖區(qū)的數(shù)據(jù),發(fā)送數(shù)據(jù)使用serialPort2.Write()方法,為了實時觀察傳感變化的情況,上位機軟件需要須用到chart控件,使用時應(yīng)在程序開頭部分引用下列語句:System.Windows.Forms.DataVisualization.Charting

需對chart控件的ChartAreas["ChartArea1"].AxisY屬性的MajorTickMark、MinorTickMark進行設(shè)置,添加點使用chart1.Series["Series1"].Points的AddXY()方法。

4 通信控制設(shè)計

由于需要傳遞的數(shù)據(jù)大部分是浮點數(shù)據(jù),而浮點數(shù)據(jù)在內(nèi)存中占用4個字節(jié),并且在STM32F103C8T6和PC中都是小端存儲模式,所以PC上位機和下位機之間通訊封裝了7個字節(jié)的數(shù)據(jù)包,其格式是:

FF M f1 f2 f3 f4 0A

FF代表數(shù)據(jù)包開始,M代表傳送數(shù)據(jù)類型,f1-f4代表4個字節(jié)浮點數(shù)據(jù),0A表示數(shù)據(jù)結(jié)束。上位機發(fā)送7個字節(jié)的數(shù)據(jù)包,下位機串口接收到數(shù)據(jù)進行中斷響應(yīng),在單片機內(nèi)部中斷響應(yīng)的過程如下:首先對接收到的數(shù)據(jù)進行解包,如果數(shù)據(jù)封裝完整,單片就把設(shè)置好的數(shù)據(jù)發(fā)送給上位機,如果單片機中斷響應(yīng)沒有正確獲得數(shù)據(jù)包,直接進行丟包處理。上位機接收到數(shù)據(jù),產(chǎn)生接收數(shù)據(jù)事件觸發(fā)響應(yīng),上位機響應(yīng)后檢查設(shè)置的數(shù)據(jù)是否一致,如果一致,就在上位機上相應(yīng)控件顯示,并且生成日志,以便查看參數(shù)設(shè)置記錄,上位機檢查如果發(fā)現(xiàn)設(shè)置參數(shù)不一致,再重新發(fā)送。

5 結(jié)論

綜上所述,在嵌入式應(yīng)用開發(fā)中,上位機和下位機之間通過串口進行通訊時,由于傳感器存在各種干擾因素,需要對獲取的數(shù)據(jù)進行濾波,在本文中使用卡爾曼濾波的方法進行濾波,獲得了較好的效果。同時由于整個通訊過程存在數(shù)據(jù)丟失時或者干擾的可能,需對數(shù)據(jù)進行封裝和丟包處理,以便能夠正確解析通訊數(shù)據(jù)。

猜你喜歡
浮點下位字節(jié)
LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
No.8 字節(jié)跳動將推出獨立出口電商APP
基于Simulink浮點模型和定點模型的問題研究
基于浮點DSP的鐵路FSK信號檢測
No.10 “字節(jié)跳動手機”要來了?
提高火力發(fā)電廠自動電壓控制系統(tǒng)投入率的措施
發(fā)射機房監(jiān)控系統(tǒng)之下位機
輕量級分組密碼Midori64的積分攻擊
圍觀黨“下位”,吐槽帝“登基”
CAN總線并發(fā)通信時下位機應(yīng)用軟件設(shè)計