Обработка сигналов
AIN
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | in | DWORD | Цифровой сигнал |
Bits | BYTE | Число значащих бит | |
sign | BYTE | Номер бита, определяющего знак | |
low | REAL | Нижний предел аналогового сигнала | |
high | REAL | Верхний предел аналогового сигнала | |
Выходы | AIN | REAL | Аналоговый сигнал |
Функция AIN используется для преобразования цифрового сигнала in в аналоговый AIN. Вход Bits определяет число значащих бит цифрового сигнала (максимальное значение – 32). Вход sign определяет номер бита, содержащего знак (его значение FALSE соответствует знаку «+»); если такого бита нет, то на вход sign подается значение 16# FF. Входы low и high определяют минимальное и максимальное значение аналогового сигнала. Нумерация бит ведется с нуля.
Ниже приведено несколько примеров настройки входов для разных сигналов:
Аналоговый сигнал в диапазоне 0–10 представлен цифровым 12-битным сигналом: Bits=12, sign=16#255, low=0.0, high=10.0;
Аналоговый сигнал в диапазоне -10–10 представлен цифровым 14-битным сигналом (биты 0-13) с битом знака (бит 14): Bits=14, sign=14, low=-10.0, high=10.0;
Аналоговый сигнал в диапазоне -10–10 представлен цифровым 24-битным сигналом без бита знака: Bits=24, sign=16#255, low=-10.0, high=10.0.
Пример
VAR
(* Входной цифровой сигнал (например, от АЦП) *)
DigitalValue: DWORD := 1024;
(* Настройки преобразования *)
BitCount: BYTE := 12; (* 12 значащих бит *)
SignBit: BYTE := 16#FF; (* Бит знака отсутствует *)
LowLimit: REAL := 0.0; (* Нижний предел аналогового сигнала *)
HighLimit: REAL := 10.0; (* Верхний предел аналогового сигнала *)
(* Результат преобразования *)
AnalogValue: REAL;
END_VAR
(* Вызов функции AIN *)
AnalogValue := OSCAT_BASIC.AIN(
in := DigitalValue,
Bits := BitCount,
sign := SignBit,
low := LowLimit,
high := HighLimit
);
(* Результат: AnalogValue = 2.5 (В)
Пояснение:
- 1024 / 4095 = 0.25 (25% от максимального значения)
- 0.25 * 10.0 = 2.5 (В)
Таким образом, цифровой код 1024 соответствует напряжению 2.5 В*)
END_PROGRAM |
AIN1
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | in | DWORD | Цифровой сигнал |
Выходы | out | REAL | Аналоговый сигнал |
sign | BOOL | Знак сигнала | |
error | BOOL | Флаг «ошибка» | |
overflow | BOOL | Флаг «переполнение» | |
Параметры | sign_bit | INT | Номер бита, определяющего знак |
error_bit | INT | Номер бита ошибка | |
error_code_en | BOOL | Бит обработки кода ошибки | |
error_code | DWORD | Код ошибки | |
overflow_bit | INT | Номер бита переполнения | |
overflow _code_en | BOOL | Бит обработки кода переполнения | |
overflow _code | DWORD | Код переполнения | |
Bit_0 | INT | Номер первого значащего бита | |
Bit_N | INT | Номер последнего значащего бита | |
out_min | REAL | Нижний предел аналогового сигнала | |
out_max | REAL | Верхний предел аналогового сигнала | |
code_min | DWORD | Нижний предел цифрового сигнала | |
code_max | DWORD | Верхний предел цифрового сигнала | |
error_output | REAL | Значение выхода в случае ошибки | |
overflow_output | REAL | Значение выхода в случае переполнения |
Функциональный блок AIN1 используется для преобразования цифрового сигнала in в аналоговый out. Параметр sign_bit определяет номер бита, содержащего знак (его значение FALSE соответствует знаку «+»); если такого бита нет, то вход можно оставить пустым. Нумерация бит ведется с нуля.
Параметр error_bit определяет номера бита ошибки; если такого бита нет, то вход можно оставить пустым. Некоторые АЦП в случае ошибки транслируют на выход ее код. Этот код может быть задан в параметре error_code; параметр error_code_en в этом случае должен иметь значение TRUE для разрешения обработки кода. Параметр error_output определяет значение, которое будет подано на выход out в том случае, если диагностирована ошибка.
Параметр overflow_bit определяет номера бита переполнения (выхода за диапазон допустимых значений) если такого бита нет, то вход можно оставить пустым. Некоторые АЦП в случае ошибки переполнения транслируют на выход ее код. Этот код может быть задан в параметре overflow_code; параметр overflow_code_en в этом случае должен иметь значение TRUE для разрешения обработки кода. Параметры code_min и code_max определяют минимальное и максимальное значение цифрового сигнала. Параметр overflow_output определяет значение, которое будет подано на выход out в том случае, если выходной сигнал выходит за допустимый диапазон.
Параметры out_min и out_max определяют минимальное и максимальное значение аналогового сигнала.
Параметры Bit_0 и Bit_N определяют номера первого и последнего значащих бит.
Выход out содержит полученное аналоговое значение. Выход sign определяет значение бита знака. Выходы error и overflow принимают значение TRUE при возникновении ошибки и переполнения соответственно.
AOUT
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | in | REAL | Аналоговый сигнал |
Выходы | AOUT | DWORD | Цифровой сигнал |
Параметры | Bits | BYTE | Число значащих бит |
sign | BYTE | Номер бита, определяющего знак | |
low | REAL | Нижний предел аналогового сигнала | |
high | REAL | Верхний предел аналогового сигнала |
Функция AOUT используется для преобразования аналогового сигнала in в цифровой AOUT. Вход Bitsопределяет число значащих бит цифрового сигнала (максимальное значение – 32). Вход sign определяет номер бита, содержащего знак (его значение FALSE соответствует знаку «+»); если такой бит не требуется, то на вход подается значение 16#FF. Входы low и high определяют минимальное и максимальное значение аналогового сигнала. Нумерация бит ведется с нуля.
Ниже приведено несколько примеров настройки входов для разных сигналов.
Аналоговый сигнал в диапазоне 0–10 преобразуется в цифровой 12-битный сигнал: Bits=12, sign=16#255, low=0.0, high=10.0;
Аналоговый сигнал в диапазоне -10–10 преобразуется в цифровой 14-битный сигнал (биты 0-13) с битом знака (бит 14): Bits=14, sign=14, low=-10.0, high=10.0;
Аналоговый сигнал в диапазоне -10–10 преобразуется в цифровой 24-битный сигнал без бита знака: Bits=24, sign=16#255, low=-10.0, high=10.0.
Пример
VAR
(* Входной аналоговый сигнал *)
AnalogValue: REAL := 7.5; (*Напряжение 7.5 В*)
(* Настройки преобразования *)
BitCount: BYTE := 12; (*12 значащих бит*)
SignBit: BYTE := 16#FF; (*Бит знака отсутствует*)
LowLimit: REAL := 0.0; (*Нижний предел 0 В*)
HighLimit: REAL := 10.0; (*Верхний предел 10 В*)
(* Результат преобразования *)
DigitalValue: DWORD;
END_VAR
(* Вызов функции AOUT *)
DigitalValue := OSCAT_BASIC.AOUT(
in := AnalogValue,
Bits := BitCount,
sign := SignBit,
low := LowLimit,
high := HighLimit
);
(* Результат: DigitalValue = 3072 (десятичное) или 16#0C00 (шестнадцатеричное)
Пояснение:
7.5 / 10.0 = 0.75 (75% от диапазона)
0.75 * 4095 = 3071.25 ≈ 3072*)
END_PROGRAM |
AOUT1
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | in | REAL | Аналоговый сигнал |
Выходы | AOUT | DWORD | Цифровой сигнал |
Параметры | Bits | BYTE | Число значащих бит |
sign | BYTE | Номер бита, определяющего знак | |
low | REAL | Нижний предел аналогового сигнала | |
high | REAL | Верхний предел аналогового сигнала | |
Используемые модули | SIGN_R | ||
Функция AOUT1 используется для преобразования аналогового сигнала in в цифровой AOUT1. Параметр sign_bit определяет номер бита, содержащего знак (его значение FALSE соответствует знаку «+»); если такой бит не требуется, то вход можно оставить пустым. Параметры Bit_0 и Bit_N определяют номера первого и последнего значащих бит. Входы low и high определяют минимальное и максимальное значение аналогового сигнала. Нумерация бит ведется с нуля.
Пример
VAR
(* Входной аналоговый сигнал *)
AnalogValue: REAL := 2.5; (* 2.5 В *)
(* Настройки преобразования *)
FirstBit: INT := 0; (*Номер первого значащего бита*)
LastBit: INT := 11; (*Номер последнего значащего бита
(всего 12 бит: 0..11)*)
SignBit: INT := 31; (*31-й бит — знак*)
LowLimit: REAL := -10.0; (*Нижний предел -10 В*)
HighLimit: REAL := 10.0; (*Верхний предел 10 В*)
(* Результат преобразования*)
DigitalValue: DWORD;
END_VAR
(* Вызов функции AOUT1 *)
DigitalValue := OSCAT_BASIC.AOUT1(
in := AnalogValue,
Bit_0 := FirstBit,
Bit_N := LastBit,
sign := SignBit,
low := LowLimit,
high := HighLimit
);
(*Итоговое значение: 31-й бит = 0, младшие 12 бит = 2559*)
END_PROGRAM |
BYTE_TO_RANGE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | x | BYTE | Исходное значение |
low | REAL | Нижний предел отмасштабированного значения | |
high | REAL | Верхний предел отмасштабированного значения | |
Выходы | BYTE_TO_RANGE | REAL | Отмасштабированное значение |
Функция BYTE_TO_RANGE линейно масштабирует входное целочисленное значение x из диапазона (0…255) в значение с плавающей точкой из диапазона (low…high). См. также обратную функцию RANGE_TO_BYTE.
Пример
VAR
(* Входное значение *)
RawValue: BYTE := 25; (* 25 из диапазона 0..255 *)
(* Границы масштабирования *)
LowLimit: REAL := 0.0; (* Нижний предел *)
HighLimit: REAL := 100.0; (* Верхний предел *)
(* Результат *)
ScaledValue: REAL;
END_VAR
(* Вызов функции BYTE_TO_RANGE *)
ScaledValue := OSCAT_BASIC.BYTE_TO_RANGE(
x := RawValue,
low := LowLimit,
high := HighLimit
);
(* Результат: ScaledValue ≈ 9.803922, т.к
25 / 255 ≈ 0.09804 (9.8% от диапазона)
0.09803922 * (100.0 - 0.0) = 9.803922
То есть значение 25 из диапазона 0..255
соответствует 9.8 из диапазона 0.0..100.0*)
END_PROGRAM |
DELAY
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | REAL | Исходное значение |
N | INT | Кол-во циклов задержки | |
RST | BOOL | Сигнал сброса блока | |
Выходы | OUT | REAL | Значение с задержкой |
Используемые модули | INC1 | ||
Функциональный блок DELAY транслирует на выход OUT значение входа IN спустя время задержки, равное N циклов ПЛК. По переднему фронту входа RST память блока очищается, и задержка начинает отсчитываться заново.

