許 彩 徐振國 郭 斌
(1.海軍駐七一九所軍事代表室 武漢 430205)(2.海軍工程大學導航工程系 武漢 430033)
?
基于AECMF的光纖慣導穩定平臺通信策略研究*
許 彩1徐振國1郭 斌2
(1.海軍駐七一九所軍事代表室 武漢 430205)(2.海軍工程大學導航工程系 武漢 430033)
通信系統是數字化穩定平臺控制系統的關鍵環節,針對穩定平臺高波特率、高數據更新率的通信需求,制定了基于AECMF多串口卡的通信策略。對AECMF多串口卡的工作原理及特點進行了介紹,設計了通信程序流程,基于VC++編程實現了串行通信。實驗結果表明,通信系統工作穩定可靠。
穩定平臺; AECMF; 串口通信; VC++
Class Number TN967.2
穩定平臺[1~4]是應用艦船、飛機搭載重力儀進行重力測量必不可少的儀器設備。它主要為重力儀提供高度穩定的水平基準和姿態信息,消除運動載體姿態變化帶來的測量誤差,隔離振動等干擾因素對重力測量的影響,是提高重力測量精度的關鍵儀器設備之一。數字化平臺控制回路相對于傳統的模擬電子系統有體積小、成本低、可靠性高等優勢,而數字化的通信方式是平臺控制的關鍵。文獻[5~6]介紹了在VC++開發平臺下,基于MSComm進行串口編程的方法。MSComm是VC++的一個ActiveX控件,它高度集成化的特點使得串口編程更為簡單。但是,在高波特率和高數據更新頻率的情況下,用MSComm控件進行串口通信編程,主機CPU的負荷很重,可靠性也不高。文獻[7~8]闡述了在VC++開發平臺下基于MOXA多串口卡和MOXA公司提供的PComm函數庫的多串口實時通信的實現方法。文中提到,利用MOXA多串口卡進行串行通信,一方面可以減輕主機CPU的負荷,另一方面編程簡單。但是,智能MOXA卡只能工作在RS 232模式下[9~11],其接收數據的波特率范圍較窄。本文針對穩定平臺的高波特率和高數據更新率的通信需求,利用AECMF多串口卡及其庫函數來實現串口通信,AECMF能工作在多種串口模式,能智能識別完整幀,能用于高波特率傳輸并且編程簡單。實驗證明AECMF-PCI-4/S2在高波特率、高數據更新率下通信可靠。
AECMF-PCI-4/S2是一款多串口通訊接口板卡,它提供4個串行通訊端口,用于連接各種類型的串行設備、4個串口可以工作在三種模式:RS 232/RS 422/RS 485,RS232波特率從2400bps到115200bps可選,RS422和異步RS485波特率從2400bps到1.8432Mbps可選。其強大的功能能夠滿足不同用戶的工業測量和自動化控制需求,良好的兼容性適用于各類系統配置。它專為PCI總線設計,可用于Windows 98/2000/Xp/2003操作系統。AECMF-PCI-4/S2中有專門的FPGA芯片對串口通信進行管理,其接收FIFO空間總容量為4×8M×8bit,發送FIFO空間總容量4×511×8bit。憑借以上兩點,AECMF-PCI-4/S2可以大大降低主機CPU的通信開銷。其功能結構如圖1所示。

圖1 AECMF-PCI-4/S2多串口卡功能結構圖
如圖1所示,通過串行電平轉換電路,用戶可以對板卡的工作模式進行切換。板卡上的FPGA的控制模塊可以對串口進行設置,可以對通信協議與FIFO進行控制。用戶若選擇透明模式接收,則板卡將收到的數據直接傳輸給計算機;用戶若選擇按協議模式接收,則需要設置協議模式、數據長度以及幀頭、幀尾等,板卡自動判斷是否接收到一幀完整數據,若已接收到完整數據幀,板卡則將其傳輸給計算機。
本課題中上位機采用工控機,下位機為光纖陀螺捷聯慣導系統。上位機實時采集慣導輸出的數據,將數據幀解包之后,使用姿態角和角速率信息控制穩定平臺穩定。
慣導系統采用422模式輸出導航數據。通信波特率設置為921.6Kbps,數據更新率為1000Hz。普通串口或串口卡難以可靠地接收這樣高波特率和高更新率的數據,即使能正確接收,上位機的CPU也將為通信分配很多的資源和時間,難以再去可靠完成控制系統的其他操作。因此,本課題中使用AECMF-PCI-4/S2實現穩定、可靠、智能化的串口通信。
通信控制程序中采用多線程技術,在程序中創建了一個子線程實現讀串口、提取數據、發送數據和界面更新。程序流程如圖2所示。

