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

  • Бит/байт функции

  • PACK Функция сворачивает восемь параметров B0, B1, ..., B7 типа BOOL в один BYTE. Функциональный блок UNPACK выполняет обратную распаковку. PUTBIT

  • Дополнительные математические функции

  • Переменная Тип дан- ных Описание

  • STATISTICS_REAL Функциональный блок, аналогичный STATISTICS_INT. Вход IN и выходы MN, MX, AVG имеют тип REAL. VARIANCE

  • Регуляторы

  • Наименование Тип Описание

  • Генераторы сигналов

  • Переменная Тип данных Описание

  • Преобразования аналоговых сигналов

  • RAMP_REAL RAMP_REAL аналогичен RAMP_INT, за исключением того, что входы IN, ASCEND, DESCEND и выход OUT типа REAL. Аналоговые компараторы

  • Библиотека AnalyzationNew.lib

  • InputExpr

  • OutString

  • ExpressionResult

  • Приложение E: Краткий справочник по операторам и компонентам библиотек Приведенные ниже таблицы кратко представляют операторы CoDeSys и компоненты библиотек Standard.lib

  • Руководство пользователя по программированию плк в CoDeSys 3


    Скачать 5.57 Mb.
    НазваниеРуководство пользователя по программированию плк в CoDeSys 3
    Дата25.10.2022
    Размер5.57 Mb.
    Формат файлаpdf
    Имя файлаCODESYS_manual.pdf
    ТипРуководство пользователя
    #754593
    страница40 из 50
    1   ...   36   37   38   39   40   41   42   43   ...   50
    BCD преобразования
    Байт, представленный в формате BCD, содержит числа от 0 до 99. Каждый десятичный знак зани- мает 4 бита. Биты 4-7 содержат первую цифру – число десятков. Формат BCD подобен шестнадца- теричному представлению с ограничением диапазона чисел 0..99 вместо 0.. FF.
    Например: Преобразуем число 51 в BCD формат. 5 - это двоичное 0101, 1 - это 0001. В результате получается байт 0101_0001.
    BCD_TO_INT
    Функция преобразует байт формата BCD в число типа INT.
    Входной параметр функции типа BYTE и выход типа INT. Если входное значение не укладывает- ся в формат BCD, функция возвращает -1.
    Примеры ST:
    i:=BCD_TO_INT(73); (* Результат 49 *) k:=BCD_TO_INT(151); (*Результат 97 *)

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-54 l:=BCD_TO_INT(15); (* -1, потому что F0 не BCD формат*)
    INT_TO_BCD
    Функция преобразует INTEGER число в байт формата BCD.
    Входной параметр функции типа INT и выход типа BYTE.
    Если INTEGER число не может быть представлено в BCD формате, то функция возвращает значе- ние 255.
    Примеры ST:
    i:= INT_TO_BCD(49); (*Результат 73 *) k:=INT_TO_BCD (97); (*Результат 151 *) l:= INT_TO_BCD (100); (* Ошибка! Выход: 255 *)
    Бит/байт функции
    EXTRACT
    Параметры функции: DWORD X и BYTE N. Выход типа BOOL, отражает значение бита N в числе
    X. Биты нумеруются с 0.
    Примеры ST:
    FLAG:=EXTRACT(X:=81,N:=4); (* Результат: TRUE, 81 это 1010001, 4й бит 1 *)
    FLAG:=EXTRACT(X:=33, N:=0); (* Результат: TRUE, 33 это 100001,бит ‘0’ это 1
    *)
    PACK
    Функция сворачивает восемь параметров B0, B1, ..., B7 типа BOOL в один BYTE.
    Функциональный блок UNPACK выполняет обратную распаковку.
    PUTBIT
    Параметры функции: DWORD X, BYTE N и BOOL B.
    PUTBIT устанавливает N-й бит числа X в состояние, заданное B. Биты нумеруются с 0.
    Примеры ST:
    A:=38;
    (* двоичное 100110 *)
    B:=PUTBIT(A,4,TRUE);
    (* Результат : 54 = 2#110110 *)
    C:=PUTBIT(A,1,FALSE);
    (* Результат : 36 = 2#100100 *)
    UNPACK
    UNPACK преобразует вход B типа BYTE в 8 выходов B0,...,B7 типа BOOL.
    Обратная упаковка производится с помощью PACK.
    Пример FBD:

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-55
    Дополнительные математические функции
    DERIVATIVE
    Функциональный блок выполняет численное дифференцирование.
    Аналоговый вход IN и выход OUT типа REAL. Вход TM задает время дифференцирования (как правило, в миллисекундах) имеет тип DWORD. В процессе сброса (RESET = TRUE) выход OUT равен нулю.
    Алгоритм DERIVATIVE проводит аппроксимацию по четырем точкам, что снижает ошибки при наличии шума во входном сигнале.
    Блок FBD:
    Пример дифференцирования треугольных импульсов:
    INTEGRAL
    Функциональный блок выполняет численное интегрирование.
    Аналоговый вход IN типа REAL. Вход TM типа DWORD задает длительность интегрирования
    (как правило, в миллисекундах). Вход RESET типа BOOL запускает интегрирование при установ- ке в TRUE. Выход OUT типа REAL.
    Алгоритм вычисления использует классический двухточечный метод трапеций.
    Блок FBD: пример интегрирования линейной функции:

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-56
    LIN_TRAFO
    Данный функциональный блок (util.lib) преобразует значение переменной REAL, принадлежащее одному интервалу в пропорциональное значение, принадлежащее другому интервалу. Интервалы определяются минимальным и максимальным значением. Алгоритм преобразования опирается на следующее равенство:
    (IN - IN_MIN) : (IN_MAX - IN) = (OUT - OUT_MIN) : (OUT_MAX - OUT)
    Входные переменные:
    Переменная
    Тип
    дан-
    ных
    Описание
    IN
    REAL
    Входное значение
    IN_MIN
    REAL
    Нижнее значение входного диапазона
    IN_MAX
    REAL
    Верхнее значение входного диапазона
    OUT_MIN
    REAL
    Нижнее значение выходного диапазона
    OUT_MAX
    REAL
    Верхнее значение выходного диапазона
    Выходные переменные:
    Переменная
    Тип
    дан-
    ных
    Описание
    OUT
    REAL
    Выходное значение
    ERROR
    BOOL
    Признак ошибки: TRUE, если IN_MIN =
    IN_MAX или если значение IN вышло за преде- лы входного диапазона
    Пример использования:
    Допустим, датчик температуры выдает некоторое напряжение в вольтах (вход IN). Нам необходи- мо преобразовать полученное значение в градусы по Цельсию (выход OUT). Входной диапазон (в
    Вольтах) определяется пределами IN_MIN=0 и IN_MAX=10. Выходной диапазон (в градусах
    Цельсия) определяется соответствующими пределами OUT_MIN=-20 и OUT_MAX=40.
    Так, при входном значении 5 Вольт, мы получим на выходе 10 градусов по Цельсию.
    STATISTICS_INT
    Функциональный блок определяет минимальное, максимальное и среднее значения входной вели- чины.

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-57
    Аналоговый вход IN типа INT. По входу RESET типа BOOL все переменные инициализируются заново. Выход MN дает минимальное, выход MX максимальное и выход AVG среднее значения входных данных IN. Все три выхода типа INT.
    Блок FBD:
    STATISTICS_REAL
    Функциональный блок, аналогичный STATISTICS_INT. Вход IN и выходы MN, MX, AVG имеют тип REAL.
    VARIANCE
    Функциональный блок вычисляет дисперсию входных данных.
    Вход IN типа REAL, вход RESET типа BOOL и выход OUT типа REAL. Сброс вычисления произ- водится по входу RESET=TRUE.
    Среднеквадратичное отклонение может быть получено как квадратный корень VARIANCE.
    Регуляторы
    PD
    Функциональный блок реализует ПД закон регулирования:






    +
    +
    =
    dt
    t
    de
    TV
    t
    e
    KP
    OFFSET
    Y
    Y
    )
    (
    )
    (
    _
    где Y_OFFSET – стационарное значение, KP – коэффициент передачи, TV – постоянная диффе- ренцирования, e(t) - сигнал ошибки (SET_POINT-ACTUAL).
    Входы функционального блока:
    Наименование
    Тип
    Описание
    ACTUAL
    REAL
    Текущее значение контролируемой переменной.
    SET_POINT
    REAL
    Задание.
    KP
    REAL
    Коэффициент передачи.
    TV
    REAL
    Постоянная дифференцирования, в секундах
    (
    т.е. "0.5" для 500 мс).
    Y_MANUAL
    REAL
    Определяет значение выхода Y, если MANUAL = TRUE.
    Y_OFFSET
    REAL
    Стационарное значение Y.
    Y_MIN,
    Y_MAX
    REAL
    Значение выхода Y ограничено Y_MIN и Y_MAX. При достижении Y границ ограничения, выход LIMITS_ACTVE,
    (BOOL) принимает значение TRUE. Ограничение работает только при Y_MIN < Y_MAX.
    MANUAL
    BOOL
    Значение TRUE, включает режим ручного регулирования по входу Y_MANUAL.

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-58
    RESET
    BOOL
    TRUE сбрасывает регулятор; в это время Y = Y_OFFSET
    Входы функционального блока:
    Наименование
    Тип
    Описание
    Y
    REAL
    Выход регулятора
    LIMITS_ACTIVE
    BOOL
    TRUE означает что Y ограничивается пределами (Y_MIN,
    Y_MAX).
    Y_OFFSET, Y_MIN и Y_MAX используются при необходимости ограничения допустимого диапа- зона значений выхода. Если ограничение выхода не требуется, Y_MIN и Y_MAX должны быть равны 0.
    P-регулятор получается из PD установкой TV в 0.
    Пример FBD:
    PID
    Функциональный блок реализует ПИД закон регулирования:
    


    


    +
    +
    +
    =

    TN
    dt
    t
    de
    TV
    t
    e
    TN
    t
    e
    KP
    OFFSET
    Y
    Y
    0
    )
    (
    )
    (
    1
    )
    (
    _
    где Y_OFFSET – стационарное значение, KP – коэффициент передачи, TN – постоянная интегри- рования, TV – постоянная дифференцирования, e(t) - сигнал ошибки (SET_POINT-ACTUAL).
    Входы функционального блока:
    Наименование
    Тип
    Описание
    ACTUAL
    REAL
    Текущее значение контролируемой переменной.
    SET_POINT
    REAL
    Задание.
    KP
    REAL
    Коэффициент передачи.
    TN
    REAL
    Постоянная интегрирования, в секундах
    (
    т.е. "0.5" для 500 мс).
    TV
    REAL
    Постоянная дифференцирования, в секундах
    (
    т.е. "0.5" для 500 мс).
    Y_MANUAL
    REAL
    Определяет значение выхода Y, если MANUAL = TRUE.
    Y_OFFSET
    REAL
    Стационарное значение Y.
    Y_MIN,
    Y_MAX
    REAL
    Значение выхода Y ограничено Y_MIN и Y_MAX. При достижении Y границ ограничения, выход LIMITS_ACTVE,

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-59
    Y_MAX
    (BOOL) принимает значение TRUE. Ограничение работает только при Y_MIN < Y_MAX.
    MANUAL
    BOOL
    Значение TRUE, включает режим ручного регулирования по входу Y_MANUAL.
    RESET
    BOOL
    TRUE сбрасывает регулятор; в это время Y = Y_OFFSET
    Входы функционального блока:
    Наименование
    Тип
    Описание
    Y
    REAL
    Выход регулятора
    LIMITS_ACTIVE
    BOOL
    TRUE означает что Y ограничивается пределами (Y_MIN,
    Y_MAX).
    OVERFLOW
    BOOL
    TRUE – признак переполнения.
    Механизм ограничения выхода PID аналогичен PD регулятору.
    Неправильная настройка регулятора может вызвать неограниченный рост интегральной состав- ляющей. Для обнаружения такой ситуации предназначен выход OVERFLOW. При переполнении он принимает значение TRUE, одновременно останавливается работа регулятора. Для его включе- ния необходимо использовать рестарт.
    Пример FBD:
    PID_FIXCYCLE
    Функциональный блок PID_FIXCYCLE.
    Отличается от PID тем, что время цикла не измеряется автоматически встроенным таймером, а за- дается дополнительной переменной CYCLE, в секундах.

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-60
    Генераторы сигналов
    BLINK
    Функциональный блок ‘генератор прямоугольных импульсов’
    Входы: ENABLE типа BOOL, TIMELOW и TIMEHIGH типа TIME. Выход OUT типа BOOL.
    Генератор запускается по входу ENABLE = TRUE. Длительность импульса задается TIMEHIGH, длительность паузы TIMELOW.
    При переходе ENABLE в FALSE, выход OUT остается в том состоянии, в котором он был в этот момент. Если вам необходимо чтобы выходная переменная сбрасывалась в FALSE при ENABLE равном FALSE, то используйте выражение "OUT AND ENABLE" на выходе (т.е. добавьте блок
    AND на выход и на второй вход подайте ENABLE).
    Пример CFC:
    FREQ_MEASURE
    Данный функциональный блок измеряет (усредненную) частоту (в Герцах) входного сигнала типа
    BOOL. Вы можете задать количество периодов для усреднения. Под периодом понимается время между двумя передними фронтами сигнала.
    Входные переменные:
    Переменная
    Тип данных
    Описание
    IN
    BOOL
    Входной сигнал
    PERIODS
    INT
    Число периодов усреднения. Допустимое значение от 1 до 10.
    RESET
    BOOL
    Сброс
    Выходные переменные:
    Переменная
    Тип данных
    Описание
    OUT
    REAL
    Результат, частота в Герцах

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-61
    VALID
    BOOL
    FALSE до окончания первого замера, либо период >
    3*OUT (признак ошибки по входам)
    GEN
    Функциональный блок ‘функциональный генератор’
    Входы: перечисление MODE предопределенного типа GEN_MODE, BASE типа BOOL, PERIOD типа TIME, CYCLES и AMPLITUDE типа INT и RESET типа BOOL. Выход OUT типа INT.
    Вход MODE задает вид генерируемой функции. Перечисление включает следующие значения:
    TRIANGLE и TRIANGLE_POS - треугольники, SAWTOOTH_RISE и SAWTOOTH_FALL – пила,
    RECTANGLE – прямоугольники, SINE и COSINE – синусоиды:
    TRIANGLE:
    TRIANGLE_POS:
    SAWTOOTH_RISE:
    SAWTOOTH_FALL:
    RECTANGLE:
    SINUS:
    COSINUS:
    BASE определяет представление единиц периода по времени (BASE=TRUE) или по числу циклов, т.е. по количеству вызовов функционального блока (BASE=FALSE).
    Входы PERIOD или CYCLES определяют период выходного сигнала. Вход AMPLITUDE задает амплитуду сигнала.
    Сброс генератора происходит при установке RESET=TRUE.
    Пример FBD:

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-62
    Преобразования аналоговых сигналов
    CHARCURVE
    Функциональный блок осуществляет пересчет входных данных по заданной переходной функции- путем кусочно-линейной аппроксимации.
    Вход IN типа INT принимает исходные данные. Вход N типа BYTE определяет количество точек задающих передаточную функцию. Передаточная функция задается массивом точек ARRAY
    P[0..10], где P - это точка, определенная как структура типа POINT, состоящая из двух переменных
    INT X и Y.
    Выход OUT типа INT, выходные данные. Выход ERR типа BYTE, индикатор ошибки.
    Точки P[0]..P[N-1] массива ARRAY должны быть отсортированы по X в порядке возрастания, в противном случае ERR получает значение 1. Если вход IN не лежит в пределах от P[0].X до P[N-
    1].X, генерируется ошибка ERR=2 и выход OUT приобретает значение соответствующего предела
    P[0].X или P[N-1].X.
    Число N должно быть в пределах от 2 до 11, иначе возникает ошибка ERR=4.
    Пример ST:
    Прежде всего определим массив ARRAY P:
    VAR
    CHARACTERISTIC_LINE:CHARCURVE;
    KL:ARRAY[0..10]
    OF
    POINT:=
    (X:=0,Y:=0),
    (X:=250,Y:=50),
    (X:=500,Y:=150), (X:=750,Y:=400), 7((X:=1000,Y:=1000));
    COUNTER:INT;
    END_VAR
    Далее вызываем CHARCURVE для линейно возрастающих значений:
    COUNTER:=COUNTER+10;
    CHARACTERISTIC_LINE(IN:=COUNTER,N:=5,P:=KL);
    Последующая трассировка иллюстрирует полученный эффект:
    RAMP_INT
    Функциональный блок RAMP_INT ограничивает скорость нарастания и спада сигнала.

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-63
    Три входа имеют тип INT: IN, входные данные, ASCEND и DESCEND, максимальное нарастание и спад за интервал, заданный TIMEBASE типа TIME. Установка двоичного входа RESET в TRUE вызывает сброс RAMP_INT в начальное состояние.
    Выход OUT типа INT, выходные данные.
    Если TIMEBASE равен t#0s, ASCEND и DESCEND задают ограничение изменения за один цикл
    (вызов блока) безотносительно времени.
    Пример FBD:
    RAMP_REAL
    RAMP_REAL аналогичен RAMP_INT, за исключением того, что входы IN, ASCEND, DESCEND и выход OUT типа REAL.
    Аналоговые компараторы
    HYSTERESIS
    Аналоговый компаратор с гистерезисом.
    Входы IN, HIGH и LOW типа INT. Выход OUT типа BOOL.
    Если вход IN принимает значение, меньшее LOW, выход OUT устанавливается в TRUE. Если вход
    IN принимает значение, большее HIGH, то выход равен FALSE. В пределах от LOW до HIGH зна- чение выхода не изменяется.
    Пояснительная иллюстрация:
    LIMITALARM
    Функциональный блок, контролирует принадлежность значения входа IN заданному диапазону.
    Входы LOW и HIGH задают границу диапазона..

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-64
    Входы IN, HIGH и LOW типа INT, выходы O, U и IL типа BOOL.
    Если значение на входе IN: превышает предел HIGH выход O = TRUE меньше предела LOW выход U = TRUE лежит в пределах между LOW и HIGH (включительно) выход IL = TRUE
    Пример FBD:
    Библиотека AnalyzationNew.lib
    Данная библиотека содержит модули для анализа выражений в SFC. Если сложное выражение да- ет FALSE, то библиотека позволяет уточнить, какие компоненты условного выражения дали такой результат. Существует специальный флаг SFCErrorAnalyzationTable, механизм его работы неявно использует данные функции для анализа условий переходов.
    Пример условного выражения: b OR NOT(y < x) OR NOT (NOT d AND e)
    Во всех модулях используются следующие переменные:
    InputExpr: BOOL, анализируемое выражение
    DoAnalyze: BOOL, TRUE запускает анализ
    ExpResult: BOOL, текущее значение выражения
    Функции:
    AnalyzeExpression возвращает строку, содержащую компоненты выражения, дающие в итоге зна- чение FALSE. Для этого служит вспомогательная функция AppendErrorString добавляющая ком- поненты, разделенные символом "|".
    Выходная строка OutString (тип STRING) содержит результат (например: y < x | d).
    Функция AnalyseExpressionTable записывает компоненты выражения, дающие в итоге значение
    FALSE, в массив. Для каждого компонента заполняется структура ExpressionResult, содержащая наименование, адрес, комментарий и текущее значение.
    OutTable: ARRAY [0..15] OF ExpressionResult;
    Например:
    AnalyseExpressionCombined совмещает функции AnalyzeExpression и AnalyseExpressionTable.

    Приложение D: Библиотеки CoDeSys
    CoDeSys V2.3 10-65
    Системные библиотеки CoDeSys
    Системные библиотеки дают доступ к специализированным и низкоуровневым функциям кон- троллера. Набор доступных библиотек зависит от аппаратной платформы. Общий состав и назна- чение системных библиотек приведено в документе SysLibs_Overview_RU.pdf. Подробно функции каждой из системных библиотек описаны в соответствующих документах: SysLib…_RU.pdf.

    Приложение E: Краткий справочник по операторам и компонентам библиотек
    CoDeSys V2.3 10-66
    Приложение E: Краткий справочник по операторам и
    компонентам библиотек
    Приведенные ниже таблицы кратко представляют операторы CoDeSys и компоненты библиотек
    Standard.lib и Util.lib. Даны нотации для языков ST и IL. Для IL указаны допустимые модифика- торы.
    Обратите внимание, что для IL инструкций первый операнд должен быть загружен заранее (на- пример, командой LD). Непосредственно в строке за «IL» командой вводятся второй и после- дующие (если они есть) операнды.
    Столбец «Мод.» содержит допустимые IL модификаторы:
    C
    Команда выполняется только в случае, если результат предыдущей операции TRUE.
    1   ...   36   37   38   39   40   41   42   43   ...   50


    написать администратору сайта