Главная страница
Навигация по странице:

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

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

  • Backlash

  • Нit Crossing

  • Relational Operator

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

  • From Workspace

  • Учебное пособие для студентов высших учебных заведений


    Скачать 5.41 Mb.
    НазваниеУчебное пособие для студентов высших учебных заведений
    Дата10.03.2022
    Размер5.41 Mb.
    Формат файлаpdf
    Имя файлаmatlab.pdf
    ТипУчебное пособие
    #390741
    страница39 из 44
    1   ...   36   37   38   39   40   41   42   43   44
    7.4.1. Принципы функционирования блоков системы
    SimuLink
    Каждый блок S-модели имеет такие характеристики (рис. 7.84):
    - вектор входных величин u;
    - вектор выходных величин y;
    - вектор состояния x.
    Рис. 7.84
    Вектор состояния может состоять из непрерывных состояний
    , дискрет- ных состояний
    , или комбинации их обоих. Математические связи между этими величинами могут быть представлены в виде уравнений:
    c
    x
    d
    x
    y
    f t x u
    o
    = ( , , )
    формирования выхода
    x
    f t x
    d
    u
    k
    +
    =
    1
    ( , , )
    u
    обновления (формирования нового значения) со- стояния
    dx
    dt
    f t x u
    d
    =
    ( , , ) формирования значений производной состояния

    7.4. Объединение S-моделей с программами MatLab
    375
    где
    x
    x
    x
    c
    d
    k
    =



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

    7.4. Объединение S-моделей с программами MatLab
    376
    С перечнем программ решателей (интеграторов), которые прилагаются к пакету SimuLink, можно ознакомиться через меню
    Simulation/Parameters (вкладка
    Solvers) – см. рис. 7.85…7.88.
    Вкладка
    Solvers (рис. 7.85) содержит в верхней половине четыре окошка:
    -
    Start time, – в котором устанавливается начальное значение аргумента
    (времени);
    -
    Stop time, – где записывается конечное значение времени;
    -
    Type, – где выбирается вид решателей;
    -
    Solver options – в котором выбирается конкретный решатель.
    Если в окошке
    Type выбран вид решателей Fixed step (с фиксированным ша- гом), в окошке
    Solver options появляется такой (рис. 7.85) набор решателей с фик- сированным шагом:
    -
    discrete (no continuous states) -дискретный (не непрерывные состояния);
    -
    ode5 – метод Дормана-Пренса (пятого порядка);
    -
    ode4 – метод Рунге-Кутта (четвертого порядка);
    -
    ode3 – метод Богацкого-Шампена (третьего порядка);
    -
    ode2 – метод Хойне (второго порядка);
    -
    ode1 – метод Ейлера (первого порядка).
    При этом в нижней половине вкладки возникает окошко с надписью
    Fixed
    step size (Размер фиксированного шага), в которое нужно ввести значение шага интегрирования. В Matlab, начиная из версии 5.3 и выше, возникает еще одно окошко (рис. 7.87) под именем
    Mode (Режим), в котором выбирается один из трех возможных режимов работы:
    -
    Auto – автоматический режим;
    -
    Single Tasking – однозадачный режим;
    -
    Multi Tasking – многозадачный режим.
    Рис.
    7.87
    Рис.7.88
    Если же выбрать тип решателя
    Variable step, в окошке Solver options (рис.
    7.86) возникнет другая подборка интеграторов (методов численного интегриро- вания):

    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, т. е. устанавливаются автоматически и требуют задания лишь в случае, если у поль- зователя имеются весомые причины изменить их значение на некоторые опреде- ленные. Относительная точность (точнее, относительная погрешность) по умол- чанию всегда устанавливается
    3 10 1


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

    =
    &&
    ,

    7.4. Объединение S-моделей с программами MatLab
    378
    (g - ускорение свободного падения; - текущая высота мяча над полом) в проме- жутках между моментами времени, соответствующими контактам мяча с полом.
    x
    Интегрирование осуществляется с помощью двух блоков-интеграторов. На выходе первого из них получают значение текущей скорости движения мяча, а на выходе второго - текущую высоту мяча.
    Для старту і зупинки моделювання, викoристовуйте команду "Start/Stop"
    у меню "Simulation" , що розташоване вгорі
    Модель мяча, що підстрибує
    (Подвійно клацніть на "?" щоб одержати інформацію)
    s
    1
    Швидкість s
    1
    Положення
    -0.8
    Еластичність
    -9.81
    Гравітація
    Вікно швидкості
    Вікно положення мяча
    Double click here for
    Simulink Help
    ?
    [15]
    IC
    Рис. 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
    To Workspace
    [T,U]
    From
    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 и т.п.). Конечно, если изменить имена, которые

    1   ...   36   37   38   39   40   41   42   43   44


    написать администратору сайта