为什么最大扫描/采样率在MATLAB和Simulink桌面实时之间有显著差异?金宝app

7次浏览(过去30天)
我正在使用Simulink桌面实时金宝app(SDRT)从传感器接收模拟输入并发送控制信号。DAQ板为NI PCIe 6343。SDRT文件目前相当简单-只是模拟输入和频率输出块(见所附文件)。然而,当我将采样率设置为1毫秒时,电脑就会崩溃。我使用外部模式,并尝试逐步运行模型(构建—>连接—>运行)。构建和连接步骤成功完成,然后我的电脑在我点击运行几秒钟后崩溃了。如果我设置采样率,例如,2ms,模型运行没有问题。
虽然这可能只是由于PC的局限性,但我记得其他学生已经在同一台PC上运行了MATLAB脚本,完成了类似的工作。下面是脚本的一小段:
完整的脚本显示,他们以0.1ms测量8个模拟输入 采样率 ,这似乎是默认设置(相比之下,SDRT块的默认速率是0.1s)。那么,为什么MATLAB和SDRT的可行采样率会有这么大的差异呢?
我已经探讨了几件事:
  1. 注释掉SDRT模型中的I/O块,然后以1ms采样率运行模型。在多达6个活动区块(未注释)的情况下,作业成功完成。
  2. 检查配置参数,以确保固定步长与采样率一致-我使用相同的MATLAB变量分配步长和采样率。
我要尝试的另一件事是将类似的模拟输入组合到一个块中,如默认SDRT模型示例所示。然而,我不确定这会有多大的改善。我最终的模型将包括至少两倍数量的I/O信号,并包括许多计算。所以,虽然我不一定需要1毫秒的采样率,但当我最终包含这些其他内容时,我希望有很大的回旋余地。
谢谢你!
凯文Hartoyo

接受的答案

Jan Houska
Jan Houska 2021年8月25日
嗨,凯文,
为了实现Simulink桌面实时模型的最大性能,请只使用单金宝app个模拟输入块,并使用通道矢量作为参数。这将产生模拟输入信号值的矢量,然后您可以使用Demux或类似的块将其分割为单个信号。仅使用单个模拟输入块允许使用优化算法一起读取所有模拟输入通道,这可以帮助很大,这取决于所使用的数据采集硬件。具体来说,NI PCIe 63xx系列从这种优化中显著受益,您应该能够以这种方式获得远低于1ms的采样周期。
至于为什么Simul金宝appink桌面实时最大采样率低于数据采集工具箱的采样率,这是因为产品做了非常不同的事情。下载188bet金宝搏数据采集工具箱读取数据并将其存储到缓冲区而不进行任何处理。这允许在电路板上使用硬件缓冲区,它首先被模拟输入值填充,并且仅在数据采集过程结束后传输到主机。这允许以A/D转换器的最大速度获取数据,但无法在读取整个缓冲区之前立即使用任何样本。
与此相反,Simulink Desktop金宝app real允许您在读取每个数据点后立即处理它,这需要立即将其传输到主机。这当然需要一些额外的时间,并降低了可实现的最大采样率,但允许闭环场景,其中读取的每个数据点都可以立即用于计算模拟输出值,从而对下一步读取的输入值产生影响。
祝你好运,简
1评论
Justinus Hartoyo
Justinus Hartoyo 2021年8月26日
非常感谢你的解释!
我已经将模拟输入信号组合成一个AI块,现在模型以1ms的采样率运行。
问候,
凯文Hartoyo

登录评论。

更多答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的