孙四海,杨纪明,肖 磊,周章文,王壮壮
(空军工程大学 研究生院,西安 710038)
随着航空工业的发展,数字式调节器已经逐步取代模拟式调节器成为航空发动机电子控制系统的主流。数字式调节器承担着航空发动机全部工作状态的控制任务,其工作情况不仅制约着航空发动机性能发挥,也影响到战斗机的飞行安全[1]。为提供良好的数字式调节器检测条件,保障航空发动机性能发挥,在此利用先进电子技术和虚拟仪器技术研发设计了数字式调节器综合检测系统,成功应用于某发动机大修厂。
数字式调节器功能复杂,需要完成包括N1和N2最大转速调节、低压涡轮后最高燃气温度t4调节、喘振保护、高低压压气机进气导向器角度调节等在内的20多项控制任务[2-3]。这也导致了数字式调节器信号复杂,包括输出的离散电压信号、线性电压信号、占空比信号、状态信号,输入的多路频率信号、传感器信号、开关信号等,多种不同类型的信号形式。检测系统不仅需要准确采集数字式调节器输出信号,还需要模拟发动机传感器信号和众多开关信号。
数字式调节器综合检测系统由下位机硬件和上位机软件两部分组成,系统原理如图1所示。
图1 数字式调节器综合检测系统的原理Fig.1 Principle of digital regulator integrated detection system
由C8051F系列单片机及周围电路和阿尔泰USB3121高速数据采集卡组成的硬件部分是检测系统的控制核心,主要包括电源、传感器模拟、信号采集与调理等模块。
软件部分利用LabVIEW虚拟仪器平台编写,软件主体结构使用独立式数据采集模式与交互式数据采集模式相结合的方式构成,利用改进设计的生产者与消费者结构、状态机结构、LabVIEW基本函数和阿尔泰USB3121数据采集卡提供的LabVIEW的库函数文件完成软件设计。
选择NC604串口服务器作为软硬件通信中介,电源和数据采集卡采用串行总线控制[4]。
作为数字式调节器的离线综合检测系统,系统工作时需要为调节器传感器接口提供模拟传感器信号,用于模拟发动机工作状态和环境参数。
其中,滑油温度Tm,燃油温度Tt,发动机进口温度T1-1和起动机进口温度T1-2由高精度电阻箱提供信号;高低压转子转速N1/N2,起动机转速Ntc和发动机振动值Fb由C8051F60单片机控制的直接数字频率合成器DDS(direct digital synthesize)提供信号;低压压气机导流叶片角度α1信号由单片机数模转换器 DAC(digital to analog converter)直接控制生成;高压压气机导流叶片角度α2,发动机进口压力P1,滑油压力Pm,T型传感器压差ΔPCK由高精度DAC模块和信号调制电路提供信号。
所用信号生成方案成熟可靠,所模拟的传感器特性与真实传感器特性一致[5]。
3.2.1 I/O 信号采集与输出
数字式调节器I/O信号多达80路以上,包含0 V/3.3 V(TTL,transistor transistor logic)电平标准静态数字输出、0 V/27 V工业电平标准静态数字输入和输出、0V/12V工业电平标准静态数字输入和输出。控制输出时,通过I2C总线控制多片PCF8574AT芯片,经过光电耦合电路驱动0 V/27 V信号输出;采集输入时,信号经过分压电路和CD4050逻辑电平转换芯片,再由PCF8574T芯片经I2C总线输入控制器。
采用这种串并行转换的输入输出形式,节约了控制器的I/O端口资源,也提高了系统集成度。
3.2.2 数据采集卡和DAC模块
系统采用阿尔泰公司USB3121数据采集卡采集模拟量参数。USB3121为一款多功能数据采集卡,可提供32RSE/NRSE通道,16通道DIFF模拟量输入,4通道模拟量同步输出,16路可编程I/O,1路计数器。核心采用1片16位ADC芯片,输入量程为-10~10 V,-5~5 V,-2~2 V,-1~1 V;支持按需单点采样、有限点采样和连续采样,最高采集速率可达500 kS/s。
DAC模块采用TLV5610IWD数模转换器和OPA2277运算放大器组成的电压跟随器,为传感器模拟模块提供模拟信号。TLV5610IWD是一款8通道、12位数模转换器,具有1个灵活的串行端口,具备转换速度快、可靠性高等特点。该模块为部分传感器模拟模块提供信号。
3.2.3 参数电压和波形采集
由于需要采集多达48路参数电压信号和3路波形信号,并需满足一定的采集精度和速度要求,检测系统使用USB3121数据采集卡32RSE/NRSE通道中的6个AI模拟量输入通道作为参数电压和波形采集通道,4个数字量输入输出DIO(digital input/output)通道作为控制通道。其中,48路参数电压信号由4个DIO通道控制ADG 406模拟开关控制接入,经电压跟随器和隔离放大器处理之后由3个模拟量输入AI通道分时采集输出,每个模拟开关控制16路参数信号采集,最后由软件控制同步显示,电压采集电路如图2所示。
3路波形信号,直接采用USB3121数据采集卡的3个AI通道采集,硬件设计方面通过电压跟随器和隔离放大器对电压信号做匹配阻抗和隔离放大的处理,以提高波形采集精度。
图2 电压采集电路Fig.2 Voltage acquisition circuit
下位机软件是检测系统的核心,直接控制硬件模块完成数据采集和系统控制等功能。软件的主要组成有设备初始化、存储空间初始化、开启内部中断服务、串口服务函数、设备中断函数、看门狗等。
系统上电后,将对各模块设备和存储进行初始设置,开启系统内部中断服务;在主循环内串口服务函数经UART0将采集的数据发送给上位机,UART1向指定存储空间内发送缓存数据,当UART0收到上位机发送符合规定格式和长度要求的控制指令时,系统将调用task_Update()执行命令(控制参数和动作开关)。下位机获取和发送数据每隔50 ms进行1次。主函数流程如图3所示。
系统采用LabVIEW 2014虚拟仪器平台编写上位机软件。后台程序采用多路并行数据采集与交互式结构相结合的方式构建框架,利用多重消费者与生产者模式嵌套和状态机相结合的形式具体设计,按照软件维护性和可读性要求将软件模块化封装,兼顾软件操作性能与数据采集速度,使其能配合硬件完成系统功能。前面板按功能区划分,采用LabVIEW通用控件与自定义控件设计,参考使用人员意见布置功能模块位置,以提供良好的人机环境。软件界面如图4所示。
图3 主函数流程Fig.3 Main function flow chart
图4 软件界面Fig.4 Software interface
4.2.1 软件框架构建
(1)改进生产者与消费者结构
生产者与消费者结构是LabVIEW编程中最常用的软件结构,它能使软件具有良好的操作性能和采集能力。普通的生产者与消费者包含1个“生产者循环”、1个“消费者循环”及把2个循环相连接的“数据队列”,其基本结构如图5。
图5 普通生产者与消费者结构Fig.5 Common producer and consumer structure
在生产者循环中While循环和事件结构将前面板触发的事件由“元素入队列”函数输入队列,在消费者循环中利用“元素出队列”函数和条件结构识别不同事件,进入条件结构的不同分支,执行对应分支的程序内容[6]。
该检测系统软硬件通信通道较多,信息交互也比较复杂,为此改进设计了普通生产者与消费者结构,使系统可以同时采集和控制多个数据通道。改进的生产者与消费者结构如图6所示。
图6 改进的生产者与消费者结构Fig.6 Improved producer and consumer structure
首先,在普通的“生产者循环”与“消费者循环”之间加入了1个“信息连接循环”的中间结构。该结构中可同时连接多个数据队列引用。其次,创建多个“消费者”循环通道(图6中设置1组,系统中使用了5组),前面板操作触发的事件在中间循环中进入对应条件分支,再通过队列数据将信息传递给对应的“消费者循环”,即用操作队列和数据队列将“生产者循环”和单个数据采集与控制循环连接,实现多通道并行采集和控制。
另外,在单个数据采集与控制循环中嵌套使用多个状态机结构,程序将根据状态机预设状态和用户操作状态选择执行对应的采集控制程序,从而实现单个通道数据采集与硬件控制的双重功能。
(2)状态机结构
LabVIEW中状态机结构就是利用While循环嵌套一个条件结构,用自定义枚举常量控制每一个循环条件结构所执行的分支,每个分支中执行的程序代码即为该分支对应的状态行为。对于独立工作的并行设备来说,其下一个循环状态只受设备当前状态决定,状态执行的顺序是固定的,本系统USB3121采集卡的控制程序中采用的就是独立状态机结构;对于交互式并行设备来说,其下一个循环状态受当前状态决定和其他交互设备状态共同决定。
由图6可见,系统中5路串口控制程序的“消费者循环”中采用的就是交互式控制的状态机,其工作状态受当前程序状态和前面板用户操作状态决定。
4.2.2 软件模块设计
(1)TCP数据读取子 VI
数据读取子VI是软硬件系统连接的关键,也是所有参数显示和控制的基础。TCP数据读取子VI程序如图7所示,其中使用的核心函数是“读取TCP数据”函数,根据上下位机通信协议,嵌套使用2个共用While循环的独立式状态机,自动从网络端口中获取一帧完整的数据,并能通过数据内容判断数据读取状态和网络连接状态发送给其他功能模块。
图7 TCP数据读取子VI程序Fig.7 TCP data read sub VI program
根据网络可能出现的网络异常情况和网络延时情况,该模块特别设计了网络自动重连功能和延时等待功能,增强了上位机软件的健壮性。
(2)数据解析 VI
根据软硬件通信协议数据帧的格式,每个数据帧都包括:2个字节 “帧头”、1个字节 “设备ID”、1个字节“数据长度”、若干字节“数据”和2个字节“帧尾”。
软件解析数据的基本方法是利用“搜索/拆分字符串”“截取字符串”和“强制类型转换”等函数将每个数据帧的不同组分拆分,对数据帧框架进行判断,处理后输出“设备ID”“解析状态”“指令类型”“数据字节”和“指令码”等内容供后续模块使用。
(3)指示灯信号解析
系统采集的指示灯信号众多,解析模块采用2个数据簇嵌套,将一帧完整数据字节中的每一位全部解析,由簇直接输出。处理时“字符串至字节数组转换”函数将多字节数据转换为字节数组,数组中一个元素即为一个字节的十进制表示,这些元素顺序通过“数据索引隧道”进入For循环,每个元素经过 “数值至布尔数组转换”“反转一维数组”和“索引数组”等函数转换为8个数据位,每一个数据位代表一个指示灯信号。经过多次循环之后,数据字节中的所有指示灯信号都存入输出簇输出给之后的功能模块。指示灯数据解析程序如图8所示。
图8 指示灯数据解析Fig.8 Indicator data analysis
(4)参数电压与波形采集
参数电压与波形采集程序框架采用独立状态机结构,默认执行参数电压采集循环,当前面板“波形参数采集”开关变化时,状态机将切换通道执行波形数据采集循环,采集完毕后自动切换回参数电压采集循环中。状态机分支中,调用“库函数节点”功能函数作为每一个功能模块的执行函数,USB 3121数据采集卡的库函数文件由阿尔泰公司提供[7]。采用“库函数节点”编程使得程序有较好的可读性,功能模块封装高度集成,采用统一的控制流程,具有良好的移植性。该模块的采集控制流程如图9所示。
图9 电压和波形采集控制流程Fig.9 Voltage and waveform acquisition and control flow chart
系统通过硬件通电调试、基本信号检测、软硬件联调试验、系统整机与数字式调节器联机测试等测试工作,所有参数采集正常,控制信号误差范围符合国军标要求,系统连续工作时间满足设计要求,人机环境设计良好。目前该系统已经成功应用于某发动机大修厂数字式调节器的检修工作中。