您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页小型固定翼无人机飞行控制软件设计与开发

小型固定翼无人机飞行控制软件设计与开发

来源:爱go旅游网
南京航空航天大学硕士学位论文

小型固定翼无人机飞行控制软件设计与开发

姓名:李俊申请学位级别:硕士专业:精密仪器及机械指导教师:李春涛

2011-03

南京航空航天大学硕士学位论文

摘 要

随着无人机在众多领域开展的广泛应用,对其提出的要求也越来越高,作为“大脑”的飞行控制系统也越来越受到重视。飞行控制软件是无人机飞行控制系统的重要组成部分,其性能直接关系到无人机的飞行安全。因此在飞行控制软件的设计中既要满足基本的飞行功能,又要提高软件本身的安全性能。本课题正是在这个研究背景和实际工程的需求下提出的。

首先,论文采用模块化思想设计开发了一种小型固定翼无人机飞行控制软件,在使整个软件可维护和可扩展的同时,针对软件多任务动态运行、内存保护等要求,设计了数据区轮换读写机制及软件看门狗,解决了多任务对内存读写冲突的问题,保障了飞行控制软件运行的可靠性。

其次,结合飞行控制计算机的资源配置,完成了目标硬件的初始化、串口驱动、脉宽调制接口驱动、模拟量驱动和离散量驱动软件设计与开发。完成底层驱动环境开发后,对飞行控制软件进行了任务划分和优先级分配。在综合考虑飞行控制软件性能和功能需求的基础上,设计开发了传感器采集、控制律解算、遥控遥测和导航制导等9个任务,实现了自主导航、指令导航和人工导航三种飞行模态,并通过事件触发的方式对多任务进行调度管理,实现了不同飞行模态间的平滑切换。

再次,针对机载设备的配置情况,设计了传感器信息源故障和测控系统链路故障的处理逻辑。给出了传感器的通信状态、数据安全范围和测控系统链路等故障诊断机制,设计了传感器高度信息源、定位信息源、测控链路等故障处置逻辑,确保了无人机的空中安全飞行。

最后,在实时仿真环境下,对飞行控制软件进行了半物理飞行仿真验证,测试了传感器故障和测控链路故障逻辑,仿真结果表明本文所设计的软件满足了小型固定翼无人机飞行控制的需求。

关键词:飞行控制软件,小型固定翼无人机,模块化,安全可靠,故障处理

i

小型固定翼无人机飞行控制软件设计与开发

ABSTRACT

With the UAV application in many fields, more demands are brought up on the UAV. As the \"brain\" of the flight control system, it also gets more attention. Flight control software is an important part of the flight control system. Its performance is directly related to the flight safety of UAV. Therefore, the flight control software is not only designed to meet the basic flight capabilities, but also to improve the safety performance of the software.This thesis was put forward on the basis of the research background and actual project requirement.

Firstly, this paper designed and developed the flight control software on the basis of small fixed-wing UAV with the modularized design. This could ensure the software can be maintainable and expansible. At the same time, considering the requirement of dynamic multi-task operation and memory protection, the rotation of reading and writing with data area was designed to solve the conflict that different module read and wrote with the same data area. The software watchdog was designed to avoid the system halted.These can ensure the reliability of flight control software.

Secondly, according to the configuration of flight control computer, this paper completed the target hardware initialization, serial port, PWM, AD and DIO driver. After completing the drive- environment, the different tasks and priorities were assigned. With the comprehensive consideration on the function and performance of flight control software, the software was divided into nine tasks, such as sensor task, control task, remote telemetry task and guidance task to realize the autonomous navigation, instruction navigation and manual navigation. Otherwise, the tasks were dispatched by the event-trigger to switch different flight mode smoothly.

Thirdly, aiming at the configuration of airborne equipment, the software designed the failure-handling logic of the sensor information-failure and the monitor-link failure. According to the communication status, data security range and monitor-link condition, the failure-handling logic on the attitude source, location source and monitor-link is designed to ensure the flight safety of the UAV.

Finally, the semi-physical simulations are carried out to test the sensor failure, monitor-link failure and functions of flight control software in the real-time simulation environment. The results show that flight control software meets the flight control requirements of small fixed-wing UAV.

Key Words: Flight control software, small fixed-wing UAV, modularized, Safe and reliable, Fault handling

ii

小型固定翼无人机飞行控制软件设计与开发

图表清单

图1. 1 飞行控制系统的组成结构........................................................................................................2 图1. 2 飞行控制软件系统总体构架....................................................................................................5 图2. 1 飞行控制计算机硬件结构........................................................................................................8 图2. 2 飞行控制计算机的接口资源....................................................................................................9 图2. 3 软件开发平台..........................................................................................................................11 图2. 4 机载飞行控制软件结构图......................................................................................................13 图2. 5 驱动层与服务层之间的调度关系..........................................................................................13 图2. 6 三层模块之间的调度关系......................................................................................................14 图2. 7 服务层与功能层之间的调度关系..........................................................................................15 图2. 8 半物理仿真系统结构图..........................................................................................................16 图3. 1 启动文件示意图......................................................................................................................18 图3. 2 启动工作流程..........................................................................................................................19 图3. 3 自带串口资源配置..................................................................................................................20 图3. 4 串口数据接收流程..................................................................................................................21 图3. 5 舵机的控制要求......................................................................................................................25 图3. 6 PWM输出流程.......................................................................................................................25 图3. 7 PWM捕获流程.......................................................................................................................27 图3. 8 AD驱动工作流程...................................................................................................................28 图3. 9 离散量输入输出的流程..........................................................................................................29 图4. 1 故障处置示意图......................................................................................................................32 图4. 2 GPS通信帧结构.....................................................................................................................32 图4. 3 GPS数据接收任务工作流程.................................................................................................33 图4. 4 大气机通信链路......................................................................................................................35 图4. 5 AD数据采集任务工作流程...................................................................................................36 图4. 6 半双工电台的上下行通信流程..............................................................................................38 图4. 7 上下行数据通信时间示意图..................................................................................................39 图4. 8 数据管理流程示意图..............................................................................................................40 图4. 9 自主导航与其它模块数据交互示意图..................................................................................41 图5. 1 遥控任务的工作流程..............................................................................................................45

vi

南京航空航天大学硕士学位论文

图5. 2 遥测任务的数据流图..............................................................................................................47 图5. 3 东北坐标系图.........................................................................................................................48 图5. 4 自主导航任务工作流程..........................................................................................................49 图5. 5 平飞逻辑图.............................................................................................................................50 图5. 6 FUTABA帧协议格式示意图.................................................................................................51 图5. 7 控制逻辑层次结构图..............................................................................................................52 图5. 8 控制律解算任务流程图..........................................................................................................52 图5. 9 纵向控制逻辑示意图..............................................................................................................53 图5. 10 横侧向控制逻辑示意图........................................................................................................54 图5. 11 不同导航模式下各模块之间的动态示意图........................................................................56 图6. 1 中断响应时间示意图..............................................................................................................58 图6. 2 仿真验证平台结构..................................................................................................................59 图6. 3 仿真系统实物连接图..............................................................................................................60 图6. 4 故障注入界面.........................................................................................................................60 图6. 5 全自主飞行实时显示图..........................................................................................................63 图6. 6 自主导航纵向历史曲线..........................................................................................................64 图6. 7 自主导航横侧向历史曲线......................................................................................................64 图6. 8 指令导航飞行实时显示图......................................................................................................65 图6. 9 指令飞行纵向历史曲线..........................................................................................................66 图6. 10 指令飞行横侧向历史曲线....................................................................................................67 图6. 11 人工导航操作界面................................................................................................................68 图6. 12 人工导航飞行实时显示图....................................................................................................68 图6. 13 人工切自主纵横向模态分析................................................................................................69

表1. 1 不足之处的分析........................................................................................................................5 表2. 1 接口资源分配表........................................................................................................................9 表3. 1 串口接收驱动函数表..............................................................................................................22 表3. 2 扩展串口驱动函数表..............................................................................................................23 表3. 3 MPC565异常向量表..............................................................................................................23 表3. 4 PWM输出接口函数表...........................................................................................................26 表3. 5 AD驱动接口函数表...............................................................................................................28

vii

小型固定翼无人机飞行控制软件设计与开发

表3. 6 DIO驱动接口函数表..............................................................................................................30 表4. 1 服务模块各任务运行时间分配表..........................................................................................31 表5. 1 功能模块各任务运行时间分配表..........................................................................................44 表6. 1 任务运行时间统计结果表......................................................................................................58 表6. 2 高度故障处置功能测试表......................................................................................................61 表6. 3 位置和姿态故障处置功能测试表..........................................................................................62 表6. 4 测控链路故障处置功能测试表..............................................................................................62 表6. 5 FUTABA操控特性表.............................................................................................................67

viii

南京航空航天大学硕士学位论文

注释表

符号

δa

θ

θg

φ

φg

Vψ P Pg

Q H

缩略词 AD API CAN CPU DIO GPS IMU MDASM MISO MIOS

副翼 Hg

俯仰角 Kθe

俯仰角给定 KIθe 滚转角 KQe

滚转角给定 Kφe

偏航角变化量 KHe

滚转角速率 KIHe 滚转角速率给定 KPa

俯仰角速率 KIPa

海拔高度

模数转换 MOSI 应用编程接口 MPWMSM 控制器局域网络 PC 中央处理器 PPM 数字量输入输出 PWM 全球定位系统 RAM 惯性测量单元 SPI 双向操作子模块 TPU3 主机输入/从机输出 UA模块化输入输出子系统 USB

高度给定

俯仰角到升降舵的增益 俯仰角积分到升降舵的增益 俯仰角速率到升降舵的增益 滚转角到俯仰通道的补偿增益 高度差到升降舵的增益 高度差积分到升降舵的增益 滚转角速率到副翼的增益 滚转角速率积分到副翼的增益

主机输出/从机输入脉宽调制子模块 个人电脑 脉冲位置调制 脉冲宽度调制 随机访问存储器 串行外围设备接口 时间处理单元 V 无人机 通用串行总线

ix

承诺书

本人声明所呈交的硕士学位论文是本人在导师指导下进行的研究工作及取得的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得南京航空航天大学或其他教育机构的学位或证书而使用过的材料。

本人授权南京航空航天大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。

(保密的学位论文在解密后适用本承诺书)

作者签名: 日 期:

南京航空航天大学硕士学位论文

第一章 绪论

1.1 引言

无人机是当今航空航天发展的一个热点。无人机是一种主要由无线电遥控设备或由自备程序控制的不载人飞行器,其可以利用空气动力承载飞行并可回收重复使用。与有人机相比,无人机在执行许多任务方面更具有优点。因此,无人机在世界各国的研发投入越来越大,导致了无人机技术取得了很大的发展,并在一定程度上反映了各国航空航天和智能控制领域的实力和水平[1]。

近年来,小型无人机目前广泛应用于各个领域[2]。可按照预定航路进行自主飞行,也可直

接利用地面站提供的手动遥控装置进行人工控制;可用来进行监测活动,从而来监测敌方的兵力和行动路线;可用来进行光学摄像,利用各种不同种类的摄像机在白昼和黑夜进行摄像,并可通过无线链路下传到地面监控系统中显示和记录;可用小型无人机发动攻击,在明确地面目标的时候可对地面固定目标实施打击行动;可用来干扰敌方的无线电子设备;可用来对大面积的农场进行喷洒农药;可用来进行气象监测,在高空利用气象传感器进行大气监测活动;还可用来进行一些搜救活动,在受灾区可以执行搜寻和救人的活动。

发展是需求推动的结果,小型无人机技术正是在无人机的基础上日益发展起来。美国是无人机研制大国,通过先进的技术储备使得在各式各样的无人机研制方面取得了显著的成果。“短毛猎犬”是美军最早使用的小型无人机之一。此飞行控制系统具有便携式侦查和观察综合的功能。它可装于特种背囊中携行,重22公斤,也可以手持起飞。有效载荷是可见光彩色电视摄像机和红外摄像机。“渡鸦”是小型无人侦察机,是“短毛猎犬”无人机的深入改进型。根据美国军方的要求缩小了尺寸和重量——小于2公斤。它可手持发射起飞。最大留空时间为1.5小时左右,可根据GPS导航信号自主飞行,必要时可以遥控。它装备几种观察系统,包括光电摄像机、机头和机尾红外摄像机。

“美洲狮”是小型无人侦察机,装备防水稳定高分辨率光电摄像机,能近似垂直地降落在地面和水面上。可手持起飞,借助于便携式标准操纵台操纵。该机能遥控飞行或使用GPS导航系统独立飞行。其留空时间可以达到对小型无人机来说创纪录的9小时以上。“美洲狮”无人机携带4台摄像机以及光学摄像机和红外摄像机各2台。

“黄蜂”无人机是美军使用的最小的无人机。它装有2台微型摄像机,可收集和向操纵员实时传递情报。机上电动机的电源为太阳能电池。该机用于观察、目标指示、火力校射和损失评估。它可携带前视彩色光电摄像机,以及光学或红外传感器模块。作战半径达5公里,最大留空时间达45分钟。

1

小型固定翼无人机飞行控制软件设计与开发

国内无人机在研究发展的道路上积累了一定的技术经验,具备了相关的技术基础。尤其是近些年来,我国的无人机整体水平有了很大的提高,装备体系也得到了较大的改善。不过目前国内的无人机系统尚难满足电子对抗、侦查和预警等大型任务系统的要求,控制技术也难以满足无人机作战高机动性等能力的要求。这就对小型无人机的飞行控制系统提出了较高的要求。

无人机飞行控制系统作为小型无人机的关键子系统,对其飞行性能起决定性的作用。它的

好坏直接影响到无人机的稳定性、数据传输的安全可靠性、实时性等。与常规飞行控制系统相比,小型飞行控制系统具有以下特点:要求飞机各部件体积小、重量轻、功耗低,而且集成度高;对飞行控制系统动态特性具有较高的要求;应在无人参与的情况下控制飞行器的姿态、速度和稳定性;对数据通信实时性具有较高要求[3]。整个飞行控制系统是小型固定翼无人机的指挥中心,完成人工导航、指令导航、自主飞行控制、任务管理等功能。其主要以飞行控制计算机为核心,并与各种传感器及执行机构共同构成闭环控制系统[4]。其组成结构如图1.1所示。

执行机构地面计算机飞行控制与管理计算机油门舵机升降舵机小型无人机副翼舵机方向舵机舵机反馈信号机载传感器 图1. 1 飞行控制系统的组成结构

飞行控制与管理计算机利用传感器从飞机上采集到所需的飞机状态信息,经过计算机的解算,将控制信号给执行机构来驱动操作舵面,实现对无人机的飞行状态的控制,从而构成了一个完整的闭环系统[5]。驱动飞行控制计算机运行的飞行控制软件是无人机飞行控制系统的神经中枢,无人机的各种飞行动作、飞行任务都是由飞行控制软件实现的。无人机飞行控制软件的性能和可靠性对无人机系统至关重要[6]。

飞行控制软件作为无人机最为关键的部分,是保证无人机安全可靠飞行的核心。由于飞行控制计算机可靠性技术日益趋于成熟,软件的可靠性问题变得越来越重要。据美国国防部和美国国家航空宇航局的统计,当今航空航天系统项目中的软件安全性比硬件系统大约低一个数量级[7]。由于软件失效而造成的重大事故不乏其例。

2007年美军著名的无人机——“捕食者”在伊拉克中部执行任务时,由于飞行控制系统读取的发动机监测传感器数据有误,使得传感器减少了流入四缸发动机的燃油,发动机的功率不

2

南京航空航天大学硕士学位论文

足以维持飞机正常飞行,最终导致无人机坠毁。

2009年印度的中空长航时无人机——“鲁斯图姆Ⅰ号”在塔内加航天空军基地进行了首次试飞。试飞期间,滑行和起飞测试均严格按照计划,但由于飞行控制软件系统对飞行的高度进行了错误的判断,使得机载发动机在得到地面指令后将发动机关闭致使系统的动力系统瘫痪,从而造成无人机坠毁。

2009年美国空军作战指挥事故调查委员会公布的调查报告显示,一架 “捕食者”无人机在进行持久自由作战(Operation Enduring Freedom)飞行任务中,与地面控制机站失去了联系从而坠毁在作战区域。原因是飞机控制系统软件丧失了与地面站之间的返回链数据传输能力,并且在重建数据链多次后仍然没有成功,直接导致无人机的坠毁。

2010年8月初,美国海军一架失去控制的无人机闯入了美国首都附近的受限空域。声明中称事故原因断定为“软件异常导致飞行器没有按照其预定程序飞行”。

据有关数据统计,在无人机事故众多原因中飞行控制软件异常占有很高的比例[8]。因此,

在设计飞行控制软件时,保证软件的安全可靠性具有重要的现实意义。

1.2 课题研究现状

1.2.1 国内外的研究现状

随着各国对无人机研制的投入,无人机飞行控制系统已成为研究重点[9]。其中又以美国云帽技术公司(Cloud Cap Technology)的Piccolo飞行控制系统以及加拿大MicroPilot公司的MP2028g飞行控制系统为代表。

美国云帽技术公司(Cloud Cap Technology)自主研发的Piccolo飞行控制系统已广泛使用于国外各公司、大学和科研单位制造的小型无人机中。该系统平台采用主频为40MHz带有硬件浮点功能的PowerPC系列MPC555,其丰富的接口资源能支持多种传感器,支持人工、自主和指令三种飞行模式。在空中飞行时,地面站能支持对多个小型无人机进行管理和控制,能利用Futaba(地面操纵杆)在人工模式下对无人机实施控制。此外,该系统还支持航路规划、航点插入、3D地形显示等功能[10]。

加拿大MicroPilot公司的MP2028g飞行控制系统能够实现从起飞到降落全自主飞行。具有

速度保持、姿态保持、姿态调整和支持1000航点的导航跟踪功能,支持故障检测和管理功能,能对GPS信号故障、发动机故障、监控链路故障以及电平故障进行检测并作出相应的措施[11]。全面集成空速传感器、气压高度计、GPS导航模块和8通道舵机控制板,因此系统可靠性高。MP2028g已成功应用于Snake eye、Helispy、西班牙靶机以及NASA各部门的无人机上,是一款成熟的无人机飞行控制系统[12]。

在国内,北京航空航天大学新型惯性仪表与导航系统技术国防重点学科实验室在很早就对

3

小型固定翼无人机飞行控制软件设计与开发

基于嵌入式操作系统的小型飞行控制软件进行研究和开发。通过基于VxWorks实时操作系统,对小型飞行控制软件进行了任务的划分,对各个任务的设计进行了详细的介绍,并且利用多任务机制对单任务飞行控制软件存在的不足之处做出了改进[13]。

哈尔滨工业大学设计的无人机飞行控制系统采用了ARM7处理器,其强大的处理能力增加了系统的计算能力,保障了系统的实时性和稳定性。并结合了操作系统的使用,进一步提高了系统的实时性,增强了软件的安全可靠性,使得整机性能有了很大的提高[14]。

防空兵指挥学院在飞行控制软件设计中采用模块化的设计思想。在功能模块分配方面,该学院的设计人员将系统功能分为八大功能模块,各个模块之间采取消息机制实现模块间通信。在处理器方面,选择了AT91M55800A的处理器,它以较高的集成度、较低的功耗,强大的处理能力提高了系统的可靠性,降低了系统功耗[15]。在飞行控制软件的设计上,开发人员采取了不同的抗干扰措施。如输入通道的数字滤波法,输出通道的重复赋值法,CPU指令冗余法等[16]。在软件内部针对常见的故障进行监测,一旦有故障产生将会进入相应的故障处理逻辑,并将故障编码通过遥测发送模块发送地面[16]。