DELAY_4
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | REAL | Исходное значение |
Выходы | OUT1 | REAL | Значение с задержкой (1 цикл) |
OUT2 | REAL | Значение с задержкой (2 цикла) | |
OUT3 | REAL | Значение с задержкой (3 цикла) | |
OUT4 | REAL | Значение с задержкой (4 цикла) |
Функциональный блок DELAY_4 транслирует на выходы OUT1…OUT4 значение входа IN спустя время задержки, равное 1…4 цикла ПЛК.

FADE
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1 | REAL | Значение 1 |
IN2 | REAL | Значение 2 | |
F | BOOL | Направление изменения | |
TF | TIME | Время переключения значений | |
rst | BOOL | Сигнал сброса блока | |
Выходы | Y | REAL | Выход блока |
Используемые модули | RMP_W | ||
Функциональный блок FADE реализует плавное переключение входных значений IN1 и IN2 на выходе Y – от меньшего к большему, если вход F имеет значение TRUE, или от большего к меньшему, если вход F имеет значение FALSE.
Вход TF определяет время переключения (T – время с начала работы блока):
Y(T=0)=IN1
Y(T=TF)=IN2
Y(0<T<TF)=(T/TF) * IN1 + (1 – T/TF) * IN2
По переднему фронту входа RST выход Y принимает значение IN1 (если F=FALSE) или IN2 (если F=TRUE).

