基于总线技术的实时通信方法研究与应用

2018-11-28 09:07,,,
计算机测量与控制 2018年11期
关键词:板卡实时性中断

,, ,

(1.海军航空大学 岸防兵学院,山东 烟台 264001; 2.中国人民解放军 91115部队,浙江 舟山 316000;3.北京航天测控技术有限公司,北京 100411)

0 引言

随着军事技术发展,武器系统中数字化程度越来越高,RS485、RS422、MIL-1553B等通信总线也逐步成熟运用。其中,ARINC429总线因其可靠度高、误码率低等优点,近年来在多种武器平台中得到广泛应用。而武器系统的技术发展对装备测试设备的研制提出了更高的技术要求,特别是通信总线的实时性要求。但是目前常用的实时控制系统实现过程比较复杂,开发成本较高,兼容性较差。[1-4]

目前自动测试技术飞速发展,PXI总线已经取代VXI总线广泛应用于武器装备的自动测试领域。PXI总线由PCI总线扩展而来,保留了PCI总线带宽高,速度快等优点,性能指标远优于GPIB总线和VXI总线,体积上又比LXI总线更有优势,因此广受开发人员欢迎,可以预见在下一代自动测试系统中PXI总线仍有一席之地。而且,基于PXI总线的ARINC429通信板卡也已经比较成熟,总线转换速度快、误码低,已有多款货架产品可供选用。

本文针对某型装备ARINC429总线实时通信要求,研究了基于RTX的PXI总线ARINC429板卡实时通信方法,通过双系统的方法实现了PXI总线板卡的硬实时控制,保证了ARINC429总线的通信效果。

1 基础知识

1.1 ARINC429总线

为了使航空电子设备的技术指标、电器性能、外形和插接件的规范统一,1977年美国官方颁布由美国航空无线电公司(ARINC)制定的民用航空数字总线传输标准ARINC429,它是机载电子设备之间进行数据传输约定的一种标准。ARINC429为单向串行总线设计,它为在航空电子设备之间传输数字信息制定了航空运输工业标准。ARINC429属广播方式单总线,每个总线连接有一个发送者和最多20个接收者。一个终端可以在多个总线上有许多发送者和接收者。源带负载能力最大为400欧姆,接收端最小有效输入阻抗为8 K欧姆。ARINC 429规范没有总线长度要求,大多数系统设计连接方式为两种:星型和线型方式。ARINC429有两种速度:12.5 KHz(12.5 KHz到14.5 KHz),100 KHz。32位数据以RZ格式、3种状态、LSB优先方式传输,字与字之间间隔至少4位字长。

如图1所示,ARINC 429数据传输是以电脉冲形式发送的,一个电脉冲就是1位。1个字(有32位)被分为5段,即:标志段,第1~8位;源目的地识别码,第9~10位;数据区,第11~28位;符号状态码,第29~31位;奇偶校验位,第32位。一个数字字传输1个参数,如速度、温度等。两个数字字之间有4位间隔,这个间隔也作为字同步用,跟在这一间隔后面发送的第1位,就表示另一个新的数字字的开始。每个数字字的32位数据是以双极归零码的形式发送出去的,如图1所示。所谓双极归零调制就是指发送出去的脉冲串有3个电平,即高电平,逻辑1(+10 V);中电平(0 V);低电平,逻辑0(-10 V);中电平为发送自身时钟脉冲。

图1 ARINC 429数据传输

1.2 RTX系统

随着工业技术不断发展,实时性要求越来越高,目前常用的实时操作系统有VxWorks、RtLinux等,但大多实现成本较高,领域受限,而RTX(real-time extension实时扩展)系统作为Windows下的硬实时操作系统,可以将windows扩展到实时测控领域,拥有着不可比拟的优势。RTX的时钟分辨率100纳秒,定时器最小周期100微秒[5-6]。

RTX进程工作原理如图2所示,RTX系统可以和Windows共存,在Windows系统内安装,却又通过RTX HAL实现了强实时性,同时保留了Windows程序与RTX程序的相互操作与调用[7-9]。Windows程序通过调用Windows的内核与驱动,进而分时占用CPU资源,而这种多任务分时复用机制必然会带来时间上的不确定性,使得工业控制上的一些实时性指标无法得到满足。RTX程序通过Rtapi_w32库占用CPU资源,与Windows不同的是,RTX系统是个单任务系统,通过内核及驱动与Windows在一定程度上的隔离来单独占用CPU。单任务独占CPU的模式使得RTX系统具备一定程度的实时性。

图2 RTX进程工作原理

在具体应用中,针对用户往往基于Windows平台编写可视化应用程序,而基于RTX编写底层控制程序的问题,一般采用共享内存进行两个程序间数据交互的解决方案。双方程序通过同一个互斥量的判读,分时操作共享内存,即实现了数据交互,又避免了程序报错。

2 硬件设计

本文方法基于PXI总线设计实现,PXI总线是目前自动测试领域最为流行的总线形式,其板卡体积小、速度快、通用化标准化程度高,在系统集成领域具有一定的优势。

