• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于AECMF的光纖慣導(dǎo)穩(wěn)定平臺通信策略研究*

    2015-03-15 00:50:48徐振國
    艦船電子工程 2015年4期
    關(guān)鍵詞:句柄波特率板卡

    許 彩 徐振國 郭 斌

    (1.海軍駐七一九所軍事代表室 武漢 430205)(2.海軍工程大學(xué)導(dǎo)航工程系 武漢 430033)

    ?

    基于AECMF的光纖慣導(dǎo)穩(wěn)定平臺通信策略研究*

    許 彩1徐振國1郭 斌2

    (1.海軍駐七一九所軍事代表室 武漢 430205)(2.海軍工程大學(xué)導(dǎo)航工程系 武漢 430033)

    通信系統(tǒng)是數(shù)字化穩(wěn)定平臺控制系統(tǒng)的關(guān)鍵環(huán)節(jié),針對穩(wěn)定平臺高波特率、高數(shù)據(jù)更新率的通信需求,制定了基于AECMF多串口卡的通信策略。對AECMF多串口卡的工作原理及特點進(jìn)行了介紹,設(shè)計了通信程序流程,基于VC++編程實現(xiàn)了串行通信。實驗結(jié)果表明,通信系統(tǒng)工作穩(wěn)定可靠。

    穩(wěn)定平臺; AECMF; 串口通信; VC++

    Class Number TN967.2

    1 引言

    穩(wěn)定平臺[1~4]是應(yīng)用艦船、飛機(jī)搭載重力儀進(jìn)行重力測量必不可少的儀器設(shè)備。它主要為重力儀提供高度穩(wěn)定的水平基準(zhǔn)和姿態(tài)信息,消除運動載體姿態(tài)變化帶來的測量誤差,隔離振動等干擾因素對重力測量的影響,是提高重力測量精度的關(guān)鍵儀器設(shè)備之一。數(shù)字化平臺控制回路相對于傳統(tǒng)的模擬電子系統(tǒng)有體積小、成本低、可靠性高等優(yōu)勢,而數(shù)字化的通信方式是平臺控制的關(guān)鍵。文獻(xiàn)[5~6]介紹了在VC++開發(fā)平臺下,基于MSComm進(jìn)行串口編程的方法。MSComm是VC++的一個ActiveX控件,它高度集成化的特點使得串口編程更為簡單。但是,在高波特率和高數(shù)據(jù)更新頻率的情況下,用MSComm控件進(jìn)行串口通信編程,主機(jī)CPU的負(fù)荷很重,可靠性也不高。文獻(xiàn)[7~8]闡述了在VC++開發(fā)平臺下基于MOXA多串口卡和MOXA公司提供的PComm函數(shù)庫的多串口實時通信的實現(xiàn)方法。文中提到,利用MOXA多串口卡進(jìn)行串行通信,一方面可以減輕主機(jī)CPU的負(fù)荷,另一方面編程簡單。但是,智能MOXA卡只能工作在RS 232模式下[9~11],其接收數(shù)據(jù)的波特率范圍較窄。本文針對穩(wěn)定平臺的高波特率和高數(shù)據(jù)更新率的通信需求,利用AECMF多串口卡及其庫函數(shù)來實現(xiàn)串口通信,AECMF能工作在多種串口模式,能智能識別完整幀,能用于高波特率傳輸并且編程簡單。實驗證明AECMF-PCI-4/S2在高波特率、高數(shù)據(jù)更新率下通信可靠。

    2 AECMF多串口卡簡介

    AECMF-PCI-4/S2是一款多串口通訊接口板卡,它提供4個串行通訊端口,用于連接各種類型的串行設(shè)備、4個串口可以工作在三種模式:RS 232/RS 422/RS 485,RS232波特率從2400bps到115200bps可選,RS422和異步RS485波特率從2400bps到1.8432Mbps可選。其強(qiáng)大的功能能夠滿足不同用戶的工業(yè)測量和自動化控制需求,良好的兼容性適用于各類系統(tǒng)配置。它專為PCI總線設(shè)計,可用于Windows 98/2000/Xp/2003操作系統(tǒng)。AECMF-PCI-4/S2中有專門的FPGA芯片對串口通信進(jìn)行管理,其接收FIFO空間總?cè)萘繛?×8M×8bit,發(fā)送FIFO空間總?cè)萘?×511×8bit。憑借以上兩點,AECMF-PCI-4/S2可以大大降低主機(jī)CPU的通信開銷。其功能結(jié)構(gòu)如圖1所示。

    圖1 AECMF-PCI-4/S2多串口卡功能結(jié)構(gòu)圖

    如圖1所示,通過串行電平轉(zhuǎn)換電路,用戶可以對板卡的工作模式進(jìn)行切換。板卡上的FPGA的控制模塊可以對串口進(jìn)行設(shè)置,可以對通信協(xié)議與FIFO進(jìn)行控制。用戶若選擇透明模式接收,則板卡將收到的數(shù)據(jù)直接傳輸給計算機(jī);用戶若選擇按協(xié)議模式接收,則需要設(shè)置協(xié)議模式、數(shù)據(jù)長度以及幀頭、幀尾等,板卡自動判斷是否接收到一幀完整數(shù)據(jù),若已接收到完整數(shù)據(jù)幀,板卡則將其傳輸給計算機(jī)。

    3 串行通信指標(biāo)及程序流程

    本課題中上位機(jī)采用工控機(jī),下位機(jī)為光纖陀螺捷聯(lián)慣導(dǎo)系統(tǒng)。上位機(jī)實時采集慣導(dǎo)輸出的數(shù)據(jù),將數(shù)據(jù)幀解包之后,使用姿態(tài)角和角速率信息控制穩(wěn)定平臺穩(wěn)定。

    慣導(dǎo)系統(tǒng)采用422模式輸出導(dǎo)航數(shù)據(jù)。通信波特率設(shè)置為921.6Kbps,數(shù)據(jù)更新率為1000Hz。普通串口或串口卡難以可靠地接收這樣高波特率和高更新率的數(shù)據(jù),即使能正確接收,上位機(jī)的CPU也將為通信分配很多的資源和時間,難以再去可靠完成控制系統(tǒng)的其他操作。因此,本課題中使用AECMF-PCI-4/S2實現(xiàn)穩(wěn)定、可靠、智能化的串口通信。

    通信控制程序中采用多線程技術(shù),在程序中創(chuàng)建了一個子線程實現(xiàn)讀串口、提取數(shù)據(jù)、發(fā)送數(shù)據(jù)和界面更新。程序流程如圖2所示。

    圖2 通信程序流程圖

    如圖2所示,程序在主線程中打開板卡,然后創(chuàng)建子線程。串口數(shù)據(jù)首先進(jìn)入AECMF多串口卡的接收FIFO,然后子線程反復(fù)垂詢接收FIFO中是否存儲了一幀以上完整的數(shù)據(jù),若得到的結(jié)果為真,則將數(shù)據(jù)提取到上位機(jī)。上位機(jī)對數(shù)據(jù)進(jìn)行解包、保存和轉(zhuǎn)發(fā),進(jìn)而更新顯示界面。子線程循環(huán)執(zhí)行,直到主線程中關(guān)閉子線程為止。

    4 基于VC++的串行通信實現(xiàn)

    AECMF-PCI-4/S2驅(qū)動程序為Windows提供了豐富的接口函數(shù),AECMF-PCI-4/S2驅(qū)動程序接口函數(shù)按ANSI C標(biāo)準(zhǔn)編寫,以動態(tài)鏈接庫AECMFC4B.dll形式提供給用戶,能滿足用戶對板卡的操作需求。使用該鏈接庫的函數(shù)進(jìn)行串口通信程序的編寫,較之使用API通信函數(shù)進(jìn)行串口通信編程更為簡單。且該庫函數(shù)具有良好的兼容性,能適用于多種編程環(huán)境,因此可以大大縮短用戶的通信程序開發(fā)周期。目前,該庫函數(shù)專門應(yīng)用于運行環(huán)境:Windows 98/2000/2003/xp操作系統(tǒng),支持Visual C++、Visual Basic、C++ Builder和Delphi等編程語言。

    要使用AECMFC4B.dll中的函數(shù),必須在編譯選項中指明它所在的路徑。在Visual C++環(huán)境下使用AECMFC4B.dll的庫函數(shù),需要進(jìn)行以下操作。

    1) 將〈windows.h〉和〈AECMFC4B_lib.h〉包含到主程序的源文件中。

    2) 將AECMFC4B.lib文件導(dǎo)出到連接庫列表中。

    3) 將AECMFC4B_lib.h和AECMFC4B.lib文件放到執(zhí)行路徑里面。

    4.1 AECMF串行通信函數(shù)

    本課題中主要用到了以下幾個AECMFC4B.dll庫函數(shù):

    打開板卡函數(shù):AECMFC4B_Open(phAECMFC4B,CardId)。phAECMFC4B是指針變量,用來存放板卡的句柄;CardId表示板卡編號。

    關(guān)閉板卡函數(shù):AECMFC4B_Close(hAECMFC4B)。hAECMFC4B表示板卡的句柄。

    板卡復(fù)位函數(shù):Sio_Reset(hAECMFC4B)。hAECMFC4B表示板卡的句柄。

    串口工作模式設(shè)置函數(shù):Sio_SetWorkMode(hAECMFC4B,ChannelNo,Mode)。hAECMFC4B表示板卡的句柄;ChannelNo:表示通道號;Mode表示串口工作模式。

    串口數(shù)據(jù)傳輸格式設(shè)置函數(shù):Sio_SetDataFormat(hAECMFC4B,ChannelNo,DataFmt)。hAECMFC4B表示板卡的句柄;ChannelNo:表示通道號;DataFmt為結(jié)構(gòu)指針變量,存有串口工作的波特率、數(shù)據(jù)位長度、停止位長度及奇偶校驗位設(shè)置。

    串口數(shù)據(jù)幀格式設(shè)置函數(shù):Sio_SetFrameFormat(hAECMFC4B,ChannelNo,FrameFmt)。hAECMFC4B表示板卡的句柄;ChannelNo:表示通道號;FrameFmt為結(jié)構(gòu)指針變量,存有串口幀格式。

    串口數(shù)據(jù)接收方式設(shè)置函數(shù):Sio_SetRevMode(hAECMFC4B,ChannelNo,RevMode)。hAECMFC4B表示板卡的句柄;ChannelNo:表示通道號;RevMode為結(jié)構(gòu)指針變量,存有串口數(shù)據(jù)接收方式。

    函數(shù)Sio_Rx_IsFrameOver(hAECMFC4B,ChannelNo)。hAECMFC4B表示板卡的句柄;ChannelNo表示通道號。

    函數(shù)Sio_ReadFrame(hAECMFC4B,ChannelNo,RxBuf,nResult)。hAECMFC4B表示板卡的句柄;ChannelNo表示通道號;RxBuf為接收buffer,用來存放接收到的數(shù)據(jù)幀;nResult用來存放幀長度。

    4.2 部分程序代碼

    本課題的通信控制軟件中,使用AECMFC4B.dll庫函數(shù)進(jìn)行串行通信編程的部分代碼如下:

    hCard = NULL; // 板卡的句柄

    btCardID = 0; // card's ID

    CH_RMAX=1; // 最大通道數(shù)

    for (i=0; i

    {

    // 設(shè)置串口位傳輸格式

    stdf[i].BaudRate = 921600; // 設(shè)置波特率

    stdf[i].DataLength = 8; // 設(shè)置數(shù)據(jù)位長度

    stdf[i].StopBits = 1; // 設(shè)置停止位長度

    stdf[i].ParityEnable = FALSE; // 校驗位使能

    stdf[i].EvenParity = FALSE; // 設(shè)置校驗?zāi)J?/p>

    // 設(shè)置串口數(shù)據(jù)幀格式

    stff[i].HDR = 0x99; // 設(shè)置幀頭1

    stff[i].EDR = 0x66; // 設(shè)置幀頭2

    stff[i].LENR = 43; // 設(shè)置數(shù)據(jù)幀長度

    // 設(shè)置數(shù)據(jù)接收方式

    strm[i].IsProtocol = TRUE; // 設(shè)置數(shù)據(jù)接收方式為協(xié)議接收

    strm[i].ProtocolSel = 0; //串口幀協(xié)議選擇

    strm[i].SumCheckEN = FALSE; //協(xié)議接收時,硬件是否對校驗和部分進(jìn)行檢驗

    strm[i].HeadIncluded = FALSE; //協(xié)議接收時,校驗和是否包含幀起始符

    // 串口工作模式設(shè)置

    wmode[i] = 1; // 設(shè)置串口工作模式為422模式

    ……

    }

    AECMFC4B_Open(&hCard, btCardID) // 打開板卡并分配板卡資源

    Sio_Reset(hCard) // 復(fù)位所有FIFO

    for (i=0; i

    {

    Sio_SetWorkMode(hCard, i, wmode[i]) // 設(shè)置板卡工作模式

    Sio_SetRevMode(hCard, i, &(strm[i])) // 設(shè)置數(shù)據(jù)接收方式

    Sio_SetDataFormat(hCard, i, &stdf[i]) // 設(shè)置串口位傳輸格式

    Sio_SetFrameFormat(hCard, i, &stff[i]) // 設(shè)置串口數(shù)據(jù)幀格式

    }

    // 子線程線程

    DWORD WINAPI thread422(LPVOID lpParam)

    {

    WORD rt=0,wd=0;

    BYTE bufRx[RX_BUF_SIZE], chno=0;;

    int i=0;

    while (isNeedThread) // 當(dāng)接收數(shù)據(jù)的標(biāo)志位有效時,進(jìn)入解碼程序

    {

    if (strm[chno].IsProtocol) //是否按協(xié)議方式接收

    {

    if (Sio_Rx_IsFrameOver(hCard, chno)) // 是否至少接收到1幀數(shù)據(jù)

    {

    union Data data;

    Sio_ReadFrame(hCard, chno, bufRx, &rt);// bufRx為讀串口的緩沖區(qū)

    ……

    } //end of if (Sio_Rx_IsFrameOver(hCard, chno))

    }

    } // end of while (isNeedThread)…

    ……

    ExitThread(0);

    }

    5 結(jié)語

    數(shù)字化穩(wěn)定平臺的控制精度取決于測量元件的精度、伺服控制回路的數(shù)據(jù)更新頻率等因素。要想提高平臺在各種工況下的控制精度,就必須提高控制回路的伺服控制周期。因此,高速、穩(wěn)定、可靠的通信是數(shù)字化平臺控制系統(tǒng)的關(guān)鍵環(huán)節(jié)。

    AECMF多串口卡有工作模式多樣、能智能識別完整數(shù)據(jù)幀、傳輸波特率可選范圍廣以及編程簡單、工作可靠等優(yōu)勢,能夠滿足不同用戶的工業(yè)測量和自動化控制需求。本文利用AECMF多串口卡實現(xiàn)了高波特率和高數(shù)據(jù)更新率的串行通信,實驗證明,該通信系統(tǒng)工作穩(wěn)定可靠。

    [1] 馬海龍.船用激光測距儀穩(wěn)定平臺的設(shè)計與實現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2012:65-75.

    [2] 陳明杰.基于TMS320F28335數(shù)字光電穩(wěn)定系統(tǒng)的研究[D].哈爾濱:哈爾濱工程大學(xué),2012:23-39.

    [3] 朱華征,周曉堯,張文博,等.光電穩(wěn)定平臺中陀螺隨機(jī)漂移的處理方法[J].中國慣性技術(shù)學(xué)報,2009,17(2):225-230.

    [4] 周向陽,劉煒.航空遙感慣性穩(wěn)定平臺振動特性分析與隔振系統(tǒng)設(shè)計[J].中國慣性技術(shù)學(xué)報,2012,20(3):266-272.

    [5] 李薇,耿淑琴.基于VC實現(xiàn)MSP430與PC之間的異步串行通信[J].微型機(jī)與應(yīng)用,2012,31(5):23-25.

    [6] 周小剛,單斌,汪立新,等.基于PC104的嵌入式轉(zhuǎn)臺控制系統(tǒng)設(shè)計[J].自動化應(yīng)用,2013(1):62-24.

    [7] 趙素娟.基于Moxa多串口卡的多串口通信的VC++實現(xiàn)[J].計算機(jī)與現(xiàn)代化,2011(8):117-123.

    [8] 李瑞先.VC++中基于Moxa多串口卡串行通信的實現(xiàn)[J].通信技術(shù),2009,42(11):71-72,192.

    [9] 柯伯樂,池紅,湯天浩.基于MOXA多串口卡的多串口通信的實現(xiàn)[J].自動化儀表,2004,25(11):17-20.

    [10] 劉安,曹劍中,劉波,等.實時控制系統(tǒng)MOx多串口卡同步串行通信容錯算法[J].科學(xué)技術(shù)與工程,2005,5(15):1095-1099.

    [11] 丁正華,江凌云.MOXA C320Turbo多串口卡在數(shù)據(jù)實時傳輸中的應(yīng)用[J].遙測遙控,2002,23(2):62-63.

    The Fiber-optic Inertial Stable Platform Communication Strategy Based on AECMF

    XU Cai1XU Zhenguo1GUO Bin2

    (1. Navy Representative Office in the 719th Research Institute, Wuhan 430205) (2. The Department of Navigation, Navy University of Engineering, Wuhan 430033)

    Communication system is a key part of digital stable platform. Communication strategy based on AECMF is formulated, concerning the high baud rate and data update rate needed by the stable platform. The principle and characteristics of AECMF multi-port card are introduced. The process of the program is designed. Serial communication is realized based on VC++. The experimental results show that the communication system works stably and reliably.

    stable platform, AECMF, serial communication, VC++

    2014年10月12日,

    2014年11月27日

    國家重大科學(xué)儀器開發(fā)專項(編號:2011YQ12004502);國家自然科學(xué)基金(編號:41404002);海軍工程大學(xué)青年基金(編號:HGDQNEQJJ13011)資助。

    許彩,女,碩士,助理工程師,研究方向:慣性技術(shù)及應(yīng)用。徐振國,男,高級工程師,研究方向:慣性技術(shù)及應(yīng)用。郭斌,男,碩士研究生,研究方向:慣性技術(shù)及應(yīng)用。

    TN967.2

    10.3969/j.issn1672-9730.2015.04.017

    猜你喜歡
    句柄波特率板卡
    CAN 總線波特率自適應(yīng)程序設(shè)計
    智能制造(2020年5期)2020-07-03 06:24:00
    基于PCI9054的多總線通信板卡的研制
    基于FPGA的多通道模擬量采集/輸出PCI板卡的研制
    基于FPGA的異步串行通信波特率容錯設(shè)計
    電子測試(2018年7期)2018-05-16 06:27:18
    高校圖書館持久標(biāo)識符應(yīng)用研究
    編譯程序語法分析句柄問題分析與探討
    一種基于光纖數(shù)據(jù)傳輸?shù)亩喟蹇ㄜ浖绦驘龑懠夹g(shù)
    MFC應(yīng)用程序多線程混合顯示界面方法研究
    一種通用模擬量及開關(guān)量信號采集板卡的設(shè)計
    基于SPY++的軟件功能擴(kuò)展的研究
    吴忠市| 鄂伦春自治旗| 耒阳市| 天津市| 永安市| 江华| 杭州市| 夏河县| 南昌县| 公主岭市| 宣城市| 高邮市| 邯郸县| 白朗县| 兰溪市| 吉水县| 勐海县| 徐闻县| 西乌珠穆沁旗| 大英县| 琼结县| 新源县| 黄大仙区| 恩施市| 出国| 华池县| 洮南市| 黑山县| 长乐市| 松滋市| 榆中县| 象山县| 邵阳县| 视频| 东宁县| 石河子市| 万安县| 镇原县| 奉新县| 百色市| 邢台县|