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

  • Платформы ( Targets )

  • Контакт ( Contact ):Лицензирование по телефону ( Licensing via phone ): / Лицензирование по почте (

  • Optional information ):В правом окне вы можете задать дополнительные сведения по пунктам списка, перечисленным в левой части окна: Описание (Description

  • Изготовитель (Manufacturer ), Поставщик (Vendor ), Цены (Pricing information ). Обратите внимание

  • 3S License Manager . 10 Приложения Приложение A: Операторы и функции МЭК

  • 10.1 Арифметические операторы ADD

  • 10.2 Битовые операторы AND Побитное И

  • Внимание: С

  • 10.3 Операторы сдвига Внимание

  • 10.4 Операторы выборки Константы в примерах этого раздела используются исключительно для наглядности. Все операции можно вы- полнять и с переменными. SEL

  • Внимание

  • 10.5 Операторы сравнения GT

  • 10.6 Адресные операторы Внимание

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


    Скачать 5.57 Mb.
    НазваниеРуководство пользователя по программированию плк в CoDeSys 3
    Дата25.10.2022
    Размер5.57 Mb.
    Формат файлаpdf
    Имя файлаCODESYS_manual.pdf
    ТипРуководство пользователя
    #754593
    страница36 из 50
    1   ...   32   33   34   35   36   37   38   39   ...   50
    Редактирование лицензионной информации
    ' (
    Edit Licensing Information
    )

    Общая информация
    (
    General information
    ):
    Наименование
    (
    Name
    ): введите имя модуля, так как оно должно отображаться в Менеджере ли- цензирования. Заполнение этих полей обязательно.

    Менеджер лицензирования CoDeSys
    CoDeSys V2.3 9-2
    ID
    (
    Vendor-ID
    ): идентификатор поставщика, определяется специфическим инструментом лицензи- рования изготовителя.
    Без лицензии
    (
    License free mode
    ): активируйте эту опцию, если данный модуль должен иметь воз- можность работы без лицензии, в демонстрационном режиме. Введите число дней (days), в течение которых допускается работа без лицензии. Число дней автоматически округляется вверх до десят- ков (10, 20, 30 ...). Если модуль можно использовать без ограничения по времени, то укажите здесь слово “unlimited”, доступное в списке.
    Платформы
    (
    Targets
    ): введите идентификационные номера (ID) целевых систем, для которых дей- ствительна лицензия. Номера должны быть перечислены через запятую или точку с запятой.

    Контакт
    (
    Contact
    ):
    Лицензирование по телефону
    (
    Licensing via phone
    ): /
    Лицензирование по почте
    (
    Licensing per
    via mail
    ): номер телефона и e-mail поставщика лицензии. Заполнение этих полей обязательно.

    Дополнительная информация
    (
    Optional information
    ):
    В правом окне вы можете задать дополнительные сведения по пунктам списка, перечисленным в левой части окна:
    Описание
    (
    Description
    ),
    Изготовитель
    (
    Manufacturer
    ),
    Поставщик
    (
    Vendor
    ),
    Цены
    (
    Pricing information
    ).
    Обратите внимание: Ели вы требуете лицензирования библиотеки, есть смысл защитить ее от модификации паролем.
    Лицензионная информация 3S сохраняется внутри файлов библиотек и регистрируется на компьютере автома- тически, при включении библиотеки в проект. Лицензионная информация для модулей других по- ставщиков должна быть записана в отдельном XML файле. Подробнее см. документ 3S License
    Manager.

    10
    Приложения
    Приложение A: Операторы и функции МЭК
    CoDeSys поддерживает все МЭК операторы. В отличие от стандартных функций (см. приложение
    D, Стандартная библиотека) данные операторы и функции не требуют подключения библиотек.
    Сверх требований МЭК CoDeSys поддерживает следующие дополнительные операторы, не вклю- ченные в стандарт: INDEXOF и SIZEOF (см. Арифметические операторы), ADR и BITADR (см. Ад- ресные операторы).
    Обратите внимание, что операторы могут принимать неявную форму. Так оператор сложения
    (ADD) в языке ST выражается знаком «+».
    Внимание: поддержка выполнения операций с плавающей запятой зависит от целевой платформы. o
    Арифметические операторы o
    Битовые операторы o
    Операторы сдвига o
    Операторы выборки o
    Операторы сравнения o
    Адресные операторы o
    Оператор вызова o
    Преобразования типов o
    Математические функции
    10.1
    Арифметические операторы
    ADD
    Сложение переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT,
    REAL и LREAL.
    Две переменных типа TIME можно складывать (напр. t#45s + t#50s = t#1m35s). Результат имеет тип
    TIME.
    Пример IL:
    LD
    7
    ADD 2,4,7
    ST
    Var 1
    Пример ST:
    var1 := 7+2+4+7;
    Пример FBD:
    MUL
    Перемножение значений переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
    DINT, UDINT, REAL и LREAL.
    Пример IL:

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-2
    LD
    7
    MUL 2,4,7
    ST
    Var 1
    Пример ST:
    var1 := 7*2*4*7;
    Пример FBD:
    SUB
    Вычитание значений переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
    UDINT, REAL и LREAL.
    Переменной TIME можно присвоить результат вычитания двух других переменных типа TIME. От- рицательное время не определено.
    Пример IL:
    LD
    7
    SUB 2
    ST
    Var 1
    Пример ST:
    var1 := 7-2;
    Пример FBD:
    DIV
    Деление значений переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
    UDINT, REAL и LREAL.
    Пример IL:
    LD
    8
    DIV 2
    ST
    Var 1
    (* Результат равен 4 *)
    Пример ST:
    var1 := 7-2;
    Пример FBD:
    Примечание: Определив в своем проекте функции с именами CheckDivByte, CheckDivWord, CheckDivDWord и CheckDivReal вы сможете контролировать делитель и обрабатывать, например, деление на 0.
    Внимание: Результат деления на 0 может отличаться на разных целевых платформах.

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-3
    Рассмотрим простейший пример применения CheckDivReal.
    Пример функции CheckDivReal:
    FUNCTION CheckDivReal : REAL
    VAR_INPUT divisor:REAL;
    END_VAR
    IF divisor = 0 THEN
    CheckDivReal := 1;
    ELSE
    CheckDivReal:=divisor;
    END_IF;
    Оператор DIV использует выход функции CheckDivReal как делитель. В следующей программе этот прием предотвращает деление на 0, делитель (d) заменяется с 0 на 1. В итоге получается ре- зультат 799.
    PROGRAM PLC_PRG
    VAR erg:REAL; v1:REAL := 799; d:REAL;
    END_VAR erg:= v1 / d;
    Внимание: CheckDiv-функции, содержащиеся в библиотеке Check.Lib, представляют собой примеры их реа- лизации. Прежде чем использовать эту библиотеку, убедитесь, что она работает так, как нужно в вашем случае, либо создайте собственные функции непосредственно в вашем проекте.
    MOD
    Остаток от деления значений переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT,
    UINT, DINT, UDINT. Результат всегда целое число.
    Пример IL:
    LD
    9
    MOD 2
    ST
    Var 1 (* Результат 1 *)
    Пример ST: var1 := 9 MOD 2;
    Пример FBD:

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-4
    MOVE
    Присвоение значения одной переменной другой соответствующего типа. В графических редакторах
    CFC и LD существует возможность управлять разрешением работы блока (разрешать или запре- щать операцию) с помощью входов EN/EN0. В FBD этого делать нельзя.
    Пример применения EN/EN0 в CFC:
    Только если значение en_i равно TRUE, значение переменной var1 будет присвоено var2.
    Пример IL:
    LD ivar1
    MOVE ivar2
    ST ivar2
    (! Аналогичный результат дает:
    LD ivar1
    ST ivar2 )
    Пример ST:
    ivar2 := MOVE(ivar1);
    ( ! Аналогичный результат дает: ivar2 := ivar1; )
    10.2
    Битовые операторы
    AND
    Побитное И. Операция применима к типам BOOL, BYTE, WORD или DWORD.
    Пример IL:
    Var1 BYTE
    LD
    2#1001_0011
    AND 2#1000_1010
    ST
    Var 1
    (* Результат 2#1000_0010 *)
    Пример ST: var1 := 2#1001_0011 AND 2#1000_1010
    Пример FBD:
    Внимание: В логических выражениях нельзя гарантировать присваивание промежуточных результатов. На- пример, если условие SFS перехода выглядит так:

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-5 то, значение переменной z может быть не присвоено. Это происходит по причине оптимизации вычислений компилятором. Если значения x и y FALSE, то конечный результат очевиден и остаток выражения вычислять не нужно.
    OR
    Побитное ИЛИ. Операция применима к типам BOOL, BYTE, WORD или DWORD.
    Пример IL: var1 :BYTE;
    LD
    2#1001_0011
    OR
    2#1000_1010
    ST var1
    (* Результат 2#1001_1011 *)
    Пример ST:
    Var1 := 2#1001_0011 OR 2#1000_1010
    Пример FBD:
    Внимание: См. примечание к AND.
    XOR
    Побитное исключающее ИЛИ. Операция применима к типам BOOL, BYTE, WORD или DWORD.
    Пример IL:
    Var1 :BYTE;
    LD
    2#1001_0011
    XOR 2#1000_1010
    ST
    Var1
    (* Результат 2#0001_1001 *)
    Пример ST:
    Var1 := 2#1001_0011 XOR 2#1000_1010
    Пример FBD:
    Внимание: Допускается расширяемая форма, т.е. XOR имеет более двух входов. В этом случае входы обраба- тываются попарно, затем к результатам опять применяется XOR. Такой алгоритм определен стандартом.
    NOT
    Побитное НЕ. Операция применима к типам BOOL, BYTE, WORD или DWORD.
    Пример IL:
    Var1 :BYTE;
    LD
    2#1001_0011
    NOT
    ST
    Var1
    (* Результат 2#0110_1100 *)

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-6
    Пример ST:
    Var1 := NOT 2#1001_0011
    Пример FBD:
    10.3
    Операторы сдвига
    Внимание: Количество бит, задействованных в данных операциях, определяется типом входной переменной!
    Тип переменной результата не влияет на процесс вычисления. (См. ST примеры ниже). Если вход- ная переменная представлена константой, выбирается наиболее компактный из возможных типов данных.
    SHL
    res:=SHL(in,n) Побитный сдвиг операнда in влево на n бит с дополнением нулями справа.
    Входные переменные и результат должны быть типа BYTE, WORD или DWORD.
    В следующем примере представлены различные результаты res_byte и res_word в зависимости от типа входной переменной (BYTE и WORD), хотя числовые их значения равны.
    Пример ST:
    PROGRAM shl_st
    VAR in_byte:BYTE:=16#45; in_word:WORD:=16#45; res_byte:BYTE; res_word:WORD; n:BYTE:=2;
    END_VAR res_byte:=SHL(in_byte,n);
    (* Результат 16#14 *) res_word:=SHL(in_word,n);
    (* Результат 16#0114 *)
    Пример FBD:
    Пример IL:
    LD
    16#45
    SHL 2
    ST res_byte
    SHR
    res:= SHR(in,n) Побитный сдвиг операнда in вправо на n бит с дополнением нулями слева.
    Входные переменные и результат должны быть типа BYTE, WORD или DWORD.

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-7
    Следующий пример подчеркивает зависимость результата от типа входной переменной (см. приме- чание выше):
    Пример ST:
    PROGRAM shr_st
    VAR in_byte:BYTE:=16#45; in_word:WORD:=16#45; res_byte:BYTE; res_word:WORD; n:BYTE:=2;
    END_VAR res_byte:=SHR(in_byte,n);
    (* Результат 16#11 *) res_word:=SHR(in_word,n);
    (* Результат 16#0011 *)
    Пример FBD:
    Пример IL:
    LD
    16#45
    SHR 2
    ST res_byte
    ROL
    res:=ROL(in,n) Циклический сдвиг операнда in влево на n бит, младшие биты последовательно за- полняются старшими. Входные переменные и результат должны быть типа BYTE, WORD или
    DWORD.
    В следующем примере представлены различные результаты res_byte и res_word в зависимости от типа входной переменной (BYTE и WORD), хотя числовые их значения равны.
    Пример ST:
    PROGRAM rol_st
    VAR in_byte:BYTE:=16#45; in_word:WORD:=16#45; res_byte:BYTE; res_word:WORD; n:BYTE:=2;
    END_VAR res_byte:=ROL(in_byte,n);
    (* Результат 16#15 *) res_word:=ROL(in_word,n);
    (* Результат 16#0114 *)
    Пример FBD:

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-8
    Пример IL:
    LD
    16#45
    ROL 2
    ST res_byte
    ROR
    res:=ROR(in,n) Циклический сдвиг операнда in вправо на n бит, младшие биты последовательно заменяют старшие. Входные переменные и результат должны быть типа BYTE, WORD или
    DWORD.
    Следующий пример подчеркивает зависимость результата от типа входной переменной (см. примечание выше):
    Пример ST:
    PROGRAM ror_st
    VAR in_byte:BYTE:=16#45; in_word:WORD:=16#45; res_byte:BYTE; res_word:WORD; n:BYTE:=2;
    END_VAR res_byte:=ROR(in_byte,n);
    (* Результат 16#51 *) res_word:=ROR(in_word,n);
    (* Результат 16#4011 *)
    Пример FBD:
    Пример IL:
    LD
    16#45
    ROR 2
    ST res_byte
    10.4
    Операторы выборки
    Константы в примерах этого раздела используются исключительно для наглядности. Все операции можно вы- полнять и с переменными.
    SEL
    Бинарный выбор.
    OUT:= SEL(G, IN0, IN1) означает
    OUT:= IN0 если G=FALSE;
    OUT:= IN1 если G=TRUE.
    IN0, IN1 и OUT могут быть любого типа, G должно быть типа BOOL. Бинарный выбор возвращает одно из двух: IN0, если G ЛОЖЬ, или IN1, если G ИСТИНА.

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-9
    Пример IL:
    LD
    FALSE
    SEL 3,4
    ST
    Var1
    (* Результат - 3 *)
    Пример FBD:
    Внимание: Выражение, стоящее перед IN0 или IN1 может не вычисляться, если соответствующий вход не вы- бран, что определяется значением G.
    MAX
    Функция максимум возвращает наибольшее из двух значений.
    OUT := MAX(IN0, IN1)
    IN0, IN1 и OUT могут быть любого типа.
    Пример IL:
    LD
    90
    MAX 30
    MAX 40
    MAX 77
    ST
    Var1
    (* Результат - 90 *)
    Пример FBD:
    MIN
    Функция минимум возвращает наименьшее из двух значений.
    OUT := MIN(IN0, IN1)
    IN0, IN1 и OUT могут быть любого типа.
    Пример IL:
    LD
    90
    MIN 30
    MIN 40
    MIN 77
    ST
    Var1
    (* Результат 30 *)
    Пример FBD:

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-10
    LIMIT
    Ограничитель
    OUT := LIMIT(Min, IN, Max) означает:
    OUT := MIN (MAX (IN, Min), Max)
    Max задает верхнюю и Min нижнюю границы ограничителя. Если IN больше верхнего или меньше нижнего пределов, результат ‘обрезается’ соответственно до Max или Min.
    IN и OUT могут быть любого типа.
    Пример IL:
    LD
    90
    LIMIT 30,80
    ST
    Var 1 (* Результат - 80 *)
    MUX
    Мультиплексор. Возвращает K-е значение из входных переменных.
    OUT := MUX(K, IN0,...,INn) означает:
    OUT := INK.
    IN0, ...,INn и OUT могут быть любого типа. Переменная K должна быть BYTE, WORD, DWORD,
    SINT, USINT, INT, UINT, DINT или UDINT.
    Пример IL:
    LD
    0
    MUX 30,40,50,60,70,80
    ST
    Var 1
    (* Результат - 30 *)
    Внимание: В результате оптимизации выражение, стоящее перед входом, может не вычисляться, если соот- ветствующий вход не выбран. В режиме эмуляции все выражения вычисляются.
    10.5
    Операторы сравнения
    GT
    Больше
    Двоичный оператор возвращает TRUE, если значение первого параметра больше второго.
    Операнды могут быть типов BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
    UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME и STRING.
    Пример IL:
    LD
    20
    GT
    30
    ST
    Var 1
    (*Результат - ЛОЖЬ*)
    Пример ST:
    VAR1 := 20 > 30 > 40 > 50 > 60 > 70;
    Пример FBD:

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-11
    LT
    Меньше
    Двоичный оператор возвращает TRUE, если значение первого параметра меньше второго.
    Операнды могут быть типов BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
    UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME и STRING.
    Пример IL:
    LD
    20
    LT
    30
    ST
    Var 1
    (*Результат - ИСТИНА*)
    Пример ST:
    VAR1 := 20 < 30;
    Пример FBD:
    LE
    Меньше или равно
    Двоичный оператор возвращает TRUE, если значение первого параметра меньше или равно второму.
    Операнды могут быть типов BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
    UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME и STRING.
    Пример IL:
    LD
    20
    LE
    30
    ST
    Var 1
    (*Результат - ИСТИНА*)
    Пример ST:
    VAR1 := 20 <= 30;
    Пример FBD:
    GE
    Больше или равно
    Двоичный оператор возвращает TRUE, если значение первого параметра больше или равно второму.
    Операнды могут быть типов BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
    UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME и STRING.

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-12
    Пример IL:
    LD
    60
    GE
    40
    ST
    Var 1
    (*Результат - ИСТИНА*)
    Пример ST:
    VAR1 := 60 >= 40;
    Пример FBD:
    EQ
    Равно
    Двоичный оператор возвращает TRUE, если значение первого параметра равно второму.
    Операнды могут быть типов BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
    UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME и STRING.
    Пример IL:
    LD
    40
    EQ
    40
    ST
    Var 1
    (*Результат - ИСТИНА*)
    Пример ST:
    VAR1 := 40 = 40;
    Пример FBD:
    NE
    Не равно
    Двоичный оператор возвращает TRUE, если значение первого параметра не равно второму.
    Операнды могут быть типов BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
    UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME и STRING.
    Пример IL:
    LD
    40
    NE
    40
    ST
    Var 1
    (*Результат - FALSE*)
    Пример ST:
    VAR1 := 40 <> 40;
    Пример FBD:

    Приложение A: Операторы и функции МЭК
    CoDeSys V2.3 10-13
    10.6
    Адресные операторы
    Внимание: При онлайн коррекции кода, адреса переменных могут измениться. Не забывайте о такой вероят- ности, используя указатели.
    Описанные в этом разделе операторы и функции не предписаны стандартом МЭК.
    ADR
    Функция адрес
    ADR возвращает адрес аргумента в формате DWORD. Полученный адрес может быть передан функции в качестве аргумента или присвоен переменной типа указатель.
    Пример IL:
    LD
    Var 1
    ADR
    ST
    Var 2 man_fun1
    ADRINST
    При вызове функции ADRINST из экземпляра функционального блока она возвращает адрес экземпляра в DWORD. Данный адрес можно передавать в функции и использовать как указатель, либо его можно непосредственно присвоить переменной проекта типа указатель.
    Пример ST (внутри экземпляра функционального блока):
    dvar:=ADRINST(); (* Присваивание адреса экземпляра переменной dvar *) fun(a:=ADRINST()); (* Адрес экземпляра как аргумент функции *)
    Пример IL:
    ADRINST
    ST dvar
    ADRINST fun
    1   ...   32   33   34   35   36   37   38   39   ...   50


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