paCore. Основная библиотека проекта

В данном разделе приведено описание основных блоков обязательной в проекте библиотеки paCore. Описание соответствует версии библиотеки 979 и выше.

Об установке библиотек см. в разделе.

Работа с типами данных

Типы данных

Типы данных paCore

Обозначение в среде

Название типа

Описание

Размер в памяти

Диапазон значений

Аналоги названий

chr, i8

Байт

Целое значение со знаком. Signed 8-bit integer

1 байт

-128…127

sint, int8, TINYINT, INT1

uch, ui8, reg

Байт без знака

Целое значение без знака. Unsigned 8-bit integer

1 байт

0…255

Byte

int, i16

Целое

Целое значение со знаком. Signed 16-bit integer

2 байта

-32768…32767

INT, SMALLINT, INT2

uns, u16, rg2

Целое без знака

Целое значение без знака. Unsigned 16-bit integer

2 байта

0…65535

WORD

lng, i32, l32

Длинное целое

Целое значение со знаком. Signed 32-bit integer

4 байта

-2147483648…2147483647

DINT, INT4

ulg, u32, rg4, ul32

Длинное целое без знака

Целое значение без знака. Unsigned 32-bit integer

4 байта

0…

4294967295

UDINT

i64

Двойное длинное целое

Двойное целое значение со знаком. Signed 64-bit integer

8 байт

-9223372036854775808…9223372036854775807

-

u64

Двойное длинное целое без знака

Двойное целое значение без знака. Unsigned 64-bit integer

8 байт

0…18446744073709551615

-

flt

Вещественное

Вещественное значение со знаком. Данные в формате с плавающей запятой

4 байта

-3.4E+38…

1.18E-38

и

1.18E-38…

3.4E+38

Float, Real

double

Вещественное двойное

Вещественное значение со знаком. Данные в формате с плавающей запятой

8 байта

-1.7E+308…

1.18E-308

и

1.18E-308…

1.7E+308

Double

b, bool, boolean, bit

Логический

Принимает значение 0 или 1

1 бит

0,1

Bit

s40, s50, s100, str

Строковый

Cтроки символов

-*

-

String

Примечание
* Максимальный размер строки определяет количество резервируемой памяти, размер задан в квадратных скобках, тип str ограничений на размер не имеет.

Кроме представленных в таблице типов данных используются массивы и перечисления.

Массив – массив данных определенного типа:

  • i32a - массив типа int32;

  • fa - массив данных типа float.

Перечисление – список констант, определяемый конкретным входом. Для входа с типом Перечисление невозможно задать значение, отличное от заданных в выпадающем списке. Обозначение: enm.

Очередь битов – позволяет накапливать очередь битовых значений в таймерном потоке. Обозначение: qb. Подробнее в разделе.

Другие типы в разделе Типы данных, кроме вышеперечисленных, являются системными.

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

Цвет связей отображает тип данных входа:

  • черный – булевое;

  • красный – целое;

  • синий – вещественное;

  • серый – строковое.

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

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

Если вход/выход блока имеет системный тип данных, то создать связь можно только с выходом/входом того же типа.

Преобразователи типов

Преобразование типов можно осуществить вручную, используя блоки Flt_Un, Flt_Ul, Uc_flt, Us_Flt и др. из раздела Преобразователи типов.

Блок преобразует значение одного типа данных в другой.

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

Алгоритм:

out = in
Graphic

Константы

Блоки Константа повторяют на выходе значение входа – Real, Integer, Reg2 и др. из раздела Преобразователи типов. Блок инициализируется константой на входе, не нулем.

Инициализация:

y = fi

Алгоритм:

y = fi
Graphic
Константы

Терминальные блоки

Терминальные блоки повторяют на выходе значение входа – TransFlt, TransInt, TransBit и др. Данные блоки удобно использовать в качестве сбора входных и выходных параметров на одной странице программы. Блок инициализируется константой на входе, не нулем.

Назначение входов и выходов:

  • l0, l1,,ln – входные значения;

  • o0, o1,,on – выходные значения.

Инициализация:

oi = li, где I = 0…n

Алгоритм:

oi = li, где I = 0…n
Graphic

Для передачи массивов используются терминальные блоки Transi32A, TransFA, TransStor и др. Блок повторяет на выходе массив соответствующего входа. Данные блоки удобно использовать в качестве сбора входных и выходных параметров на одной странице программы. Блок инициализируется массивом на входе, не нулем.

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

Назначение входов и выходов:

  • in0, in1,,inn – входные массивы;

  • o0, o1,,on – выходные массивы.

Инициализация:

oi = ini, где I = 0…n

Алгоритм:

oi = ini, где I = 0…n
Graphic

Арифметические блоки

Сложение (Add)

Функция Add вычисляет сумму своих входов. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • f0, f1,,fn – слагаемые;

  • sum – сумма.

Инициализация:

sum = 0

Алгоритм:

sum = f0 + f1 + … + fn
Graphic
Add

Целочисленное сложение (Addl)

Функциональный блок Addl производит целочисленное сложение. Аргументы являются целыми числами. Если на вход подается связь с выхода другого типа, то при выполнении программы происходит преобразование типов. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • in0, in1,,inn – слагаемые;

  • sum – сумма.

Инициализация:

sum = 0

Алгоритм:

sum = in0 + in1 + … + inn
Graphic

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

Функция Sub вычисляет разность двух аргументов. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • f1 – уменьшаемое;

  • f2 – вычитаемое;

  • out – разность.

Инициализация:

out = 0

Алгоритм:

out = f1 - f2
Graphic

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

Функция Mul вычисляет произведение своих входов. Число входов задается при создании функционального блока, и может быть изменено в процессе редактирования программы. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • f0, f1,,fn – множитель;

  • out – произведение множителей.

Инициализация:

out = 0

Алгоритм:

out = f1 ∙ f2 ∙…∙ fn
Graphic

Деление (Div)

Функция Div вычисляет частное своих аргументов. Если делитель равен нулю, то выставляется флаг ошибки, на выходе устанавливается 1. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выход инициализируется 1.

Назначение входов и выходов:

  • f1 – делимое;

  • f2 – делитель;

  • out – частное от деления;

  • zf – флаг ошибки.

Инициализация:

out = 1; zf = 0

Алгоритм:

Если f2 = 0 → zf = 1, out = 1, иначе out = f1/f2, zf = 0
Graphic

Целочисленное деление (Divl)

Функция Divl производит целочисленное деление. Вычисляет неполное частное и остаток. Если делитель равен нулю, то выставляется флаг ошибки, на выходе остается прежнее значение. Аргументы являются целыми числами. Если на вход подается связь с выхода другого типа, то при выполнении программы происходит преобразование типов. Раздел библиотеки: Арифметические. Выход инициализируется 1.

Назначение входов и выходов:

  • i1 – делимое;

  • i2 – делитель;

  • out – частное от деления;

  • rem – остаток от деления;

  • zf – флаг ошибки.

Инициализация:

out = 1; rem = 0; zf = 0

Алгоритм:

Если i2 = 0 → zf = 1, out = out_old, иначе out = i1/i2, rem = i1 - (out ∙ i2), zf = 0, где out_old – значение выхода в предыдущем цикле выполнения программы
Graphic

Корень квадратный (Sqrt)

Функция Sqrt вычисляет корень квадратный своего аргумента. Если аргумент отрицательный, то выставляется флаг ошибки, на выходе корень квадратный из модуля аргумента. Аргумент является вещественным числом. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in – аргумент;

  • out – значение корня квадратного от аргумента;

  • nf – флаг ошибки.

Инициализация:

out = 0; zf = 0

Алгоритм:

Если in ≤ 0 → nf = 1, out = √(|in|), иначе out = √in, nf = 0
Graphic
Корень квадратный (Sqrt)

Инверсия значения (Inv)

Функция Inv инвертирует знак входного значения. Аргумент является вещественным числом. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • in – аргумент;

  • out – инвертированный вход.

Инициализация:

out = 0

Алгоритм:

out = -in
Graphic

Абсолютное значение (Abs)

Функция Abs определяет модуль и знак числа. Если на вход подается отрицательное значение, то выставляется флаг знака. Аргумент является вещественным числом. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in – аргумент;

  • out – модуль входа;

  • sf – флаг знака.

Инициализация:

out = 0, sf = 0

Алгоритм:

out = |in|, sf – знак in, если in > 0 → sf = 0, иначе sf = 1
Graphic

Минимальное/максимальное значение (MinMax)

Функция MinMax ищет минимальное и максимальное значения среди набора входов. Число входов задается при создании функционального блока, его можно изменить в процессе редактирования программы. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in0, in1,,inn – входы;

  • max – максимальное значение;

  • min – минимальное значение.

Инициализация:

max = 0, min = 0

Алгоритм:

min = min (in0, in1, …, inn), max = max (in0, in1, …, inn)
Graphic

Селектор минимального/максимального значения (MinMax2)

Функция MinMax2 ищет минимальное и максимальное значения среди набора входов, и определяет индекс минимального и максимального входа. Число входов задается при создании функционального блока, его можно изменить в процессе редактирования программы. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in0, in1,,inn – входы;

  • max – максимальное значение;

  • min – минимальное значение;

  • mxn – индекс максимума;

  • mnn – индекс минимума.

Инициализация:

max = 0, min = 0, mxn = 0, mnn = 0

Алгоритм:

min = min (in0, in1, …, inn), max = max (in0, in1, …, inn), mxn – индекс максимального значения, mnn – индекс минимального значения
Graphic

Сравнение (Cmpr)

Функция Cmpr сравнивает два входа. В зависимости от их отношения выставляет флаги больше, меньше или равно. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in1 – вход 1;

  • in2 – вход 2;

  • uf – флаг «больше»;

  • ef – флаг «равно»;

  • if – флаг «меньше».

Инициализация:

uf = 0, ef = 0, if = 0

Алгоритм:

Graphic

Маскирование (Mask)

Функция Mask производит побитное умножение аргумента на маску. Аргументы являются целыми числами. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • i1 – вход;

  • i2 – маска;

  • out – выход.

Инициализация:

out = 0

Алгоритм:

out = i1 & i2
Graphic

Сдвиг влево (Shrl)

Функция Shrl производит побитовый сдвиг влево числа i1 на i2 бит. Аргументы являются целыми числами. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • i1 – вход;

  • i2 – величина сдвига;

  • out – выход.

Инициализация:

out = 0

Алгоритм:

out = i1 ≪ i2
Graphic

Сдвиг вправо (Shrr)

Функция Shrr производит побитовый сдвиг вправо числа i1 на i2 бит. Аргументы являются целыми числами. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • i1 – вход;

  • i2 – величина сдвига;

  • out – выход.

Инициализация:

out = 0

Алгоритм:

out = i1 ≫ i2
Graphic

Табличная функция (TabF)

Функциональный блок производит кусочно-линейную аппроксимацию зависимости y = f(x), заданной табличной функцией, и вычисление в заданной точке. Табличная функция задается набором пар (x, y). Для корректной работы блока наборы пар (x, y) должны быть упорядочены по возрастанию x. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • val – значение x;

  • x0, x1, ..., xn – набор абсцисс;

  • y0, y2, ..., yn – набор соответствующих ординат;

  • out – значение y.

