Фильтрующий повторитель

 

Это устройство имеет вход X и выход Y типа boolean, а также параметр Tau типа double. Устройство функционирует следующим образом. При изменении входа X, если новое значение непрерывно держится в течение интервала фильтрации Tau, выход Y принимает значение X, в противном случае Y не изменяется, то есть устройство не пропускает коротких изменений X длительностью менее Tau. Карта поведения фильтрующего повторителя приведена на Рис 19.

 

Рис 19

Устройство находится в установившемся режиме (состояние «УстРежим») до тех пор, пока значение входа перестанет совпадать со значением выхода. Устройство переходит в переходный режим (состояние «ПерехРежим»), в котором будет находиться в течение интервала фильтрации Tau. Если до истечения этого интервала значение входа изменится, то устройство вернется в исходное состояние (верхний переход на Рис 19). По истечении интервала фильтрации изменяется значение выхода и устройство возвращается в исходное состояние (нижний переход на Рис 19). В условии этого перехода использовано охраняющее условие (или охраняющий предикат) «guard». Переход срабатывает, если в момент появления запускающего события (в данном случае это истечение интервала Tau) значение условия истинно. В данном конкретном случае этот охраняющий предикат нужен лишь для одного частного случая, когда X изменяется точно в момент истечения интервала Tau. В этом случае в карте поведения оказывается два готовых к срабатыванию перехода. Такая карта поведения является недетерминированной. В одних пакетах моделирования (например в AnyLogic) это считается допустимым и срабатывающий переход выбирается случайным образом, в других (в Stateflow, ModelVision) эта ситуация считается ошибкой. Лучше таких ситуаций избегать.

 

Схема ИЛИНЕ.

 

Это устройство имеет входы X1, X2 и выход Y типа boolean. Функционирование устройства определяется формулой

Y = not (X1 or X2)

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

 

Замечание.

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

Y = (Time>=10)

Если величина Y будет использоваться где-то в условии перехода или в условном уравнении, то все будет правильно, однако потребуется процедура численного поиска точки переключения. Лучше всего задать ступеньку переходом с запускающим событием «after 10» с одним и тем же исходным и конечным узлом.

 

Триггер.

 

Теперь мы можем собрать из заготовленных классов схему триггера (Рис 20). Это своеобразный блок, который не имеет собственного поведения – его поведение складывается из совокупного поведения локальных блоков с учетом связей.

 

Рис 20

Испытательный стенд.

 

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

 

Рис 21

Главная карта поведения генератора показана на Рис 22: выполняется вложенная карта поведения «ТестоваяПоследовательность» пока не истечет время эксперимента .

 

Рис 22

Локальная карта поведения «ТестоваяПоследовательность» является простой картой состояний (Рис 23), которая задает программу подачи тестовых сигналов: после некоторого начального интервала сигналам установки и сброса присваивается корректная комбинация, которая далее инвертируется в цикле через определенный интервал времени.

Рис 23

На Рис 24а показана временная диаграмма входных и выходных сигналов триггера при значениях

 

а)

б)

Рис 24

Обратите внимание, что при некорректном сочетании начальных значений тестовых сигналов триггер входит в режим автоколебаний. Этот эффект исчезает, если сделать задержки у фильтрующих повторителей разными, например, положить (Рис 24б).

 

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: