捷联惯导解算算法嵌入式代码自动生成技术及应用

2013-12-18 03:16冯天宇
关键词:代码生成捷联惯导

冯天宇, 师 彬

(北京理工大学 机电学院, 北京 100081)

捷联惯导技术在导弹制导领域中具有广泛的应用.对于理论工程师而言,由于知识体系的局限性,一般无法胜任嵌入式系统的代码开发工作.因此需要代码工程师完成解算算法的嵌入式代码编写.但是,由于代码工程师对捷联惯导解算算法不够熟悉,所以理论工程师需要投入很大的精力来指导代码工程师完成代码编写,使系统开发难度增加,影响开发周期和成本.

为了解决这一问题,在理论设计过程中使用嵌入式代码自动生成技术(RTW)[1],将理论设计过程中产生的Simulink模型直接转换成C语言代码,使理论工程师可以将精力集中在有创造性的工作上,对实际项目的开发起到了加速、完善的作用,缩减了项目的开发时间和成本.

1 自动代码生成原理

RTW是一种基于Simulink的自动代码生成环境,因此具有类似高级语言编译器的一些特性[2].图1所示表明了RTW的关键要素及代码自动生成原理[3].

图1 实时代码生成原理

首先通过Simulink平台将数学模型转化为mdl文件,然后使用内建函数将 Simulink模型转换成中间表示形式model.rtw, model.rtw文件包含了模型和子系统的结构及连接关系.

定义目标语言编译器(TLC)是自动代码生成的重要步骤[4].TLC作为RTW的一个集成部件,根据目标文件和模块描述文件将model.rtw转换成特定目标平台的C语言代码.最后使用联编实用程序(make utility)对文件进行惊醒编译和链接,生成可执行代码.

2 惯导解算模型自动代码生成流程

基于RTW惯导解算软件设计一般流程如图2所示[5].

图2 基于RTW惯导解算设计流程

在Simulink环境下对惯导解算算法进行建模仿真,直至仿真结果符合设计需求,然后进入代码生成阶段.

在代码生成阶段,根据项目需求对模型进行改造.使用Model Advisor工具箱对模型进行标注测试,并通过Model Discretizer工具箱对模型进行离散化处理.配置完成后进行代码自动生成,依次对生成代码进行软件在环仿真(SIL),处理器在环仿真(PIL),硬件在环仿真(HIL).其中,SIL与PIL是Matlab固有的仿真模式,因此可在PC机上实现;而HIL需要一定的硬件设备方可实现.每次仿真后将仿真结果与Simulink模型仿真结果对比,若误差在可接受范围之内,就进入下一阶段仿真,否则重新配置模型及RTW环境参数,反复迭代直至HIL仿真结果符合要求[6].

3 代码自动生成试验验证

采用Ti公司的TMS320C6747作为目标DSP.C6747为浮点DSP,为保证算法精度以及降低程序设计难度,自动生成代码过程中使用浮点算法,故模型配置阶段不进行算法定点化处理,而只需将模型离散化.模型配置完成之后依次进行SIL(软件在环仿真),PIL(处理器在环仿真),HIL(硬件在环仿真).

3.1 捷联惯导解算算法

对于本型自动驾驶仪而言,加速度计可以直接测得导弹法向过载.但是,陀螺仪所测得的信息为导弹弹体姿态在惯性坐标系下的投影,不是导弹的俯仰角.因此需要进行解算.

如图3所示,加速度计测得的比力fb与陀螺仪测得的ωibb为输入量,地球自转角速度ωie与重力加速度g为已知量.

图3 捷联惯导系统原理图

地球自转角速度ωie的物理意义是地球坐标系相对于地心惯性坐标系的转动角速度在地球坐标系下的投影.使用位置矩阵C可将其投影至平台坐标系(ωiep).

(1)

(2)

Q=q0+q1i+q2j+q3k

(3)

将式6归一化后计算捷联矩阵Tk:

Tk=

捷联矩阵T主要有三个作用:

1)求解俯仰角θ:

θ=sin-1T32

(4)

2)求解下一时刻的姿态速率矩阵(见式(1));

至此,使用陀螺仪所测得的数据解算出导弹的俯仰角θ[7].

3.2 代码自动生成仿真验证

以自动驾驶仪捷联惯导解算算法为依据,建立Simulink仿真模型.其原理图如图4所示.

图4 Simulink仿真模型原理框图

图4中,SINS即为需要进行嵌入式代码自动生成的模块.

为了保证代码具有较高的可信度,在每一步结束后进行代码转换可信度评判.其评判依据为导弹六自由度全弹道飞行仿真过程中的纵向弹道.

(1)模型离散化

捷联惯导系统是连续时间系统.Simulink通过修改积分步长的方式实现连续时间系统仿真,而一般嵌入式系统为离散时间系统,因此在自动生成代码之前需要将模型离散化.使用Model Discretizer自动离散模型,变换方法选择Zero-order hold,采样时间设为0.001s.经过仿真,获得离散前后纵向仿真弹道如图5所示.

图5 离散前后纵向仿真弹道比较

从图5中可知,纵向仿真弹道在>200 ms的范围内有一定误差,但都在可接受范围之内.因而进入软件在环仿真阶段.

(2)软件在环仿真

软件在环测试是对算法代码进行测试,具体做法是对进行测试的子系统编译可生成SIL模块,比较原模块与SIL模块的输出,用于评估算法代码实现的可行性和代码的有效性.

