基于AECMF的光纤惯导稳定平台通信策略研究*

2015-03-15 00:50徐振国
舰船电子工程 2015年4期
关键词:波特率板卡串口

许 彩 徐振国 郭 斌

(1.海军驻七一九所军事代表室 武汉 430205)(2.海军工程大学导航工程系 武汉 430033)



基于AECMF的光纤惯导稳定平台通信策略研究*

许 彩1徐振国1郭 斌2

(1.海军驻七一九所军事代表室 武汉 430205)(2.海军工程大学导航工程系 武汉 430033)

通信系统是数字化稳定平台控制系统的关键环节,针对稳定平台高波特率、高数据更新率的通信需求,制定了基于AECMF多串口卡的通信策略。对AECMF多串口卡的工作原理及特点进行了介绍,设计了通信程序流程,基于VC++编程实现了串行通信。实验结果表明,通信系统工作稳定可靠。

稳定平台; AECMF; 串口通信; VC++

Class Number TN967.2

1 引言

稳定平台[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在高波特率、高数据更新率下通信可靠。

2 AECMF多串口卡简介

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进行控制。用户若选择透明模式接收,则板卡将收到的数据直接传输给计算机;用户若选择按协议模式接收,则需要设置协议模式、数据长度以及帧头、帧尾等,板卡自动判断是否接收到一帧完整数据,若已接收到完整数据帧,板卡则将其传输给计算机。

3 串行通信指标及程序流程

本课题中上位机采用工控机,下位机为光纤陀螺捷联惯导系统。上位机实时采集惯导输出的数据,将数据帧解包之后,使用姿态角和角速率信息控制稳定平台稳定。

惯导系统采用422模式输出导航数据。通信波特率设置为921.6Kbps,数据更新率为1000Hz。普通串口或串口卡难以可靠地接收这样高波特率和高更新率的数据,即使能正确接收,上位机的CPU也将为通信分配很多的资源和时间,难以再去可靠完成控制系统的其他操作。因此,本课题中使用AECMF-PCI-4/S2实现稳定、可靠、智能化的串口通信。

通信控制程序中采用多线程技术,在程序中创建了一个子线程实现读串口、提取数据、发送数据和界面更新。程序流程如图2所示。

图2 通信程序流程图

如图2所示,程序在主线程中打开板卡,然后创建子线程。串口数据首先进入AECMF多串口卡的接收FIFO,然后子线程反复垂询接收FIFO中是否存储了一帧以上完整的数据,若得到的结果为真,则将数据提取到上位机。上位机对数据进行解包、保存和转发,进而更新显示界面。子线程循环执行,直到主线程中关闭子线程为止。

4 基于VC++的串行通信实现

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);

}

5 结语

数字化稳定平台的控制精度取决于测量元件的精度、伺服控制回路的数据更新频率等因素。要想提高平台在各种工况下的控制精度,就必须提高控制回路的伺服控制周期。因此,高速、稳定、可靠的通信是数字化平台控制系统的关键环节。

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.017

猜你喜欢
波特率板卡串口
UART 波特率检测电路的FPGA 设计算法与实现
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
CAN 总线波特率自适应程序设计
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
车载控制器CVRE板卡显红故障分析及处理
浅谈西门子S7—400与S7—200的通讯实现方法
波特率自适应的CAN驱动在嵌入式Linux下的实现①
船舶电子设备串口数据的软件共享方法
基于组态王软件和泓格PIO-D64 板卡的流水灯控制