Инициализация:

out = 0

Алгоритм: при нахождении значения функции используется алгоритм кусочно-линейной аппроксимации

Если val < x0 → out = y0, если val > xn → out = yn
Graphic

Экспонента (Exp)

Функция Exp производит вычисление экспоненциальной функции от своего аргумента. Аргумент является вещественным числом. Раздел библиотеки: Арифметические. Выход инициализируется 0.

Назначение входов и выходов:

  • in – аргумент;

  • out – выход, значение ограничено интервалом [exp(-37), exp(10)].

Инициализация:

out = 0

Алгоритм:

out = exp(in)
Graphic

Логарифм (Ln)

Функция Ln вычисляет натуральный логарифм своего аргумента. Аргумент является вещественным числом. Раздел библиотеки: Арифметические. Выход инициализируется 1.

Назначение входов и выходов:

  • in – аргумент;

  • out – выход, снизу ограничен ln(1.0e - 15).

Инициализация:

out = 1

Алгоритм:

out = ln(in)
Graphic

Возведение в степень (Pow)

Функция Pow производит возведение в степень аргумента функции. Если производится возведение в степень отрицательного числа в нецелочисленную степень, то степень округляется до ближайшей целой. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выход инициализируется 1.

Назначение входов и выходов:

  • in – аргумент;

  • pw – степень;

  • out – выход, значение ограничено интервалом [1.0e - 18; 1.0e + 18].

Инициализация:

out = 1

Алгоритм:

out = inpw
Graphic

Сложение некоторых слагаемых (SumGR)

Блок SumGR вычисляет сумму входов, у которых en ≠ 0. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in0, in1, ..., inn – слагаемые;

  • en0, en1, ..., enn – разрешающие флаги;

  • sum – сумма;

  • cnt – количество слагаемых.

Инициализация:

sum = 0, cnt = 0

Алгоритм: при нахождении значения функции используется алгоритм кусочно-линейной аппроксимации

Если en0, en1, …, enn ≠ 0 → sum = in0 + in1 + … + inn, cnt = n
Graphic

Пакетное умножение и округление (mb_ai)

Блок mb_ai производит умножение входа на множитель. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • x0, x1, ..., xn – аргументы;

  • m0, m1, ..., mn – множители;

  • y0, y1, ..., yn – выходы.

Инициализация:

y0, y1, ..., yn = 0

Алгоритм:

yi = xi ∙ mi, I = 1, 2, …, n
Graphic

Пакетное умножение (mb_ao)

Блок mb_ao производит умножение входа на множитель. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Аргументы являются целыми числами. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • x0, x1, ..., xn – аргументы;

  • m0, m1, ..., mn – множители;

  • y0, y1, ..., yn – выходы.

Инициализация:

y0, y1, ..., yn = 0

Алгоритм: 

yi = xi ∙ mi, I = 1, 2, …, n
Graphic
Пакетное умножение (mb_ao)

Округление (flt_round)

Блок flt_round вычисляет несколько вариантов округления для входного значения. Аргумент является вещественным числом. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in – значение;

  • rnd – до ближайшего целого;

  • up – в большую сторону;

  • dn – в меньшую сторону.

Инициализация:

rnd = 0, up = 0, dn = 0
Graphic

Определение знака (Sign)

Функция Sign производит определение знака входного значения относительно базового. Аргументы являются вещественными числами. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in – вход;

  • x0 – базовое значение;

  • out – знак;

  • inv – инверсия знака;

  • zer– признак равенства.

Инициализация:

out = 0, inv = 0, zer = 0

Алгоритм:

Graphic
Определение знака (Sign)

Переворачивание байт в слове (SwapBytes)

Функция SwapBytes меняет местами байты в двухбайтном числе. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Аргументы являются целыми числами. Раздел библиотеки: Арифметические. Выходы инициализируются 0.

Назначение входов и выходов:

  • in0, in1, ..., inn – входы

  • o0,o1, ..., on – выходы.

Инициализация:

o0, o1, ..., on = 0

Алгоритм:

ini [byte1, byte2] → oi = ini [byte2, byte1], I = 1, 2, …, n
Graphic
Переворачивание байт в слове (SwapBytes)

Арифметические блоки для аргументов double, long, Uint64

Арифметические блоки для аргументов double, long, Uint64 представлены в соответствующих группах в разделе библиотеки Арифметические. Описание представленных блоков аналогично описанию соответствующих блоков, приведенному выше.

Логические блоки

Логическое И (AND)

Функциональный блок AND производит логическое умножение своих входов. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Логические. Выход инициализируется 0.

Назначение входов и выходов:

  • b0, b1, ..., bn – входы;

  • q – логическое произведение;

  • inv – инвертированное логическое произведение.

Инициализация:

q = 0, inv = 1

Алгоритм: 

q = b0 & b1 &…& bn, inv = !(q)

Пример для блока с двумя входами:

Graphic

Логическое ИЛИ (OR)

Функциональный блок OR производит логическое сложение своих входов. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Логические. Выход инициализируется 0.

Назначение входов и выходов:

  • b0, b1, ..., bn – входы;

  • q – логическое сложение;

  • inv – инвертированное логическое сложение.

Инициализация:

q = 0, inv = 1

Алгоритм: 

q = b0 ∪ b1 ∪ … ∪ bn, inv = !(q)

Пример для блока с двумя входами:

Graphic
OR

Логическое НЕ-И (nAND)

Функциональный блок nAND производит логическое умножение с инверсией своих входов. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Логические. Выход инициализируется 0.

Назначение входов и выходов:

  • b0, b1, ..., bn – входы;

  • q – логическое произведение инверсных входов;

  • inv – инвертированное q.

Инициализация:

q = 0, inv = 1

Алгоритм:

q = !(b0) & !(b1) & … & !(bn), inv = !(q)

Пример для блока с двумя входами:

Graphic

Логическое НЕ (NOT)

Функциональный блок NOT производит логическую инверсию своего входа. Раздел библиотеки: Логические. Выход инициализируется 0.

Назначение входов и выходов:

  • b1 – вход;

  • q – логическое отрицание.

Инициализация:

q = 0

Алгоритм:

q = !(b1)
Graphic

Логическое НЕ-ИЛИ (nOR)

Функциональный блок nOR производит логическое сложение с инверсией своих входов. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Логические. Выход инициализируется 0.

Назначение входов и выходов:

  • b0, b1, ..., bn – входы;

  • q – логическое сложение инверсных входов;

  • inv – инвертированное q.

Инициализация:

q = 0, inv = 1

Алгоритм:

q = !(b0) ∪ !(b1) ∪ … ∪ !(bn), inv = !(q)
Graphic

Логическое сложение по модулю два (XOR)

Функциональный блок XOR производит логическое суммирование по модулю два своих входов. Раздел библиотеки: Логические. Выход инициализируется 0.

Назначение входов и выходов:

  • b1, b2 – входы;

  • q – сумма по модулю два.

Инициализация:

q = 0

Алгоритм:

q = b1 ⊕ b2
Graphic

Логическое ИЛИ с блокировкой (Bl_Or)

Функциональный блок Bl_Or осуществляет алгоритм логического ИЛИ среди входов x и y. Наличие единицы на входе блокировки запрещает все выходы, кроме собственного. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Логические. Выходы инициализируются 0.

Назначение входов и выходов:

  • x0, x1, ..., xn – входы;

  • y0, y1, ..., yn – соответствующие блокировки;

  • out0, out1, ..., outn – выходы.

Инициализация:

out0, out1, ..., outn = 0

Алгоритм:

outi = xi | yi & !(y0 | y1 | … | yi – 1 | yi + 1 │ … | yn)
Graphic

Детектор фронтов (Fronts)

Функциональный блок Fronts сравнивает предыдущее значение входа с настоящим и анализирует на наличие фронтов и спадов. Раздел библиотеки: Логические. Выходы инициализируются 0.

Назначение входов и выходов:

  • i – вход;

  • f01 – бит, сигнализирующий о приходе фронта на входе;

  • f10 – бит, сигнализирующий о приходе спада на входе.

Инициализация:

f01 = 0, f10 = 0

Алгоритм:

Если i_old = 0 & i = 1 → f01 = 1, если i_old = 1 & i = 0 → f10 = 1, где i_old – значение входа на предыдущем цикле выполнения программы
Graphic

Детектор логического канала (bDetect)

Функциональный блок bDetect определяет номер входа, на котором произошел перепад значения из 0 в 1. Если перепад произошел на нескольких входах, обнаруживается только самый поздний. Если перепада нет ни на одном входе, то num = -1. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Логические. Выход инициализируется 0.

Назначение входов и выходов:

  • b0, b1, ..., bn – входы;

  • num – номер входа, на котором произошел перепад.

Инициализация:

num = 0

Алгоритм: num – номер входа, на котором произошел перепад из 0 в 1, начинается с 0

Graphic
Детектор логического канала (bDetect)

Контроль ключа (LogContr)

Функциональный блок LogContr определяет запрещенные состояния ключа, которые задаются двумя логическими сигналами. Раздел библиотеки: Логические. Выход инициализируется 0.

Назначение входов и выходов:

  • b0, b1 – входы;

  • n_z – запрещенное состояние;

  • m_1 – больше одной единицы.

Инициализация:

n_z = 0, m_1 = 0

Алгоритм:

Graphic
Контроль ключа (LogContr)

Тригонометрические функции

Синус (Sin)

Функция Sin вычисляет синус аргумента. Раздел библиотеки: Тригонометрические функции. Выход инициализируется 0.

Назначение входов и выходов:

  • in – вход;

  • out – выход.

Инициализация:

out = 0

Алгоритм:

out = sin(in)
Graphic

Косинус (Cos)

Функция Cos вычисляет косинус аргумента. Раздел библиотеки: Тригонометрические функции. Выход инициализируется 0.

Назначение входов и выходов:

  • in – вход;

  • out – выход.

Инициализация:

out = 0

Алгоритм:

out = cos(in)
Graphic

Тангенс (Tan)

Функция Tan вычисляет тангенс аргумента. Раздел библиотеки: Тригонометрические функции. Выход инициализируется 0.

Назначение входов и выходов:

  • in – вход;

  • out – выход.

Инициализация:

out = 0

Алгоритм: 

out = tan(in)
Graphic

Арктангенс (ATan)

Функция ATan вычисляет арктангенс аргумента. Раздел библиотеки: Тригонометрические функции. Выход инициализируется 0.

Назначение входов и выходов:

  • in – вход;

  • out – выход, диапазон изменения [-π/2 ≤ out ≤ π/2].

Инициализация:

out = 0

Алгоритм: 

out = atan(in)
Graphic

Арксинус (ASin)

Функция ASin вычисляет арксинус аргумента. Раздел библиотеки: Тригонометрические функции. Выход инициализируется 0.

Назначение входов и выходов:

  • in – вход, диапазон изменения [-1.0 ≤ in ≤ 1.0];

  • out – выход, диапазон изменения [-π/2 ≤ out ≤ π/2]

    ;
  • q – флаг ошибки.

