国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ACTS數(shù)據(jù)有效性檢驗(yàn)算法仿真

2010-09-27 08:34:30,2
電訊技術(shù) 2010年5期
關(guān)鍵詞:飛行數(shù)據(jù)線程報(bào)文

,2

(1.空軍工程大學(xué) 工程學(xué)院,西安 710038;2.北京航空航天大學(xué) 后備軍官選拔培訓(xùn)辦公室,北京 100083)

1 引 言

20世紀(jì)70年代,“越戰(zhàn)”的經(jīng)驗(yàn)教訓(xùn)促使美國(guó)空軍開(kāi)始利用技術(shù)手段監(jiān)控、評(píng)估空戰(zhàn)訓(xùn)練過(guò)程,客觀實(shí)時(shí)評(píng)估對(duì)抗結(jié)果,實(shí)現(xiàn)訓(xùn)練模式的變革。

近年來(lái),以新武器裝備快速發(fā)展為主要標(biāo)志的空軍轉(zhuǎn)型建設(shè)快速推進(jìn),軍事訓(xùn)練改革不斷深入??諔?zhàn)訓(xùn)練系統(tǒng)運(yùn)用實(shí)時(shí)仿真、航電系統(tǒng)信息監(jiān)控、高帶寬數(shù)傳等技術(shù)手段,實(shí)現(xiàn)對(duì)飛機(jī)技術(shù)狀態(tài)、空中動(dòng)態(tài)、訓(xùn)練質(zhì)量的實(shí)時(shí)監(jiān)控。這些都需要準(zhǔn)確、可靠的飛行數(shù)據(jù)支持。為獲得準(zhǔn)確、連續(xù)、平滑的數(shù)據(jù),客觀公正地評(píng)定空中訓(xùn)練效果,提高訓(xùn)練質(zhì)量,本文提出一種空戰(zhàn)訓(xùn)練系統(tǒng)(Air Combat Training System,ACTS)數(shù)據(jù)有效性檢驗(yàn)算法,并通過(guò)仿真試驗(yàn)證明了其有效性。

2 仿真實(shí)驗(yàn)環(huán)境的搭建

2.1 地面數(shù)據(jù)接收

ACTS的飛行數(shù)據(jù)通過(guò)數(shù)據(jù)鏈進(jìn)行傳輸,這里采用兩臺(tái)PC以及兩部電臺(tái)來(lái)進(jìn)行收發(fā)飛行數(shù)據(jù)的模擬,因此采用串口通信來(lái)完成數(shù)據(jù)的接收[1-2]。

2.1.1串口類(lèi)及串口初始化

為了充分利用面向?qū)ο蟪绦蛟O(shè)計(jì)在可維護(hù)性、易修改性和可重用性三方面優(yōu)點(diǎn),廣泛使用了類(lèi)和對(duì)象。其中對(duì)于串口的所有操作都封裝在CCommCtrl類(lèi)中。該類(lèi)的定義如下:

class CCommCtrl

{

public://公共接口

CCommCtrl();//構(gòu)造函數(shù)

virtual~CCommCtrl();//析構(gòu)函數(shù)

bool OpenPort(char*portname);//打開(kāi)串口并初始化串口

bool ClosePort();//關(guān)閉串口

bool ReadFrom(LPVOID inputData,const unsigned int sizeBuffer, unsigned long&length,LPOVERLAPPED ov);//從串口讀數(shù)據(jù)

bool WriteTo(LPCVOID outputData,const unsigned int sizeBuffer, unsigned long&length,LPOVERLAPPED ov); //向串口寫(xiě)數(shù)據(jù)

bool GetCommStated();//獲得串口的狀態(tài)

HANDLE GetCommHandle();//獲得串口的句柄

private://私有變量

bool m-bCommOpen;//指明串口是否打開(kāi),true標(biāo)識(shí)打開(kāi)

HANDLE m-hComm;//串口的句柄

DCB m-dcb;//設(shè)備控制塊

};

Windows系統(tǒng)實(shí)現(xiàn)串口的通信必須先對(duì)串口的通信參數(shù)進(jìn)行初始化,而其中比較重要的是數(shù)據(jù)傳輸率、奇偶校驗(yàn)、數(shù)據(jù)比特?cái)?shù)和停止比特?cái)?shù)等。