1.2.2 本单位的研究现状

本单位在无人机飞行控制领域有丰富的科研经验,其中有多个型号的无人机飞行控制系统已交付客户使用,同时正在承担多个有关飞行控制系统研发的项目。经过多年的科研积累,经过全体师生的共同努力与刻苦钻研,目前取得了一些令人满意的成果。

05级王奕师兄完成了对无人直升机飞行控制软件的设计,并将其移植到了Intel 386EX处理器之上,进行了半物理仿真试验。而且还在Windows环境下,设计了“等效飞行控制”软件。

06级汪晓平师兄利用SCADE提供的同步数据流图完成了对飞行控制软件功能模块的设计与开发,解决了对模型进行工程化时遇到的实际问题,并在半实物仿真环境中进行仿真验证。姜印清师兄完成了基于ARM芯片的飞行控制软件的设计,并通过LabView搭建的实时仿真环境,完成了软件单元测试、整体性能测试和半物理飞行仿真试验。

07级刘培强师兄对小型无人直升机飞行控制软件进行了设计,并将其移植到ARM和DSP的处理器之上。通过对源代码开放的FlightGear软件进行二次开发,利用它自带的内部模型,搭建了简易的仿真环境,对小型无人直升机的飞行控制软件进行了半物理仿真。徐桂甲师兄将设计的飞行控制软件植到了mpc565和PC机上,进一步完善了飞行控制软件在目标机和PC机上的功能。

课题组前几届师生已在飞行控制软件的技术储备上做出了努力,本课题的研究也正是基于以上的研究成果开展的。在肯定现有成果的基础上,还有一些不足之处需要改进。如表1.1所示。

4

南京航空航天大学硕士学位论文

表1. 1 不足之处的分析

序号 1 2 3

不足之处开发方式的局限 处理器 的局限 数据通信的方式 数据通信的可靠性保证

不足之处的原因

不能将底层驱动和图形化建模(如SCADE)很好地结合起来 处理器的接口资源、运算速度、性价比等因素制约了

上层软件的性能。

不适合进行高效的大规模数据通信。

不能对各模块之间的数据通信进行有效的保护,当对

共享数据信息进行读写时,容易造成冲突

4

1.3 研究内容及需解决的问题

飞行控制软件系统主要由地面控制站软件、机载飞行控制软件、地面无人机仿真软件和仿真控制台软件构成,其总体架构如图1.2所示。机载飞行控制软件对机载传感器、无线测控单元、舵机等分系统进行管理,控制无人机实现自主导航、指令导航和人工导航等模式进行飞行。地面站软件接收遥测数据,以文字和图形的方式显示无人机的当前飞行状态。地面仿真软件内部建立无人机6自由度飞机模型,为在地面阶段验证飞行控制软件提供一个仿真验证的平台。

舵机指令飞行控制软件传感器信息无人机仿真软件遥控遥测地面控制站软件仿真控制台软件 图1. 2 飞行控制软件系统总体构架

如图1.2所示,飞行控制软件在整个飞行控制软件系统中处于核心地位。这部分工作的展开主要以软件为主,开发基于PowerPC平台的飞行控制软件。该飞行控制软件通过传感器采集信息,同时接收来自地面的遥控指令。然后将所得的信息传入中央处理单元,由中央处理器进行控制律参数的解算。最后将解算出的控制指令输出给舵机,由舵机来执行相应的动作。同时将相关的飞行状态信息、传感器信息和遥控指令下传至地面站,供地面指挥人员对无人机的飞行状态进行监控。

1.3.1 本文的主要研究内容

本课题围绕飞行控制软件的设计进行展开,主要研究内容包括以下三个方面: (1) 针对飞行控制软件的需求进行总体方案的设计。

5

小型固定翼无人机飞行控制软件设计与开发

设计的主要工作包括:总体架构的设计和验证方案的设计。根据飞行控制软件的设计需求

和硬件平台的结构特点,提出了飞行控制软件的总体架构。并设计达到需求规格的仿真验证方案,深入验证其各项指标。

(2) 按照总体方案进行飞行控制软件的实现。

软件实现主要分为三部分。第一部分是飞行控制软件底层驱动的实现。其主要包括:目标

系统的初始化、飞行控制计算机底层驱动模块的开发、串口中断服务程序的设计。这部分的工作主要给飞行控制软件服务模块提供统一的接口函数,方便其调用底层服务。

第二部分是飞行控制软件服务模块的设计。其主要包括:传感器模块、无线测控模块、舵

机控制模块和数据管理模块的设计。该部分的工作主要建立在硬件底层驱动的基础之上,通过调用底层驱动模块提供的接口函数来获取相应的数据信息,并将其信息提供给飞行控制软件功能模块。同时,将飞行控制软件功能模块的相关信息传递给硬件底层,使之驱动执行机构。

第三部分是飞行控制软件功能模块的设计。其主要包括:遥控遥测模块、导航模块、控制

律模块、调度管理模块的设计。这部分的工作主要是建立在服务模块的基础之上,通过服务模块获取到信息后,进行控制律的解算。再将解算出的控制指令信息传递给服务模块,由服务模块对底层驱动模块进行调用,从而实现控制无人机飞行的目的。

(3) 针对飞行控制软件进行测试和仿真验证试验。

这部分的主要工作包括:对飞行控制软件进行性能和功能测试。主要利用实验室现有的仿

真验证平台进行局部功能和系统功能的仿真验证。

1.3.2 本文需要解决的问题

根据课题的研究内容,需要解决的技术问题如下:

对飞行控制计算机接口资源进行底层驱动的开发。本飞行控制系统选择mpc565芯片作为CPU是考虑到其丰富的接口资源。由此就需要针对这些接口进行底层驱动的设计和开发,包括对串口驱动、PWM驱动、AD驱动、DIO驱动等。底层驱动的开发是整个飞行控制软件稳定可靠的基础。

对三种基本飞行模式的切换进行设计。针对自主导航、指令导航和人工导航之间的数据可靠性通信,导航切换逻辑的设计等问题都是飞行控制软件设计开发所面临的难点。

对模块间的数据通信进行设计。随着飞行控制软件各个模块的增加,数据量也越来越大,各模块之间数据通信将影响到整个飞行控制软件的安全。所以飞行控制软件各个模块之间数据交互的可靠性是一个必须解决的问题。

对飞行控制软件故障诊断和处置的设计。随着飞行控制软件对于安全性能要求的不断提高,就需要对故障的检测和处理进行设计和研究,尤其是故障处理逻辑的设计是飞行控制软件开发

6

南京航空航天大学硕士学位论文

的难点。

1.4 本文的章节安排

本文结合小型固定翼无人机的特点,拟开发一种合适的飞行控制软件,课题内容安排如下: 第一章 绪论。主要阐明研究工作的目的、意义范围、国内外进展情况、相关领域的前人工作和存在问题,并在此基础上确定了课题的研究内容和需要解决的问题。

第二章 飞行控制软件的总体方案。根据飞行控制软件的设计需求和飞行控制计算机硬件配置情况,详细设计了软件结构框架及仿真验证方案。

第三章 飞行控制软件底层驱动设计。完成飞行控制软件底层驱动程序的开发,主要包括串口、外扩串口、PWM输出及捕获、离散量的输入输出、模拟量的采集等。

第四章 飞行控制软件服务模块的设计。对飞行控制软件进行服务模块的划分,主要包括传感器模块、无线测控模块、数据管理模块、舵机控制模块。针对各个模块的功能分别进行设计。

第五章 飞行控制软件功能模块的设计。对飞行控制软件进行功能模块的划分,主要包括遥控遥测模块、控制律模块、导航模块以及数据管理模块。针对各个模块的功能分别进行设计,其中控制律模块和导航模块是设计的重点。

第六章 软件系统测试和仿真。首先,对飞行控制软件的性能进行测试。其次,利用实验室仿真验证平台进行半物理飞行仿真试验,对飞行控制软件的基本飞行功能和故障处理功能进行仿真验证。

第七章 总结与展望。对整个课题的工作内容进行总结,并针对不足之处,对后续的工作开展提出一些建议和思路。

7

小型固定翼无人机飞行控制软件设计与开发

第二章 飞行控制软件的总体方案

2.1 引言

本章首先对飞行控制软件的目标环境进行分析,阐述飞行控制计算机的资源配置,并在此基础上提出合理的软件设计需求。其次,按照设计需求进行飞行控制软件总体方案的设计。利用模块化的设计思想,通过对软件各个功能进行划分,合理地对软件进行设计。最后,通过已有的仿真验证平台设计仿真验证方案[17]。

2.2 飞行控制软件的目标环境

飞行控制软件的目标环境包括飞行控制计算机硬件环境和软件开发环境。飞行控制计算机是承载飞行控制软件的平台,其主要包括主控单元、接口单元、传感器单元、存储器单元、外围电路单元和电源单元。软件开发环境由软件工具和环境集成机制构成,用以支持软件开发的相关过程、活动和任务,为软件的开发、维护和管理提供统一的支持。一般包括代码编辑器、编译器、调试器等。

2.2.1 飞行控制计算机硬件环境

飞行控制计算机是维持飞行控制软件正常运行的硬件承载平台,其主要负责协调无人机飞行控制系统各个组成单元之间的工作,根据输入的控制指令,采集无人机的飞行状态数据,按照预定的控制算法及地面指令,通过执行机构控制无人机保持一定的姿态飞行,并具有一定的导航及任务管理等功能。其硬件结构如图2.1所示。

应用层程序底层驱动程序飞行控制软件飞行控制计算机主控单元接口单元电源单元传感器单元存储器单元外围电路单元 图2. 1 飞行控制计算机硬件结构

8

南京航空航天大学硕士学位论文

如图2.1所示,飞行控制计算机中接口单元是连接主控单元和外围接口设备的中间环节,

是飞行控制软件与外围设备通信的基础。飞行控制计算机中其它各个单元模块通过接口单元与主控单元相连,飞行控制软件驱动程序主要功能是驱动各个接口与外围设备进行数据交互。飞行控制计算机的硬件接口资源如图2.2所示。

串口1~4外围存储器扩展串口(TPU)片外AD芯片MPC565DIOSPI片外DA芯片BDMPWM舵机 图2. 2 飞行控制计算机的接口资源

如图2.2所示,飞行控制计算机的接口资源主要分为两部分:一部分为MPC565内部接口,其中包括串行通信接口、离散量接口(DIO)、BDM调试接口、SPI总线接口和脉宽调制接口(PWM)等。第二部分主要包括MPC565片外的接口,其中主要包括片外AD接口、片外DA接口、Flash接口和RAM接口等。根据传感器通信接口的需求,选用以下飞行控制计算机的接口作为飞行控制软件的输入接口,如表2.1所示。

表2. 1 接口资源分配表

接口资源

串行通信接口

连接设备 PC机 IMU GPS Xtend 其他串口设备

PWM信号接口 离散量输入输出接口

SPI总线接口

四路数字舵机 机载设备等

接口功能 烧录程序 采集IMU数据 采集GPS数据 进行无线通信 扩展功能 控制舵机的偏转 控制设备的开关

气压高度计 AD采集 空速计 AD采集

9

小型固定翼无人机飞行控制软件设计与开发

针对自带串口和外扩串口进行资源配置分析。CPU自带的4路串口主要是用来和外围传感器等设备进行通信,其中包括GPS、IMU和Xtend等。GPS主要用来为飞行控制软件提供经纬度、高度等信息,是飞行控制软件中必不可缺少的组成部分。GPS支持的主要通信接口有串行通信接口、USB接口、CAN通信接口,考虑到飞行控制机上的资源接口和通信的方便性,选用较常用的通信接口——串口。IMU主要用来对飞行控制软件所需的姿态角信号、姿态角速度和三轴加速度等信息进行采集,其只能通过串行通信接口与外界进行通信。Xtend(无线数传电台)主要用来实现机载与地面之间的数据通信,是实现遥控遥测功能的基础。Xtend与外界通信的接口仅是串口。综上所述,GPS、IMU、Xtend各需要一个串口,PC机也需要占用一个串口。此外,地面检测的通信接口也是串口,片上自带的串口资源无法满足要求,所以系统需要利用片上的时间处理单元(TPU3)实现串口的扩展。TPU3是一个多功能的模块,它可以根据需求配置成时间计数功能、异步串行通信功能、PWM输出功能、离散量输入输出功能等。根据飞行控制软件的需求将TPU3模块配置成异步串行通信功能,这样便可以满足系统设计的需求。

针对PWM信号接口进行资源配置分析。根据飞行控制软件设计的需求,需要外接四路航模舵机。每路航模舵机的控制信号是周期为20ms,高电平时间为0.9ms~2.1ms的PWM信号,通过改变高电平时间,控制舵机的旋转角度。当高电平时间从0.9ms转到2.1ms时,舵机从-65度转到65度。当高电平时间在1.5ms的时候,舵机保持在0度。

针对离散量输入输出接口进行资源配置分析。根据控制逻辑的设计要求,当给出机翼抛掷指令的时候,需要由飞行控制计算机输出离散量信号。当要监测任务设备的开启状态时,需要开启离散量输入功能,从而达到监测任务设备的目的。根据以上的需求以及飞行控制计算机的自身配置,利用时间处理单元来配置离散量输入输出通道。

针对SPI总线接口进行资源配置分析。SPI总线主要是用来和片外AD芯片进行数据通信,其中包括对空速计、高度计和舵机反馈电压采集功能。空速计主要是用来给飞行控制提供空速信号,高度计主要是提供高度信息。MPC565片内AD采集的精度只有10位,而根据设计的需求和模拟量采集精度的要求,本课题采用16位采集精度的AD芯片,利用片内SPI总线来实现片外芯片和处理器之间的数据通信。

2.2.2 飞行控制软件开发环境

在对飞行控制软件进行开发时,选择一个合适的软件开发环境是至关重要的。其可以提高软件开发的可靠性、缩短软件开发的时间和提高软件开发的效率。软件集成开发环境主要应用于程序的开发,一般包括代码编辑器、编译器、调试器和图形用户界面工具等,其集成了代码编写功能、分析功能、编译功能、debug功能等。

10

南京航空航天大学硕士学位论文

本文所使用的主控单元是基于MPC565微处理器的一款主板,考虑其开发效率和版本等问题,本软件使用Freescale公司推出的CodeWarrior集成开发环境,并采用宿主机—目标机交叉开发模型,主机和目标机之间通过调试设备(USBTAP仿真器)的BDM调试口进行相连接。本实例的软件开发平台如图2.3所示。

PC机(Code warrior)USB延长线USBTAP仿真器BDM调试电缆主控单元(MPC565) 图2. 3 软件开发平台

在图2.3中可以看出,正是采用了宿主机—目标机交叉开发模型,使得软件开发的工作聚焦到PC机上,使得软件开发人员方便快捷地进行软件的开发、调试和维护工作。应用程序在宿主PC机的CodeWarrior集成开发环境中编译链接后,生成可执行文件,通过主机上的调试软件和调试设备将其下载到目标机上,完成对应用程序的调试和分析。

2.3 飞行控制软件的需求分析

小型固定翼无人机飞行控制软件在飞行控制计算机上电后启动运行,是一个相当复杂的信号处理系统,是整个小型飞行控制系统的核心。所以整个小型固定翼无人机飞行控制系统的关键是飞行控制软件的设计,其直接决定了小型无人机的安全和相关性能的实现。

在小型无人机系统中,飞行控制计算机硬件平台的功能和接口能力决定了飞行控制系统的整体性能。根据上述飞行控制计算机的硬件接口资源,本软件的设计在功能和各种性能上有着更为特殊的要求,不仅要完成小型固定翼无人机自主导航、指令导航和人工导航等飞行任务,而且还需要具有较高的实时性、安全可靠性和可维护性。以下主要对飞行控制软件的各种主要需求进行详细的分析。

(1) 功能需求

本课题设计的飞行控制软件要在低成本,高集成度的飞行控制计算机上,能实现三种飞行模式的切换,这就要求其飞行控制软件具有如下功能:

能够实现三种飞行模式的管理。通过地面决策指挥人员发出的指令可以实现自主导航、指令导航、人工导航三种飞行模式的切换。当地面监控软件发送自主起飞指令时,软件进入自主导航模式。在空中有飞行任务需要执行时,可切换至指令导航。在飞行控制系统出现故障时,可切换至人工导航模式,并用Futaba操纵手柄来控制无人机的飞行。

能够根据航路点的信息按照预置的任务航线进行全自主飞行,实现自动稳定高度飞行和自动控制无人机进行爬升、平飞、下滑以及左右转等动作。

11

小型固定翼无人机飞行控制软件设计与开发

能够通过地面检测软件快速检测机载设备的工作状态、实现各种参数修改,并支持将航路信息进行上传。

能够实现飞行状态的实时监测,能够实时地将飞行状态信息、传感器的信息以及控制律解算出来的关键数据下传到地面站,供地面指挥人员实时监测无人机的飞行状态。

能够实现半物理仿真。通过采集无人机实时仿真系统模拟的传感器数据进行控制律的解算,并将控制指令发送给仿真系统,从而实现飞行控制系统的半物理仿真。

(2) 实时性需求

实时性方面的需求主要关系到两个方面:硬件和应用程序[18]。在本课题中,当硬件平台确定下来后,整个系统的实时性主要由应用程序来决定。飞行控制软件属于安全关键和任务关键型软件,要求所有的任务在规定的时间内完成各自的工作。在对任务模块进行划分时,需考虑在最坏情况下系统任务运行时间和中断响应时间,仅仅从一个固定的时间来衡量系统的响应时间是不完善的[19]。所以对软件进行设计时,实时性方面应该从模块的数量和任务的执行时间等方面去考虑[20]~[21]。

(3) 安全可靠性需求

飞行控制软件的安全可靠性可以通过不同的手段来实现,如利用软件看门狗来保证程序的有序运行;采用对数据区进行管理的方式来保证各个模块之间的数据交互;对无线链路通信采用分时复用的方法,保证测控链路的安全可靠;对传感器和测控链路进行故障检测和处理,提高飞行控制软件的故障处理能力。

(4) 可维护性需求

飞行控制软件的可维护性主要通过软件模块化的设计来实现。为了增强软件的可维护性和

可扩展性,需要对飞行控制软件按照不同的功能进行模块的划分,并对各个模块进行封装只留出模块间数据交互的接口,便于软件的维护和后续功能的扩展。

2.4 飞行控制软件的整体结构

根据飞行控制软件的需求特点,进行飞行控制软件的设计,合理的结构设计可以为软件的开发、测试和维护奠定了良好的基础。首先需要对飞行控制软件的框架进行设计,其次对整个飞行控制软件进行合理的模块划分。飞行控制软件的设计需要满足安全性、可靠性、实时性、可扩展性和可维护性等特点。

根据以上的设计原则,本课题设计的飞行控制软件可划分为:底层驱动模块、传感器模块、无线测控模块、舵机控制模块、数据管理模块、遥控遥测模块、控制律解算模块、导航模块和调度管理模块。对这些模块进行分类组合,将整个飞行控制软件可划分为三个“执行层”,分别是硬件驱动层、软件服务层和软件功能层。通过这三个执行层来实现整个飞行控制软件的功能。

12

南京航空航天大学硕士学位论文

其具体结构如图2.4所示。

调度管理模块遥控遥测模块软件功能层导航模块控制律模块软件服务层传感器模块无线测控模块数据管理模块舵机控制模块硬件驱动层模拟量驱动离散量驱动PWM驱动串行接口驱动 图2. 4 机载飞行控制软件结构图

2.4.1 硬件驱动层

