近年来,嵌入式设备的爆炸式增长已经模糊了真正的实时操作系统 (RTOS) 和可以为嵌入式系统服务的操作系统之间的界限。一般来说,实时操作系统是嵌入式操作系统的一个子集。虽然您可以使用嵌入式操作系统解决许多应用挑战,但有些挑战只能通过硬 RTOS 提供的确定性来解决。
属于此类的重要应用之一是高速控制。从医疗仪器和包装机到汽车发动机模拟,许多设备和系统都存在高速控制。
需要实时执行的常见的控制类型是闭环控制系统。闭环控制系统通常执行三个基本操作:
? 从被控系统(通常称为设备)获取反馈信号。
? 根据期望的行为对输入信号执行逻辑和/或信号处理。
? 生成影响设备的输出信号,如图 1 所示。
要将高速控制系统与所有其他控制应用区分开来,请考虑高速控制系统需要以 1 毫秒或更小的循环速率运行,或者以至少 1 kHz 的速率确定性地执行上述三个动作。此外,这些系统必须达到控制环路速率以避免关键任务系统故障。
因此,高速控制系统需要硬实时解决方案。虽然性能重要,但高速控制系统还有其他要求。要为您的控制应用找到合适的 RTOS,您必须考虑以下因素:
? 表现
? 软件开发工具
? 调试
? 控制算法集成
? 硬件和 I/O 支持
? 代码足迹
? 沟通
性能
选择 RTOS 时重要的考虑因素是可靠性能。操作系统必须满足基本的马力要求才能使控制软件完成其任务。重要的要求之一是低中断延迟,如图 2 所示。系统必须能够快速且可预测地响应新输入信号等事件。衡量此性能的术语是中断服务例程 (ISR) 延迟和中断服务线程 (IST) 延迟。硬件在环仿真和运动控制系统等高速控制应用通常要求 ISR 和 IST 时间小于 10 μs。
大多数真正的 RTOS,例如 Wind River 的 VxWorks、QNX 的 Neutrino 和 Green Hills 的 Integrity,都可以满足这些要求。此外,Linux 和实时调度程序的各种合并,例如 RTLinux 和 RTAI,可以解决高速控制应用程序的挑战。另一方面,从一开始就不是为实时设计的操作系统,例如 Windows XP Embedded 和 Linux 的一般发行版,不满足中断延迟要求。
软件开发工具
接下来,考虑编写特定 RTOS 所需的软件开发环境。正如性能类似于 RTOS 的马力一样,开发环境类似于使它使用起来舒适的悬挂和“骑行”。虽然 RTOS 可能具有所有正确的规范,但开发环境对开发的质量和速度以及项目的整体成功有着巨大的影响。这些功能可以像语法突出显示和函数完成一样简单,也可以像代码生成向导和源代码控制兼容性一样强大。有效的通用功能代码生成工具可以为新手和有经验的开发人员节省数天的开发时间。另一个需要考虑的因素是用于开发环境的附加工具的可用性。
调试
知道系统能够进行高速控制是一回事,而始终如一地实现它又是另一回事。实时软件开发工具的调试功能可能意味着创建成功的控制系统与无休止地寻找难以捉摸的错误之间的区别。单步执行、printf() 和syslog() 方法等标准功能是必需的,但如果没有调试工具,则很难优化实时应用程序。其中包括应用程序分析、内存分析和执行跟踪工具。
应用程序和内存分析器可以深入了解系统上运行的每个任务的处理器和内存使用情况。通过识别哪些任务使用多的 CPU 和内存资源,您可以快速找到需要优化的区域。请记住,RTOS 供应商提供的技术支持水平在开发和调试阶段可能至关重要。
执行跟踪工具通过提供线程执行、中断、抢占和其他事件的可见表示,达到了另一个级别的调试。使用这些工具,您可以发现棘手的调度问题并确定应用程序中导致控制不稳定的时序问题。调试工具的示例包括 Green Hills 的 Integrity OS EventAnalyzer、National Instruments 的 LabVIEW Execution Trace Toolkit、QNX 的 Neutrino Momentics 系统分析器以及 Wind River 的 VxWorks 和 Linux 的 ScopeTools。
算法集成
“高速”的称号不仅意味着快速的控制处理,也意味着先进的控制策略。事实上,控制系统的是处理输入信号以产生适当输出的算法或逻辑。根据应用的不同,控制算法的范围可以从驱动阀门和继电器的简单离散逻辑到确定运动曲线的复杂微分方程。随着算法变得越来越复杂,可能需要访问复杂数学函数,例如快速傅立叶变换 (FFT) 和比例-积分-微分 (PID) 算法。
由于大多数 RTOS 集成开发环境不包含此类库,因此您必须探索多种选择。你可以自己开发算法;然而,这可能需要大量的开发时间,并且需要不易获得的知识。您可以在开源库中找到这些算法,也可以从 IP 供应商处购买。或者,如果您使用具有代码生成功能的建模工具(例如 I-Logix 的 Statemate 或 Dynasim 的 Dymola)创建控制算法,则代码生成可能是一个选项。,您可以考虑使用包含分析功能并可直接针对嵌入式控制器的开发工具,而无需生成代码。
嵌入式硬件
如果不讨论合适的硬件处理目标,那么关于高速控制系统的讨论就不会完整。通常,可用的软件选项由预定的硬件平台控制,或者硬件受限于特定软件工具链的支持。您必须考虑处理器性能、成本和环境规格等重要因素。例如,运行密集控制模型的硬件在环仿真系统需要高性能处理器,通常由多核处理器提供服务。并非所有 RTOS 都对多核处理器提供同等支持,因此支持的深度是您选择过程中的一个重要考虑因素。
在某些情况下,工业机器控制系统或现场控制设备可能需要处理器能够处理 -40° 至 +70°C 或更高的极端温度。当然,电池供电的控制设备需要低功耗处理器。满足恶劣环境和功率限制的处理器的性能本质上低于通用处理器。这意味着 RTOS 的工作能力较弱,从而使性能和占用空间变得更加重要。
控制系统与工厂的连接是 I/O 硬件,它与受控系统的物理信号进行交互。I/O可以包括模拟电压、电流、数字信号、脉宽调制信号、射频信号等的任意组合。寻找广泛支持所需 I/O 类型的 RTOS。无论您是选择单独的 I/O 组件,如 ADC 和 DAC,还是选择具有大量 I/O 通道的多功能 PCI 数据采集板,都要考虑软件开发。与 PCI、PCI Express、CompactPCI、PXI、PXI Express 和 VME 等总线的现成硬件相比,在处理单个组件时期望开发更多低级代码。
现成的设备通常有更别的驱动程序,但这些可能因供应商而异。有些仅提供带有 peek 和 poke 接口的板级支持包 (BSP),而另一些则提供成熟的应用程序编程接口 (API),其中包括直接内存访问 (DMA) 传输等功能。I/O 板在控制系统的关键规格方面也各不相同,例如精度、隔离和与信号调节的连接性。
当控制系统通过 I/O 连接到工厂时,它通过通信协议和图形用户界面与操作员通信。由于以太网无处不在,TCP 通信是重要的协议之一。用于控制软件的 RTOS 必须具有强大的 TCP 堆栈才能与外界连接。
还有许多其他通用嵌入式接口,如 USB、蓝牙、I2C 和 SPI,可用于控制系统,但也有控制系统可能需要的行业特定接口。例如,航空航天市场使用 ARINC 429 和 AFDX 等协议;汽车市场使用 CAN、LIN 和 FlexRay;工业自动化市场使用 DeviceNet、PROFIBUS 和 Modbus。同样,您必须了解适用于您的 RTOS 的可用 BSP 和 API,以及将特定协议集成到您的应用程序中所需的开发量。
避免重新发明轮子
虽然本文研究了如何通过选择 RTOS 和开发工具来开发控制系统以从头开始创建控制软件,但还有一种替代方法。多年来,工业自动化工程师一直在使用现成的可编程逻辑控制器 (PLC) 和模块化 I/O 创建控制系统。从历史上看,PLC 一直局限于主要采用离散逻辑和简单控制算法的低性能控制应用。
然而,近年来,一种称为可编程自动化控制器 (PAC) 的新型嵌入式系统将嵌入式计算的特性与 PLC 的坚固可靠性相结合。从软件的角度来看,PAC 具有具有编程环境的实时平台,可以为更的应用程序冒险进入较低级别的编码。PAC 的单位硬件成本高于准系统嵌入式硬件,但开发成本通常较低,因此上市时间较短。对于大批量,自定义嵌入式路线通常是有效的路线。但是,在实施小批量部署时,请考虑可部署的 PAC 是否是更好的解决方案。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。