亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        低空飛艇地面監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2011-09-11 10:16:56侯中峰謝利理
        微處理機(jī) 2011年4期
        關(guān)鍵詞:操縱桿飛艇調(diào)用

        茹 芬,侯中峰,謝利理

        (西北工業(yè)大學(xué)自動(dòng)化學(xué)院,西安 710129)

        1 引言

        現(xiàn)代飛艇多利用氦氣產(chǎn)生升力來進(jìn)行浮空飛行,其優(yōu)良的性價(jià)比及高可靠性,近年來已經(jīng)成為國際上的研究熱點(diǎn),我國也正在積極研制數(shù)十萬立方的平流層飛艇。作為其研究的一部分,低空實(shí)驗(yàn)飛艇(在500米以下飛行)是未來研制平流層飛艇的重要準(zhǔn)備。隨著高度的增加,大氣壓力的變化,為了保持良好的浮空姿態(tài),飛艇會(huì)有比較復(fù)雜的自身壓力調(diào)節(jié)。以某低空實(shí)驗(yàn)飛艇項(xiàng)目為背景,設(shè)計(jì)并實(shí)現(xiàn)了其地面監(jiān)控系統(tǒng)軟件。

        2 低空飛艇地面監(jiān)控系統(tǒng)概述

        飛艇一般由艇上飛行控制系統(tǒng)、通訊導(dǎo)航系統(tǒng)、任務(wù)載荷系統(tǒng)、能源動(dòng)力系統(tǒng)、氣壓調(diào)節(jié)系統(tǒng)、應(yīng)急降落系統(tǒng)及地而監(jiān)控系統(tǒng)等部分組成,可以在預(yù)定空域巡航飛行來完成空中巡查、航空拍攝、環(huán)境監(jiān)測(cè)、通訊中繼、廣告宣傳等任務(wù)。艇載計(jì)算機(jī)是艇上部分的核心,負(fù)責(zé)完成控制處理和數(shù)據(jù)通信等任務(wù)。而地面監(jiān)控系統(tǒng)以地面計(jì)算機(jī)為核心,其作用是實(shí)時(shí)監(jiān)測(cè)并記錄飛艇的飛行狀態(tài)、環(huán)境信息及任務(wù)設(shè)備數(shù)據(jù),及時(shí)準(zhǔn)確地向飛艇下達(dá)控制指令等。地面操作人員既可以通過操縱桿手動(dòng)遙控飛艇飛行,也可以通過地面監(jiān)控軟件界面發(fā)出控制指令控制飛艇飛行[1]。整個(gè)飛艇控制系統(tǒng)的基本組成部分如圖1所示。

        3 地面監(jiān)控軟件設(shè)計(jì)

        考慮到飛艇地面監(jiān)控軟件開發(fā)的效率及友好、美觀的人機(jī)交互界面,軟件的設(shè)計(jì)以美國NI(National Instruments)公司的虛擬儀器開發(fā)工具LabWindows/CVI[2]為平臺(tái)。軟件設(shè)計(jì)主要解決四個(gè)問題:①地面計(jì)算機(jī)與艇上計(jì)算機(jī)之間的實(shí)時(shí)數(shù)據(jù)交換;②操縱桿對(duì)飛艇飛行姿態(tài)的遠(yuǎn)程控制;③設(shè)計(jì)地面監(jiān)控?cái)?shù)據(jù)庫,對(duì)艇上計(jì)算機(jī)下傳數(shù)據(jù)進(jìn)行存儲(chǔ)、查詢及過程回放等;④友好的人機(jī)交互接口。由于LabWindows/CVI集成了眾多優(yōu)秀的虛擬儀器控件,給軟件的界面設(shè)計(jì)帶來了極大的方便。當(dāng)LabWindows/CVI提供的標(biāo)準(zhǔn)虛擬儀器控件不能滿足需要時(shí),可以使用VC++等其他工具開發(fā)專用的ActiveX控件,然后在實(shí)際工程中加載調(diào)用。

        圖1 低空飛艇控制系統(tǒng)組成圖

        3.1 底層通信程序設(shè)計(jì)

        在飛艇執(zhí)行飛行任務(wù)的過程中,需要與地面進(jìn)行大量實(shí)時(shí)的數(shù)據(jù)交換。這些數(shù)據(jù)包括地面上傳控制指令、艇上下傳各種狀態(tài)參數(shù)和任務(wù)設(shè)備采集的數(shù)據(jù)等。穩(wěn)定可靠的通訊是飛艇安全正常飛行的重要保證。選用全雙工數(shù)字電臺(tái),可以實(shí)現(xiàn)30~50公里范圍內(nèi)的點(diǎn)對(duì)多點(diǎn)通信,通訊距離長(zhǎng);全雙工數(shù)字電臺(tái)具備先進(jìn)的擴(kuò)頻跳頻技術(shù),抗干擾能力強(qiáng),穩(wěn)定可靠,提供最大115.2Kbps的 RS232串口傳輸速率。

        地面監(jiān)控計(jì)算機(jī)與數(shù)字電臺(tái)通過RS232串口進(jìn)行通信。LabWindows/CVI提供了RS232通信函數(shù)庫,使原本較為復(fù)雜的RS232通信變得容易實(shí)現(xiàn)。這些函數(shù)可分為打開/關(guān)閉串口函數(shù)、串口設(shè)置函數(shù)、I/O讀寫函數(shù)、調(diào)制解調(diào)器控制函數(shù)、寄存器狀態(tài)函數(shù)和回調(diào)函數(shù)等6類。

        由于LabWindows/CVI并不提供串口中斷處理函數(shù),LabWindows/CVI中串口通信是通過周期查詢方式實(shí)現(xiàn)的??梢栽O(shè)置一個(gè)定時(shí)器,定期執(zhí)行讀取串口的程序,也可以設(shè)置一個(gè)死循環(huán),通過延遲設(shè)置循環(huán)周期,這樣必須在循環(huán)內(nèi)部定義一個(gè)能夠及時(shí)響應(yīng)用戶面板回調(diào)函數(shù)和系統(tǒng)內(nèi)部事件的函數(shù)。串口編程需要以下幾個(gè)函數(shù):

        OpenCom(COM1);//打開串口1

        OpenComConfig(COM1,"COM1",9600,2,8,1,512,512);//配置串口 COM1

        ComRdByte(COM1);//讀串口1數(shù)據(jù)

        ComRd(COM1,Inbuf,100);//從串口1 的緩沖區(qū)Inbuf中讀取100個(gè)字節(jié)的數(shù)據(jù)

        ComWrtByte(COM1);//向串口1寫數(shù)據(jù)

        ComWrt(COM1,Outbuf,100);//向串口 1 的緩沖區(qū)Outbuf中寫入100個(gè)字節(jié)的數(shù)據(jù)

        CloseCom(COM1);//關(guān)閉串口1

        3.2 操縱桿驅(qū)動(dòng)程序設(shè)計(jì)

        飛艇的地面遙控采用性能優(yōu)越的USB接口操縱桿SAITEK X52,利用操縱桿上的搖桿、方向舵及按鈕,用以實(shí)現(xiàn)飛艇的俯仰、偏航等姿態(tài)的調(diào)節(jié),對(duì)油門和各種風(fēng)機(jī)的開關(guān)直接控制。在LabWindows/CVI環(huán)境下,利用微軟提供的 DirectX與Windows API函數(shù)相結(jié)合,通過設(shè)置定時(shí)器,利用消息傳遞方式來捕獲操縱桿的信息。在MMSYSTEM.H對(duì)所需的Windows API函數(shù)進(jìn)行函數(shù)聲明,應(yīng)用程序必須包含該頭文件。

        程序首先需要檢查操縱桿是否存在,包括檢查驅(qū)動(dòng)程序支持和確認(rèn)操縱桿已與系統(tǒng)相連等兩項(xiàng)工作。調(diào)用joyGetNumDevs函數(shù)檢查系統(tǒng)是否配置了操縱端口和驅(qū)動(dòng)程序。如果返回值為0,表明系統(tǒng)不支持操縱桿功能。但joyGetNumDevs并不能確定操縱桿是否已被連接上了,通過調(diào)用joyGetPosEx函數(shù)可以完成檢查是否連接上操縱桿,同時(shí)確定是否有錯(cuò)誤發(fā)生。一旦確認(rèn)了操縱桿已連上,就可以接收操縱桿發(fā)來的消息。joySetCapture通知Windows操縱桿消息應(yīng)發(fā)往何處以及發(fā)送的頻率等。joySet-Capture中的第一個(gè)參數(shù)通知Windows誰將獲取消息,第二個(gè)參數(shù)確定程序?qū)哪膫€(gè)操縱桿接收消息,第三個(gè)參數(shù)表示希望以怎樣的頻度接收消息(單位為毫秒),無論操縱桿是否移動(dòng)都將以這個(gè)頻度接收消息。joySetCapture的四個(gè)參數(shù)允許程序當(dāng)操縱桿移動(dòng)一定的距離后才接收消息,該距離由joySetThreshold設(shè)置。

        joySetCapture被調(diào)用后,窗口將接收操縱桿事件。MM_JOY1MOVE事件在joySetCapture定義的時(shí)間間隔內(nèi)發(fā)生。只有當(dāng)操縱桿的按鈕被按下時(shí),MM_JOY1BUTTONUP和MM_JOY1BUTTONDOWN事件才發(fā)生。調(diào)用joyReleaseCapture通知Windows已結(jié)束對(duì)操縱桿的調(diào)用。部分程序段如下:

        /*hwnd-接收消息的窗口句柄,uMsg-消息(命令),wParam和lParam是要傳遞的數(shù)據(jù)*/

        LRESULT NewWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)

        {

        JOYINFOEX JoyInfoEx;//包含操縱桿各種屬性的結(jié)構(gòu)體

        unsigned int uJoyID;//操縱桿編號(hào)

        switch(uMsg)

        {

        case MM_JOY1MOVE:

        JoyInfoEx.dwFlags=JOY_CAL_READ3;

        JoyInfoEx.dwSize=sizeof(JoyInfoEx);

        JoyGetPosEx(uJoyID,&JoyInfoEx);

        break;

        case MM_JOY1BUTTONDOWN:

        JoyInfoEx.dwFlags=

        JOY_RETURNBUTTONS;

        JoyInfoEx.dwSize=sizeof(JoyInfoEx);

        JoyGetPosEx(uJoyID,&JoyInfoEx);

        if(JoyInfoEx.dwButtons& JOY_BUTTON1)MessagePopup("ok","按鈕1按下");

        break;

        }

        return CallWindowProc(oldWndProc, hwnd,uMsg,wParam,lParam);

        }

        3.3 飛艇實(shí)時(shí)數(shù)據(jù)庫的設(shè)計(jì)及實(shí)現(xiàn)

        LabWindows/CVI既沒有通過標(biāo)準(zhǔn)函數(shù)庫來提供對(duì)數(shù)據(jù)庫進(jìn)行訪問操作的函數(shù),也沒有在工具包中包含數(shù)據(jù)庫引擎。要在LabWindows/CVI環(huán)境下使用數(shù)據(jù)庫,必須安裝 CVI SQL工具包[3-4]。該工具包中一共包含了11個(gè)子類的函數(shù)庫,這些API(Application Programming Interface)使LabWindows/CVI編寫的上層應(yīng)用程序可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問。雖然LabWindows/CVI中通過Microsoft的ADO(Active Data Object,動(dòng)態(tài)數(shù)據(jù)對(duì)象)接口可以支持多種類型的數(shù)據(jù)源,但最常用的還是ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連)數(shù)據(jù)源。ODBC實(shí)際上是一個(gè)函數(shù)庫,它提供了一個(gè)連接到底層數(shù)據(jù)庫系統(tǒng)的公共應(yīng)用程序接口,通過驅(qū)動(dòng)程序與底層數(shù)據(jù)庫進(jìn)行通信。在開發(fā)數(shù)據(jù)庫應(yīng)用程序時(shí),只需要為應(yīng)用程序指定一個(gè)數(shù)據(jù)源,將數(shù)據(jù)源文件配置成已創(chuàng)建好的數(shù)據(jù)庫文件(包括已經(jīng)創(chuàng)建好的數(shù)據(jù)表等),即可以在 LabWindows/CVI中利用SQL語句訪問由第三方工具開發(fā)的數(shù)據(jù)庫。

        3.3.1 數(shù)據(jù)庫的連接與斷開

        使用DBConnect打開一個(gè)新數(shù)據(jù)連接,其唯一的參數(shù)是必須包含數(shù)據(jù)源或數(shù)據(jù)提供者名以及其他數(shù)據(jù)庫需要的屬性(User ID、Password、File Name等)的字符串。使用完畢調(diào)用DBDisconnect關(guān)閉連接。

        int hdbc=0;//數(shù)據(jù)庫連接句柄

        hdbc=DBConnect("DSN=DB_Airship");//連接到數(shù)據(jù)源DB_Airship

        DBDisconnect(hdbc);//斷開數(shù)據(jù)庫連接

        3.3.2 自動(dòng) SQL映射

        使用SQL庫映射函數(shù)自動(dòng)產(chǎn)生和執(zhí)行SQL語句。通過調(diào)用DBBeginMap定義一個(gè)映射,其唯一的參數(shù)是來自DBConnect的連接句柄,而返回值作為映射的句柄。

        int hmap=DBBeginMap(hdbc);//定義SQL連接句柄

        /* 將字段映射到數(shù)組或變量*/

        DBMapColumnToChar(hmap,1,11,uutNum,&uutStat,"");

        DBMapColumnToDouble(hmap,2, &meas1,&meas1Stat);

        DBMapColumnToDouble(hmap,3, &meas2,&meas2Stat);

        DBActivateMap(hmap,"Table1");//程序映射所有的列后激活映射

        DBDeactivateMap(hmap);//結(jié)束激活映射

        3.3.3 數(shù)據(jù)庫操作

        顯式SQL語句的執(zhí)行如下:

        hstmt=DBActivateSQL(hdbc,"SELECT UUT_NUM,MEAS1,MEAS2 FROM TESTRES WHERE MEAS2 >1.0");

        除了SELECT外的大多數(shù)SQL語句不需要進(jìn)一步的處理,可以使用DBImmediateSQL。

        插入數(shù)據(jù):

        DBImmediateSQL(hdbc,"INSERT INTO Table1 VALUES('2860B456',0.4,0.6)");

        更新數(shù)據(jù):

        DBActivateSQL(hdbc,"UPDATE Table1 SET MEAS2=500.0 WHERE UUT_NUM= '2860B456'");

        刪除數(shù)據(jù):

        DBImmediateSQL (hdbc,"DELETE FROM Table1 WHERE UUT_NUM= '2860B567 '");

        3.3.4 取回結(jié)果

        采用NUMERIC控件和STRING控件來顯示數(shù)據(jù),部分程序段如下:

        while(DBFetchNext(hstmt)==DB_SUCCESS){

        SetCtrlVal(panelHandle,PANEL_uutNum,uut-Num);

        SetCtrlVal(panelHandle, PANEL_meas1,meas1);

        SetCtrlVal(panelHandle, PANEL_meas2,meas2);}

        4 結(jié)束語

        地面監(jiān)控系統(tǒng)是飛艇控制系統(tǒng)重要的組成部分。完整地給出了在LabWindows/CVI環(huán)境下地面監(jiān)控系統(tǒng)基本功能的設(shè)計(jì)與實(shí)現(xiàn)方法,完成了底層通信程序的設(shè)計(jì),并通過調(diào)用Windows API函數(shù)實(shí)現(xiàn)了對(duì)操縱桿的編程,最后詳細(xì)給出了在LabWindows/CVI環(huán)境下數(shù)據(jù)庫的開發(fā)過程。地面監(jiān)控軟件經(jīng)過運(yùn)行表明該系統(tǒng)運(yùn)行穩(wěn)定,功能完備實(shí)用,開發(fā)周期短,成本低,維護(hù)方便,具有較高的工程應(yīng)用價(jià)值。

        [1]于歌,劉剛,房建成.小型無人機(jī)地面監(jiān)控系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)械與電子,2007(7):24-26.

        [2]NI.LabWindows/CVI User Manual[M].National instruments corporation,2002.

        [3]NI.LabWindows/CVI SQL Toolkit Reference Manual[M].National instruments corporation,2002.

        [4]高水德,辛喆,水林娜.基于LabWindows/CVI的發(fā)動(dòng)機(jī)試驗(yàn)數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息(測(cè)控自動(dòng)化),2004,20(4):33-34.

        猜你喜歡
        操縱桿飛艇調(diào)用
        基于CAN總線接口的車載操縱桿設(shè)計(jì)
        輪椅概念設(shè)計(jì)
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        聯(lián)合收割機(jī)各操縱桿功能的研究
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        機(jī)場(chǎng)消防車駕駛室移動(dòng)式操縱裝置及踏板的設(shè)計(jì)
        派個(gè)飛艇去火星
        太空探索(2016年12期)2016-07-18 11:13:43
        飛艇的前世今生(下)
        飛艇的前世今生(中)
        手机av在线播放网站| 国产精品亚韩精品无码a在线| 国产精品免费看久久久8| 欧美性xxxx狂欢老少配| 人妻无码一区二区| 蜜桃av噜噜一区二区三区香| 国产激情视频高清在线免费观看| 水蜜桃在线精品视频网| 色欲av永久无码精品无码蜜桃| 日韩av无码中文无码电影| 日日碰狠狠添天天爽无码| 人妻aⅴ无码一区二区三区| 狠狠躁狠狠躁东京热无码专区| 国产精品久久久久免费a∨不卡| 人妻少妇精品视频中文字幕国语| 青青草在线免费观看视频| 精品国产一区二区三区不卡在线| 国产亚洲成av人片在线观看| 亚洲成人色区| 亚洲国产精品国自产电影| 午夜国产精品视频免费看电影| 青青草视频网站免费看| 日韩精品一区二区三区乱码 | 久久精品国产99国产精2020丨| 免费看一级a女人自慰免费| 亚洲av成人一区二区三区色| 精品女厕偷拍视频一区二区区| 末成年人av一区二区| 疯狂的欧美乱大交| 国产精品一区二区暴白浆| 国产高清一级毛片在线看| 五月天亚洲av优女天堂| 日本va中文字幕亚洲久伊人| 极品尤物一区二区三区| 成人综合婷婷国产精品久久蜜臀| 久久中文字幕乱码免费| h动漫尤物视频| 久久av不卡人妻出轨一区二区| 十四以下岁毛片带血a级| 国产精品国产三级国产AvkTV| 精品国产AⅤ一区二区三区V免费|