FILTER_DW
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | DWORD | Фильтруемое значение |
T | TIME | Постоянная времени фильтра | |
Выходы | Y | DWORD | Отфильтрованное значение |
Используемые модули | T_PLC_MS | ||
Функциональный блок FILTER_DW представляет собой фильтр
нижних частот для входного значения X типа DWORD. Это
может быть полезным при фильтрации шума в сигналах от датчиков. Вход T определяет постоянную времени фильтра, которая связана с частотой
пропускания следующей формулой: 
На выход Y подается отфильтрованное значение.

FILTER_I
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | INT | Фильтруемое значение |
T | TIME | Постоянная времени фильтра | |
Выходы | Y | INT | Отфильтрованное значение |
Используемые модули | T_PLC_MS | ||
Функциональный блок FILTER_I представляет собой фильтр нижних
частот для входного значения X типа INT. Это может быть
полезным при фильтрации шума в сигналах от датчиков. Вход T определяет постоянную времени фильтра, которая связана с частотой
пропускания следующей формулой: 
На выход Y подается отфильтрованное значение.
Трассировка работы FILTER_I аналогичного по принципу блока FILTER_DW (который отличается только типом фильтруемой переменной).
FILTER_MAV_DW
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | DWORD | Фильтруемое значение |
N | UINT | Число точек усреднения (0..31) | |
RST | BOOL | Сигнал сброса блока | |
Выходы | Y | DWORD | Отфильтрованное значение |
Используемые модули | INC1 | ||
Функциональный блок FILTER_MAV_DW представляет собой фильтр скользящей средней для входного значения X типа DWORD. Это может быть полезным для исключения влияния на сигнал случайной составляющей. Вход N определяет сохраняемое число значений входа X (N принадлежит диапазону 0...31; 0 – только текущее значение, 1 – текущее и предыдущее и т.д.) для вычисления текущего отфильтрованного значения. По переднему фронту входа RST информация о предыдущих входных значениях удаляется.
На выход Y подается отфильтрованное значение, вычисленное по формуле (K – номер текущего цикла ПЛК):