Matlab中的Real-Time Workshop Embedded Coder软件为系统代码验证提供了软件在环测试平台.首先,需要在Interface选项卡中选择Creat Simulink block与Enable protable word size,并将Hardware Implementation选项卡中的Emulation hardware设置为None;然后,将Code Generation中的Language修改为C并在 SIL and PIL Verification中选择SIL,生成SIL模块[8-9].替换原捷联惯导解算模块,进行仿真获得软件在环仿真结果,如图6所示.

图6 软件在环测试与离散模型纵向仿真弹道比较

由图6可知,软件在环测试获得的弹道和离散模型弹道误差在可接受范围之内.因而进入处理器在环仿真阶段.

(3)处理器在环仿真

处理器在环仿真是在PC机上运行自动生成的嵌入式代码,用于仿真评估自动生成代码在目标环境(TMS320C6747)中的运行情况,找出目标编译器或处理器产生的错误.其原理框图如图7所示.

图7 处理器在环仿真原理框图

图7中CCS(Code composer Studio)是Ti公司针对其DSP产品开发的指令集仿真器,可以在PC机上对嵌入式代码实现仿真验证,以缩短嵌入式系统开发进程.CCS与Matlab信息交换技术已经十分成熟,受篇幅限制,此处不做赘述.

将捷联惯导解算算法子系统生成相应的PIL模块,使用PIL模块替换SINS解算算法子系统,进行仿真测试.仿真测试时:在每一采样间隔采集信息,通过CCS软件的指令集仿真器将信息解算,并将解算后的信息输出至Simulink平台,完成一次仿真循环.处理器在环仿真结果如图8所示.

图8 处理器在环测试与离散模型仿真弹道比较

由图8可知,处理器在环测试获得的弹道和离散模型弹道基本吻合,在可接受误差范围之内.因而进入硬件在环仿真阶段.

(4)硬件在环仿真

硬件在环仿真是基于RTW自动生成代码的最后一步验证.自动生成的嵌入式代码完全在目标硬件中运行,用于完全仿真系统的真实运行情况.本试验中硬件在环测试构架如图9所示.

图9 硬件在环测试构架

PC机有两个功能:模拟IMU提供捷联惯导解算所需的数据;通过串口读取目标硬件输出的惯导解算结果,用于后续分析.

本实验中目标硬件的嵌入式代码是通过PIL仿真代码修改而获得的.PIL仿真代码是捷联惯导解算算法部分代码,要运行于目标硬件中需手工编写相关硬件驱动代码,在本实验中驱动代码为串口数据解包和打包代码.

硬件在环仿真平台搭建完成之后,进行硬件在环仿真.PC机通过串口读取捷联惯导解算结果,并与处理器在环测试结果比对,如图10所示.

图10 硬件在环仿真与离散模型仿真弹道比较

由于未对惯导解算算法部分进行修改,最终获得的弹道曲线与处理器在环测试结果一致.

3.3 代码比较

将自动生成的C语言代码与手写C语言代码进行比较(见表1).

表1 自动生成代码与手写代码比较

从表1可知,自动生成的代码长度比手写代码长28%,执行一次算法所需的机器周期数多26%.可见自动生成的代码在代码量和执行速度上和手写代码没有实质性差距.并且自动生成的代码还能够通过优化Simulink模型而得到进一步的改善.同时由于自动生成代码是基于统一模版的全注释代码,具有极高的可读性.因此嵌入式代码自动生成技术能够完全实现系统功能要求,具有较高的实际应用价值.

4 结束语

以捷联惯导系统为例,通过自动代码生成技术,完成了对捷联惯导解算算法的嵌入式代码自动生成.经测试,自动生成代码符合算法精度要求,证明了RTW代码自动生成技术在捷联惯导软件设计中具有较高的可行性,实现了理论研究向工程实践的平滑过渡,使研制周期缩短、成本降低、性能可靠性提高,具有较高的实际应用价值.

[1]刘先正.基于RTW和DSP的风力发电机组半实物仿真研究[J].可再生能源,2011,29(5):46-49.

[2]杨涤,李立涛.系统实时仿真开发环境与应用[M].北京:清华大学出版社,2002.

[3]齐振恒,孙中杰,李涛.RTW嵌入式代码自动生成机制与代码结构分析[J].计算机测量与控制,2010,18 ( 3):639-642.

[4]冯辉宗,刘先东,蒋建春,等.基于AutoSAR规范的驱动代码生成工具箱设计与实现[J].电子技术应用,2012,38(7):33-36.

[5]张颖超,赵争鸣,鲁挺.基于RTW的三电平双PWM变换器控制系统设计[J].电力自动化设备,2009,29(10):129-131.

[6]刘杰.基于模型的设计及其嵌入式实现[M].北京:北京航空航天大学出版社,2010.

[7]秦永元.惯性导航[M].北京:科学出版社,2006.

[8]邱宝梅,左文英,王凤娟.基于Simulink/RTW的汽车电子控制系统的研究[J].计算机测量与控制,2011,19(5):1 086-1 088.

[9]刘杰,翁公羽.基于模型的设计[M].北京:北京航空航天大学出版社,2011.

猜你喜欢
代码生成捷联惯导
Lustre语言可信代码生成器研究进展
自适应模糊多环控制在惯导平台稳定回路中的应用
无人机室内视觉/惯导组合导航方法
弹道导弹的捷联惯性/天文组合导航方法
基于Bagging模型的惯导系统误差抑制方法
捷联惯性/天文/雷达高度表组合导航
代码生成技术在软件开发中的应用
半捷联雷达导引头视线角速度提取
基于XML的代码自动生成工具
一种捷联式图像导引头的解耦算法