通常一个PXI系统由PXI机箱、控制器、功能板卡组成,其中本项目选择了使用嵌入式零槽控制器,如图3所示。考虑到通信总线控制的实时性要求,本文方法为了达到理想的响应速度和时间精度,零槽控制器安装了Windows和RTX双系统,Windows系统作为基础负责其他模块的控制及对外数据传递,RTX系统完成429模块的实时控制。

2.1 PXI机箱

机箱本项目选用NI公司的PXI-1045,PXI-1045是18槽通用AC PXI机箱,专为各种测试和测量应用而设计。该模块具有很宽的工作温度范围、两个外部参考时钟BNC连接器,以及采用通用交流输入的可移动高性能电源。

2.2 零槽控制器

零槽控制器选用NI公司的PXI-8115控制器,PIX-8155是一款针对PXI系统的Intel Core i5嵌入式控制器,适用于处理器密集型、模块化仪器和数据采集、通信等高速应用。PXI-8115包含两个10/100/1000BASE-TX以太网端口和6个高速USB端口以及一个集成硬盘驱动器、一个串行端口和其他外设IO,可以提供高达8GB/s的系统吞吐量和2GB/s的插槽吞吐量。

2.3 ARINC429模块

本项目选用北京航天测控AMC5206B-J作为ARINC429总线通信模块。AMC5206B-J ARINC429通讯接口模块就是一种符合ARINC 429标准PXI总线产品,它可以将PXI测试系统作为一个终端连接到ARINC429总线上实现与其它设备或系统的通讯。AMC5206B-J模块提供由软件控制的3种速率,可选择的数据字间隙时间,可设定的数据帧间隔时间,循环发送控制以及双向缓冲FIFO功能,可满足目前测试系统的不同应用需求。

AMC5206B-J ARINC 429通讯接口模块采用HS-3282和HS-3182实现ARINC 429电平驱动及协议转换电路功能,FPGA作为嵌入式处理器实现部分处理控制功能,SDRAM实现接收128 KB和发送128 KB的缓冲器电路功能,FPGA内部的PXI软核IP实现PXI总线接口电路功能。

3 软件设计

为了保证通信板卡的实时性,本文方法使用Windows和RTX双系统,两个系统中各有一个应用程序,Windows下为exe文件,RTX系统下为RTSS文件。

3.1 组成

考虑到一个测试系统中不可能只有AMC5206B一块板卡,而其他板卡还是要再Windows下进行控制的,因此,本文方法软件由Windows应用程序和RTX应用程序两部分组成。这种设计方案以Windows为基础,RTX仅作为429通信的控制程序,升级能力和扩展性都更佳,也使得本文方法可以简单移植融合入其他系统中。

如图3所示,在一套测试系统中Windows应用程序应是核心测试程序,其功能包括界面显示、人机交互、测试板卡控制、测试流程调度等,本文方法仅涉及AMC5206B板卡部分,其组成由显示、RTSS程序的启动、数据处理、共享内存控制等模块。为了实现强实时性,本文方法对AMC5206B的控制、数据存储等均有RTX系统完成,因此开发RTX应用程序,其包括应用、初始化、驱动、共享内存控制等模块。

图3 软件组成

3.2 共享内存

共享内存是进程间通信最高效的一种方法,本文方法将其作为Windows程序与RTX程序交互的桥梁,可以很方便的在多个进程间交换信息,Windows程序和RTX程序分别将共享内存映射到自己的私有地址空间,直接进行读取操作。同时,为了避免冲突操作,引入互斥量。

(1)定义共享内存变量:

typedef struct _ShMemStr

{

unsigned short obmen0;

unsigned short obmen1;

DWORD obmen2;

unsigned short obmen3;

} ShMemStruct,*PShMemStruct;

PshMemStruct obmen;

定义了一个共享内存结构体obmen,其中含有4个共享内存变量obmen0,obmen1,obmen2,obmen3。

(2)创建共享内存:

hMyMem=RtOpenSharedMemory(SHM_MAP_WRITE,0,(LPCTSTR)SH_MEMORY_NAME,(VOID**)&obmen);

打开共享内存,属性设置为可读写,返回共享内存地址到obmen,此函数在Windows程序和RTX程序中都要运行,返回变量名称需保持一致,读写属性可分别设置。

(3)创建互斥量:

MyMutex= RtCreateMutex( NULL,FALSE,FALSE(LPCTSTR)MUTEX_NAME);

需要在两个程序中创建统一的互斥量,用来避免两边同时对共享内存进行操作而带来的冲突问题。

(4)判断互斥量:

RtWaitForSingleObject(hMyMutex, INFINITE);

用以在流程中判读互斥量的状态,进而得到共享内存的状态,判断为空闲状态后才可进行读写操作。

(5)释放互斥量:

RtReleaseMutex( hMyMutex);

对共享内存读写操作完成后,释放互斥量,另一个操作系统下的程序才可以操作,避免冲突。

3.3 驱动

首先需要将PXI总线的AMC5206B在Windows下的驱动程序转换为RTX系统下的驱动程序。

