Наряду с потоком данных многие блоки Xcos также передают или принимают сигналы (красные линии и стрелки). Сигнал может быть сгенерирован при достижении некоторого условия, например, изменении знака потока данных (пересечении нуля), либо формируется постоянно через равные промежутки времени (часы). При получении сигнала блок активируется, выполняет возложенную на него функцию (обычно, изменяет выходной поток) и "засыпает". Если блок не имеет красных входных стрелок, он либо постоянно активен, либо "наследует" состояние от предыдущего блока, к которому подключен. Если непрерывные схемы могут сигналы и не использовать, то в дискретных и комбинированных системах это, фактически, обязательный элемент.
Для примера рассмотрим следующую схему. Вся её нехитрая работа сводится к искажению синусоиды.
Данные с генератора синуса проходят через усилитель (GAINBLK_f, палитра Mathematical Operations), где увеличиваются по амплитуде в 5 раз, а затем поступают на блок SAMPHOLD_m (палитра Signal Processing). При поступлении сигнала активации данный блок "запоминает" входное значение и начинает транслировать его на выход. Управление блоком осуществляет генератор случайных чисел RAND_m (палитра Sources) с помощью блока проверки условия IFTHEL_f (палитра Event handling). Если случайное число положительное, SAMPHOLD_m получает сигнал активации. Для генерации значений от -1 до 1 нужно в свойствах блока RAND_m установить A = -1, B = 2. Длительность моделирования - 30 с.
Кстати, в данной схеме события синхронные, т.к. активизированы одним и тем же блоком. События, запущенные в один и тот же момент времени являются одновременными. НО, в общем случае одновременность не означает синхронности и наоборот, что связано, как я понял, с порядком обработки элементов схемы интерпретатором.
Комментариев нет:
Отправить комментарий