У меня есть модель Simulink, которую я планирую конвертировать в C-код и использовать в другом месте. Я определил «входные порты», чтобы установить переменные в модели Simulink.
Я пытаюсь найти способ использовать входные переменные как часть блока State Space, но перепробовал все и не уверен, как еще это сделать.
Как уже упоминалось, это будет преобразовано в код C / C ++, поэтому нет никакой возможности использовать matlab в любом случае.
Скажем, я использую матрицу A в параметре блока пространства состояний. Матрица A определена так: A = [Input1 0; Input2 0; 0 Input3]
Я хочу иметь возможность изменять значения входов через код, устанавливая значения Input1 2 3 и т. Д.
В Simulink есть очень четкое различие между параметрами и сигналами. Параметр — это что-то, введенное в диалог, в то время как сигнал — это то, что подается в блок или выходит из него.
Матрицы в блоке State-Space определяются как параметры, и, следовательно, вы никогда не сможете передавать свои сигналы в них.
У вас есть два варианта.
Не используйте блок State-Space. Скорее разработайте модель пространства состояний самостоятельно, используя более фундаментальные блоки (то есть интеграторы, суммы и блоки продуктов). Это возможно для небольших моделей, но не очень рекомендуется.
Обратите внимание, что параметры блока обычно настраиваются. Когда вы генерируете код, один из файлов будет model_name_data.c
и это будет содержать структуру параметров, позволяющую вам изменять параметры.
Обратите внимание, что в любом случае, просто с точки зрения проектирования модели, вы должны убедиться, что изменения в модели имеют смысл (например, не делать циклов и т. Д. Нестабильными).
Вы не можете настроить параметр после генерации кода, потому что он встроен в постоянное значение, это обычно делается, потому что это приводит к самому быстрому коду. Чтобы иметь полный контроль над поведением, вы должны использовать настраиваемые параметры. Существует таблица с различными версиями кода, в зависимости от того, что вы хотите, вы можете выбрать правильный тип параметра.
Другой ленивый способ добиться этого во многих случаях — использовать базовые переменные рабочего пространства, которые очень просты в работе и в большинстве случаев работают нормально.