Инициализация:

out = 0, q = 0

Алгоритм: 

Если -1.0 ≤ in ≤ 1.0 → out = asin(in), q = 0, если in > 1 → out = π/2, q = 1, если in < -1 → out = -π/2, q = 1
Graphic

Арккосинус (ACos)

Функция ACos вычисляет арксинус аргумента. Раздел библиотеки: Тригонометрические функции. Выход инициализируется 0.

Назначение входов и выходов:

  • in – вход, диапазон изменения [-1.0 ≤ in ≤ 1.0];

  • out – выход, диапазон изменения [0 ≤ out ≤ π];

  • q – флаг ошибки.

Инициализация:

out = 0, q = 0

Алгоритм:

Если -1.0 ≤ in ≤ 1.0 → out = acos(in), q = 0, если in > 1 → out = 0, q = 1, если in <-1 → out = π, q = 1
Graphic

Переключатели, реле и мультиплексоры

Дешифратор (Decoder)

Функциональный блок Decoder выставляет 1 на одном из своих выходов. Индекс выхода задает входная переменная. Если значение входа выходит за рамки интервала [0…количество выходов - 1], то все выходы равны 0. Число выходов задается при создании функционального блока, которые задаются в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • sel – номер выхода;

  • o0, o1, ..., on – выходы.

Алгоритм:  

o[sel] = 1
Graphic

Ключ (Key)

Функциональный блок Key передает значение своего входа на выход при 1 на управляющем входе и выдает 0 на выходе при 0 на управляющем входе. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • x – вход;

  • i – управляющий вход;

  • out – выход.

Алгоритм: 

Если i = 1 → out = x, иначе out = 0
Graphic

Коммутатор 8-битных регистров (R8Switch)

Функциональный блок R8Switch передает на свой выход значение одного из своих входов в зависимости от управляющего сигнала i. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • in1, in2 – входы типа reg;

  • i – управляющий бит;

  • out – выход типа reg.

Алгоритм: 

Если i = 1 → out = in1, иначе out = in2
Graphic

Коммутатор вещественных переменных (fSwitch)

Функциональный блок fSwitch передает на свой выход значение одного из своих входов в зависимости от управляющего сигнала i. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • x1, x2 – входы типа flt;

  • i – управляющий бит;

  • out – выход типа flt.

Алгоритм: 

Если i = 1 → out = x1, иначе out = x2
Graphic

Коммутатор логических переменных (lSwitch)

Функциональный блок lSwitch передает на свой выход значение одного из своих входов в зависимости от управляющего сигнала i. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • x1, x2 – входы логического типа;

  • i – управляющий бит;

  • out – выход логического типа.

Алгоритм:

Если i = 1 → out = x1, иначе out = x2 Если i = 1 → out = x1, иначе out = x2
Graphic

Коммутатор строковых переменных (txtSwitch)

Функциональный блок txtSwitch передает на свой выход значение одного из своих входов в зависимости от управляющего сигнала i. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • str1, str2 – входы типа str;

  • cross – управляющий бит;

  • str1o, str2o – выходы типа str.

Алгоритм:

Если cross = 1 → str1o = str2, str2o = str1, иначе str1o = str1, str2o = str2
Graphic

Коммутатор целых переменных (iSwitch)

Функциональный блок iSwitch передает на свой выход значение одного из своих входов в зависимости от управляющего сигнала i. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • x1, x2 – входы целого типа;

  • i – управляющий бит;

  • out – выход целого типа.

Алгоритм:  

Если i = 1 → out = x1, иначе out = x2
Graphic

Релейный каскад вещественных переменных (fltRelay)

Функциональный блок fltRelay в зависимости от управляющего входа передает на каждый свой выход значение одного из входов группы с тем же индексом. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • x0, x1, , xn – входы типа flt;

  • y0, y1, , yn – входы типа flt;

  • upr – управляющий бит;

  • o0, o1, , on – выходы типа flt.

Алгоритм:

Если upr = 1 → oi = xi, иначе oi = yi, где i = 1, 2, …, n
Graphic

Релейный каскад логических переменных (logRelay)

Функциональный блок logRelay в зависимости от управляющего входа передает на каждый свой выход значение одного из входов группы с тем же индексом. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • x0, x1, , xn – входы логического типа;

  • y0, y1, , yn – входы логического типа;

  • upr – управляющий бит;

  • o0, o1, , on – выходы логического типа.

Алгоритм:

Если upr = 1 → oi = xi, иначе oi = yi, где i = 1, 2, …, n
Graphic

Управление реле (SetSW)

Блок SetSW осуществляет потенциальное и импульсное управление реле с обратной связью. Выход потенциального управления out = 1, если управление inp и разрешение enb равны 1.

На выходах импульсного управления on и off выдаются импульсы длиной в один таймерный интервал (если блок находится в Таймере) соответственно при включении и выключении выхода out.

Ошибка err выдается, если обратный сигнал ret не появился в течение таймаута cnt (задается в миллисекундах). Для правильной работы таймера ошибки данный блок необходимо размещать в Таймере, а значения cnt задавать кратными времени таймерного цикла. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • inp – управление;

  • ret – обратная связь;

  • cnt – таймер ошибки, мс;

  • enb – разрешение;

  • out – потенциальное управление;

  • on – включение (импульсное);

  • off – выключение (импульсное);

  • err – ошибка.

Graphic

Выбор одного из целых значений (SelectUI)

Блок SelectUI выводит на выход первое из входных значений, для которого en = 1. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • val0, val1, , valn – входы;

  • en0, en1, , enn – выбор входа;

  • out – выбранное значение.

Алгоритм:  

Если eni = 1 → out = vali, где i = 1, 2, …, n
Graphic

Вывод значения на заданный выход (ShowSW)

Блок ShowSW выводит значение входа spc на соответствующий выход o при появлении его номера на входе num (входы нумеруются от 1). Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • num – номер входа;

  • def – значение по умолчанию;

  • spc0, spc1, , spcn – входы;

  • o0, o1, , on – выходы.

Инициализация:

oi = def

Алгоритм: 

Для каждого входа, если i = num - 1, oi = spci, иначе oi = def
Graphic

Мультиплексор вещественных значений (MuxFlt)

Функциональный блок MuxFlt передает значение своего входа с индексом sel на выход. Если индекс выходит за рамки интервала [0количество входов - 1], то на выходе остается предыдущее значение. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры. Изначально выход инициализируется 0.

Назначение входов и выходов:

  • sel – номер входа;

  • in0, in1, , inn – входы;

  • out – выход.

Инициализация:

out = 0

Алгоритм: 

out = in[sel]
Graphic

Мультиплексор целых значений (MuxInt)

Функциональный блок MuxFlt передает значение своего входа с индексом sel на выход. Если индекс выходит за рамки интервала [0количество входов - 1], то на выходе остается предыдущее значение. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры. Изначально выход инициализируется 0.

Назначение входов и выходов:

  • sel – номер входа;

  • in0, in1, , inn – входы;

  • out – выход.

Инициализация:

out = 0

Алгоритм:

out = in[sel]
Graphic

Выбор одного из вещественных значений (FCascSw)

Блок FCascSw выводит на выход первое из входных значений, для которого l = 1. Если все l = 0, то на выход выводится значение по умолчанию DEF, и признак Q выставляется в 1. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры. Изначально выход инициализируется 0.

Назначение входов и выходов:

  • DEF – значение выхода по умолчанию;

  • x0, x1, , xn – входы;

  • l0, l1, , ln – выбрать значение;

  • Y – выход;

  • Q – признак значения по умолчанию.

Алгоритм:

Если li = 1 → Y = xi, где i = 1, 2, …n, если l0, l1, …, ln = 0 → Y = DEF, Q = 1
Graphic

Выбор строки (Switch_str)

Блок Switch_str выводит на выход строку, для которой cond = 1. Если несколько входов имеют значение cond = 1, то на выход выводится значение строки из входа, у которого наибольший порядковый номер и cond = 1. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов:

  • str0, str1, …, strn – входы;

  • cond0, cond1, , condn – выбрать строку;

  • str_out – выход.

Алгоритм: 

Если condi = 1 → str_out = stri, где i = 1, 2, …, n
Graphic

Дешифратор уставок (Settings)

Блок Settings представляет собой дешифратор уставок. Раздел библиотеки: Переключатели, реле и мультиплексоры.

Назначение входов и выходов Settings
ЭлементОписание
Входы

nust

Текущий номер уставки

val

Значение текущей уставки

nout

Номер уставки для вывода на выход vout

n0

Начальный номер уставок in

wen

Разрешение записи из val в o

ren

Разрешение чтения из o в vout

in

Значение инициализации уставки (циклический)

Выходы

vout

Последнее прочитанное/записанное значение уставки с номером nout

wrtng

Фронт записи

rdng

Фронт чтения

o

Текущее значение уставки (циклический)

Graphic
Дешифратор уставок (Settings)

Генераторы и таймеры

Генератор импульсов (Pulse)

Функциональный блок Pulse генерирует импульсы заданной ширины в ответ на появление фронта на его управляющем входе. Ширина импульса T задается в миллисекундах. Длительность паузы соответствует величине цикла, в котором размещен блок. Раздел библиотеки: Генераторы и таймера.

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

Назначение входов и выходов:

  • I – управление;

  • T – ширина импульса, мс;

  • q – выход.

Инициализация:

q = 0
Graphic
Graphic

Включение с задержкой (DelayOn)

Функциональный блок DelayOn реагирует на фронт на управляющем входе I через заданное время задержки T. Если управляющий бит сбросится, логический таймер также сбросится и будет ожидать следующего фронта на управляющем входе. Раздел библиотеки: Генераторы и таймера.

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

Назначение входов и выходов:

  • I – управление;

  • T – время задержки, мс;

  • q – выход.

Инициализация:

q = 0
Graphic
Graphic

Выключение с задержкой (DelayOff)

Функциональный блок DelayOff при установлении управляющего бита I устанавливает выходной бит q, инициализирует логический таймер – блок переходит в режим ожидания спада управляющего бита. После спада управляющего бита выходной бит сбрасывается через время задержки T. Если до истечения времени задержки выставится управляющий бит, логический таймер сбросится и будет ожидать следующего спада управляющего бита. Раздел библиотеки: Генераторы и таймера.

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

Назначение входов и выходов:

  • I – управление;

  • T – время задержки, мс;

  • q – выход.

Инициализация:

q = 0
Graphic
Алгоритм блока DelayOff
Graphic

Половинный импульс после половины паузы (HalfPulse)

Блок HalfPulse выдает импульс длительности T/2 после паузы T/2 по перепаду 0 в 1 на входе I. Раздел библиотеки: Генераторы и таймера.

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

Назначение входов и выходов:

  • I – управление;

  • T – длительность, мс;

  • q – выход.

Инициализация:

q = 0
Graphic
Graphic

Генератор сигналов (GenSign)

Блок GenSign генерирует сигналы различной формы. Раздел библиотеки: Генераторы и таймера.

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

