Як додати C++ S-функцію до Simulink

У наших попередніх прикладах, таких як Matlab Level 2 S-Function example: Sine wave (continous output), ми показали, як створити просту S-функцію на C++.

Ось як додати C++ S-функцію до Simulink:

Крок 1: Створення файлу вихідного коду S-функції

У каталозі, який ви відкрили в Matlab/Simulink, створіть новий файл з назвою, наприклад, sine_wave_generator.cpp. Див. Matlab Level 2 S-Function example: Sine wave (continous output) для прикладу коду на C++.

Я рекомендую використовувати Visual Studio Code замість Matlab як редактор C++.

Крок 2: Компіляція S-функції

Відкрийте термінал і виконайте

build_sine_wave.sh
mex sine_wave_generator.cpp

Я не рекомендую виконувати це в Matlab, хоча це і можливо. Я рекомендую завжди використовувати системний термінал.

Процес компіляції працює лише якщо останній рядок виводу є MEX completed successfully.

Якщо ви бачите будь-який інший вивід, вам потрібно налагодити проблему.

Поширені проблеми:

Для тестування я рекомендую створити нову модель Simulink замість повторного використання старої.

Крок 4: Додавання блоку S-функції

Спочатку натисніть на діалогове вікно, щоб додати новий блок:

Simulink library browser

Тепер натисніть User-defined functions і виберіть блок S-function. Не вибирайте блок Matlab Level-2 S-function, навіть якщо ви використовуєте S-функцію Level 2. S-функції Level 2 чудово працюють зі звичайним блоком S-function.

Simulink add S function block

Перетягніть цей блок у головну область моделі Simulink, тобто у великий білий порожній простір в іншому вікні, який зазвичай знаходиться одразу за діалоговим вікном library browser:

Simulink drag S function

Крок 5: Налаштування блоку S-функції

Двічі натисніть на блок S-функції, щоб відкрити діалогове вікно налаштування:

Simulink double click S function

У діалоговому вікні відредагуйте Name і введіть назву S-функції.

Назва S-функції — це завжди назва файлу .cpp без розширення .cpp.

У нашому випадку файл C++ має назву sine_wave_generator.cpp, отже назва S-функції — sine_wave_generator.

Натисніть Apply, щоб зберегти зміни та закрити діалогове вікно.

У нашому прикладі ми можемо підключити блок S-функції до блоку Scope, щоб візуалізувати вивід.

Це не є обов’язковим, але це хороший спосіб перевірити, що S-функція працює належним чином.

Щоб додати блок Scope, знову натисніть на значок Library browser на панелі навігації:

Simulink library browser

Натисніть на Sinks і виберіть блок Scope:

Simulink add Scope block

Перетягніть блок Scope у головну область моделі Simulink:

Simulink drag scope

Закрийте діалогове вікно Library browser.

Тепер підключіть вихід блоку S-функції до входу блоку Scope:

Simulink connect S function

Підключені блоки тепер повинні виглядати так:

Simulink connected S function

Натисніть кнопку Run на панелі інструментів Simulink, щоб запустити симуляцію:

Simulink run simulation

Крок 8: Перевірка осцилографа

Якщо все працює належним чином, тепер ви можете двічі натиснути на блок Scope, щоб побачити вивід S-функції:

Simulink double click scope

Це відкриє нове вікно, яке показує вивід осцилографа S-функції:

MATLAB Continous S Function Sine Wave Generator


Дивіться схожі статті за категоріями: Matlab/Simulink