Составной блок

Классификация Графическое обозначение
Наименование:
Составной блок

Группа:
Составные блоки

Версия CannyLab:
с 2.0
Внешний вид функционального блока:

Внешний вид.
Иконка функционального блока:

Иконка.

Общее описание

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

Для составного блока вместо «Регистра записи» и «Регистра чтения», применяются вход и выход составного блока. Максимальное количество входов или выходов составного блока ограничено размерами рабочего поля диаграммы. Приблизительно, количество входов/выходов может достигать ~2500 штук, при этом за одну команду можно добавить или удалить не более 1000 входов/выходов.

Составной блок может не иметь ни одного входа, но должен иметь минимум один выход.

Допускается многоуровневое вложение составных блоков друг в друга.

В функциональной диаграмме составного блока не допускается применение элементов: «Регистр записи», «Регистр чтения», а также «Именованная константа».

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

Особенности <

По умолчанию составной блок не имеет управляющего входа и всегда исполняется, наряду с элементарыми функциональными блоками. Добавление составному блоку управляющего входа одного из двух типов - «EN» (ENABLE) или «nRST» (negative RESET), позволяет запускать либо приостанавливать его работу в процессе исполенния диаграммы контроллером.

При этом, при подаче на управляющий вход «EN» значений отличного от «0» составной блок исполняется в нормальном режиме. При подаче на управляющий вход «EN» значения «0» исполнение составного блока приостанавливается, с сохранением его внутреннего состояния и значений его выходов. Общее время исполенния диаграммы сокращается.

При этом, при подаче на управляющий вход «nRST» значений отличного от «0» составной блок исполняется в нормальном режиме. При подаче на управляющий вход «nRST» значения «0» исполнение составного блока приостанавливается, со сбросом его внутреннего состояния и значений его выходов. Общее время исполенния диаграммы сокращается.

Составной блок со входом «EN»

Примеры <

Пример 1. Демонстрация работы пользовательского составного блока «Выбрать большее число»:

В качестве примера рассмотрим реализацию пользовательского составного блока, «Выбрать большее число». Данный блок имеет два числовых входа: «Значение 1» и «Значение 2», на выходе блока устанавливается наибольшее значение из поступивших на оба входа. В случае равенства значений, поступивших на входы на выходе составного блока устанавливается значение, поступившее на вход «Значение 2».

Внешний вид составного блока «Выбрать большее число».
Реализация логики вложенной диаграммы составного блока «Выбрать большее число».
Демонстрация работы составного блока «Выбрать большее число» (значение на входе «Значение1» - больше).
Демонстрация работы составного блока «Выбрать большее число» (значение на входе «Значение 2» - больше).
Демонстрация работы составного блока «Выбрать большее число» (значение на входах равны).

Пример 2. Демонстрация работы пользовательского составного блока с входом “EN”

В качестве примера рассмотрим реализацию пользовательского составного блока, «2 в степени N». На вход блока «Степень (N)» поступает значение степени, в которую необходимо установить 2. На выходе «2^N» представлен результат возведения в степень, максимальное значение 32768. В случае превышения значения на выходе Выход «2^N», на выходе «Переполнение» устанавливается «1». У блока «2 в степени N» добавлен вход «EN», в целях демонстрации его работы.

Внешний вид пользовательского составного блока «2 в степени N».

Внутренняя диаграмма составного блока «2 в степени N» реализует следующую функцию: \[\ {\ f(x)} = {2^x}\]

При X > 32768 на внешнем выходе «2^N» составного блока установится 0, на выходе «Переполнение» устанавливается «1».

Функциональная диаграмма пользовательского составного блока «2 в степени N».

Для демонстрации работы блока «2 в степени N» с входом «EN» подготовим диаграмму, которая в циклическом режиме увеличивает значение на входе «Степень (N)» с помощью счетчика, а в случае ненулевого значения на выходе «Переполнение» обнуляет значение на входе «Степень (N)» пользовательского составного блока «2 в степени N».

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

Диаграмма для демонстрация работы пользовательского составного блока «2 в степени N» с входом «EN».

Проведем моделирование работы диаграммы в симуляторе.

Установим значение 1 на входе «EN»:

Шаг 1. Значение на входе «Степень (N)» равно 0.

Далее проведём несколько циклов симуляции:

Шаг 2. Значение на входе «Степень (N)» равно 1.
Шаг 3. Значение на входе «Степень (N)» равно 2.

Приостановим выполнение блока “2 в степени N”, установив на входе “EN” блока значение равное 0.

Шаг 4. Значение на входе «EN» равно 0.

Проведем несколько шагов симуляции:

Шаг 5. Значение на входе «Степень (N)» равно 3.
Шаг 6. Значение на входе «Степень (N)» равно 4.

Обратите внимание, выходы составного блока «2 в степени N» , сохранили значение, установленное на шаге 3.

Возобновим выполнение блока «2 в степени N», установив на входе «EN» блока значение равное 1.

Шаг 7. Значение на входе «EN» равно 1.

Продолжим симуляцию диаграммы:

Шаг 8. Значение на входе «Степень (N)» равно 5.

Значение на выходах составного блока «2 в степени N» соответствуют подаваемому на вход.

СМОТРИ ТАКЖЕ