русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-08-31; просмотров: 849; Нарушение авторских прав


Модель дискретной системы с переменным шагом расчета дана в файле 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

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



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


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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