硬件驱动层是整个飞行控制软件与外围设备通信的基础。其主要包括串口驱动、PWM驱动、离散量驱动、模拟量驱动等。各个驱动模块的功能是在为硬件环境与应用程序之间建立一个桥梁,实现外设和应用程序之间的衔接,解决飞行控制软件和外部传感器单元、舵机控制单元、测控单元等外围设备通信和管理问题。

在硬件驱动层内部,各个驱动模块相互独立,每个模块有各自的数据缓冲区来保证该模块与外界数据通信时的安全。在硬件驱动层的外部,其通过统一的函数接口(API)向软件服务层的各个模块提供底层驱动和管理服务,实现传感器数据采集,舵机控制指令的输出和遥测信息的下传等功能,如图2.5所示。

软件服务层传感器模块无线测控模块舵机控制模块AD驱动(API函数)串口驱动(API函数)PWM驱动(API函数) 图2. 5 驱动层与服务层之间的调度关系

在图2.5中,硬件驱动层位于整个飞行控制软件的最底层,需要和传感器、机载设备、任

务设备和执行机构等外围设备进行数据通信。硬件驱动层各个模块一方面需要从外围设备采集数据源信息,另一方面将获取到的数据信息供服务模块使用。飞行控制软件的服务模块需要通过调用串口驱动来获取GPS、IMU和无线测控电台的数据源信息。如传感器模块需要通过调用AD驱动来采集高度计和空速计的数据。舵机控制模块通过调用PWM驱动来实现对舵机偏转

13

小型固定翼无人机飞行控制软件设计与开发

角度的控制。

2.4.2 软件服务层

软件服务层在整个飞行控制软件中起到承上启下的作用,是整个飞行控制软件的“中坚力量”。其主要包括传感器模块、无线测控模块、舵机控制模块、数据管理模块。该层的主要功能包括采集各个传感器的数据,管理各模块之间的数据交互,实现机载与地面之间的数据链路通信,执行控制单元给出的舵面操控指令等。

在软件服务层内部,各个服务模块之间是独立的,它们各自为软件功能模块提供专有的数据服务功能。在软件服务层外部,一方面通过调用由硬件驱动层提供的API驱动函数来实现传感器数据和任务设备数据的采集,包括GPS传感器数据、IMU惯性测量单元数据、高度、空速等传感器数据。一方面将飞机姿态、位置、高度、速度等信息提供给飞行控制软件功能模块进行实时解算,并将功能模块解算出来的舵机控制信号通过服务模块准确可靠地输出给控制单元,如图2.6所示。

软件功能层控制律模块导航模块调度管理模块遥控模块遥测模块舵机控制模块软件服务层传感器模块无线测控模块PWM驱动(API函数)AD驱动(API函数)串口驱动(API函数) 图2. 6 三层模块之间的调度关系

在图2.6中,软件服务层介于硬件驱动层和软件功能层之间,主要功能是通过调用各个硬件驱动来获取数据源信息,从而服务于软件功能层各个模块。传感器模块作为整个飞行控制软件的输入信息,通过串口驱动从各个传感器中获取所需的数据信息,供导航模块进行导航制导运算。舵机控制模块作为整个飞行控制软件的输出执行模块,将控制律模块解算出来的舵面信息转换为脉宽调制信号,从而控制舵机的偏转。无线测控模块主要是承担遥控遥测数据的物理载体,一方面将地面站发出的遥控指令上传给遥控模块,另一方面将飞行控制软件的各种机载信息下传至地面站。

2.4.3 软件功能层

软件功能层处于整个飞行控制软件的上游,是完成飞行控制主要功能的关键。其主要包括导航模块、控制律模块、调度管理模块、遥控遥测模块。该层的主要功能包括实现三种飞行模式的切换、导航制导功能、控制律解算功能、遥控数据的接收和遥测数据的发送。

14

南京航空航天大学硕士学位论文

在软件功能层的内部,导航模块为控制律模块提供相关的制导数据,并可以通过遥测模块将制导数据、控制指令等数据下传至地面站。调度管理模块可以对导航模块中的三种模式进行调度,从而实现三种飞行模式的切换。在软件功能层的外部,利用软件服务层所提供的传感器等飞机状态信息来进行飞行控制的解算,并将解算出来的控制信号通过软件服务层中的舵机控制模块来实现对飞机的控制。在软件功能层和服务层之间的数据需要服务模块提供的数据管理服务来保证通信的可靠,如图2.7所示。

软件功能层控制律模块导航模块调度管理模块遥控模块遥测模块舵机控制模块软件服务层传感器模块无线测控模块 图2. 7 服务层与功能层之间的调度关系

在图2.7中,软件功能层位于服务层之上,通过从服务层获取所需的数据来进行飞行控制的解算和其它功能的实现。当飞行控制软件接收到来自地面站的指令时,根据遥控模块接收到的指令从而启动相应的导航模式。导航模块将传感器模块采集到的信息作为输入进行导航制导的解算,并将制导数据传递给控制律模块使用。控制律模块进行飞行控制解算后再将控制信号传递给舵机控制模块,同时也将相关信息通过无线测控模块下传至地面站。

正是由于这种软件设计的架构可以使得功能层各个模块不用直接和底层驱动“打交道”,通

过服务层来获取所需的数据信息。同时,通过功能层各个模块之间的协调运行完成了飞行控制软件的基本功能,

2.5 软件的测试和验证方案

本小节的内容分为两大部分:第一部分是针对软件实时性进行相关的测试。第二部分是将整个飞行控制软件下载到飞行控制计算机中运行起来,使用实验室现有的半物理仿真验证平台进行整个软件的功能性验证。

2.5.1 软件实时性能测试

嵌入式实时软件开发完成之后需要对其实时性能进行测试,本文测试的内容主要包括任务执行时间和中断响应时间。任务的执行时间和中断响应时间都可通过定时计数来获得。

获取任务的执行时间可采用如下方法。当进入任务时启动计数器开始计数,定时1s来获取

每个任务运行的频率,从而可知任务的执行时间。为了尽可能的得到任务运行的时间,需要统计其最大运行时间和最小运行时间。最后将测得的运行时间和各个任务设计的运行时间进行对比,从而得出测试的结果。

15

小型固定翼无人机飞行控制软件设计与开发

获取系统的中断响应时间可采用如下方法。当异常发生时,在CPU异常入口处启动计数器开始计数,直到进入串口中断服务之前停止计数器的计数。通过两次计数的差值得到中断响应时间。此值需要进行多次试验取其最大中断响应时间。

2.5.2 飞行控制功能验证

根据飞行控制软件设计的功能需求,小型无人机可以实现以下基本的飞行控制功能。小型无人机在没有地面指令干预的情况下,可以按照地面预装的航线进行全自主飞行;当地面站发出指令导航命令时,能够执行来自地面站的各种动作指令,并能稳定平滑地进行各个飞行模态的切换;当需要切换至人工导航指令时,飞行控制软件根据地面操控人员手中的Futaba遥控器指令来进行飞行。

为了验证以上功能的正确性和可靠性,需进行仿真验证试验。为此利用实验室已有的半物理仿真环境,对飞行控制软件进行仿真验证。其仿真系统总体结构如图2.8所示。

无人机集成仿真设备飞行控制计算机传感器仿真接口飞行控制律实时解算无人机数学模型实时解算传感器模型导航模态切换仿真控制台地面站 图2. 8 半物理仿真系统结构图

如图2.8所示,整个仿真验证平台由飞行控制计算机、无人机集成仿真设备、仿真控制台、地面监控软件等组成。飞行控制计算机实时地接收来自仿真设备的模拟传感器信息,经过飞行控制律的实时解算后,产生相应的舵机控制信号给仿真设备。仿真设备接收到控制信号后经过内部无人机数学模型的实时解算,产生飞行控制系统所需的模拟传感器信息给飞行控制计算机,从而形成一个闭环的仿真系统。整个过程中,仿真控制台实现对仿真设备的基本控制,地面监控软件主要用来实时监控飞行控制系统的运行情况。

采用以上的半物理仿真环境对飞行控制功能进行仿真验证,其验证的流程是:在自主导航

飞行模式下,首先制定出一条完整的航路信息,使无人机按照该航路进行自主导航飞行。然后对自主导航时的飞行数据进行分析。验证自主导航功能时,主要验证各个飞行控制逻辑设计的正确性和切换的平滑性。在指令导航模式下,首先验证指令导航和自主导航切换时,导航切换逻辑设计的正确性。然后验证各个姿态指令动作响应的正确性。在人工导航模式下,一方面验

16

南京航空航天大学硕士学位论文

证人工导航遥控功能的实现,另一方面验证人工导航切换至自主导航时,导航切换逻辑设计的正确性。

2.5.3 故障处置功能验证

根据飞行控制软件的设计需求,飞行控制软件在设计的过程得考虑外围设备可能出现的故障以及对这些常用故障进行处理。为了验证小型固定翼无人机故障处置功能设计的正确性和合理性,需要设计相应的验证方案进行软件功能的验证。在对故障处置功能进行验证时,需利用集成仿真设备,遥控遥测软件、地面检测软件和飞行控制软件共同搭建完成仿真验证平台。

本软件在设计时,主要针对软件的高度信息、位置信息和测控链路出现的故障进行设计和处理。对各个故障进行处置功能的仿真验证时,采用如下方法。通过仿真控制台模拟高度信息故障和位置信息故障,来测试和验证飞行控制软件的高度和位置故障处理逻辑。通过遥控遥测软件模拟测控链路故障,来验证飞行控制软件的测控链路故障处理逻辑。

2.6 本章小结

本章根据飞行控制计算机的硬件配置情况和飞行控制软件的需求,提出了飞行控制软件的总体设计方案,对软件进行了模块化的划分,并设计了仿真验证方案。整个飞行控制软件各功能模块的详细设计将在下面的各个章节展开。通过本章的工作,实现了飞行控制软件总体上的设计,为后续的软件开发工作奠定了基础。

17

小型固定翼无人机飞行控制软件设计与开发

第三章 飞行控制软件底层驱动设计

3.1 引言

飞行控制软件是典型的嵌入式系统软件,主要包括底层硬件驱动程序和飞行控制软件应用程序。其中,底层硬件驱动程序主要根据所使用的飞行控制计算机的资源来进行设计,它的开发是飞行控制软件开发的前提。本课题所涉及到硬件驱动程序主要包括以下两个部分:

针对板级初始化进行设计。嵌入式系统上电后,初始化系统的硬件环境,包括MPC565处理器、存储器和相关寄存器等的初始化。通过设置各种寄存器和某些数据结构、参数,为随后的系统级初始化和应用程序的运行建立环境。

针对各接口进行驱动程序的设计。主要涉及到串口、扩展串口、PWM、AD接口、DIO接口等接口的驱动,其主要功能是建立外围设备的“软接口”,解决外围设备通信和管理问题。

3.2 板级系统初始化

本课题使用的是MPC565芯片,通过设置和修改相应的启动文件形成启动文件结构图。整个与启动有关的文件由1个链接文件(MPC565.lcf)、1个配置文件(MPC565.cfg)、2个C文件(Start.c和MPC565_init.c)、2个头文件(mem.h和immap.h)、2个汇编文件(MPC565Lib.a和exception.a)等组成。系统启动后,由以上这些文件共同完成目标系统的初始化。如图3.1所示。

1. MPC565Lib.a 片内库文件汇编文件2. exception. a 异常向量处理文件1. mem.h 调用C语言库头文件2. immap.h 完成片内各个寄存器地址映射启动文件C文件1. Start.C 完成堆栈的初始化、目标板相关声明、跳转至main函数入口等2. MPC565_init.c 完成对相关寄存器、片内/外Flash的设置、片内/外RAM的设置等配置文件1. MPC565.cfg 完成板级的相关配置链接文件1. MPC565.lcf 用来链接应用程序写入指定的地址中

图3. 1 启动文件示意图

MPC565芯片复位后,系统处于管理模式,此时整个系统处于异常向量表中的0x0100处,程序根据异常向量表进行跳转,启动代码复位后工作流程示意图如图3.2所示。

18

南京航空航天大学硕士学位论文

芯片复位PC=0x0100.org(1)reset:lisorimtlrBlr 0x0100asm void __reset(void){lisr3, 0orir3, r3, 0x3002mtmsrr3b__start}MPC565初始化文件r4,__reset@hr4,r4,__reset@lr4 异常向量处理文件(2)Asm extern void __init_registers(void){完成各堆栈初始化等}__start文件(5)asm void __init_hardware(void){完成板级初始化等}__start文件(4)(3)asm void __start(){bl__init_registersBl __init_hardwareBl main}__start文件(6)void main (void){}_Main文件 图3. 2 启动工作流程

如图3.2所示,箭头上的数字序号代表的是程序执行的先后顺序。

(1) 芯片复位后,PC处于0x0100处,然后芯片根据异常向量表中的偏移地址,得到复位程序的地址;

(2) 跳转到复位处理程序处; (3) 跳转到start()函数处;

(4) 调用init_registers()函数,完成各个堆栈的初始化; (5) 调用init_hardware ()函数,完成目标板的初始化; (6) 跳转到应用程序main()入口处;

当进入main函数后,由板级初始化转向片级初始化。片级初始化主要包括系统时钟初始化、各个硬件接口驱动的初始化、各个传感器的初始化、用户中断与CPU的挂接、地面装订数据的读取和初始变量的赋值等。通过这一系列的初始化为整个飞行控制软件的运行做好了“硬准备”和“软准备”。

3.3 串口驱动设计

串口是计算机系统应用最为普及的一个标准接口,传感器模块接口、无线接收模块接口、程序烧录端接口、地面检测口等都是利用串口与CPU进行数据交互。本课题用到串口主要包括两部分。第一部分是CPU自带的四路232串口。第二部分是利用TPU3模块实现422串口的扩展,下面将分别进行介绍。

19

小型固定翼无人机飞行控制软件设计与开发

3.3.1 CPU自带串口的驱动设计

根据飞行控制软件开发的需求,结合飞行控制计算机的硬件接口资源对CPU自带的串口进行分配。所以如图3.3所示。

MPC565串口1串口2串口3串口4程序烧录口MICROSTRAINIMUOEMV-1GGPS MaxStream9XTend OEM 图3. 3 自带串口资源配置

如图3.3所示,程序烧录线、GPS、IMU、Xtend的通信接口都是串口,MPC565中拥有一个队列串行多通道模块,其中自带的四路串行接口是SCI接口形式,刚好满足飞行控制软件设计的需求。其中SCI接口是一个双线的异步接口,具有接收和发送两根信号线的异步串口。所以SCI能工作于全双工模式,因为它有独立的数据发送和数据接收器,这样能够保证SCI即能够同时进行,也能够独立进行发送和接收的操作[22]。

串口通信采用中断方式,所以在串口进行通信之前既需要完成对串口的初始化,也需要完成对串口中断的初始化。串口初始化和串口中断初始化都需在串口驱动被调用之前完成其本身的工作。在实现串口中断之前,还需将中断挂接在CPU中断体系上,这部分工作需要在整个系统初始化时完成。

当服务模块调用串口驱动进行数据发送时,将数据写入软件环形缓冲区中,通过中断服务子程序将数据发送出去,为上层提供数据发送通道。当服务模块调用串口驱动进行数据接收时,通过中断服务子程序将数据存入软件环形缓冲区,应用程序从缓冲区读取数据,为上层提供数据接收通道。

为了保证飞行控制软件能够实时地接收完整的传感器数据。这就需要综合考虑传感器的更新频率、串口通信的波特率、以及飞行控制软件调用串口的频率。

本课题选用的GPS输出频率是20Hz,即GPS自我更新的周期是50ms。飞行控制软件接收GPS数据的频率是20Hz,即每隔50ms调用一次串口来接收GPS的数据。因此,GPS的数据必须在50ms内完成传输,如果在50ms内还没接收完完整的一帧GPS数据,那么下一帧数据就会覆盖软件数据缓存区从而造成数据的丢失。所以对串口的波特率应进行仔细的计算和分析。当波特率为9600bps时,串口大约1ms接收1个字节,所以要将完整的一帧GPS数据(77个字节)大约需要77ms。这个时间大于GPS数据更新的频率,所以波特率若设置为9600bps将不满足设计条件,经过计算波特率设置为19200bps满足时间要求。当GPS更新频率发生改变的时

20

南京航空航天大学硕士学位论文

候需要对波特率重新进行计算。

本课题使用的IMU输出频率是100Hz,飞行控制软件接收IMU数据的频率是100Hz。根据以上分析的原理,所以一帧完整的IMU数据必须在10ms内完成传输。经过计算,将此串口的波特率设置在38400bps,满足设计条件。当IMU更新频率发生改变的时候需要对波特率重新进行计算。

在利用串口发送数据时,如果调用太慢的话会造成软件缓冲区填满的后果。所以也要考虑飞行控制软件的调用周期,这和应用程序要发送的数据个数以及发送频率有关。

为了保证串口数据通信的安全高效,本课题采用两种手段来保证。第一种手段是采用环形缓冲区结构来保证串口通信高效可靠。设计环形缓冲区的优点是高效,其与上层进行数据通信时只需移动指针,提高了数据交互的高效。第二种手段是采用串口缓冲区监控手段来避免串口连续丢失数据的情况。在串口缓冲区中设置监控器,定时监控缓冲器的状态。当1秒内连续多拍接收不到数据时,就判定串口出现故障,则对串口重新进行初始化。若连续初始化5次则跳出初始化流程,并告知地面站串口已故障。以串口接收流程为例,如图3.4所示。

开始串口故障处理初始化监控器开始定时计数调用串口中断服务子程序1秒内是否有数据?否是否软件缓冲区是否有数据?是接收数据重新初始化退出否连续初始化的次数超过5次?是告知地面站该串口已故障

图3. 4 串口数据接收流程

在图3.4中,串口的初始化需要在整个飞行控制软件进行初始化的时候完成,为传感器模块调用串口驱动做好准备。当接收数据时,首先对串口进行初始化并打开中断,这样一旦接收到数据,中断服务子程序便会将接收到的数据存到接收缓冲区中。然后查询接收缓冲区中是否有数据,若有数据则立即将数据从接收缓冲区中取出。串口接收驱动的实现需要合理地调用各个接口驱动函数,如表3.1所示。

21

小型固定翼无人机飞行控制软件设计与开发

表3. 1 串口接收驱动函数表

驱动接口函数 PPC_ComInit()

PPC_ComEnableInterrupt() PPC_ComIn()

PPC_ComInterruptHandler()PPC_ComRxLen() PPC_ComRxLenCheck()

接口函数功能

完成串口驱动的初始化 完成串口中断使能工作 完成串口接收工作 串口中断服务子程序

检测串口软件缓冲区中的数据长度 定时监控串口缓冲区

对于飞行控制软件而言,传感器的信息是飞行控制解算的重要输入数据,因此接收传感器的信息是重要任务。在接收传感器数据时,串口担任了数据接收通道的“角色”,所以串口驱动直接会影响到传感器数据的接收。在本文设计的串口驱动中增加了对软件缓冲区进行定时监视的服务功能,避免因为串口驱动的异常而导致传感器接收功能的瘫痪。对于串口异常的监测设计如下所示。

DO 在缓冲区中设置计数器 定时监控串口驱动的工作状态 If ( 监测到1秒内缓冲区无数据 ) {

判定串口驱动异常

判断当前异常的串口通道号 针对该通道进行重新初始化

IF( 连续初始化的次数超过5次 ) { }

不再进入初始化流程 }

告知地面站该路串口已故障 等待地面站指挥人员做出决策

3.3.2 TPU3外扩串口的驱动设计

