Моделирование блок-схем

Симуляция движения. Введение

В пакете VisSim можно моделировать системы: линейные и нелинейные; непрерывные и дискретные. В одной модели можно одновременно определять и непрерывные, и дискретные передаточные функции; для дискретной части модели возможно многочастотное квантование.

VisSim поддерживает модель исполнения программ, в которой инструкции или операторы выполняются только тогда, когда все входные данные - параметры и аргументы для функций и процедур готовы. В этой модели информационный поток проходит с входов процедур и функций на выходы. Она называется моделью "Поточного управления".

Таким образом, при исполнении симуляции, первыми на каждом шаге выполняются расчеты для блоков группы "Генераторы" (имеющих только выходы). Затем, наступает очередь промежуточных блоков (имеющих и входы и выходы), функции преобразования которых будут исполнены при готовности всех входных данных. Последними в очереди на исполнение стоят блоки группы "Приборы и Датчики" (имеющие только входы).

VisSim исполняет симуляцию движения модели согласно:

Строка статуса в VisSim-а содержит информацию о текущей блок-схеме, отображая: количество блоков, временной диапазон симуляции, метод интегрирования, размер шага, имя неявного решателя. При выполнении симуляции отображается текущее значение времени.

Симуляция непрерывных систем

Поскольку интегрирование в цифровой форме - является более устойчивой операцией, чем дифференцирование, Вам необходимо преобразовывать исходные дифференциальные уравнения (ДУ) в операторной форме таким образом, чтобы оператор Лапласа входил в уравнение только с отрицательными степенями (требуется разделить и левую и правую часть ДУ на оператор Лапласа в соответствующей степени). Это основной принцип построения моделей в программе VisSim. Другими словами - дифференцирующего блока нет, и это надо учитывать при построении моделей.

Построение модели из блоков программы VisSim может быть осуществлено тремя методами:

  1. По структурной схеме исследуемой системы (ДУ должны быть представлены в виде передаточных функций (ПФ)). См. разделы: Модели описанные типовыми звеньями и Модели описанные передаточными функциями
  2. По ДУ исследуемой системы решенному относительно требуемой координаты, обычно относительно ошибки или регулируемой величины. См. раздел: Модели ДУ одной координаты
  3. По совокупности ДУ первого порядка, описывающей исследуемую систему (форма Коши). См. раздел: Модели матричного типа

Модели описанные типовыми звеньями

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

Типовые динамические звенья

где:

1) W(s) = ######### K
5) W(s) = ######### K
#########
1+T2s2
8) W(s) = ######### K(1+Ts)
#########
s
2) W(s) = ######### K
#########
1+Ts
6) W(s) = ######### K
#########
s
9) W(s) ≈ ######### Ks
3) W(s) = ######### K
#########
(1+T3s)(1+T4s)
7) W(s) = ######### K
#########
s(1+Ts)
10) W(s) = ######### Ks
#########
(1+Ts)

4) W(s) =

######### K #########; где: 0 < ξ < 1; q=1/T
#########
1+2ξTs+T2s2

Модели описанные передаточными функциями

Рабочий файл [tf_univr.vsm]

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

Универсальные блок-схемы моделей передаточных функций линейных систем

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

Модели ДУ одной координаты

Если исследуемая система описана ДУ, решенным относительно одной из координат системы:

#########,

то его можно представить в следующем виде:

#########,

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

Решение обыкновенного ДУ с помощью цепочки интеграторов

где:

Модели матричного типа

Если исследуемая система описана совокупностью ДУ первого порядка:

Описание системы ДУ первого порядка (форма Коши),

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

Модель матричного типа

где:

Симуляция дискретных систем

Вы можете строить модели дискретных систем, используя блоки: регистрЗадержки (1/Z), передаточнаяФункция и пространствоСостояний. Они имеют встроенный импульсный элемент на входе (устройство выборки хранения (УВХ)) и экстраполятор нулевого порядка на выходе. Реально роль экстраполяторов выполняют цифро-аналоговые преобразователи, но с точки зрения точности представляющего экстраполятор эквивалента идеализированное УВХ подходит больше, так как отсутствует квантование по уровню.

Блоки передаточнаяФункция и пространствоСостояний будут работать в дискретном режиме после активации опции "Цифровой" (фильтр) и указания периода квантования dT в их диалоговых окнах настройки. По истечении периода квантования dT, внутренние и выходная координаты цифровых фильтров модифицируются. Блок регистрЗадержки (1/Z) имеет вход для булевой переменной, которая может стробировать регистр, осуществляя тем самым квантование по времени.