Window API GetCommState()函數(shù)可以獲取串口的當(dāng)前配置。該函數(shù)定義如下:

BOOL GetCommState(HANDLE hFile,LPDCB lpDCB);

其中,hFile是由CreateFile()函數(shù)返回的指向已打開(kāi)串口的句柄;lpDCB為指向設(shè)備控制塊(DCB)的指針,包含各種串口通信的參數(shù)。

2.1.2多線程實(shí)現(xiàn)串口通信

報(bào)文收發(fā)線程以一個(gè)UI線程來(lái)定義。系統(tǒng)主線程首先通過(guò)調(diào)用Windows API函數(shù)完成對(duì)串口的初始化,初始化的參數(shù)由DCB結(jié)構(gòu)給出,并在主線程中自定義通信事件消息,初始化完成以后,調(diào)用MFC的AfxBeginThread()函數(shù)創(chuàng)建報(bào)文收發(fā)線程,報(bào)文收發(fā)線程在后臺(tái)對(duì)串口進(jìn)行實(shí)時(shí)監(jiān)測(cè),當(dāng)監(jiān)測(cè)到預(yù)定義的事件后,進(jìn)行相應(yīng)的消息函數(shù)處理,與此同時(shí),主線程還可以完成人機(jī)交互和協(xié)調(diào)其它線程的同步。圖1為地面接收數(shù)據(jù)時(shí)線程的處理流程。

圖1 地面數(shù)據(jù)接收流程圖Fig.1 Flowchart of ground data receiving

為了使主線程有效的控制該線程,在線程類(lèi)中定義了一個(gè)同步事件用來(lái)當(dāng)主線程需要關(guān)閉該線程時(shí)釋放串口資源,然后關(guān)閉該線程。這里通過(guò)使用WindowsAPI函數(shù)WaitForMultipleObject()來(lái)等待不同的事件以選擇不同的處理過(guò)程。

代碼實(shí)現(xiàn):

(1)主線程創(chuàng)建并啟動(dòng)報(bào)文接收線程

m-pRecvThread=(CRecvThread*)AfxBeginThread(RUNTIME-CLASS(CRecvThread),THREAD-PRIORITY-NORMAL,0,CREATE-SUSPENDED);

m-pRecvThread->ResumeThread();

(2)報(bào)文接收線程打開(kāi)串口

if(OpenComm()==false))//OpenComm()中實(shí)現(xiàn)了串口的打開(kāi)和設(shè)置

{

AfxMessageBox(″Open failure!″);

return 1;

}

(3)創(chuàng)建線程同步事件

OVERLAPPED ov;

HANDLE hWait[2];

ov.hEvent=CreateEvent(0,true,0,0);

m-hThreadTerm=CreateEvent(0,true,0,0);

hWait[0]=ov.hEvent;

hWait[1]=m-hThreadTerm;

(4)等待串口通信事件,如果串口接收到數(shù)據(jù),置事件ov.hEvent為有信號(hào)

while(abContinue)

{……

if(!::WaitCommEvent(m-CCommCtrl.GetCommHandle(),&dwEventMask,&ov))

{

DWORD error=GetLastError();

ASSERT(GetLastError()==ERROR-IO-PENDING);

}

……

}

(5)WaitForMultipleObjects()等待有用信號(hào)的產(chǎn)生,否則無(wú)限期的等待

dwWaitResult=WaitForMultipleObjects(2,hWait,FALSE,INFINITE);

(6)如果ov.hEvent為有信號(hào),即串口接收到字符,接收數(shù)據(jù)并置事件ov.hEvent為無(wú)信號(hào)

if(dwWaitResult==WAIT-OBJECT-0)

{

……

::ReadFile(m-CCommCtrl.GetCommHandle(),recvTmp,sizeof(recvTmp),&dwBytesRead,&ovRead);

……

ResetEvent(ov.hEvent);

}

(7)如果m-hThreadTerm為有信號(hào),即主線程要終止該線程,關(guān)閉串口并置事件m-hThreadTerm為無(wú)信號(hào)

else if(dwWaitResult==WAIT-OBJECT-0+1)

{

……

m-CCommCtrl.ClosePort();

ResetEvent(m-hThreadTerm);

break;

}

(8)主線程關(guān)閉串口接收線程

GetExitCodeThread(m-pRecvThread->m-hThread,&exit);