仪器驱动层分为初始化、发送数据、读取数据、中断服务等函数,其中主要难点在于中断服务函数的设计,具体流程如图4所示。

图4 中断服务程序

PXI总线是一种即插即用总线,在板卡初始化时首先通过驱动程序进行PCI总线寻址,通过PCI地址空间的映射找到AMC5206B板卡,h获得句柄和ID。为了进行中断操作还需要获得中断号和中断级别,PXI总线的中断号每个机箱一般分配4个,采用菊花链的形式分配。然后加载中断服务函数,在流程中根据需要是能中断,再顺序进行其他函数操作不影响中断的发生。当中断请求发生时,停止正在进行的流程,中断响应函数自动运行,首先获取中断标识符判断中断源。AMC5206B不同通道触发中断都会返回不同的标识符。根据标识符读取相应通道的数据个数,然后读取数据个数,将数据存储到设计好的数组格式中,完成这些后返回主程序模块。主程序模块会对读取的数据有进一步的处理应用。

AMC5206ADriverIST是中断服务程序,在中断使能之前通过中断配置函数加载至内存

RtAttachInterruptVector(NULL, 0, AMC5206ADriverIST, mh, RT_PRIORITY_MAX, PCIBus,intbusnumb,IrqLevel,IrqLevel);

设置中断触发的字个数为nIntCount,在硬件板卡存储器接收到nIntCount个字后,中断服务程序启动依次操作。

1) 判断中断源:

AMC5206B_readInterFlag(mh,&bInter00,&bInter01,&bInter10, &bInter11);

判断中断源,bInter00、bInter01、bInter10 bInter11分别表示4个接受通道,为1表示有中断请求,0表示没有。

2) 获取存储器中的数据个数,读取数据,数据处理:

if(bInter00)

{

AMC5206B_getDataCount(mh,GROUP0_RX0, &size);

AMC5206B_MsgDataRd(mh,GROUP0_RX0, RXdata, size);

for (i=0; i

{

//数据处理

}

首先获取中断通道数据寄存器中数据个数,然后读取相应个数的数据存入RXdata。

3) 清除中断标识:

AMC5206B_clearInterFlag (mh,GROUP0_RX0);

中断处理程序结束后要清除中断标示,回到正常状态。

其他中断源同样模式处理。

3.4 Windows应用程序

Windows应用程序如图5所示,GPIO_IN、GPIO_OUT两个按钮完成板载IO的控制,服务端程序调用AMC5206B_GPIO_IN.RTSS、AMC5206B_GPIO_OUT.RTSS两个RTX程序。start_pk按钮实现429总线通信功能,远程客户端启动,服务端程序调用AMC5206B_start_pk.RTSS程序。

图5 Windows应用程序

4 系统实现与验证

本文方法的实时性保证依靠的是RTX操作系统的独特优势,而刘晓川、樊子明指出“实时”并不意味着“快”,而是指系统的响应时间确定性。对实时性最重要的测量因素不是平均响应时间,而是最大响应时间。衡量操作系统实时性最重要的两个性能指标是中断响应时间和上下文切换时间[10]。

本文方法着眼于ARINC429总线的数据传输,其上下文切换时间体现在发送数据的字间隔,而AMC5206B具备强大的数据存储能力,数据发送是先下载后触发的,并且字间隔可编程控制,因此实验仅需验证其中断响应时间。AMC5206B是为俄标429总线设计的一款PXI总线通信板,板上配置了16路数字IO用以做握手信号线,因此本文以IO的输入作为中断触发源,设计外部触发与计时电路,其效果与数据触发应为等同的,而在实际应用场景中也是以IO作为发送和接收的中断触发源的。

本文根据文献[10]提供的方法对本文方法进行了验证,设计实验如图6所示。采用100 M晶振作为时钟源,分频后产生1次/1 000 ns的中断和10 ns的计数器时钟。实验外围电路1 000 ns产生一次中断,通过触发AMC5206B的数字量输入通道1引起RTSS程序中断服务,中断服务程序控制DO输出高电平,此两个信号输入起停控制器,事件作为计时的起点与终点。同样,按照文献[10]要求,测试过程中运行复杂显示程序和频繁的磁盘读写程序。

图6 实时性验证

多次测试后的统计结果为:中断响应时间最大值9.33 μs,最小值4.24 μs,可以认为本文方法达到了μs级的实时性水平。

5 结束语

本文针对武器装备ARINC429总线实时性要求,提出了一种基于RTX系统的ARINC429总线实时通信方法,通过双操作系统的设计既保持了Windows下的扩展性又通过RTX操作系统扩展了系统的实时性能,编写了RTX下的驱动程序,通过共享内存实现了对板卡的有效控制。实验结果表明,本文方法实时性强,扩展性好。

猜你喜欢
板卡实时性中断
HCM3000板卡固件智能化下载系统设计与实现
RTX系统下并行I/O卡驱动程序的开发
“单片机中断概述”微课教学设计
一种考虑GPS信号中断的导航滤波算法
Linux中断线程化分析及中断延时测试
基于FC-AE-ASM协议的两种通讯板卡对比及应用
跟踪导练(二)(5)
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究