Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Начала прогаммирования в среде MatLab / Начала программирования в среде MatLab.pdf
Скачиваний:
254
Добавлен:
02.05.2014
Размер:
5.66 Mб
Скачать

7.4. Объединение S-моделей с программами MatLab

377

 

 

 

-ode45 – метод Дормана-Пренса с переменным шагом;

-ode23 – метод Багацкого-Шампена с переменным шагом;

-ode113 – метод Адамса с переменным шагом;

-ode15s – жесткий метод NDF с переменным шагом;

-ode23s – жесткий метод Розенброка с переменным шагом;

-ode23t – жесткий метод трапеций с переменным шагом;

-ode23tb – жесткий метод TR/BDF2 с переменным шагом.

В этом случае в нижней половине вкладки возникают другие окошки:

-Max step size – максимальная величина шага;

-Initial step size - начальная величина шага;

-Relative tolerance – допустимая относительная погрешность;

-Absolute tolerance - допустимая абсолютная погрешность.

Первые две и последняя из этих величин по умолчанию установлены auto, т. е. устанавливаются автоматически и требуют задания лишь в случае, если у пользователя имеются весомые причины изменить их значение на некоторые определенные. Относительная точность (точнее, относительная погрешность) по умол-

чанию всегда устанавливается 1 103 . По желанию, можно установить ее другой.

7.4.2. Функции пересечения нуля

SimuLINK использует функцию пересечения нуля для того, чтобы обнаружить резкие изменнения в непрерывных сигналах. Эта функция играет важную роль:

-в управлении скачками состояния;

-при точном интегрировании прерывистых сигналов.

Система испытывает скачок состояния, когда изменение значений переменных состояния заставляет систему испытать значительные мгновенные изменения. Простой пример скачков состояния - мячик, отскакивающий от пола. При моделировании такой системы используется метод интегрирования с изменяемым шагом. Метод численного интегрирования обычно не предусматривает мер, которые бы позволили точно зафиксировать момент времени, когда мяч контактирует с полом. Вследствие этого при моделировании мяч, переходя через контактную точку, как бы проникает сквозь пол. SimuLINK использует функцию пересечения нуля, чтобы гарантировать, что момент скачка состояния системы определен точно (с машинной точностью). Вследствие того, что эти моменты скачков состояния определяются точно, во время моделирования не происходит никакого проникновения сквозь пол, и переход от отрицательной скорости мяча к положительной в момент контакта является чрезвычайно резким.

Чтобы увидеть демонстрацию подскакивающего мяча, введите в командном окне MatLAB команду bounce. В результате выполнения этой команды возникнет окно с изображением блок-схемы модели поведения мяча (рис. 7.89). Эта модель численно интегрирует методом ode23 (с автоматическим изменением шага интегрирования) дифференциальное уравнение

&x&= −g ,

7.4. Объединение S-моделей с программами MatLab

378

 

 

 

(g - ускорение свободного падения; x - текущая высота мяча над полом) в промежутках между моментами времени, соответствующими контактам мяча с полом.

Интегрирование осуществляется с помощью двух блоков-интеграторов. На выходе первого из них получают значение текущей скорости движения мяча, а на выходе второго - текущую высоту мяча.

Гравітація

Швидкість

 

 

-9.81

 

Вікно швидкості

 

1

1

 

[15]

s

s

Вікно положення

 

 

 

 

Положення

IC

 

мяча

 

 

 

Еластичність

 

 

 

-0.8

 

 

Модель мяча, що підстрибує

?

Double click

(Подвійно клацніть на "?" щоб одержати інформацію)

here for

 

 

 

Для старту і зупинки моделювання, викoристовуйте команду "Start/Stop"

Simulink Help

 

у меню "Simulation" , що розташоване вгорі

 

 

 

Рис. 7.89

 

Рис. 7.90

Рис. 7.91

Более близкое знакомство со вторым интегратором (рис.7.91) дает возможность убедиться, что в нем установлена нижняя граница (нуль) изменений высоты мяча, а в первом (рис. 7.90) введено внешнее управление (falling - при уменьшении) от выхода второго интегратора. Во втором интеграторе начальное условие установлено как внутреннее и равняется 10 (м), а в первом, - начальное условие является внешнм (15 м/с). Кроме того, в первом интеграторе установлены отображение порта состояния. На этот порт подаются значения текущей скорости.

7.4. Объединение S-моделей с программами MatLab

379

 

 

 

Моделирование происходит так. Интегрирование начинается при указанных начальных условиях. Когда на втором интеграторе фиксируется пересечение мячом нуля высоты, на этом шаге осуществляется точное (с машинной точностью) вычисление момента времени, когда мяч пересекает пол, пересчитывается значение скорости в первом интеграторе на момент пересечения, и этот момент устанавливается как новый начальный момент времени. Найденное значение скорости через выходный порт первого интегратора (внизу блока интегратора) изменяет свой знак на противоположный, уменьшается по величине на 20 процентов (этим учитывается уменьшение скорости за счет потерь энергии вследствие неидеальной упругости мяча) и используется как новое начальное условие по скорости, и интегрирование продолжается при новых начальных условиях.

