Использование моделей Simulink в СИ

Обсуждение вопросов, связанных с Simulink

Модератор: Admin

EVP
Пользователь
Сообщения: 12
Зарегистрирован: Чт окт 20, 2005 8:42 pm

Использование моделей Simulink в СИ

Сообщение EVP » Чт авг 31, 2006 11:34 am

Доброго времени суток!

Проконсультируйте, пожалуйста!

Есть модель в Simulink (MATLAB 6.5).
Получаем из нее dll и exe файлы.

Как использовать полученную dll в программе на СИ?
С уважением, Евгений.

EVP
Пользователь
Сообщения: 12
Зарегистрирован: Чт окт 20, 2005 8:42 pm

Сообщение EVP » Вс сен 03, 2006 11:05 pm

К вышесказанному.

Вставлять программы на СИ в Simulink научился.
В FAQ и Интернете есть описание, как можно использовать математические библиотеки MATLAB в других программных средах. Кроме того, m-файл можно скомпилировать в DLL и использовать.
Возможно надо создать m-файл из которого запускать модель.
Тогда как создать интерфейс обмена входными и выходными величинами? В команде sim, simset вроде этого нет.
С уважением, Евгений.

chernykh
Эксперт
Сообщения: 4526
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение chernykh » Чт сен 14, 2006 1:15 pm

"...Как использовать полученную dll в программе на СИ?..."
Скорее всего использовать не удастся. Поскольку модель не содержит "механизма" решения, т.е. Вам придется написать на Си сам Simulink.
Можно в RealTime Workshop создать *.exe и осуществлять обмен с программой через файлы, но в этом случае много ограничений. В форуме это обсуждалось неоднократно.

"...Возможно надо создать m-файл из которого запускать модель. ..."
Это можно сделать легко: команда sim, но откомпилировать файл вряд ли удастся...

Черных И.В.

EVP
Пользователь
Сообщения: 12
Зарегистрирован: Чт окт 20, 2005 8:42 pm

Сообщение EVP » Чт сен 14, 2006 9:16 pm

Спасибо за консультацию
С уважением, Евгений.

Al_F
Пользователь
Сообщения: 217
Зарегистрирован: Вт июн 21, 2005 8:58 pm

Сообщение Al_F » Пт сен 15, 2006 3:54 pm

С посмощью Real-Time Workshop и компилятора Си можно получить из модели Simulink загрузочный модуль, который запускается как процесс Windows и может выполняться или автономно и писать результаты на диск или быть связаным с моделью в Simulink и выводить результаты в Scopeы.

Примеры есть в доках по Real-Time Workshop.
Следуя инструкциям несложно получить из модели Simulink exe-файл, который выполняет алгоритм, соответствующий вашей модели. Но при этом в вашей программе не будет схемы модели как в Симулинке.
Ограничение модель - дискретная с постоянным шагом.

Для этого Simulink переводится внешнй режим (External Mode Target Program) и модель компилируется с выбором целевой файла Real-Time Workshop grt.tlc.

Чтобы запустить загрузочным модуль ( run the target program), Вы должны открыть в Windows окно командной строки сеанса DOS .
Наберем в командной строке сеанса DOS или в командной строке Windows Commander следующую комаду запуска exe файла загрузочного модуля с необходимыми ключевыми параметрами:

ext_example -tf inf –w

и завершим ввод этой команды, нажатием на клавиатуре клавиши <Enter>.
Загрузочный модуль будет запущен, но он будет находиться в состоянии ожидания, поэтому в командном окне DOS нет никаких сооющений.
Ключ -tf заменяет время моделирования, заданное в модели Simulink. Значение этого ключевого параметра, равное inf , указывает, что программа модели будет выполняться бесконечно, или до тех пор, пока программа не получит сообщение об останове из Панели управления. Ключ -w инструктирует загрузочный модуль, что он должен после запуска находиться в состоянии ожидания (Wait), пока не получит сообщения Start от модели (например с Панели управления) Этот ключ нужен,если Вы хотите изменить параметры модели Simulink перед тем как начнется выполняться код загрузочного модуля.


В процессе работы Real-Time Workshop получаюется код на Си, который при желании вы можете использовать с своей программе.Но как конкретно это сделать я не зная, поскольку не настолько владею Си.

Для 7 версии ML RTW- это единственный способ получать нормальный код на Си.

artterm
Пользователь
Сообщения: 46
Зарегистрирован: Ср июл 05, 2006 4:59 pm
Откуда: Москва

Сообщение artterm » Вт авг 11, 2009 4:13 pm

Al_F писал(а):С посмощью Real-Time Workshop и компилятора Си можно получить из модели Simulink загрузочный модуль, который запускается как процесс Windows и может выполняться или автономно и писать результаты на диск или ...


Уважаемые! Подскажите, пожалуйста, как сие осуществить?
Как сделать exe-файл, который работает самостоятельно (без симулинка и external mode) и в реальном времени?
И как сделать, чтобы после запуска этот файл сам читал/писал данные, скажем, каждую секунду, из/в файл на винчестере?
Сколько ни пытаюсь разбираться с S-функциями, ничего путнего не получается :(

ps. help'ы по Real-Time Workshop, Real-Time Windows Target уже третью неделю изучаю, так что просьба туда не посылать. ну или хотя бы указать конкретную страницу :)

chernykh
Эксперт
Сообщения: 4526
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение chernykh » Пт авг 14, 2009 7:16 am

Tools->Real Time Workshop->Build model

Блок "To File".

S-функции тут ни при чем.
Черных И.В.
Уральский федеральный университет им. Б. Н. Ельцина
Приглашаю к сотрудничеству: http://urfu.ru/ru/science/stimul-pablik
Связь через ЛС.

artterm
Пользователь
Сообщения: 46
Зарегистрирован: Ср июл 05, 2006 4:59 pm
Откуда: Москва

Сообщение artterm » Пт авг 14, 2009 9:26 am

chernykh писал(а):Tools->Real Time Workshop->Build model

Блок "To File".

S-функции тут ни при чем.


Вопроса два:

1. Какой выбирать System target file и какие выставлять настройки, чтобы получился exe-файл реального времени, т.е. чтобы модельное время совпадало с системым?

2. Про S-функции написал, потому что предполагаю использовать txt-файл, т.к. это удобнее для программы, которая складывает в этот файл данные. Кроме того, блок "To File" не подходит, т.к. он считывает данные перед началом моделирования/запуском модели. Сие также не подходит, т.к. хочу, чтобы модель в реальном времени получала свежие данные.

chernykh
Эксперт
Сообщения: 4526
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение chernykh » Пт авг 14, 2009 12:55 pm

Кроме того, блок "To File" не подходит, т.к. он считывает данные перед началом моделирования/запуском модели.

"To File" не считывает, а записывает данные на диск.
Черных И.В.
Уральский федеральный университет им. Б. Н. Ельцина
Приглашаю к сотрудничеству: http://urfu.ru/ru/science/stimul-pablik
Связь через ЛС.

artterm
Пользователь
Сообщения: 46
Зарегистрирован: Ср июл 05, 2006 4:59 pm
Откуда: Москва

Сообщение artterm » Пт авг 14, 2009 1:10 pm

Пардон. Да, конечно же, "To File" пишет...
Но как писал выше, интересует и чтение, и запись данных в/из файла. Аналог блока "To File" для чтения - блок "From File". Потому и опечатался. Но это не отменяет того, что один из них срабатывает перед запуском модели, а другой - по завершении моделирования.