FILTER_MAV_W
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | WORD | Фильтруемое значение |
N | UINT | Число точек усреднения (0..31) | |
RST | BOOL | Сигнал сброса блока | |
Выходы | Y | WORD | Отфильтрованное значение |
Используемые модули | INC1 | ||
Функциональный блок FILTER_MAV_W представляет собой фильтр скользящей средней для входного значения X типа WORD. Принцип работы блока полностью соответствует блоку FILTER_MAV_DW, единственным отличием является тип фильтруемого значения.
FILTER_W
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | WORD | Фильтруемое значение |
T | TIME | Постоянная времени фильтра | |
Выходы | Y | WORD | Отфильтрованное значение |
Используемые модули | T_PLC_MS | ||
Функциональный блок FILTER_W представляет собой фильтр нижних частот для входного значения X типа WORD. Это может быть полезным при фильтрации шума в сигналах от датчиков. Принцип работы блока полностью соответствует блоку FILTER_DW, единственным отличием является тип фильтруемого значения.
FILTER_WAV
Функциональный блок FILTER_WAV представляет собой КИХ-фильтр
для входного значения X типа REAL. Вход W определяет
весовые коэффициенты для входных значений предыдущих 16-ти циклов
ПЛК. На выход Y подается отфильтрованное значение, вычисленное
по формуле (K – номер текущего цикла ПЛК): 
По переднему фронту входа RST информация о предыдущих входных значениях удаляется.
MIX
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | A | REAL | Значение 1 |
B | REAL | Значение 2 | |
M | REAL | Коэффициент смешения | |
Выходы | MIX | REAL | Вычисленное значение |
Функция MIX возвращается значение, вычисленное по формуле:MIX = (M - 1) * A + M * B
Подразумевается, что значение коэффициента смешения M должно принадлежать диапазону [0,1].
Пример
VAR
(* Исходные значения *)
ValueA: REAL := 6.0; (* Первое значение *)
ValueB: REAL := 15.0; (* Второе значение *)
(* Коэффициент смешения *)
MixFactor: REAL := 0.6666; (* 66.66% от B, 33.34% от A *)
(* Результат *)
Result: REAL;
END_VAR
(* Вызов функции MIX *)
Result := OSCAT_BASIC.MIX(
A := ValueA,
B := ValueB,
M := MixFactor
);
(*Результат: Result ≈ 12.0*)
END_PROGRAM |
MUX_R2
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN0 | REAL | Информационный вход 0 |
IN1 | REAL | Информационный вход 1 | |
A | BOOL | Адресный вход | |
Выходы | MUX_R2 | REAL | Выход мультиплексора |
Функция MUX_2R реализует мультиплексор для двух REAL переменных. Принцип работы функции:
если A=FALSE, то MUX_R2:=IN0;
если A=TRUE, то MUX_R2:=IN1.
Пример
VAR
(* Информационные входы *)
Input0: REAL := 10.0; (* Значение при A = FALSE *)
Input1: REAL := 20.0; (* Значение при A = TRUE *)
(* Адресный вход *)
Selector: BOOL := FALSE; (* Выбор входа *)
(* Результат *)
Output: REAL;
END_VAR
(* Вызов функции MUX_R2 *)
Output := OSCAT_BASIC.MUX_R2(
IN0 := Input0,
IN1 := Input1,
A := Selector
);
(*Результат: Output = 10.0*)
END_PROGRAM |
MUX_R4
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN0 | BOOL | Информационный вход 0 |
IN1 | BOOL | Информационный вход 1 | |
IN2 | BOOL | Информационный вход 2 | |
IN3 | BOOL | Информационный вход 3 | |
A0 | BOOL | Адресный вход 0 | |
A1 | BOOL | Адресный вход 1 | |
Выходы | MUX_R4 | REAL | Выход мультиплексора |
Функция MUX_4R реализует мультиплексор для четырех REAL переменных. Принцип работы функции:
если A0=FALSE и A1=FALSE, то MUX_4R:=IN0;
если A0=TRUE и A1=FALSE, тоMUX_4R:=IN1;
если A0=FALSE и A1=TRUE то MUX_4R:=IN2;
если A0=TRUE и A1=TRUE, то MUX_4R:=IN3.
Пример
VAR
(* Информационные входы (4 источника) *)
Input0 : REAL := 10.0; (* Выбирается при A0=FALSE, A1=FALSE *)
Input1 : REAL := 20.0; (* Выбирается при A0=TRUE, A1=FALSE *)
Input2 : REAL := 30.0; (* Выбирается при A0=FALSE, A1=TRUE *)
Input3 : REAL := 40.0; (* Выбирается при A0=TRUE, A1=TRUE *)
(* Адресные входы *)
Address0 : BOOL := FALSE; (* Младший бит адреса *)
Address1 : BOOL := FALSE; (* Старший бит адреса *)
(* Результат *)
Output : REAL;
END_VAR
(* Вызов функции MUX_R4 *)
Output := OSCAT_BASIC.MUX_R4(
IN0 := Input0,
IN1 := Input1,
IN2 := Input2,
IN3 := Input3,
A0 := Address0,
A1 := Address1
);
(*Результат: Output = 10.0*)
END_PROGRAM |
OFFSET
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Исходное значение |
O1 | BOOL | Режим «смещение 1» | |
O2 | BOOL | Режим «смещение 2» | |
O3 | BOOL | Режим «смещение 3» | |
O4 | BOOL | Режим «смещение 4» | |
D | BOOL | Режим «имитация входа» | |
Offset_1 | REAL | Коэффициент смещения 1 | |
Offset_2 | REAL | Коэффициент смещения 2 | |
Offset_3 | REAL | Коэффициент смещения 3 | |
Offset_4 | REAL | Коэффициент смещения 4 | |
default | REAL | Значение входа в имитации | |
Выходы | OFFSET | REAL | Смещенное значение |
Функция OFFSET возвращает смещенное значение входной переменной X. Входы O1…O4 определяют, какие коэффициенты смещения будут прибавляться к входному значению, а входы Offset_1…Offset_4 определяют величины этих коэффициентов. Если одновременно будут активны несколько входов, то к входному значению будут прибавлены величины нескольких коэффициентов. Если вход D имеет значение TRUE, то функция вместо X использует значение default.
Пример
VAR
(* Входное значение *)
InputValue : REAL := 100.0;
(* Режимы смещения *)
EnableOffset1 : BOOL := TRUE; (* Включаем смещение 1 *)
EnableOffset2 : BOOL := FALSE;
EnableOffset3 : BOOL := FALSE;
EnableOffset4 : BOOL := FALSE;
(* Коэффициенты смещения *)
Offset_1 : REAL := 10.0;
Offset_2 : REAL := 0.0;
Offset_3 : REAL := 0.0;
Offset_4 : REAL := 0.0;
(* Режим имитации *)
Simulate : BOOL := FALSE;
DefaultValue : REAL := 50.0;
(* Результат *)
Result : REAL;
END_VAR
(* Вызов функции OFFSET *)
Result :=OSCAT_BASIC .OFFSET(
X := InputValue,
O1 := EnableOffset1,
O2 := EnableOffset2,
O3 := EnableOffset3,
O4 := EnableOffset4,
D := Simulate,
Offset_1 := Offset_1,
Offset_2 := Offset_2,
Offset_3 := Offset_3,
Offset_4 := Offset_4,
default := DefaultValue
);
(*Результат: Result = 110.0*)
END_PROGRAM |
OFFSET2
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Исходное значение |
O1 | BOOL | Режим «смещение 1» | |
O2 | BOOL | Режим «смещение 2» | |
O3 | BOOL | Режим «смещение 3» | |
O4 | BOOL | Режим «смещение 4» | |
D | BOOL | Режим «имитация входа» | |
Offset_1 | REAL | Коэффициент смещения 1 | |
Offset_2 | REAL | Коэффициент смещения 2 | |
Offset_3 | REAL | Коэффициент смещения 3 | |
Offset_4 | REAL | Коэффициент смещения 4 | |
default | REAL | Значение входа в имитации | |
Выходы | OFFSET2 | REAL | Смещенное значение |
Функция OFFSET2 возвращает смещенное значение входной переменной X. Входы O1…O4 определяют, какие коэффициенты смещения будут прибавляться к входному значению, а входы Offset_1…Offset_4 определяют величины этих коэффициентов. Если одновременно будут активны несколько входов, то к входному значению будет прибавлен коэффициент входа с наибольшим номером (в отличие от функции OFFSET, в которой коэффициенты складываются). Если вход D имеет значение TRUE, то функция вместо X использует значение default.
Пример
VAR
(* Входное значение *)
InputValue : REAL := 100.0;
(* Режимы смещения *)
EnableOffset1 : BOOL := TRUE; (* Включаем смещение 1 *)
EnableOffset2 : BOOL := FALSE;
EnableOffset3 : BOOL := FALSE;
EnableOffset4 : BOOL := FALSE;
(* Коэффициенты смещения *)
Offset_1 : REAL := 10.0;
Offset_2 : REAL := 20.0;
Offset_3 : REAL := 30.0;
Offset_4 : REAL := 40.0;
(* Режим имитации *)
Simulate : BOOL := FALSE;
DefaultValue : REAL := 50.0;
(* Результат *)
Result : REAL;
END_VAR
(* Вызов функции OFFSET2 *)
Result := OSCAT_BASIC.OFFSET2(
X := InputValue,
O1 := EnableOffset1,
O2 := EnableOffset2,
O3 := EnableOffset3,
O4 := EnableOffset4,
D := Simulate,
Offset_1 := Offset_1,
Offset_2 := Offset_2,
Offset_3 := Offset_3,
Offset_4 := Offset_4,
default := DefaultValue
);
(*Результат: Result = 110.0*)
END_PROGRAM |
OVERRIDE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X1 | REAL | Исходное значение 1 |
X2 | REAL | Исходное значение 2 | |
X3 | REAL | Исходное значение 3 | |
E1 | BOOL | Активация значения 1 | |
E2 | BOOL | Активация значения 2 | |
E3 | BOOL | Активация значения 3 | |
Выходы | OVERRIDE | REAL | Наибольшее активное значение |
Функция OVERRIDE возвращает наибольшее из активных значений по модулюX1…X3. Активность значения определяется входным сигналом E1…E3 (TRUE – значение активно). Если активных значений нет, то функция возвращает ноль.
Пример
VAR
(* Исходные значения *)
Value1 : REAL := 50.0;
Value2 : REAL := -30.0;
Value3 : REAL := 20.0;
(* Флаги активности *)
Enable1 : BOOL := TRUE; (* Значение 1 активно *)
Enable2 : BOOL := FALSE;
Enable3 : BOOL := FALSE;
(* Результат *)
Result : REAL;
END_VAR
(* Вызов функции OVERRIDE *)
Result := OSCAT_BASIC.OVERRIDE(
X1 := Value1,
X2 := Value2,
X3 := Value3,
E1 := Enable1,
E2 := Enable2,
E3 := Enable3
);
(*Результат: Result = 50.0*)
END_PROGRAM |
RANGE_TO_BYTE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Исходное значение |
low | REAL | Нижний предел исходного значения | |
high | REAL | Верхний предел исходного значения | |
Выходы | RANGE_TO_BYTE | BYTE | Отмасштабированное значение |
Функция RANGE_TO_BYTE линейное масштабирует входное значение с плавающей точкой X из диапазона (low…high) в целочисленное значение типа BYTE из диапазона (0…255). См. также обратную функцию BYTE_TO_RANGE.
Пример
VAR
(* Входное значение с плавающей точкой *)
InputValue: REAL := 25.0; (* 25.0 из диапазона 0.0…100.0 *)
(* Границы исходного диапазона *)
LowLimit: REAL := 0.0; (* Нижний предел *)
HighLimit: REAL := 100.0; (* Верхний предел *)
(* Результат масштабирования *)
OutputByte: BYTE;
END_VAR
(* Вызов функции RANGE_TO_BYTE *)
OutputByte := OSCAT_BASIC.RANGE_TO_BYTE(
X := InputValue,
low := LowLimit,
high := HighLimit
);
(*Результат: OutputByte = 64*)
END_PROGRAM |
RANGE_TO_WORD
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Исходное значение |
low | REAL | Нижний предел исходного значения | |
high | REAL | Верхний предел исходного значения | |
Выходы | RANGE_TO_WORD | WORD | Отмасштабированное значение |
Функция RANGE_TO_WORD линейное масштабирует входное значение с плавающей точкой X из диапазона (low…high) в целочисленное значение типа WORD из диапазона (0…65535). См. также обратную функцию WORD_TO_RANGE.
Пример
VAR
(* Входное значение с плавающей точкой *)
InputValue: REAL := 25.0; (* 25.0 из диапазона 0.0…100.0 *)
(* Границы исходного диапазона *)
LowLimit: REAL := 0.0; (* Нижний предел *)
HighLimit: REAL := 100.0; (* Верхний предел *)
(* Результат масштабирования *)
OutputWord: WORD;
END_VAR
(* Вызов функции RANGE_TO_WORD *)
OutputWord := OSCAT_BASIC.RANGE_TO_WORD(
X := InputValue,
low := LowLimit,
high := HighLimit
);
(*Результат: OutputWord = 16383*)
END_PROGRAM |
SCALE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Исходное значение |
K | REAL | Коэффициент масштабирования | |
O | REAL | Сдвиг | |
MX | REAL | Верхний предел отмасштабированного значения | |
MN | REAL | Нижний предел отмасштабированного значения | |
Выходы | SCALE | REAL | Отмасштабированное значение |
Функция SCALE возвращает значение линейной функции с коэффициентом K и сдвигом O для аргумента X. Входы MN и MX определяют нижний и верхний предел возвращаемого значения.
SCALE = LIMIT(MN, K*X + O, MX)
Пример
VAR
(* Входное значение *)
InputValue: REAL := 25.0; (* Исходное значение *)
(* Коэффициенты масштабирования *)
Gain: REAL := 2.0; (* Коэффициент масштабирования K *)
Offset: REAL := 10.0; (* Сдвиг O *)
(* Границы ограничения *)
MinLimit: REAL := 15.0; (* Нижний предел MN *)
MaxLimit: REAL := 75.0; (* Верхний предел MX *)
(* Результат *)
Result: REAL;
END_VAR
(* Вызов функции SCALE *)
Result := OSCAT_BASIC.SCALE(
X := InputValue,
K := Gain,
O := Offset,
MX := MaxLimit,
MN := MinLimit
);
(* Результат: Result = 60.0
Расчет:
1. Промежуточное значение: K * X + O = 2.0 * 25.0 + 10.0 = 60.0
2. Проверка ограничений: 15.0 <= 60.0 <= 75.0
3. Значение в пределах диапазона, возвращается 60.0 *)
END_PROGRAM |
SCALE_B
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | BYTE | Исходное значение |
I_LO | BYTE | Нижний предел исходного значения | |
I_HI | BYTE | Верхний предел исходного значения | |
O_LO | REAL | Нижний предел отмасштабированного значения | |
O_HI | REAL | Верхний предел отмасштабированного значения | |
Выходы | SCALE_B | REAL | Отмасштабированное значение |
Функция SCALE_B линейно масштабирует входное целочисленное значение X из диапазона (I_LO…I_HI) в значение с плавающей точкой из диапазона (O_LO…O_HI).
Пример
VAR
(* Входное целочисленное значение *)
InputValue: BYTE := 32; (* 32 из диапазона 0…128 *)
(* Границы исходного диапазона (целочисленные) *)
InLow: BYTE := 0; (* Нижний предел *)
InHigh: BYTE := 128; (* Верхний предел *)
(* Границы выходного диапазона (вещественные) *)
OutLow: REAL := -10.0; (* Нижний предел *)
OutHigh: REAL := 10.0; (* Верхний предел *)
(* Результат масштабирования *)
OutputValue: REAL;
END_VAR
(* Вызов функции SCALE_B *)
OutputValue := OSCAT_BASIC.SCALE_B(
X := InputValue,
I_LO := InLow,
I_HI := InHigh,
O_LO := OutLow,
O_HI := OutHigh
);
(*Результат: OutputValue = -5.0*)
END_PROGRAM |
SCALE_B2
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1 | BYTE | Исходное значение 1 |
IN2 | BYTE | Исходное значение 2 | |
K | REAL | Коэффициент | |
O | REAL | Сдвиг | |
Выходы | SCALE_B2 | REAL | Рассчитанное значение |
Параметры | IN1_MIN | REAL | Нижний предел отмасштабированного значения 1 |
IN1_MAX | REAL | Верхний предел отмасштабированного значения 1 | |
IN2_MIN | REAL | Нижний предел отмасштабированного значения 2 | |
IN2_MAX | REAL | Верхний предел отмасштабированного значения 2 |
Функция SCALE_B2 линейно масштабирует входное целочисленное значение IN# из диапазона (0…255) в значение с плавающей точкой из диапазона (IN#_MIN…IN#_MAX), суммирует их и возвращает для суммы значение линейного функции с коэффициентом K и сдвигом O.
Это может быть использовано, например, для расчета общего количества воздуха в системе вентиляции.
Пример
VAR
(* Входные целочисленные значения (0…255) *)
Input1: BYTE := 32; (* Первое значение *)
Input2: BYTE := 64; (* Второе значение *)
(* Коэффициенты масштабирования результата *)
Gain: REAL := 2.0; (* Коэффициент K *)
Offset: REAL := 4.0; (* Сдвиг O *)
(* Границы масштабирования для IN1 *)
In1_Min: REAL := 0.0; (* Нижний предел для IN1 *)
In1_Max: REAL := 8.0; (* Верхний предел для IN1 *)
(* Границы масштабирования для IN2 *)
In2_Min: REAL := 0.0; (* Нижний предел для IN2 *)
In2_Max: REAL := 8.0; (* Верхний предел для IN2 *)
(* Результат *)
Result: REAL;
END_VAR
(* Вызов функции SCALE_B2 *)
Result := OSCAT_BASIC.SCALE_B2(
IN1 := Input1,
IN2 := Input2,
K := Gain,
O := Offset,
IN1_MIN := In1_Min,
IN1_MAX := In1_Max,
IN2_MIN := In2_Min,
IN2_MAX := In2_Max
);
(* Результат 10.0235294118*)
END_PROGRAM |
SCALE_B4
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1…IN4 | BYTE | Исходное значение 1…4 |
K | REAL | Коэффициент | |
O | REAL | Сдвиг | |
Выходы | SCALE_B4 | REAL | Рассчитанное значение |
Параметры | IN1_MIN…IN4_MIN | REAL | Нижний предел отмасштабированного значения 1…4 |
IN1_MAX…IN4_MAX | REAL | Верхний предел отмасштабированного значения 1…4 |
Функция SCALE_B4 линейно масштабирует входное целочисленное значение IN# из диапазона (0…255) в значение с плавающей точкой из диапазона (IN#_MIN…IN#_MAX), суммирует их и возвращает для суммы значение линейного функции с коэффициентом K и сдвигом O.
Это может быть использовано, например, для расчета общего количества воздуха в системе вентиляции.
SCALE_B8
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1…IN8 | BYTE | Исходное значение 1…8 |
K | REAL | Коэффициент | |
O | REAL | Сдвиг | |
Выходы | SCALE_B8 | REAL | Рассчитанное значение |
Параметры | IN1_MIN…IN8_MIN | REAL | Нижний предел отмасштабированного значения 1…8 |
IN1_MAX…IN8_MAX | REAL | Верхний предел отмасштабированного значения 1…8 |
Функция SCALE_B8 линейно масштабирует входное целочисленное значение IN# из диапазона (0…255) в значение с плавающей точкой из диапазона (IN#_MIN…IN#_MAX), суммирует их и возвращает для суммы значение линейного функции с коэффициентом K и сдвигом O.
Это может быть использовано, например, для расчета общего количества воздуха в системе вентиляции.
SCALE_D
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | DWORD | Исходное значение |
I_LO | DWORD | Нижний предел исходного значения | |
I_HI | DWORD | Верхний предел исходного значения | |
O_LO | REAL | Нижний предел отмасштабированного значения | |
O_HI | REAL | Верхний предел отмасштабированного значения | |
Выходы | SCALE_D | REAL | Отмасштабированное значение |
Функция SCALE_D линейно масштабирует входное целочисленное значение X из диапазона (I_LO…I_HI) в значение с плавающей точкой из диапазона (O_LO…O_HI).
Пример
VAR
(* Входное целочисленное значение DWORD *)
InputValue: DWORD := 75000; (* 75000 из диапазона 0…100000 *)
(* Границы исходного диапазона (DWORD) *)
InLow: DWORD := 0; (* Нижний предел *)
InHigh: DWORD := 100000; (* Верхний предел *)
(* Границы выходного диапазона (REAL) *)
OutLow: REAL := -10.0; (* Нижний предел *)
OutHigh: REAL := 10.0; (* Верхний предел *)
(* Результат масштабирования *)
OutputValue: REAL;
END_VAR
(* Вызов функции SCALE_D *)
OutputValue := OSCAT_BASIC.SCALE_D(
X := InputValue,
I_LO := InLow,
I_HI := InHigh,
O_LO := OutLow,
O_HI := OutHigh
);
(*Результат = 5.0*)
END_PROGRAM |
SCALE_R
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Исходное значение |
I_LO | REAL | Нижний предел исходного значения | |
I_HI | REAL | Верхний предел исходного значения | |
O_LO | REAL | Нижний предел отмасштабированного значения | |
O_HI | REAL | Верхний предел отмасштабированного значения | |
Выходы | SCALE_D | REAL | Отмасштабированное значение |
Функция SCALE_R линейно масштабирует входное значение с плавающей точкой X из диапазона (I_LO…I_HI) в диапазон (O_LO…O_HI).
Пример
VAR
(* Входное значение с плавающей точкой *)
InputValue: REAL := 12.0;
(* Границы исходного диапазона (REAL) *)
InLow: REAL := 4.0; (* Нижний предел *)
InHigh: REAL := 20.0; (* Верхний предел *)
(* Границы выходного диапазона (REAL) *)
OutLow: REAL := 0.0; (* Нижний предел *)
OutHigh: REAL := 100.0; (* Верхний предел *)
(* Результат масштабирования *)
OutputValue: REAL;
END_VAR
(* Вызов функции SCALE_R *)
OutputValue := OSCAT_BASIC.SCALE_R(
X := InputValue,
I_LO := InLow,
I_HI := InHigh,
O_LO := OutLow,
O_HI := OutHigh
);
(*Результат = 50.0*)
END_PROGRAM |
SCALE_X2
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1 | BOOL | Исходное значение 1 |
IN2 | BOOL | Исходное значение 2 | |
K | REAL | Коэффициент | |
O | REAL | Сдвиг | |
Выходы | SCALE_X2 | REAL | Отмасштабированное значение |
Параметры | IN1_MIN | REAL | Отмасштабированное значение 1 для IN1=FALSE |
IN1_MAX | REAL | Отмасштабированное значение 1 для IN1=TRUE | |
IN2_MIN | REAL | Отмасштабированное значение 2 для IN2=FALSE | |
IN2_MAX | REAL | Отмасштабированное значение 2 для IN2=TRUE |
Функция SCALE_X2 преобразует входное булевское значение IN# в значение с плавающей точкой (IN#_MIN для IN#=FALSE и IN#_MAX для IN#=TRUE), суммирует их и возвращает для суммы значение линейного функции с коэффициентом K и сдвигом O.
Пример
VAR
(* Входные булевые значения *)
Input1: BOOL := TRUE; (* Первое значение *)
Input2: BOOL := FALSE; (* Второе значение *)
(* Коэффициенты масштабирования *)
Gain: REAL := 2.5; (* Коэффициент K *)
Offset: REAL := 5.0; (* Сдвиг O *)
(* Границы масштабирования для IN1 *)
In1_Min: REAL := 20.0; (* Значение при IN1=FALSE *)
In1_Max: REAL := 40.0; (* Значение при IN1=TRUE *)
(* Границы масштабирования для IN2 *)
In2_Min: REAL := 30.0; (* Значение при IN2=FALSE *)
In2_Max: REAL := 40.0; (* Значение при IN2=TRUE *)
(* Результат *)
Result: REAL;
END_VAR
(* Вызов функции SCALE_X2 *)
Result := OSCAT_BASIC.SCALE_X2(
IN1 := Input1,
IN2 := Input2,
K := Gain,
O := Offset,
IN1_MIN := In1_Min,
IN1_MAX := In1_Max,
IN2_MIN := In2_Min,
IN2_MAX := In2_Max
);
(*Результат 180.0*)
END_PROGRAM |
SCALE_X4
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1…IN4 | BYTE | Исходное значение 1…4 |
K | REAL | Коэффициент | |
O | REAL | Сдвиг | |
Выходы | SCALE_X4 | REAL | Рассчитанное значение. |
Параметры | IN1_MIN…IN4_MIN | REAL | Отмасштабированное значение для IN1…IN4=FALSE |
IN1_MAX…IN4_MAX | REAL | Отмасштабированное значение для IN1…IN4=TRUE |
Функция SCALE_X4 преобразует входное булевское значение IN# в значение с плавающей точкой (IN#_MIN для IN#=FALSE и IN#_MAX для IN#=TRUE), суммирует их и возвращает для суммы значение линейного функции с коэффициентом K и сдвигом O.
SCALE_X8
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1…IN8 | BYTE | Исходное значение 1…8 |
K | REAL | Коэффициент | |
O | REAL | Сдвиг | |
Выходы | SCALE_X8 | REAL | Рассчитанное значение |
Параметры | IN1_MIN…IN8_MIN | REAL | Отмасштабированное значение для IN1…IN8=FALSE |
IN1_MAX…IN8_MAX | REAL | Отмасштабированное значение для IN1…IN8=TRUE |
Функция SCALE_X8 преобразует входное булевское значение IN# в значение с плавающей точкой (IN#_MIN для IN#=FALSE и IN#_MAX для IN#=TRUE), суммирует их и возвращает для суммы значение линейного функции с коэффициентом K и сдвигом O.
SEL2_OF_3
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1 | REAL | Контролируемое значение 1 |
IN2 | REAL | Контролируемое значение 2 | |
IN3 | REAL | Контролируемое значение 3 | |
D | REAL | Допустимое отклонение | |
Выходы | Y | REAL | Усредненное значение |
W | INT | Код состояния | |
E | BOOL | Флаг ошибки |
Функциональный блок SEL2_OF_3 используется для контроля показаний датчиков по схеме «2 из 3». Если входные значения IN1…IN3 отличаются друг от друга на величину, не превышающую D, то на выход Y поступает усредненное по трем сигналам значение, а выход W=0. Если одно из входных значений отличается от остальных на величину, превышающую D, то на выход Y поступает усредненное по двум другим сигналам значение, а на выходе W отображается номер входа с некорректным значением. Если все три входных значения отличаются на величину, превышающую D, то выход Y сохраняет свое последнее значение, выход W=4, а выход E принимает значение TRUE, сигнализируя о сбое в системе.
SEL2_OF_3B
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1 | BOOL | Контролируемый сигнал 1 |
IN2 | BOOL | Контролируемый сигнал 2 | |
IN3 | BOOL | Контролируемый сигнал 3 | |
TD | TIME | Время задержки индикации ошибки | |
Выходы | Q | BOOL | Выходной сигнал |
W | BOOL | Флаг «ошибка» |
Функциональный блок SEL2_OF_3B используется для контроля дискретных сигналов по схеме «2 из 3». Если входные значения IN1… IN3 совпадают, то выход Q равен этому же значению. Если одно из входных значений отличается от остальных, то выход Q принимает значение, которое имеют два других входа, а выход W принимает значение TRUE, сигнализируя об ошибке. Вход TD определяет задержку между изменением значений входов и активацией выхода W.
SH
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | in | REAL | Контролируемое значение |
CLK | BOOL | Сигнал сохранения данных | |
Выходы | out | REAL | Сохраненное значение |
trig | BOOL | Флаг «произошло сохранение» |
Функциональный блок SH представляет собой элемент хранения. По переднему фронту на входе CLK выход out принимает и запоминает значение входа in. Выход trig принимает значение TRUE на один цикл при изменении значения на выходе out.