Назначение входов и выходов:

  • Tsg – период сигнала в секундах;

  • Amp – амплитуда сигнала;

  • Shf – смещение сигнала по оси ординат;

  • Aut – включение периодичности сигнала;

  • Dis – сброс сигнала;

  • sin – синусоида;

  • line – пила;

  • sqw – меандр;

  • l1,l2 – логические биты.

Инициализация:

sin = line = sqw = l1 = l2 = 0

Алгоритм:

  1. Если Aut = 0, тогда сигналы на выходе имеют следующий вид:

    Graphic
    Алгоритм блока GenSign при Aut = 0
  2. Если Aut = 1, тогда сигналы на выходе имеют следующий вид:

    Graphic
    Алгоритм блока GenSign при Aut = 1

    Если установить и сбросить бит Dis, сигнал начнет генерироваться со значения Shf.

Graphic

Логический таймер со взводом (AdvTimer)

Блок AdvTimer передает на выход q с управляющего входа после задержки по времени T. Взвод осуществляется по входу set при I = 1. Раздел библиотеки: Генераторы и таймера.

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

Назначение входов и выходов:

  • I – управление;

  • T – задержка, мс;

  • set – задержка;

  • q – выход;

  • t – значение таймера.

Инициализация:

q = 0, t = T
Graphic
Graphic

Генератор импульсов с заданной скважностью (PulseGeneratorEx)

Блок PulseGeneratorEx при enbl = 1 на входе формирует на выходе логические импульсы заданной скважности: длительность импульса задается входом t1, длительность паузы –входом t2. Выходы t_on и t_off ведут отсчет текущего времени импульса и паузы, соответственно. Раздел библиотеки: Генераторы и таймера.

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

Назначение входов и выходов:

  • t1 – длительность импульса, мс;

  • t2 – длительность паузы, мс;

  • enbl – разрешение работы;

  • out – выход;

  • t_on – текущее время импульса, мс;

  • t_off – текущее время паузы, мс.

Инициализация:

out = 0
Graphic
Алгоритм блока PulseGeneratorEx
Graphic
Ex

Генератор случайных чисел (rndgen)

Блок rndgen выдает на выходе случайные числа в диапазоне от -amp до +amp. Раздел библиотеки: Генераторы и таймера.

Назначение входов и выходов:

  • amp – амплитуда;

  • out – случайное значение.

Graphic

Универсальный счетчик (CounterCTN)

Универсальный счетчик CounterCTN используется для прямого и обратного счета. Операция «прямой счет» выполняется по переднему фронту импульса на входе прямого счета inU, что увеличивает значение выходного сигнала out. Импульсы, приходящие на вход inD («обратный счет»), уменьшают значение выхода out. Если на вход rst поступает сигнал логической 1, то выход счетчика out устанавливается в значение входа n. Раздел библиотеки: Генераторы и таймера.

Если на входы inU и inD одновременно поступают сигналы, то приоритетным является сигнал входа inU. Допустимый диапазон значений числа импульсов n: от 0 до 65535.

Назначение входов и выходов:

  • inU – вход импульсов прямого счета;

  • inD – вход импульсов обратного счета;

  • rst – логический вход;

  • n – установленное значение импульсов;

  • out – выход.

Graphic
Graphic

Инкрементный счетчик (CounterCTU)

Инкрементный счетчик CounterCTU используется для подсчета числа импульсов, приходящих на вход in. На выходе out счетчика появится импульс сигнала логической 1, если число приходящих на вход импульсов достигнет установленного значения на входе n. Счетчик сбрасывается в 0 по переднему фронту импульса на входе rst. Раздел библиотеки: Генераторы и таймера.

Если сигналы поступают на входы одновременно, то приоритетным является сигнал входа rst. Допустимый диапазон значений числа импульсов n: от 0 до 65535.

Назначение входов и выходов:

  • in – вход импульсов прямого счета;

  • rst – импульсный вход для сброса выхода счетчика в 0;

  • n – установленное значение импульсов;

  • out – выход.

Graphic
Graphic

Инкрементный счетчик с автосбросом (CounterCT)

Инкрементный счетчик с автосбросом CounterCT используется для подсчета заданного числа импульсов n. На выходе out счетчика появится импульс сигнала логической 1 длительностью в один цикл, если число приходящих на вход in импульсов достигнет установленного значения n. Раздел библиотеки: Генераторы и таймера.

Допустимый диапазон значений числа импульсов n: от 0 до 65535.

Назначение входов и выходов:

  • in – вход импульсов;

  • n – устанавливаемое значение импульсов;

  • out – выход.

Graphic
Graphic

Обработка сигналов

Cимметричный ограничитель сигнала (LimSim)

Функциональный блок LimSim является симметричным (на величину val) ограничителем входного сигнала inp. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • inp – входной сигнал;

  • val – величина ограничения (абсолютное значение);

  • dis – команда обнуления выхода;

  • out – выходной сигнал ограничителя.

Инициализация:

out = 0

Алгоритм:

dis = 0 → out = inp, если inpval → out = val, если inp < -val → out = -val, dis = 1 → out = 0
Graphic
Cимметричный ограничитель сигнала (LimSim)

Аппроксимация обратной функции (Approx)

Блок Approx для заданной табличной функции y = f(x) производит аппроксимацию обратной функции x = g(y). Табличная функция y = f(x) задается массивом tab_y значений y, соответствующих значениям x аргумента, выбранным из диапазона [minx...maxx] с шагом hx. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • y – табличная функция;

  • hx – шаг x;

  • minx – минимум x;

  • maxx – максимум x;

  • ty0, ty1, , tyn – значения y для x0, x1, , xn

    ;
  • x – обратная функция.

Инициализация:

out = 0

Алгоритм: используется кусочно-линейная аппроксимация по двум соседним точкам.

Graphic

Кусочно-линейная интерполяция (KL_Interp)

Блок вычисляет значение функции y, заданную таблично (x0, y0, ...), при значении аргумента, равном in. Используется кусочно-линейная интерполяция. Значение dlt задает смещение значения y относительно значений в точках x0, x1, …, которое используется, если edl = 1. Если значение x не входит в диапазон, заданный точками x0, x1, , то выставляется флаг ошибки err. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • in – значение x;

  • dlt – смещение y;

  • edl – учитывать смещение;

    ;
  • t0, t1, , tn – значение y0, y1, , yn;

  • c0, c1, , cn – значение x0, x1, , xn;

  • out – значение y;

  • err – флаг ошибки.

Инициализация:

out = 0, err = 0

Алгоритм: вычисление значения функции основано на кусочно-линейной интерполяции.

Graphic

Несимметричный ограничитель сигнала (Lim)

Функциональный блок Lim является Функциональный блок является ограничителем входного сигнала inp. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • inp – входной сигнал;

  • max – верхняя граница;

  • min – нижняя граница;

  • out – выход;

  • uf – inp > max;

  • if – inp < min.

Инициализация:

out = 0

Алгоритм:

out = inp, если inp > max → out = max, uf = 1, если inp < min → out = min, if = 1
Graphic

Группа ограничителей сигнала (Lims)

Функциональный блок Lims представляет собой группу ограничителей сигнала val. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • vali – входы;

  • maxi – верхняя граница i-го входа;

  • mini – нижняя граница i-го входа;

  • oi – выходы.

Инициализация:

oi = 0

Алгоритм:

o = val, если val > max → o = max, если val < min → o = min
Graphic

Градиентный фильтр (GradLim)

Функциональный блок GradLim ограничивает рост входного сигнала Q, сравнивая приращение этой величины с заданной величиной допустимого приращения dQ. Если приращение не превышает заданного, блок работает как усредняющий по двум значениям фильтр. В противном случае на выходе блока устанавливается величина out[i - 1] ± dQ, а индикатор lf устанавливается в единицу. Дискретизация по времени задается стробирующим входом enbl. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • Q – вход;

  • dQ – допустимое приращение;

  • enbl – стробирующий вход;

  • out – выход;

  • if – приращение больше заданного.

Инициализация:

out = 0, if = 0

Алгоритм:

out = out[i - 1] ± dQ, при -dQ < Q - out[i - 1] < dQ, out = out[i - 1] + Q, иначе
Graphic
Градиентный фильтр (GradLim)

Определение принадлежности к диапазону (Inside)

Функциональный блок Inside определяет принадлежность значения входной переменной val к заданному диапазону (a…b) с допуском нечувствительности eps (от -eps/2 до +eps/2). Если значение val находится внутри диапазона, то блок устанавливает выход isd = 1 (внутри). Если же значение val находится вне диапазона, блок задает выход osd = 1 (снаружи). Единица на выходе apx указывает на то, что значение val находится вблизи границы диапазона (в зоне нечувствительности). Это свойство может оказаться полезным для задания гистерезисных зависимостей. Если это не нужно, необходимо задать eps = 0. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • val – вход;

  • a – нижняя граница;

  • b – верхняя граница;

  • eps – гистерезис;

  • enbl – разрешение на работу блока;

  • isd – внутри;

  • osd – снаружи;

  • apx – в зоне нечувствительности.

Инициализация:

isd = 0, osd = 0, apx = 0
Graphic

Параболический ограничитель (SqLim)

Блок SqLim обнаруживает выход входного значения за ограничивающие параболы. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • dp – вход;

  • q – x параболы;

  • k1 – коэффициент 1;

  • k2 – коэффициент 2;

  • gt – больше верхней;

  • lt– ниже нижней;

  • alm – выход за пределы.

Инициализация:

gt = 0, lt = 0, alm = 0

Алгоритм:

Если q > 0.01 → gt = 1, если dqk2∙q∙q, itlt1, если dq < k1∙q∙q, иначе gt = 1, если dq > 0, lt = 1, если dq < 0, alm = gt∪lt
Graphic

Фильтр Баттерворта (BatterFilter)

Блок BatterFilter представляет из себя фильтр Баттерворта с постоянной времени Tx и коэффициентом демпфирования g. Для адекватной работы фильтра необходимо размещать данный блок в Таймере. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • in – вход;

  • Tx – постоянная времени;

  • g – коэффициент демпфирования;

  • out – выход.

Инициализация:

out = 0
Graphic

Нормализация шкалы (Scale)

Блок Scale осуществляет линейное преобразование диапазонов без ограничителя. Аргументы являются вещественными числами. Раздел библиотеки: Обработка сигналов. Выход инициализируется 0.

Назначение входов и выходов:

  • x – вход;

  • minx – минимум входа;

  • maxx – максимум входа;

  • miny – минимум выхода;

  • maxy – максимум выхода;

  • y – выход.

Инициализация:

y = 0

Алгоритм:

Если (max(x) - min(x)) > 0.001 → y =  (max(y) - min(y))/(max(x) - min(x))∙(x - min(x)) + min(y), иначе y = min(y)
Graphic

Преобразователь для модуля термосопротивления (5B34Conv)

Блок 5B34Conv предназначен для согласования 50-Омных термосопротивлений типа 50П и 50М с входными модулями типа 50П. Для согласования точки 0 °C последовательно с датчиком подключается постоянное сопротивление 50 Ом. Для пересчета показаний результат измерения с функционального блока аналогового входа заводится на вход t блока 5B34Conv. При использовании датчика типа 50М вход type устанавливается в 1, а для 50П – в 2. Раздел библиотеки: Обработка сигналов.