根据飞行控制软件的设计需求和总体方案,地面检测需要通过串口进行通信,而MPC565自带的串口只有四路,无法满足现有软件功能的需求,所以需要利用MPC565芯片上的TPU3模块来扩展串口。本课题利用TPU3模块扩展六路串口来满足地面监测等各种扩展功能,这六路串口均采用RS-422标准进行数据通信。在飞行控制计算机板卡上通过拨码开关的方式实现RS-232和RS-422之间的切换。

22

南京航空航天大学硕士学位论文

串行通信模块需要包含一个发送器和一个接收器,用来完成异步通信的双向收发的功能。在TPU3模块中每个通道控制一个引脚,一个通道既可以配置成发送器也可以配置成接收器,但是不可以同时配置成两个。所以可以利用TPUA和TPUB模块中的12路通道配置成所需的6路串行通信接口。对TPU3模块进行配置后,进入扩展串口初始化流程。完成以上设置便可以对串口进行收发操作。除了对TPU3模块进行配置外,其他设计流程和自带串口一样。扩展串口驱动需要通过调用以下驱动接口函数来实现。如表3.2所示。

表3. 2 扩展串口驱动函数表

驱动接口函数 UartInit() UartComRxLen() UartComTxLen() UartComIn() UartComOut() UartInterrupt()

接口函数功能

完成扩展串口的初始化

检测串口接收缓冲区中的数据长度 检测串口发送缓冲区中的数据长度 完成串口接收工作 完成串口发送工作 串口中断服务子程序

通过调用表3.2中的接口函数来实现扩展串口的收发工作。扩展串口的收发也是采用中断

方式,而地面检测功能是属于触发式功能。所以飞行控制软件在对地检通信接口进行调用时,其调用周期可以适当的放宽。

3.3.3 串口中断服务的设计

在飞行控制软件的设计中需要通过中断来进行异步事件的处理。中断服务程序的设计质量直接影响到飞行控制系统的实时性和工作效率。由于MPC565的中断体系结构有其独特的特点,使得串口中断需要按照其体系结构来进行设计。

在MPC565中断体系中,当外部引脚出现报警、指令异常、系统复位等非正常事件时,将会引起CPU进入异常处理流程。当异常发生时,状态寄存器里面的值将会被保存下来。此时,处理器将会根据中断状态字的值来跳转到中断向量表所对应的位置。每个中断都占用异常向量表的一个位置,这些不同的位置组成了异常向量表[23]~[24]。表3.3列举了一部分异常向量偏移地址。

表3. 3 MPC565异常向量表

偏移地址 00100 00200 00300

异常类型

系统复位, 不可屏蔽中断

机器检查 数据存储

00400 Reserved 00500

系统中断

23

小型固定翼无人机飞行控制软件设计与开发

本文在设计串口中断的过程中主要用到了表3.3中的系统中断(00500),其中主要包含8个外部中断源(IRQ0~7)和8个内部中断源(LEVEL0~7),串口中断主要占用LEVEL0~7中的一个

[25]

。本小节按照MPC565中断体系结构对串口中断进行如下设计:

针对串口模块自身进行初始化。对串行通信接口的波特率,数据位、校验位和停止位等数

据格式进行设置,使之完成基本配置。

对串口中断进行初始化配置。对串口中断级别(LEVEL0~7),串口接收中断使能,串口发送中断使能,数据发送使能和数据接收使能进行相应的设置。

将串口中断与CPU中断体系相结合。先禁止系统中断和串口通信中断,再配置中断向量表中的入口地址和合适的中断屏蔽位,最后再打开串口通信中断和系统中断。完成用户中断和CPU中断体系的结合。

进入MPC565异常处理程序。当异常向量表中的外部中断发生时,跳转至中断向量表所对应的地址,调用用户中断服务子程序。

进入用户中断服务子程序。用来将硬件数据寄存器中接收到的数据存放到软件缓冲区中,把将要发送的数据存入硬件数据寄存器中,并通过发送器发送出去。

3.4 PWM驱动设计

本课题使用的舵机为航模级舵机,用PWM信号进行控制。本课题通过对MPC565上的MPWMSM子模块进行配置,产生相应的PWM信号输出来控制舵机,同时利用MDASM子模块对外部的PWM信号进行捕获。

3.4.1 舵机的工作方式

舵机是一种位置伺服的驱动器,它根据接收到的控制信号输出对应的角度,主要适用于角度不断变化并需要保持的控制系统。其主要的工作原理:控制信号通过接收通道进入信号调制芯片后,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,直到电压差为0,电机停止转动。从以上的舵机工作原理可以看出,控制数字舵机的信号实质是可调宽度的脉冲信号,利用占空比的变化来改变舵机的位置。

本课题使用的执行机构由4个航模级的舵机组成,由它们来控制整个小型固定翼无人机的飞行状态。其中每路航模舵机的控制信号是周期为20ms,高电平时间为0.9ms~2.1ms的PWM波,通过改变高电平时间来控制舵机的旋转角度。当高电平时间从0.9ms转到2.1ms时,舵机从-65度转到65度。当高电平时间在1.5ms的时候,舵机保持在0度。航模舵机的控制要求如图3.5所示。

24

南京航空航天大学硕士学位论文

9ms<=周期<=20ms5V0.9ms脉冲左转极限位置1.5ms脉冲中立位置2.1ms脉冲右转极限位置0V0.9ms<=脉宽<=2.1ms

图3. 5 舵机的控制要求

3.4.2 PWM信号的输出

根据飞行控制软件的需求,需要主控处理器提供四路PWM输出给四路舵机。MPC565接口资源比较丰富,可以提供八路PWM通道,完全能够满足设计的要求。

PWM驱动主要由初始化和脉宽输出函数构成。在初始化函数中主要对脉宽调制寄存器进行设置,将PWM输出的周期设置为固定的20ms。脉宽输出函数主要功能是将飞行控制软件进行控制律解算后的控制指令转化成PWM信号驱动舵机。其中,输出的高电平时间为0.9ms~2.1ms。通过PWM初始化和脉宽输出函数来实现飞行控制软件的PWM输出。其PWM输出流程如图3.6所示。

开始初始化选择通道输出波形退出舵机输出与舵机反馈作比较?正常异常启动计数器继续进入PWM输出主流程否是否连续T拍超出范围?是找出当前异常的输出通道判定PWM输出异常重新进入PWM输出主流程重新初始化PWM

图3. 6 PWM输出流程

飞行控制计算机提供八路PWM输出,根据飞行控制软件的需求,使用其中的四路作为四路舵机的通道。飞行控制软件通过定时调用的PWM驱动接口函数,来实现对舵机的控制。

25

小型固定翼无人机飞行控制软件设计与开发

飞行控制软件主要通过调用PWM初始化函数和输出函数来完成舵机控制的功能。PWM的初始化需要在整个系统进行初始化的时候完成,为应用程序的服务模块提供驱动做好准备。PWM输出函数主要是为服务层模块提供接口,实现底层与应用层的连接。飞行控制软件需要实时地将控制律解算出来的控制信号来控制舵机的偏转,所以需要对PWM驱动接口函数进行定时调用。在本课题中,所用到的PWM输出驱动接口函数如表3.4所示。

表3. 4 PWM输出接口函数表

驱动接口函数 Mpwm_Init(void)

Mpwm_OutEnable(unsigned

char channel)

接口函数功能

完成PWM驱动的初始化 完成PWM输出使能工作

Mpwm_OutDisable(unsigned 完成PWM输出禁能工作 char channel) Mpwm_Out(void) Mpwm_OutCheck(void)

完成PWM输出工作 保障PWM正常输出

PWM信号的输出是控制整个无人机执行机构的重要信号,所以需要保证PWM信号输出的可靠性。本小节主要通过两方面来实现,一方面在使用PWM输出功能的时候,需要防止在没有调用PWM驱动模块时,出现不应有的PWM信号。因此,在飞行控制软件每次调用PWM模块前,必须将PWM输出功能禁止,在调用时再打开输出功能。另一方面需要将舵机反馈信号和舵机输出信号做比较,如果比较的结果超出指定的范围,则重新输出舵机控制信号。如果比较的结果连续T拍超出限定范围,则进行PWM驱动的重新初始化,关键实现如下伪代码所示。

DO 定时将舵机反馈信号与舵机输出信号做比较 If( 比较结果超出指定范围 ) {

启动计数器开始计数

判断当前异常的PWM输出通道 重新输出PWM信号 }

When( 连续T拍超出范围 ) {

判定PWM输出驱动异常

对PWM进行重新初始化 }

26

飞行控制软件主要通过如上方法来保障舵机控制信号的正常输出,当驱动出现异常时,通

南京航空航天大学硕士学位论文

过重新发送控制信号或重新初始化驱动,避免因PWM输出异常而导致无人机执行机构的异常,从而保证了无人机安全可靠地飞行。

3.4.3 PWM信号的捕获

PWM信号的捕获作为飞行控制软件的扩展功能。主要功能是:完成飞行控制软件对Futaba接收机的PWM信号的捕获,从而实现地面站指挥人员利用Futaba遥控器进行人工控制无人机的目的。

由于PWM输出的周期是恒定的20ms,所以只要捕获PWM高电平持续的时间。捕获的原理是先在上升沿的时候捕获到一个计数值,接着在下降沿时再次捕获一个计数值,根据两次计数值的差值就可以计算出PWM高电平时间。PWM捕获流程如图3.7所示。

开始初始化否上升沿到是捕获上升沿否下降沿到是捕获下降沿得出脉宽时间

图3. 7 PWM捕获流程

在图3.7中,飞行控制软件对PWM进行捕获时,首先需要设置时钟基准和配置总线计数器,给计数器提供一个时间基准。当第一个PWM波上升沿边沿被检测到时,由其内部寄存器A捕获此时计数器的值。当这一个PWM波的下降沿被检测到时,此时再由内部寄存器B捕获此时计数器的值。通过计数器前后计数的差值就可以算出此次捕获的高电平时间,从而完成了一次PWM波的捕获。接下来继续检测下一个PWM波的上升沿和下降沿,完成下一次的PWM捕获。如此循环,就可以不断的捕获到PWM的输入信号。

3.5 AD驱动设计

根据飞行控制软件的需求和设计方案,主要利用AD驱动来实现对空速计、高度计的数据采集以及对舵机反馈信号采集的功能。MPC565片内AD采集的精度只有10位,而根据设计需求和对于模拟量采集的精度要求,本课题采用16位采集精度的AD芯片,利用片内SPI总线来实现片外芯片和处理器之间的数据通信。

27

小型固定翼无人机飞行控制软件设计与开发

SPI总线用于同步串行总线和外围设备之间的通信。一个SPI总线可以连接到多个主机和多个从机,但是在同一时刻只允许有一个主机操作总线。在数据传输的过程中,总线上只能有一个主机和一个从机进行通信。在开发AD驱动时,主机设置为MPC565,从机设置为AD芯片。

AD驱动主要包含初始化和配置AD芯片。初始化主要完成SPI总线的配置,为MPC565和AD芯片之间的通信做好准备。配置AD芯片主要完成AD启动的基本配置,包括选择AD通道和读取AD转换结果。AD芯片将转换后的结果按照SPI总线数据传输时序传递给主机,主机将采样的数字信号提供给飞行控制服务模块使用。其工作流程如图3.8所示。

开始连续采集五次模拟量初始化将数据进行排序舍去最大和最小值配置AD芯片读取转换结果取剩下三个数的平均值退出

图3. 8 AD驱动工作流程

在图3.8中,配置AD芯片时,采用单次采集模拟量的方式来完成对空速计、高度计和舵机反馈电压的采集。单次采集由主机应用程序向AD芯片发送一次采集命令,AD芯片会及时地将采集到的模拟量数据通过SPI总线传递给应用程序。在本课题中,所用到的AD驱动接口函数如表3.5所示。

表3. 5 AD驱动接口函数表

驱动接口函数

AnalogInit(void)

接口函数功能

完成AD驱动的初始化

AnalogInReadDataSpi (unsigned 选择AD采集的通道,读取该通道char ch, float *volts) 的采样值

在AD数据采集任务调用AD驱动接口函数之前,需要对AD驱动进行初始化。该部分的操作需要在系统初始化的时候完成,为应用程序调用AD驱动做好“软准备”。初始化完成后,可以对模拟量传感器进行模拟量的采集。

在飞行控制系统中,空速计和高度计都是模拟量传感器,采集的数据是电压值。空速计主要是用来给飞行控制软件提供空速信号,高度计主要提供高度信息。所以飞行控制软件需要在服务模块的AD数据采集任务中,定时调用AD驱动接口函数来采集高度信息和空速信息。同时,也需要在任务中定时采集舵机反馈信号,并将采集到的数据通过电压和舵机角度偏转关系进行计算,得到所对应的舵机偏转值,从而供PWM输出模块进行舵机输出信号的比较,保证其安全可靠地运行。

28

南京航空航天大学硕士学位论文

AD驱动为AD采集任务提供驱动的接口函数,为飞行控制软件提供高度、空速和舵机反馈信息的采集通道。这些对于飞行控制系统都是关键数据,尤其是高度数据,若出现故障将会进入气压高度故障逻辑。

正是由于AD驱动有其重要作用,所以飞行控制软件为了保障接收到稳定可靠的模拟量数

据,需要采用以下手段。以气压高度数据采集为例加以说明。首先,当每次AD采集任务调用AD驱动时,连续采集五次模拟量统一放在高度数据数组中,并将其由大到小依次进行排序。其次,舍去五个数据中最大值和最小值,避免因为电压暂时的不稳而带来的电压短暂性跳变。最后,取剩下三个数据的平均值作为此次的气压高度值。

通过以上的处理方法,不仅可以在底层驱动阶段把个别不应有的数据跳变进行过滤,减轻

了服务模块的压力。而且可以更实际地反应出高度数据变化的情况,使飞行控制软件可以稳定地去采集高度数据,保障了AD驱动的安全可靠。

3.6 DIO驱动设计

根据控制逻辑的设计要求,当给出机翼抛掷指令的时候,需要由飞行控制计算机输出离散量信号。当要监测任务设备的开启状态时,需要开启离散量输入功能,从而达到监测设备的目的。根据以上的需求以及飞行控制计算机的自身配置,利用时间处理单元来配置离散量输入输出功能。DIO驱动的原理是利用TPU3模块的一个引脚模拟一个离散量输入或输出引脚。作为输入,该引脚根据命令在一个周期能够被读取。作为输出,该引脚能够根据不同的命令输出高低电平。

飞行控制计算机通过TPU3模块提供8路DI通道和8路DO通道,飞行控制软件使用其中的两路DO输出和两路DI输出,其余几路接口为以后飞行控制软件的功能扩展提供接口。在开发离散量驱动时,首先需要对TPU3模块进行配置,设置其输入输出引脚。根据飞行控制软件的需求,选择对应的输入输出通道进行配置,实现所需电平的输出和采集输入电平的逻辑值,其工作流程如图3.9所示。

开始初始化输出/输入?是否进行输入/输出操作退出

图3. 9 离散量输入输出的流程

29

小型固定翼无人机飞行控制软件设计与开发

DIO驱动设计的主要目的是为飞行控制软件服务模块提供驱动接口函数,方便应用程序实时对外围设备进行监测和管理,实现片外设备与应用程序之间的通信。离散量的初始化函数需要在系统进行初始化的时候进行调用,完成离散量输出和输入的相关初始化工作,以便应用程序进行调用。整个离散量的驱动函数包括离散量初始化、离散量电压输出和离散量电压采集函数。离散量接口函数如表3.6所示。

表3. 6 DIO驱动接口函数表

驱动接口函数

IoInit(void)

接口函数功能

完成离散量驱动的初始化

DigitalOut(unsigned char channel,unsigned DO通道电压输出,level决定char level) 输出的高低电平 DigitalIn(unsigned char channel)

DI通道电压采集

3.7 本章小结

本章主要针对小型固定翼无人机飞行控制软件设计的要求,重点介绍了底层驱动的开发工作,包括目标系统的初始化、串口驱动、PWM驱动、AD驱动和DIO驱动,针对MPC565上的中断体系结构对串口中断服务程序进行设计,并对有关驱动实施安全可靠性保障措置,保证其驱动的正常运行,为飞行控制软件功能服务模块建立稳定的底层平台。

30

南京航空航天大学硕士学位论文

第四章 飞行控制软件服务模块的设计

4.1 引言

按照小型固定翼无人机飞行控制软件的功能,将其划分为软件功能层、软件服务层、硬件驱动层。依据第二章节中飞行控制软件的总体结构,以及各模块完成的功能,将软件中传感器模块、无线测控模块、数据管理模块和舵机控制模块划分为软件服务层。本章将对飞行控制软件三个“执行层”中的软件服务层进行详细的设计。

4.2 传感器模块

传感器模块通过调用硬件驱动模块完成传感器数据的采集,包括GPS、惯性测量单元、高度、空速等传感器原始数据,为飞行控制功能模块提供所需的飞机姿态、位置、高度、速度等信息。传感器模块是周期性运行模块,它根据设定的频率运行,周期性地采集传感器数据,满足飞行控制功能模块对传感器数据的需要。

从采集到的数据功能来看,将传感器模块划分为三个独立的任务:GPS数据接收任务、IMU数据采集任务、AD数据采集任务。其分别完成GPS传感器数据的采集; IMU惯性测量单元数据的采集;高度计和空速计数据的采集。每个任务都有固定的运行时间,这样一旦这些任务被建立起来后完全由时间片来完成。在设置任务运行时间的时候应当考虑每个任务对整个飞行控制软件实时性的影响。传感器模块各个任务运行时间分配如表4.1所示。

表4. 1 服务模块各任务运行时间分配表

任务 频率

AD数据采集任务 20Hz GPS数据采集任务 20Hz IMU数据采集任务 100Hz

传感器模块中还包含了另一个重要的功能——传感器故障诊断和处置功能。故障诊断与处

置是保障飞行安全最重要的技术手段,只有及时正确地检测出系统的故障,并迅速处理故障,才能防止失效部分影响到系统操作,达到保障无人机安全执行任务的目的。本小节重点考虑了传感器高度故障,定位故障,姿态故障。

通过对不同的故障条件进行诊断,进入各自的故障处置逻辑。当进入高度故障后,首先进

行故障隔离,调用备用信息。若此时故障恢复,则根据高度信息优先级重选信息,并继续接收备用传感器数据。如图4.1中故障处理A环所示。若此时备用信息发生故障,则将故障隔离,执行应急返回逻辑,等待地面指挥人员做出决策。如图4.1中故障处理A、B、C环所示。当进入定位故障后,则直接进入应急返回逻辑直到地面人员做出决策。如图4.1中故障处理C环所

31

小型固定翼无人机飞行控制软件设计与开发

示。当进入姿态故障后,则直接进入地面人工决策逻辑。

数据接收D重选信息A故障隔离地面决策B故障恢复备用信息C应急返回 图4. 1 故障处置示意图

4.2.1 GPS数据接收任务设计

基于飞行控制计算机的硬件接口资源,选择串口作为与GPS传感器进行通信的主要接口,并对串口第三通道进行相应的配置。GPS数据接收任务主要通过调用串口驱动API函数来实现。