SH_1
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | in | REAL | Контролируемое значение |
PT | TIME | Период сохранения | |
Выходы | out | REAL | Сохраненное значение |
trig | BOOL | Флаг «произошло сохранение» | |
Используемые модули | T_PLC_MS | ||
Функциональный блок SH_1 представляет собой элемент хранения. Выход out принимает и запоминает значение входа in с заданным периодом PT. Выход trig принимает значение TRUE на один цикл при каждом сохранении данных.

SH_2
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | in | REAL | Контролируемое значение |
PT | TIME | Период сохранения | |
N | INT | Число значений для статистики (1..16) | |
disc | INT | Число отбрасываемых экстремумов | |
Выходы | out | REAL | Сохраненное значение |
trig | BOOL | Флаг «произошло сохранение» | |
avg | REAL | Среднее значение | |
high | REAL | Максимальное значение | |
low | REAL | Минимальное значение | |
Используемые модули | T_PLC_MS, EVEN | ||
Функциональный блок SH_2 представляет собой элемент хранения со сбором статистики. Выход out принимает и запоминает значение входа in с заданным периодом PT. Выход trig принимает значение TRUE на один цикл при каждом сохранении данных. Вход N определяет число срезов (до 16-ти) для сбора статистической информации – среднего (выход avg), максимального (выход high) и минимального значений (выход low). Вход disc позволяет определить число экстремумов, которые не будут учитываться при статистической обработке (это может быть полезно для фильтрации помех):
0 – в статистике учитываются все срезы;
1 – не учитывается наименьшее значение;
2 – не учитывается наибольшее значение;
3 – не учитываются два наименьших и одно наибольшее значение;
4 – не учитываются два наименьших и два наибольших значения;
и т.д.
SH_T
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | in | REAL | Контролируемое значение |
E | BOOL | Режим сохранения значений | |
Выходы | out | REAL | Сохраненное значение |
Функциональный блок SH_T представляет собой прозрачный элемент хранения. Пока вход E имеет значение TRUE, на выход out транслируется значение входа in. По заднему фронту на входе E выход out сохраняет свое последнее значение.
STAIR
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Входное значение |
D | REAL | Величина ступеньки | |
Выходы | STAIR | REAL | Ступенчатая функция |
Функция STAIR возвращает значение ступенчатой функции для входного значения X. Вход D определяет величину ступеньки. Если D=0, то STAIR=X. Функция не производит фильтрацию входного значения; в случае ее необходимости следует использовать ФБ STAIR2, который учитывает гистерезис.
STAIR2
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Входное значение |
D | REAL | Величина ступеньки/значение гистерезиса | |
Выходы | Y | REAL | Ступенчатая функция |
Используемые модули | FLOOR | ||
Функциональный блок STAIR2 возвращает на выход Y значение ступенчатой функции для входного значения X. Вход D определяет величину ступеньки. Если D=0, то Y= X. D также определяет величину гистерезиса – если изменение входного значения не превышает D, то значение выхода не изменится. Таким образом осуществляется подавление шума исходного сигнала.

