《回路硬件仿真技术在直升机控制系统中的应用.docx》由会员分享,可在线阅读,更多相关《回路硬件仿真技术在直升机控制系统中的应用.docx(14页珍藏版)》请在优知文库上搜索。
1、回路硬件仿真技术在直升机控制系统中的应用软、硬件的并行开发方法可以加快设计进程,但在系统整合时常常出现很多问题,而硬件回路仿真能有效解决这些问题,采用该技术可以在开发周期初完成嵌入式软件仿真。本文以HIL技术在实验性动态直升机系统用嵌入式控制软件中的应用为例阐述该技术的应用特点和方法。align=RIGHTVSPACE=12HSPACE=12ALT=图L直升机前视图和侧视图。设计工程师一直在努力缩短新产品开发周期,而软硬件并行开发就是一种比较好的方法。通常这种方法需要多个独立的软硬件开发小组参与,这些小组的工作相互间独立、并行地进行。当原型硬件和嵌入式代码的主要部分实现后,就可以在系统整合阶段
2、将硬件与软件合并起来并开始测试工作。在系统整合时经常会发生严重的问题,有些问题甚至会导致软件或硬件的重新设计。在问题成堆发生、成本持续升高或计划拖延太久的情况下,有可能中断设计项目,有时甚至不得不取消项目。因此,人们需要找到更好的方法来解决这些问题。回路硬件(hardware-i11-the-loop,HIL)仿真被证明是一种有效的解决方法。该技术能确保在开发周期早期就完成嵌入式软件的测试。到系统整合阶段开始时,嵌入式软件测试就要比传统方法做得更彻底更全面。这样可以及早地发现问题,因此降低了解决问题的成本。本文所要讨论的就是采用了HIL仿真的一个嵌入式软件开发项目。该项目的目标是开发和测试实验
3、性动态直升机系统用的嵌入式控制软件。有了HIL仿真后,人们无需使用除嵌入式处理器及其I/O接口外的任何硬件就能完成该控制器软件的设计和测试。随后的实际系统硬件与运行新软件的嵌入式控制器的连接首次便获得成功。在硬件、软件整合阶段唯一要做的额外工作是对一些控制器参数的少量调整,这是由于实际系统硬件与其仿真模型之间毕竟存在差异。直升机系统本项目需要开发适合QUanSer3自由度(3DOF)直升机的控制器软件。这是一个桌面电磁系统,内含由两个独立电子马达控制的3个旋转轴,每个轴驱动一个推进器。图1是直升机系统及其运动轴的框图。align=RIGHTVSPACE=12HSPACE=12ALT=图2:直升
4、机控制系统。假设倾斜轴的倾角接近零度,在对两个马达施加相同的高电压后直升机会垂直向上攀升。对两个马达施加不同的电压会使直升机绕倾斜轴旋转。为了使直升机向前移动,首先需要将直升机倾斜到一个非零角度,然后对两个马达同时施加适当的电压来产生向前的推力。如图2所示,系统采用的控制计算机具有3个位置编码器输入信号、两个马达电压输出信号,以及用于模式选择与操纵杆控制的用户输入信号。控制计算机通过专门设计的接口卡接收位置编码器输入信号,同时产生模拟输出电压,并通过数模转换器(DAC)驱动那两个马达。为了提供足够大的马达工作电流,DAC的输出需要连接到随后的功率放大器进行放大。位置编码器会随时监测每个轴的运动
5、,这些编码器通过光学原理感知旋转运动并产生数字化的角度位置数值。位置编码器将以每3604096个步距,或0.08789的量化步距分辨率对这些数值进行量化。每个编码器的输出信号由两个TTL电平组成,即PhaseA和PhaseB,当对应轴反转时输出信号就在这两个高低电平之间来回切换。根据这两个信号之间的相位差可以判断每个轴的运动方向,如图3所示。脉冲频率正比于每个轴的旋转速率。直升机控制器的性能指标满足要在一定时间内将前进和上升轴移动到任意一个指定位置,时间一般应控制在10秒以内。此外,直升机控制器的软件必须支持其它一些操作模式。全套控制器操作模式包括:关闭模式:align=RIGHTVSPACE
6、=12HSPACE=12ALT=图3:位置编码器输出信号。控制器软件以关闭模式启动,此时两个马达上的电压为零。一旦系统离开这个模式,就只能从空(Null)模式再次进入该模式。当从空模式进入关闭模式时,需要控制上升轴缓慢地下降到桌面正上方,然后将马达电压设置为零。空模式:当从关闭模式转变到该模式时,首选要给马达上电,并控制所有轴到零位置。如果从其它模式转变到空模式,那么只需要将所有轴控制到零位置。零位置是指倾斜轴和前进轴在系统启动位置,而推进组件被抬举到上升方向的水平位置,如图1所示。随机模式:在10秒时间间隔内为前进和上升轴位移命令产生预定义范围内的一个新随机值,然后由控制器软件将直升机移动到
7、相应的位置。自动驾驶模式:在这种模式下,由操纵杆产生控制器所需的上升和水平行进命令。通过操纵杆的前后动作控制上升位置,通过左右动作来控制水平位置。控制器通过移动直升机来跟随命令所指定位置。手动模式:在手动模式下,操纵杆直接产生马达驱动用的电压和与电压差。操纵杆前后动作控制两个马达电压的和,左右运动控制两个马达电压的差。在这种模式下系统特别难以控制,如果任何轴的运动超过了某个位置限制,控制器就会自动切换到空模式。通常,在进入该模式后的几秒钟内可能产生违反限制的问题。在确定系统功能和性能要求后,可以进行控制器软件的开发和测试。而仿真技术的应用可以加快直升机控制器软件的开发和测试速度。项目规范为了对
8、嵌入式软件进行HIL仿真测试,需要使用嵌入式处理器及其附属I/O器件。对于许多嵌入式系统来说,这只是整个系统的一小部分,可以在早期开发阶段实现组合。可以创建一个直升机硬件及其与外部环境交互的仿真,并通过控制器的I/O接口把这个仿真与嵌入式控制器连接起来。嵌入式控制器和直升机仿真就如同实际系统一样工作。在复杂的嵌入式产品开发早期,经常需要仿真一个完整系统在预期环境中的运行。这种利用动态系统仿真工具,如Simulink开发的仿真系统通常不是实时的,但可以作为HIL仿真的基础。某些时候需要对这些仿真系统中包含的模型进行简化和优化,使之适合实时仿真使用。不过在本项目中不需要修改这些模型。复杂系统仿真需
9、要用到许多高级的数学算法,但可以采用专门的软件工具来简化任务:Simulink是MATLAB的一个附件,它可以用来提供以框图为主的图形环境下的动态系统仿真。用Simulink进行仿真的方法是先把调色板上的模块拖到绘画区域,然后用代表信号流向的直线把这些模块连接起来。图4就是直升机项目中采用的位置编码模型的SimUIink框图,该模型把以弧度表示的角度位置作为其输入信号,并产生PhaSeA和PhaSeB信号作为其输出。另外,它还输出指示信号,用来指示相应轴到达零位置的时刻。直升机位置编码器不会产生指示信号输出,因此不使用该SinIUIink模型的输出。Stateflow是Simulink的一个附
10、件,用以实现有限状态机模型。在这个直升机项目中,StatefIoW模型用来实现直升机模式选择逻辑。Real-TimeWorkshop根据Simulink框图产生C代码,其它工具需要使用这些代码来达成编译与执行目标。在本项目中,其它工具包括Real-TimeWindowsTarget和某PCTargetoReal-TimeWindowsTarget允许仿真的编译与执行作为PC机Windows系统中的一个实时进程,能与Windows操作系统同时运行。在本项目中,Real-TimeWindowsTarget执行的是HlL系统仿真,所用主机正是开发和控制直升机软件的计算机。align=RIGHTVSP
11、ACE=12HSPACE=12ALT=图5:直升机和控制器模型。某PCTarget允许在PC机上执行仿真,此时PC机的功能如同专门的实时控制器。某PCTarget还提供实时的多任务内核供只有有限硬件资源的嵌入式处理器使用。某PCTarget在本项目中用来在一台独立PC上产生和执行直升机控制器用的实时代码,此时该PC机就用作嵌入式控制器。仿真开发控制器软件开发的第一步是实现对整个直升机控制器系统的仿真,图5给出了仿真的顶层框图。其中两个较大的方框分别表示直升机系统本身和数字控制器,两个较小的带有操纵杆和模式命令标签的方框向控制器提供用户输入信号。图5中的直升机框图包含有直升机动态行为的Simul
12、ink模型,如图6所示。从图6可以看到,该模型采用了转移函数、求和函数和积分器等多个SimUIink模块。带有限运动标签的模块包含有一个受限于向下靠近桌面方向的上升轴运动模型。当被仿真的直升机碰到桌面时,所有3个运动轴的速度都被置为零,因此非常接近实际直升机的行为。从靠近右边的3个量化器可以看出位置编码器的量化效果。有限运动模块代表一个子系统。子系统模块允许在仿真开发期间通过分层图集(hierarchicalsetsofdiagrams)来控制复杂性。子系统间可以进行任意多层的嵌套,类似于函数的嵌套调用。图5控制器子系统的详细内容见图7o对3个轴角度测量值的量化结果成为控制器的3个基本输入信号
13、,控制器输出的是两个马达的驱动电压。图7中的主要模块有:驱动直升机到指定位置的自动驾驶模块,在不同操作模式下产生前进和上升位移命令的命令发生器模块,实现用于选择不同直升机操作模式的有限状态机的模式控制模块。模式控制模块内所含的状态流程框图如图8所示。该框图包含了系统启动时对操纵杆进行校正的逻辑、用户控制下的模式改变、当违反位置限值时自动切换到空模式,以及系统关闭的控制。图5所示的控制器模块内部提供了嵌入式软件的完整实现方法。常见的方法是将嵌入式软件开发当作一个独立过程,该过程将仿真作为可执行的软件要求描述来使用。然而,更有效的方法是将仿真中的控制器实现作为源代码,供嵌入式软件使用。在本项目中,
14、可以把图5的控制器模块挎贝到新的SinlUlink项目中,并向框图中添加相应的I/O器件模块。然后,再调用ReaI-TinIeWorkShoP创建C代码,经过编译后下载到嵌入式PC控制器。到此就完成了嵌入式软件的开发工作。回路硬件有了直升机和控制器的非实时性Simulink仿真基础后可以着手HIL仿真开发了。首先需要创建一个新的Simulink项目,再把图5中带直升机标签的模块挎贝进来。这种仿真建立了直升机动态模型,并包括了相应的I/O器件接口。Real-TimeWindowsTarget支持多种I/O器件。HIL仿真所需的I/O要求包括两个ADC输入(用于接收控制器发出的马达命令电压)和6个
15、TTL数字输出(为3个仿真位置编码器分别提供PhaSeA和PhaSeB信号)。本项目中将运行WindOWS的台式PC作为主机系统,因此需要使用满足上述条件并且具有PCMCIA接口形式的I/O器件。NationalInstruments公司的DAQCard-1200能够满足这些要求,并提供一根带状电缆用于连接计算机内的接口卡和独立的连接器模块。直升机仿真以固定的帧速率运行,其仿真PhaseA和PhaseB信号的TTL输出则一个仿真帧更新一次。由于位置编码器信号的脉冲速率正比于运动轴的角速度,因此仿真帧速率可以限制能准确再现的最大角速度。如果采用这种方法对位置编码器信号进行建模,那么当PhaseA
16、和PhaseB信号隔帧交替时就能产生最高的仿真角速度。这时根据等式1就能得出仿真更新间隔h(秒)条件下最大的角速度值WnIa某(度/秒):等式1从直升机行为的数字仿真结果可以明显看出,倾斜轴具有最大的峰值角速度,但很少出现超过IOo/秒的情况。理想情况下h应不小于一定值,这样HlL仿真就不会占用计算机太大的计算资源。综合考虑这些要求,h的最佳值应是500us,此时更新速度是每秒2000帧,最大的仿真角速度是175.8/秒,该速度已经远远超过最大的角速度期望值。每秒2000帧的直升机仿真更新速度已经大大超出对直升机进行动态精确建模的速度要求,因此没有必要再用高阶积分算法来获取更精确的结果。相对简单的二阶积分算法可以获得较好的精度,此次仿真选用的就是Simulinkode-2梯形积分算法。与采用更加复杂的高阶积分算法相比,这种算法能使仿真具有更高的效率。为了在目标PC上下载并运行嵌入式软件,需要用串行