按照飞行控制软件的需求,经过比较,选择可靠性强、数据量更丰富的Navigation Data(ID #20)数据帧,其主要包括数据格式、数据ID号、数据ID号的反码、信息数据长度、数据内容和校验码[26]。如图4.2所示。

数据格式数据ID255-数据ID数据长度数据帧内容校验码1校验码2Hex 01H……1 ByteMessage ID1 ByteLength of Message 71 ByteMessage Data 2 ByteChecksum

图4. 2 GPS通信帧结构

在使用之前需要向GPS传感器发送ASCII码指令,用来对GPS内置串口进行设置。该任务调用的串口配置为:波特率是19200bps,数据位8位,停止位1位,无奇偶校验位。完整的一帧GPS数据有77个字节,而串口的传输速率为2个字节/ms,所以完整地接收这帧数据需要将近39ms。GPS接收任务的数据源属于长周期模态数据,是无人机外回路控制的基础,需要满足传感器数据更新频率。本课题选用的GPS其数据更新频率是20Hz。综上考虑,将GPS数据接收任务的周期设置为50ms,不仅满足接收完整一帧GPS数据的时间要求,而且还考虑到GPS传感器本身的更新率,使飞行控制软件能够接收到实时的GPS数据。

对GPS传感器进行配置后,GPS按照协议向外发送数据。飞行控制功能模块从中提取所需的数据,包括经度、纬度、高度、航迹角、地速、东向速度、北向速度、天向速度、时间和导航模式等。然后将这些数据写入对应的数据区,并由数据管理模块进行数据的管理和维护。当GPS发生相应的故障时,进入其故障处理流程。其工作流程如图4.3所示。.

32

南京航空航天大学硕士学位论文

开始定时调用串口驱动1串口接收数据原码GPS任务将数据解码判断GPS高度是否故障?是否GPS物理量写入指定数据区保持GPS高度作为高度信息源使用气压高度作为高度信息源11否判断GPS高度是否恢复?是GPS定位故障处置否判断GPS定位是否故障?是按照优先级进行信息源的选择GPS高度故障处置继续运行任务切入指令导航飞行模式进入航向应急返回逻辑

图4. 3 GPS数据接收任务工作流程

GPS传感器接收的数据包括高度、经纬度等信息,这些数据都是飞行控制软件关键数据。所以在设计GPS数据接收任务的时候,要考虑GPS数据信息源出现故障并对故障进行处理的情况。本任务主要考虑两种信息源故障:高度信息源故障和位置信息源故障。

当GPS出现高度信息源故障的时候,GPS数据接收任务处理过程如下所示。

If ( ( GPS数据接收任务在t秒内接收不到数据 ) or ( GPS在t秒内无法定位 ) or (GPS 处于2维定位模式 ) )

{ 判定GPS高度数据故障

转用气压高度作为高度信息源

}

When ( GPS高度数据恢复后 )

{ 根据高度信息源优先级 重新选择高度信息源

}

在GPS数据接收任务设计中,融入了故障检测的功能。通过实时检测接收到的数据来判定GPS的工作状态。当满足上述条件,飞行控制软件则判定GPS高度信息失效。整个软件将切换高度源信息,采用气压高度来作为飞行控制软件的高度源信息。若GPS高度信息在短暂的失效后又恢复正常,飞行控制软件会根据高度信息源优先级来重新选择高度信息源,并继续对无人机进行控制。

当GPS出现定位信息源故障的时候,GPS数据接收任务处理过程如下所示。

33

小型固定翼无人机飞行控制软件设计与开发

If ( ( GPS在t秒内无法定位 ) or ( GPS数据接收任务在t秒内接收不到数据 ) ) { 判定GPS定位故障 执行航向应急返回逻辑

}

当GPS在t秒内无法接收到数据或无法定位,飞行控制软件将会判定GPS定位故障,然后启动航向应急返回逻辑。航向应急返回逻辑就是根据GPS故障前一时刻记录的经纬度与地面阶段装订返回点的经纬度信息进行计算,得出返回的航向,并进行跟踪直到返回距原点一定距离处进行盘旋,等待地面站人员做出下一步的指示。

4.2.2 IMU数据采集任务设计

本课题选用的IMU主要通信接口是串口。按照飞行控制软件的总体设计需要对串口第二通道进行配置,并对其波特率进行设置。在IMU上电后需要发送指令才能使其正常工作。为了方便操作,将初始化指令固化到IMU中使其可以在上电时就进入工作状态[27]。

根据飞行控制软件的要求,选择合适的帧协议,输出所需的数据包括姿态角,姿态角速度和三轴加速度等信息。IMU数据采集任务通过调用硬件驱动层提供的串口API函数,来获取所需的数据源码。飞行控制软件按照其协议对数据源码进行解码,转换成相应的IMU物理量写入所指定的数据区,供其他模块进行读取使用。

本课题使用的IMU输出频率是100Hz,传输时设置的串口波特率是38400bps,即大概每1ms发送/接收4个字节的信息。IMU接收任务的数据源属于长周期模态数据,是无人机内回路控制的基础,需要满足传感器数据更新频率。根据IMU的协议,完整的一帧IMU数据有23个字节。按照现有的波特率,传输完完整的一帧数据要6ms。综上分析,飞行控制软件将IMU数据采集任务运行的周期设置为10ms。既满足能够接收到实时的IMU数据,又能满足在10ms内能够完成完整一帧的数据接收。

飞行控制软件需要IMU提供无人机姿态信息包括俯仰角、滚转角、偏航角、俯仰角速率、滚转角速率、偏航角速率和三轴加速度等数据信息。这些姿态信息作为飞行控制解算的输入,为功能模块提供姿态信息源,所以其数据源的安全可靠将影响到整个飞行控制软件的运行。本课题在设计IMU数据采集任务的时候主要考虑了2种IMU通信故障的情况。

第一种是飞行控制软件在连续t秒内没有接收到IMU的数据。第二种是IMU传感器信息在连续T拍内超过各个姿态信号所规定的范围。在出现这两种故障时,发出IMU通信故障的警告标志。IMU数据采集任务处理过程如下所示。

If ( (IMU数据采集任务在t秒内接收不到数据) or ( IMU传感器信息连续T个时间节拍内超

过各个姿态角所规定的范围 ) )

34

南京航空航天大学硕士学位论文

{ 判定IMU通信故障

向地面站发送警告标志 转由人工进行操控

}

在IMU数据采集任务设计中,通过在固定的时间内实时检测数据来判定任务的工作状态。

若满足故障条件,则给出故障警告标志。转由地面指挥人员来进行决策。

4.2.3 AD数据采集任务设计

根据飞行控制软件的需求和设计方案,AD数据采集任务主要实现对空速计和高度计的数据采集功能。处理器内部AD采集的精度只有10位,而根据设计需求和对于模拟量采集的精度要求,本课题采用16位采集精度的AD芯片,通过SPI总线来实现片外AD芯片与CPU之间的数据传输。CPU与高度计、空速计的连接方式见图4.4。

mpc565AD7689SPI从机SPI主机SPIbusCS0MISOMOSISCLKCNNSDOSDISCK模拟通道1高度计模拟通道2空速计 图4. 4 大气机通信链路

按照传感器协议,高度计和空速计输出的是模拟电压信号。SPI总线在一次数据传输中,首先需要配置SPI,其次由SPI主机(MPC565)向SPI从机(模数转换器)发送通道号和AD芯片配置信息(主机通过MOSI输出数据),最后主机接收AD芯片返回的数字信号(主机通过MISO接收数据)[28]。根据芯片给出的转换公式将采样到的数字信号换算成高度和空速,并给飞行控制功能模块使用。由于项目使用模拟传感的电压值转化成物理值都大致是线性关系,线性关系转化如公式4.1。

valueAD=ratioAD*voltsAD+offsetAD (4.1)

其中valueAD是物理值,ratioAD是线性关系的比例因子,offsetAD是线性关系的偏移量。无人机飞行控制系统获取模拟传感器的数据valueAD值,需要得到线性关系的ratioAD和offsetAD两项,传感器在使用之前会进行传感器参数标定,标定参数会通过地面检测软件保存在飞行控制计算机的Flash中。飞行控制计算机启动时,会从Flash中直接读取模拟量传感器ratioAD和

offsetAD两项值。模拟传感器通过AD采集到电压值,直接通过公式4.1转换成实际物理值。

AD数据采集任务通过调用AD驱动函数来获取所需的高度和空速源码。飞行控制软件按照其协议对数据源码进行解码,转换成相应的高度和速度写入所指定的数据区,供其他模块进行读取使用。其流程如图4.5所示。

35

小型固定翼无人机飞行控制软件设计与开发

1开始定时判断气压高度是否故障?调用A/D驱动采样数据是否气压高度故障处置逻辑切入GPS高度信息源继续运行任务AD采集任务将数据解码否判断气压高度是否恢复?是高度和空速写入指定数据区根据优先级重新选择高度信息源1判断GPS高度是否故障?是否执行航向返回逻辑保持GPS高度信息源 图4. 5 AD数据采集任务工作流程

飞行控制软件需要AD数据采集任务提供高度和空速信息,这些信息是整个飞行控制软件的重要数据,作为功能模块的数据源,需要对数据源进行实时地监测来保证整个飞行控制软件安全可靠。本课题在设计AD数据采集任务时,针对传感器异常进行实时检测并进行相应的处理。其处理过程如下所示。

气压高度传感器输出的高度信息连续T个时间节拍超出边界 ) If (

{ 判定气压高度计通信故障 自动切换至GPS高度信息源

}

……

IF ( 气压高度数据恢复后 )

{ 根据高度信息源优先级 重新选择高度信息源

}

Else {

IF( GPS高度数据故障 )

{

判定高度故障 执行航向返回逻辑

36

} Else

南京航空航天大学硕士学位论文

{

根据高度信息源优先级 继续保持GPS高度信息源

}

}

在AD数据采集任务设计中,通过实时检测气压高度传感器输出的高度信息来检测是否进气压高度超出飞行控制软件所规定的范围,则判定故障。入故障处理逻辑。当连续T拍时间内,

飞行控制软件将自动切换至GPS高度信息源,来维持整个软件的正常运行。当气压高度信息在短暂的异常后又恢复正常,飞行控制软件会根据高度信息源优先级来重新选择高度信息源,并继续对无人机进行控制。当气压高度通信出现故障时,GPS高度也发生故障的情况下,无人机可以执行航向返回逻辑。

飞行控制软件判定气压高度和GPS高度信息源都出现故障时,飞行控制软件根据当前的经

纬度信息和地面站装订返回点经纬度位置信息计算返回航向,无人机跟踪该解算航向返回目标点。

4.3 无线测控模块

无线测控模块主要给遥控遥测模块提供数据传输的接口,来实现机载与地面之间的数据链路通信。该模块一方面将机载的遥测数据通过无线链路发送至地面站,供地面站人员决策指挥,另一方面将地面站的指令信息包括人工模式下遥控指令,上传给机载无线接收器。本课题使用的无线电台是半双工工作模式,数据上下行之间会出现干扰或冲突,如何保证无线链路通信流畅是整个无线测控模块需要解决的问题。

4.3.1 无线电台的工作方式

考虑此小型固定翼无人机近距离的Futaba操控和远距离遥控指令操纵的技术需求,以及工程应用的灵活性需要,系统采用独立的无线数传电台系统。无线数据传输系统主要由两台

MaxStream公司的9Xtend 数传电台构成。

本课题选用的无线电台发射功率不超过1W,室内传输距离在450~1500m,户外传输距离最大可达32Km,重量仅有18g,非常适合小型无人机[29]。无线电台空中链路传输的波特率设为115200bps,与飞行控制计算机的串口之间的通信波特率是57600bps。数传电台只支持半双工的通信方式,所以上下行数据不能够同时进行交互。

4.3.2 测控链路可靠性通信

在利用测控链路进行数据传输的时候,主要解决如何在半双工模式下保证无线链路能进行

37

小型固定翼无人机飞行控制软件设计与开发

流畅的数据通信。

半双工工作模式的特点就是一个时段只能实现一个方向的传输。要保证无线链路通信的可靠性,遥控数据和遥测数据需要对无线链路进行分时复用。由于遥控信息是控制无人机的指令信号,遥测数据主要是各种传感器、控制律等信息。显然,遥控指令信息比遥测信息更为重要,所以要保证遥控指令上传的可靠性。由于无线电台是半双工模式,所以采用上行数据触发下行数据的方式,来保证同一时刻只有一股数据流占用无线链路。具体实现是:在没有上行数据时,不进行下行数据的发送。当接收到完整的一帧遥控数据后,才进行下行数据的发送。其处理过程如图4.6所示。

开始开始接收遥控指令接收一帧完整的遥控指令YNT个时间节拍内能否收到数据发送遥测数据一帧遥测数据发送完毕Y开始接收遥控指令N主动发送遥测数据并告知地面站测控链路故障 图4. 6 半双工电台的上下行通信流程

当机载无线设备接收遥控数据时,通过判断遥控数据的同步码和校验码来判定是否接收完完整的一帧遥控指令。若接收到完整的一帧遥控指令,则停止接收遥控指令并开始发送遥测数据。若连续T时间内没有接收到遥控指令,则主动发送遥测数据,并将测控链路故障警告告知地面站。

无线测控模块与串口之间的通信速率为57600,即每毫秒接收/发送6个字节。完整的一帧遥控数据有36个字节,遥控数据从地面站发送到无人机需要12ms。完整的一帧遥测数据也是

36个字节,从无人机发送到地面站也需要12ms。如图4.7所示。

38

南京航空航天大学硕士学位论文

串口飞行控制计算机6ms6ms串口地面站 图4. 7 上下行数据通信时间示意图

综上分析,一帧完整的遥控遥测数据在链路上所需要的时间是24ms,所以在40ms的时间里,有足够的时间来完成遥控遥测数据的通信并且不互相干扰。经过长时间及远距离的测试,发现这种通信方式是安全可靠的,在工程中得到了很好的应用。

4.4 数据管理模块

在设计飞行控制软件各个模块的时候,为了减少各个模块之间的耦合同时也是为了进行安全的数据通信,各个模块所需的数据尽量都在模块内定义[30]。当有两个或多个的模块进行数据交互时,为了模块之间能够有效地进行数据通信,数据管理模块采用对数据区进行管理的方式来为各个模块提供数据支撑,以统一方式提供安全可靠的数据存取服务。数据管理模块是一个被动运行模块,驻留在控制单元内存中,时刻准备为用户层模块提供数据服务。

在实现对数据区进行管理时,迫切需要解决的是如何协调好数据区读写冲突的问题。针对此种情况,提出了轮换读写数据区的思想。通过轮换写入数据A区和B区,来协调数据区读写。A、B区的数冲突的问题(即A区在被写入数据时,B区是空闲的,可以被读取,反之亦然)据是否可以被读取,是通过设置数据读写标志位来实现的。

在初始化数据区的时候,将数据读写标志位Flag初始化为False。在对数据区进行数据写操作的时候,首先将数据写入A区,写完数据后设置数据标志位Flag为True,此时可以对B区写入数据。在B区中,写完数据后再设置数据标志位Flag为False,此时,又可以对A区进行写入数据,以此循环。当对数据区进行数据读取操作的时候,需要判断标志位Flag。当Flag标志为False时,读取B区数据(此时A区正被写入);当Flag标志为True时,读取A区的数。根据以上的设计思想,以GPS模块和自主导航模块之间的数据交互据(此时B区正被写入)为例进行设计,如图4.8所示。

39

小型固定翼无人机飞行控制软件设计与开发

串口通信模块GPS原码缓存区串口接收数据原码接收数据缓冲函数数据解码函数GPS接收任务经度纬度。。。。。。数据标识写入GPS数据区函数自主导航模块读取GPS数据区函数写入自主导航数据区函数数据维护模块GPS物理量数据A区经度纬度。。。。。。数据标识GPS物理量数据B区 图4. 8 数据管理流程示意图

由图4.8可知,在GPS任务中通过调用串口通信模块来接收GPS源码,接着由解码函数进行解码工作,并且将GPS的物理量轮流写入物理数据A区和B区,再由专门的读取函数来读取数据区数据,供其他模块使用。关键代码如下所示。

1) GPS数据存储

If (Flag == False) {

Addr_ GPS1 [4] = Buf [1]; Addr_ GPS1 [5] = Buf [0]; …… Flag = True; } Else {

Addr_ GPS2 [4] = Buf [1]; Addr_ GPS2 [5] = Buf [0]; …… Flag = False; }

2) GPS数据读取 If (Flag == False) p_ad = &Addr_GPS2 [4];

……

40

南京航空航天大学硕士学位论文

Else

p_ad = &Addr_GPS1 [4];

……

如上所示,GPS的数据存储和读取都通过标志位Flag来实现对数据区进行轮换操作。在读

取GPS数据时,通过判断标志位的状态,利用数据指针来实现GPS数据的传递,这种方式既方便有简洁。其他的数据模块也通过这种方式来实现数据区的管理和维护,合理地避免了对同一个数据区的读写冲突问题。

根据以上设计的对数据区进行管理的思想,为每个模块配备两个数据区来实现轮流读写机制。此种数据区的实现方式使得每个模块只有自己才有权限对该数据区进行写入操作,其它模块只有读取该数据区的权限,没有权限对其进行存储操作。以自主导航与其它模块进行数据交互为例进行说明,如图4.9所示。

GPS任务数据区1数据区2数据区3数据区4数据区5数据区6数据区7数据区8人工导航任务自主导航任务数据区9数据区10数据区11数据区12数据区13数据区14数据区15控制律任务数据区16数据区17遥测任务数据区18IMU任务指令导航任务AD任务遥控任务

图4. 9 自主导航与其它模块数据交互示意图

在图4.9中,自主导航模块进行导航算法解算时,需要飞机的当前经纬度信息和当前高度信息,通过读取GPS数据采集任务和AD数据采集任务所对应的数据区信息,得到所需要的数据。然后将解算后所得的制导信息写入自主导航模块的数据区中,供控制律模块使用,并将一部分制导信息通过遥测模块下传给地面站。

合理的数据管理技术就是将所有的数据进行统一的管理,安全地处理好数据的读写问题。这样,使之即具有方便灵活的优点,又去其不安全因素,这种设计的思想可以有效地防止读写冲突的问题[31]。

4.5 舵机控制模块设计

舵机控制模块的主要功能是准确可靠地执行控制单元给出的舵面操纵指令。根据飞行控制

41

小型固定翼无人机飞行控制软件设计与开发

模式的不同,舵机控制单元的输入指令源包括人工导航和非人工导航模式下的操纵指令。指令信息通过舵机控制模块将舵面量转换成舵机偏转值,并调用PWM输出函数来驱动舵机。舵面控制模块既可以在地面检测状态被触发,也可以在空中进行飞行控制状态下被调用。

在地面检测状态下,需要对舵机进行测试。地面站监控软件可以根据舵机测试的需求划分为舵机测试和舵面测试。在进行舵机测试的时候,地面站监控软件给出的是舵机偏转信息,舵机控制模块通过调用PWM输出函数来实现对舵机的直接控制。当地面站监控软件给出的是舵面偏转信息时,舵机控制模块先将其舵面偏转量转换成舵机偏转角度,然后再调用PWM输出函数,从而达到控制舵机的目的。

在空中运行状态下,舵机控制模块首先需要判断飞行模态变化。如果无人机由自主导航或指令导航切换到人工导航,舵机控制模块的舵面信息源将由地面站Futaba遥控量来提供。若无人机一直处于自主导航或指令导航模式下,舵机控制模块的舵面信息源则由控制律解算出来的舵面控制量提供。在飞行模式进行切换的时候,有时会出现舵面操控角度跳动过大,导致无人机操控的不稳定。为了避免这个情况,在舵机控制模块中增加了对舵面量进行软化操作,使过大的角度跳动趋于平缓的变化。舵机控制处理如下所示。

IF( 人工导航 )

{ 操控Futaba给出舵面量

}

Else 飞行控制解算得出舵面量 IF( 飞行模式是否切换 )

{ 进行舵面量优化操作

}

将舵面量转化为舵机偏转角度 Then do

调用PWM驱动舵机偏转

如上所示,飞行控制软件合理的将三种导航模式下的舵面控制量转换为舵机值,使得三种

不同的飞行模态在互相切换时,可以稳定的控制舵机。

4.6 本章小结