TerminateThread(m-pRecvThread->m-hThread,exit);

需要發(fā)送報(bào)文時(shí),由于發(fā)送的數(shù)據(jù)量不大并且是主動(dòng)的,所以只需要調(diào)用串口類(lèi)CCommCtrl的WriteTo接口即可完成對(duì)報(bào)文的發(fā)送。

2.2 地面數(shù)據(jù)分發(fā)

Microsoft Windows環(huán)境下的網(wǎng)絡(luò)編程接口[1,3]是Windows套接字(Windows Socket,Winsock)。Winsock提供了包括TCP/IP、IPX等多種通信協(xié)議下的編程接口。不同的Windows版本支持不同的Winsock版本,其中Windows 95等早期版本本身只支持Winsock1.1(16位)下的編程(可以通過(guò)安裝相關(guān)的軟件包使其支持Winsock2.0),而Windows98、Windows NT4.0、Windows 2000、WindowsXP 則直接支持Winsock2.0(32位)。Winsock2.0是Winsock1.1的擴(kuò)展,除兼容Winsock1.1 API外,還定義了一套可支持IP多播的與協(xié)議無(wú)關(guān)的API。

系統(tǒng)需要將報(bào)文發(fā)送到不同的客戶(hù)端,并且多播組由報(bào)文接收服務(wù)器決定,因此采用有根模式來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)分發(fā)。

使用Winsock 2.0實(shí)現(xiàn)IP多播的步驟如下(根節(jié)點(diǎn)配置):

2.2.1初始化Winsock資源

在使用Winsock之前,必須調(diào)用WSAStartup()函數(shù)初始化Windows SocketDLL。它允許應(yīng)用程序或DLL指定Windows Sockets API要求的版本。

WORD wVersionRequested;

WSADATA wsaData;

wVersionRequested=MAKEWORD(2,2);

int result=WSAStartup(wVersionRequested,&wsaData);//初始化套接字

2.2.2創(chuàng)建套接字

調(diào)用WSASocket()函數(shù)創(chuàng)建一個(gè)使用UDP套接字,它是加入多播組的初始化套接字,以后數(shù)據(jù)的發(fā)送和接收都在該套接字上進(jìn)行。針對(duì)本系統(tǒng)的需求,將參數(shù)dwFlags設(shè)置為WSA-FLAG-MULTIPOINT-C-ROOT、WSA-FLAG-MULTIPOINT-D-ROO和WSA-FLAG-OVERLAPPED的位和,指明組播方式為有根模式:

Sock=WSASocket(AF-INET,SOCK-DGRAM,IPPROTO-UDP,NULL,0,WSA-FLAG-OVERLAPPED|WSA-FLAG-MULTIPOINT-C-ROOT|WSA-FLAG-MULTIPOINT-D-ROOT);

2.2.3設(shè)置套接字的選項(xiàng)

調(diào)用setsockopt()函數(shù)為套接字設(shè)置SO-REUSEADDR選項(xiàng),以允許套接字綁扎到一個(gè)已在使用的地址上:

bFlag=TRUE;//設(shè)置套接字選項(xiàng),使套接字為可重用端口地址

setsockopt(Sock,SOL-SOCKET,SO-REUSEADDR,(char*)&bFlag,1);

2.2.4綁定套接字

調(diào)用bind()函數(shù)綁定套接字,從而將創(chuàng)建好的套接字與本地地址和本地端口聯(lián)系起來(lái)。對(duì)于多播通信來(lái)說(shuō),發(fā)送和接收數(shù)據(jù)通常采用同一個(gè)端口:

memset(&local,0,sizeof(local));

local.sin-family=AF-INET;

local.sin-port=htons((USHORT)9999);

local.sin-addr.s-addr=htonl(INADDR-ANY);

bind(Sock,(struct sockaddr FAR*)&local,sizeof(local));

2.2.5注冊(cè)網(wǎng)絡(luò)消息及其網(wǎng)絡(luò)事件

WSAAsyncSelect(Sock,m-hWnd,WM-SOCK-MSG,FD-READ);//數(shù)據(jù)等待被讀入子節(jié)點(diǎn)的配置與根節(jié)點(diǎn)類(lèi)似,只是建立套接字時(shí)的dwFlags設(shè)置有所不同。建立組播的好處就是如果系統(tǒng)需要擴(kuò)展功能,可以充分利用現(xiàn)有組播框架。

