2015-07-02 1 views
0

У меня есть модель simulink «Mod_Sim» в simulink с входным портом «inp» и выходным портом «out». Я хочу отправить входы этой модели, имитировать ее, а затем взять соответствующие выходы при каждом времени выборки «Ts». Я хочу моделировать эту модель таким образом для шагов времени «N» (в терминах Ts).Как запустить модель Simulink в файле Matlab M таким образом?

Более конкретно, я хочу следующую реализацию:

На данный момент времени шаг «к», я буду иметь вход и (к) (из какого-то другого источника). Затем я хочу применить этот вход к Mod_Sim и получить соответствующий выход y (k) из модели. Я хочу повторить это для N шагов времени.

Как я могу выполнить такую ​​реализацию?

Буду рад за помощь.

ответ

1

Перед началом моделирования вам необходимо, чтобы все входы определялись как функция времени для интересующего периода времени в рабочем пространстве 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), будь то другая часть программного обеспечения или любой другой. Несмотря на это, у вас есть несколько вариантов, как я вижу это:

  1. Напишите S-функции для взаимодействия с другой частью программного обеспечения генерации u(t) так, что он тянет новое значение u на каждом шаге по времени. Это довольно сложно сделать, многие поставщики программного обеспечения предлагают некоторую форму совместного моделирования с Simulink с помощью S-функции (например, SimulationX). См. Также this other question на эту же тему.

  2. Используйте TCP/IP или UDP/IP для обмена данными между Simulink и сторонним программным обеспечением. Инструментальная панель инструментов содержит Send and Receive blocks for TCP/IP and UDP/IP. TCP/IP должен быть более надежным, чем UDP/IP, см. this comparison.

+0

Я знаю эту реализацию, и это не то, что я хочу. Моя реализация будет в сети: t и u будут созданы со временем, и, следовательно, u не может быть определена как функция времени в начале. – user3489173

+0

Ваш вопрос был не ясен (или, может быть, это только я). Во всяком случае, похоже, что вы хотите совместного моделирования.Это действительно очень сложно сделать правильно, вам нужно будет написать S-функцию, которая будет взаимодействовать с другим программным обеспечением или что-то, что генерирует 'u (t)', и я не знаю, с чего начать. Другой вариант, если это возможно, будет отправлять данные через TCP/IP или UDP/IP. Я уточню свой ответ, чтобы отразить это. – am304

+0

То, что я хочу сделать точно, выглядит следующим образом (да, это совместное симуляция). Существует программное обеспечение «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

Смежные вопросы