Перейти к основному содержимому

Блок-схемы при помощи логических блоков
Работает только на iRidium server

Редактор схем предназначен для создания программ на языке FBD (функциональных диаграмм) для ПЛК. FBD - один из языков стандарта IEC 61131-3. Наша реализация совместима со стандартом не полностью(будет оптимизироваться), но базовые его требования реализованы.

Схема - это набор элементов, значений их параметров и соединений (цепей) между элементами.

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

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

Функциональные блоки в iRidium Studio 2019 используют собственные методы реализации и не имеют ничего общего с бета-версией функциональных блоков в старой студии (версии 1.3.8 и ниже). Преобразование схем в проектах, созданных в старой студии, на логику новых блок-схем невозможно. Для редактирования старых проектов используйте iRidium Studio версии 1.3.8 или воссоздайте эту логику в новой студии.

Для реализации блочной логики в iRidium studio разработана панель SCHEMES, она позволяет настроить блочную логику для iRidium server.

Назначение инструментов панели:

Blocks_main.png

  1. Шаблон схемы;
  2. Список блоков Inputs/Outputs;
  3. Рабочая область, в которой вы можете разместить, настроить блоки и соединить их связями;
  4. Каталог логических блоков, доступных для использования в схеме;
  5. Схемы;
  6. Панель отладки схемы;
  7. Лог последнего запуска схемы. Исходный код сформированный на основе блочной логики;
  8. Свойства схемы;
  9. Свойства блока.

1. Template (шаблон схемы)

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

Первый шаблон будет создан при перетаскивании логических блоков на рабочую область. Добавить новый шаблон схемы можно с помощью кнопки + .

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

Rename - переименовать шаблон;

Delete - удалить шаблон;

Clone - клонирование шаблона.

Экспорт и импорт блок-схем

Экспорт/импорт схем - инструмент позволяющий осуществить перенос в новый проект часто используемых схем с сохранением связей, значений и привязок к драйверу.

Экспорт блок-схем

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

Blocks_import1.png

Импорт блок-схем

  1. Нажмите на кнопку со значком “+”, далее Add from file, откроется окно проводника для выбора файла импорта.

Blocks_import2.png

После импорта откроется импортированный Template и все его схемы. Блоки Value сохраняют свои значения. Блоки To tag , To command , From tag сохраняют свою привязку к драйверу и (или) токену.

2. Список блоков Inputs/Outputs

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

При наведении на элемент в списке появится всплывающая подсказка с полным наименованием тега\команды.

Block_ListBlocks.png

3. Рабочая область

Рабочая область - представляет собой пространство, в рамках которого вы можете разместить логически блоки и соединить их связями. Каждый вход/выход блока может быть соединен только одной связью.

Наилучшим использованием будет разделение крупной схемы на несколько отдельных схем, таким образом вам будет проще проверить её работоспособность. Эффективно разделить схему можно с помощью токенов, в которые вы будете записывать конечные значения после выполнения более простых схем.

Создание блока, создание связей между блоками.

Создание блока

Блок в рабочее поле добавляется методом "Drag&Drop", достаточно перетащить нужный элемент в рабочую область и появится блок с соответствующим цветом и характеристиками.

В качестве логических блоков могут выступать:

*Стандартные логические блоки;

*Команды и фидбеки;

*Токены (системные, пользовательские).

Создание связей между блоками

Для работы схемы, блоки внутри соединяются связями. Нарисовать связь можно следующие образом:

  1. Установить курсор на необходимый вход/выход блока.
  2. Зажмите левую кнопку мыши на нужном входе/выходе и начните передвижение. Начальный вход/выход изменит свою индикацию и получит красный цвет. Доступные входы/выходы других блоков сменят свой цвет на зеленый

Blocks_Lines2.png

Blocks_Lines3.png 3. Передвигайте курсор с зажатой левой кнопкой мыши до необходимого входа/выхода другого блока. Вслед за курсором будет вырисовываться линия связи.

Blocks_Lines.png 4. Отпустите левую кнопку мыши на конечном входе/выходе и два блока соединятся связью.

Blocks_Lines4.png

Масштаб рабочей области

Масштаб, кнопки управления масштабом. Увеличивает, или уменьшает масштаб рабочей области.

  1. Поле с информацией о текущем масштабе(в процентах). Можно выбрать из числа предложенных вариантов, щелкнув ЛКМ по стрелочке вниз.
  2. Кнопки масштаба: *Zoom in - увеличивает текущий масштаб с шагом в 10%; *Zoom out - уменьшает текущий масштаб с шагом в 10%.

Blocks_workspace.png 3. Координаты курсора по оси X и Y.

Blocks_zoom.png

4. Каталог логических блоков

Math . Арифметические функции:

And. Побитовое "И";

    • Or. Побитовое "ИЛИ";
    • Xor. Побитовое "Исключающее ИЛИ";
    • Not. Побитовое "НЕ";
    • LSHIFT.
      битовые сдвиг влево;
    • RSHIFT. битовый сдвиг вправо;

Logic operations. Логические операции: *

Logic And. Логическое "И"; *

Logic Or. Логическое "ИЛИ"; *

Xor. Логическое исключающее "ИЛИ"; *

Not. Логическое "НЕ". * Input . Входящие данные: * Value. Константа: знаковое число с плавающей запятой (float 64-bit); *

From Tag. Взять значение из тега; *