Диапазон работы функционального блока: для 50П -150 °C … 200 °C, для 50М -50 °C … 200 °C.

Назначение входов и выходов:

  • t – вход;

  • type – тип (1, 2);

  • out – выход.

Инициализация:

out = 0

Алгоритм:

type = 1: t > -50,5 → out = 2,02∙t, иначе out = 1.33∙t-32.8. type = 2: t > -10,8 → out = 1,83∙t, иначе out = 4.62∙t + 29.9
Graphic

Интерполяция (Interpolation)

Блок Interpolation производит интерполяцию функции, заданной на входах x и y. Если функция задана неправильно, либо количество num превышает заданное, выставляется признак ошибки sts. Если en = 0, то out = in. Раздел библиотеки: Обработка сигналов.

Блок можно размещать только в Фоне.

Назначение входов и выходов:

  • en – включение блока;

  • typ – тип (0 – линейная, 1 – сплайн Акима);

  • num – количество точек;

  • ctrl –не используется;

  • cfg – не используется;

  • in – вход;

  • x0, x1, , xn – значения x;

  • y0, y1, , yn – значения y;

  • out – выход;

  • sts – ошибка.

Graphic

Симметричная мертвая зона с гистерезисом (FdeadS)

Функциональный блок FdeadS является симметричной (на величину val) мертвой зоной по отношению к сигналу inp. Отличие данного ФБ от блока Симметричная мертвая зона состоит в том, что при выходе сигнала inp за пределы мертвой зоны в блоке формируется внутренний флаг, который скачком отключает ее. Сброс флага происходит в момент смены полярности входного сигнала inp. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • inp – вход;

  • val – мертвая зона;

  • dis – отключение мертвой зоны;

  • out – выход.

Инициализация:

out = 0
Graphic

Симметричная мертвая зона (DbandS)

Функциональный блок DbandS является симметричной (на величину val) мертвой зоной по отношению к сигналу inp. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

inp – вход;

val – мертвая зона;

dis – отключение мертвой зоны;

out – выход.

Инициализация:

out = 0

Алгоритм:

dis = 0: out = 0, если inp > val → out = inp - val, если inp < -val → out = inp + val. type = 2:t > -10,8 → out = 1,83∙t, dis = 1: out = inp
Graphic

Диагностика сигналов датчиков (SensSpd)

Блок SensSpd анализирует скорость изменения входного сигнала inp и ограничивает его, если скорость превышает заданную spd. Блок сравнивает текущее значение сигнала inp и его значение на предыдущем цикле выполнения программы, а скорость spd задает максимально допустимое изменение сигнала в секунду. При отключении диагностики dis = 0 сигнал inp передается на выход out без изменений, hsp = 0 и nul = 0. Первые 10 циклов программы диагностика отключена независимо от значения dis. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • inp – вход;

  • spd – скорость;

  • dis – включить;

  • out – выход;

  • hsp – высокая скорость;

  • nul – не изменился.

Инициализация:

out = 0, hsp = 0, nul = 0

Алгоритм:

Если inp = inp[i - 1] → nul = 1, out = inp, если inp - out[i - 1] > spd∙таймерный интервал, out = inp + spd∙таймерный интервал, hsp = 1, если inp - out[i - 1] < -spd∙таймерный интервал, out = inp - spd∙таймерный интервал, hsp = 1, иначе out = inp, hsp = 0, nul = 0
Graphic

Изменение значения за заданное время (ValDif)

Функциональный блок ValDif передает на выход изменение значения val за установленное время time. Раздел библиотеки: Обработка сигналов.

Назначение входов и выходов:

  • val – вход;

  • time – время, мс;

  • diff – разница за время time.

Graphic

Арифметическое скользящее среднее (MovAverage)

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

Назначение входов и выходов:

  • in – вход;

  • W – количество значений входного сигнала для расчета (должно быть меньше mW);

  • mW –максимально количество значений входного сигнала для расчета, неизменяемый вход, значение которого принимается один раз при компиляции, допустимые значения в диапазоне 2…255;

  • bal – максимально количество значений входного сигнала для расчета, неизменяемый вход, значение которого принимается один раз при компиляции, допустимые значения в диапазоне 2…255;

  • out – выход.

Инициализация:

out = in

Алгоритм:

out = 1/W∙∑in_i где in_i – исходные сохраненные за предыдущие периоды значения входного сигнала, W = k - l – сглаживающий интервал – количество значений входного сигнала, используемых для расчета. Если bal = 1 → out = in
Graphic

Операции с регистрами

Объединение 20 битов в регистр (ToReg20)

Блок ToReg20 объединяет 20 битов в регистр. Бит 0 – младший бит регистра, бит 19 – старший. Раздел библиотеки: Операции с регистрами.

Graphic

Объединение 8-ми битов в регистр (ToReg8)

Блок ToReg8 объединяет 8 битов в регистр. Бит 0 – младший бит регистра, бит 7 – старший. Раздел библиотеки: Операции с регистрами.

Graphic

Выбор 8 битов из регистра (FromReg8)

Блок FromReg8 раскладывает байт на 8 бит. Первый выходной бит будет младшим битом байта, последний – старшим. Раздел библиотеки: Операции с регистрами.

Graphic

Объединение 16-ти битов в регистр (ToReg16)

Блок ToReg16 объединяет в слово 16 бит. Первый входной бит будет младшим битом слова, последний – старшим. Раздел библиотеки: Операции с регистрами.

Graphic

Выбор 20 битов из регистра (FromReg20)

Блок FromReg20 раскладывает 4 байта в 20 бит. Первый выходной бит будет младшим битом слова, последний – старшим. Раздел библиотеки: Операции с регистрами.

Graphic

Выбор 16 битов из регистра (FromReg16)

Блок FromReg16 раскладывает слово в 16 бит. Первый выходной бит будет младшим битом слова, последний – старшим. Раздел библиотеки: Операции с регистрами.

Graphic

Логическое И для 16-битных регистров (rAND)

Функциональный блок rAND работает аналогично блоку И, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Операции с регистрами.

Graphic

Логическое ИЛИ для 16-битных регистров (rOR)

Функциональный блок rOR работает аналогично блоку ИЛИ, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Операции с регистрами.

Graphic

Логическое НЕ для 16-битных регистров (rNOT)

Функциональный блок rNOT работает аналогично блоку НЕ, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Раздел библиотеки: Операции с регистрами.

Graphic

Логическое И с отрицанием для 16-битных регистров (rnAND)

Функциональный блок rnAND работает аналогично блоку И с отрицанием, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Операции с регистрами.

Graphic

Логическое ИЛИ с отрицанием для 16-битных регистров (rnOR)

Функциональный блок rnNOR работает аналогично блоку ИЛИ с отрицанием, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Операции с регистрами.

Graphic

Сложение по модулю для 16-битных регистров (rXOR)

Функциональный блок rXOR работает аналогично блоку XOR, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Раздел библиотеки: Операции с регистрами.

Graphic

Склеивание байта из двух тетрад (R4to8)

Блок R4to8 собирает 8-ми битный регистр из младшей тетрады регистра low и старшей тетрады регистра high. Раздел библиотеки: Операции с регистрами.

Graphic

Детектор фронтов для 16-битных регистров (Fronts2)

Функциональный блок Fronts2 работает аналогично блоку детектора фронтов, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Раздел библиотеки: Операции с регистрами.

Graphic

Склеивание слова из двух байт (R8to16)

Блок R8to16 собирает 16-ти битный регистр из младшего регистра low и старшего регистра high. Раздел библиотеки: Операции с регистрами.

Graphic

Преобразование 16-битного регистра в два 8-битных (R16to8)

Блок R16to8 разбивает 16-битный регистр на два 8-битных. Раздел библиотеки: Операции с регистрами.

Graphic

Преобразование двух 16-битных регистров в 32-битный (R16to32)

Блок R16to32 склеивает 32-битный регистр из двух 16-битных. Раздел библиотеки: Операции с регистрами.

Graphic

Преобразование 32-битного регистра в два 16-битных (R32to16)

Блок R32to16 разбивает 32-битный регистр на два 16-битных. Раздел библиотеки: Операции с регистрами.

Graphic

Объединение 32 битов в регистр (ToReg32)

Блок ToReg32 объединяет 32 бита в регистр. Бит 0 – младший бит регистра, бит 31 – старший. Раздел библиотеки: Операции с регистрами.

Graphic

Выбор 32 битов из регистра (FromReg32)

Блок FromReg32 раскладывает 4 байта в 32 бита. Первый выходной бит будет младшим битом слова, последний – старшим. Раздел библиотеки: Операции с регистрами.

Graphic

Включение с задержкой для 16-битных регистров (rDelayOn)

Функциональный блок rDelayOn работает аналогично блоку Включение с задержкой, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Раздел библиотеки: Операции с регистрами.

Graphic

Выключение с задержкой для 16-битных регистров (rDelayOff)

Функциональный блок rDelayOff работает аналогично блоку Выключение с задержкой, но обрабатывает параллельно 16 логических сигналов, предварительно объединенных в 16-битный регистр. Раздел библиотеки: Операции с регистрами.

Graphic

Выбор бита из регистра (BitReg16)

Функциональный блок BitReg16 выбирает бит из регистра ireg по указанному номеру ibit. Раздел библиотеки: Операции с регистрами.

Назначение входов и выходов:

  • ireg – регистр;

  • ibit – номер бита;

  • obit – выходной бит.

Graphic

Операции с массивами

Массив вещественных чисел (FloatArray)

Блок FloatArray создает массив из элементов. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Операции с массивами.

Назначение входов и выходов:

  • in0, in1, , inn – элементы типа flt;

  • p_a – массив.

Graphic

Массив 4-байтных целых (i32Array)

Блок i32Array создает массив из элементов. Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Операции с массивами.

Назначение входов и выходов:

  • in0, in1, , inn – элементы типа i32;

  • p_a – массив.

Graphic

Линейная аппроксимация массивов (LineAprox)

Блок LineAprox рассчитывает значение таблично заданных функций при значении аргумента inp. Текущие значения функций выдаются на соответствующие выходы o. Функция задается массивом аргументов arg (общим для всех функций) и массивом значений fun. Размерности всех массивов должны совпадать, иначе на выход будет выдана ошибка err - (-1 - [номер функции]).

Массив аргументов arg должен быть упорядочен либо по возрастанию, либо по убыванию. Если порядок нарушен, то на выход err выдается номер этого элемента (считая с 1). Число входов задается при создании функционального блока, и его можно изменить в процессе редактирования программы. Раздел библиотеки: Операции с массивами.

Внимание

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

Назначение входов и выходов:

  • inp – аргумент;

  • arg – аргументы;

  • fun0, fun1, , funn – функции;

  • err – ошибка;

  • o0, o1, , on – значения функций.

Graphic

Значения массива вещественных чисел (From_fArr)

Блок From_fArr позволяет получить значения элементов вещественного массива, поданного на вход. Раздел библиотеки: Операции с массивами.

Коды ошибок статуса err:

  • 0 – ошибок нет;

  • 1 – выходов блока меньше, чем элементов у входного массива;

  • 2 – выходов больше, чем элементов у входного массива;

  • 3 – на входе отсутствует массив (может быть связано с порядком выполнения блоков).

Назначение входов и выходов:

  • in – массив элементов типа flt

    ;
  • err – статус;

  • out0, out1, , outn – значения элементов массива.

Graphic

Элемент из массива (one_From_fArr)

Блок one_From_fArr позволяет получить значение i-го элемента из массива, поданного на вход. Раздел библиотеки: Операции с массивами.

Коды ошибок статуса err:

  • 0 – ошибок нет;

  • 1 – выбранный номер элемента находится за пределами массива;

  • 2 – на входе отсутствует массив (может быть связано с порядком выполнения блоков).

Назначение входов и выходов:

  • in – массив элементов типа flt;

  • i – номер элемента;

  • err – статус;

  • out – значения элемента.

Graphic

Нахождение минимума/максимума в массиве (minmax_fArr)

Блок minmax_fArr определяет минимальное и максимальное значение из элементов массива, поданного на вход. Раздел библиотеки: Операции с массивами.

Коды ошибок статуса err:

  • 0 – ошибок нет;

  • 1 – на входе отсутствует массив (может быть связано с порядком выполнения блоков).

Назначение входов и выходов:

  • in – массив элементов типа flt;

  • err – статус;

  • min – минимум;

  • max – максимум.

Graphic
Нахождение минимума-максимума в массиве (minmax_fArr)

Нахождение разницы между элементами массива (minmax_sub_fArr)

Блок minmax_sub_fArr минимальное и максимальное значение разницы соседних элементов массива, поданного на вход. Раздел библиотеки: Операции с массивами.

Коды ошибок статуса err:

  • 0 – ошибок нет;

  • 1 – на входе отсутствует массив (может быть связано с порядком выполнения блоков).

Назначение входов и выходов:

  • in – массив элементов типа flt;

  • err – статус;

  • min – минимальная разница соседей;

  • max – максимальная разница соседей.

Graphic

Переключатель массивов (switch_fArr)

Блок switch_fArr принимает на входы два массива вещественных чисел и выдает на выход один из них, в зависимости от состояния управляющего входа i: при i = 0 — массив in2, в остальных случаях — массив in1. Раздел библиотеки: Операции с массивами.

Коды ошибок статуса err:

  • 0 – ошибок нет;

  • 1 – на входе отсутствует массив (может быть связано с порядком выполнения блоков).

Назначение входов и выходов:

  • in1, in2 – массивы элементов типа flt;

  • err – статус;

  • p_a – выходной массив.

Graphic

Значения массива целых (From_i32Arr)

Блок From_i32Arr позволяет получить значения элементов целочисленного массива, поданного на вход. Раздел библиотеки: Операции с массивами.

Коды ошибок статуса err:

  • 0 – ошибок нет;

  • 1 – выходов блока меньше, чем элементов у входного массива;

  • 2 – выходов больше, чем элементов у входного массива;

  • 3 – на входе отсутствует массив (может быть связано с порядком выполнения блоков).

Назначение входов и выходов:

in – массивы элементов типа i32;

err – статус;

out0, out1, , outn – значения элементов массива.

Graphic

Триггеры

Триггер Шмидта (SmTrig)

Блок SmTrig осуществляет алгоритм симметричного триггера Шмидта. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • x – аргумент;

  • m – уставка;

  • dm – гистерезис;

  • fu – больше;

  • fl – меньше.

Алгоритм:

fl = 1 при x ≤ m+ dm, fu = 1 при x > m + dm
Graphic
Graphic

Двойной триггер Шмидта (SmTrig2)

Блок SmTrig осуществляет алгоритм двойного симметричного триггера Шмидта. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • x – аргумент;

  • m – центр уставки;

  • dm – гистерезис;

  • l – отклонение уставки;

  • fu – больше;

  • fm – между;

  • fl – меньше.

Алгоритм:

fl = 1 при x < m – l + dm, fm = 1 при m – l + dm ≤ x < m + l - dm, fu = 1 при x ≥ m + l - dm
Graphic
Graphic

RSS-триггер (RSS)

RSS – RS-триггер с S-доминантой. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • s – бит установить (set);

  • r – бит сбросить (reset);

  • q – выход;

  • inv – инверсный выход.

Инициализация:

q = 0

Алгоритм:

Graphic

RSR-триггер (RSR)

RSR – RS-триггер с R-доминантой. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • s – бит установить (set);

  • r – бит сбросить (reset);

  • q – выход;

  • inv – инверсный выход.

Инициализация:

q = 0

Алгоритм:

Graphic

D-триггер с инициализацией выхода (DFR_i)

DFR_i – D-триггер с R- доминантой. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • i – перепад;

  • d – потенциал;

  • s – бит установить (set);

  • r – бит сбросить (reset);

  • ini – инициализация;

  • q – выход;

  • qn – инверсный выход.

Инициализация:

q = ini

Алгоритм:

Graphic

JK-триггер с инициализацией (JK _i)

JK _i – JK-триггер с инициализацией. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • j – бит job;

  • k – бит keep;

  • s – бит установить (set);

  • r – бит сбросить (reset);

  • ini – начальное значение q;

  • q – выход;

  • qn – инверсный выход.

Инициализация:

q = ini

Алгоритм:

Graphic

RSS-триггер с инициализацией выхода (RSS_i)

RSS – RS-триггер с S-доминантой с инициализацией. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • s – бит установить (set);

  • r – бит сбросить (reset);

  • i – начальное значение q;

  • q – выход.

Инициализация:

q = i

Алгоритм:

Graphic

RSR-триггер с инициализацией выхода (RSR)

RSR – RS-триггер с R-доминантой с инициализацией. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • s – бит установить (set);

  • r – бит сбросить (reset);

  • i – начальное значение q;

  • q – выход.

Инициализация:

q = i

Алгоритм:

Graphic

D-триггер (DFR)

DFR – D-триггер с R- доминантой. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • i – перепад;

  • d – потенциал;

  • s – бит установить (set);

  • r – бит сбросить (reset);

  • q – выход;

  • qn – инверсный выход.

Инициализация:

q = 0

Алгоритм:

Graphic

DV-триггер (DFRV)

DFRV– DV-триггер с R- доминантой. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • is – потенциал;

  • i – перепад;

  • s – бит установить (set);

  • r – бит сбросить (reset);

  • q – выход;

  • qn – инверсный выход.

Инициализация:

q = 0

Алгоритм:

Graphic

Несимметричный триггер Шмидта (asymSmTrig)

Блок SmTrig осуществляет алгоритм несимметричного триггера Шмидта. Раздел библиотеки: Триггеры.

Назначение входов и выходов:

  • x – аргумент;

  • min – нижний гистерезис;

  • max – верхний гистерезис;

  • l – отклонение уставки;

  • fu – больше;

  • fl – меньше.

Инициализация:

fu = 0, fl = 0

Алгоритм: первые три цикла fu = 1 при x > max, fl = 1 при x ≤ max, затем см. рисунок ниже.

Graphic
Graphic

Шаговая последовательность (Steper)

Блок Steper осуществляет последовательное переключение заданного количества шагов. Раздел библиотеки: Триггеры.

Назначение входов и выходов Steper
ЭлементОписание
Входы

enb

Разрешение работы

str

Пуск

rst

Сброс

t_f

Не используется

i

Разрешение (циклический)

t

Таймаут (циклический)

a

Сигнал (циклический)

Выходы

ind

Номер шага

s_w

Идет работа

s_t

Таймаут

s_r

Сброс

s_f

Конец работы

w

Признак работы (циклический)

t

Признак таймаута (циклический)

r

Авария (циклический)

Работа последовательности возможна только при наличии 1 на входе разрешения enb:

  • если enb = 0 до запуска, то запуск не произойдет;

  • если enb = 0 после запуска, то последовательность сбрасывается и на выходы выдается авария: s_r = 1 и ri = 1 (для всех i).

Запуск последовательности происходит при появлении перепада 0 → 1 на входе str.

Каждый шаг представлен группой входов i, t и a и выходов w, t и r. Включение шага происходит после завершения предыдущего шага и при i = 1, а на выходе признака работы w выставляется 1. Если к моменту включения шага его разрешение i не равно 1, то последовательность сбрасывается и на выходы выдается авария: s_r = 1 и ri = 1 (для всех i). Шаг завершается, когда блок получает 1 на входе ответного сигнала a. Если сигнал a не получен в течение времени t (задается в мс) с момента включения шага, то последовательность сбрасывается и на выход выдается признак таймаута: s_t = 1 и t = 1.

Graphic

Системные

В данном разделе приведено описание основных блоков библиотеки paCore из раздела Системные.

Информация о временах выполнения (SysInfo)

Блок SysInfo выдает информацию о временах выполнения. Раздел библиотеки: Системные.

Назначение входов и выходов SaverEx
ЭлементОписание
Входы

fmap

Имя map-файла

rst

Сброс

Выходы

init

Не используется

IT

Заданный таймерный цикл ввода-вывода

ic

Текущий таймерный цикл ввода-вывода

im

Максимальный таймерный цикл ввода-вывода

MT

Заданный таймерный цикл

tc

Текущий таймерный цикл

tm

Максимальный таймерный цикл

fc

Текущий фон

fm

Максимальный фон

crc

Не используется

inm0

Не используется (циклический)

cnt0

Не используется (циклический)

Graphic

Получить время и дату, день недели (getTDN)

Блок getTDN выдает на выходы текущее время и дату, день недели, установленные в ОС контроллера. Блок можно размещать как в Таймере, так и в Фоне. Раздел библиотеки: Системные.

Назначение входов и выходов:

  • f – не используется;

  • h – часы;

  • m – минуты;

  • s – секунды;

  • dw – день недели;

  • d – число;

  • mn – месяц;

  • y – год.

Graphic

Получить время и дату (getTD)

Блок getTD выдает на выходы текущее время и дату, установленные в ОС контроллера. Блок можно размещать как в Таймере, так и в Фоне. Раздел библиотеки: Системные.

Назначение входов и выходов:

  • f – не используется;

  • h – часы;

  • m – минуты;

  • s – секунды;

  • d – число;

  • mn – месяц;

  • y – год.

Graphic

Завершение программы (Exit)

Блок Exit осуществляет корректное завершение программы, когда на входе b1 появляется 1. Раздел библиотеки: Системные.

Назначение входов и выходов:

  • b1 – выйти;

  • q – значение входа.

Graphic

Разность тиков процессора (GetTicksDiff)

Блок GetTicksDiff предназначен для проведения высокоэффективных измерений малых временных промежутков. Раздел библиотеки: Системные.

Блок определяет разность между двумя входными значениями start и end (полученными при помощи блоков Счетчик тиков процессора), переводя ее в единицы измерения времени (мс) на выходе ms.

На выходе ms фиксируется последнее полученное значение до момента изменения на входе end.

Внимание
Для получения корректного результата последовательность выполнения блоков должна удовлетворять следующим условиям: GetTicks(start) < GetTicks(end) < GetTicksDiff.

Назначение входов и выходов:

  • start – тик начала;

  • end – тик окончания;

  • ms – разница между входами, мс;

  • pday – частота процессорного счетчика, кГц;

  • min – не используется для контроллеров ОВЕН.

Graphic

Счетчик тиков процессора (GetTicks)

Блок GetTicks в связке с блоком Разность тиков процессора позволяет выполнять высокоэффективные измерения малых временных промежутков. Раздел библиотеки: Системные.

Если на вход блока enb подан ненулевой сигнал, то на выходе tcks текущее значение внутреннего независимого цикличного счетчика.

При нулевом сигнале на входе, на выходе фиксируется последнее полученное значение счетчика (если измерений не было – 0).

Назначение входов и выходов:

  • end – включение;

  • tcks – тик.

Graphic

Загруженность таймерного потока (Effect)

Блок Effect выдает информацию о загруженности таймерного потока. Раздел библиотеки: Системные.

Назначение входов и выходов Effect
ЭлементОписание
Входы

rst

Сброс

Выходы

mt

Таймерный цикл основной

it

Таймерный цикл ввода-вывода

ctm

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

cti

Средний процент заполнения ввода-вывода цикла программой ввода-вывода

mtm

Средний процент заполнения ввода-вывода цикла программой ввода-вывода

mti

Максимальный процент заполнения ввода-вывода цикла программой ввода-вывода

cf

Средний процент от величины таймера работы фоновой программы

mf

Максимальный процент от величины таймера работы фоновой программы

Graphic

Событие по фронту (Event)

Блок Event предназначен для определения времени между событиями. На вход блока front заводится бит события. По входному фронту на выходе time блока будет значение времени в наносекундах. Раздел библиотеки: Системные.

Назначение входов и выходов:

  • front – входной фронт;

  • me – событие;

  • time – время срабатывания, нс.

Graphic

TCP/IP клиент (TcpIpClA)

Блок TcpIpClA представляет собой TCP/IP-клиент для обеспечения работы протоколов (например, Modbus TCP Master). Раздел библиотеки: Системные.

Так как работа блока занимает значительное время, его можно размещать только в Фоне.

Назначение входов и выходов:

  • lprt – локальный порт;

  • lip – локальный IP-адрес;

  • sdr – сетевой стек, для ПЛК ОВЕН "/";

  • rprt – удаленный порт;

  • ip – IP адрес удаленного сервера;

  • cnc – связь с блоком протокола;

  • stat – статус работы (0 – есть связь с TCP/IP сервером, >0 – нет связи).

Graphic

TCP/IP сервер (TcpIpSrA)

Блок TcpIpSrA представляет собой TCP/IP-сервер для обеспечения работы протоколов (например, Modbus TCP Slave). Сервер поддерживает одновременно не более 20 подключений. Раздел библиотеки: Системные.

Назначение входов и выходов:

  • prt – порт;

  • lip – локальный IP-адрес;

  • sdr – сетевой стек, для ПЛК ОВЕН "/";

  • wait – время в миллисекундах до закрытия пустого канала (0 – никогда);

  • cnc – связь с блоком протокола;

  • stat – статус работы (0 – есть подключения, >0 – нет подключений).

Graphic

Информация о сборке (BuildVersionInfo)

Блок BuildVersionInfo передает на свои выходы информацию о сборке. Раздел библиотеки: Системные.

Назначение выходов:

  • ver – версия проекта;

  • date – дата и время трансляции;

  • guid – уникальный идентификатор (GUID);

  • usr – имя пользователя;

  • pc – имя компьютера.

Graphic
BuildVersionInfo

Информация о накопителе (DriveInfo)

Функциональный блок DriveInfo используется для получения информации о накопителе по имени (адресу устройства). Раздел библиотеки: Системные.

По факту наличия восходящего фронта на вход start ФБ выполняет разовую выдачу информации о накопителях.

Для цикличного обновления информации о накопителе необходимо обеспечить цикличную подачу восходящего фронта на вход start.

Назначение входов и выходов:

  • start – запуск работы блока по восходящему фронту (0 1);

  • driveName – адрес накопителя в системе (до 49 символов);

  • error – накопитель отсутствует или недоступен;

  • capacity – общий объем накопителя, Кбайт;

  • used – занятый объем накопителя, Кбайт;

  • available – доступный объем накопителя, Кбайт.

Graphic
DriveInfo

Асинхронное выполнение команд Linux (SysExecute)

Функциональный блок SysExecute используется для отправки команды в терминал Linux и получения ответа. Раздел библиотеки: Системные.

Интерфейс данного блока соответствует CAA Behavior Model (PLCopen Behavior Model).

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

Внимание
Вызываемые команды могут выполняется в неблокирующем режиме. Поток может освобождаться после подачи команды и через определенное время забирать ее ответ. Для этого в конце команды необходимо добавить знак '&' (амперсанд).

Если результат выполнения команды содержит более 1023 символов, выполнение команды будет прервано, будут подняты флаги done, error, но результат работы будет содержаться в output.

Запуск выполнения команды не произойдет, если поднят флаг прерывания abort.

Назначение входов и выходов:

  • execute – запуск выполнения команды по восходящему фронту (0 1);

  • command – текст команды;

  • abort – запуск прерывания исполнения команды по восходящему фронту (0 1);

  • priority – приоритет потока ожидания выполнения команды, по умолчанию 5;

  • output – результат выполнения команды (менее 1024 символов);

  • done – выполнение завершено;

  • aborted – выполнение было прервано;

  • busy – идет работа;

  • error – работа была прервана из-за переполнения результирующей строки.

Graphic

Менеджер потоков (ThreadMan)

Блок ThreadMan предоставляет возможности управления и диагностики фоновых потоков исполнительной системы. Раздел библиотеки: Системные.

Назначение входов и выходов:

  • slp – время сна (простоя) фоновых потоков в мкс, в этот промежуток времени управление передается другим потокам. Если задано значение 0 или блок ThreadMan не добавлен в проект, то время простоя задается таймерным промежутком места работы Таймер;

  • btd – включение диагностики времени выполнения блоков: 0 – выключена, 1 – включена. Если диагностика включена, то в отладчике у каждого блока отображается время его выполнения, если выключена, то время выполнения всегда отображается как 1 мкс, что означает, что блок работает. На некоторых контроллерах выключение диагностики может существенно оптимизировать время выполнения всей программы;

  • num – количество запущенных дополнительных фоновых потоков (не включает Таймер, Ввод-вывод и Фон);

  • prio_max – максимально разрешенный приоритет для дополнительных фоновых потоков, зависит от ОС и не может быть изменен. Для места работы Поток в проекте следует выбирать приоритет ниже prio_max;

  • pmin – минимальный приоритет из запущенных дополнительных фоновых потоков;

  • pmax – максимальный приоритет из запущенных дополнительных фоновых потоков.

Graphic

Последовательный порт (SerialPort)

Блок SerialPort представляет собой драйвер COM-порта, поддерживает системный последовательный порт под Linux и Windows. Раздел библиотеки: Системные.

Назначение входов и выходов SerialPort
ЭлементОписание
Входы

dev

Имя устройства (например, ser1, COM2)

spd

Скорость в бодах: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 128000, 256000, 153600, 230400, 460800, 921600

par

Контроль четности:

0 – нет;

1 – нечетный;

3 – четный

stb

Количество стоповых бит: 1 или 2

dtb

Количество бит данных: 7 или 8

Выходы

cnc

Связь с блоком протокола

stat

Статус:

1 – корректная работа;

-1 – в системе не найдено устройство с именем dev;

-2 – к выходу cnc не подключен блок протокола

rcnt

Количество полученных байт

wcnt

Количество отправленных байт

diag

Диагностический – счетчик разности между количеством ошибок и принятыми (не может быть меньше 0)

Graphic
Последовательный порт (SerialPort)

Работа со строками

Длина строки (StrLen)

Блок StrLen осуществляет подсчет количества символов len в строке s. Раздел библиотеки: Работа со строками.

Назначение входов и выходов:

  • s – строка;

  • len – длина.

Graphic

Часть строки (StrNmp)

Блок StrNmp выделяет часть входной строки начиная с позиции n и длиной m (1-й символ строки имеет позицию 0). Если n и m заданы так, что длины исходной строки недостаточно, то выходная строка res ограничивается концом входной строки. Раздел библиотеки: Работа со строками.

Назначение входов и выходов:

  • s – строка;

  • n – начало;

  • m – длина;

  • res – выходная строка.

Graphic

Слияние строк (StrApp)

Блок StrApp сливает входные строки s в одну результирующую строку str. В выходной строке строки расположены в том же порядке, что и входы s. Длина каждой строки s не должна превышать 60 символов. Раздел библиотеки: Работа со строками.

Назначение входов и выходов:

  • s0, s1, , sn – строки;

  • res – результирующая строка.

Graphic

Сохранение данных

Хранение параметров на диске (SaverEx)

Блок SaverEx обеспечивает хранение данных в архиве на диске контроллера в виде бинарного файла. Раздел библиотеки: Сохранение данных.

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

Назначение входов и выходов SaverEx
ЭлементОписание
Входы

rst

Сброс ошибок записи

fnm

Абсолютный путь и имя файла на диске (может быть пустым – задается автоматически), расширение игнорируется. При сохранении данных на внешнем накопителе следует использовать путь, указанный на выходе блока 210-SD-USB из библиотеки paOwenIO (константный)

wr

Запись на диск

in

Значение параметра (циклический)

typ

Тип параметра (циклический, константный):

DI – 8-ми битный регистр;

AI – вещественное значение;

II – 16-ти битный регистр

ini

Значение для инициализации (циклический, константный)

Выходы

next

Имя следующего файла

enb

Запись разрешена

sts

Статус:

0 – после сброса;

1 – записан;

2 – прочитан;

<0 – ошибка

good

Количество удачных записей

bad

Количество ошибок записи

rej

Количество отклоненных записей

o

Текущее значение параметров (циклический)

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

Данные организуются в виде переменных in с жестко заданным типом typ.

Поскольку входы in имеют тип any, следует строго соблюдать правила преобразования типов при проведении связей.

Если файла не существует на диске – выходы инициализируются значениями инициализации ini, происходит запись в файл.

Если файл существует на диске, выходы инициализируются сохраненными значениями. Запись в файл осуществляется только при изменении значений на входах in.

Запись на диск можно осуществить принудительно, подав команду wr.

Для надежной сохранности данных одновременно на диске находятся два файла, соответствующие одному архиву. Если контроллер будет перезагружен в момент записи на диск, данные не пропадут, а будут доступны предыдущие значения переменных, записанные в другом файле.

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

Если происходит однократная ошибка при записи файла на диск, блок пытается переименовать текущий файл и снова произвести запись. Если повторная запись оказывается удачной, то продолжается работа в обычном режиме, а выход bad инкрементируется. Следует следует принять меры по диагностике или замене носителя, поскольку сбои при записи могут быть следствием скорого выхода его из строя. Файл, на котором произошел сбой, остается на диске под тем же именем с добавленным к нему суффиксом, равным метке времени сбоя (в мс от 1 января 1970 г). Удалять его не желательно, чтобы повторно не использовать потенциально сбойный сектор.

