Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Примеры S-функций на основе М-файлов

S-функции многотактовых дискретных и дискретно-непрерывных систем

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

 

Приведем примеры, показывающие, как создать S-функции, описывающие непрерывную, дискретную системы, а также модель, задаваемую алгебраическим уравнением. Другие примеры, входящие в комплект поставки системы Simulink, можно найти в директории MATLAB/toolbox/simulink/simdemos.

 

Пример1: S-функция на основе М-файла для модели, заданной алгебраическим уравнением .

S-функция имеет два входа, один выход и не является моделью в переменных состояния. Поскольку между входом и выходом отсутствуют динамические звенья, то данная S-функция определяет прямую передачу между входом и выходом. Структурная схема системы Simulink, включающая в себя S-функцию, представлена на рисунке 10.

Рисунок 10 – Структурная схема системы Simulink

 

В диалоговом окне блока Block Parameters: S-Function в текстовом поле S-function name содержится имя функции s_xmpl. Код S-функции представлен ниже

 

function[sys,xO,str,ts]=s_xmpl(t, x, u, flag)

 

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=mdl0utputs(t,x,u);

case 4,

sys=mdlGetTimeOfNextVarHit(t,x, u);

case 9,

sys=mdlTerminate(t,x,u);

otherwise, %0шибочный вход.

error(['опущен flag= ',num2str(flag) ]);

end

 

function[sys,xO,str,ts]=mdlInitializeSizes ()

size=simsizes;

sizes.NumContStates= 0;

sizes.NumDiscStates= 0;

sizes.NumOutputs= 1;

sizes.Numlnputs= 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];

 

%***********************************************************

% mdlGetTimeOfNextVarHit

function sys=mdlGetTimeOfNextVarHit(t,x,u)

% Возвращает следующее значение периода квантования для

% данного блока. Результат – абсолютное время.

% Эта функция используется, только когда

% период квантования определен как переменная величина.

 

sampleTime=[];

 

%****************************************************************

% mdlTerminate

function sys = mdlTerminate(t,x,u)

sys=[];

 

 

<== предыдущая лекция | следующая лекция ==>
Использование локальных переменных | Использование команды sim для моделирования
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 672; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.