Когда использовать Simulink во встроенном процессоре - PullRequest
2 голосов
/ 08 июня 2010

Мы разрабатываем контроллер двигателя на dsPIC. Мы намерены использовать Simulink для моделирования алгоритма управления двигателем с помощью Real Time Embedded Workshop для преобразования модели Simulink в код C.
Наша прошивка будет иметь некоторые другие незначительные логические операции, но ее основной функцией является управление двигателем. Мы задаемся вопросом, должны ли мы попытаться выполнить все прошивки в Simulink или разделить логические операции в коде C, в то время как алгоритм управления двигателем остается в Simulink? У кого-нибудь есть рекомендации, по какому пути мы должны идти вниз?

спасибо, Brent

Ответы [ 2 ]

2 голосов
/ 19 июня 2010

К вашему сведению Я только что создал систему, подобную вашей, но с TI DSP.

Я предполагаю, что вы делаете что-то сложное, например, векторный контроль. Если это так, вот что вы делаете: В вашей модели сделайте один блок для каждой задачи / каждого необходимого периода времени. Это может быть просто прерывание ШИМ с управлением в нем. Определите все операции ввода-вывода, которые потребуются каждой задаче - попробуйте сохранить каждый сигнал до 16 битов, которые являются атомарными на DsPIC (это устраняет большинство переходов скорости). Получите simulink, чтобы каждый блок верхнего уровня вызывал функцию. Выполните только управление внутри этого / этих блоков и оставьте всю аппаратную конфигурацию, планирование задач, другую логику для кода C. Simulink может генерировать файлы C и H, которые вы просто включаете в проект вместе с другим кодом. Вы заполните структуру входных данных, вызовете функцию и получите структуру с выходными данными. Держите модель в чистоте от всех аппаратных зависимостей.

Не верьте маркетологам Mathworks. Они хотят, чтобы ты все делал в Симулинке. Не поймите меня неправильно, это отличный инструмент для определенных типов вещей. Но для вещей, которые вы не можете сделать в модели (например, hello world), они предлагают использовать «устаревший инструмент кода», как если бы все, что не является моделью, «как полностью старая школа». Ограничьте вашу модель для управления циклами и потоками сигналов - для чего это хорошо - и все будет хорошо.

1 голос
/ 08 июня 2010

Взаимодействуют ли логические операции с управлением двигателем или они просто не связаны между собой? Степень взаимодействия может помочь принять решение.

Если они не связаны, то для удобства обслуживания было бы лучше не допускать их в модель. Затем вы можете обновить логику, не восстанавливая С для всей модели SimuLink. Вероятность возникновения проблемы регрессии будет меньше.

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

...