Если происходит повторный сбой записи, то блок блокируется (выход enb = 0) и больше не производит попыток переименований файлов и записи до тех пор, пока ошибки не будут сброшены фронтом на входе rst.

Внимание
При изменении числа входов блока SaverEx файлы на диске перезаписываются.

Подробнее о возможностях и работе блока SaverEx см. в документе Архивирование и сохранение уставок.

Graphic

Счетчик времени наработки (CounterMEx)

Блок CounterMEx предназначен для сохранения в файл наработки устройств, например, насосов. Раздел библиотеки: Сохранение данных.

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

Назначение входов и выходов CounterMEx
ЭлементОписание
Входы

rst

Сброс ошибок записи

fn

Абсолютный путь и имя файла (может быть пустым – задается автоматически), расширение игнорируется. При сохранении данных на внешнем накопителе следует использовать путь, указанный на выходе блока 210-SD-USB из библиотеки paOwenIO (константный)

ask

Запись на диск

slv

Используется для изменения значений счетчиков, если slv = 1, то cnt = mas, cfrn = mcfrn

enbl

Работа устройства (циклический): пока enbl = 1, увеличивается время наработки cfrn, при изменении enbl с 0 на 1 число включений cnt увеличивается на 1

rst

Сброс времени наработки cnt (циклический)

frm

Формат отображения для времени наработки. Не используется

rfr

Сброс числа включений cfrn (циклический)

mas

Балансировка времени наработки cnt (циклический), если slv = 1, то cnt = mas

mcfrn

Балансировка числа включений cfrn (циклический), если slv = 1, то cfrn = mcfrn

Выходы

next

Имя следующего файла

enb

Запись разрешена

good

Количество удачных записей

bad

Количество ошибок записи

cnt

Время наработки в секундах (циклический)

hour

Время наработки в формате часы (циклический)

min

Время наработки в формате минуты (циклический)

sec

Время наработки в формате секунды (циклический)

day

Текущий день (циклический)

mnth

Текущий месяц (циклический)

year

Текущий год (циклический)

cfrn

Число включений (циклический)

Блок анализирует входы enbl.

На выходе cfrn отображается число включений устройства (количество изменений enbl c 0 на 1), на выходе cnt отображается время наработки устройства (сколько секунд enbl был равен 1).

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

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

Для изменения числа включений и времени наработки следует подать 1 на вход slv, тогда cnt = mas, cfrn = mcfrn. Это может быть полезно для синхронизации в дублированных системах.

Для надежной сохранности данных одновременно на диске находятся два файла, соответствующие одному архиву. Если контроллер будет перезагружен в момент записи на диск, данные не пропадут, а будут доступны предыдущие значения наработки, записанные в другом файле.

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

Если происходит однократная ошибка при записи файла на диск, блок пытается переименовать текущий файл и снова произвести запись. Если повторная запись оказывается удачной, то продолжается работа в обычном режиме, а выход bad инкрементируется. Следует принять меры по диагностике или замене носителя, поскольку сбои при записи могут быть следствием скорого выхода его из строя. Файл, на котором произошел сбой, остается на диске под тем же именем с добавленным к нему суффиксом, равным метке времени сбоя (в мс от 1 января 1970 г). Удалять его не желательно, чтобы повторно не использовать потенциально сбойный сектор.

Если происходит повторный сбой записи, то блок блокируется до тех пор, пока ошибки не будут сброшены фронтом на входе rst.

Внимание
При изменении числа входов блока CounterMEx файлы на диске перезаписываются.

Подробнее о возможностях и работе блока CounterMEx см. в документе Архивирование и сохранение уставок.

Graphic

Буфер чтения/записи уставок (BufSupEx)

Блок BufSupEx представляет собой двунаправленный буфер данных интерфейса, а данные сохраняются в бинарном файле на диске контроллера. Блок сохраняет все значения на диске контроллера аналогично блоку SaverEx. Раздел библиотеки: Сохранение данных.

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

Назначение входов и выходов BufSupEx
ЭлементОписание
Входы

inter

Cвязь от интерфейса, к которому принадлежит данный буфер

group

Номер группы (константный)

fnm

Абсолютный путь и имя файла (может быть пустым – задается автоматически), расширение игнорируется. При сохранении данных на внешнем накопителе следует использовать путь, указанный на выходе блока 210-SD-USB из библиотеки paOwenIO (константный)

mask

Не используется

rst

Сброс ошибок записи

wr

Запись на диск

dan

Значение, которое записывается в буфер при czap = 1 (циклический)

czap

Запись значения dan (циклический)

typ

Тип параметра (циклический, константный):

DI, DO – 8-ми битный регистр;

AI, AO – вещественное значение;

II, IO – 16-ти битный регистр

adr

Адрес параметра (циклический, константный)

ini

Значение для инициализации (циклический, константный)

min

Минимум. Если принятое значение меньше min, то оно игнорируется (циклический)

max

Максимум. Если принятое значение больше max, то оно игнорируется (циклический)

Выходы

pkt

Подключение к блокам OpcUAClient, UABufSups из библиотеки paOpcUA

next

Имя следующего файла

enb

Запись разрешена

sts

Статус:

0 – после сброса;

1 – записан;

2 – прочитан;

<0 – ошибка

good

Количество удачных записей

bad

Количество ошибок записи

rej

Количество отклоненных записей

dan

Значение параметра, полученное по интерфейсу или на вход dan (после проверки на min и max)

chn

Признак изменения, выставляется в 1 на один цикл выполнения программы, если значение dan изменилось

zap

Признак записи, выставляется в 1 на один цикл выполнения программы, если значение с входа dan было записано

Номер группы group используется в качестве Slave ID при подключении к блоку интерфейса Modbus Slave.

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

Адрес переменной adr зависит от интерфейса, к которому подключен буфер, например, адрес регистра Modbus.

Поскольку входы dan имеют тип any, следует строго соблюдать правила преобразования типов при проведении связей.

Если файл существует на диске, выходы инициализируются сохраненными значениями. Если файла не существует – выходы инициализируются значениями инициализации ini.

Запись в файл осуществляется при изменении значений на входах dan или по интерфейсу. Если файла на диске не существует и выходы dan приняли значения ini, то можно записать их на диск принудительно, подав команду wr.

Для надежной сохранности данных одновременно на диске находятся два файла, соответствующие одному архиву. Если контроллер будет перезагружен в момент записи на диск, данные не пропадут, а будут доступны предыдущие значения переменных, записанные в другом файле.

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

Имя файла и путь к нему задается на входе fnm. Имя может быть пустым, тогда имя файла будет выбрано автоматически по индексу блока, а файл сохранится в рабочую директорию контроллера. Если повторная запись оказывается удачной, то продолжается работа в обычном режиме, а выход bad инкрементируется. Следует принять меры по диагностике или замене носителя, поскольку сбои при записи могут быть следствием скорого выхода его из строя. Файл, на котором произошел сбой, остается на диске под тем же именем с добавленным к нему суффиксом, равным метке времени сбоя (в мс от 1 января 1970 г). Удалять его не желательно, чтобы повторно не использовать потенциально сбойный сектор.

Если происходит повторный сбой записи, то блок блокируется (выход enb = 0) и больше не производит попыток переименований файлов и записи до тех пор, пока ошибки не будут сброшены фронтом на входе rst.

Внимание

При изменении числа входов блока BufSupEx файлы на диске перезаписываются.

Подробнее о возможностях и работе блока BufSupEx см. в документе Архивирование и сохранение уставок.

Graphic

Запись логов в оперативную память (RamLog)

Блок RamLog обеспечивает возможность сбора логов по заданным параметрам для сохранения в оперативную память. Запись происходит в несколько буферов, которые при заполнении или по таймауту попадают в очередь для передачи на выход (сама передача происходит при условии, что предыдущий прочтен). Раздел библиотеки: Сохранение данных.

Так как работа блока занимает значительное время, данный блок следует размещать только в Фоне.

Назначение входов и выходов RamLog
ЭлементОписание
Входы

enb

Включение блока

bsize

Размер буфера – позволяет задать максимальное количество символов, хранимых в отдельном буфере: 128…4096

bnum

Количество буферов: 2…64

init

Создать ли все буферы при инициализации. Полезно, если требуемые диагностические сообщения имеют большой объем и генерируются с самого начала работы программы. Изначально, при инициализации создается минимальное количество буферов и, если требуется, увеличивается в процессе работы. Если init = 1, то сразу будет создано bnum буферов

tmout

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

glvl

Уровень ошибок, если у сообщения уровень меньше или равен заданному, то оно будет напечатано независимо от кодов и индексов (ERR = 1, WRN = 2, INF = 3, DBG = 10, DBG + N)

dbglvl

Уровень отладки, если у сообщения уровень превышает заданный, оно не будет напечатано

dscrd

Сброс, очищает списки отслеживаемых блоков и кодов. Срабатывает при изменении значения с 0 на 1

code

Код отладки – значение, которое будет добавлено в список отслеживаемых при изменении входа addcd или удалено при изменении входа delcd

addcd

Добавить код

delcd

Удалить код

indx

Индекс блока – значение, которое будет добавлено в список отслеживаемых при изменении входа addix или удалено при изменении входа delix

addix

Добавить индекс

delix

Удалить индекс

print

Выводить записываемые логи в консоль

Выходы

sts

Статус:

0 – нормальная работа;

+2 – сообщение, записываемое в буфер, превышает его максимальный размер, часть сообщения обрезана;

+4 – все буферы заполнены, происходит периодическая потеря сообщений. Для устранения ошибок следует изменить соответствующие входные параметры: размер bsize или количество bnum

log

Текущий буфер, доступный для чтения

cds

Список отслеживаемых диагностических кодов

indxs

Список индексов отслеживаемых блоков

Graphic

Очереди

Очередь битов qb

Тип данных qb позволяет накапливать очередь битовых значений в таймерном потоке. Если выход типа qb использовать в обмене по протоколу OPC UA, то будут переданы все накопленные данные, независимо от настроек подписки.

GraphicGraphic
qb

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

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

GraphicGraphic

Преобразование регистра в очереди битов (R2toQuBit)

Блок R2toQuBit разбирает входной регистр на биты, каждый из которых может накапливать очередь значений в таймерном потоке. Раздел библиотеки: Очереди.

Назначение входов и выходов:

  • qus – размер очереди (на каждый выходной бит);

  • reg – входной регистр;

  • ov – количество переполнений очереди;

  • n – текущее количество очередей;

  • b0, , b15 – биты.

Graphic

Преобразование очереди битов в бит (QuBit_Bit)

Блок QuBit_Bit преобразует очередь битов в бит, который можно дальше использовать в фоновом потоке. Среда разработки автоматически добавляет этот блок, если проведена связь между выходом типа qb и входом типа b. Раздел библиотеки: Очереди.

Назначение входов и выходов:

  • in – входная очередь;

  • val – какое значение ловить;

  • out – выход.

Алгоритм работы: значения из входной очереди сравниваются с заданным (вход val), и если встречается хотя бы одно, то выход out устанавливается равным val.

Graphic
Преобразование очереди битов в бит (QuBit_Bit)