(南京航空航天大学 自动化学院,南京 210016)
随着航空综合技术的快速发展,多电飞机供配电系统已由集中的供配电形式转变为更高效的分布式自动供配电形式。而BPCU(即汇流条功率控制器)作为供电系统的管理和状态监测环节,其关键性和重要性也日益突出,因此有必要建立BPCU的自动测试平台。
国内目前关于汇流条功率控制器自动测试平台的设计和研究成果较少,文献[1]设计了基于LabVIEW的测试试验系统,利用计算机模拟飞机电网运行状态,通过以太网TCP协议将故障指令发送给下位机,同时测试BPCU的性能指标,实现了自动化测试。但由于研究时间较早,模拟电网以及总线通讯技术的研究不能很好满足实际BPCU性能测试的要求。
本文搭建的BPCU自动测试平台主要包括BPCU测试样机、模拟电网、测试管理计算机、电网管理计算机以及通讯管理计算机等硬件设备,其通讯网络包括AFDX通讯、以太网通讯、TTP/C通讯等不同的通讯方式。使用编程软件建立统一的通讯网络,并且保证通讯系统的实时性、稳定性以及高效性,是通讯系统设计的关键。
BPCU,即汇流条功率控制器,是多电飞机供电系统的重要组成部分。其功能是对飞机的供配电系统进行管理和控制,完成对飞机不同工作状态下的供电模式转换,在紧急情况下完成功率分配,保证应急汇流条供电情况正常等,并把状态信息通过数据总线发送给机电管理系统显示,同时通过警报装置显示供电系统的故障信号[2]。
针对BPCU的功能和性能,本文构建了多电飞机BPCU测试平台的电网控制逻辑架构以及通讯系统架构,如图1所示。
图1 BPCU 测试平台架构
BPCU测试平台的通讯系统主要由通讯管理计算机完成信息的管理和传输。测试系统的通讯程序由两部分构成:
1)通讯管理计算机通过AFDX总线与AFDX交换机连接,通过AFDX交换机,通讯管理计算机可以与多个终端进行通讯。本文的测试系统中BPCU包括左BPCU(LBPCU)与右BPCU(RBPCU)。另外,两台BPCU也通过TTP/C总线与通讯管理计算机连接,将LBPCU和RBPCU作为TTP/C总线的两个节点,实现两台BPCU之间的信息交互[3]。
2)通讯管理计算机通过网络线缆与以太网交换机连接,通过以太网交换机,与电网管理计算机以及测试管理计算机进行通讯。电网管理计算机执行的任务主要包括:控制模拟电网及程控电源,通过LabVIEW软件控制模拟电网运行于汇流条有电与没电状态,并模拟二次电源运行、电流状态、接触器状态等。测试管理计算机执行的任务主要包括:自动测试项目的管理以及电网状态的检测,通过LabVIEW界面显示模拟电网运行的情况。
表1 通讯网络节点
测试平台通讯管理计算机使用的AFDX通讯板卡为ARINC664高性能 AFDX 终端网卡,主要实现AFDX网络的信息传输功能。
PCI/PMC/PXI-3500板卡的系统如图2所示,主要由前面板接口、网络接口模块、FPGA控制模块和 PCI桥芯片模块组成。其中,网络接口模块提供相互独立的两路发送通道和两路接收通道,也可以作为一对冗余端口使用。通过 HDMI 接插件可以提供IRIG-B时钟同步接口,TRIG触发输入和输出,RS232接口。网络接口模块与PCI桥芯片间的通信由FPGA控制。ARINC664提供了DLL动态链接库,通过调用CAPI函数可以方便地使用板卡的相应功能。所有的C-API函数及其所需参数都在头文件AFDX_Card.h中有定义。
与通讯管理计算机相互连接的终端包括两台管理计算机和两台BPCU,其中两台管理计算机基于windows操作系统,使用Labview编程;BPCU基于Vxworks实时操作系统,使用VC++环境编程。针对通讯终端的不同操作环境,通讯管理计算机选择windows操作系统,采用VC++环境设计软件程序,利用接口函数将多种通讯技术结合提高通讯效率。
图3显示了通过以太网交换机进行信息传输的三台管理计算机的连接方式,包括主机和以太网交换机中的协议、通讯程序与Winsock API之间的关系。通讯程序通过Winsock API以虚拟的方式访问UDP/TCP提供的服务。
图3 使用winsock以太网通讯框图
套接字是支持TCP/IP通信的基本操作单元,windows系统下使用的winsock是网络编程的规范,同时也是一种标准API和网络编程接口。套接字通讯可以分为两种,即面向连接的套接字(TCP)和面向无连接的套接字(UDP),为不同需求的通讯程序提供了解决手段[4]。图4是面向无连接的套接字通信工作的流程和基本原理。
图4 面向无连接的套接字通信工作的流程
通常情况下,Ethernet通讯使用TCP协议,由于TCP通讯需先建立USER与SERVER之间的连接,因此能保证传输的准确性和稳定性。而UDP协议由于保证实时性和高效性而牺牲了传输的可靠性,接收端无法保证能够准确接收到对应发送端的信息。但AFDX使用冗余管理的方式克服了UDP通讯的可靠性问题,因此本程序中以太网通讯也选用UDP保证传输的实时性,对于可能出现的丢包、误码情况进行实验测试后判断是否满足要求[2]。
AFDX(Avionics Full Duplex Switched Ethernet)即航空电子全双工交换式以太网,是在以太网(IEEE 802.3)标准基础上发展出来的一种确定性网络,遵循ARINC664协议的定义,主要特点是数据传输的实时性和可靠性[5]。AFDX系统由终端机、AFDX交换机和VL链路组成,采用全双工(Full Duplex)方式连接,如图5所示。
图5 航空电子AFDX网络端系统
AFDX终端一般是指符合ARINC664标准的板卡,板卡为用户提供了API函数接口,方便了各设备的通讯程序编写。AFDX交换机是在以太网交换机的基础上改进的,能实现全双工互联的设备,主要完成Ethernet数据帧转发的功能。传统以太网采用动态路由的寻址方式使得传输路径不确定,而AFDX网络是一种确定性网络,采用虚链路来实现路由的选择,虚链路VL将一条物理链路分成多条逻辑上独立的 VL,每条VL都有其独立的参数,通过这些参数的设置来控制数据在VL上的传输[6]。
本测试系统的通讯软件使用ARINC664终端网卡提供的API函数库。函数库中包含消息发送函数AfdxCardComSendMsg以及消息接受函数AfdxCardComRecvMsg,因此在编程过程中无需重复以太网通讯的调用winsock API设置UDP端口的工作。
调用板卡API时,需要对AFDX通讯网络的双余度冗余管理模式进行设置。双余度冗余通讯是指AFDX通讯网络设置多条通讯链路,两个终端在传输信息时一般由两条链路同时传输相同信息,保证数据不会由于意外或传输的不稳定性而导致数据传输失败,这样可以有效地避免UDP通讯的不可靠性对系统造成的影响,如图6所示。
图6 冗余管理示意图
根据ARINC664终端网卡提供的数据结构TAfdxVlCfg中定义的网络完整性校验使能参数、冗余使能参数以及最大Skew值,冗余管理需要经过完整性检查和冗余判断两个步骤。AFDX在打包数据帧过程中封装了一个8位的帧序列号SN,完整性检测模块就是通过PSN(即同一VL中前一帧的SN)判断该数据帧是否有效。通过完整性检查的帧需再进行冗余管理[1]。
最大skew值(nSkewMax)指互为冗余的帧最大允许的传输时间间隔,通过检测两个有效帧之间的时间间隔判断其是否互为冗余。程序中设置nSkewMax=100,即间隔时间不超过100毫秒即为冗余帧。由数据帧的SN值判断其有效性,再由两个有效数据帧的接受时间间隔判断是否互为冗余帧,即为程序的冗余管理策略,流程图如图7所示。
图7 冗余管理算法流程图
在数据结构EAfdxRxMibType中包含各种不同情况下数据帧丢弃的类型,包括端口未使能丢弃帧、SN错误丢弃帧、冗余错误丢弃帧等,程序中添加查看信息代码,以识别不同情况下丢弃数据帧的原因。
另外,针对多电飞机中的重要供电部分,配电系统设置了双BPCU的冗余管理,即LBPCU和RBPCU均传输对应数据至测试系统中,构成双余度的管理系统。
因此在AFDX双网络冗余的基础上,还需要对双BPCU冗余通讯进行管理。首先定义RBPCU传输的数据优先级高于LBPCU。当两个BPCU同时传输数据至通讯管理计算机时,先判断信息有效性,若两个BPCU的信息均有效,且字符串内容相同时,丢弃LBPCU的信息,并传输相应的信息给测试管理计算机[7]。
单while循环下的通讯任务能够完成点对点的通讯,但由于recv函数与send函数相互阻塞,导致无法实现信息的单独接收和发送。另外由于通讯管理计算机是BPCU测试平台通讯网络的管理节点,完成的任务为各终端信息的相互传递工作,为保证软件的运行效率和通讯转发的速率,需要使用多线程同步通讯技术。
为了防止将主线程设为任意一条通讯线路可能造成的阻塞情况,在主线程中使用函数WaitForMultipleObjects确保子线程之间能同步执行,主线程监视每一个子线程的执行情况,并且无限期等待子线程执行,确保传输数据不会丢失。当通讯线程数不确定的情况下,可在主线程中使用while函数循环创建线程,但是while循环可能造成线程拥堵以及重复创建线程浪费资源的情况。本程序中主要执行的子线程通讯任务如图8所示,包括两台BPCU之间的通讯、BPCU与测试管理计算机之间的通讯、测试管理计算机向电网管理计算机发送信息,通讯线程为6条,因此可以直接使用线程组进行管理,避免了拥堵和浪费资源的情况。两个节点之间的相互通讯分为两条互斥的子线程,使用CCriticalSection类来控制链表,构建数据临界区,保护线程的共享数据在通讯过程中的安全性。
图8 线程通讯任务
针对多电飞机BPCU通讯程序的需求,子线程中将BPCU发送函数AfdxCardComSendMsg与测试管理计算机接收函数Recv放在一个While循环中即一个子线程完成BPCU发送的信息接收、信息反馈处理、将处理过的信息返回给测试管理计算机的任务,如图9所示。该方案可将发送与接收两个线程并为同一线程,同时可以保证接收信息经过处理后发送,保证信息正确性,也节约了通讯计算机的线程资源。
图9 子线程通讯流程
在数据传输过程中,通讯程序可能出现的问题包括:
1)无法与BPCU进行信息交互。
2)接收的数据被截断,或发送数据被置零。
实现AFDX通讯的关键参数包括终端机的IP地址、使用的UDP号以及VL链路号。对于不同的ARINC664板卡,IP地址的设置方式存在差异,本测试系统使用的板卡IP地址为10.ES高八位.ES低八位.分区号,ES以及分区ID均在程序中有对应的定义。当两个终端机的通讯程序中,IP地址设置为对方的IP,且UDP号与VL链路号均相同时,才能实现通讯功能。因此针对不同的BPCU,需了解其程序中的具体设置[8]。
根据BPCU信息传输协议,AFDX通讯系统传输的数据为char型字符串,每一位字符均为0x00格式。对于char型字符串,0x00字符即为’ ’,当使用strlen()等函数对字符串进行长度计算时,会存在遇到0x00即截断的情况[9]。因此在sendto及recv函数中的length参数一项,应避免使用相应的函数。另外recv函数中的length参数会被强制缩小,即当接收到的字符串长度小于预先设定的长度,length参数会定义为较小的值,而下次接收到较长的字符串时,recv函数仍旧按照较小的值读取字符串,这便会造成接收字符串截断的情况。因此在while循环中需对length参数进行重置[10]。
以太网通讯网络包括一台以太网交换机以及三台终端计算机,运行通讯管理计算机的以太网通讯测试程序。
通讯程序中包含了PING (Packet Internet Groper)功能,预先设置好两台计算机的IP地址即可自动完成网络通断测试,如图10所示。若目标计算机无法通信,程序会提示是否继续运行以保证其他终端的正常通讯。
图10 PING功能程序图
PING的结果可以看出,向测试管理计算机发送十次信号,平均通讯时间小于1ms,丢包率为0%,正确率为100%。当网络状态稳定的情况下,UDP通讯也能满足可靠性的要求。
图11为接收程序与发送程序放入一个while循环中的通讯程序,能够完成点对点信息传输功能。
图11 以太网通讯程序实验
AFDX通讯网络包括一台AFDX交换机、一台终端计算机以及两台BPCU,运行通讯管理计算机的AFDX通讯测试程序。
AFDX通讯网络主要完成BPCU 之间的通讯以及BPCU与测试管理计算机之间的通讯,实验时在通讯程序中输入send函数通讯信息,模拟测试管理计算机通过以太网将数据传送至通讯管理计算机后,再由AFDX网将信息传输至BPCU。图12为AFDX点对点通讯实验的通讯程序框图。
图12 AFDX通讯程序实验
各终端部署完成后,连接以太网交换机以及AFDX交换机,运行多线程通讯测试程序。
首先使用PING功能测试各终端是否正常工作,若有终端未能PING成功则程序会暂停并询问是否继续。各终端均正常工作后,通讯管理计算机进入网关模式,接收各终端传输的数据并判断发送的目标地址,并且监控记录各终端之间的通讯数据,如图13所示。
图13 多线程通讯程序实验
多线程通讯保证了各终端信息传输不收干扰,且关联数据不会由于同时传输数据而出现误操作。通讯网络是测试平台的关键枢纽,保证数据传输的准确性、及时性、有效性,同时多总线通讯网络的开发也为未来飞机通讯网络的构建打下了基础。
本文针对多电飞机BPCU自动测试系统的总线通讯部分,分别设计了以太网通讯网络、AFDX通讯网络和TTP/C通讯网络,在VC6.0环境下将3个通讯方式结合在一起编写了综合性的通讯管理系统,并且根据测试系统的实际需求优化了通讯线程,提高了系统的实时性和稳定性。通过多电飞机BPCU自动测试平台的系统联调运行,验证了通讯管理系统能够实时的接收和发送数据,保证系统稳定运行。综合性通讯管理系统的开发为多电飞机日益复杂的供配电系统提供了高效稳定的平台。