圖2 通信程序流程圖
如圖2所示,程序在主線程中打開板卡,然后創建子線程。串口數據首先進入AECMF多串口卡的接收FIFO,然后子線程反復垂詢接收FIFO中是否存儲了一幀以上完整的數據,若得到的結果為真,則將數據提取到上位機。上位機對數據進行解包、保存和轉發,進而更新顯示界面。子線程循環執行,直到主線程中關閉子線程為止。
AECMF-PCI-4/S2驅動程序為Windows提供了豐富的接口函數,AECMF-PCI-4/S2驅動程序接口函數按ANSI C標準編寫,以動態鏈接庫AECMFC4B.dll形式提供給用戶,能滿足用戶對板卡的操作需求。使用該鏈接庫的函數進行串口通信程序的編寫,較之使用API通信函數進行串口通信編程更為簡單。且該庫函數具有良好的兼容性,能適用于多種編程環境,因此可以大大縮短用戶的通信程序開發周期。目前,該庫函數專門應用于運行環境:Windows 98/2000/2003/xp操作系統,支持Visual C++、Visual Basic、C++ Builder和Delphi等編程語言。
要使用AECMFC4B.dll中的函數,必須在編譯選項中指明它所在的路徑。在Visual C++環境下使用AECMFC4B.dll的庫函數,需要進行以下操作。
1) 將〈windows.h〉和〈AECMFC4B_lib.h〉包含到主程序的源文件中。
2) 將AECMFC4B.lib文件導出到連接庫列表中。
3) 將AECMFC4B_lib.h和AECMFC4B.lib文件放到執行路徑里面。
4.1 AECMF串行通信函數
本課題中主要用到了以下幾個AECMFC4B.dll庫函數:
打開板卡函數:AECMFC4B_Open(phAECMFC4B,CardId)。phAECMFC4B是指針變量,用來存放板卡的句柄;CardId表示板卡編號。
關閉板卡函數:AECMFC4B_Close(hAECMFC4B)。hAECMFC4B表示板卡的句柄。
板卡復位函數:Sio_Reset(hAECMFC4B)。hAECMFC4B表示板卡的句柄。
串口工作模式設置函數:Sio_SetWorkMode(hAECMFC4B,ChannelNo,Mode)。hAECMFC4B表示板卡的句柄;ChannelNo:表示通道號;Mode表示串口工作模式。
串口數據傳輸格式設置函數:Sio_SetDataFormat(hAECMFC4B,ChannelNo,DataFmt)。hAECMFC4B表示板卡的句柄;ChannelNo:表示通道號;DataFmt為結構指針變量,存有串口工作的波特率、數據位長度、停止位長度及奇偶校驗位設置。
串口數據幀格式設置函數:Sio_SetFrameFormat(hAECMFC4B,ChannelNo,FrameFmt)。hAECMFC4B表示板卡的句柄;ChannelNo:表示通道號;FrameFmt為結構指針變量,存有串口幀格式。
串口數據接收方式設置函數:Sio_SetRevMode(hAECMFC4B,ChannelNo,RevMode)。hAECMFC4B表示板卡的句柄;ChannelNo:表示通道號;RevMode為結構指針變量,存有串口數據接收方式。
函數Sio_Rx_IsFrameOver(hAECMFC4B,ChannelNo)。hAECMFC4B表示板卡的句柄;ChannelNo表示通道號。
函數Sio_ReadFrame(hAECMFC4B,ChannelNo,RxBuf,nResult)。hAECMFC4B表示板卡的句柄;ChannelNo表示通道號;RxBuf為接收buffer,用來存放接收到的數據幀;nResult用來存放幀長度。
4.2 部分程序代碼
本課題的通信控制軟件中,使用AECMFC4B.dll庫函數進行串行通信編程的部分代碼如下:
hCard = NULL; // 板卡的句柄
btCardID = 0; // card's ID
CH_RMAX=1; // 最大通道數
for (i=0; i { // 設置串口位傳輸格式 stdf[i].BaudRate = 921600; // 設置波特率 stdf[i].DataLength = 8; // 設置數據位長度 stdf[i].StopBits = 1; // 設置停止位長度 stdf[i].ParityEnable = FALSE; // 校驗位使能 stdf[i].EvenParity = FALSE; // 設置校驗模式 // 設置串口數據幀格式 stff[i].HDR = 0x99; // 設置幀頭1 stff[i].EDR = 0x66; // 設置幀頭2 stff[i].LENR = 43; // 設置數據幀長度 // 設置數據接收方式 strm[i].IsProtocol = TRUE; // 設置數據接收方式為協議接收 strm[i].ProtocolSel = 0; //串口幀協議選擇 strm[i].SumCheckEN = FALSE; //協議接收時,硬件是否對校驗和部分進行檢驗 strm[i].HeadIncluded = FALSE; //協議接收時,校驗和是否包含幀起始符 // 串口工作模式設置 wmode[i] = 1; // 設置串口工作模式為422模式 …… } AECMFC4B_Open(&hCard, btCardID) // 打開板卡并分配板卡資源 Sio_Reset(hCard) // 復位所有FIFO for (i=0; i { Sio_SetWorkMode(hCard, i, wmode[i]) // 設置板卡工作模式 Sio_SetRevMode(hCard, i, &(strm[i])) // 設置數據接收方式 Sio_SetDataFormat(hCard, i, &stdf[i]) // 設置串口位傳輸格式 Sio_SetFrameFormat(hCard, i, &stff[i]) // 設置串口數據幀格式 } // 子線程線程 DWORD WINAPI thread422(LPVOID lpParam) { WORD rt=0,wd=0; BYTE bufRx[RX_BUF_SIZE], chno=0;; int i=0; while (isNeedThread) // 當接收數據的標志位有效時,進入解碼程序 { if (strm[chno].IsProtocol) //是否按協議方式接收 { if (Sio_Rx_IsFrameOver(hCard, chno)) // 是否至少接收到1幀數據 { union Data data; Sio_ReadFrame(hCard, chno, bufRx, &rt);// bufRx為讀串口的緩沖區 …… } //end of if (Sio_Rx_IsFrameOver(hCard, chno)) } } // end of while (isNeedThread)… …… ExitThread(0); } 數字化穩定平臺的控制精度取決于測量元件的精度、伺服控制回路的數據更新頻率等因素。要想提高平臺在各種工況下的控制精度,就必須提高控制回路的伺服控制周期。因此,高速、穩定、可靠的通信是數字化平臺控制系統的關鍵環節。 AECMF多串口卡有工作模式多樣、能智能識別完整數據幀、傳輸波特率可選范圍廣以及編程簡單、工作可靠等優勢,能夠滿足不同用戶的工業測量和自動化控制需求。本文利用AECMF多串口卡實現了高波特率和高數據更新率的串行通信,實驗證明,該通信系統工作穩定可靠。 [1] 馬海龍.船用激光測距儀穩定平臺的設計與實現[D].哈爾濱:哈爾濱工程大學,2012:65-75. [2] 陳明杰.基于TMS320F28335數字光電穩定系統的研究[D].哈爾濱:哈爾濱工程大學,2012:23-39. [3] 朱華征,周曉堯,張文博,等.光電穩定平臺中陀螺隨機漂移的處理方法[J].中國慣性技術學報,2009,17(2):225-230. [4] 周向陽,劉煒.航空遙感慣性穩定平臺振動特性分析與隔振系統設計[J].中國慣性技術學報,2012,20(3):266-272. [5] 李薇,耿淑琴.基于VC實現MSP430與PC之間的異步串行通信[J].微型機與應用,2012,31(5):23-25. [6] 周小剛,單斌,汪立新,等.基于PC104的嵌入式轉臺控制系統設計[J].自動化應用,2013(1):62-24. [7] 趙素娟.基于Moxa多串口卡的多串口通信的VC++實現[J].計算機與現代化,2011(8):117-123. [8] 李瑞先.VC++中基于Moxa多串口卡串行通信的實現[J].通信技術,2009,42(11):71-72,192. [9] 柯伯樂,池紅,湯天浩.基于MOXA多串口卡的多串口通信的實現[J].自動化儀表,2004,25(11):17-20. [10] 劉安,曹劍中,劉波,等.實時控制系統MOx多串口卡同步串行通信容錯算法[J].科學技術與工程,2005,5(15):1095-1099. [11] 丁正華,江凌云.MOXA C320Turbo多串口卡在數據實時傳輸中的應用[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日 國家重大科學儀器開發專項(編號:2011YQ12004502);國家自然科學基金(編號:41404002);海軍工程大學青年基金(編號:HGDQNEQJJ13011)資助。 許彩,女,碩士,助理工程師,研究方向:慣性技術及應用。徐振國,男,高級工程師,研究方向:慣性技術及應用。郭斌,男,碩士研究生,研究方向:慣性技術及應用。 TN967.2 10.3969/j.issn1672-9730.2015.04.0175 結語