【问题标题】:System architecture to use for high speed micro controller test stand controller/daq用于高速微控制器测试台控制器/数据采集的系统架构
【发布时间】:2020-03-16 03:30:20
【问题描述】:

我正在为火箭发动机试验台设计控制器和数据采集单元。该系统需要控制测试台上的多个执行器,并且还能够将收集到的数据传输回主机,团队将在主机上安全地观看实时数据/摄像头馈送。

总体设计要求如下:

  • 以 1KHz 从约 15 个模拟传感器采集数据
  • 控制测试台上的执行器,包括阀门和点火开关
  • 将数据实时传回我们避难所的主机
  • 接受来自主机的控制,例如手动阀门驱动、测试序列修改、序列中止等。

在为这个系统设计软件时,我不确定从哪里开始。我正在考虑使用运行频率为 180 MHz 的 STM32 ARM Cortex-M4 处理器。我无法弄清楚我应该如何解决这个问题。我曾考虑使用 RTOS 系统,但根据我所看到的,当您运行它们时它们会产生大量开销,因为调度程序必须运行每个滴答声。我反复考虑的另一个想法是状态机与一些基于计时器的中断相结合,用于读取然后将数据发送回 PC。任何有关如何解决此问题以最小化代码复杂性的建议将不胜感激。谢谢。

编辑: 我被告知要澄清一些有关系统技术规格的事情。

我的执行器包括:

  • 6 个螺线管(通过继电器/MOSFET 进行数字控制,每秒切换一次)
  • 2 个直流电机(由 PID 回路中的 PWM 输出驱动,需要能够可控地斜坡位置)
  • 一个点火器,再次通过继电器/MOSFET 控制

我的传感器包括:

  • 8 个压力传感器(模拟电压)
  • 4 个热电偶(模拟电压)
  • 2 个电机编码器(正交编码器)
  • 1 个光传感器(模拟电压)
  • 1 个称重传感器(模拟电压)

理想情况下,所有收集到的数据(所有上述传感器)加上一些附加数据(时间戳、电机设置位置、螺线管位置)都会实时流回主机。

【问题讨论】:

  • 您似乎会从完全同步的所有事情中受益。读取的是纯模拟电压还是需要用一些数字串行总线戳传感器?这对 CPU 的密集程度在很大程度上取决于您将如何控制阀门。它们是成比例的并且需要PWM吗?你需要用PID等来调节它们吗?您需要向主机传输多少数据?如您所知,没有足够的细节来回答这个问题。 “关于如何解决这个问题以最小化代码复杂性的任何建议”:是的,首先编写技术规范。
  • RTOS 应该更慢,事件驱动或严格定时的主循环方法也可以工作。但我认为这里的关键不是这么快就确定一个目标单片机/品牌。是否不允许过度杀伤,例如 pi-zero?除非这是一些大规模生产的产品,否则成本相当便宜。 180mhz 只是系统时钟 MAX,外围设备可能只是其中的一小部分,而且你有很多,如果有一个主机驱动它,你可以每个传感器有一个 mcu。首先进行系统工程,通信/I/O 是解决方案成功的重要因素。
  • 国家仪器,如果这仍然是他们的名字,可能有一个产品你可以插入一个可以轻松处理你需要的数据收集的个人电脑,但毫无疑问,它的成本会超过一个单片机。我相信还有其他品牌提供全系列的现成测试设备。
  • @Lundin 我已经添加了你提到的信息,如果你还有什么想知道的,请告诉我。
  • @old_timer 预算是一个相当大的问题,我认为我们买不起 NI 板,我会调查 PI 零。之所以考虑这个特定的 MCU,是因为我已经有一个开发板,并且我已经使用相同的 MCU 为另一个系统设计了一个类似的 DAQ 系统(虽然不需要执行器或数据流)

标签: arm embedded real-time data-acquisition


【解决方案1】:

鉴于使用 PWM 和 PID 进行电机控制,您需要在 PWM 定时器滴答声或 ADC 读取中指定所需的分辨率。这是最关键的部分。如果 ADC 的分辨率高于您指定的分辨率,也没有什么坏处。 PCB 必须进行相应的设计,在电阻等方面具有足够的分辨率。

完成此操作后,找到具有足够精确 ADC 的 MCU。我想 12 位分辨率对于大多数应用程序来说已经足够了,但我不知道你的具体情况。

接下来,您需要确定 PID 的速度。 PWM 上的输出是否会导致在下一个周期读取 ADC,或者您是否可以满足于较慢的响应?这里的实时瓶颈将是 ADC 转换时钟,而不是 CPU。

系统的其余部分似乎根本不是时间紧迫的 - 您只需确保同步读取/设置所有内容。与主机之间的数据传输最好通过 CAN 完成,因为它具有硬实时特性。看来您不需要很大的带宽。

我使用运行在 16MHz 上的裸机 16 位 MCU 设计了与此非常相似的系统。处理速度确实不是一个大问题,但满足实时截止日期才是。这意味着您可以忘记使用 Rasp PI 之类的 Linux 玩具,这完全不可能。而且 RTOS 很可能是矫枉过正,因为它主要增加了额外的复杂性。

具有足够 ADC 分辨率和 CAN 的裸机 Cortex M 似乎是一个不错的选择。如果您可以远离浮点,那也很好 - 取决于您需要的高级数学。如果你不需要比 PID 更高级的东西,它可以用定点实现就好了。 (或者更确切地说是 PI,因为这通常最适合快速电机控制系统。)

【讨论】:

    猜你喜欢
    • 2010-10-07
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    相关资源
    最近更新 更多