Следует отметить, что управление процессом прерывания интегрирования и продолжение его при новых начальных условиях, осуществляется вторым интегратором при пересечении величины на его выходе установленного уровня (нуля) при уменьшении (falling на первом интеграторе). При этом значение величины на выходе первого интегратора не может быть использовано для расчета нового ее начального значения. Надо обязательно для этой цели использовать дополнительный выходный порт интегратора, т. е. установить "галочку" в окошко Show state port (Показать порт состояния) и подать это рассчитанное значение на входной порт блока внешнего начального условия интегратора не непосредственно, а обязательно через блок IC начального условия.

Численные методы интегрирования обычно сформулированы в предположении, что сигналы, которые они интегрируют, являются непрерывными и имеют непрерывные производные.

В пакете SimuLink предусмотрены следующие блоки, использующие функции определения пересечения нуля:

-Abs (блок формирования абсолютного значения входа), - один раз: выявление момента, когда входной сигнал пересекает нуль в любом направлении – уменьшаясь или увеличиваясь;

-Backlash (блок формирования люфта), - дважды: когда входной сигнал сталкивается с верхним порогом и когда сталкивается с нижним порогом;

-Dead Zone (блок формирования зоны нечувствительности (мертвой зоны)), - дважды: когда сигнал входит в зону нечувствительности (до этого выходной сигнал равнялся входному сигналу минус нижняя граница зоны) и когда оставляет эту зону (выходный сигнал становится равным входному минус верхняя граница);

-Нit Crossing (блок улавливания пересечения), - один раз: выявляет момент, когда вход пересекает заданный уровень;

-Integrator (блок интегратора), - если представлен порт сброса, выявляет момент, когда сброс происходит; если выход ограничен, то тройное выявление пересечения нуля: когда достигается верхняя граница насыще-

7.4. Объединение S-моделей с программами MatLab

380

 

 

 

ния, когда достигается нижняя граница насыщения и когда зона насыщения покинута;

-MinMax (блок поиска минимума или максимума входной величины), - один раз: для каждого элемента выходного вектора выявление момента, когда входной сигнал становится минимальным или максимальным;

-Relay (блок формирования релейного изменения выхода), - один раз: если реле выключено – выявление момента, когда его нужно включить; если реле включено – выявление момента, когда его нужно выключить;

-Relational Operator (блок операторов отношения), - один раз: выявление момента, когда выход изменяется;

-Saturation (блок насыщения), - дважды: один раз выявляет, когда верхний порог достигается или покидается, и один раз выявляет, когда нижний порог достигается или покидается;

-Sign (блок формирования функции sign от входа), - один раз: выявление момента прохождения входа через нуль;

-Step (блок формирования скачкообразного изменения выхода), - один раз: выявляет момент, когда будет осуществляться скачкообразное изменение.

Эти средства пакета SimuLink позволяют моделировать очень важные и труднопрограммируемые особенности поведения существенно нелинейных систем, таких как:

-"сцепление" подвижных частей механизмов силами сухого трения;

-удароподобные процессы и режимы с ними;

-скользящий режим;

-автоколебания;

-внезапные переходы от одного из режимов к другому.

7.4.3.Передача данных между средой MatLab и S-моделью

Прежде всего, укажем, что рабочее пространство среды MatLab всегда досягаемо для используемой S-модели. Это означает, что если в качестве значений параметров в окнах настройки блоков S-модели использованы некоторые имена, а значения этим именам предварительно присвоены в рабочем пространстве, то эти значения сразу передаются соответствующим блокам S-модели. Из этого следует простое правило:

чтобы организовать удобное (например, диалоговое) изменение параметров блоков S-модели достаточно

-в окнах настраивания блоков S-модели в качестве параметров указать идентификаторы (имена) вместо чисел;

-организовать средствами среды MatLab (например, программно) присвоение численных значений этим идентификаторам, а также (в случае необходимости) диалоговое изменение их;

7.4. Объединение S-моделей с программами MatLab

381

 

 

 

-после присвоения численных значений всем идентификаторам (например, путем запуска соответствующей М-программы) провести запуск на моделирование S-модели.

Некоторые средства обмена данными были уже рассмотрены раньше. Это – блоки From Workspace раздела Sources и To Workspace раздела Sinks стандарт-

ной библиотеки SimuLink. Они служат: блок From Workspace - для подключения сигналов, которые предварительно получены в результате вычислений в среде MatLab, к процессу моделирования S-модели; блок To Workspace - для возможности записи результатов моделирования процессов, полученных путем моделирования на S-модели, в рабочее пространство среды MatLab.

 

 

simout

 

[T,U]

 

 

 

 

 

 

From

 

 

 

To Workspace

Workspace

 

 

 

Рис. 7.92