From Channel. Взять значение из канала. * Output . Исходящие данные: * To Log. Записать значение в лог; *

To Tag. Записать значение в тэг; *

To Channel. Записать значение в канал. * Conditions . Операторы сравнения:

    • X > Y. Больше;
    • X >= Y. Больше либо равно;
    • X Меньше;
    • X Меньше либо равно;
    • X == Y. Равно;
    • X != Y. Не равно.

Selection . Операторы выбора:

    • IF (SEL);
    • Min;
    • Max;
    • Clamp.

Other . Другие:

    • Dublicate;
    • Caption;
    • Timer;
    • Map;
    • RS - триггер;
    • D - триггер;
    • T - триггер;
    • Avg Statistics;
    • Min Statistics;
    • Max Statistics;
    • RGBA to сolor;
    • Color to RGBA;
    • Color to RGB;
    • To Bool;
    • To Int;
    • To Float;
    • Delta;
    • Inc/Dec;
    • Real div;
    • P-регулятор;
    • PI-регулятор;
    • PD-регулятор;
    • PID-регулятор;
    • Threshold switch;
    • ByteToBits;
    • BitsToByte;
    • TON;
    • TOF;
    • TP;
    • Multiplexer;
    • Selector;
    • AvgMedian;
    • PulseGenerator;
    • Set interval;
    • Valve control.

Math.Арифметические функции.

*Add (+) - сложение. *Sub (-) - вычитание. Mul () - умножение. *Div (/) - деление. *Mod (%) - остаток от деления. *Abs - абсолютное значение входа.

Add (+). Сложение

Add(+) Сложение - арифметическое действие, посредством которого из двух или нескольких чисел получают новое, содержащее столько единиц, сколько было во всех данных числах вместе. Имеет два входных канала и один канал выхода.

Blocks_add.png

Sub(-). Вычитание

Sub(-) .Вычитание - арифметическое действие, посредством которого от одного числа отнимается другое число.Имеет два входных канала и один канал выхода.

Blocks_sub.png

Mul(*). Умножение

Mul(*) .Умножение - арифметическое действие повторения данного числа слагаемым столько раз, сколько единиц находится в другом данном числе, множителе.Имеет два входных канала и один канал выхода.

Blocks_mul.png

Div(/). Целочисленное деление

Div(/) Целочисленное деление - арифметическое действие, по которому узнаётся, сколько раз одно число содержится в другом. Имеет два входных канала и один канал выхода. Умножение и деление поможет вам с переводом из различных систем исчисления.

Blocks_div.png

Mod (%). Остаток от деления

Mod (%) Остаток от деления - значение, которое остается при делении одного целочисленного значения на другое. Имеет два входных канала и один канал выхода.

Blocks_mod.png

Abs. Абсолютное значение входа

Abs Блок выводит абсолютное значение входа. Используется для исключения отрицательного значения.

Block_Abs.png

Вход: *In - входящее значение.

Выход: *Out - абсолютное значение входа.

Bit operations. Битовые операции.

*And - Побитовое логическое "И". *Or - Побитовое "ИЛИ". *Xor - Побитовое логическое исключающее "ИЛИ". *Not - Побитовое логическое "НЕ". * LSHIFT - битовый сдвиг влево. * RSHIFT - битовый сдвиг вправо.

And. Побитовое «И»

And. Побитовое «И» — это бинарная операция, действие которой эквивалентно применению логического «И» к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях значений входных сигналов. Другими словами, если оба соответствующих бита значений входных сигналов равны 1, результирующий двоичный разряд равен 1; если же хотя бы один бит из пары равен 0, результирующий двоичный разряд равен 0. Имеет два входа и один выход. Имеет до 16 (включительно) входов.

BitAnd.png

Выход11000010

Or. Побитовое «ИЛИ»

Or. Побитовое «ИЛИ» — это бинарная операция, действие которой эквивалентно применению логического «ИЛИ» к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях значений входных сигналов. Другими словами, если оба соответствующих бита значений входных сигналов равны 0, двоичный разряд результата равен 0; если же хотя бы один бит из пары равен 1, двоичный разряд результата равен 1. Имеет два входа и один выход. Имеет до 16 (включительно) входов.

BinOr.png

Выход11101010

Xor. Побитовое исключающее «ИЛИ»

Xor. Побитовое исключающее« ИЛИ» — это бинарная операция, результат действия которой равен 1, если число складываемых единичных битов нечетно и равен 0, если чётно. Другими словами, если оба соответствующих бита значений входных сигналов равны между собой, двоичный разряд результата равен 0; в противном случае, двоичный разряд результата равен 1. Имеет два входа и один выход.

BinXor.png

Выход00101000

Not. Побитовое «НЕ»

Not. Побитовое «НЕ» - Побитовое «НЕ» инвертирует состояние каждого бита исходной переменной. Имеет один вход и один выход.

BinNot.png

Выход00110101

LSHIFT. Битовый сдвиг влево

LSHIFT. Битовый сдвиг влево - выполняет побитовый сдвиг влево.

LSHIFT.png

Подробное описание смотреть ниже в RSHIFT. (Аналогичен RSHIFT, разница лишь в направлении сдвига).

RSHIFT. Битовый сдвиг вправо

RSHIFT. Битовый сдвиг вправо - выполняет побитовый сдвиг вправо.

RSHIFT.png

Входы:

  • Value - 32-битное без знаковое(это важно) - входное значение
  • Count - число бит, на которое необходимо осуществить сдвиг.