建立好組播組以后,根節(jié)點(diǎn)和子節(jié)點(diǎn)之間就可以進(jìn)行通信了,根節(jié)點(diǎn)發(fā)送報(bào)文時(shí)只需要調(diào)用sendto函數(shù),具體代碼如下:

const char*strMes=LPCTSTR(m-SendMessage);

int nSize=m-SendMessage.GetLength()+1;

sendto(Sock,strMes,nSize,0,(sockaddr*)&Remote,sizeof(Remote));

子節(jié)點(diǎn)只需要調(diào)用recvfrom函數(shù)即可獲得接收到的數(shù)據(jù)。另外,子節(jié)點(diǎn)還可以利用過(guò)濾器來(lái)實(shí)現(xiàn)報(bào)文過(guò)濾,只接收需要的報(bào)文。

實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)分發(fā)的主要意義在于:在接收ACTS飛行數(shù)據(jù)時(shí),如果報(bào)文的數(shù)目比較多,利用一個(gè)服務(wù)器端軟件進(jìn)行實(shí)時(shí)監(jiān)控將比較困難,而通過(guò)網(wǎng)絡(luò)數(shù)據(jù)分發(fā)模塊,可以將報(bào)文發(fā)送到多個(gè)客戶(hù)端,各客戶(hù)端可以分別監(jiān)視部分飛機(jī)或地面監(jiān)控系統(tǒng)的報(bào)文信息,從而可以更好更有效地實(shí)現(xiàn)ACTS對(duì)戰(zhàn)場(chǎng)的實(shí)時(shí)監(jiān)視。

2.3 數(shù)據(jù)庫(kù)

VC中使用ADO實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接[1]。由于VC在數(shù)據(jù)庫(kù)編程方面的先天缺陷,導(dǎo)致使用VC編寫(xiě)數(shù)據(jù)庫(kù)操作方面的工作比較復(fù)雜,可以利用ADO在VC中實(shí)現(xiàn)數(shù)據(jù)庫(kù)編程。

2.3.1引入ADO庫(kù)

在Visual C++中使用ADO開(kāi)發(fā)數(shù)據(jù)庫(kù)之前,需要引入ADO庫(kù)??梢栽陬^文件中引入ADO庫(kù)文件,方法如下:

#import″c:program filescommon filessystemadomsado15.dll″

#include

#include

#include″icrsint.h″

預(yù)處理指令#import使程序在編譯過(guò)程中引入ADO動(dòng)態(tài)庫(kù)(msado15.dll)。接下來(lái)的兩個(gè)“#include”語(yǔ)句引入了頭文件來(lái)定義ADO2.0的類(lèi)和接口標(biāo)識(shí)。最后的“#include”語(yǔ)句引入了ADO2.0數(shù)據(jù)綁定擴(kuò)展。

2.3.2建立數(shù)據(jù)庫(kù)連接

建立數(shù)據(jù)庫(kù)的連接需要使用連接對(duì)象(Connection Object)。首先定義一個(gè)ConnectionPtr類(lèi)型的指針,代碼如下:

ConnectionPtr m-pConnection;

然后調(diào)用Create Instance方法實(shí)例化,代碼如下:

m-pConnection.CreateInstance(uuidof(Connection));

調(diào)用Connection對(duì)象的Open方法創(chuàng)建數(shù)據(jù)庫(kù)的連接,Open函數(shù)的原型如下:

HRESULT Open(-bstr-t ConStr,-bstr-t UserID,-bstr-t Pwd,Long Opts);

其中,ConStr是一個(gè)包含連接信息的字符串,UserID是訪問(wèn)數(shù)據(jù)庫(kù)的用戶(hù)名稱(chēng),Pwd是訪問(wèn)數(shù)據(jù)庫(kù)的密碼,Opts為可選參數(shù)。如果在連接字符串ConStr中包含了數(shù)據(jù)庫(kù)用戶(hù)名和密碼,UserID和Pwd值可以為空。

2.3.3創(chuàng)建命令對(duì)象和記錄集對(duì)象

CommandPtr m-pCommand;

RecordsetPtr m-pRecordset;

m-pCommand.CreateInstance(″ADODB.Command″);

m-pRecordset.CreateInstance(-uuidof(Recordset));

