1飞控软件功能分析
一般来说,飞行控制系统的基本任务包括:
1、CPU接收遥控器的操作指令和传感信号;
2、传感器数据处理和数据融合算法运算,获取位置和姿态信息;
3、根据控制指令完成相应的控制器(姿态、位置)估计软件应用层,获得控制量并输出给电机驱动器;
为了实现飞控飞机的各种功能,不仅需要优秀的硬件系统和PCB设计,软件系统也至关重要。 硬件和软件系统的配合是身体和灵魂的相遇,从而实现系统的升华。
就飞控软件而言,其基本功能至少应具备以下四种功能:时间管理、数据采集与分发、通信与交互、控制律计算。
图1 飞控软件功能
图2 应用层软件架构
所谓时间管理,就是在规定的时间内完成特定的功能任务,但根据暴风雨的优先级,优先完成个别任务,以保证系统的飞行安全。 数据采集和分发是对机载各类传感器、地面站、遥控设备的数据进行采集和处理,完成无人机飞行状态、飞行姿态参数、地面站和遥控操作指令等的编码,并分发到通过串行套接字连接机载数据终端。 控制律计算的作用是通过一定的控制算法、飞行状态信息、任务函数等计算出要实现的功能,并向执行器输出控制指令。 通信交互功能是完成系统内部功能模块之间的数据通信和交互,以及系统与地面之间的数据传输和交互。
图3 飞控系统工作流程
图4 开源飞控软件架构
除了这个基本功能外,飞控软件通常还具有底盘状态检测、紧急故障处理、系统自检和报告、数据存储等功能。 如果这个功能能够在非常短且特定的时间范围内完成且不冲突,则需要借助优秀的飞控软件系统的架构和设计来实现。 为此,飞控软件设计主要负责构建合理的软件流程,使各功能模块能够协调有效地工作。
2 软件设计架构讨论
通过上一章的介绍我们知道,飞控软件负责很多功能,而实现这些功能并不是一件容易的事。 除了应用开发的庞大而繁琐的工作之外,拥有各种优秀的屋顶结构设计也至关重要。
就飞控软甲的组织结构而言,目前主要有两种类型:裸运行程序和运行在操作系统(OS)下的控制程序。 就这两种架构而言,不同的人经常争论得很激烈,尤其是在美军研发需求的引导下,OS架构一直被传言令人惊叹。 接下来我们来解释一下两种架构的异同。
2.1 裸运行架构
裸运行架构也称为前后端架构。 这些框架的应用程序在main主函数上无限循环,通过main函数调用相应的处理子函数。 这称为后台程序。 前台程序是指处理storm异步触发的中断程序。 因此,前台程序称为中断级程序,后台程序称为任务级程序。
就该软件架构而言,每隔固定时间执行的任务必须由中断服务程序来完成,以保证时间的准确性。 而且,风暴的发生只是在中断处理程序中进行标记,不做任何处理,由后台系统调度处理。 这些处理方法主要是为了防止中断程序执行时间过长,影响后续的中断以及其他中断干扰。 这些设计的优点包括:
1、软件实现简单,对软件开发人员的专业技能要求不高。 以广泛使用的STM32系列微处理器为例,该架构可以通过基于库函数重新开发程序来实现基本的系统功能;
2、该架构的开发类似于单片机编程,对CPU性能要求不高,但不太关注ROM/RAM;
3、与带OS的飞控相比,如果该架构的飞控软件设计和开发得当,系统运行会更加稳定。 目前很多工业级飞控都采用这些架构。
相对于这些优点,这些软件架构也有缺点。
首先,对于飞行控制来说,需要同时运行大量的程序,需要处理大量的数据。 在前后端架构下,要求系统在特定的时间段内完成特定的程序操作。 这对整个系统的实时性提出了很高的要求。 一旦程序的逻辑和时序出现错误,必然会产生严重的后果。 如果设计不当,比如某个周期的函数执行超时,那么之前的所有程序都会受到影响。 如果程序执行时间不够准确,不利于飞行器的控制。 严重时,客机可能会失控。
其次,程序的可移植性和扩展性较差,给整个程序的后续修改和维护带来不便。 由于各个任务都是相关的子函数,一个任务往往需要调用多个子函数。 当需要修改或维护程序时,它变得非常冗长和复杂。 往往会因为忽略某个细节而导致功能难以实现,最终增加了程序的可读性,也不利于其他人对程序的修改。
2.2操作系统架构
该架构是在实时操作系统上运行控制程序。 其中,最常见的操作系统是VxWorks。 VxWorks是日本风河系统公司(简称Wind River公司,简称WRS公司)推出的实时操作系统。 该系统可以在Wind River公司推出的实时操作系统开发环境Tornado上进行开发,Tornado类似于Microsoft Visual C,提供了更丰富的调试和仿真环境及工具。 VxWorks 提供快速、灵活的 ANSIC 兼容 I/O 系统,包括 UNIX 标准 BasicI/O(creat()、remove()、open()、close()、read()、write() 和ioctl()。) 、BufferI/O(fopen()、fclose()、fread()、fwrite()、getc()、putc())和 POSIX 标准异步 I/O。
系统具有良好的可持续开发能力、高性能的核心和人性化的开发环境,具有良好的可靠性和优异的实时性能。 广泛应用于通信、军事、航空、航天等高精度技术和行业。在实时性要求极高的领域,印度的F-16、FA-18战斗机、B-2隐形轰炸机等爱国者号潜艇,甚至1997年4月登陆火星表面的火星探测器、5月登陆的凤凰号和2012年8月登陆的好奇号都使用了VxWorks。 VxWorks系统以其良好的可靠性和优异的实时性能,在嵌入式实时操作系统领域占据着不可动摇的地位。
近年来,随着开源飞控的普及和广泛应用,Nuttx开源控制系统也被大家所熟知。 NuttX 是一种实时操作系统 (RTOS),符合标准且大规模封装,具有从 8 位到 32 位微控制器环境的高可扩展性。 NuttX 主要遵循 Posix 和 ANSI 标准,但对于该标准不支持的功能或不适合深度嵌入式环境的功能(例如 fork()),使用 Unix 和常见 RTOS(例如 VxWorks)的附加标准。 API。
使用OS系统开发飞控软件更像是在某个操作系统上进行二次开发。 操作系统通过内核的调度来管理CPU,使所有模块即任务能够正常运行,实现相对意义上的“并行”。 同时采用基于优先级的剥夺调度算法保证实时性。 RTOS将应用层软件划分为多个任务软件应用层,简化了应用软件的设计,保证了飞控的实时性。
直观地讲,带有操作系统的飞控软件固件还附带一系列工具集、系统驱动/模块和外围软件接口层。 所有这些软件(包括用户自定义的飞控软件)都与操作系统内核统一在一起。 编译成固件后上传到飞控飞机硬件中,实现飞控板的软件配置。
带OS的飞控系统软件架构具有整个架构的具体性(多态性),即:为了最大化飞控算法代码的复用性,将飞控逻辑与具体的底层控制器指令实现解耦。 。 因此,这种架构最大的优点就是软件开发的标准化、可维护性、可移植性以及大型系统和多种设备之间的兼容性。
3 总结
两种不同路线的飞控软件各有优缺点。 裸运行程序与很多开发者在大学里学到的编程知识越来越紧密地联系在一起,不需要额外学习操作系统开发教程。 因此,很多有手动背景、没有太多软件经验的开发者倾向于直接使用底层控制合约来控制飞控板。
带OS的飞控架构已经在更高的具体层面上提供了更好的选择。 无论是代码维护成本、开发效率,还是硬件兼容性,都可以明显低于后者。
但OS系统也存在高层封装机制效率低下、飞控板性能不足等问题,很容易造成飞控板处理负载过大。 不过,随着处理器性能的不断提高,这个问题已经不再具有实际应用的限制。 从实际性能来看,遵循OS软件架构模型,更容易实现更高的处理智能,不易产生控制串扰,提高并发处理效率。