• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      劉冠艷

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

      1 引言

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

      2 下位機設計

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

      2.1 下位機串口硬件初始化

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

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

      GPIOA->CRH&=0XFFFFFF0F;

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

      RCC->APB2RSTR|=1<<14;//串口復位

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

      USART1->BRR=mantissa;//設置串口波特率

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

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

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

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

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

      圖1 卡爾曼濾波效果對比

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

      2.2 卡爾曼濾波

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

      3 上位機設計

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

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

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

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

      4 通信控制設計

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

      FF M f1 f2 f3 f4 0A

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

      5 結論

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

      猜你喜歡
      浮點下位字節(jié)
      LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
      No.8 字節(jié)跳動將推出獨立出口電商APP
      基于浮點DSP的鐵路FSK信號檢測
      No.10 “字節(jié)跳動手機”要來了?
      發(fā)射機房監(jiān)控系統(tǒng)之下位機
      簡談MC7字節(jié)碼
      景洪電廠監(jiān)控系統(tǒng)下位機數據傳輸網絡改造
      圍觀黨“下位”,吐槽帝“登基”
      北京紀事(2016年5期)2016-05-07 13:17:02
      CAN總線并發(fā)通信時下位機應用軟件設計
      基于FPGA的浮點FIR濾波器設計
      滦平县| 札达县| 普安县| 霍林郭勒市| 长宁县| 九龙坡区| 加查县| 靖远县| 公安县| 建始县| 松原市| 竹北市| 武冈市| 兴山县| 巴马| 新和县| 丹阳市| 万载县| 西乌珠穆沁旗| 兴安县| 安吉县| 东阳市| 临漳县| 吉木萨尔县| 梁河县| 孟州市| 南和县| 清丰县| 甘南县| 尉犁县| 集贤县| 安新县| 乐昌市| 新竹县| 区。| 如东县| 灵山县| 玉环县| 溆浦县| 凤冈县| 涞水县|