a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 測試測量 > 設計應用 > 基于USB通信的科氏粉料流量測控系統設計

基于USB通信的科氏粉料流量測控系統設計

作者: 時間:2016-10-29 來源:網絡 收藏

引言

本文引用地址:http://www.j9360.com/article/201610/308696.htm

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

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

綜上所述,開發更為快速、方便、可靠的人機通信接口變得尤為重要。結合通信速率高、通信可靠、即插即用、成本低廉等優點,本文設計了基于通信的測控系統。

1 設備簡介

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

2 測控系統USB通信設計

根據系統功能需求,測控系統可分為系統上層、系統底層、中控室和系統外設4個部分。圖1為測控系統原理框圖。

a.jpg

系統上層為基于C#語言的Windows應用程序,主要完成測控系統的數據交互功能。

測控系統底層為測控系統核心,主要由STM32F103VET6處理器(簡稱STM32)和μC/OS—II實時操作系統構成。主要通過對應的命令方式完成對外設進行控制、傳感器測量信號采集、粉料流量計算與控制。

中控室為測控系統的遠程監控終端,通過4~20 mA電流實現測控系統的流量監測與控制。

系統外設主要包括變頻器、繼電器、電動機以及各類信號終端。系統底層通過對應的命令方式對外設進行控制,或對傳感器測量信號進行采集。

2.1 測控系統底層USB通信設計

STM32為ST公司推出的基于ARM Cortex-M3內核的微控制器,自帶USB全速設備接口,支持USB2.0通信協議,可配置1~8個USB端點,包含512字節的SRAM數據緩沖區。因此,基于STMS2的USB通信設計可以有效簡化系統硬件電路。

圖2為測控系統USB接口硬件電路圖。其中,JP-USBENABLE接口用于實現對測控系統USB通信功能控制,USBENABLE用于底層應用程序控制USB設備的連接狀態。

b.jpg

2.1.1 HID設備內核定義

在進行USB通信設計之前,必須完成USB設備的底層驅動設計。將ST公司提供的針對于STMS2的USB固件庫移植到現有工程目錄中,這樣只需修改庫文件中關于USB設備的相關定義即可。在該庫中,提供了完整的HID設備定義所需描述符,包括設備描述符、配置描述符、報告描述符、廠商字符串、產品字符串等。只需根據需要進行相關描述符的修改即可滿足要求,在此,只針對設備描述符、配置描述符、報告描述符做簡要介紹。

(1)設備描述符

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

設備類:HID設備。

最大包大小:64字節。

配置個數:1。

(2)配置描述符

配置描述符主要完成USB設備的配置定義,包括當前配置下的接口個數、接口定義、每個接口下的端點定義。在本測控系統的USB設備配置描述符中有如下定義:

接口個數:1。

接口端點個數:2(一個IN端點和一個OUT端點)。

端點最大包大小:64字節。

(3)報告描述符

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

2.1.2 基于μC/OS—II的USB通信設計

μC/OS—II為多任務實時操作系統,通過多任務的編程方式易于實現具有較高性能的嵌入式系統。目前測控系統包含5個任務:

CACULATE_TASK:計算任務,完成粉料流量的計算。

CTRL_TASK:控制任務,完成測控系統流量的控制。

GETWEIGHT_TASK:稱重任務,讀取稱重倉的數據。

UART_TFASK:串口通信任務,完成串口的數據交換。

DETECT_TASK:檢測任務。實時監測測控系統的工作狀態。

基于此,測控系統底層應用程序新增USB通信數據接收任務USBCOMRX_TASK和數據發送任務USBCOMTX_TASK。其中,USBCOMRX_TASK任務實時接收上層應用程序下發的命令,并將命令進行解析處理;USBCOMTX_TASK任務實時將相關數據通過USB接口發送到上層應用程序。

為提高通信數據的可靠性,設計了專用的環形數據緩沖區。圖3為數據緩沖區結構示意圖,其最小單位為數據包。

c.jpg

在程序設計時有如下定義:

typedef struct{

//數據緩沖區

U8 DataBuffer[BUFLEN][CMDLEN];

//數據起始位置

U8 DataStart;

//數據結束位置

U8 DataStop;

//通信信號量

OS_EVENT*USB_sem;

}UsbBuffer;

緩沖區由二維數組構成,每一行代表一幀數據,由BUFLEN幀數據組成,每幀數據長度為CMDLEN。其中,DataStart指示緩沖區有效數據包的起始位置,Datastop指示緩沖區有效數據包的結束位置。USB_sem為通信所需信號量,對于接收數據緩沖區,USB接收中斷服務子程序中將接收到的數據包復制到該緩沖區中,并更新DataStop值,然后通過該信號量通知USBCOMRX_TASK進行數據處理;對于發送數據緩沖區,需要通過USB接口發送數據的任務,將待發送數據填充到相應的緩沖區中,并更新DataStop值,然后利用該信號量通知USBCOMTX_TASK進行數據發送。

圖4為USBCOMRX_TASK任務流程圖。當任務收到接收信號量時,循環處理緩沖區中DataStart至DataStop之間的有效數據包。

e.jpg

圖5為USBCOMTX_TASK任務流程圖。當任務收到發送信號量時,循環發送緩沖區中Datastart至DataStop之間的有效數據包。

f.jpg

2.2 測控系統上層USB通信設計

系統上層為基于C#語言的Windows應用程序,基于此進行測控系統上層USB通信設計。測控系統上層USB通信設計主要有兩個方面:USB連接狀態監測和USB數據通信。

2.2.1 USB連接狀態監測

USB連接狀態監測主要對測控系統的連接狀態進行監測,完成USB正常通信之前的準備工作。為實現USB連接狀態的實時監測,采用線程的方式進行設計。

圖6為USB連接狀態監測線程UsbDeviceStatus流程圖。USBConnected用于指示HID設備的連接狀態,若目標USB設備已經連接主機,則堵塞當前線程,一旦監測到USB設備連接斷開,則繼續輪詢主機上的HID設備。

g.jpg

2.2.2 USB數據通信

在Windows操作系統中,應用程序通過文件操作的方式使用USB設備。在USB連接狀態監測線程中,如果查找到目標HID設備,會創建相應的文件操作句柄供應用程序使用。

文件的操作有4種方式:異步讀、同步寫、異步讀和異步寫。讀、寫文件操作即申請一次接收、發送數據操作。

在異步模式下,應用程序向USB控制器發送一次請求之后,無論請求是否成功,相應的請求函數即刻返回,將剩余的工作交由USB驅動程序完成;在同步模式下,則必須等到請求成功之后才返回。采用同步讀的方式可以有效提高應用程序處理通信數據的實時性。在此采用同步讀和異步寫的方式進行USB通信。

采用同步讀方式通信時,若底層沒有數據包發送,則當前線程會處于堵塞狀態,直到讀取到數據線程恢復運行。在此采用線程的方式完成USB數據的同步讀操作。

圖7為USB接收數據線程流程圖。通過ReadFile()函數的返回值即可判斷USB的連接狀態。表1為ReadFile()函數返回狀態值對應的USB設備連接狀態。

h.jpg

i.jpg

當應用程序需要通過USB總線發送數據時,首先會檢測當前USB設備的連接狀態,若狀態為“連接正常”,則調用WriteFile()函數進行相應數據發送。

結語

根據系統功能需,完成了測控系統的USB通信功能設計,解決了如下幾個問題:

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

②增加USB通信方式,應用程序可以更加方便地監測測控系統的通信狀態,有效提高通信連接和數據傳輸的可靠性。

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

針對于RS-232串口通信的應用局限性,進行了測控系統的USB通信設計,提高了科氏粉料流量測控系統的靈活性和應用可擴展性,在今后的市場中將具有更廣闊的應用前景,同時,該測控系統的USB通信設計方法對嵌入式高速數據采集系統有_定的參考價值。



評論


相關推薦

技術專區

關閉