本章主要是对飞行控制软件服务模块进行设计,将传感器模块、无线测控模块、数据管理模块和舵机控制模块划分为服务模块。针对各个传感器的功能特点,对服务模块进行了任务的划分。在传感器模块的各个任务中,重点分析了任务的工作流程、任务运行的时间设定以及故障源的种类、检测手段和处理方式。在无线测控模块中,主要分析了无线电台的工作方式和保证测控链路可靠性通信的技术手段。在数据管理模块中,主要对各模块之间的数据管理和维护

42

南京航空航天大学硕士学位论文

进行了设计,避免了不同模块对同一数据区进行同时读写的问题。在舵机控制模块中,主要实现了将舵面操控指令转化为舵机偏转值,从而达到控制舵机的目的。通过对以上四个模块进行设计,完成了飞行控制软件整个服务层的设计。

43

小型固定翼无人机飞行控制软件设计与开发

第五章 飞行控制软件功能模块的设计

5.1 引言

根据飞行控制软件的总体结构以及各个模块完成的功能,软件功能层主要包括为遥控遥测模块、导航模块、控制律模块和调度管理模块。该层主要完成飞行控制的主要功能,其包括实现三种飞行模式的切换、导航制导功能、控制律解算功能、遥控数据的接收和遥测数据的发送。本章将对飞行控制软件三个“执行层”中的软件功能层进行详细的设计。

飞行控制软件功能层主要包括遥控遥测模块、导航模块、控制律模块和调度管理模块。其中,遥控遥测模块可以划分为遥控任务和遥测任务;导航模块可以划分为自主导航任务、人工导航任务和指令导航任务;控制律模块可以划分为控制律解算任务。这些任务的运行都完全依托于时间片的支撑,所以在设置各个任务的时候应当尽量考虑每个任务对整个飞行控制软件实时性的影响。功能模块各任务运行时间分配如表5.1所示。

表5. 1 功能模块各任务运行时间分配表

任务 频率

遥控任务 25Hz 遥测任务 25Hz 控制律解算任务 50Hz 自主导航任务 20Hz 指令导航任务 触发 人工导航任务 触发

5.2 遥控遥测模块设计

遥控遥测模块主要功能分为两部分,一方面将无人机的传感器信息、遥控指令信息、制导数据、控制律参数等重要数据通过无线链路下传至地面站,为地面站指挥人员提供数据。另一方面地面站发出遥控指令来控制干预无人机。

5.2.1 遥控任务设计

遥控任务主要用来接收地面站发送的遥控指令,并根据遥控指令来实现三种飞行模式的切换、飞行指令的实施等,所以遥控任务是飞行控制软件中一个重要的任务,必须保证其稳定运行。本小节通过帧校验和故障处置两种手段来保证其接收的过程安全可靠。

遥控任务调用串口驱动来接收数据源码,通过判断遥控数据帧帧头和校验码来保证接收的数据是飞行控制软件所需的信息。再通过对指令码进行收3判2保障其指令的正确性,最后将正确的帧信息存入相应的数据区。若判断出帧头或校验码异常,则舍弃当前数据帧,向后继续

44

南京航空航天大学硕士学位论文

查询帧头。为了保证遥控任务安全可靠地运行,需要对其在运行过程中可能出现的故障做出检测并进行故障后的处理。具体工作流程如图5.1所示。

开始定时是否处于人工导航?是否故障检测调用串口驱动人工导航自主/指令导航是否接收到数据?是否否M时间内是否收到数据?是T时间内是否收到数据?是否判断帧头和校验码?正常异常进入遥控主流程舍弃该帧数据异常对遥控指令进行收3判2正常向后继续寻找帧头切换至指令导航模式故障处理将遥控指令接收标志置为False进行解码并存入相应数据区否GPS是否故障?是执行航向应急返回逻辑执行航路应急返回逻辑返回至目标点后进入盘旋模式等待地面人员做出决策

图5. 1 遥控任务的工作流程

