Системная архитектура для высокоскоростного микроконтроллера - PullRequest
0 голосов
/ 16 марта 2020

Я проектирую контроллер и блок сбора данных для испытательного стенда ракетного двигателя. Эта система должна контролировать количество исполнительных механизмов на испытательном стенде, а также иметь возможность передавать собранные данные обратно на главный компьютер, где команда будет наблюдать в режиме реального времени за данными / с камер.

Общие требования к конструкции :

  • Получение данных от ~ 15 аналоговых датчиков с частотой 1 кГц
  • Управление приводами на испытательном стенде, включая клапаны и выключатели зажигания
  • Передача данных обратно на хост-компьютер в нашем убежище в режиме реального времени
  • Принимать управление от хост-компьютера для таких вещей, как ручное срабатывание клапана, изменение последовательности испытаний, прерывание последовательности и т. д. c.

I Я не совсем уверен, с чего начать при разработке программного обеспечения для этой системы. Я рассматриваю возможность использования процессора STM32 ARM Cortex-M4, работающего на частоте 180 МГц. У меня проблемы с выяснением того, как я должен подходить к проблеме. Я рассмотрел использование системы RTOS, но на основании того, что я видел, они генерируют большие накладные расходы, поскольку вы запускаете их быстрее, так как планировщик должен выполнять каждый такт. Другая идея, о которой я говорю, - это конечный автомат, объединенный с некоторыми основанными на таймере прерываниями для чтения и последующей отправки данных обратно в P C. Будем весьма благодарны за любые советы относительно того, как решить эту проблему, чтобы минимизировать сложность кода. Спасибо.

РЕДАКТИРОВАТЬ: мне сказали разъяснить ряд вещей, касающихся технических характеристик системы.

Мои приводы состоят из:

  • 6 соленоидов (управляется цифровым образом через реле / ​​полевой МОП-транзистор и переключается один раз в секунду) * Двигатели
  • 2 D C (приводимые в действие с ШИМ-выходами в ПИД-регуляторе l oop, должны иметь возможность регулируемого изменения положения)
  • Один воспламенитель, снова управляемый через реле / ​​MOSFET

Мои датчики состоят из:

  • 8 датчиков давления (аналоговые напряжения)
  • 4 термопары (аналоговые напряжения)
  • 2 двигателя (квадратурные датчики)
  • 1 датчик освещенности (аналоговое напряжение)
  • 1 Тензодатчик (аналоговое напряжение)

В идеале все собранные данные (все вышеуказанные датчики), а также некоторые дополнительные данные (временные метки, положения двигателя, положения соленоида) передаются обратно на хост-компьютер в режиме реального времени.

1 Ответ

0 голосов
/ 17 марта 2020

С учетом управления двигателем с помощью ШИМ и ПИД-регулятора необходимо указать желаемое разрешение в виде отметок таймера ШИМ или показаний AD C. Это самая важная часть. Также не повредит, если AD C имеет большее разрешение, чем указанное вами разрешение. Печатная плата должна быть спроектирована соответствующим образом с достаточным разрешением для резисторов и т. Д. c.

. После того, как вы это сделаете, найдите MCU с достаточно точным AD C. Я полагаю, что для большинства приложений достаточно 12-битного разрешения, но я не знаю вашего конкретного случая c.

Далее вам нужно решить, насколько быстрым должен быть PID. Должен ли вывод на ШИМ привести к чтению AD C в следующем цикле, или вы могли бы согласиться на более медленный ответ? Узким местом в реальном времени здесь будут часы преобразования AD C, а не процессор.

Остальная часть системы вообще не выглядит критичной по времени - нужно просто убедиться, что все считывается / устанавливается синхронно , Передача данных на хост / с хоста предпочтительно должна осуществляться по шине CAN, поскольку она имеет жесткие характеристики в реальном времени. Не похоже, что вам нужна большая полоса пропускания.

Я спроектировал системы, очень похожие на это, используя 16-битные микроконтроллеры в чистом виде, работающие на 16 МГц. Скорость обработки на самом деле не большая проблема, но соблюдение сроков в реальном времени. Это означает, что вы можете забыть об использовании Linux игрушек, таких как R asp PI, об этом совершенно не может быть и речи. И ОСРВ, вероятно, излишне, поскольку в основном добавляет дополнительную сложность.

Чистый металлический Cortex M с достаточным разрешением AD C и CAN кажется хорошим выбором. Если вы можете держаться подальше от числа с плавающей запятой, это тоже хорошо - зависит от того, насколько вам нужна сложная математика. Если вам не нужно ничего более продвинутого, чем PID, его можно реализовать с фиксированной точкой. (Или скорее PI, так как это обычно работает лучше всего для систем управления быстрым двигателем.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...