Студопедия
Случайная страница | ТОМ-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. ПОРЯДОК ПРИМЕНЕНИЯ НАКОПИТЕЛЬНОЙ БАЛЛЬНО-РЕЙТИНГОВОЙ СИСТЕМЫ В УЧЕБНОМ ПРОЦЕССЕ

Модель дискретной системы, описываемой уравнениями пространства состояния, дана в файле dsfunc.m. Данная S-функция моделирует дискретную систему с двумя входами, двумя выходами и двумя переменными состояния. Параметры модели (значения матриц A, В, С, D) задаются в теле S-функции и передаются в callback-методы через их заголовки в качестве дополнительных параметров.
Ниже приведен текст этой S-функции.

S-функция dsfunc:

function [sys,x0,str,ts] = dsfunc(t,x,u,flag) % DSFUNC Пример S-функции. С помощью уравнений пространства состояния% моделируется дискретная система:% x(n+1) = Ax(n) + Bu(n) % y(n) = Cx(n) + Du(n) %% Значения матриц передаются в callback-методы через их заголовки% в качестве дополнительных параметров%% Шаблон для создания S-функции - файл sfuntmpl.m. % % Copyright 1990-2001 The MathWorks, Inc.% $Revision: 1.8 $% Авторский перевод комментариев: Черных И.В.% Задание матриц: A = [0.9135 0.1594 -0.7971 0.5947]; % Матрица системы. B = [0.05189 0 0.4782 0]; % Mатрица входа. C = [0 1 1 0]; % Mатрица выхода. D = [0.01 0 0 -0.02]; % Mатрица обхода. switch flag, % В зависимости от значения переменной flag происходит % вызов того или иного метода:%===============%% Инициализация %%===============% case 0, [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D); %============================================================%% Расчет значений вектора состояний дискретной части системы %%============================================================% case 2, sys = mdlUpdate(t,x,u,A,B,C,D); %=====================================================================%% Расчет значений вектора выходных сигналов непрерывной части системы %%=====================================================================% case 3, sys = mdlOutputs(t,x,u,A,C,D); %=========================================%% Неиспользуемые значения переменной flag %%=========================================% % В примере не используются методы для завершения работы S-функции, % нет непрерывных переменных состояния, % поэтому значения переменной flag = 1, 4, 9 не используются. % Результатом S-функции в этом случае является пустая матрица. case { 1, 4, 9 } sys=[]; %======================================%% Неизвестное значение переменной flag %%======================================% otherwise error(['unhandled flag = ',num2str(flag)]);end % Окончание dsfunc %%===============================================================%% mdlInitializeSizes %% Функция инициализации %% Расчет начальных условий, значений вектора шагов модельного %% времени, размерности матриц %%===============================================================%%f unction [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D)sizes = simsizes;sizes.NumContStates = 0; % Число непрерывных переменных состояния. sizes.NumDiscStates = size(A,1); % Число дискретных переменных состояния. sizes.NumOutputs = size(D,1); % Число выходных переменных (размерность % выходного вектора). sizes.NumInputs = size(D,2); % Число входных переменных (размерность % входного вектора). sizes.DirFeedthrough = 1; % Прямой проход. Есть проход входного % сигнала на выход (матрица D не пустая). sizes.NumSampleTimes = 1; % Размерность вектора шагов модельного % времени. sys = simsizes(sizes);x0 = zeros(sizes.NumDiscStates,1); % Задание вектора начальных значений % переменных состояния. % Начальные условия нулевые str = []; % Параметр заразервирован для будущего % использования. ts = [0.2 0]; % Матрица из двух колонок, задающая шаг % модельного времени и смещение.% Окончание mdlInitializeSizes %%=========================================================================%% mdlUpdate %% Функция для расчета значений вектора состояния дискретной части системы %%=========================================================================%% function sys = mdlUpdate(t,x,u,A,B,C,D)sys = A*x+B*u; % Окончание mdlUpdate %========================================================%% mdlOutputs %% Функция для расчета значений вектора выходных сигналов %%========================================================%% function sys = mdlOutputs(t,x,u,A,C,D)sys = C*x+D*u; % Окончание mdlOutputs

Пример модели с S-функцией dsfunc приведен на рис.16.6.

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

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


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


<== предыдущая страница | следующая страница ==>
Модель непрерывной системы| Модель гибридной системы

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