當前位置:首頁 > 測試測量 > 測試測量
[導讀] 引言 目前,由北京航空航天大學與冀東發(fā)展集團有限責任公司合作研發(fā)的科氏粉料流量測控系統(tǒng)(以下簡稱“測控系統(tǒng)”)已經(jīng)成功應(yīng)用到工業(yè)現(xiàn)場,運行狀況良好,測量精度優(yōu)于±0.5%。測控系統(tǒng)底層和PC端

 引言

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

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

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

1 USB設(shè)備簡介

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

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

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

 


 

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

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

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

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

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

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

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

 


 

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

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

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

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

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

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

配置個數(shù):1。

(2)配置描述符

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

接口個數(shù):1。

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

端點最大包大小:64字節(jié)。

(3)報告描述符

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

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

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

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

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

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

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

DETECT_TASK:檢測任務(wù)。實時監(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ù)實時接收上層應(yīng)用程序下發(fā)的命令,并將命令進行解析處理;USBCOMTX_TASK任務(wù)實時將相關(guān)數(shù)據(jù)通過USB接口發(fā)送到上層應(yīng)用程序。

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

 


 

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

typedef struct{

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

U8 DataBuffer[BUFLEN][CMDLEN];

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

U8 DataStart;

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

U8 DataStop;

//通信信號量

OS_EVENT*USB_sem;

}UsbBuffer;

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

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

 


 

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

 


 

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

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

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

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

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

 


 

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

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

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

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

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

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

 


 

 


 

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

結(jié)語

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

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

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

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

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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