Створення S-функцій мовою Fortran
При створенніS-функціїна мовіFortranможуть використовуватися два підходи. Перший похід (перший рівень) передбачає використання лише мовиFortran. Другий підхід (другий рівень) передбачає спільне використання програмних модулів, написаних мовамиFortranтаC. Найкращими можливостями має другий спосіб. Однак перший підхід найбільш простий і дозволяє створитиFortranS-функціюу стислі терміни. У цьому параграфі буде розглянуто саме такий спосіб. Обмеження другого способу, в порівнянні з першим, полягають, в основному, неможливості передати параметриS-функціїчерез вікно діалогу блокуS-function. Це обмеження легко долається передачею параметрів через входи блокуS-function.
СтворенняFortranS-функціїрозглянемо на прикладі двигуна постійного струму незалежного збудження (п. 16.7.6). Як основу використано файл шаблонуsfuntmpl_fortran.f(папка. \simulink\src). У тексті шаблону прийнято такі позначення:
T - Поточний час.
X - вектор безперервного змінного стану системи.
U - векторний вхідний сигнал.
Y – вектор вихідних змінних.
X0 – вектор початкових значень безперервних змінних стану системи.
DX – вектор похідних змінних стану системи.
XNEW - вектор нових значень дискретних змінних стану системи.
Нижче наводиться текстS-функціїмоделіДПТ НВ(файлDPT_Sfunc_1_For.f):
C Файл:DPT_Sfunc_1_For.for
C ПрикладS-функціїмовоюFORTRANдля моделювання двигуна постійного
З струму незалежного збудження
C У прикладівиконується моделювання за допомогою рівнянь простору-
C $Revision: Free
C Відкомпілювати S-функцію можна командою:
Cmex DPT_Sfunc_1_For.f simulink.f
C $Revision: Free
C Функція:SIZES. Встановлює розмірність вектораsize.
CSIZESповертає вектор, який визначає характеристики моделі.
C Вектор містить інформацію про кількість змінних станів та інші параметри,
CSIZE(1) Число безперервних змінних стану
CSIZE(2)Число дискретних змінних стану
CSIZE(3)Число вихідних змінних
CSIZE(4)Число входів
CSIZE(5) Число розривних коренів системи
CSIZE(6) Прапор, що задає можливість передачі вхідних змінних на вихід
C .. Масив аргументів функції
C Число безперервних змінних станів (струм якоря та швидкість
З обертання валу)
Число дискретних змінних стану
C Параметр дорівнює0, оскільки модель безперервна
C Число вихідних змінних (швидкість обертання та момент на валу)
C Число входів. Параметр дорівнює2 + 6(напруга на обмотці якоря і
C момент опору + параметри двигуна).
C Число розривних коренів системи
З Прямий прохід (1- є,0- ні).
C В даному випадку прохід вхідних сигналів на вихід є,
Оскільки параметри двигуна передаються через вхідний порт
C Функція:OUTPUT .Розраховує значення безперервних вихідних змінних.
CT- Поточний час
CX- вектор безперервних змінних стану системи
CU- Вектор вхідних сигналів
CY- Вектор вихідних змінних (значення, що повертаються)
C Оголошення змінних - параметрів двигуна постійного струму
C Розрахунок вихідних змінних:
C Функція:INITCOND. Задає початкові значення змінних станів.
CX0- вектор початкових значень змінних стану системи
C (значення, що повертаються)
C У цьому випадку початкові умови нульові
C Функція:DERIVS. Розраховує значення похідних вектора стану
C Оголошення змінних - параметрів двигуна постійного струму