图5.1中可以看出,本课题设计了两种故障模式下遥控任务的故障检测和处理方式。一种故障是在自主或指令导航模式下,连续t时间内接收不到遥控信息则判定遥控故障。另一种故障是在人工导航模式下,连续m时间内接收不到遥控信息则判定遥控故障(m当飞行控制软件诊断出遥控任务故障的时候,遥控任务处理过程如下所示。

Switch(飞行模态) {

自主导航或指令导航:

If(t时间内收不到遥控信息) { 判定遥控故障

执行指令导航飞行模式

If(GPS定位故障) { 航向返回 } Else

45

小型固定翼无人机飞行控制软件设计与开发

}

{ 航路返回 }

人工导航:

If(m时间内收不到遥控信息)

}

如上所示,当遥控任务诊断出有故障发生时,自动将飞行模式切换至指令导航模式。并且对GPS定位进行故障判定,若GPS定位此时也发生故障,飞行控制软件则执行航向返回应急逻辑。若GPS正常工作,飞行控制软件则执行航路返回应急逻辑。

{ 判定遥控故障, 执行指令导航飞行模式 }

If(GPS定位故障) { 航向返回 } Else

{ 航路返回 }

5.2.2 遥测任务设计

遥测任务就是将传感器信息、遥控指令信息、制导数据、控制律参数和飞行模式等飞行状态和信息下传至地面站,用于地面站对无人机的实时监控。

飞机在空中飞行阶段,飞行控制系统向地面站系统每隔40ms发送一帧遥测数据。遥测数据分为五帧,每帧有36字节,先发送低序号帧的数据,再发送高序号帧的数据,直至全部发送完毕。由帧格式(定长)决定帧结束,因而无需结束符。这五帧遥测数据中每一帧数据均有校验码,第一、二、三、四、五帧校验码的计算为:

校验码=∑(帧内除“同步码、同步符、帧长度”外的所有数据) (5.1)

遥测任务主要是从其它各个任务的数据区中读取所需的信息,将这些信息按照遥测通信协议编码,再把组好帧的遥测信息传送至无线电台Xtend。由无线电台把数据传送至地面,地面监控软件负责接收显示。其数据流图如图5.2所示。

46

南京航空航天大学硕士学位论文

GPS接收任务IMU接收任务AD采集任务遥控任务自主导航任务指令导航任务人工导航任务控制律任务GPS数据区IMU数据区AD数据区遥控数据区自主导航数据区指令导航数据区人工导航数据区控制律数据区调用测控串口组帧无线电台Xtend

图5. 2 遥测任务的数据流图

遥测信息主要由五帧信息组成,其中包括GPS信息、IMU信息、导航制导数据和遥调信

息量等信息。这五帧遥测信息按照表5.2格式来进行组帧。

表5. 2 遥测数据帧协议表 名称 字节数 同步码1 1个字节 同步码2 1个字节 帧长度 1个字节 帧标识 1个字节 数据段 31个字节 校验码 1个字节

在表5.2中,规定了遥测数据的协议。根据此协议,飞行控制软件可进行遥测数据的组帧,

地面站监控软件也可依据此协议进行相应的解帧,最终达到地面实时监控无人机飞行状态的目的。

5.3 导航模块设计

导航模块主要包括自主导航、指令导航和人工导航,其输入信号为无人机传感器采集到的信息或地面Futaba操控指令,输出为舵机控制信号。

5.3.1 自主导航任务设计

自主导航主要包括两大功能:航线管理功能和导航制导功能。航线管理功能主要为无人机提供飞行的参考航线,使飞行控制软件根据提供的参考航线信息制定无人机飞行的制导策略。导航制导功能主要是为当前无人机提供位置偏差、高度偏差等导航信息,并通过控制律解算模块实现无人机的航迹跟踪、爬升及下滑等控制。保证无人机能按预定的航线进行自主飞行,实现对飞行航迹的有效控制。

该小型固定翼无人机的任务航线由不同的航路点组成,每个航路点包含多项不同的属性,

47

小型固定翼无人机飞行控制软件设计与开发

其中包括航点总数、航段编号、航点编号、航点经度、航点纬度、航点高度和特征字。其中航点总数定义了整个航线包含的所有航点数目,航段编号、高度和特征字代表了航段的属性,航点编号、航点经度和纬度定义了航路点自身的属性[32]。整个航线以文本文件的形式将航路信息存储到飞行控制计算机的FLASH中,一条航线用一个航线数据文件定义,航路信息需要在飞行控制软件进行初始化的时候读取到数据区中[33]。

整个自主导航任务运行的时候,主要分为两部分。第一部分是执行当前航段飞行逻辑。在航段还未切换时,根据预设的航路在某航段上进行当前航段的飞行。第二部分是执行航段切换逻辑。当待飞距满足一定条件时,并且航线还未结束,则进入航段切换逻辑,获取下一航段的信息。

自主导航任务执行当前航段飞行逻辑时,主要会涉及坐标变换、侧偏距与待飞距的计算。当执行航段切换逻辑时,主要涉及航段切换时距离提前量的计算。自主导航任务从GPS采集任务中获取所需的经纬度位置信息,此时需要将球面坐标的经纬度转换成平面直角坐标,所以需要采用如下的高斯公式[34]:

X=Axcosϕ−Bxcos3ϕ(λ−λ0) (5.2)

()Y=Ay−Bycos2ϕ(ϕ−ϕ0) (5.3)

其中,ϕ=(ϕ+ϕ0)/2,Ax=6383487.606,Bx=5357.31,Ay=6367449.134,By=320770。

(λ0,ϕ0)为坐标原点处的经纬度,(λ,ϕ)为飞机当前位置的经纬度。经高斯公式解算得到的坐标(X,Y),(X,Y)是东北坐标系下坐标值。

航点2(X2,Y2)dYdX飞机(X,Y)O航点1(X1,Y1)

图5. 3 东北坐标系图

如图5.3所示,航点1和航点2组成的航线方程可表示为:AX+BY+C=0,无人机的坐标为(X,Y),航点1的坐标为(X1,Y1),航点2坐标为(X2,Y2)。根据点到直线间的距离公式,可计算得到待飞距和侧偏距,公式如下:

dX=(X2−X)2+(Y2−Y)2 (5.4)

48

南京航空航天大学硕士学位论文

dY=

XY2−X2Y2+Y22X2 (5.5)

而飞机的转弯时需要转弯提前量D,转弯提前量半径D依据两段航路之间的夹角、最大滚转角及当前的飞行速度而计算获得,可由式(5.6)计算得出转弯半径。

v2*tan(D=

Δϕ)

2 (5.6)

g*tanγ其中,ν为无人机当前飞行的地度,g为重力加速度,Δϕ为当前航段与下一航段的之间夹角,范围在±180°之间。

进入自主导航任务后,软件根据无人机实时位置和航路信息,判断无人机是进入当前航段

逻辑还是进行航段的切换,具体工作流程如图5.4所示。

开始获取航段信息计算当前偏航角当前航段跟踪逻辑偏航角是否满足条件?是进入纵向模态控制跟踪目标高度否执行航迹跟踪逻辑侧偏距是否满足条件?是否待飞距是否满足条件?是航线是否结束?是进入指令飞行模式否调整飞机横侧向姿态否获取下一航段信息进入盘旋逻辑等待地面人员做出决策航段切换逻辑

图5. 4 自主导航任务工作流程

5.3.2 指令导航任务设计

指令导航任务是事件触发式任务,即任务平时处于“挂起”状态。当地面监控软件发出指令导航的命令时,飞行控制软件开始接入指令导航模块。并根据地面上发出的指令,来接入不

49

小型固定翼无人机飞行控制软件设计与开发

同的模态控制律,从而达到地面指挥人员操控无人机的目的。

根据地面遥控指令,执行爬升、平飞、下滑、直飞等动作,并调用相应的模态控制律来控制无人机稳定飞行。在指令导航任务中,主要分为纵向指令模态和横侧向指令模态,其中纵向包括:指令爬升、指令平飞和指令下滑;横侧向包括指令左转、指令右转和指令直飞[35],

在指令飞行模式下,指令导航任务根据地面站的不同飞行令牌进入相应的控制逻辑。在无人机进行横侧向模态切换时,指令左转和指令右转之间必须加入直飞过渡态,即无人机在横侧向处于直飞状态时才能响应指令左转或右转指令。在纵向飞行模态进行切换时,为了保证模态切换的平稳性,在指令爬升和指令下滑之间必须有一个中间过渡态,即无人机纵向处于平飞模态才能响应爬升或下滑指令[36]。本小节以平飞逻辑进行举例说明,如图5.5所示。

开始收到平飞指令判断高度源是否故障?是否否纵向平飞状态?进入故障处理逻辑是是否下滑?是当前状态由下滑转平飞当前状态由爬升转平飞否接入平飞控制律给出“巡航指令”接入平飞控制律给出“巡航指令”退出 图5. 5 平飞逻辑图

在飞行控制软件实现指令导航功能时,将指令导航的初始状态定为纵向平飞、横测向直飞。当无人机从平飞转爬升或下滑时,通过给出相应的俯仰角指令来控制纵向模态的解算,并且此时发动机应处于相应的“开大车”或“开慢车”状态。如图5.5所示,当无人机从爬升转平飞、从下滑转平飞时,无人机会在当前高度接入平飞控制律并且发动机给出“巡航”状态。若在平飞模态下,气压高度源和GPS高度源都发生故障,则在执行平飞控制律的同时切断高度源,转而执行相应的故障处置逻辑。

50

南京航空航天大学硕士学位论文

5.3.3 人工导航任务设计

人工导航任务需要地面指挥人员给出飞行模式切换指令后才能激活,此时完全由地面遥控设备来操控无人机飞行。 人工导航采用Futaba操纵杆直接控制无人机进行飞行任务。当飞行控制系统收到人工遥控指令后,飞行控制软件立即切除自主控制律,无人机的舵面直接受到地面站操纵杆的控制。

在人工导航模式下,地面站将捕获到的Futaba遥控器中PPM高电平信号通过无线电台上传给无人机。无人机飞行控制软件按照Futaba遥控器帧格式,将PPM高电平信号转换成各路舵面的偏转角度,从而驱动舵机的工作。Futaba帧协议格式如图5.6所示。

同步码帧长度指令标识遥控数据人工模式开关升降舵控制量副翼舵控制量风门控制量备用校验2 Byte1 Byte3 Byte1 Byte15 Byte1 Byte2 Byte2 Byte2 Byte6 Byte1 Byte

图5. 6 Futaba帧协议格式示意图

按照图5.6所示的帧协议,把从地面站捕获到Futaba的PPM高电平时间上传到飞行控制软件,经过公式(5.7)得出各个通道所对应的舵面量。

Futaba[Ftb].outp=K×time +b (5.7)

公式(5.7)取各个通道极点的位置通过线性拟合而成的。通过公式换算后的舵面量还需要进一步转换成舵机偏转量,并通过调用PWM驱动来驱动舵机达到遥控器控制无人机的目的。

5.4 控制律模块设计

控制律解算模块利用数据采集模块得到的飞机状态信息和导航制导信息,调用相应的飞行模态控制律,对无人机的实施控制,并将解算结果发送给底层驱动模块。控制律解算模块由控制逻辑模块、纵向控制律解算模块和横侧向控制律解算模块组成。纵向控制的目的在于稳定无人机的姿态、高度与速度;横侧向控制功能在于控制无人机的姿态和航迹,针对不同的运动模态采取不同的控制策略以保证无人机具有良好的飞行性能。

整个控制逻辑主要由三个软件层实现:决策层、管理层、执行层,如图5.7所示。决策层主要根据无人机当前的情况对下一飞行模态做出决策。管理层主要负责管理决策层做出的飞行模态切换行为,完成模态间平滑的过渡。执行层主要进行控制律的解算,利用控制器的结构实时解算出舵机控制指令。

51

小型固定翼无人机飞行控制软件设计与开发

决策层爬升平飞下滑管理层转入爬升模态转入平飞模态转入下滑模态执行层爬升控制律解算平飞控制律解算下滑控制律解算 图5. 7 控制逻辑层次结构图

在飞行控制软件中,控制律模块是整个软件的核心功能模块,是无人机实现姿态稳定、高度控制、航迹控制、航向控制等控制的基础。控制律任务是时间相关任务,控制律任务根据外部传感器采集的飞行姿态等信息,进行纵向、横侧向控制律解算,得出舵机控制指令,然后输出至舵机,从未实现对无人机姿态的控制。控制律任务的工作流程如图5.8所示。

开始从共享数据区中获取所需的数据纵向控制律横侧向控制律输出舵面偏转值定时20ms

图5. 8 控制律解算任务流程图

5.4.1 纵向控制逻辑的设计

纵向控制是通过升降舵进行控制,分为爬升、下滑和平飞三个模态,主要以稳定和控制无人机的俯仰角和高度等。纵向控制律解算包含内回路姿态控制和外回路高度控制,无人机的爬升和下滑就是由内回路姿态控制来是实现的,平飞就是由外回路高度控制来实现的[37]。

52

南京航空航天大学硕士学位论文

无人机在各种不同的高度进行巡航飞行、稳态爬升以及下滑时需要通过姿态控制回路来保持稳定的飞行姿态。姿态控制律方程如公式5.8所示,在公式中δe表示升降舵,θ表示俯仰角反

θ表示俯仰角比例系数,KeIϑ表示俯仰角积分系数,KeQQ表示馈量,ϑg表示俯仰角给定量,Ke

俯仰角速率反馈。

θδe=Ke(θ−θg)+KeIθ∫(θ−θg)dt+KeQQ (5.8)

为了无人机在不同的高度实现稳定和保持,高度保持系统利用高度差来控制无人机的升降,直至高度差为零,从而保持无人机在预定的高度进行飞行。高度控制律方程如公式5.9所示。

θδe=KeH(H−Hg)+KeIH∫(H−Hg)dt+Ke(θ−θg)+KeQQ (5.9)

在公式5.9中,Hg表示高度给定量,KeH表示高度比例系数,KeIH表示高度积分比例系数。其中,对高度的积分环节只在平飞逻辑中使用。

综上所述,可以得出纵向通用控制律的表达式为:

θδe=Ke(θ−θg)+KeIθ∫(θ−θg)dt+KeH(H−Hg)+KeIH∫(H−Hg)dt+KeQQ (5.10)

当无人机在进行自主导航飞行时,需要根据当前高度与航段高度之差来决策纵向飞行模态。当高度差大于10m时,表明无人机将转入下滑模态;当高度差小于-10m,表明无人机将转入爬升模态;当高度差在(-10,10)区间内,表明无人机将转入平飞模态。如图5.9所示。

 H=当前高度−航段高度 H<-10m H=? H>10m |H|≤10m爬升模态平飞模态下滑模态发动机“大车”接入爬升控制律否发动机“慢车”接入下滑控制律 H<-10m是发动机“巡航”接入平飞控制律否 H>10m是

图5. 9 纵向控制逻辑示意图

当进行自主导航飞行时,根据高度差来做出相应的模态切换。当进行指令导航飞行时,根据地面站的遥控指令,无人机做出相应的飞行模态决策管理。纵向模态包括爬升模态、平飞模态和下滑模态。在爬升模态和下滑模态进行相互切换时,必须得加入平飞模态作为中间过度模态。当无人机在进行人工导航飞行时,控制律模块被切除,地面站操控人员之间遥控无人机。

53

小型固定翼无人机飞行控制软件设计与开发

5.4.2 横侧向控制逻辑的设计

横侧向控制主要包括滚转角控制、航向角控制和航迹跟踪控制等。滚转角控制用来控制和稳定无人机横侧向姿态,航向角控制用来跟踪和稳定航向,航迹跟踪控制一般是用来控制无人机沿预定的航线进行跟踪和稳定地飞行[38]。

本文所采用的横侧向通用控制律表达式为:

δa=KaIP∫(P−Pg)dt+KaPP

Pg=KP(φ−φg)φ (5.11)

在公式5.11中,φg为滚转角给定量,Pg为滚转角速率给定量。当无人机在进行自主导航时,

需要根据当前航向角和航段航向角之差来决策横侧向飞行模态。当航向角之差大于20度时,表明无人机将要进入右转飞行模态;当航向角之差小于-20度时,表明无人机将要进入左转飞行模态;当航向角之差在(-20,20)范围内时,表明无人机将要进入直飞飞行模态。如图5.10所示。

 ψ=当前航向角−下一航段航向角 ψ<-20 ψ=? ψ>20 |ψ|≤20左转模态直飞模态右转模态 ψ<-20否是 ψ>20否是接入航迹跟踪控制

图5. 10 横侧向控制逻辑示意图

当进行自主导航飞行时,无人机根据偏航信息来做出不同模态的切换。当进行指令导航飞行时,无人机根据地面指令做出相应模态的切换。横侧向模态包括左转模态、直飞模态和右转模态。横侧向在进行飞行模态切换时,需要判断是否可以直接切换至目标飞行模态。若是左转模态和右转模态进行相互切换时,必须得加入直飞模态作为中间过渡。当无人机在进行人工导航飞行时,控制律模块被切除,地面站操控人员之间遥控无人机。

5.5 调度管理模块设计

调度管理模块在整个系统上电后将自动运行,加载硬件驱动模块、传感器模块、遥控遥测模块和控制律模块等,并调用数据管理模块加载控制参数、舵机校准数据、传感器校准数据,完成相关数据的初始化。在整个飞行控制软件各个模块和数据加载完毕后,调度管理模块等待

54

南京航空航天大学硕士学位论文

实时接收遥控指令,并根据指令要求调用自主导航模块、指令导航模块和人工导航模块后,飞行控制与管理软件开始运作。

在整个飞行控制系统运行的过程中,调度管理模块主要对各个任务进行调度,合理分配用户资源,扮演“决策者”的角色。本文中该模块对各个任务进行调度主要是通过定时时钟和事件触发来完成的。

针对不同速率调用的任务,通过调用不同的定时时钟来实现。如GPS数据接收任务每隔50ms被调用一次,IMU数据接收任务每隔10ms被调用一次,AD数据接收任务每隔50ms被调用一次。这些任务都是传感器采集任务,需要定时从各个传感器中读取实时数据。导航任务和控制律任务也是需要进行定时解算来产生实时的控制信号。同时,遥控遥测任务也需要定时地将遥测信息实时地下传至地面站,并实时地接收来自地面站的控制指令。所以以上这些任务均采用定时时钟的方式被进行调用。

在飞行控制软件运行的某些阶段,调度管理模块主要通过事件触发来进行调度某些任务。如指令导航任务,以地面站发出的指令令牌为触发条件。当接收到指令令牌时,立刻对指令导航进行调用,否则指令导航任务处于“悬挂”状态中。

调度管理模块还担任对无人机飞行模态进行切换的“决策管理”角色。当小型无人机由自主导航或指令导航切换至人工导航模式时,飞行控制软件接收到人工遥控指令信号后,管理调度模块应立刻切除控制律模块,设置舵机源为Futaba遥控量从而使舵面直接受到地面站操纵杆的控制。当人工导航或自主导航切换至指令导航时,飞行控制软件根据接收到的指令进入相应的飞行模态,由调度管理模块负责接入相应的控制律解算模块进行解算。当无人机由指令导航或人工导航切换至自主导航时,首先需要将无人机稳定在平飞状态后,再发送“自主导航”指令。此时调度管理模块接入相应的控制律解算模块,横侧向接入航迹跟踪控制律,纵向接入高度跟踪。

整个飞行控制软件在运行的过程中由调度管理模块进行调度和管理。当调度管理模块在负责切换不同的飞行模态时,还需对其他各个模块的运行进行管理。对于需要定时调用的模块,进行实时地调度。对于飞行模式切换时,需要事件触发的任务进行事件触发式管理。整个飞行控制软件在调度管理模块的分配下,进行安全有序地运行。不同功能层下各个模块之间的动态情况如图5.11所示。

55

小型固定翼无人机飞行控制软件设计与开发

人工导航模块软件功能层遥测模块遥控模块调度模块自主导航模块控制律模块指令导航模块软件服务层无线测控模块导航切换指令传感器模块舵机控制模块硬件驱动层串口驱动(API函数)AD驱动(API函数)PWM驱动(API函数)

图5. 11 不同导航模式下各模块之间的动态示意图

在图5.11中,当无人机接收到来自地面站的起飞指令时,调度模块接入自主导航模块和控制律模块,并将控制律解算出来的控制指令传递给舵机控制模块,舵机控制模块通过调用PWM驱动来实现对舵机的控制。当无人机切换至指令导航时,调度模块接入指令导航模块和控制律模块,其它流程与自主导航一致。当无人机切换至人工导航时,调度模块接入人工导航模块,切除传感器模块和控制律模块,此时舵机的偏转完全由地面Futaba来操控。

5.6 本章小结

本章主要是对飞行控制软件功能模块进行设计,将遥控遥测模块、导航模块、控制律模块和调度管理模块划分为功能模块。在遥控遥测模块中,主要分析了遥控遥测任务正常运行时的工作流程和遥控任务在测控链路故障情况下的处理流程。在导航模块中,分析了三种飞行模式的工作流程,并对其内在导航逻辑进行了详细的阐述。在控制律模块中,主要分析了控制逻辑结构,完成了纵向和横侧向控制逻辑的设计。在调度模块中,主要负责对各个模块进行调度和管理,并对三种飞行模态进行切换管理。通过上述四个模块的功能设计,完成了飞行控制软件整个功能层的设计。

56

南京航空航天大学硕士学位论文

第六章 软件系统测试和仿真

6.1 引言

在完成飞行控制软件的开发后,首先需要进行系统集成测试,对飞行控制软件各种性能指标进行测试。然后再通过半物理仿真试验来验证飞行控制软件功能的正确性和稳定性[39]。本章主要利用实验室已有的半物理仿真验证环境来进行仿真试验,以验证整个飞行控制软件基本飞行功能的正确性和处理故障的可靠性。

6.2 软件实时性能测试

飞行控制软件开发完成之后需要对其实时性能进行测试,而考核实时性能的指标有很多,本小节仅给出飞行控制软件中最重要的指标参数:任务执行时间和中断响应时间。任务执行时间可以反应出各个任务执行的速度,它取决于相关调度函数的执行速度;中断响应时间可以反应出整个飞行控制系统对外界变化的响应速度,指从中断发生到执行中断处理程序的第一条指令所用的时间[40]。本节利用时间计数法来测试任务执行时间和中断响应时间。

本测试使用的硬件平台是小型飞行控制计算机,其中使用的处理器是飞思卡尔的芯片

mpc565。整个飞行控制系统工作的系统频率和系统晶振频率之间的关系如下:

System Frequency =

OSCCLKDIVF+1

×

(MF+1)2

×DNFHDNFL(2)or(2)2 (6.1)

系统时钟主要通过晶体振荡器来提供,在公式6.1中OSCCLK是系统输入时钟信号,本课题选用的是40MHz。MF是乘数因子,DNFH是高频除数因子,DNFL是低频除数因子,DIVF是系统除数因子。因为选择了1:1模式来提供系统内部的时钟信号,所以经过公式计算后,系统频率(System Frequency)是40MHz。在此系统频率下,可以利用系统时间计数来完成对任务执行时间和中断响应时间的测试。

针对各个任务的执行时间进行测试。在创建的各个任务中,利用系统提供的时间计数功能来对各个任务进行测试。根据此测试思想可设计如下测试方法,就GPS任务的运行频率举例说明。首先在GPS任务中设置GPS任务计数器Gps_Counter,每当飞行控制系统进入GPS任务后都使该计数器进行自加操作。每隔1s采集该计数器的值,通过计算前一秒和后一秒的差值来求得GPS任务运行的频率。为了尽可能的得到任务运行的时间,需要统计其最大运行时间和最小运行时间。其它任务的测试方法与此一样,就不做赘述。通过测试,各个任务运行时间统计结果如表6.1所示。

57

小型固定翼无人机飞行控制软件设计与开发

表6. 1 任务运行时间统计结果表

任务名称

频率设定值

仿真频率最大值

仿真频率 最小值

仿真频率 平均值

GPS数据接收任务 20Hz 21Hz 18Hz IMU数据采集任务 100Hz 102Hz 99Hz AD数据采集任务 20Hz 23Hz 19Hz 19.5Hz 100.5Hz 21Hz 遥控任务 25Hz 26Hz 24Hz 25Hz 遥测任务 25Hz 26Hz 22Hz 24Hz 控制律解算任务 50Hz 51Hz 50Hz 50.5Hz 自主导航任务 20Hz 22Hz 20Hz 21Hz 指令导航任务 人工导航任务

触发运行 —— —— 触发运行 —— —— —— ——

由表6.1可以看出,在仿真模式下各个任务运行的频率和飞行控制软件设计之初的运行频率相差无几,基本达到设计的目标。

中断响应时间定义为从中断发生到开始执行用户的中断服务子程序代码所需要的时间[41]。如图6.1所示。系统中断响应时间的计算公式:

中断响应时间 = 中断延迟 + 保存CPU内部寄存器的时间 (6.1)

中断请求任务任务保存CPU寄存器的内容ISR用户ISR代码恢复CPU寄存器的内容中断延迟中断响应中断恢复

图6. 1 中断响应时间示意图

中断响应时间是系统在最坏情况下的响应中断的时间,某系统100次中有99次在50μs之内响应中断,只有一次响应中断的时间是250μs,只能认为中断响应时间是250μs[42]。本文采用中断发生时时间计数的方法来完成对串口中断响应时间的测试。首先在CPU异常处理入口处,记录此时计数器的值T1;然后在进入串口中断服务之前获取计数器的值T2,两次计数值相减即可得到相应的中断响应时间。重复多次实验,取其最大值就得到最坏情况下的任务切换时间

58

南京航空航天大学硕士学位论文

为47µs。

6.3 半物理仿真环境的构建

半物理仿真验证平台的作用是用数字模拟真实的飞机及其传感器模型,并通过仿真控制台控制和飞行控制软件的控制指令进行运行解算,以验证飞行控制软件设计的功能和性能。平台设计如图6.2所示。

仿真机舵机模型PWM信号指令/数据下传飞机模型仿真控制台控制指令串口/DA口输出传感器模型运行平台:MPC565飞行控制计算机遥控指令遥测数据地面站

图6. 2 仿真验证平台结构

如图6.2所示,整个仿真验证平台由飞行控制计算机、无人机集成仿真设备、仿真控制台、地面监控软件等组成。仿真控制台和无人机集成仿真设备之间通过串口RS232通信,控制台通过串口发指令控制飞机的机体参数设置、运行初态设置、仿真机的运行和复位、各传感器的标定以及数据设置等。无人机集成仿真设备接收到仿真控制台的指令后,将传感器模型得到的数飞行控制计算机经过控制律的解算得出舵面据通过各自串口或D/A口发送给飞行控制计算机。

偏转信息并通过PWM口输出给仿真机,仿真机捕获到这些数据后输入给飞机模型进行解算。由此来构成了一个闭环的仿真验证环境。其中,地面监控软件用于与飞行控制计算机进行通讯,一方面由地面监控软件发出遥控指令,另一方面实时接收来自飞行控制系统下传的遥测信息,显示并记录飞行控制系统运行中的数据。

本文的半物理仿真系统硬件平台包括飞行控制计算机一台,仿真设备一台,地面监控电脑一台,仿真控制台(PC机)一台和Futaba遥控器一个等。通过仿真电缆将飞行控制计算机与仿真设备相连,进行全航迹全自主飞行仿真试验,并在实验过程中记录并实时观察飞行姿态、传感器信息、飞行控制逻辑和任务设备是否正确[43]。

在仿真验证之前,需要对整个系统完成一系列的准备工作。硬件方面主要是进行系统电源的安全检查和各设备之间电缆的正确连接等。软件方面主要是通过地面站软件软件对飞行控制计算机上下行数据链路进行检测。其整个半物理飞行仿真系统实物如图6.3所示。

59

小型固定翼无人机飞行控制软件设计与开发

图6. 3 仿真系统实物连接图

6.4 故障处置功能仿真验证

6.4.1 仿真试验

无人机在飞行过程中无法保证所有的机载设备在各种条件下都能正常工作,因此在飞行控制软件设计过程中得充分考虑可能出现的故障以及对故障的处理。故障处置功能试验主要验证传感器和测控链路故障检测和故障处置功能。在仿真验证时,利用仿真控制台软件注入传感器状态故障,使用地面监控软件注入测控链路故障,通过这些模拟故障可以验证故障处理逻辑设计的正确性。故障注入界面如图6.4所示。

图6. 4 故障注入界面

60

南京航空航天大学硕士学位论文

如图6.4所示,故障注入界面主要包括两部分:图中的上半部分是仿真控制台故障注入界面,

其主要包括GPS高度故障、气压高度故障、GPS定位故障和IMU故障。图中的下半部分是地面监控故障注入界面,其主要包括测控链路故障。

6.4.2 试验结果与分析

在整个故障处置功能验证试验中,故障注入主要分为四类:高度故障注入、位置故障注入、测控链路故障注入和IMU故障注入。在试验过程中,通过对四类故障分别进行故障注入,并利用地面监控软件来监控飞行控制软件对于故障诊断和处置的功能。

(1) 高度故障

通过仿真控制台分别模拟GPS高度故障和气压高度故障,并在这两种故障情况下进行半物理仿真试验,验证在不同高度故障注入情况下飞行控制软件的处置能力,如表6.2所示。

表6. 2 高度故障处置功能测试表 测试内容 软件运行情况 故障前 运行状态 故障注入后 运行状态 可恢复性故障恢复后 运行状态 GPS高度 故障注入 软件 运行正常 当前高度信息源切换至气压高度根据高度信息源优先级重新选择高度信息源 气压高度 故障注入 软件 运行正常 当前高度信息源切换至GPS高度根据高度信息源优先级重新选择高度信息源 两者高度 故障同时注入 软件 运行正常 执行航向返回 逻辑 根据高度信息源优先级重新选择高度信息源 如表6.2所示,整个飞行控制软件的高度信息源包括GPS高度和气压高度,其中GPS高度为第一优先级,气压高度为第二优先级。

当仿真控制台模拟GPS高度故障后,飞行控制软件自动切换气压高度作为当前高度信息源。等到GPS高度故障恢复后,根据高度信息源优先级重新切换至GPS高度,无人机继续按照预定航线进行自主飞行。说明GPS高度故障处置逻辑设计的正确性。

当仿真控制台模拟气压高度故障后,飞行控制软件自动切换GPS高度作为当前高度信息源。等到气压高度故障恢复后,飞行控制软件将优先级更高的GPS高度信息作为高度信息源,无人机继续按照预定航线进行自主飞行。说明气压高度故障处置逻辑设计的正确性。

当仿真控制台同时注入GPS高度故障和气压高度故障后,飞行控制软件立刻进入高度故障处置逻辑,按照预设的处理方式进行航向返回逻辑,说明高度故障处置逻辑设计的正确性。

61

小型固定翼无人机飞行控制软件设计与开发

(2) 位置和姿态故障

通过仿真控制台分别对GPS定位功能和IMU姿态信息进行故障模拟,在满足GPS定位故障和IMU姿态信息故障的情况下对飞行控制软件进行半物理仿真试验,验证其故障条件下飞行控制软件的处置能力,如表6.3所示。

表6. 3 位置和姿态故障处置功能测试表

测试内容 软件运行情况 故障前 运行状态 故障注入后 运行状态 GPS定位 故障注入 软件 运行正常 执行航向返回 逻辑 IMU姿态信息 故障注入 软件 运行正常 向地面站发送警告标志并转由人工进行操控 如表6.3所示,当仿真控制台注入GPS定位信息故障后,飞行控制软件会立刻进入位置故障处理逻辑。飞行控制软件根据GPS位置故障前记录的经纬度信息和地面站装订的返回点经纬度位置信息计算返回航向,无人机跟踪该解算航向返回测控点。说明位置故障处理逻辑设计的正确性。当仿真控制台注入IMU姿态信息故障后,飞行控制软件进入IMU姿态故障处置逻辑,一另一方面通知地面站进行人工操控模式飞行。说明IMU方面将IMU故障警告标志下传至地面站;姿态故障处理逻辑设计的正确性。

(3) 测控链路故障

通过地面监控软件对测控链路进行故障模拟,在满足测控链路故障的情况下对飞行控制软件进行半物理仿真试验,验证飞行控制软件对其故障的处置能力,如表6.4所示。

表6. 4 测控链路故障处置功能测试表

测试内容 软件运行情况 故障前运行状态 故障注入后 飞行控制软件运行状态A 故障注入后 飞行控制软件运行状态B GPS位置 信息状态 正常 正常 测控链路 故障注入 软件运行正常 执行航路 应急返回逻辑 故障 执行航向 应急返回逻辑 如表6.4所示,当地面监控软件注入测控链路故障后,飞行控制软件进入测控链路故障处置

逻辑。此时,还需判定GPS位置信息是否发生故障。若此时GPS位置信息正常,则启动航路应急返回逻辑;若此时GPS位置信息发生故障,则执行航向应急返回逻辑。飞行控制软件完成返回逻辑,说明测控链路故障设计的正确性。

62

南京航空航天大学硕士学位论文

6.5 自主导航功能仿真试验

6.5.1 仿真试验

全自主飞行仿真试验主要考察无人机是否能够按照预定的航线进行全自主飞行,验证飞行控制软件中自主导航功能模块和控制律功能模块设计的正确性,同时综合考核了其他各个功能服务模块。全自主飞行仿真之前,一方面需要利用地面监控软件对航路信息和相关参数进行装订,另一方面需要在仿真控制台软件上对无人机模型的状态变量初始值和仿真工作模式进行相应的设置,并设置其采用的仿真舵机模式。图6.5给出了仿真试验中预设任务航线(绿实线)和实际飞行航迹(蓝实线)。

图6. 5 全自主飞行实时显示图

6.5.2 试验结果与分析

完成了全自主飞行仿真试验后,将实时记录的仿真数据导入实验室已有的数据分析软件,从而对无人机在全自主飞行模式下的飞行模态进行分析,得出了纵向和横侧向历史曲线,如图

6.6和6.7所示。

63

小型固定翼无人机飞行控制软件设计与开发

图6. 6 自主导航纵向历史曲线

如图6.6所示,自主导航纵向历史曲线由海拔高度、俯仰角和俯仰角速率组成。当无人机按照航路进行自主飞行时,不同的航段高度将会引起无人机爬升、平飞和下滑等不同姿态的切换。通过高度和俯仰角的历史曲线可以看出无人机当前飞行姿态,通过俯仰角速率的历史曲线可以看出无人机姿态切换时的变化增量。

为了针对自主导航模式下纵向飞行姿态进行分析,图6.6主要截取无人机按航路飞行时的纵向历史曲线。根据预设的航路信息,无人机进行爬升、平飞和下滑之间的不断切换。根据各个航段的高度,无人机应该依次进入平飞、爬升、平飞、爬升、平飞、下滑、平飞、下滑、平飞。从图6.6中的海拔高度曲线和俯仰角曲线可以看出,根据当前高度和目标航段高度之差,依次接入目标模态,无人机很好地进行了高度跟踪。从俯仰角速率曲线中可以看出,不同模态之间过渡稳定平滑,控制逻辑切入顺利。综上分析,图6.6反映出自主导航模式下,纵向控制逻辑设计的正确性。

图6. 7 自主导航横侧向历史曲线

如图6.7所示,自主导航横侧向历史曲线由滚转角和滚转角速率历史曲线组成。在自主飞行

64

南京航空航天大学硕士学位论文

的情况下,无人机横侧向进行航迹跟踪。无人机横侧向的动态控制主要体现在航段切换时,从无人机进行模态切换的次数与图6.5中无人机航段切换的次数吻合;从滚转角图6.7中可以看出,

速率曲线中可以看出模态切换平稳。综上所述,图6.6和图6.7表明无人机自主导航模式下,控制逻辑设计的正确性。

6.6 指令导航功能仿真试验

6.6.1 仿真试验

无人机进入自主导航飞行后,接收到地面站发出指令导航的指令后飞行控制软件开始切入、指令导航模态,指令导航仿真结果如图6.8所示。依次发送的遥控指令是自主切指令(平直飞)右转、直飞、左转、直飞、爬升、平飞、下滑、平飞、下滑、平飞、指令切自主导航,从图6.8给出了无人机按照指令飞行的实时显示图。

图6. 8 指令导航飞行实时显示图

6.6.2 试验结果与分析

按照预设指令完成指令飞行的任务后,获得无人机各种仿真数据,通过实验室已有的参数分析软件对无人机在指令导航模式下的各个姿态进行分析,得出了纵向和横侧向历史曲线。在纵向历史曲线中,对无人机纵向姿态控制和切换进行分析。在横侧向历史曲线中,对无人机横侧向姿态控制和切换进行分析。通过对历史曲线的研究分析,可以验证无人机飞行控制软件指令导航功能的正确性。如图6.9和6.10所示。

65

小型固定翼无人机飞行控制软件设计与开发

图6. 9 指令飞行纵向历史曲线

如图6.9所示,指令飞行纵向历史曲线是通过将俯仰角、俯仰角速率和海拔高度进行分析,从而反应出无人机在指令下纵向模态的控制效果。从俯仰角历史曲线中,可以看出各个模态对地面指令进行相应的响应。从俯仰角速率的曲线中,可以看出纵向各个模态之间的过渡稳定平滑。从高度曲线中,可以看出在纵向各个模态下,无人机高度的变化。

为了更好的分析指令导航模式下纵向飞行姿态,图6.9主要截取各个指令下纵向模态的历史曲线进行分析。如图6.9所示,当无人机处于平飞模态时,由地面站给出爬升指令,无人机接入爬升控制逻辑,按照给定的俯仰角量(θg=+4.0o)进行爬升。直到地面发出平飞指令后,无人机进入平飞控制逻辑,高度差保持在稳定的范围内(10m),从而控制无人机保持在目标高度平飞。然后,地面站给出下滑指令,无人机此时接入下滑控制逻辑,按照给定的俯仰角进行下滑

(θg=−3.5o)。等到无人机在指令导航模式下第三次进入平飞模态时,地面站发出导航模式切换指令,由指令导航切换至自主导航,无人机按照预设的航线进行自主导航飞行。

考虑到纵向各个模态验证的完备性,所以在进行指令导航仿真验证时,从纵向各个模态之间的切换进行验证。纵向控制的主要动态过程体现在平飞转爬升、爬升转平飞、平飞转下滑、下滑转平飞的过程中,从图6.9中可以看出各个模态之间平滑的过渡、各个模态控制逻辑的顺利切换。综上所述,图6.9反映出指令导航模式下,纵向控制逻辑设计的正确性。

在指令导航模式下,无人机根据地面站上发出的各个指令进行飞行。根据测试需求,开发人员利用地面站监控软件对无人机进行横侧向飞行干预。通过一系列横侧向指令,得到了无人机的滚转角和滚转角速率历史曲线,如图6.10所示。通过对横侧向历史曲线的分析,可以反应出无人机在各个指令下横侧向模态的控制效果。

66

南京航空航天大学硕士学位论文

图6. 10 指令飞行横侧向历史曲线

为了更好的分析指令导航模式下横侧向飞行姿态,图6.10主要截取各个指令下横侧向模态的历史曲线进行分析。如图6.10所示,当由自主导航切入指令导航后,无人机依次按照地面站发出的指令,执行右转、直飞、左转、直飞和切自主导航的指令。从滚转角历史曲线中可以看出模态切换时,无人机按照给定的滚转角(Φ右g=9.8o,Φ左g=−9.8o,Φ直g=0o)响应相应的动作,

表明无人机横侧向控制逻辑设计的正确性。从滚转角速率历史曲线中可以看出,无人机在模态切换时,变化的增量较小,说明横侧向姿态切换的控制性能良好。综上所述,从图6.9和图6.10中可以看出指令导航功能的正确性。

6.7 人工导航功能仿真试验

6.7.1 仿真试验

无人机进入自主导航飞行后,接收到地面站发出人工导航的指令后飞行控制软件开始切入人工导航模态。此时通过控制地面Futaba遥控器来控制无人机的飞行,通过操纵杆依次操纵无人机,最后切入自主导航。当进行手动操控时,必须了解Futaba的操控特性。如表6.5所示。

表6. 5 Futaba操控特性表

操控区域

左操纵杆

操控动作 向下拉杆 中间位置 向上推杆

右操纵杆

向左推杆 中间位置 向右推杆

飞行姿态 爬升 平飞 下滑 左转 直飞 右转

根据表6.5所示,在人工操控模式下,依次按照所设计的指令来进行操控。通过地面监控软

67

小型固定翼无人机飞行控制软件设计与开发

件来监测无人机是否按照人工操控的指令进行飞行。图6.11给出了在实验室半物理仿真环境下,进行人工导航操作的界面。

图6. 11 人工导航操作界面

在模拟人工导航操作的过程中,首先使无人机按照地面装订的航线进行自主飞行,当需要执行人工遥控任务时,将自主导航模式切换到人工导航模式。此时,需要打开Futaba遥控器上的人工操控开关,地面操纵手便可以对无人机进行手摇控制,按照预定指令进行人工操控。图6.12给出了人工导航模式下无人机实时飞行显示图。

图6. 12 人工导航飞行实时显示图

6.7.2 试验结果与分析

完成人工导航操作任务后,获得无人机各种仿真数据,通过实验室已有的参数分析软件对

68

南京航空航天大学硕士学位论文

无人机仿真数据进行纵横向模态分析。如图6.13所示。

图6. 13 人工切自主纵横向模态分析

如图6.13所示,人工切自主导航时,主要对俯仰角、俯仰角速率、滚转角和滚转角速率的历史曲线来进行纵向和横向模态的分析。

为了更好地分析导航模式切换下纵横向飞行姿态,图6.13主要截取导航模式切换前后的历史曲线进行分析。在图6.13中,当无人机由人工切换至自主导航时,无人机飞行高度低于目标航段的高度,无人机在纵向进入爬升模态,以达到航段期望高度。此时,从俯仰角速率的历史曲线中可以看出俯仰角速率是缓慢变化的。说明导航模式切换时,纵向模态的切换是平滑的。当无人机切换至自主导航时,需要切入到下一航段。从滚转角历史曲线中可以看出,无人机进入右转模态准备切入下一航段。切入航段后,无人机由右转切入直飞并按照预设的航线进行自主飞行。

在图6.13中可以看出,滚转角速率的变化是平缓的。说明在切换导航模式时,横侧向的切换是平滑的。综上分析,说明在人工切自主导航模式下,纵横向总体过渡平滑,验证了人工导航功能的正确性。

6.8 本章小结

本章从性能和功能对飞行控制软件进行了相关的测试和验证。通过实验室目前现有的半物理仿真环境,对系统的基本功能和故障的处置功能分别进行仿真,重点对三种不同的导航功能和故障处置功能进行验证。通过结果分析得出飞行控制软件的设计方法和技术手段具有可行性。

69

小型固定翼无人机飞行控制软件设计与开发

第七章 总结与展望

7.1 本文的工作总结

本文的研究工作概括起来,主要包括以下几个方面: (1) 针对MPC565进行底层驱动程序的开发。

根据飞行控制计算机的硬件配置情况和开发需要,对底层驱动进行开发,完成了板级系统初始化和应用驱动程序。其中包括串口驱动、脉宽调制接口驱动、模拟量接口驱动和离散量接口驱动等,并在串口驱动的基础上实现了用户中断服务程序的设计。为飞行控制软件和底层硬件进行数据交互提供了数据通道。

(2) 针对飞行控制软件的三种飞行模式进行设计。

按照飞行控制软件的设计需求和功能特点,完成了软件从功能服务层到功能服务模块的细化,包括传感器模块、无线测控模块、数据管理模块、舵机控制模块、遥控遥测模块、导航模块、控制律模块和调度管理模块。通过各个服务模块为飞行模式的切换提供底层数据服务。通过各个功能模块为飞行模式的切换提供决策管理功能。

(3) 针对飞行控制软件的安全可靠性进行设计。

按照飞行控制软件安全可靠性的设计需求,采用不同的技术手段来实现。采用看门狗技术防止整个系统程序运行死机,通过在程序中不断地进行喂狗操作实现程序的有序进行。为了解决各模块之间数据的安全交互,采用数据区管理的方式来避免对数据区造成读写冲突。为了解决无线测控模块中因半双工电台造成上下行数据通信冲突的问题,采用分时复用的技术。即通过合理地分配上下行传输数据所需的时间,从软件上解决了上下行通信的问题。通过分析传感器和测控链路等常用故障,合理的设计故障处置手段,提高了飞行控制软件对故障的处置能力。

(4) 针对飞行控制软件进行半物理仿真验证。

利用实验室现有的半物理仿真验证环境,完成了对飞行控制软件性能和功能的测试。在半物理仿真验证的基础上,针对三种基本的飞行模式功能和故障处置功能进行验证,结果表明软件设计满足要求。

7.2 后续研究工作展望

本文的后续工作展望如下:

(1) 针对MPC565芯片进行深入研究。

在开发本课题的过程中,选用接口资源丰富的mpc565芯片,根据项目的需求只是对芯片上部分资源进行了开发。随着后期软件功能的增加,将会使用到更多的片上资源,所以有必要

70

南京航空航天大学硕士学位论文

对其进行深入的研究。

(2) 针对故障检测和处置功能进行完善。

本文中故障主要定位在高度信息故障、位置信息故障和测控链路故障,而实际项目工程中可能出现的故障要比实验室环境下出现的故障复杂的多,尤其是动力系统出现故障的情况。今后的工作可以以此进行展开,并可以设计主从备份式飞行控制软件来提高软件整体的健壮性。

(3) 针对各个模块之间的数据交互进行优化。

本文采用的数据区轮换读写的方式解决了各个模块之间对于共享资源的读写冲突问题。但是在数据使用的时候不够灵活,只能固定地开辟数据区,不能根据实际需求来分配数据。在以后的开发过程中可以考虑按照各个模块的需求,动态地开辟内存区,动态地释放数据区。不过其缺点是若不及时释放开辟的内存区则会造成系统的崩溃。

(4) 开发飞行软件外围测试模块

随着飞行控制软件越来越复杂,软件测试工作本身就包含了很大的工作量。若是能够开发出外围的测试模块,则可以大大地缩短软件开发的周期。当测试模块形成一个标准的模块后,则可以实现通用,为以后的开发和测试带来了极大的便利。

71

小型固定翼无人机飞行控制软件设计与开发

参考文献

[1] 陈天华,郭培源.小型无人机自主飞行控制系统的实现.航天控制,2006,24(5):86~90. [2] 古月徐,杨忠,龚华军.基于DSP的飞行控制器的设计.自动化技术与应用,2005,24(2):28~

32.

[3] 郭锁风,申建章,吴成富等.先进飞行控制系统.北京:国防工业出版社,2003:1~10. [硕士学位论文].南京:南京航空航天大学,2008. [4] 刘佳.小型化飞行控制计算机设计与实现,

[5] 张明廉.飞行控制系统.北京:航空工业出版社,1994:13~16.

[6] I.K.Peddle.Aircraft for a model UAV.IEEE Control Systems Magazine,April 2005: 15~19. [7] 邵贝贝.嵌入式软件的安全可靠性控制.电子产品世界,2005,6(2):38~40.

[8] BruceT.Clough.Unmanned Aerial Vehicles Autonomous Control Challenges,Journal of

Aerospace Computing Information and Communication,2005,16(5):327~347.

[9] Karl Schulze,Andrew Abramson.An economical approach to autopilot development and

integration.AIAA the 3rd \"Unmanned Unlimited\" Technical Conference, Chicago ,2004. [10] Jose Enrique Ortiz. Development of a Low Cost Autopilot System for Unmanned Aerial

Vehicles,[Master’s thesis].Virginia: Virginia Commonwealth University,2008.

[11] David N. Borys, Richard Colgren.Advances in Intelligent Autopilot Systems for Unmanned

Aerial Vehicles.AIAA Guidance, Navigation and Control Conference, San Francisco, California,2005.

[12] Widyawardana Adiprawita, Adang Suwandi Ahmad, Jaka Semibiring.Hardware in the loop

simulator in UAV Rapid Development Life Cycle.ICIUS, 2007, 28(5):31~36.

[13] 马晓宁,房建成,盛蔚.基于VxWorks的MUAV飞行控制系统设计.传感器与微系

统,2009,28(5):90~93.

[14] 姜印清.基于µC/OS-II的无人机小型飞行控制系统软件设计,[硕士学位论文].南京:南京航

空航天大学,2009.

[15] 苏永振,胡延霖,赵菲.基于ARM的无人机飞行控制系统的实现.计算机测量与控制,2005,

13(10):1063~1068.

[16] 赵鹏,蒋烈辉,吴金波.基于AT91M55800无人机飞行控制系统设计与实现.微计算机信

息,2005,21(3):56~58.

[17] 刘培强,祖家奎,黄海等.航模直升机飞行控制系统的设计与实现.直升机技

术,2009,4(9):41~45.

72

南京航空航天大学硕士学位论文

[18] 陈翌,田捷,王金刚编.嵌入式软件开发技术.北京:国防工业出版社,2003:73~90. [19] C.M.Krishna,KangG.Shin著.实时系统(戴琼海).北京:清华大学版社,2004: 59~73. [20] 罗国庆等编著.Vxworks与嵌入式软件开发.北京:机械工业出版社,2003:15~18. [21] 漆昭铃编著.基于PowerPC的嵌入式Linux.北京:北京航空航天大学出版社,2004:9~40. [22] 徐贵甲.基于MPC555和µC/OS-II的无人机飞行控制软件开发技术研究,[硕士学位论文].

南京:南京航空航天大学,2010.

[23] 史峰,何力明,马晓峰等.基于µC/OS-Ⅱ操作系统的无人机飞控系统软件设计.传感器与微

系统,2008, 12(4):95~96.

[24] Philips Melanson,Siamak Tafozoli.A Selection Methodology for the RTOS market.Canadian

Space Agency,2003,11(5):23~28.

[25] Corey IppolitoQSS Group.An Autonomous Autopilot Control System Design for Small-Scale

UAVS. IEEE, Arizona,2002.

[26] Superstar II Firmware Reference Manual.NovAtel Technology, Inc., 2005.6:81~83. [27] Jean J.Labrosse.Embedded Systems Building Blocks.R&D Books,2000,10(5):115~118. [28] 傅媛媛.负荷分担式容错飞行控制软件设计,[硕士学位论文].南京:南京航空航天大

学,2010.

[29] 9Xtend OEM RF Module Product Manual.MaxStream, Inc., 2007.2:1~19.

[30] 冉汉政.嵌入式实时操作系统µC/OS-Ⅱ在控制系统中的应用.现代电子技

术,2003,10(13):84~86.

[31] Roger Pratt.Flight control systems practical issues in design and implementation.IEEE Control

Engineering Series,2000,10(5):57~65.

[32] 章晓春.基于SCADE的无人机飞行控制软件设计与开发,[硕士学位论文].南京:南京航空

航天大学,2009.

[33] I. R. Kendall and R. P. Jones.An investigation into the use of hardware-in-the-loop simulation

testing for automotive electronic control systems.Control Engineering Practice,1999,10(5):1343~1356.

[34] 江建慧,唐智杰.测量嵌入式操作系统实时性能参数的新方法,同济大学学报,2008,

36(9):64~68. [35] 王永亮.基于VxWorks的无人机飞行控制软件设计与开发,[硕士学位论文].南京:南京航空

航天大学,2010.

[36] 戴文雯.新型无人直升机飞行控制技术研究,[硕士学位论文].南京:南京航空航天大

学,2007.

[37] 曲建清,陈欣,李春涛.无人机自主导航数字仿真研究.中国导航、制导与控制学术会议,

73

小型固定翼无人机飞行控制软件设计与开发

西安,2008.

[38] David N. Borys, Richard Colgren. Advances in Intelligent Autopilot Systems for Unmanned

Aerial Vehicles.AIAA Guidance, Navigation and Control Conference, San Francisco,2005.

[39] Eric N.Johnson, Paul A.DeBitetto.Modeling and Simulation for Small Autonomous Helicopter

Development.American Institute of Aeronautics and Astronautics, 1997, 9(15):1~11. [40] Micheli,Gupta.Hardware/software code sign.Proceedings of the IEEE,1997,85(3):349~366. [41] 史峰,何力明,马晓峰等.基于µC/OS-Ⅱ操作系统的无人机飞控系统软件设计.传感器与微

系统,2008,12(4):94~95.

[42] Jean J.Labrosse.嵌入式实时操作系统µC/OS-Ⅱ(第2版)(邵贝贝).北京:北京航空航天大学

出版社,2003:1~15.

[43] 颜雯清.基于SCADE的无人机飞行控制软件设计,[硕士学位论文].南京:南京航空航天大

学,2008.

74

南京航空航天大学硕士学位论文

致 谢

本文得以顺利完成,首先要衷心感谢我的导师李春涛老师。正是由于李老师的亲切关怀和悉心指导,使我的课题研究和毕业论文能够顺利完成。从本文的选题,提纲的修改到最后的成文这整个过程中,每一步都是在李老师的指导下完成的,倾注了导师大量的心血。每当遇到困难难以继续的时候,是李老师深厚的专业功底、渊博的知识给我带来启发,指引了前进的方向。李老师认真严谨的治学精神,精益求精的工作作风,平易近人的人格魅力深深地感染和激励着我,不仅使我掌握了基本的研究方法,还使我明白了待人接物的道理。在此向李老师表示崇高的敬意和衷心的感谢!

在整个论文阶段,还得到了所有教研室的老师给予我的帮助。我还要感谢徐春艳、刘茂汉、姜广山等同学对我的帮助,他们总是耐心地和我探讨问题,使得课题的研究少走了许多弯路。还要感谢江达飞、尚何章、叶志航、杨大鹏和胡胜华等同学对我的帮助,由于你们的帮助和支持,我才能克服一个个困难和疑惑,直至本文的顺利完成。

这里还要感谢一起奋斗的饶明波、陶乃利和喻雷等舍友,他们陪我度过了美好的时光,感谢他们对我的鼓励和支持,感谢他们的无私帮助。

感谢我的家人和女朋友赵玲,感谢他们在学习和生活上给予的关心和照顾,让我全身心地投入到课题研究中去,真诚感谢你们。

最后,对审阅本文的所有专家学者表示衷心的感谢和崇高的敬意!

李俊

二○一一年二月于南京航空航天大学

75

小型固定翼无人机飞行控制软件设计与开发

在学期间发表的学术论文

[1] 李俊,李春涛.基于µC/OS-II的小型无人机飞行控制软件设计.第四届中国导航、制导与控制

学术会议(CGNCC2010),2010,上海.

76

小型固定翼无人机飞行控制软件设计与开发

作者:

学位授予单位:

李俊

南京航空航天大学

本文链接:http://d.g.wanfangdata.com.cn/Thesis_D166742.aspx

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务