Simulink - программно определяющий внешние входы - PullRequest
2 голосов
/ 22 декабря 2011

Я хотел бы настроить некоторые параметры Simulink программно, а именно указать внешние входы и начальное состояние. Справочный документ Mathworks по Импорт / экспорт данных показывает, как это сделать как визуально, так и программно. Видимо для внешних входов мне нужно указать LoadExternalInputs до 'on'; Я хотел бы переопределить внешний вход по умолчанию через ExternalInput на [myTimeVar, myInputVar], как описано в этой ссылке.

Попытка выполнить команду

sim('mySim', 'LoadExternalInputs', 'on', 'ExternalInput', [myTimeVar, myInputVar]);

выдает следующее сообщение об ошибке:

Недопустимая настройка в блок-диаграмме «mySim» для параметра «ExternalInput»

Если я не должен указывать свой внешний вход в вызове sim(), где я должен это делать? Я не совсем понимаю, как указать свои входы и состояния.

Ответы [ 3 ]

5 голосов
/ 22 декабря 2011

Параметр ExternalInput должен быть строкой, попробуйте это:

sim('mySim', 'LoadExternalInputs', 'on', 'ExternalInput', '[myTimeVar, myInputVar]');
2 голосов
/ 04 сентября 2014

Как отмечает @MikeT, команда sim работает в режиме имя-значение параметра, поэтому как имя, так и значение параметра должны быть строками.Команда должна быть:

sim('mySim','LoadExternalInput', 'on', 'ExternalInput', [myTimeVar, myInputVar]);

Я считаю, что параметр 'LoadExternalInput' необязателен, но в любом случае это 'LoadExternalInput', а не 'LoadExternalInputs'.Я проверил это с помощью get_param('modelName','ObjectParameters')

Некоторые важные замечания:

Замечание №1:

При использовании sim Simulink автоматически переключает рабочее пространство на модель, поэтому одноможет выдавать ошибки, если sim выполняется внутри функции MATLAB или unitTest.

Замечание # 2

В паре 'ExternalInput','Inputs', 'Inputs' должен содержать объединение всех столбцов для всех столбцов.входы векторов столбцов, начиная с вектора времени: '[myTimeVar, myInputVar1, myInputVar2, ..., myInputVarN]', все они - векторы столбцов.

0 голосов
/ 22 декабря 2011

help sim в MATLAB показывает мне другой формат команды, чем тот, который вы используете:

[t,x,y] = sim(model,timespan,options,ut);

Я думаю, может быть, это то, что вы хотите?

sim('mySim', myTimeSpan, [], [myTimeVar, myInputVar]);

(где myTimeSpan - временной интервал для симуляции)

...