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

Модель непрерывной системы

Введение | Этапы моделирования | Callback-методы S-функции | Создание S-функций на языке MATLAB | Модель гибридной системы | Модель дискретной системы с переменным шагом расчета | Математическое описание ДПТ НВ | Пример 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. ПОРЯДОК ПРИМЕНЕНИЯ НАКОПИТЕЛЬНОЙ БАЛЛЬНО-РЕЙТИНГОВОЙ СИСТЕМЫ В УЧЕБНОМ ПРОЦЕССЕ

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

S-функция csfunc:

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

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

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

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


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


<== предыдущая страница | следующая страница ==>
Простейшая S-функция| Модель дискретнойной системы

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