Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Модель дискретной системы с переменным шагом расчета

Введение | Этапы моделирования | Callback-методы S-функции | Создание S-функций на языке MATLAB | Простейшая S-функция | Модель непрерывной системы | Модель дискретнойной системы | Пример S-функции для ДПТ НВ | Создание S-функций на языке C с помощью S-Function Builder | Your machine has a Lcc C compiler located at |


Читайте также:
  1. A)используется для вызова всех функций системы
  2. D13.0 Доброкачественные новообразования других и неточно обозначенных отделов пищеварительной системы
  3. G 09 Последствия воспалительных болезней центральной нервной системы
  4. I. Общая характеристика и современное состояние уголовно-исполнительной системы (по состоянию на 2012 год).
  5. I.4. Состояния системы. Уравнения состояния системы.
  6. II. Административно-командная патерналистская модель СП
  7. II. ПОРЯДОК ПРИМЕНЕНИЯ НАКОПИТЕЛЬНОЙ БАЛЛЬНО-РЕЙТИНГОВОЙ СИСТЕМЫ В УЧЕБНОМ ПРОЦЕССЕ

Модель дискретной системы с переменным шагом расчета дана в файле vsfunc.m. Рассматриваемая S-функция моделирует устройство задержки сигнала. Время задержки определяется величиной входного сигнала. Для вычисления момента времени срабатывания блока используется callback-метод mdlGetTimeOfNextVarHit, вызываемый при значении переменой flag = 4. Поскольку время срабатывания блока зависит от входного сигнала, то параметр DirFeedthrough должен иметь значение равное 1. В целом, любой блок, в котором время срабатывания вычисляется по величине входного сигнала, должен иметь DirFeedthrough = 1.

Ниже приведен текст этой S-функции.

S-функция dsfunc:

function [sys,x0,str,ts] = vsfunc(t,x,u,flag)

% VSFUNC Пример S-функции. S-функциЯ моделирует систему, с переменным шагом

% расчета (устройство задержки сигнала).

% ВремЯ задержки определЯетсЯ величиной сигнала. поступающего на второй вход:

%

% dt = u(2)

% y(t+dt) = u(t)

%

% Смотри также SFUNTMPL, CSFUNC, DSFUNC.

 

% Copyright 1990-2001 The MathWorks, Inc.

% $Revision: 1.9 $

% Авторский перевод комментариев: Черных И.В.

%

%

switch flag, % В зависимости от значениЯ переменной flag происходит

% вызов того или иного метода:

 

 

%===============%

% ИнициализациЯ %

%===============%

case 0,

[sys,x0,str,ts]=mdlInitializeSizes;

 

%============================================================%

% Расчет значений вектора состоЯний дискретной части системы %

%============================================================%

case 2,

sys=mdlUpdate(t,x,u);

 

%===========================================%

% Расчет значений вектора выходных сигналов %

%===========================================%

case 3,

sys=mdlOutputs(t,x,u);

 

%==================================================================%

% Расчет значениЯ времени длЯ следующей расчетной точки дискретной %

% части системы %

%==================================================================%

case 4,

sys=mdlGetTimeOfNextVarHit(t,x,u);

 

%====================%

% Завершение расчета %

%====================%

case 9,

sys=mdlTerminate(t,x,u);

 

%=========================================%

% Неиcпользуемые значениЯ переменной flag %

%=========================================%

 

% В примере нет непрерывных переменных состоЯниЯ,

% поэтому значение переменной flag = 1 не используетсЯ.

% Результатом S-функции в этом случае ЯвлЯетсЯ пустаЯ матрица.

case 1,

sys = [];

 

%======================================%

% Неизвестное значение переменной flag %

%======================================%

otherwise

error(['Unhandled flag = ',num2str(flag)]);

 

end

 

% Окончание vsfunc

 

%

%===============================================================%

% mdlInitializeSizes %

% ФункциЯ инициализации %

% Расчет начальных условий, значений вектора шагов модельного %

% времени, размерности матриц %

%===============================================================%

%

function [sys,x0,str,ts]=mdlInitializeSizes

%

sizes = simsizes;

 

sizes.NumContStates = 0; % Число непрерывных переменных состоЯниЯ.

sizes.NumDiscStates = 1; % Число дискретных переменных состоЯниЯ.

sizes.NumOutputs = 1; % Число выходных переменных (размерность выходного

% вектора).

sizes.NumInputs = 2; % Число входных переменных (размерность входного

% вектора).

sizes.DirFeedthrough = 1; % ПрЯмой проход. Входной сигал используетсЯ

% в методе mdlGetTimeOfNextVarHit.

sizes.NumSampleTimes = 1; % Размерность вектора шагов модельного времени.

 

sys = simsizes(sizes);

 

x0 = [0]; % Задание вектора начальных значений переменных

% состоЯниЯ.

% Начальные условиЯ нулевые.

str = []; % Параметр заразервирован длЯ будущего

% использованиЯ.

 

ts = [-2 0]; % Переменный шаг модельного времени длЯ дискретной

% части системы. При вызове S-функции со значением

% переменной flag = 4 выполнЯетсЯ расчет следующей

% точки по времени.

 

% Окончание mdlInitializeSizes

 

%

%=========================================================================%

% mdlUpdate %

% ФункциЯ длЯ расчета значений вектора состоЯниЯ дискретной части системы %

%=========================================================================%

%

function sys=mdlUpdate(t,x,u)

 

sys = u(1);

 

% Окончание mdlUpdate

 

%

%========================================================%

% mdlOutputs %

% ФункциЯ длЯ расчета значений вектора выходных сигналов %

%========================================================%

%

function sys=mdlOutputs(t,x,u)

 

sys = x(1);

 

% Окончание mdlOutputs

 

%

%===========================================================================%

% mdlGetTimeOfNextVarHit %

% Расчет значениЯ времени длЯ следующей расчетной точки дискретной части %

% системы. %

% ФункциЯ рассчитывает времЯ (абсолютное значение), по достижении которого %

% значениЯ дискретной части системы передаютсЯв Simulink-модель. %

% ФункциЯ используетсЯ только в случае моделированиЯ дискретной части %

% системы с переменным шагом (variable discrete-time sample time). В этом %

% случае параметр ts функции mdlInitializeSizes должен быть задан как [-2 0]%

%===========================================================================%

%

function sys=mdlGetTimeOfNextVarHit(t,x,u)

 

sys = t + u(2);

 

% Окончание mdlGetTimeOfNextVarHit

 

%

%=========================================%

% mdlTerminate %

% ФункциЯ, выполнЯющаЯ завершение расчета %

%=========================================%

%

function sys=mdlTerminate(t,x,u)

 

sys = [];

 

% Окончание mdlTerminate

Пример модели с S-функцией vsfunc приведен на рис.16.8. В примере время задержки сигнала увеличивается с 0.0005 с до 0.0015 с.


Рис. 16.8 Модель с S-функцией vsfunc

[Скачать пример]


Дата добавления: 2015-09-05; просмотров: 77 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Модель гибридной системы| Математическое описание ДПТ НВ

mybiblioteka.su - 2015-2024 год. (0.013 сек.)