Simulink — программная спецификация внешних входов

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

Пытаюсь запустить команду

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

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

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

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


person Dang Khoa    schedule 21.12.2011    source источник


Ответы (3)


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

sim('mySim', 'LoadExternalInputs', 'on', 'ExternalInput', '[myTimeVar, myInputVar]');
person MikeT    schedule 22.12.2011
comment
Спасибо большое! Документация противоречива, похоже, что ExternalInput по умолчанию имеет значение [t,u], а не '[t,u]'. - person Dang Khoa; 22.12.2011

Как указал @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]', все они являются векторами-столбцами.

person josemrivera    schedule 04.09.2014
comment
Параметр 'LoadExternalInput' обязателен. Я долго искал этот параметр на странице mathworks, пока не нашел его здесь. - person Reza; 23.09.2016

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

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

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

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

(где myTimeSpan — промежуток времени для моделирования)

person Kevin K    schedule 21.12.2011
comment
Это устаревший вызов, и я также не могу указать с ним начальное состояние. Хотя я изучал это, но он не так надежен, как новый синтаксис. - person Dang Khoa; 22.12.2011
comment
Ах, извините, я использовал более старую версию и не знал о новом синтаксисе. - person Kevin K; 22.12.2011