TREND
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | REAL | Входное значение |
Выходы | Q | BOOL | Флаг “изменение значения” |
TU | BOOL | Флаг “увеличение значения” | |
TD | BOOL | Флаг “уменьшение значения” | |
D | REAL | Величина изменения |
Функциональный блок TREND используется для контроля изменения значения входной переменной X. Если в текущем цикле значение X изменилось по сравнению с предыдущим, то выход Q принимает значение TRUE. Если значение увеличилось – то выход TU принимает значение TRUE, если уменьшилось – выход TD принимает значение TRUE. На выходе D отображается величина, на которую изменилось значение (со знаком) в текущем цикле. Если значение не изменилось по сравнению с предыдущим циклом, то выходы Q, TU и TD имеют значение FALSE, а D=0.
TREND_DW
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | DWORD | Входное значение |
Выходы | Q | BOOL | Флаг “изменение значения” |
TU | BOOL | Флаг “увеличение значения” | |
TD | BOOL | Флаг “уменьшение значения” | |
D | DWORD | Величина изменения |
Блок TREND_DW используется для контроля изменения значения входной переменной X. Принцип работы полностью соответствует ФБ TREND, единственным отличием является тип используемых переменных – DWORD.
WORD_TO_RANGE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | X | WORD | Исходное значение |
low | REAL | Нижний предел отмасштабированного значения | |
high | REAL | Верхний предел отмасштабированного значения | |
Выходы | WORD_TO_RANGE | REAL | Отмасштабированное значение |
Функция WORD_TO_RANGE линейно масштабирует входное целочисленное значение X из диапазона (0…65535) в значение с плавающей точкой из диапазона (low…high). См. также обратную функцию RANGE_TO_WORD.
Пример
VAR
(* Входное целочисленное значение WORD (0…65535) *)
InputValue : WORD := 8192; (* 8192 из диапазона 0…65535 *)
(* Границы выходного диапазона (REAL) *)
LowLimit : REAL := -100.0; (* Нижний предел *)
HighLimit : REAL := 100.0; (* Верхний предел *)
(* Результат масштабирования *)
OutputValue : REAL;
END_VAR
(* Вызов функции WORD_TO_RANGE *)
OutputValue := OSCAT_BASIC.WORD_TO_RANGE(
X := InputValue,
low := LowLimit,
high := HighLimit
);
(* Результат: OutputValue = -75.0*)
END_PROGRAM |