然后將建立的數(shù)據(jù)庫(kù)連接賦給m-pCommand,這樣利用m-pCommand就可以對(duì)打開(kāi)的數(shù)據(jù)庫(kù)進(jìn)行SQL操作了:

m-pCommand->ActiveConnection=m-pConnection。

2.3.4將報(bào)文數(shù)據(jù)插入數(shù)據(jù)庫(kù)

在每類(lèi)報(bào)文譯碼類(lèi)中定義了一個(gè)GenerateInsertSQL函數(shù),該函數(shù)無(wú)參數(shù),返回此類(lèi)報(bào)文的插入SQL語(yǔ)句,這樣,對(duì)于某一類(lèi)報(bào)文,其插入數(shù)據(jù)庫(kù)的代碼如下:

//p為指向運(yùn)行時(shí)某種報(bào)文的對(duì)象的指針

//插入數(shù)據(jù)字符串

CString sql=p->GenerateInsertSQL();m-pCommand->CommandText=sql;

m-pCommand->Execute(&vNULL,&vNULL,adCmdText);

3 數(shù)據(jù)有效性檢驗(yàn)算法仿真

3.1 數(shù)據(jù)有效性檢驗(yàn)?zāi)K設(shè)計(jì)

3.1.1模塊主要功能

有效性檢驗(yàn)?zāi)K[4]主要實(shí)現(xiàn)以下幾個(gè)關(guān)鍵功能:

(1)根據(jù)ID編號(hào)或者地址,判斷該飛行數(shù)據(jù)是屬于哪架飛機(jī)的。ACTS可以同時(shí)實(shí)時(shí)監(jiān)控10架飛機(jī),每架飛機(jī)都有自己的ID號(hào),根據(jù)ID號(hào)就可以劃分該數(shù)據(jù)屬于哪架飛機(jī)的數(shù)據(jù);

(2)根據(jù)時(shí)間戳判斷飛行數(shù)據(jù)是否延時(shí)或丟失。時(shí)間戳是判斷數(shù)據(jù)到達(dá)時(shí)間的重要依據(jù),有了時(shí)間戳才可以準(zhǔn)確判斷飛行數(shù)據(jù)是否發(fā)生了延時(shí)或者丟失。但前提是只有實(shí)現(xiàn)了ACTS各個(gè)分系統(tǒng)內(nèi)的時(shí)間同步,才可以利用時(shí)間戳來(lái)獲取這些數(shù)據(jù)之間的關(guān)系,對(duì)這些數(shù)據(jù)進(jìn)行分析;

(3)根據(jù)各種飛行數(shù)據(jù)的特征以及先前獲得的經(jīng)驗(yàn)值進(jìn)行預(yù)估,根據(jù)預(yù)估值判斷數(shù)據(jù)是否正確。對(duì)于像一些記錄飛機(jī)工作是否正常的數(shù)據(jù),我們可以直接根據(jù)該類(lèi)數(shù)據(jù)正常值的范圍就可以判斷數(shù)據(jù)是否正確;而對(duì)于像記錄飛機(jī)航跡的這些實(shí)時(shí)變化很大的數(shù)據(jù),我們就必須在該數(shù)據(jù)到達(dá)之前,利用卡爾曼濾波外推算法,估算出該數(shù)據(jù)的預(yù)估值,然后在該數(shù)據(jù)到達(dá)時(shí)進(jìn)行比對(duì),從而判斷出該數(shù)據(jù)是否正確;

(4)數(shù)據(jù)發(fā)生延時(shí)、丟失或錯(cuò)誤情況后的處理。飛行數(shù)據(jù)地面預(yù)處理系統(tǒng)要完成工作就是將譯碼后正確、連續(xù)的數(shù)據(jù)送給后續(xù)數(shù)據(jù)處理系統(tǒng)進(jìn)行結(jié)算、實(shí)時(shí)顯示等操作。所以如果一旦地面接收到的數(shù)據(jù)發(fā)生上述情況,就必須采取相應(yīng)補(bǔ)償措施進(jìn)行處理。

3.1.2數(shù)據(jù)有效性檢驗(yàn)

有效性檢驗(yàn)?zāi)K處理數(shù)據(jù)的過(guò)程如圖2所示。

(1)等待譯碼模塊送來(lái)的數(shù)據(jù);

