Перед началом моделирования вам необходимо, чтобы все входы определялись как функция времени для интересующего периода времени в рабочем пространстве MATLAB.
Если у вас есть t
и u
, определенный в рабочем пространстве MATLAB, и что ваш входной порт inp
находится на корневом уровне модели, вам необходимо настроить модель для использования u
и t
для inp
, как описано в Import Data to Root-Level Input Ports.
Как только вы это сделаете, вы можете run the simulation using the sim
command, убедившись, что в параметрах симуляции включен 'SaveOutput'
.
Вы можете повторить упражнение N
раз в цикле for
, например. Реальная ключевая вещь - все ваши входы, определенные в рабочей области, перед началом моделирования.
Редактировать на основе комментариев
Это звучит, как вы хотите сотрудничать симуляцию, хотя вы не говорите, что генерирование u(t)
, будь то другая часть программного обеспечения или любой другой. Несмотря на это, у вас есть несколько вариантов, как я вижу это:
Напишите S-функции для взаимодействия с другой частью программного обеспечения генерации u(t)
так, что он тянет новое значение u
на каждом шаге по времени. Это довольно сложно сделать, многие поставщики программного обеспечения предлагают некоторую форму совместного моделирования с Simulink с помощью S-функции (например, SimulationX). См. Также this other question на эту же тему.
Используйте TCP/IP или UDP/IP для обмена данными между Simulink и сторонним программным обеспечением. Инструментальная панель инструментов содержит Send and Receive blocks for TCP/IP and UDP/IP. TCP/IP должен быть более надежным, чем UDP/IP, см. this comparison.
Я знаю эту реализацию, и это не то, что я хочу. Моя реализация будет в сети: t и u будут созданы со временем, и, следовательно, u не может быть определена как функция времени в начале. – user3489173
Ваш вопрос был не ясен (или, может быть, это только я). Во всяком случае, похоже, что вы хотите совместного моделирования.Это действительно очень сложно сделать правильно, вам нужно будет написать S-функцию, которая будет взаимодействовать с другим программным обеспечением или что-то, что генерирует 'u (t)', и я не знаю, с чего начать. Другой вариант, если это возможно, будет отправлять данные через TCP/IP или UDP/IP. Я уточню свой ответ, чтобы отразить это. – am304
То, что я хочу сделать точно, выглядит следующим образом (да, это совместное симуляция). Существует программное обеспечение «X», для которого можно подключиться к Matlab, но это невозможно для Simulink. В программном обеспечении X есть модель «M». Я разработал контроллер SISO «K» в Simulink для M. В файле связи «Cm» (который связывает X с Matlab), я хочу вызвать K за каждый момент выборки k, чтобы получить u (k), а затем отправить это u (k) до M через Cm, а после моделирования M я получаю выход y (k) из M в X через Cm и, наконец, отправлю y (k) в K. Я с удовольствием узнаю, как это будет выполнено , Спасибо. – user3489173