Выходы: *Out - результат побитового сдвига.

Свойства блока: *Cyclic - включается цикличность сдвига(False/True).

Логика: Если сдвиг циклический(Cyclic = 1), то последние Count бит станут первыми.

Пример: 15 (00000000 00000000 0000000 000011112) RHIFT 2 = 3221225475 (11000000 00000000 00000000 000000112).

Если сдвиг нециклический(Cyclic = 0), то значение сдвинется вправо, а первые Count бит станут нулями. (Поведение аналогично оператору >> в языках Си, С++, C# и т.п.).

Logic operations. Логические операции.

*Logic And - логическое "И". *Logic Or - логическое "ИЛИ". *Logic Xor - логическое исключающее "ИЛИ". *Logic Not - логическое "НЕ".

Logic And. Логическое «И»

Logic And. Логическое «И» — это логическая операция, которая сравнивает два значения и возвращает false, если хотя бы одно из значений было false. Другими словами, если оба значения входных сигналов не равны 0, то результат будет равен 1; если же хотя бы одно значение равно 0 - результат будет равен 0. Имеет два входа и один выход. Имеет до 16 (включительно) входов.

LogicAnd.png

Выход1.0000

Logic Or. Логическое «ИЛИ»

Logic Or. Логическое «ИЛИ» — это логическая операция, которая сравнивает два значения и возвращает true, если хотя бы одно из значений было true. Другими словами, если оба входных значений равны 0, то результат будет равен 0; если же хотя бы одно из значений не равно 0, то результат будет равен 1. Имеет два входа и один выход. Имеет до 16 (включительно) входов.

LogicOr.png

Выход1.0000

Xor. Логическое исключающее «ИЛИ»

Xor. Логическое исключающее «ИЛИ» — это логическая операция, которая сравнивает два значения и возвращает true, если одно значение true, а второе false. Другими словами, если оба значения будут равны 0 или оба значения будут не равны 0, то результат будет равен 0; в противном случае, результат равен 1. Имеет два входа и один выход.

LogicXor.png

Выход1.0000

Not. Логическое «НЕ»

Not. Логическое «НЕ» - это логическая операция, которая возвращает true, если значение равно 0 и false, если значение не равно 0. Имеет один вход и один выход.

LogicNot.png

Выход0

Input. Входящие данные.

*Value. *From Tag.

Value

Value - Константа: знаковое число с плавающей запятой (float 64-bit). Имеет один выход, который присоединяется к вычислительному блоку, или блоку выхода.

Blocks_value.png

Имеет свойства: *Name - имя блока. *Type - тип блока(Value). *Value - числовое значение. Максимальное количество цифр до запятой 9, после запятой 2. #### From Tag From Tag - Элемент позволяющий брать значение из фидбеков, токенов для дальнейшей работы в схеме.

Blocks_fromTag.png

Имеет свойства: *Name - имя блока. *Type - From Tag. *Value - отображает адрес фидбека.

  • Data Type - тип отправляемых данных.

From Channel

From Channel -

Элемент позволяющий брать значение из канала, токенов для дальнейшей работы в схеме.

FromChannel.png

Имеет свойства: *Name -

имя блока. *Type - From Channel. *Value -

отображает адрес канала.

Output. Исходящие данные.

*To Log. *To Tag. *To Channel.

To Log

To Log - Записать значение в лог, отображается в окне последнего запуска схемы(№9).

Blocks_ToLog.png


Имеет свойства:

  • Name - имя блока.
  • Type – To Log.
  • Data Type - тип отправляемых данных.

To Tag

To Tag - Записать в тег драйвера, виртуальный канал, токен.

Blocks_ToTag.png

Имеет свойства:

  • Name - имя блока.
  • Type – To Tag.
  • Value - отображает адрес канала.

To Channel

To Channel - Записать в команду драйвера, виртуальный канал, токен.

Blocks_ToChannel.png

Имеет свойства:

  • Name - имя блока.
  • Type – To Channel
  • Value - отображает адрес канала.

Conditions. Операторы сравнения.

Возвращают false/true, как результат сравнения. *X > Y. Больше. *X >= Y. Больше либо равно. *X Меньше. *X Меньше либо равно. *X == Y. Равно. *X != Y. Не равно.

X>Y. Больше

X>Y. Больше - Оператор выдает на выходе True, если значение X больше Y. False в противном случае.

Blocks_X1.png

X>Y. Больше или равно ====

X>=Y. Больше или равно - Оператор выдает на выходе True, если значение X больше, или равно Y. False в противном случае.

Blocks_X2.png

===='''X

'''X Blocks_X3.png

===='''X

'''X Blocks_X4.png

X Y. Равно ====

X == Y. Равно - Оператор сравнивает значение X и Y, True в случае их равенства. False во всех остальных случаях.

Blocks_X5.png

X ! Y. Не равно ====

X != Y. Не равно - Оператор сравнивает значение X и Y и выдает False в случае равенства. True во всех остальных случаях.

Blocks_X6.png

Selection. Операторы выбора.

Возвращает значение, удовлетворяющее условию блока:

  • IF (SEL);
  • Min;
  • Max;
  • Clamp.

IF (SEL)

SEL – эта функция выбирает один из двух входов в зависимости от значения первого входа IF.

Schemes-IF.png

Входы:

  • IF - (BOOL) - Выбор входного значения;
  • TRUE(THEN) - (Любой) - Входное значение;
  • FALSE(ELSE) - (Любой) - Входное значение.

Выходы:

  • OUT - (Любой) - Выходное значение.

Логика:

В зависимости от входящего значения на IF:

  • Если IF = 0, то значение входа FALSE(ELSE) отображается на выходе OUT.

  • Если IF = любое значение не равное 0, то значение входа TRUE(THEN) отображается на выходе OUT.

  • Если данных на входе IF нет = то значение входа FALSE(ELSE) отображается на выходе OUT.


Имеет свойства:

  • Name - имя блока.
  • Type – IF (SEL).
  • Data Type - тип отправляемых данных

Min

Min - вычисление меньшего из двух.

Block_Min.png

Входы: *In1 - вход первого значения; *In2 - вход второго значения.

Выходы: *Out - минимальное значение из двух входящих.

Max

Max - вычисление большего из двух

Block_Max.png

Входы: *In1 - вход первого значения; *In2 - вход второго значения.

Выходы: *Out - максимальное значение из двух входящих.

Clamp

Clamp - ограничивает значение value диапазоном min >= value Block_Clamp.png

Входы: *Min - минимальное значение диапазона; *Max - максимальное значение диапазона; *Value - входное значение.

Выходы: *Out - выходное значение.

Логика: *Если значение больше максимального, то возвращается максимальное. *Если значение меньше минимального, то возвращается минимальное. *Формула: Out = max(min(Value, Max), Min)

Interlock

Interlock – выводит в интерфейс активный вход. В один момент времени может быть активен только один вход, все остальные выводят 0. Имеет до 16 (включительно) входов и выходов.
Interlock.png


Входы:

  • Clear (0/1);
  • Set all (0/1);
  • Входы In1, In2, ... In16 (0/1).

  • Приоритет отдается входу с наименьшим номером (если поступили данные на вход Clear, то на остальных поступившие данные не будут приниматься блоком).

Выходы:

  • Out1, Out2, ... Out16 (0/1)

Свойства:

  • Name - имя блока;
  • Type – Interlock;
  • Count inputs & outputs – редактирование количества входов/выходов блока.

Логика:

  • при появлении 1 на входе Сlear – на всех созданных выходах (Out1/.../Out16) = выставляется и держится 0 до момента следующего изменения;
  • при появлении 1 на входе Set all – на всех созданных выходах (Out1/.../Out16) = выставляется и держится 1 до момента следующего изменения;
  • при появлении 1 на любом созданном входе (In1.../In16) = выставляется и держится 1 на соответствующем выходе (o1/.../o16), остальные выходы = 0;
  • при появлении 0 на входе Сlear – блок не изменяет текущее значение выходов;
  • при появлении 0 на входе Set all – блок не изменяет текущее значение выходов;
  • при появлении 0 на любом созданном входе (In1.../In16) = не изменяет текущее значение выхода.

Multiple NOT

Multiple NOT – Логическое «НЕ» - это логическая операция, которая возвращает true, если значение равно 0 и false, если значение не равно 0. Имеет до 16 (включительно) входов и выходов.


MultipleNOT.png


Входы:

  • In1, In2, ... In16 (0/1)

Выходы

  • Out1, Out2, ... Out16 (0/1)

Cвойства:

  • Name - имя блока;
  • Type – Multiple Not;
  • Count inputs & outputs – редактирование количества входов/выходов блока.

Логика:

  • Если на вход придёт значение типа String, то выходе будет отображаться 1;
  • Если на вход придет 1, то выходе будет отображаться 0;
  • Если на вход придет 0, то выходе будет отображаться 1. ## Other. Другие. *Duplicate; *Caption; *Timer; *Map; *To Bool; *To Int; *To Float; *Color to RGBA; *RGBA to Color; *Delta; *Threshold switch; *Inc/Dec.

Duplicate

Duplicate – дублирует входящее значение. Имеет до 8 (включительно) выходов, дублирующие входящее значение.

Blocks_Duplicate.png

Caption

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

Blocks_Caption.png

Имеет свойства: *Name - имя блока. *Type - From Tag. *Value - Значение для отображения на блоке.

Timer

Timer - элемент передает значение входящего сигнала, до того момента пока на входе “Switch” не появится 0. Как только на входе появляется сигнал больше 0, блок начинает работу и передает значение "In 1" на выход, повторяя его с заданным интервалом.

Blocks_Timer.png

Имеет свойства: *Name - имя блока. *Type - From Tag. *Value - Интервал через который повторно отсылается входящее значение(мс).

Map

Map - преобразует значение из одного диапазона в другой.

Block_Map.png

Входы: *Val - входное значение.

Выходы: *Out - выход.

Свойства блока: *From min - минимальное значение исходного диапазона$ *From max - максимальное значение исходного диапазона *To min - минимальное значение нового диапазона *To max - максимальное значение нового диапазона

Block_Map1.png

Логика: Формула преобразования: Out = ([Val] - [From min]) * ([To max] -[To min]) / ([From max] -[From min]) +[To min];

RS - триггер

Триггер – это устройство, имеющее два устойчивых состояния («0» или «1») и способное под действием входного сигнала скачком переходить из одного устойчивого состояния в другое. Триггер – это простейший автомат с памятью и способностью хранить 1 бит информации («0» или «1»).

RS - триггер - Отличительной особенностью триггера как функционального устройства является свойство запоминания двоичной информации. Под памятью триггера подразумевают способность оставаться в одном из двух состояний и после прекращения действия переключающего сигнала. Приняв одно из состояний за «1», а другое за «0», можно считать, что триггер хранит (помнит) один разряд числа, записанного в двоичном коде.

Block_RStrigger.png

Входы:

  • R - reset (сбросить);
  • S - set (установить).

Выходы:

  • Q - прямой выход;
  • |Q - инверсный.

Логика: Логическое устройство будет находиться в устойчивом положении в том случае, если на С=0. В этом случае импульсы, подающиеся на информационный D-вход, никак не влияют на прибор, и выходной импульс определяется записанным ранее значением, хранящимся в памяти. Если С=1, то выходной сигнал будет зависеть от того, какой сигнал был подан на информационный D-вход. Если D=1, то на выходе будет 1, если D=0, то на выходе будет 0. Таблица истинности.

Block_RStrigger1.png

D - триггер

D - триггер - получил название от английского слова «delay» - задержка, которая реализуется подачей сигналов на вход синхронизации. В RS-триггере было два входных сигнала, но для передачи двоичного кода достаточно одного входа с разными уровнями напряжения: высокий (1) и низкий (0). На два входа нельзя было подавать единицу одновременно, поэтому в D триггере эти входы объединены с помощью инвертора (рисунок 1 а), что исключает возможность возникновения запрещенного состояния.

Block_Dtrigger.png

Входы: *D - вход (0/1) *C - вход синхронизации, флаг(0/1)

Выходы:

  • Q - прямой выход;

Логика: Логическое устройство будет находиться в устойчивом положении в том случае, если на С=0. В этом случае импульсы, подающиеся на информационный D-вход, никак не влияют на прибор, и выходной импульс определяется записанным ранее значением, хранящимся в памяти. Если С=1, то выходной сигнал будет зависеть от того, какой сигнал был подан на информационный D-вход. Если D=1, то на выходе будет 1, если D=0, то на выходе будет 0. Таблица истинности.

Block_Dtrigger1.png

T - триггер

  • Скоро появится.

T - триггер - Реализует логику асинхронного T-триггера. Асинхронный Т-триггер не имеет входа разрешения счёта — Т и переключается по каждому тактовому импульсу на входе С.

Входы: *In - boolean (0/1) вход.

Выходы: *Out - boolean (0/1) выход.

Логика: Хранит значение(0/1) в памяти и подаёт его на выход при In = 0. При In = 1, инвертирует значение в памяти и подаёт это значение на выход Out.

Таблица истинности.

Block_Ttrigger1.png

Avg Statistics

Avg Statistics - ведёт статистику среднего значения.

Block_Avgstat.png

Входы: *Value - текущее значение *Reset - флаг (0/1), где 1 - сброс среднего значения в значение Value

Выходы: *Avg - Максимальное значение из всех ранее переданных (при Reset = 0). Значение со входа Value (при Reset = 1).

Логика: Работает схожим образом с блоками MinStatistics и MaxStatistics. У данного блока есть память, в которой хранится текущее среднее значение. Если Reset = 1, то блок находится в режиме сброса, это значит что на выход будет передано значение со входа. Если Reset = 0, то блок находится в режиме сбора статистики, это значит, что на выход будет передано среднее из двух значений: из памяти и со входа Value. Память блока работает так же как и у блока MinStatistics и MaxStatistics: она хранит значение, которое было передано на выход в прошлый раз. При первом использовании блока (когда в памяти ещё нет предыдущего значения), на выход будет передано значение со входа Value и оно же помещается в память блока.

Min Statistics

Min Statistics - ведёт статистику минимального значения.

Block_Minstat.png

Входы: *Value - текущее значение *Reset - флаг (0/1), где 1 - сброс минимального значения в значение Value

Выходы: *Min - минимальное значение из всех ранее переданных (при Reset = 0). Значение со входа Value (при Reset = 1).

Логика: У данного блока есть память, в которой хранится текущее минимальное значение. Если Reset = 1, то блок находится в режиме сброса, это значит что на выход будет передано значение со входа. Если Reset = 0, то блок находится в режиме сбора статистики, это значит, что на выход будет передано минимальное из двух значений: из памяти и со входа. Память блока работает очень просто: она хранит значение, которое было передано на выход в прошлый раз. При первом использовании блока (когда в памяти ещё нет предыдущего значения), на выход будет передано значение со входа Value и оно же помещается в память блока.

Max Statistics

Max Statistics - ведёт статистику максимального значения.

Block_Maxstat.png

Входы: *Value - текущее значение *Reset - флаг (0/1), где 1 - сброс максимального значения в значение со входа Value

Выходы: *Max - максимальное значение из всех ранее переданных (при Reset = 0). Значение со входа Value (при Reset = 1).

Логика: Работает схожим образом с блоком MinStatistics. У данного блока есть память, в которой хранится текущее максимальное значение. Если Reset = 1, то блок находится в режиме сброса, это значит что на выход будет передано значение со входа. Если Reset = 0, то блок находится в режиме сбора статистики, это значит, что на выход будет передано максимальное из двух значений: из памяти и со входа. Память блока работает так же как и у блока MinStatistics: она хранит значение, которое было передано на выход в прошлый раз. При первом использовании блока (когда в памяти ещё нет предыдущего значения), на выход будет передано значение со входа Value и оно же помещается в память блока.

RGBA to сolor

RGBA to Color - блок, выполняющий преобразование из компонентов цвета(Red, Green, Blue, Alpha) в 32-битное беззнаковое целое RgbaColor.

Block_CtR.png

Входы: (значения на каждом входе варьируются от 0 до 255) *Red - красный канал; *Green - зеленый канал; *Blue - синий канал; *Alpha - альфа-канал.

Выходы: *RgbaColor - 32-битное беззнаковое целое в формате 0xRRGGBBAA.

Color to RGBA

Color to RGBA - преобразование, обратное RGBA to Color, из формата 0xRRGGBBAA в отдельные значения Red, Green, Blue, Alpha.

Block_RtC.png

Входы: *RgbaColor - 32-битное беззнаковое целое в формате 0xRRGGBBAA.

*В случае, если было передано 24 бита, то значение Alpha будет 0xFF, то есть получится 32-битное значение 0xRRGGBBFF

Выходы: (значения от 0 до 255) *Red - красный канал; *Green - зеленый канал; *Blue - синий канал; *Alpha - альфа-канал.

Color to RGB

Color to RGB - преобразование из формата 0xRRGGBB в отдельные значения Red, Green, Blue.

ColorToRGB.png

Входы: *RgbColor - 32-битное беззнаковое целое в формате 0xRRGGBB.

*В случае, если было передано 24 бита, то значение Alpha будет 0xFF, то есть получится 32-битное значение 0xRRGGBBFF.

Выходы: (значения от 0 до 255) *Red - красный канал; *Green - зеленый канал; *Blue - синий канал.

To Bool

To Bool - Автоматическое преобразование к Bool.

Block_Bool.png

Входы: *In - входное значение.

Выходы: *Out - выход. Преобразование к Bool.

To Int

To Int - Автоматическое преобразование к Int.

Block_Int.png

Входы: *In - входное значение.

Выходы: *Out - выход. Преобразование к Int.

To Float

To Float - Автоматическое преобразование к Float.

Block_Float.png

Входы: *In - входное значение.

Выходы: *Out - выход. Преобразование к Float.

Delta

Delta - дельта входящего значения.

Block_Delta.png

Входы: *In - входное значение.

Выходы: *Value - выходное значение; *RisingEdge - флаг (0/1), 0 - значение не увеличилось, 1 - значение увеличилось; *FallingRange - флаг (0/1), 0 - значение не уменьшилось, 1 - значение уменьшилось.

Свойства: *Delta - дельта.

Логика: Входящее значение сравнивается с предыдущим, хранимым в памяти блока значением, если разность входящего и предыдущего значения по модулю превосходит Delta - значение передаётся на выход Value, если нет - на выход подаётся предыдущее сохранённое в памяти значение.

Inc/Dec

Inc/Dec - увеличивает(если Step > 0), или уменьшает(если Step Block_ID.png

Входы: *Value - входное значение; *Control - флаг(0/1) - не увеличивать/увеличивать.

Выходы: *Out - выходное значение.

Свойства: *Step - шаг

Логика: *Если Control = 0, возвращает на выход Out значение входа Value; *Если Control = 1, возвращает Value + Step.

Real div

Real div - деление с остатком - арифметическое действие, по которому одно число делится на другое с наличием десятичной дроби. Имеет два входных канала и один канал выхода. Умножение и деление поможет вам с переводом из различных систем исчисления.

RealDiv.png

P-регулятор

P-регулятор - реализует логику P-контроллера.

Block_P-reg.png

Входы: *ACT - значение регулируемой величины; *SET - значение уставки; *SUP - зона нечувствительности; *OFS - смещение; *MAN_IN - сигнал ручного ввода; *MAN - режим управления 1/0 (ручной/автоматический); *KP - коэффициент усиления П-составляющей; *LL - нижний предел управляющего сигнала; *LH - верхний предел управляющего сигнала.

Выходы: *Y - величина управляющего воздействия; *DIFF - сигнал рассогласования; *LIM - флаг 1/0 «достигнут предел для Y».

Логика: См. подробнее стр. 550.

PI-регулятор

PI-контроллер - реализует логику PI-контроллера.

Block_PIreg.png

Входы: *ACT - значение регулируемой величины; *SET - значение уставки; *SUP - зона нечувствительности; *OFS - смещение; *MAN_IN - сигнал ручного ввода; *MAN - режим управления 1/0 (ручной/автоматический); *RST - сигнал обнуления И-составляющей 1/0; *KP - коэффициент усиления П-составляющей; *KI - коэффициент усиления И-составляющей; *LL - нижний предел управляющего сигнала; *LH - верхний предел управляющего сигнала; *dT - delta time - время между измерениями (необходима для интегрирования).

Выходы: *Y - величина управляющего воздействия; *DIFF - сигнал рассогласования; *LIM - флаг 1/0 «достигнут предел для Y».

Логика: См. подробнее стр. 550.

PD-регулятор

PD-регулятор - реализует логику PD-контроллера.

Block_PDreg.png

Входы: *ACT - значение регулируемой величины; *SET - значение уставки; *SUP - зона нечувствительности; *OFS - смещение; *MAN_IN - сигнал ручного ввода; *MAN - режим управления 1/0 (ручной/автоматический); *KP - коэффициент усиления П-составляющей; *KD - коэффициент усиления Д-составляющей; *LL - нижний предел управляющего сигнала; *LH - верхний предел управляющего сигнала; *dT - delta time - время между измерениями (необходима для интегрирования).

Выходы: *Y - величина управляющего воздействия; *DIFF - сигнал рассогласования; *LIM - флаг 1/0 «достигнут предел для Y».

Логика: См. подробнее стр. 550.

PID-регулятор

PID-регулятор - реализует логику PID-контроллера.

Block_PIDreg.png

Входы: *ACT - значение регулируемой величины; *SET - значение уставки; *SUP - зона нечувствительности; *OFS - смещение; *MAN_IN - сигнал ручного ввода; *MAN - режим управления 1/0 (ручной/автоматический); *RST - сигнал обнуления И-составляющей 1/0; *TN - постоянная времени интегрирования; *TV - постоянная времени дифференцирования; *KD - коэффициент усиления Д-составляющей; *LL - нижний предел управляющего сигнала; *LH - верхний предел управляющего сигнала; *dT - delta time - время между измерениями (необходима для интегрирования).

Выходы: *Y - величина управляющего воздействия; *DIFF - сигнал рассогласования; *LIM - флаг 1/0 «достигнут предел для Y».

Логика: См. подробнее стр. 550.

Threshold switch

Threshold switch - пороговый переключатель.

Block_Treshhold.png

Входы: *In - входное значение; *Threshold - пороговое значение; *Range - диапазон.

Выходы: *Out - выходное значение boolean (0/1).

Логика: Если значение In отклоняется от значения Threshold по модулю не более чем на значение Range, то возвращает 1, иначе возвращает 0. Формула: Out = | In - Threshold | ByteToBits - преобразование набора байта на входе в набор битов на выходе.

ByteToBits.png

Входы:

  • In - входной байт.

Выходы:

  • Out1 - бит 1 (отсчёт ведётся с конца, например этот выход будет отражать значение первого бита для 00000001),
  • Out2 - бит 2,
  • Out3 - бит 3,
  • Out4 - бит 4,
  • Out5 - бит 5,
  • Out6 - бит 6,
  • Out7 - бит 7,
  • Out8 - бит 8. #### BitsToByte

BitsToByte - преобразование набора битов на входе в байт на выходе.

BitsToByte.png

Входы:

  • In1 - бит 1 (отсчёт ведётся с конца, например этот вход будет отражать значение первого бита для 00000001),
  • In2 - бит 2,
  • In3 - бит 3,
  • In4 - бит 4. * In5 - бит 5,
  • In6 - бит 6,
  • In7 - бит 7,
  • In8 - бит 8. Выходы:
  • Out - выходной байт, собранный из входных битов.

TON

TON - реализует логику таймера с задержкой включения..

TON.png

Входы:

  • In - boolean вход (0/1).

Выходы:

  • Out - boolean выход (0/1).

Свойства:

  • Interval (ms) - задержка включения (в миллисекундах).

Логика: Если вход In = 1 - таймер начинает работу. Спустя время Interval, таймер начинает подавать на выход значение 1 (до этого он подавал 0).

TOF

TOF - реализует логику таймера с задержкой выключения.

TOF.png

Входы:

  • In - boolean вход (0/1).

Выходы:

  • Out - boolean выход (0/1).

Свойства:

  • Interval (ms) - задержка включения (в миллисекундах).

Логика: Если вход In = 0 - таймер начинает отсчёт. Спустя время Interval, таймер начинает подавать на выход значение 0 (до этого он подавал 1).

TP

TP - блок, реализующий логику TP таймера.

TP.png

Входы:

  • In - вход (0/1).

Выходы:

  • Out - выход (0/1).

Свойства:

  • Interval (ms) - интервал времени (в миллисекундах).

Логика: Блок TP выдает импульс заданной длительности (Interval (ms)) при активации входа. Повторный импульс не продлевает замкнутое состояние.

Multiplexer

Multiplexer - блок, реализующий логику мультиплексора.

Multiplexer.png

Входы:

  • Control - вход контроля (беззнаковое целое),
  • In1-8 - сигнальные входы.

Выходы:

  • Out - значение с одного из сигнальных входов.

Логика: На управляющий вход Control подаётся беззнаковое целое число - индекс сигнального входа, с которого нужно передать значение на выход. Индекс может быть числом от 1 до 8 (включительно) и соответствует количеству сигнальных входов.

Selector

Selector - блок, хранящий в себе значение, позволяющий делать его инкремент/декремент с шагом Step, а также устанавливать новое значение со входа Set (при Reset равном 1). В случае, если изначально значение не было задано (например Reset = 0, а предыдущего значения пока нет), то на выход подаётся значение свойства MinValue и оно же сохраняется в память блока.

Selector.png

Входы:

  • Inc - инкрементировать (1/0);
  • Dec - декрементировать (1/0);
  • Set - значение для установки;
  • Reset - установить значение со входа Set в качестве текущего (1/0).

Выходы:

  • Out - выходное значение.

Свойства:

  • MinValue - минимальное значение;
  • MaxValue - максимальное значение;
  • Step - шаг инкремента/декремента;
  • Cyclic - если 0, то при выходе за границу (MinValue, MaxValue) на выход передаётся MinValue или MaxValue соответственно (ограничение как в блоке Clamp); если 1 - при выходе за границу (MinValue, MaxValue) на выход подаётся значение с цикличным сдвигом (например: MinValue = 3, MaxValue = 6, Step = 4, Inc = 1, Dec = 0; на выход подаётся значение 4).

Сдвиг для выхода за нижнюю границу рассчитывается по формуле:

  • Out = MaxValue - ( |MinValue - CurrentValue| mod |MaxValue - MinValue| ),

Сдвиг для выхода за верхнюю границу рассчитывается по формуле:

  • Out = MinValue + ( |CurrentValue - MaxValue| mod |MaxValue - MinValue| ),
    где CurrentValue - текущее значение, которое нужно подать на выход.

AvgMedian

AvgMedian - блок, считающий среднее значение, отбрасывая те значения, которые не входят в область 3*сигма.

AvgMedian.png

Входы:

  • In1-In7 - входы датчиков.

Выходы:

  • Out - среднее значение.

PulseGenerator

PulseGenerator - генератор импульсов.

PulseGenerator.png

Входы:

  • In - вход (0/1).

Выходы:

  • Out - выход (0/1).

Свойства:

  • Interval (ms) - интервал между импульсами (в миллисекундах);
  • Duration (ms) - продолжительность импульсов (в миллисекундах).

Логика: выдает на выходе true заданной длительности (Duration) с заданным интервалом (Iterval), пока управляющий вход - true.

Set interval

Set interval - реализует логику отправки значения по интервалу.

SetInterval.png

Входы:

  • In - вход.

Выходы:

  • Out - выход.

Свойства:

  • Interval (ms) - временной промежуток в миллисекундах.

Логика: отправляет каждый раз по истечении интервала (Interval) значение со входа In на выход Out, если интервал ещё не истёк отправляется 0. #### Valve control

Valve control - реализует логику контроля клапана.

ValveСontrol.png

Входы:

  • In - вход (любые значения с плавающей точкой).

Выходы:

  • Out - выход.

Свойства:

  • Preventative closing(bool) - профилактическое закрытие клапана;
  • Interval (hours) - через сколько часов необходимо осуществить профилактическое закрытие клапана;
  • Duration (ms) - сколько миллисекунд держать закрытым.

Особенности блока: корректно работает только в режиме обновления схемы по интервалу.

Логика:

Под словами “закрыть клапан” имеется ввиду то, что на выход будет передаваться значение 0 всё время пока “клапан будет закрыт”. Когда “клапан открыт” - значение со входа In пересылается на выход Out.

Если Preventative closing = true - блок находится в рабочем состоянии. Он будет “закрывать клапан” через Interval часов на время Duration (мс).

Если Preventative closing = false - блок просто передаёт значение со входа In на выход Out.

5. Schemes (схемы)

Схемы - копии первичного шаблона, в которых доступны изменения пути каналов и фидебков(вкладка Inputs/Outputs). Одна и та же схема может быть использована, как стандартный сценарий логики разных команд и фидбеков.

*Изменение блоков отвечающих за логику приведет к изменению других блоков в шаблоне.

Каждая схема содержит свой список блоков Inputs/Outputs(IO). IO - уникальные переменные, к которым обращается схема. Добавление схемы можно осуществить двумя способами:
1. Add Blocks_clone_plus.png- нажав "+" произойдет копирование блоков, связей. Путь к каналу/тегу/токену не копируется.

Block_InstCopy.png

2. CloneBlocks_clone.png - полное копирование схемы. Путь к каналу/тегу/токену копируется.

Block_InstClone.png

6. Панель отладки схемы

Кнопки отладки схемы.

Кнопки предназначены только для отладки текущей схемы. Можно проверить работу схему не запуская проект.

Launch - запуск схемы и проверка работоспособности. Наличие ошибок, или результаты логирования можно увидеть в поле лога.

Clear log - удаляет записи из поля лога.

Blocks_debug.png

7. Лог последнего запуска схемы. Исходный код сформированный на основе блочной логики

Лог запуска схемы

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

Blocks_Log.png

Исходные код сформированный на основе блочной логики

Выбрав вкладку "Code", можно переместиться в область с отображением кода сформированного на базе выстроенной блочной схемы.

Исходный код, сформированный на основе блочной логики. Носит информативный характер.

Blocks_code.png

8. Свойства схемы

*Name, *Active:

    • True,
    • False. *Run Mode:
    • On Tag Change,
    • By Interval.

Name - Наименование схемы.

Active - Состояние схемы. True - схема работает, происходит вычисление внутри схемы. False - схема неактивна, вычисления не производятся.

Run Mode - Режим запуска схемы, имеет следующие параметры:

On Tag Change - запуск схемы при изменении значений в теге(токене);

By Interval - запуск схемы с заданным интервалом. Добавляет в свойства схемы параметр Interval(время указывается в милисекундах). Для запуска схемы разово при старте сервера, установите значение 0. Block_SchemeProp.png

9. Свойства блока

Свойства блока отображают рабочие параметры блока. Имеет два обязательных параметра Name и Type. В зависимости от типа блока может иметь параметр Value.

*Name. *Type. *Value.

Name - Наименование блока.

Type - тип блока, который выбран в схеме. Можно изменить тип вручную из выпадающего меню, тип блока изменится и это отобразится на схеме. Если ваш блок имел выход/вход связанный с другим блоком, и вы изменили его тип на противоположный, то связь с последующим блоком исчезнет.

*Value - В зависимости от типа блока Value можно задавать в числовом значении, либо указывать путь к тегу, каналу, токену.

Blocks_BlockProp.png

В этой статье: