用于高速微控制器测试台控制器/daq的系统架构



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

总体设计要求如下:

  • 在1KHz下从约15个模拟传感器获取数据
  • 控制试验台上的执行机构,包括阀门和点火开关
  • 实时将数据传输回我们避难所的主机
  • 接受主机对手动阀门执行、测试顺序修改、顺序中止等的控制

我不确定为这个系统布置软件时从哪里开始。我正在考虑使用运行在180 MHz的STM32 ARM Cortex-M4处理器。我很难弄清楚该如何处理这个问题。我曾考虑过使用RTOS系统,但根据我所看到的情况,这些系统会产生巨大的开销,因为调度程序必须运行每一次。我正在讨论的另一个想法是一个状态机,它与一些基于定时器的中断相结合,用于读取数据,然后将数据发送回PC。任何关于如何解决这个问题以最大限度地降低代码复杂性的建议都将不胜感激。谢谢

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

我的执行器包括:

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

我的传感器包括:

  • 8个压力传感器(模拟电压(
  • 4个热电偶(模拟电压(
  • 2个电机编码器(正交编码器(
  • 1个光传感器(模拟电压(
  • 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,因为它通常最适用于快速电机控制系统。(

相关内容

  • 没有找到相关文章

最新更新