(2)根據(jù)時(shí)間戳判斷數(shù)據(jù)是否延時(shí)或丟失。如果該數(shù)據(jù)在有效時(shí)間內(nèi)到達(dá),則將該數(shù)據(jù)進(jìn)行數(shù)據(jù)正確性檢驗(yàn)。如果延時(shí)或丟失,就在日志中記錄該事件的發(fā)生,然后用其它輔助設(shè)備的測(cè)量值或者預(yù)估值代替該數(shù)據(jù);

(3)利用正確性檢驗(yàn)算法進(jìn)行數(shù)據(jù)的正確性檢驗(yàn)。如果數(shù)據(jù)正確,則將數(shù)據(jù)存入數(shù)據(jù)庫(kù)并進(jìn)行進(jìn)一步的實(shí)時(shí)解算、顯示等處理。如果數(shù)據(jù)不正確,就在日志中記錄該事件的發(fā)生,然后用其它輔助設(shè)備的測(cè)量值或者預(yù)估值代替該數(shù)據(jù),進(jìn)行后續(xù)處理。

圖2 數(shù)據(jù)有效性檢驗(yàn)流程圖Fig.2 Data validity inspection flowchart

3.2 數(shù)據(jù)有效性檢驗(yàn)算法仿真驗(yàn)證

對(duì)數(shù)據(jù)有效性檢驗(yàn)算法進(jìn)行驗(yàn)證的航跡數(shù)據(jù)來(lái)源于某型飛機(jī)的部分試飛數(shù)據(jù)。數(shù)據(jù)包括兩部分:

(1)利用本機(jī)的機(jī)載飛行數(shù)據(jù)記錄器記錄的數(shù)據(jù),由于不經(jīng)過(guò)遠(yuǎn)距離無(wú)線傳輸,認(rèn)為是正確數(shù)據(jù);

(2)在機(jī)載飛行數(shù)據(jù)記錄器記錄數(shù)據(jù)的同時(shí),由電臺(tái)無(wú)線傳輸?shù)降孛嬗涗浧鞯臄?shù)據(jù),由于實(shí)時(shí)傳輸過(guò)程環(huán)境的影響,數(shù)據(jù)中包含延時(shí)、丟失、錯(cuò)誤等情況。

利用試飛數(shù)據(jù)來(lái)驗(yàn)證有效性檢驗(yàn)算法的方法是:選取地面記錄器上的部分出錯(cuò)的航跡數(shù)據(jù),然后由數(shù)據(jù)有效性檢驗(yàn)算法對(duì)這段錯(cuò)誤航跡數(shù)據(jù)進(jìn)行檢驗(yàn)和處理,最后將檢驗(yàn)及處理后的這段航跡數(shù)據(jù)與機(jī)載飛行數(shù)據(jù)記錄器上的原始航跡數(shù)據(jù)進(jìn)行比對(duì)。

該組飛行數(shù)據(jù)采樣記錄頻率為1次/秒,這里選取第462~622 s的大氣機(jī)高度數(shù)據(jù)進(jìn)行檢驗(yàn)。這段時(shí)間內(nèi)可能由于傳輸環(huán)境惡劣等原因?qū)е碌?82 s高度值出現(xiàn)明顯偏差,第512 s數(shù)據(jù)發(fā)生延時(shí),第565 s數(shù)據(jù)丟失。結(jié)果如圖3~5所示。

根據(jù)上述驗(yàn)證結(jié)果看,有效性檢驗(yàn)算法檢測(cè)出了數(shù)據(jù)的錯(cuò)誤、延時(shí)和丟失,并進(jìn)行相應(yīng)補(bǔ)償處理,得到一組連續(xù)的數(shù)據(jù)。與機(jī)載記錄的試飛數(shù)據(jù)進(jìn)行比較可以看出,該有效性檢驗(yàn)算法較準(zhǔn)確地恢復(fù)了出錯(cuò)的數(shù)據(jù),取得了良好效果。

圖3 地面記錄的試飛數(shù)據(jù):飛機(jī)從4.5 km下降至2.1 km,改平后上升至3.9 kmFig.3 Ground recording test-fly data:the airplane descended from 4.5 km to 2.1 km and rose to 3.9 km after being steady

