Функция как интерфейс взаимодействия моделей

Обсуждение вопросов связанных с компиляцией, созданием GUI приложений.

Модератор: Admin

Ruslanochka
Пользователь
Сообщения: 3
Зарегистрирован: Пн май 27, 2019 10:11 am

Функция как интерфейс взаимодействия моделей

Сообщение Ruslanochka » Пн май 27, 2019 10:54 am

Добрый день!
Подскажите, пожалуйста, есть ли возможность в MATLAB решить следующую задачу:
мне нужно перенести C-код в MATLAB, но есть нюанс - нужно реализовать обмен данными между моделями и остальным кодом проекта (при генерации С-кода из моделей) с помощью вызова функций (без использования глобальных переменных).

Что попробовал, но не сработало:
1. Использование Simulink Function и Function Caller. Работает в пределах одной модели (симуляция проходит, код генерится для функций). Но если начинать создавать модель, состоящей из других моделей, связка Simulink Function - Function Caller, находящихся в разных моделях, дает ошибку симуляции (Function Caller не может найти определение функции в другой модели).
2. Создание обвеса для симуляции, чтобы выводить/считывать данные через workspace. Обмен данными между моделями происходит через workspace. Но в этом случае для обратного распространения данных (возвращаемые данные вызываемой функции) приходится проводить симуляцию каждого сэмпла по нескольку раз. Плюс невозможность "вызвать" одну и ту же функцию из разных моделей в одно и то же время.
3. Создание обвеса для симуляции, чтобы выводить/считывать данные через input/output. В этом случае при симуляции приходит ошибка "такой-то блок вовлечен в цикл" (Т.е. одна модель, вызывая функцию, передает данные в другую, которая определяет эту функцию, выполняет ее и, возвращая результат, передает данные обратно в первую модель). Плюс невозможность "вызвать" одну и ту же функцию из разных моделей в одно и то же время.

Вопрос заключается в следующем:
Есть ли в MATLAB-Simulink возможность для кодгенерации реализовать обмен данными между моделями не через глобальные переменные, а через функции, а после этого с успехом просимулировать взаимодействие этих моделей?

Jey
Пользователь
Сообщения: 2686
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Re: Функция как интерфейс взаимодействия моделей

Сообщение Jey » Вт май 28, 2019 1:48 pm

Не совсем понял начальные условия:
1. Есть 2 разные модели. Они хранятся в разных файлах?
2. Можно ли одну модель сделать подсистемой другой модели?
3. Распишите, как модели должны взаимодействовать? Сначала запускаем первую модель, что-то получаем, подставляем полученные данные во вторую модель, запускаем вторую модель, получаем данные, эти данные подставляем в первую модель и т.д.? Как эти процессы должны соотноситься со временем моделирования?
Помощь в Матлабе / Matlab, Qt за деньги.
Помощь в html, css, jquery, MVC за деньги.
Помощь в C# / C sharp / Си шарп за деньги.
Вконтакте: https://vk.com/id122995106
или Личное сообщение на форуме.
http://ПунктыПроката.рф

Ruslanochka
Пользователь
Сообщения: 3
Зарегистрирован: Пн май 27, 2019 10:11 am

Re: Функция как интерфейс взаимодействия моделей

Сообщение Ruslanochka » Вт май 28, 2019 2:36 pm

1. Модели хранятся в одной папке, но представляют собой 2 разных файла с расширением .slx.
2. Нет, модели находятся на одном уровне иерархии.
3. Взаимодействие следующее: запускается одна модель и в процессе своей работы вызывает функцию, определенную во второй модели (которая, например, возвращает текущее состояние второй модели по каким-либо критериям, заданным в аргументах функции); затем запускается вторая модель и в процессе своей работы вызывает функцию, определенную в первой (например, установление какого-нибудь запроса с возвращением результата).

Jey
Пользователь
Сообщения: 2686
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Re: Функция как интерфейс взаимодействия моделей

Сообщение Jey » Ср май 29, 2019 8:53 am

Как насчет set_param и get_param?
Также обратите внимание на возможность использования в этих функциях SimulationCommand, который позволяет через код запускать/ставить на паузу/останавливать моделирование.
Помощь в Матлабе / Matlab, Qt за деньги.
Помощь в html, css, jquery, MVC за деньги.
Помощь в C# / C sharp / Си шарп за деньги.
Вконтакте: https://vk.com/id122995106
или Личное сообщение на форуме.
http://ПунктыПроката.рф

Ruslanochka
Пользователь
Сообщения: 3
Зарегистрирован: Пн май 27, 2019 10:11 am

Re: Функция как интерфейс взаимодействия моделей

Сообщение Ruslanochka » Чт май 30, 2019 3:02 pm

Благодарю за наводку!
Попробую сделать, как Вы сказали.