Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2018-01-05 | 176 |
5.00
из
|
Заказать работу |
|
|
Модель дискретной системы, описываемой уравнениями пространства состояния, дана в файле 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 |
[Скачать пример]
Модель гибридной системы
Модель гибридной системы (комбинации непрерывной и дискретной системы) дана в файле mixedm.m. Рассматриваемая S-функция моделирует систему, состоящую из последовательно включенных интегратора (1/s) и блока задержки (1/z). Особенность S-функции для гибридной системы в том, что вызов callback-методов для расчета дискретной части системы выполняется в те же моменты времени, что и для непрерывной ее части, поэтому пользователь, при написании S-функции, должен предусмотреть проверку правильности вызова callback-методов рассчитывающих дискретную часть системы.
Ниже приведен текст этой S-функции.
|
S-функция dsfunc:
function [sys,x0,str,ts] = mixedm(t,x,u,flag) % MIXEDM Пример S-функции. S-функция моделирует систему, состоящую из% последовательно включенных интегратора (1/s) и блока задержки (1/z).%% Шаблон для создания S-функции - файл sfuntmpl.m. %% Copyright 1990-2001 The MathWorks, Inc.% $Revision: 1.27 $% Авторский перевод комментариев: Черных И.В. % Шаг модельного времени и смещение для дискретной части системы: dperiod = 1; doffset = 0; switch flag % В зависимости от значения переменной flag происходит % вызов того или иного метода: %===============%% Инициализация %%===============% case 0 [sys,x0,str,ts]=mdlInitializeSizes(dperiod,doffset); %====================%% Расчет производных %%====================% case 1 sys=mdlDerivatives(t,x,u); %============================================================%% Расчет значений вектора состояний дискретной части системы %%============================================================% case 2, sys=mdlUpdate(t,x,u,dperiod,doffset); %===========================================%% Расчет значений вектора выходных сигналов %%===========================================% case 3 sys=mdlOutputs(t,x,u,doffset,dperiod); %====================%% Завершение расчета %%====================% case 9 sys = []; %======================================%% Неизвестное значение переменной flag %%======================================% otherwise error(['unhandled flag = ',num2str(flag)]); end % Окончание mixedm %===============================================================%% mdlInitializeSizes %% Функция инициализации %% Расчет начальных условий, значений вектора модельного времени,%% размерности матриц %%===============================================================% function [sys,x0,str,ts]=mdlInitializeSizes(dperiod,doffset) sizes = simsizes;sizes.NumContStates = 1; % Число непрерывных переменных состояния. sizes.NumDiscStates = 1; % Число дискретных переменных состояния. sizes.NumOutputs = 1; % Число выходных переменных (размерность выходного % вектора). sizes.NumInputs = 1; % Число входных переменных (размерность входного % вектора). sizes.DirFeedthrough = 0; % Прямой проход. Прохода входного сигнала на выход % нет. sizes.NumSampleTimes = 2; % Размерность вектора шагов модельного времени. % Шаги модельного времени задаются для непрерывной % и для дискретной частей системы. sys = simsizes(sizes);x0 = zeros(2,1); % Задание вектора начальных значений переменных % состояния. % Начальные условия нулевые str = []; % Параметр заразервирован для будущего % использования. ts = [0 0]; % Шаг модельного времени для непрерывной части % системы. dperiod doffset]; % Шаг модельного времени для дискретной части % системы. % Окончание mdlInitializeSizes %%========================================================================%% mdlDerivatives %% Функция для расчета значений производных вектора состояния непрерывной %% части системы %%========================================================================% function sys=mdlDerivatives(t,x,u) sys = u; % Окончание mdlDerivatives %=========================================================================%% mdlUpdate %% Функция для расчета значений вектора состояния дискретной части системы %%=========================================================================%% function sys=mdlUpdate(t,x,u,dperiod,doffset) % Расчет значения переменной состояния дискретной части системы% выполняется в соостветствии с дискретным шагом расчета% (погрешность по времени выбрана равной 1e-15). if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) < 1e-15 sys = x(1);else sys = [];end % Окончание mdlUpdate %%========================================================% % mdlOutputs %% Функция для расчета значений вектора выходных сигналов %%========================================================% % function sys=mdlOutputs(t,x,u,doffset,dperiod) % Расчет значения выходного сигнала системы% выполняется в соостветствии с дискретным шагом расчета% (погрешность по времени выбрана равной 1e-15).% Если условие, заданное оператором if истинно, то выходной сигнал блока% изменяется. В противном случае выходной сигнал остается равным значению% на предыдущем шаге.% if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) < 1e-15 sys = x(2);else sys = [];end % Окончание mdlOutputsПример модели с S-функцией mixedm приведен на рис.16.7.
|
Рис. 16.7 Модель с S-функцией mixedm |
[Скачать пример]
|
|
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!