圖4 經(jīng)有效性檢驗(yàn)算法處理后:飛機(jī)從4.5 km下降至2.1 km,改平后上升至3.9 kmFig.4 Data validity inspection algorithm processing:the airplane descended from 4.5 km to 2.1 km and rose to 3.9 km after being steady

圖5 機(jī)載記錄的原始試飛數(shù)據(jù):飛機(jī)從4.5 km下降至2.1 km,改平后上升至3.9 kmFig.5 Airborne recording originality test-fly data:the airplane descended from 4.5 km to 2.1 km and rose to 3.9 km after being steady

4 結(jié)束語(yǔ)

本文提出了一種ACTS數(shù)據(jù)有效性檢驗(yàn)算法,有效地解決了數(shù)據(jù)傳輸過(guò)程中出現(xiàn)的錯(cuò)誤、延時(shí)和丟失等問(wèn)題。該檢驗(yàn)算法對(duì)出錯(cuò)的數(shù)據(jù)進(jìn)行了修正,得到準(zhǔn)確、連續(xù)、平滑的數(shù)據(jù),供地面監(jiān)控系統(tǒng)準(zhǔn)確地實(shí)時(shí)監(jiān)控及評(píng)估。進(jìn)一步研究重點(diǎn)是對(duì)數(shù)據(jù)有效性檢驗(yàn)?zāi)K實(shí)時(shí)性進(jìn)行分析和驗(yàn)證。

參考文獻(xiàn):

[1] 喬林,楊志剛.Visual C++6.0 高級(jí)編程技術(shù)——MFC與多線程篇[M].北京:中國(guó)鐵道出版社,2000.

QIAO Lin,YANG Zhi-gang. Visual C++6.0 Advanced Programming Technology:MFC and Multi-threading[M].Beijing: China Railway Press,2000. (in Chinese)

[2] 李現(xiàn)勇.Visual C++串口通信技術(shù)與工程實(shí)踐[M].北京:人民郵電出版社,2004.

LI Xian-yong. Visual C++ Serial Communication Technology and Engineering Practice[M].Beijing:People′s Posts& Telecom Press,2004.(in Chinese)

[3] Andrew S Tanenbaum.Computer Networks[M].3rd ed. New York:Prentice Hall International,Inc.,1997.

[4] 王帥.飛行器航跡數(shù)據(jù)產(chǎn)生及有效性檢測(cè)[D].成都:電子科技大學(xué),2004.

WANG Shuai.Aircraft Track Data Generation and Data Validity Inspection[D].Chengdu:University of Electronic Science and Technology of China,2004.(in Chinese)

[5] 梁德文.戰(zhàn)斗機(jī)航空電子系統(tǒng)最新的發(fā)展趨勢(shì)——網(wǎng)絡(luò)化[J].電訊技術(shù),2008,48(6):93-97.

LIANG De-wen.Review on the New Development of Fighter Avionics System-Networking [J].Telecommunication Engineering,2008,48(6):93-97.(in Chinese)

[6] DRS Air Combat Training System[Z].Florida:DRS Training & Control System,INC.,2007.

[7] Autonomous Air Combat Maneuvering Instrumentation Training System[Z].Ireal:Isreal Aerospace Industries,Ltd.,2008.

猜你喜歡
飛行數(shù)據(jù)線程報(bào)文
基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
淺析反駁類(lèi)報(bào)文要點(diǎn)
GARMIN1000系統(tǒng)維修平臺(tái)搭建預(yù)研究
淺談飛行數(shù)據(jù)集中處理流程管理
淺談linux多線程協(xié)作
ATS與列車(chē)通信報(bào)文分析
基于廣域信息管理的飛行數(shù)據(jù)服務(wù)設(shè)計(jì)與實(shí)現(xiàn)
Linux線程實(shí)現(xiàn)技術(shù)研究
么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
渝中区| 乡宁县| 中方县| 辰溪县| 汾阳市| 永平县| 姜堰市| 扎兰屯市| 库尔勒市| 潍坊市| 永善县| 台南县| 农安县| 丰城市| 亳州市| 沙洋县| 新安县| 嘉鱼县| 湖南省| 隆回县| 武隆县| 天长市| 英超| 东丽区| 镇原县| 施甸县| 贺州市| 上高县| 家居| 荆门市| 荃湾区| 松溪县| 称多县| 慈溪市| 华容县| 桓仁| 嘉善县| 涪陵区| 乐昌市| 安陆市| 辽阳县|