飞控软件架构解析:裸跑还是OS调度
liebian365 2024-11-21 17:36 3 浏览 0 评论
1 飞控软件功能探讨
一般来说,飞控系统的基本工作包括:
1、CPU接收遥控器的操作指令和传感器信号;
2、传感器的数据处理和数据融合算法运算,得到位置、姿态信息;
3、根据控制指令完成相应的控制器(姿态、位置)计算,得出控制量并输出到电机驱动;
飞控机各种功能要实现,除了优秀的硬件系统和PCB设计之外,软件系统同样至关重要。硬件和软件系统的配合,才是肉身和灵魂的遇见,进而实现系统的升华。
就飞控软件来说,其基本的功能至少应具备以下四个:时间管理、数据采集与分发、通信与交互、控制律解算。
所谓的时间管理就是在规定的时间内完成特定的功能任务,并且根据事件的优先级,优先完成某些使命,保证系统的飞行安全。数据采集与分发就是针对各种机载传感器和地面站、遥控设备的数据进行采集和处理,以完成对无人机的飞行状态、飞行姿态参数、地面站和遥控器操作指令等数据进行编码并通过串行接口分发至机载数据终端。控制律解算的功能为通过一定的控制算法和以及飞行状态信息、任务功能等对要达到的功能进行结算,并向执行机构输出控制指令。通信与交互的功能为完成系统内部各功能模块间的数据通信交互以及系统和地面间的数据传输和交互工作。
除了这些基本的功能之外,飞控软件一般还具有发动机状态监测、故障应急处理、系统自检与报警、数据保存等功能。这些功能要在极短、特定的时间片段内完成且不发生冲突,就需要依靠优秀的飞控软件系统的架构和设计实现。因此,飞控软件设计主要负责搭建合理的软件流程,使各功能模块协调有效的工作。
2 软件设计架构讨论
从上一章节的介绍知道,飞控软件承担着众多的功能,这些功能的实现并不是一件容易的事儿。除了应用开发这些巨大、繁琐的工作之外,优良的顶层架构设计多样至关重要。
就飞控软甲的组织架构而言,目前主要有两种:裸跑程序和操作系统(OS)下运行控制程序。就这两种架构而言,不同人的往往争论的不可开交,特别是在军方研发需求的引导下,OS架构被传的神乎其神。接下来,我们就来探讨一下两种架构各自的优缺点。
2.1 裸跑架构
裸跑架构又被称为前后台架构。这种架构的应用程序是在放在mian主函数里面无限循环,并通过该主函数调用相应的处理子函数,这称为后台程序。而前台程序指的就是中断程序处理异步触发事件的程序。故前台程序称为中断级程序,而后台程序称为任务级程序。
就该软件架构而言,固定周期执行的任务都要靠中断服务程序来完成,以保证时间的精确性。但是,在中断处理程序中只标记事件的发生,不做任何处理,而由后台系统调度处理。这种处理方式主要是为了避免在中断程序执行时间过长,影响后续和其他中断事件。这种设计的优点包括:
1、软件实现简单,对于软件开发人员的专业能力要求不高。以被广泛使用的STM32系列微处理器而言,该架构按照库函数再开发程序就能实现基本的系统功能;
2、该架构的开发类似于单片机编程,对CPU性能要求不算高,而且不太关注ROM/RAM;
3、相较于带OS的飞控,该架构飞控软件如果设计开发得当,系统运行会更加稳定。目前,很多工业级的飞控都采用了这种架构。
相对于这些优点,这种软件架构也同样存在缺点。
首先,对于飞行控制而言,存在大量的程序需要同时运行,大量的数据需要处理。在前后台架构下,就要求系统必须在特定的时间段内完成特定的程序运行。这就对整个系统的实时性有着很高的要求。程序一旦逻辑和时序出现偏差,将出现无法估计的严重后果。如果设计不当的话,比如某个周期的函数执行超时,后面所有的程序都会受到影响。如果程序执行时间变得不够准确,不利于对飞行器的控制,严重时会发生飞机失控的现象。
第二,程序的移植性和扩展性差,给整个程序后续改动和维护带来不便,由于各种任务都是相关的子函数,往往一个任务需要调用多个子函数。在程序改动或者维护的时候变得非常繁琐复杂。经常由于忽略某一细节而导致功能无法实现,最后导致程序的可读性降低,不利于其他人做程序修改。
2.2 OS架构
该架构就是在一个实时操作系统上运行控制程序。其中,最常见的操作系统是VxWorks 。VxWorks是美国 Wind River System 公司( 简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。该系统可以在风河公司推出的实时操作系统开发环境Tornado 上开发,类似Microsoft Visual C,但是提供了更丰富的调试、仿真环境和工具。VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统,包括 UNIX 标准的Basic I/O(creat(),remove(),open(),close(),read(),write(),and ioctl().),Buffer I/O (fopen(),fclose(),fread(),fwrite(),getc(),putc()) 以及POSIX 标准的异步 I/O。
该系统具有良好的持续发展能力、高性能的内核以及友好的用户开发环境,并具有良好的可靠性和卓越的实时性,被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,美国的 F-16、FA-18战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器、2008年5月登陆的凤凰号,和2012年8月登陆的好奇号都使用了VxWorks。VxWorks系统以其良好的可靠性和卓越的实时性,在嵌入式实时操作系统领域占据着不可撼动的地位。
近年来,随着开源飞控的普及和广泛应用,Nuttx开源操纵系统被大家所熟知。NuttX是一个实时操作系统(RTOS),强调标准兼容和小型封装,具有从8位到32位微控制器环境的高度可扩展性。NuttX 主要遵循 Posix 和 ANSI 标准,对于在这些标准下不支持的功能,或者不适用于深度嵌入环境的功能(如 fork()),采用来自 Unix 和常见 RTOS (如 VxWorks)的额外的标准 API。
具有OS系统的飞控软件开发,更像是在某一操作系统上进行的二次开发。OS通过一个内核的调度来管理CPU,使得所有的模块也就是任务都能正常运行,达到相对意义的“并行”。同时采用基于优先级的可剥夺性调度算法来保证实时性。RTOS 将应用层软件分成多个任务,简化了应用软件的设计,同时使得飞行控制的实时性得到保证。
直观地说,带OS的飞控软件,其固件同时附带了一系列工具集、系统驱动/模块与外围软件接口层,所有这些软件(包括用户自定义的飞控软件)随OS内核一起,统一编译为固件形式,然后上传到飞控机硬件中,从而实现对飞控板的软件配置。
带OS的飞控系统软件架构具有整个架构的抽象性(多态性),即:为了最大限度保障飞控算法代码的重用性,其将飞控逻辑与具体的底层控制器指令实现进行了解耦合。因此,对于该架构来说,最大的优点在软件的开发的标准化、维护性、可移植性以及大系统、多设备间的兼容性。
3 总结
对飞控软件这两种不同的路线,各有其优缺点。裸跑程序和众多开发者在大学期间学习的编程知识更加贴近,不需要再额外学习一种操作系统的开发教程。因此,很多搞自动化出身、没太多软件经验的开发者倾向于直接使用底层控制协议来控制飞控板。
而带OS的飞控架构已经在更高的抽象层面上提供了更好的选择,无论是代码维护成本、开发效率、硬件兼容性都能显著高于前者。
但是,OS系统也存在高层封装机制效率较低,而飞控板性能不够,容易给飞控板造成较大的处理负载等问题。然而,随着处理器性能的不断提升,该问题已不存在实际应用上的限制。从实际用表现来看,遵循OS软件架构模式更容易实现较高处理性能,不容易产生控制拥塞,并且提升并发处理效率。
相关推荐
- 快递查询教程,批量查询物流,一键管理快递
-
作为商家,每天需要查询许许多多的快递单号,面对不同的快递公司,有没有简单一点的物流查询方法呢?小编的回答当然是有的,下面随小编一起来试试这个新技巧。需要哪些工具?安装一个快递批量查询高手快递单号怎么快...
- 一键自动查询所有快递的物流信息 支持圆通、韵达等多家快递
-
对于各位商家来说拥有一个好的快递软件,能够有效的提高自己的工作效率,在管理快递单号的时候都需要对单号进行表格整理,那怎么样能够快速的查询所有单号信息,并自动生成表格呢?1、其实方法很简单,我们不需要一...
- 快递查询单号查询,怎么查物流到哪了
-
输入单号怎么查快递到哪里去了呢?今天小编给大家分享一个新的技巧,它支持多家快递,一次能查询多个单号物流,还可对查询到的物流进行分析、筛选以及导出,下面一起来试试。需要哪些工具?安装一个快递批量查询高手...
- 3分钟查询物流,教你一键批量查询全部物流信息
-
很多朋友在问,如何在短时间内把单号的物流信息查询出来,查询完成后筛选已签收件、筛选未签收件,今天小编就分享一款物流查询神器,感兴趣的朋友接着往下看。第一步,运行【快递批量查询高手】在主界面中点击【添...
- 快递单号查询,一次性查询全部物流信息
-
现在各种快递的查询方式,各有各的好,各有各的劣,总的来说,还是有比较方便的。今天小编就给大家分享一个新的技巧,支持多家快递,一次能查询多个单号的物流,还能对查询到的物流进行分析、筛选以及导出,下面一起...
- 快递查询工具,批量查询多个快递快递单号的物流状态、签收时间
-
最近有朋友在问,怎么快速查询单号的物流信息呢?除了官网,还有没有更简单的方法呢?小编的回答当然是有的,下面一起来看看。需要哪些工具?安装一个快递批量查询高手多个京东的快递单号怎么快速查询?进入快递批量...
- 快递查询软件,自动识别查询快递单号查询方法
-
当你拥有多个快递单号的时候,该如何快速查询物流信息?比如单号没有快递公司时,又该如何自动识别再去查询呢?不知道如何操作的宝贝们,下面随小编一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号若干...
- 教你怎样查询快递查询单号并保存物流信息
-
商家发货,快递揽收后,一般会直接手动复制到官网上一个个查询物流,那么久而久之,就会觉得查询变得特别繁琐,今天小编给大家分享一个新的技巧,下面一起来试试。教程之前,我们来预览一下用快递批量查询高手...
- 简单几步骤查询所有快递物流信息
-
在高峰期订单量大的时候,可能需要一双手当十双手去查询快递物流,但是由于逐一去查询,效率极低,追踪困难。那么今天小编给大家分享一个新的技巧,一次能查询多个快递单号的物流,下面一起来学习一下,希望能给大家...
- 物流单号查询,如何查询快递信息,按最后更新时间搜索需要的单号
-
最近有很多朋友在问,如何通过快递单号查询物流信息,并按最后更新时间搜索出需要的单号呢?下面随小编一起来试试吧。需要哪些工具?安装一个快递批量查询高手快递单号若干怎么快速查询?运行【快递批量查询高手】...
- 连续保存新单号功能解析,导入单号查询并自动识别批量查快递信息
-
快递查询已经成为我们日常生活中不可或缺的一部分。然而,面对海量的快递单号,如何高效、准确地查询每一个快递的物流信息,成为了许多人头疼的问题。幸运的是,随着科技的进步,一款名为“快递批量查询高手”的软件...
- 快递查询教程,快递单号查询,筛选更新量为1的单号
-
最近有很多朋友在问,怎么快速查询快递单号的物流,并筛选出更新量为1的单号呢?今天小编给大家分享一个新方法,一起来试试吧。需要哪些工具?安装一个快递批量查询高手多个快递单号怎么快速查询?运行【快递批量查...
- 掌握批量查询快递动态的技巧,一键查找无信息记录的两种方法解析
-
在快节奏的商业环境中,高效的物流查询是确保业务顺畅运行的关键。作为快递查询达人,我深知时间的宝贵,因此,今天我将向大家介绍一款强大的工具——快递批量查询高手软件。这款软件能够帮助你批量查询快递动态,一...
- 从复杂到简单的单号查询,一键清除单号中的符号并批量查快递信息
-
在繁忙的商务与日常生活中,快递查询已成为不可或缺的一环。然而,面对海量的单号,逐一查询不仅耗时费力,还容易出错。现在,有了快递批量查询高手软件,一切变得简单明了。只需一键,即可搞定单号查询,一键处理单...
- 物流单号查询,在哪里查询快递
-
如果在快递单号多的情况,你还在一个个复制粘贴到官网上手动查询,是一件非常麻烦的事情。于是乎今天小编给大家分享一个新的技巧,下面一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号怎么快速查询?...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)