Модели с многочастотным квантованием

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

Во всех случаях, задав разные частоты дискретизации, Вы существенно выиграете в скорости симуляции.

Для построения моделей с многочастотным квантованием достаточно задавать периоды дискретизации в блоках передаточнаяФункция и пространствоСостояний не по умолчанию, а по возможности в кратное число раз большие. Шаг симуляции должен быть в целое число раз меньше любого из периодов квантования dT дискретных блоков.

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

Ввод разностных уравнений

Вставить с сайта - в исходнике ерунда

Симуляция гибридных систем

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

Гибридные модели допускают многочастотное квантование. Для их построения достаточно задавать периоды дискретизации в блоках передаточнаяФункция и пространствоСостояний не по умолчанию, а по возможности в кратное число раз большие (шага симуляции). Но период квантования dT должен оказаться минимум в 2..6 раз меньше самой малой постоянной времени дискретных блоков. При чрезмерно большой его величине ошибки проявляются (легче заметить) на ЛФЧХ, а не ЛАЧХ.

Контроль над симуляцией

Имеются два способа осуществления контроля над симуляцией:

Оба способа обеспечивают одинаковый уровень интерактивного контроля над симуляцией.

Использование контрольной панели

Быстрый, простой, интерактивный контроль над симуляцией, обеспечивает диалоговое окно показанное на рисунке.

Диалоговое окно 'Контрольная панель'

Для включения контрольной панели выберите команду меню Вид > Контрольная панель. Галочка перед командой указывает, что режим визуализации контрольной панели включен (она должна быть видна). В таблице даны пояснения режимам симуляции.

Команда управления режимом симуляции

Пояснения

Go (Выполнить)

Команда инициирует выполнение симуляции модели. Альтернативно ее можно генерировать из меню Симуляция или нажатием кнопки Go (Выполнить) в инструментальной панели "Контроль симуляции", но удобней всего использовать функциональную клавишу F5.

Стоп (Остановить)

Команда приостанавливает процесс симуляции модели с возможностью дальнейшего продолжения. Альтернативно ее можно генерировать из меню Симуляция или нажатием кнопки Стоп (Остановить) в инструментальной панели "Контроль симуляции" или функциональной клавишей F4.

Далее (Продолжить)

Команда восстанавливает процесс симуляции модели после приостановки. Альтернативно ее можно генерировать из меню Симуляция или нажатием кнопки Далее (Продолжить) в инструментальной панели "Контроль симуляции".

Шаг (По шагам)

Команда инициирует выполнение одного шага симуляции модели. В дальнейшем Вы можете либо повторять ее, либо продолжить симуляцию в автоматическом режиме. Альтернативно команду можно генерировать из меню Симуляция или нажатием кнопки Шаг (По шагам) в инструментальной панели "Контроль симуляции", но удобней всего использовать функциональную клавишу F10.

Reset (Сброс)

При выполнении симуляции в любом режиме, блоки обладающие эффектом памяти (1/S, S&H, 1/Z, e-sTd, передаточнаяФункция, пространствоСостояний, ...) удерживают текущие значения. Для повторной симуляции необходимо установить начальные значения на выходах этих блоков. Поэтому, после очередного шага или после приостановки симуляции или после ее завершения, кнопка Go Контрольной панели замещается кнопкой Reset для предоставления возможности осуществить эту операцию.

Запуск симуляции

Для запуска процесса симуляции модели выполните любое действие:

Приостановка симуляции

Для приостановки процесса симуляции модели выполните любое действие:

Продолжение симуляции

Для восстановления процесса симуляции модели после приостановки выполните любое действие:

Пошаговая симуляция

Для выполнения одного шага симуляции модели выполните любое действие:

Сброс координат модели к начальным условиям

Для сброса координат модели, хранящихся в блоках обладающих эффектом памяти (1/S, S&H, 1/Z, e-sTd, передаточнаяФункция, пространствоСостояний, ...) выполните любое действие:

Ручное изменение параметра в процессе симуляции модели

Используя блок регулятор, Вы можете строить модели допускающие ручное изменение параметров в устанавливаемом диапазоне, с помощью мыши, в процессе симуляции. Приращение параметра можно задать от 1% до 10%.

Для появления возможности ручного изменения параметра в процессе симуляции модели выполните действия:

  1. Установите блок регулятор в вашу блок-схему.
  2. Предустановите значение параметра, диапазон его изменения и приращение.
  3. В процессе симуляции используйте мышь, для изменения значения параметра.

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

