Jump to content

    
Sign in to follow this  
_VM

SIMULINK, S-Function. Как отдать заказчику модель без исходных кодов C/C++ S-функции..

Recommended Posts

MATLAB 2014b, Simulink, Realtime windows target.

 

Наш коллектив разработал для заказчика аппаратуру (часть системы управления).

Заказчик желает использовать ее в своих экспериментах в Simulink.

Для демонстрации работоспособности аппаратуры мы изготовили простую модель симулинк с одной S-функцией.

Основные потроха S-функции написаны на C++ и производят вычисления по сложному алгоритму.

Сама S-функция изготавливается при помощи инструмента S-Function builder.

Обмен данными между аппаратурой и S-функцией реализован при прмощи стандартных компонентов симулинк UDP Packet input и UDP Packet output.

Модель компилируется (компилятор С++ MSVC2013) и корректно запускается.

С точки зрения демонстрации все хорошо, но нам не хочется отдавать исходные коды S-функции.

Если просто удалить файлы исходных кодов, то модель запускается до тех пор, пока в ней что-нибудь не поменять.

После каких-либо изменений матлаб пытается пересобрать S-функцию и натыкается на отсутствие исходных кодов.

Для упрощения жизни заказчика мы не против, что бы он использовал нашу S-функцию в своих экспериментах, пока не выродит свои более продвинутые алгоритмы.

Поэтому хотелось иметь возможность изменять модель-пример, или применять S-функцию в других моделях.

Поиск решения этой казалось бы простой задачи уже на протяжении нескольких дней не дает результатов.

Прошу помощи.

Share this post


Link to post
Share on other sites

Есть несколько вариантов, как это сделать.

 

Один из вариантов - скомпилировать ваш C++ код отдельно в виде библиотеки (dll), а затем вызывать библиотечные функции из S-функции.

О том, как вызывать функции из разделяемой библиотеки в Simulink, я написал здесь: http://www.mathworks.com/matlabcentral/fil...ink_shrlib.html

 

S-Function Builder это не лучший подход в данном случае, когда нужно передавать S-функцию заказчику. Я бы рекомендовал Legacy Code Tool или блок MATLAB System (больше информации по ссылке выше).

 

===

Центр компетенций MathWorks в России

www.MATLAB.ru

Share this post


Link to post
Share on other sites

А если S- функцию закинуть в reference subsystem, матлаб ее тоже будет перекомпилировать каждый раз? Имхо - нет.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this