• 
    

    
    

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

      ?

      基于USB通信的科氏粉料流量測控系統(tǒng)設(shè)計(jì)

      2015-09-12 06:42:48何景田耿春明
      關(guān)鍵詞:描述符緩沖區(qū)測控

      何景田,耿春明

      (北京航空航天大學(xué) 機(jī)械工程及自動(dòng)化學(xué)院,北京100191)

      何景田(碩士研究生),主要研究方向?yàn)闄C(jī)械電子工程。

      引 言

      目前,由北京航空航天大學(xué)與冀東發(fā)展集團(tuán)有限責(zé)任公司合作研發(fā)的科氏粉料流量測控系統(tǒng)(以下簡稱“測控系統(tǒng)”)已經(jīng)成功應(yīng)用到工業(yè)現(xiàn)場,運(yùn)行狀況良好,測量精度優(yōu)于±0.5%。測控系統(tǒng)底層和PC端上層控制軟件通過RS-232串行接口通信。這樣,操作者就能夠方便地對(duì)測控系統(tǒng)的各個(gè)參數(shù)進(jìn)行修改,同時(shí)研發(fā)人員在進(jìn)行現(xiàn)場調(diào)試時(shí)進(jìn)行流量數(shù)據(jù)采集,然而,基于RS-232通信的測控系統(tǒng)還存在一定的應(yīng)用限制。

      雖然測控系統(tǒng)的流量測量精度高,但是其控制精度并不能滿足現(xiàn)場要求,針對(duì)于此,作者所在課題組正在開展粉料流量控制技術(shù)的相關(guān)研究工作,這就要求盡可能完整地采集流量數(shù)據(jù),為粉料流量控制技術(shù)研究提供精確的數(shù)據(jù)支持。目前,測控系統(tǒng)的RS-232 通信速率為9 600 bps,并不能滿足需求,必須通過提高通信速率實(shí)現(xiàn),然而,這樣會(huì)增加CPU 處理數(shù)據(jù)的負(fù)擔(dān),導(dǎo)致通信數(shù)據(jù)不正確的情況發(fā)生,降低底層程序性能。同時(shí)RS-232串口通信為端到端傳輸模式,在實(shí)際運(yùn)行時(shí),上層應(yīng)用程序無法對(duì)當(dāng)前通信狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測,不利于測控系統(tǒng)對(duì)各個(gè)設(shè)備運(yùn)行狀態(tài)的準(zhǔn)確實(shí)時(shí)監(jiān)測和控制。

      綜上所述,開發(fā)更為快速、方便、可靠的人機(jī)通信接口變得尤為重要。結(jié)合USB通信速率高、通信可靠、即插即用、成本低廉等優(yōu)點(diǎn),本文設(shè)計(jì)了基于USB通信的測控系統(tǒng)。

      1 USB設(shè)備簡介

      USB(Universal Serial Bus,通用串行總線)設(shè)備是USB通信系統(tǒng)中不可或缺的部分,隨著USB技術(shù)的不斷發(fā)展,USB 設(shè)備類型也逐漸增加,主要包括Audio設(shè)備、Communication device設(shè)備、HID 設(shè)備、Image設(shè)備、Printer設(shè)備、Mass storage設(shè)備、Hub設(shè)備等等。其中,HID 類是比較大的一個(gè)類,屬人機(jī)交互操作的設(shè)備,用于控制計(jì)算機(jī)操作的一些應(yīng)用中,如USB鼠標(biāo)、USB觸摸板、遙控等設(shè)備。Windows操作系統(tǒng)自帶了HID類設(shè)備的驅(qū)動(dòng)程序,用戶直接調(diào)用相應(yīng)的API函數(shù)即可完成通信,不用開發(fā)特定的Windows驅(qū)動(dòng)程序,這樣能夠有效縮短應(yīng)用程序的開發(fā)周期。本文在測控系統(tǒng)中,采用HID 設(shè)備進(jìn)行USB通信設(shè)計(jì)。

      2 測控系統(tǒng)USB通信設(shè)計(jì)

      根據(jù)系統(tǒng)功能需求,測控系統(tǒng)可分為系統(tǒng)上層、系統(tǒng)底層、中控室和系統(tǒng)外設(shè)4個(gè)部分。圖1為測控系統(tǒng)原理框圖。

      圖1 測控系統(tǒng)原理框圖

      系統(tǒng)上層為基于C#語言的Windows應(yīng)用程序,主要完成測控系統(tǒng)的數(shù)據(jù)交互功能。

      測控系統(tǒng)底層為測控系統(tǒng)核心,主要由STM32F103VET6處理器(簡稱STM32)和μC/OS-II實(shí)時(shí)操作系統(tǒng)構(gòu)成。主要通過對(duì)應(yīng)的命令方式完成對(duì)外設(shè)進(jìn)行控制、傳感器測量信號(hào)采集、粉料流量計(jì)算與控制。

      中控室為測控系統(tǒng)的遠(yuǎn)程監(jiān)控終端,通過4~20mA電流實(shí)現(xiàn)測控系統(tǒng)的流量監(jiān)測與控制。

      系統(tǒng)外設(shè)主要包括變頻器、繼電器、電動(dòng)機(jī)以及各類信號(hào)終端。系統(tǒng)底層通過對(duì)應(yīng)的命令方式對(duì)外設(shè)進(jìn)行控制,或?qū)鞲衅鳒y量信號(hào)進(jìn)行采集。

      2.1 測控系統(tǒng)底層USB通信設(shè)計(jì)

      STM32為ST 公司推出的基于ARM Cortex-M3 內(nèi)核的微控制器,自帶USB全速設(shè)備接口,支持USB2.0通信協(xié)議,可配置1~8 個(gè)USB 端點(diǎn),包含512 字節(jié)的SRAM 數(shù)據(jù)緩沖區(qū)。因此,基于STM32的USB通信設(shè)計(jì)可以有效簡化系統(tǒng)硬件電路。

      圖2 為測控系統(tǒng)USB 接口硬件電路圖。其中,JPUSBENABLE接口用于實(shí)現(xiàn)對(duì)測控系統(tǒng)USB通信功能控制,USBENABLE用于底層應(yīng)用程序控制USB 設(shè)備的連接狀態(tài)。

      2.1.1 HID設(shè)備內(nèi)核定義

      圖2 測控系統(tǒng)USB接口硬件電路

      在進(jìn)行USB通信設(shè)計(jì)之前,必須完成USB設(shè)備的底層驅(qū)動(dòng)設(shè)計(jì)。將ST 公司提供的針對(duì)于STM32 的USB固件庫移植到現(xiàn)有工程目錄中,這樣只需修改庫文件中關(guān)于USB設(shè)備的相關(guān)定義即可。在該庫中,提供了完整的HID設(shè)備定義所需描述符,包括設(shè)備描述符、配置描述符、報(bào)告描述符、廠商字符串、產(chǎn)品字符串等。只需根據(jù)需要進(jìn)行相關(guān)描述符的修改即可滿足要求,在此,只針對(duì)設(shè)備描述符、配置描述符、報(bào)告描述符做簡要介紹。

      (1)設(shè)備描述符

      設(shè)備描述符主要完成USB設(shè)備的基本定義,主要包括設(shè)備類、最大數(shù)據(jù)包大小、配置個(gè)數(shù)等。在這里進(jìn)行如下定義:

      設(shè)備類:HID設(shè)備。

      最大包大?。?4字節(jié)。

      配置個(gè)數(shù):1。

      (2)配置描述符

      配置描述符主要完成USB設(shè)備的配置定義,包括當(dāng)前配置下的接口個(gè)數(shù)、接口定義、每個(gè)接口下的端點(diǎn)定義。在本測控系統(tǒng)的USB設(shè)備配置描述符中有如下定義:

      接口個(gè)數(shù):1。

      接口端點(diǎn)個(gè)數(shù):2(一個(gè)IN 端點(diǎn)和一個(gè)OUT 端點(diǎn))。

      端點(diǎn)最大包大?。?4字節(jié)。

      (3)報(bào)告描述符

      HID設(shè)備要和主機(jī)進(jìn)行正常通信,必須在主機(jī)對(duì)設(shè)備枚舉時(shí)提供完整的通信報(bào)文描述符,主機(jī)將根據(jù)設(shè)備提供的報(bào)告描述符進(jìn)行USB通信控制。在報(bào)告描述符中可以定義多個(gè)報(bào)告(輸入報(bào)告、輸出報(bào)告),在這里,只定義一個(gè)輸入報(bào)告和一個(gè)輸出報(bào)告,其中報(bào)告大小均為64字節(jié)。

      2.1.2 基于μC/OS-II的USB通信設(shè)計(jì)

      μC/OS-II為多任務(wù)實(shí)時(shí)操作系統(tǒng),通過多任務(wù)的編程方式易于實(shí)現(xiàn)具有較高性能的嵌入式系統(tǒng)。目前測控系統(tǒng)包含5個(gè)任務(wù):

      CACULATE_TASK:計(jì)算任務(wù),完成粉料流量的計(jì)算。

      CTRL_TASK:控制任務(wù),完成測控系統(tǒng)流量的控制。

      GETWEIGHT_TASK:稱重任務(wù),讀取稱重倉的數(shù)據(jù)。

      UART_TASK:串口通信任務(wù),完成串口的數(shù)據(jù)交換。

      DETECT_TASK:檢測任務(wù)。實(shí)時(shí)監(jiān)測測控系統(tǒng)的工作狀態(tài)。

      基于此,測控系統(tǒng)底層應(yīng)用程序新增USB 通信數(shù)據(jù)接收任務(wù)USBCOMRX_TASK 和數(shù)據(jù)發(fā)送任務(wù)USBCOMTX_TASK。其中,USBCOMRX_TASK 任務(wù)實(shí)時(shí)接收上層應(yīng)用程序下發(fā)的命令,并將命令進(jìn)行解析處理;USBCOMTX_TASK 任務(wù)實(shí)時(shí)將相關(guān)數(shù)據(jù)通過USB接口發(fā)送到上層應(yīng)用程序。

      為提高通信數(shù)據(jù)的可靠性,設(shè)計(jì)了專用的環(huán)形數(shù)據(jù)緩沖區(qū)。圖3為數(shù)據(jù)緩沖區(qū)結(jié)構(gòu)示意圖,其最小單位為數(shù)據(jù)包。

      圖3 數(shù)據(jù)緩沖區(qū)結(jié)構(gòu)示意圖

      在程序設(shè)計(jì)時(shí)有如下定義:

      //數(shù)據(jù)緩沖區(qū)

      //數(shù)據(jù)起始位置

      //數(shù)據(jù)結(jié)束位置

      //通信信號(hào)量

      緩沖區(qū)由二維數(shù)組構(gòu)成,每一行代表一幀數(shù)據(jù),由BUFLEN 幀數(shù)據(jù)組成,每幀數(shù)據(jù)長度為CMDLEN。其中,DataStart 指示緩沖區(qū)有效數(shù)據(jù)包的起始位置,DataStop指示緩沖區(qū)有效數(shù)據(jù)包的結(jié)束位置。USB_sem為通信所需信號(hào)量,對(duì)于接收數(shù)據(jù)緩沖區(qū),USB接收中斷服務(wù)子程序中將接收到的數(shù)據(jù)包復(fù)制到該緩沖區(qū)中,并更新DataStop值,然后通過該信號(hào)量通知USBCOMRX_TASK 進(jìn)行數(shù)據(jù)處理;對(duì)于發(fā)送數(shù)據(jù)緩沖區(qū),需要通過USB接口發(fā)送數(shù)據(jù)的任務(wù),將待發(fā)送數(shù)據(jù)填充到相應(yīng)的緩沖區(qū)中,并更新DataStop值,然后利用該信號(hào)量通知USBCOMTX_TASK 進(jìn)行數(shù)據(jù)發(fā)送。

      圖4為USBCOMRX_TASK 任務(wù)流程圖。當(dāng)任務(wù)收到接收信號(hào)量時(shí),循環(huán)處理緩沖區(qū)中DataStart 至DataStop之間的有效數(shù)據(jù)包。

      圖4 USBCOMRX_TASK任務(wù)流程圖

      圖5 為USBCOMTX_TASK 任務(wù)流程圖。當(dāng)任務(wù)收到發(fā)送信號(hào)量時(shí),循環(huán)發(fā)送緩沖區(qū)中DataStart至DataStop之間的有效數(shù)據(jù)包。

      圖5 USBCOMTX_TASK任務(wù)流程圖

      2.2 測控系統(tǒng)上層USB通信設(shè)計(jì)

      系統(tǒng)上層為基于C#語言的Windows應(yīng)用程序,基于此進(jìn)行測控系統(tǒng)上層USB 通信設(shè)計(jì)。測控系統(tǒng)上層USB 通信設(shè)計(jì)主要有兩個(gè)方面:USB 連接狀態(tài)監(jiān)測和USB數(shù)據(jù)通信。

      2.2.1 USB連接狀態(tài)監(jiān)測

      USB連接狀態(tài)監(jiān)測主要對(duì)測控系統(tǒng)的連接狀態(tài)進(jìn)行監(jiān)測,完成USB正常通信之前的準(zhǔn)備工作。為實(shí)現(xiàn)USB連接狀態(tài)的實(shí)時(shí)監(jiān)測,采用線程的方式進(jìn)行設(shè)計(jì)。

      圖6為USB連接狀態(tài)監(jiān)測線程UsbDeviceStatus流程圖。USBConnected用于指示HID設(shè)備的連接狀態(tài),若目標(biāo)USB設(shè)備已經(jīng)連接主機(jī),則堵塞當(dāng)前線程,一旦監(jiān)測到USB設(shè)備連接斷開,則繼續(xù)輪詢主機(jī)上的HID設(shè)備。

      圖6 USB連接狀態(tài)監(jiān)測流程圖

      2.2.2 USB數(shù)據(jù)通信

      在Windows操作系統(tǒng)中,應(yīng)用程序通過文件操作的方式使用USB設(shè)備。在USB連接狀態(tài)監(jiān)測線程中,如果查找到目標(biāo)HID 設(shè)備,會(huì)創(chuàng)建相應(yīng)的文件操作句柄供應(yīng)用程序使用。

      文件的操作有4種方式:異步讀、同步寫、異步讀和異步寫。讀、寫文件操作即申請一次接收、發(fā)送數(shù)據(jù)操作。在異步模式下,應(yīng)用程序向USB控制器發(fā)送一次請求之后,無論請求是否成功,相應(yīng)的請求函數(shù)即刻返回,將剩余的工作交由USB驅(qū)動(dòng)程序完成;在同步模式下,則必須等到請求成功之后才返回。采用同步讀的方式可以有效提高應(yīng)用程序處理通信數(shù)據(jù)的實(shí)時(shí)性。在此采用同步讀和異步寫的方式進(jìn)行USB通信。

      采用同步讀方式通信時(shí),若底層沒有數(shù)據(jù)包發(fā)送,則當(dāng)前線程會(huì)處于堵塞狀態(tài),直到讀取到數(shù)據(jù)線程恢復(fù)運(yùn)行。在此采用線程的方式完成USB數(shù)據(jù)的同步讀操作。

      圖7為USB接收數(shù)據(jù)線程流程圖。通過ReadFile()函數(shù)的返回值即可判斷USB的連接狀態(tài)。表1為Read-File()函數(shù)返回狀態(tài)值對(duì)應(yīng)的USB設(shè)備連接狀態(tài)。

      表1 ReadFile()函數(shù)返回狀態(tài)含義

      當(dāng)應(yīng)用程序需要通過USB總線發(fā)送數(shù)據(jù)時(shí),首先會(huì)檢測當(dāng)前USB 設(shè)備的連接狀態(tài),若狀態(tài)為“連接正常”,則調(diào)用WriteFile()函數(shù)進(jìn)行相應(yīng)數(shù)據(jù)發(fā)送。

      圖7 USB接收數(shù)據(jù)線程流程圖

      結(jié) 語

      根據(jù)系統(tǒng)功能需,完成了測控系統(tǒng)的USB通信功能設(shè)計(jì),解決了如下幾個(gè)問題:

      ①采用USB全速通信方式,通信速率高達(dá)12 Mbps,較大程度提高了測控系統(tǒng)流量數(shù)據(jù)的采集速率,為流量控制算法研究提供了更加完整的數(shù)據(jù)支持,解決了RS-232串口通信速率低的局限性。

      ②增加USB通信方式,應(yīng)用程序可以更加方便地監(jiān)測測控系統(tǒng)的通信狀態(tài),有效提高通信連接和數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

      ③有效解決了RS-232串口通信不支持熱插拔的問題,使得通信更加方便靈活。

      針對(duì)于RS-232串口通信的應(yīng)用局限性,進(jìn)行了測控系統(tǒng)的USB通信設(shè)計(jì),提高了科氏粉料流量測控系統(tǒng)的靈活性和應(yīng)用可擴(kuò)展性,在今后的市場中將具有更廣闊的應(yīng)用前景,同時(shí),該測控系統(tǒng)的USB通信設(shè)計(jì)方法對(duì)嵌入式高速數(shù)據(jù)采集系統(tǒng)有一定的參考價(jià)值。

      [1]耿春明,儲(chǔ)成,滿慶豐.基于現(xiàn)場總線技術(shù)的科里奧利粉料流量測控儀表設(shè)計(jì)[J].儀表技術(shù)與傳感器,2011(9):108-110.

      [2]王鐵流,李宗方,陳東升.基于STM32的USB 數(shù)據(jù)采集模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].測控技術(shù),2009(8):37-40.

      [3]田明,徐平,黃國輝,等.基于STM32和μC/OS-II的USB數(shù)據(jù)采集系統(tǒng)[J].機(jī)電工程,2012(4):482-485.

      [4]崔陽.Windows環(huán)境下HID 設(shè)備通信接口的設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2013(7):172-175,179.

      猜你喜歡
      描述符緩沖區(qū)測控
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
      基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
      《測控電路》實(shí)踐教學(xué)改革探討
      電子測試(2018年22期)2018-12-19 05:12:58
      Linux單線程并發(fā)服務(wù)器探索
      利用CNN的無人機(jī)遙感影像特征描述符學(xué)習(xí)
      基于現(xiàn)代測控技術(shù)及其應(yīng)用分析
      向著新航程進(jìn)發(fā)——遠(yuǎn)望7號(hào)測控船首航記錄
      太空探索(2016年12期)2016-07-18 11:13:43
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      基于USB2.0協(xié)議的通用測控通信接口設(shè)計(jì)
      地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
      五河县| 石家庄市| 石屏县| 兴安县| 农安县| 白银市| 葵青区| 紫金县| 枣强县| 洛浦县| 舞钢市| 昌邑市| 蛟河市| 综艺| 望江县| 纳雍县| 恭城| 大港区| 渭源县| 高陵县| 宁城县| 临江市| 鄂托克前旗| 凤庆县| 望谟县| 曲麻莱县| 信宜市| 福建省| 汉川市| 内黄县| 昌都县| 宽甸| 尚义县| 大安市| 澄迈县| 大丰市| 永善县| 泰安市| 防城港市| 廊坊市| 沂源县|