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

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 память блока очищается, и задержка начинает отсчитываться заново.

Graphic
Трассировка работы ФБ для ПЛК с временем цикла=100 мс, N=10

DELAY_4

Тип модуля: ФБ

Переменная

Тип

Описание

Входы

IN

REAL

Исходное значение

Выходы

OUT1

REAL

Значение с задержкой (1 цикл)

OUT2

REAL

Значение с задержкой (2 цикла)

OUT3

REAL

Значение с задержкой (3 цикла)

OUT4

REAL

Значение с задержкой (4 цикла)

Функциональный блок DELAY_4 транслирует на выходы OUT1…OUT4 значение входа IN спустя время задержки, равное 1…4 цикла ПЛК.

Graphic
Трассировка работы ФБ для ПЛК с временем цикла=1 с

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).

Graphic
Трассировка работы ФБ (IN1=25.0, IN=70.0, TF=T#20s)

FILTER_DW

Тип модуля: ФБ

Переменная

Тип

Описание

Входы

X

DWORD

Фильтруемое значение

T

TIME

Постоянная времени фильтра

Выходы

Y

DWORD

Отфильтрованное значение

Используемые модули

T_PLC_MS

Функциональный блок FILTER_DW представляет собой фильтр нижних частот для входного значения X типа DWORD. Это может быть полезным при фильтрации шума в сигналах от датчиков. Вход T определяет постоянную времени фильтра, которая связана с частотой пропускания следующей формулой: Graphic

На выход Y подается отфильтрованное значение.

Graphic
Трассировка работы ФБ (T=T#1s)

FILTER_I

Тип модуля: ФБ

Переменная

Тип

Описание

Входы

X

INT

Фильтруемое значение

T

TIME

Постоянная времени фильтра

Выходы

Y

INT

Отфильтрованное значение

Используемые модули

T_PLC_MS

Функциональный блок FILTER_I представляет собой фильтр нижних частот для входного значения X типа INT. Это может быть полезным при фильтрации шума в сигналах от датчиков. Вход T определяет постоянную времени фильтра, которая связана с частотой пропускания следующей формулой: Graphic

На выход 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 – номер текущего цикла ПЛК):

Graphic
Graphic
Трассировка работы ФБ (N=30)

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

Тип модуля: ФБ

Переменная

Тип

Описание

Входы

X

REAL

Фильтруемое значение

W

ARRAY [0..15] OF REAL

Массив коэффициентов

RST

BOOL

Сигнал сброса блока

Выходы

Y

REAL

Отфильтрованное значение

Используемые модули

INC1, DEC1

Функциональный блок FILTER_WAV представляет собой КИХ-фильтр для входного значения X типа REAL. Вход W определяет весовые коэффициенты для входных значений предыдущих 16-ти циклов ПЛК. На выход Y подается отфильтрованное значение, вычисленное по формуле (K – номер текущего цикла ПЛК): Graphic

По переднему фронту входа 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.

Graphic

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

Пример

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.

Graphic

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

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.

Graphic

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

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.

Graphic

Пример

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.

Graphic

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.

Graphic

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.

Graphic
Трассировка работы ФБ

SH_1

Тип модуля: ФБ

Переменная

Тип

Описание

Входы

in

REAL

Контролируемое значение

PT

TIME

Период сохранения

Выходы

out

REAL

Сохраненное значение

trig

BOOL

Флаг «произошло сохранение»

Используемые модули

T_PLC_MS

Функциональный блок SH_1 представляет собой элемент хранения. Выход out принимает и запоминает значение входа in с заданным периодом PT. Выход trig принимает значение TRUE на один цикл при каждом сохранении данных.

Graphic
Трассировка работы ФБ

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, то значение выхода не изменится. Таким образом осуществляется подавление шума исходного сигнала.

Graphic
Трассировка работы ФБ

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