
- •Основные определения (проектирование, автоматизированное, неавтоматизированное, автоматическое, система автоматизированного проектирования).
- •2. Аспекты проектирования (функциональный, конструкторский, технологический).
- •Деление процесса проектирования. Стадии проектирования.
- •Понятия этапов проектирования, проектного решения и процедур. Понятие о восходящем и нисходящем проектировании. Маршрут проектирования.
- •Процедуры синтеза и анализа
- •6. Принципы построения маршрутов проектирования.
- •7. Подходы к верификации.
- •8. Типовые проектные процедуры.
- •9. Виды обеспечения сапр.
- •10. Подсистемы сапр. Программно-методические и программно-технические комплексы.
- •11.Этапы создания проекта сапр.
- •13 Методы получения математических моделей
- •14. Пакет Simulink. Назначение
- •15. Параметры моделирования непрерывных и дискретных моделей. Задание параметров моделирования.
- •16 Функции численного интегрирования. Примеры функций и обоснование выбора.
- •17. Жесткая задача. Алгебраические контуры. Удаление алгебраических контуров.
- •18.Рекомендации для многотактовых дискретных систем. Фиксация пересечения нулевого значения.
- •19.Моделирование с помощью команд системы matlab. Команда sim.
- •Использование команды sim для моделирования
- •20.Задание дополнительных параметров моделирования с помощью функции simset, simget. Задание дополнительных параметров моделирования с помощью функции simset
- •Извлечение значений дополнительных параметров моделирования с помощью функции simget
- •21.Обзор s-функции.
- •22.Создание s-функций на основе м-файлов. Пример.
- •23.Использование локальных переменных при программировании в системе Matlab пакете Simulink. Динамическое задание размеров векторов входных и выходных переменных. Использование локальных переменных
- •Динамическое задание размеров векторов входных и выходных переменных
- •24.Обзор процедур ответных вызовов. Процедуры ответных вызовов
- •Обзор процедур ответных вызовов
- •25.Задание и получение параметров процедур ответных вызовов. Задание параметров процедур ответных вызовов
- •26.Команды построения моделей. Команды построения моделей
- •Задание значений параметров
- •28.Понятие модели, задачи идентификации. Понятие о моделировании и моделях
- •29.Назначение пакета System Identification. Назначение пакета System Identification
22.Создание s-функций на основе м-файлов. Пример.
S-функция на основе М-файлов — это М-функция, имеющая список входных и выходных аргументов. Первая строка данного М-файла имеет вид:
function [sys, x0, str, ts] = sfunc__name (t, x, u, flag, p1, p2,...,pn),
где sfunc_name — имя S-функции, которое должно совпадать с именем файла без расширения. Например, если имя файла sfuncl.m, то имя S-функции будет sfuncl. Входные аргументы определены в таблице 10.1, выходные — в таблице 10.3. В комплект поставки системы MATLAB входит шаблон М-файла S-функции, который находится в файле sfuntmpl .m, в директории MATLAB\toolbox\simulink\blocks.
Таблица 10. 1. Входные аргументы S-функции |
|
Аргумент |
Определение |
t |
Текущее значение времени моделирования |
х |
Текущее значение вектора состояния. Если присутствуют п переменных состояния непрерывной части и т переменных состояния дискретной части, то первые п компонентов вектора х — это переменные состояния непрерывной части, а оставшиеся т — это переменные состояния дискретной части |
u |
Текущее значение вектора входа |
flag |
Параметр flag устанавливается системой Simulink каждый раз, когда вызывается S-функция. S-функция проверяет значение параметра flag и производит действия, указанные в таблице 10.2 |
p1,..., рn |
Список необязательных параметров. Число параметров должно быть тем же, что и число параметров в текстовом поле S-function parameters |
Таблица 10.3. Выходные аргументы S-функции |
|
Аргумент |
Описание |
sys |
Многоцелевой выходной аргумент. Определение значений элементов вектора sys зависит от значения параметра flag |
х0 |
Начальное значение вектора состояния S-функции. Вектор х0 включает в себя непрерывные и дискретные компоненты вектора переменных состояния. При формировании вектора х0 требуется, чтобы значение параметра flag было равно 0 |
str |
Выходной аргумент, зарезервированный для дальнейшего использования. Данному параметру следует присвоить значение пустого массива []. Данный аргумент требуется только, когда значение параметра flag равно 0 |
ts |
Матрица квантования. Матрица имеет два столбца. В первом столбце задается значение периода квантования, во втором — значение времен смещения. Матрица должна иметь по крайней мере одну строку. Для задания матрицы необходимо, чтобы значение параметра flag было равно 0 |
Таблица 10.2. Значение параметра flag S-функции |
|
Значение параметра flag |
Операции |
0 |
Формирование структуры sizes и запись значений полей данной структуры в вектор sys. Задание вектора х0 (начальное условие) и матрицы ts (матрица периодов квантования и времен смещений). Определение пустой матрицы str = [ ] |
1 |
Вычисление значений производных переменных состояния непрерывной части. Запись в вектор sys вектора производных непрерывных компонентов вектора состояния S-функции. Вектор sys — единственный выходной аргумент |
2 |
Вычисление переменных состояния дискретной части системы. Запись в вектор sys вектора состояния дискретной части на следующем шаге квантования. При данном значении параметра flags том случае, если в системе имеются различные периоды квантования, производится вычисление всех компонентов вектора состояния дискретной части, в том числе и тех, которые не меняются. Вектор sys — единственный выходной аргумент |
3 |
Вычисление вектора выхода. Запись в вектор sys вектора выхода. Вектор sys — единственный выходной аргумент |
4 |
Вычисление следующего момента времени квантования. Полученное значение записывается в вектор sys. Вектор sys — единственный выходной аргумент |
9 |
Передача управления функции завершения моделирования. При этом выходные аргументы отсутствуют |
S-функция на основе М-файла проверяет значение входного параметра flag и производит операции, описанные в таблице 10.2. Подход, используемый в шаблонах системы MATLAB, состоит в использовании оператора переключения switch-ca-se, который вызывает внутренние функции, основываясь на шести возможных значениях параметра flag. Рассмотрим операции, выполняемые S-функцией для каждого возможного значения параметра flag.
Пример 10.5. S-функция на основе М-файла для модели, заданной алгебраическим уравнением |
Рассмотрим модель, которая описывается алгебраическим уравнением: |
|
S-функция имеет два входа, один выход и не является моделью в переменных состояния. Поскольку между входом и выходом отсутствуют динамические звенья, то данная S-функция определяет прямую передачу между входом и выходом. Структурная схема системы Simulink, включающая в себя S-функцию, представлена на рис. 10.2. |
В диалоговом окне блока Block Parameters: S-Function в текстовом поле S-function name содержится имя функции s_xmpl.
Код S-функции представлен на рис. 10.3.
function [sys, xO, str, ts]=s_xmpl (t, x, u, flag)
% S-функция реализует функцию y=u (1) +u (2) ^2 .
switch flag,
case 0, % Инициализация.
[sys, x0, str, ts] = mdlInitializeSizes;
case 1, % Вычисление производных переменных состояния
% непрерывной части системы.
sys = mdlDerivatives (t, x, u) ;
case 2,
sys = mdlUpdate (t, x, u) ;
case 3, % Вычисление вектора выхода.
sys = mdlOutputs (t, x, u) ;
sys = mdlGetTimeOfNextVarHit (t, x, u) ;
case 9,
sys = mdlTerminate (t, x, u) ;
otherwise, % Ошибочный вход.
error ( [ 'опущен flag = ' , num2str (flag) ] ) ;
end
function [sys, x0, str, ts] = mdlInitializeSizes ( )
size=simsizes ;
sizes .NumContStates= 0;
sizes .NumDiscStates= 0;
sizes .NumOutputs= 1;
sizes .NumInputs= 2;
sizes . DirFeedthrough=l;
sizes . NumSampleTimes=l;
sys = simsizes (sizes) ;
х0 = [ ] ; % Устанавливает начальное значение для всех
str = []; % str всегда пустая матрица
ts = [0 0]; % Инициализирует матрицу периодов квантования.
function sys = mdlDerivatives (t, x, u)
sys = [ ] ; % Пустой, т.к. S-функция не содержит переменных
function sys = mdlUpdate (t, x, u)
sys =[]; % Пустой, т.к. модель не содержит переменных
function sys = mdlOutputs (t, x, u)
sys = [u(l)+u(2) . ^2];
function sys=mdlGetTimeOfNextVarHit (t, x, u)
sampleTime= [ ] ;
function sys = mdlTerminate (t,x, u) % Завершает моделирование.
sys=[] ;