Мне нужно реализовать совместное моделирование с помощью Simulink и внешнего приложения (LS-DYNA). Основное моделирование выполняется в Simulink, где я хочу реализовать функциональный блок следующим образом:
Взаимодействие осуществляется с помощью cmd окон, поэтому блок Simulink должен делать следующее:
function [ x,y ] = ExternalSimlation( u,v )
% open the windows cmd and run the external simulation by passing u and v
[status,cmdout] = system( 'command for executing the external simulation -u -v');
function [ x,y ] = readcmd( cmdout )
%algorithm to evaluate the cmd output
end
[x,y] = readcmd(cmdout);
end
Точный код здесь НЕ должен иметь значения. Мой вопрос: как я могу реализовать интерфейс в модели simulink? Могу ли я просто использовать один из пользовательских функциональных блоков, использовать мой код выше, и он будет работать? Но какой именно, разницы не вижу.
ИЛИ, моя другая идея состояла в том, чтобы построить что-то вроде следующего:
А затем используйте цикл while следующим образом:
while ... do
[u,v] = sim('model', 'x',x,'y', y, 'some option just to run a single step');
[x,y] = ExternalSimlation( u,v )
[u,v] = sim('model' .... next step ...)
для пошагового выполнения моделирования Simulink. Как я могу это понять? (Остальная часть моделирования содержит сложные алгоритмы управления, производные и интеграции)
У меня нет опыта написания пакетных файлов, но мне это тоже кажется возможным.
Если вам интересно, почему я не просто тестирую вещи, это потому, что у меня нет доступного внешнего приложения (я просто знаю, как работает ввод и вывод), и я не хочу тратить время на кодирование замещающего приложения. для проверки, если это вообще невозможно.
Любые подсказки и опыт в связанных симуляциях с simulink высоко ценятся! Благодарю вас!