Мониторинг значений сигналов в блок-схеме

В пакете VisSim имеется два способа мониторинга сигналов (координат модели) на любом шаге симуляции. Они описаны в таблице.

Операция

Действия

Мониторинг мгновенных значений сигналов на входах и выходах блоков

Установите указатель над требуемым выводом блока и нажмите "другую" клавишу мыши

Осциллографирование сигналов

Установите блок осциллограф и подключите требуемые координаты модели (выходы блоков) к его входам

Симуляция во времянном окне

Блоки VisSim-а неизвестная и нулевойБаланс могут использоваться для урезания процесса симуляции, те его начала с желаемого ненулевого момента. Эта методика особенно полезна для медленно выполняющихся моделирований, в которых интересующая область (временное окно) находится не в начале траектории. Подстроив координаты модели для начальной точки временного окна, Вы сократите время симуляции.

Начальное условие на любом интеграторе для этой операции может быть установлено с применением сумматора. При этом фактически оно будет нулевым. Цель подобного внешнего назначения начального условия состоит в том, чтобы при первом проходе симуляции, регулировкой начальных условий на интеграторах посредствам выходных значений блоков неизвестная, свести производные сигналов к нулю.

Сброс флага ошибки

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

Снимок пространства состояний модели

Вы можете зафиксировать текущее положение модели в пространстве состояний, те запомнить мгновенные значения всех ее координат. Они сохранятся в начальных условиях блоков обладающих эффектом памяти (1/S, S&H, 1/Z, e-sTd, передаточнаяФункция, пространствоСостояний, ...).

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

Для перезаписи начальных условий текущими значениями координат выполните действия:

  1. Осуществите симуляцию модели до временной точки, начиная с которой представляют интерес вариации движения системы.
  2. Выберете команду меню Симуляция > Фиксация в начальных условиях.

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

Сброс начальных условий в блоках модели

Вы можете одновременно обнулить значения начальных условий во всех блоках модели обладающих эффектом памяти (1/S, S&H, 1/Z, e-sTd, передаточнаяФункция, пространствоСостояний, ...). Для осуществления этой операции выберите команду меню Симуляция > Сброс начальных условий. Обычно, эта команда используется в паре с командой меню Симуляция > Фиксация в начальных условиях.

Типовые затруднения

Что я должен сделать, если сигнал на входе интегратора содержит разрывы?

Используйте адаптивные методы интегрирования Рунге-Кутта 5-ого порядка или Булирша-Стоера

Как я мне стабилизировать быстро колеблющееся поведение координат модели?

Возможны две разные причины: 1) не верно выбраны шаг симуляции или метод интегрирования; 2) система является не устойчивой.

Попробуйте уменьшить шаг симуляции, если эффекта не будет, то можно включить методы интегрирования, обладающие меньшими ошибками - адаптивный Рунге-Кутта 5-ого порядка или адаптивный Булирша-Стоера. Для симуляции существенно нелинейных или жестких моделей (большой разницей частот собственных колебаний) Вы должны использовать обратный метод Эйлера. Если ни что не помогает, разомкните цепь обратной связи и снимите ЛАЧХ & ЛФЧХ разомкнутой системы для проверки величины запаса устойчивости по фазе на частоте среза системы, в соответствии с логарифмическим критерием устойчивости. При этом, дополнительно проверьте, что шаг симуляции в 6..10 раз меньше периода частоты среза

Как я могу ускорить процесс симуляции?

Имеется несколько рекомендаций.

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

При симуляции жестких систем, локализуйте низкочастотную часть модели в составном блоке и стробируйте его на пониженной частоте

Имеется ли простой способ проверить целостность всех соединений в блок-схеме?

При отладке больших блок-схем можно не уследить за модификациями и тем самым нарушить модель. Как правило, последствием модификаций является появление неподключенных блоков. VisSim автоматически присваивает нулевые значения их входам (исключения составляют блок * (перемножения) и блок переменная). Для приведения блок-схемы в порядок, активизируйте опцию предупреждений "О неподключенных входах", которая находится на вкладке "Предпочтения" диалогового окна "Настройки симуляции", вызываемого командой меню Симуляция > Настройки симуляции. В этом режиме, в начале процесса симуляции VisSim будет предупреждать Вас о неподключенных входах, и раскрашивать соответствующие блоки красным цветом

Почему мой цикл обратной связи вызывает ошибки?

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