实时系统是如何与Windows一起工作的呢?

任何熟悉实时概念的人都知道,如今当今众多IT领域它有多么重要。无论是在机械臂中并行运行的伺服电机,精确的测量应用,还是基于摄像机的辅助驾驶系统——在许多现代电子技术中,硬件和软件部件之间的反应时间都是一个至关重要的因素。以前通过特殊的独立实时操作系统(RTOS)或硬件(DSP和FPGA)实现的功能,现在也可以通过使用普通的Windows PC来实现。当然,现在的Windows它本身并不是一个实时系。因为它会任意的从运行的应用程序中转移资源来执行其他进程和任务,例如:用于维护。那么如何才能将这些对立的东西组合在一起呢?实时系统是如何与Windows一起工作的呢?

实时和Windows——解决方案

Windows PC上实时的唯一要求是具有至少两个内核的处理器。基本操作原则是使Windows仅使用多核处理器的有限数量的CPU内核。在空闲的核心上启动了实时系统,从现在开始,它们的功能就像一个单独的RTOS,而Windows保留了其在剩余的CPU内核上全部的可操作性。这意味着,从现在开始,Windows和实时系统可以在同一台计算机上同时并行运行,彼此不受任何限制。通过使用配置程序msconfig,可以相对简单地执行Windows在有限数量的内核上引导的指令。(可在此处找到相关指南: 设置专用CPU)

How does real time work: Booting on separated cores

由于执行这个过程,实时系统获得了受保护区域。确保Windows进程不会在时序严格的操作上获得更高的优先级,从而防止了Windows对实时性能产生负面影响。最终目标是在Windows PC上实现特定的“硬”实时功能。但是在这种情况下,“硬”到底意味着什么呢?

“软”和“硬”实时有什么区别?

当涉及到实时的问题时,我们需要区分不同的需求以及如何处理执行流程的时间框架。 “软”实时只接近反应时间的平均值,“硬”实时则是需要保证不超过设定的时间。由于这些更高的要求,实现“硬”实时功能变得更加复杂和具有挑战性。然而,这种确定性的时间行为在自动化工业领域是不可缺少的,特别是在测量、测试和控制技术方面。

如何将Windows环境和实时环境组合在一起呢?

实时系统是作为设备驱动程序实现的,并提供了自己的API,允许用户将Windows应用程序的时间关键代码部分导出到一个DLL中。然后将这个DLL加载到RTOS的实时上下文中。为了让Windows和DLL能够在不同的上下文中彼此通信——除了使用管道或套接字之类的间接方法之外——还可以创建一个共享内存区域,它们都可以访问。尽管使用了实时操作系统,但Windows仍然作为编程接口和主机系统来执行。

How does real time work: Exporting time-critical code parts into a DLLHow does real time work: Shared memory area

为什么特别地使用Windows作为RTOS?

相比于纯粹的实时操作系统以及实时硬件的解决方案,在Windows PC上具有明显优势。Windows本身是一个熟悉的用户界面,具有广泛的驱动程序支持,经常更新,以及各种可执行程序。另一方面,纯RTOS是非常专业的,因此在功能范围或可操作性方面通常会受到更多限制。FPGA和DSP等硬件解决方案可根据不同规格进行调整。但是,他们的编程很复杂且耗时。而要在Windows下实现“硬”实时工作,只需要一台双核PC。

结论

由于以下特性,Windows最适合工业应用:

  • 广泛,直观和熟悉的用户界面
  • 访问最新的通信接口
  • 高效的开发者工具
  • 实施和培训成本低
  • 持久由于较高的市场占有率和持续的进一步发展

Windows缺少的实时功能得到了Kithara实时套件等实时系统的补充,因此可以首先实现时序要求严格的应用程序,原因如下:

  • 确定性的行为得益于高频实时计时器
  • 极低的最大响应时间
  • 熟悉的编程语言和工具
  • 高效且易于应用的功能
  • 培训时间短,开发成本低
  • 广泛支持工业协议和标准

Windows和实时并不是矛盾的。这两个系统的无缝交互可以有最佳的解决方案,并通常可以在工业领域的开始使用。

你可以亲自了解如何在Windows下使用实时系统。只需测试具有全功能范围的 Kithara RealTime Suite免费试用版 以及许多可帮助您入门的示例。