На рис. 7.92 показанный внешний вид этих блоков. Рис. 7.93 и 7.94 представляют их окна настраивания.

Рис. 7.93

Рис.7.94

Как видим (рис. 7.93), для определения процесса, который будет использоваться в S-модели, следует указать в первом окошке Data вектор из двух имен – первого – имени массива значений аргумента (времени), в которые определен этот процесс, и второго - имени массива значений процесса при этих значениях аргумента. Для записи полученного процесса в рабочее пространство (рис. 7.94) следует указать в окошке Variable name имя, под которым его нужно сохранить в рабочем пространстве системы MatLab.

Те же операции можно осуществить еще проще, не используя эти блоки.

7.4. Объединение S-моделей с программами MatLab

382

 

 

 

Чтобы подключить процесс, определенный в программе MatLab, как входной в S-модель, предусмотрен механизм включения портов входа и выхода.

Для этого нужно сделать следующее:

-в блок-схему S-модели вставить блок порта входа In и подключить к S- модели;

-в меню Simulation окна S-модели вызвать вкладку Workspace I/O (рис. 7.95) окна Simulation Parameters (команды Parameters);

-установить "галочку" в правом окошке рядом с надписью Input, записав по левую сторону от этой надписи вектор с двумя именами – первое – имя вектора значений аргумента, второе - имя вектора значений входного сигнала при этих значениях аргумента;

-установить значение этих векторов в среде MatLab, например, таким об-

разом

t = (0:0.1:1)';

u = [sin(t), cos(t), 4*cos(t)];

- обратиться к выполнению моделирования S-модели.

Рис. 7.95

Рис.7.96

Наоборот, чтобы вывести некоторые сигналы, которые формируются в S- модели, в рабочее пространство MatLab, нужно:

-в блок-схему S-модели вставить блоки портов выхода Out и подсоединить к ним необходимые выходные величины других блоков;

-в меню Simulation окна S-модели вызвать вкладку Workspace I/O (рис. 7.96) окна Simulation Parameters (команды Parameters);

-установить "галочку" в правом окошке с надписью Time;

-установить "галочку" в правом окошке с надписью Output.

В этом случае значения времени будут записываться в рабочее пространство как вектор с именем tout, а соответствующие значения выходных процессов при этих значениях времени – в столбце матрицы yout (в первые столбцы – процессы, которые поданы на первый выходной порт Out1, далее, - процессы, которые поданы на второй порт Out2 и т.п.). Конечно, если изменить имена, которые

7.4. Объединение S-моделей с программами MatLab

383

 

 

 

записаны по правую сторону от надписей соответствующих окошек, то эти же данные будут записаны под этими именами.

Так же, активизируя (рис. 7.96) окошко Initial state (начальные значения переменных состояния), можно ввести в S-модель начальные значения переменных состояния системы. Активизировав окошко States (Переменные состояния), можно записать текущие значения переменных состояния системы в рабочее пространство под именем xout (или другим именем, если его записать по правую сторону от этой надписи).

Наконец, можно записать и конечные значения переменных состояния в вектор xFinal, если активизировать окошко Final state.

7.4.4. Запуск процесса моделирования S-модели из среды

MatLab

Рассмотрим теперь средства, которые позволяют запускать на моделирование созданные S-модели из программы MatLab.

S-модель запускается на выполнение, если в программе MatLab вызвать процедуру sim по следующему образцу

[t,x,y1, y2, ..., yn] = sim(model,timespan,options,ut),

где model – текстовая переменная, являющаяся именем mdl-файла, который содержит запись соответствующей S-модели; timespan – вектор из двух элементов, - значения начального и конечного моментов времени моделирования; options – вектор значений опций интегрирования; устанавливается процедурой simset:

options = simset('Свойство1', Значения1,' Свойство2', Значения2, ...);

t – массив выходных значений моментов времени; x – массив (вектор) переменных состояния системы; y1 – первый столбец матрицы выходных переменных системы (которые подаются на выходные порты) и т.д.

Устанавливать (и изменять) параметры решателя и процесса интегрирования в программе MatLab можно при помощи функции simset как это показано выше. Так можно установить значение следующих (среди прочих) свойств решателя или интегрирования:

'Solver', - название решателя; значения, которые может принять это свойство, может быть одним из следующих (указывается в апострофах): ode45 | ode23 | ode113 | ode15s | ode23s – для интегрирования с автоматически изменяемым шагом, а для фиксированного шага - ode5 | ode4 | ode3 | ode2 | ode1;

'RelTol' – относительная допустимая погрешность; значение может быть положительным скаляром; по умолчанию устанавливается 1e-3;

'AbsTol' – абсолютная допустимая погрешность; значение может быть положительным скаляром; по умолчанию устанавливается 1e-6;

'FixedStep' – фиксированный шаг (положительный скаляр);

'MaxOrder' – максимальный порядок метода (применяется лишь для метода ode15); может быть одним из целых 1 | 2 | 3 | 4 |; по умолчанию равняется

5;