1

我认为我的问题很不寻常,但我想在 MATLAB Simulink 中进行实时定位,但我不想使用 XPC 目标。我只希望程序(simulink)在运行时没有中断,以便拥有一个实时的无中断控制系统。并且按照这个顺序,我可以在没有目标系统的情况下使用我的控制模块。首先,请忽略我的弱英文。我有一些问题: 1.我们可以强制一个核心只被 simulink 使用而没有别的吗?2. 中断通常需要多少时间(以及最多多少时间)?3. simulink 有没有其他方法可以使用?

谢谢你

4

3 回答 3

1

一个。如果您有一个多核平台:远离core 0. Windows 将某些任务专门分配给core 0. 请参阅SetThreadAffinityMask 函数以获取如何在特定内核上运行线程的信息。

湾。可能提高线程/进程的优先级。有关设置优先级和调度优先级的详细信息,请参阅SetThreadPriority 函数SetPriorityClass 函数以获取有关优先级范围的详细信息。

具有线程优先级 THREAD_PRIORITY_TIME_CRITICAL 的优先级类 REALTIME_PRIORITY_CLASS 将在准备好运行时以最高优先级运行您的线程。请注意,这样的优先级设置将不允许任何其他进程/线程在您的线程运行时获得该内核上的 CPU。

于 2013-09-02T12:17:25.870 回答
1

嗯,Simulink 本质上是一个单线程应用程序。在 Rapid Accelerator 模式下运行时,您可以通过一些方式使用第二个内核(请参阅文档),但总的来说,一切都在一个内核上运行。我猜它在未来可能会发生变化,因为很多人希望将单个大型模型的执行拆分到多个内核上,但据我所知,目前这是不可能的。

然而,Simulink 不是实时应用程序,因为它运行在 Windows 或其他非实时操作系统上。为什么不想使用 xPC Target?当您正在处理实时目标时,这将是最佳选择。如果您可以访问实时目标硬件,其他选项将是使用实时 Windows 目标、SIL 甚至 PIL。查看示例软件和处理器在环(SIL 和 PIL)仿真。我认为您可以将代码生成过程配置为仅在一个内核上执行,但最好询问 MathWorks 以确定。

于 2013-09-02T13:05:20.787 回答
0

使用 imageCFG 您可以预设程序的亲和性。它修改 exe 文件以在所需的核心上运行。 http://www2.robpol86.com/guides/ImageCFG/

于 2014-01-23T02:37:29.007 回答