Последовательная связь Simulink и Arduino - PullRequest
0 голосов
/ 10 января 2019

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

Я пишу программу на arduino и хочу получить доступ к функции отправки и получения последовательного монитора на simulink. Я хочу, чтобы они строили графики в реальном времени и запускали алгоритм PID с помощью simulink.

Но по какой-то странной причине значения simulink либо не обновляются (во внешнем режиме), либо не изменяют некоторые нечетные значения (в обычном режиме). Любая помощь.

1 Ответ

0 голосов
/ 05 июля 2019

Если вы осуществляете связь между Arduino и Simulink, могут быть некоторые проблемы в вашем соединении. Я предполагаю, что для связи вы используете блок Serial Send и Serial Receive .

Я сделал полное руководство , как соединить обе платформы на моей странице Github.


По вашему описанию я могу думать об этих проблемах:

Simulink не обновляется?

Если ваш Simulink не обновляется , вероятно, потому, что он ожидает, что Arduino отправит некоторые последовательные данные, но ничего не получает. Возможные причины этой проблемы:

  • Неверная скорость последовательной передачи
  • Неверный тип данных (т. Е. Если вы отправляете Arduino float, вы должны получить single в Simulink.)
  • Неверный размер данных
  • Разное время шага (Не забывайте использовать одинаковое время шага в Simulink и Arduino)

Simulink получает нечетные значения?

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

  • Десинхронизация связи - Попробуйте использовать заголовок и терминатор в блоке последовательного отправления и последовательного получения и не забудьте установить это в своем коде Arduino.
  • Разное время шага - Убедитесь, что оба приложения отправляют и получают с одинаковой скоростью.
  • Проверьте, что вы отправляете - Вы можете проверить, что именно вы отправляете на серийный номер с областью видимости, помните, что в блоке Serial Send входной сигнал должен быть byte. Если вы используете single или double, не забудьте привести его к byte с помощью блока байтов .
...