Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МЭК 61131-3

.pdf
Скачиваний:
111
Добавлен:
23.05.2019
Размер:
9.36 Mб
Скачать

ГОСТ Р МЭК 61131-3—2016

Т а б л и ц а 30 — Функции битового сдвига

Но­

Описание

Название

Объяснение

мер

 

 

 

 

 

Графическая форма

 

 

Пример использования а

 

+---------+

 

 

 

I * * *

|

 

 

 

A N Y B I T — | I N

| — A N Y B I T

 

А:= SHL(IN:=B, N:=5);

 

A N Y I N T — |N

|

 

 

 

(язык ST)

 

+---------+

 

 

(***) — Имя функции

 

 

 

1

Сдвиг влево

 

SHL

OUT:= IN, сдвинутому влево на N бит, биты справа

 

заполняются нулями

 

 

 

 

2

Сдвиг вправо

 

SHR

OUT:= IN, сдвинутому вправо на N бит, биты слева

 

заполняются нулями

 

 

 

 

3

Циклический сдвиг влево

ROL

OUT:= IN, циклически сдвинутому влево на N бит

4

Циклический сдвиг вправо

ROR

OUT:= IN, циклически сдвинутому вправо на N бит

П р и м е ч ан и е 1 — Запись OUT ссылается на результат функции.

Пример

IN:= 2#0001_1001 of type BYTE, N = 3 SHL0N, 3) = 2М100 1000

SHR0N, 3) = 2U0000 0011

ROL(IN, 3) = 2#1100_1000

ROR(IN, 3) = 2#0010_0011

П р и м е ч ан ие 2 — IN типа BOOL (один бит) не имеет смысла. а) Если входная переменная N меньше нуля, возникает ошибка.

Таблица 31 — Поразрядные логические функции

 

 

Номер

 

Описание

Название

Символ

Объяснение

 

(см. примечание 3)

 

 

 

 

 

 

 

Графическая форма

 

 

Примеры использования

 

 

+-------- +

 

 

(см. примечание 5)

 

A N Y _ B IT — | * * * | — A N Y _ B IT

 

 

А:= AND(B, С, D);

 

A N Y B IT

— |

|

 

 

 

 

 

или

 

:

— I

I

 

 

 

:

— I

I

 

 

А:= В & С & D;

 

A N Y _ B IT

— |

|

 

 

 

 

 

+-------- +

 

 

 

 

(***) — Название или символ

 

 

 

1

И

 

 

AND

&

OUT:= IN1 & IN2 &... & INn

 

 

 

 

 

(см. приме­

 

 

 

 

 

 

чание 1)

 

2

Или

 

 

OR

> = 1

OUT:= IN1 OR IN2 OR... OR INn

 

 

 

 

 

(см. приме­

 

 

 

 

 

 

чание 2)

 

3

Исключающее или

 

XOR

= 2к+1

OUT:= IN1 XOR IN2 XOR... XOR INn

 

 

 

 

 

(см. приме­

 

4

Отрицание

 

NOT

чание 2)

OUT:= NOT IN1 (см. примечание 4)

 

 

78

ГОСТ Р МЭК 61131-3—2016

Окончание таблицы 31

Пр и м е ч а н и е 1 — Данный символ подходит для использования в качестве оператора в текстовых язы­ ках, как показано в таблицах 68 и 71.

Пр и м е ч ан и е 2 — Данный символ не подходит для использования в качестве оператора в текстовых

языках.

П р и м е ч ан и е 3 — Запись IN1, I N 2 , I N n ссылается на входные переменные в нисходящем порядке; OUT ссылается на выходную переменную.

Пр и м е ч ан и е 4 — Графическое отрицание сигналов типа BOOL также может быть осуществлено.

Пр и м е ч ан и е 5 — Примеры использования и объявления даны на языке ST.

a)Когда представление функции поддерживается именем, это отмечается суффиксом «п» в декларации соответствия. Например, «1п» представляет запись «AND».

b)Когда представление функции поддерживается символом, это отмечается суффиксом «s» вдекларации соответствия. Например, «1s» представляет запись «&».

6.6.2.5.10 Функции выбора и сравнения Функции выбора и сравнения перегружены для всех типов данных. Стандартное графическое

представление, имена функций и символов и описания функций сравнения показываются в таблице 32. Стандартное графическое представление, имена функций и символов и описания функций срав­ нения показываются в таблице 33. Все функции сравнения (за исключением функции NE) являются

расширяемыми.

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

Т аб л и ца 32 — Функции выбора*1)

Но­

Описание

Имя

мер

 

 

1

Пересылка3)'

MOVE

 

d) (присваива­

 

 

ние)

 

2

Двоичный

SEL

 

выбор*1)

 

Графическая форма

 

 

+---------------

 

+

 

 

 

|

MOVE

|

 

A N Y

|

 

| -

A N Y

 

 

+---------------

 

+

 

 

 

+-------------

 

+

 

 

 

|

SEL

|

 

BOOL

— |G

 

| -

A N Y

A N Y

— | IN O

|

 

A N Y

| I N

I

|

 

 

 

+------------- +

 

3

Расширяемая

МАХ

+----------- +

 

функция

мак­

A N Y E LE M E N TA R Y

|

MAX

|

 

симума

 

— |

 

| - A NY E LE M E N TA R Y

 

 

:

— I

 

I

 

 

 

 

 

 

 

A N Y _ E L E M E N T A R Y — |

 

|

 

 

 

 

+----------- +

4

Расширяемая

MIN

+----------- +

 

функция

ми­

 

|

M IN

|

 

нимума

 

A N Y E L E M E N TA R Y — |

 

| - A N Y E LE M E N TA R Y

 

 

:

— I

 

I

 

 

 

 

 

 

 

A N Y _ E L E M E N T A R Y — |

 

|

 

 

 

 

+----------- +

Объяснение/Пример

OUT:= IN

OUT:= INO if G = 0 OUT:= IN1 if G = 1

Пример 1

A:= SEL (G ;= 0,

IN0:=X,

IN1:= 5);

OUT:=

MAX(IN1, IN2.....INn);

Пример 2

A:= UAX(B, C , D);

OUT:=

MIN (IN1,1N2....

Nn)

Пример 3

A:= MIN(B, C, D);

79

ГОСТ Р МЭК 61131-3— 2016

Окончание таблицы 32

Но­

Описание

Имя

мер

 

 

5

Ограничитель

LIMIT

Графическая форма

+------------

+

| L I M I T

|

A N Y _ E L E M E N T A R Y — |MN

| - A N Y _ E L E M E N T A R Y

A N Y _ E L E M E N T A R Y — | I N

|

A N Y _ E L E M E N T A R Y — |MX

|

+------------

+

Объяснение/Пример

OUT:= MIN (MAX(IN, MN),MX);

Пример 4

A:= LIMIT(IN:= B,

MN:= 0,

MX:= 5);

6

Расширенный MUX

a , b, c:

 

 

мультиплек­

Выбирает

одну из N

 

сор k)'

е)

входных

переменных

 

+------------+

 

в зависимости от вход­

 

| M U X

|

 

 

 

ной переменной К

 

A N Y _ E L E M E N T A R Y —

| -

A N Y _ E L E M E N T A R Y

 

Пример 5

 

A N Y E L E M E N T A R Y — |

|

 

 

A N Y _ E L E M E N T A R Y — |

|

 

А:= MUX(0, В, С, D);

 

+------------+

 

 

 

имеет такой же эф­

 

 

 

 

 

 

 

 

фект как

 

 

 

 

А:= В;

П р и м е ч а н и е

1 — Запись IN1, IN2, INn ссылается на входные переменные в нисходящем порядке;

OUT ссылается на выходную переменную.

 

 

 

П р и м е ч а н и е

2 — Примеры использования и объявления даны на языке ST.

 

a)Функция MOVE имеет ровно одну входную переменную IN типа ANY и одну входную переменную OUT типа ANY.

b)Неименованные входные переменные функции MUX имеют неявные имена INO, IN1....INn-1 в нисхо­ дящем порядке, где п из общего числа входных переменных. Данные имена могут (но необязательно) быть по­ казаны в графическом представлении.

c)Функция MUX может быть типизирована в форме MUX_*_**, где * — тип входной переменной К и ** — тип других входных переменных и выхода.

d)Разработчику разрешается (но необязательно) поддерживать выбор среди переменных определенных пользователем типов данных, чтобы подтвердить соответствие этому свойству.

e)Если фактическое значение входной переменной К функции MUX находится вне диапазона {0 ... п-1}, возникает ошибка.

Та б л и ц а 33 — Функции сравнения

Но­

Описание

 

Имяа>

Символь>

Объяснение

мер

 

(расширяемая: 2 или большее число операндов)

 

Графическая форма

 

 

 

Пример использования

 

 

+--------+

 

 

А:= GT(B, С, D); // Имя функции

 

ANY ELEM ENTARY

— | * * *

| — BOOL

 

 

или

 

:

— I

I

 

 

А:= (В>С) & (C>D); // Символ

 

A NY _ELEM EN TA R Y — |

|

 

 

 

 

+--------+

 

 

 

 

(***) Имя или символ

 

 

 

 

1

Убывающая последовательность

GT

>

OUT:=

 

 

 

 

 

 

(IN1>IN2)& (IN2>IN3) &.. & (INn-1 > INn)

2

Монотонная последовательность

GE

>=

OUT:=

 

 

 

 

 

 

(IN1>=IN2)&(IN2>=IN3)&.. & (INn-1 >= INn)

80

 

 

 

 

ГОСТ Р МЭК 61131-3— 2016

Окончание таблицы 33

 

 

 

Но­

Описание

Имя3)

Символ6)

Объяснение

мер

(расширяемая: 2 или большее число операндов)

 

 

 

3

Equality

EQ

=

OUT:=

 

 

 

 

(IN1=IN2)&(IN2=IN3) &.. & (INn-1 = INn)

4

Монотонная последовательность

LE

<=

OUT:=

 

 

 

 

(IN1<=IN2)&(IN2<=IN3)&.. & (INn-1 <= INn)

5

Increasing sequence

LT

<

OUT:=

 

 

 

 

(IN1<IN2)& (IN2<IN3) &.. & (INn-1 < INn)

6

Inequality

NE

<>

OUT:= (IN1<>IN2) (нерасширяемая)

П р и м е ч а ни е 1 — Запись IN1, IN2.....INn ссылается на входные переменные в нисходящем порядке; OUT ссылается на выходную переменную.

П р и м е ч а ни е 2 — Все символы, показанные в данной таблице, могут использоваться как операторы

втекстовых языках.

Пр и м е ч а ни е 3 — Примеры использования и объявления даны на языке ST.

Пр и м е ч а ни е 4 — Стандартные функции сравнения могут также определяться зависящими от языка, например, на языке релейно-контактных схем.

з) Когда представление функции поддерживается именем, это отмечается суффиксом «п» в декларации соответствия. Например, «1п» представляет запись «GT».

ь) Когда представление функции поддерживается символом, это отмечается суффиксом «э» в декларации соответствия. Например, «1э» представляет запись «>».

К строкам символов применяется таблица 33. Вместо однобайтовой строки может использоваться переменная типа CHAR или WCHAR, соответственно.

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

Пример Строка символов ‘Z’ больше строки символов ‘AZ’ (‘Z ’ > ‘А’) и строка символов ‘AZ’ боль­ ше чем строка ‘АВС’ (‘А’ = ‘А’ и ‘Z’ > ‘В’).

Стандартное графическое представление, имена и символы функций и описания дополнительных функций сравнения строк символов показываются в таблице 34. При выполнении данных операций, позиции символов в строке считаются пронумерованными 1, 2,.... L, начиная с самого левого символа, где L — длина строки.

Ошибка возникает, если:

- фактическое значение какой-либо входной переменной типа ANYJNT в таблице 34 меньше

нуля;

-вычисление функции приводит к попытке (1) получить доступ к несуществующей позиции в стро­ ке, или (2) получить строку длиннее определенной разработчиком максимальной длины строки;

-аргументы типа данных STRING или CHAR и аргументы типа данных WSTRING или WCHAR смешаны в одной функции.

Таблица 34

— Строковые функции

 

 

 

Но­

Описание

Графическая форма

Пример

мер

 

 

 

 

 

 

1 Длина

 

+

------------------

+

Длина строки

 

строки

ANY_STRING— |

LEN

| — ANY_INT

А:= LEN('ASTRING’);

 

 

 

+ ------------------

 

+

... эквивалентно А:= 7;

81

ГОСТ Р МЭК 61131-3—2016

Окончание таблицы 34

Но­

Описание

мер

2Левая

подстрока

3Правая

подстрока

4Средняя

подстрока

5Расши­

ряемая

конкате­

нация

6Вставить

Графическая форма

 

 

+ -------------------

 

+

 

 

A N Y _STRING —

|

LEN

| — A N Y _IN T

 

 

+ -------------------

 

+

 

 

 

+ -------------------

 

 

+

 

 

 

|

RIGHT

|

 

 

ANY_STRING — | IN

 

| —

ANY_STRING

A N Y _IN T

— | L

 

|

 

 

 

+ -------------------

 

 

+

 

 

 

+ -------------------

 

 

+

 

 

 

|

 

M ID

|

 

 

ANY STR IN G — | IN

 

| —

ANY

STRING

A N Y _IN T

|L

 

|

 

 

A N Y _IN T

— |P

 

|

 

 

 

+ -------------------

 

 

+

 

 

 

+ -------------------

 

 

+

 

 

 

|

CONCAT

|

 

 

ANY CHARS— |

 

 

| —

ANY

STRING

: —

I

 

 

I

 

 

ANY_CHARS— |

 

 

|

 

 

 

+ -------------------

 

 

+

 

 

 

+

-----------------

 

+

 

 

 

|

INSERT

|

 

 

ANY_STRING— | IN I

 

| —

ANY_STRING

ANY_CHARS

— | IN 2

 

|

 

 

ANY_INT---------

| P

 

|

 

 

 

+

-----------------

 

+

 

 

7 Удалить

8 Заменить

9 Найти

 

+

------------------DELETE

+

 

 

|

|

 

ANY_STRING— | IN

| —

ANY_STRING

ANY_INT

| L

|

 

ANY_INT

— |P

|

 

 

+

------------------

+

 

 

+ ------------------

 

+

 

 

|

REPLACE

|

 

ANY STRING— | IN I

| —

ANY STRING

ANY_CHARS

| IN 2

|

 

ANY_INT

— | L

|

 

ANY_INT

|P

|

 

 

+ ------------------

 

+

 

 

--------------------

+

+

 

 

 

| F IN D

|

 

AN Y _STRING

| I N I

| — A N Y _ IN T

ANY_CHARS

| IN 2

|

 

 

--------------------

+

+

 

Пример

L самых левых символов из IN

А:= LEFT(IN:=‘ASTR\ L:=3);

эквивалентно A:= ‘AST’;

L самых правых символов из IN

А:= LEFT(IN:=ASTR’, L:=3);

эквивалентно A:= ‘STR’;

L символов из IN, начиная с Р-й по­ зиции символа

А:= MID(IN:=‘ASTR’, L:=2, Р:=2);

эквивалентно А:= ‘ST’;

Расширяемая конкатенация

А:= CONCATCAB’/CD’/E ’);

эквивалентно А:= ‘ABCDE’;

Вставить строку IN2 в строку IN1 по­ сле Р-й позиции символа

А:= INSERT(IN1 :=’АВС’,

IN 2:-XY’, Р=2);

эквивалентно А:= ‘ABXYC’;

Удалить L символов из строки IN, начиная с Р-й позиции символа

А:= DELETE(IN:=‘ABXYC\

L:=2, Р:=3);

эквивалентно А:= ‘АВС1;

Заменить L символов строки IN1 строкой IN2, начиная в Р-й позиции символа

А:= REPLACE(IN1 :=‘ABCDE\

IN 2:-X ’, L:=2, P:=3);

эквивалентно A:= ‘ABXE’;

Найти позицию символа в начала первого вхождения строки IN2 в строку IN1. Если вхождения строки IN2 не обнаружены, то OUT:= 0.

А:= FIND(IN1 :=‘АВСВС’, IN2:=‘BC’);

... эквивалентно А:= 2;

Пр и м е ч а н и е 1 Примеры в этой таблице даются на языке ST.

Пр и м е ч а н и е 2 — Все входные переменные функции CONCAT имеют тип ANY_CHARS, то есть могут быть также типа CHAR или типа WCHAR.

Пр и м е ч а н и е 3 — Входная переменная IN2 функций INSERT, REPLACE, FIND имеет тип ANY_CHARS, то есть может также иметь тип CHAR или WCHAR.

82

ГОСТ Р МЭК 61131-3— 2016

6.6.2.5.11Функции даты и продолжительности времени

В функциях сравнения и выбора разрешено также использование входных и выходных перемен­ ных, имеющих типы данных времени и продолжительности времени, показанные в таблице 35.

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

Т а б л и ц а 35 — Числовые функции типов данных времени и продолжительности времени

 

Но­

Описание

Символ

IN1

IN2

OUT

мер

(имя функции)

 

 

 

 

1 а

ADD

+

TIME, LTIME

TIME, LTIME

TIME, LTIME

1 b

ADD_TIME

+

TIME

TIME

TIME

1 с

ADD_LTIME

+

LTIME

LTIME

LTIME

2 а

ADD

+

TOD, LTOD

LTIME

TOD, LTOD

2 Ь

ADD_TOD_TIME

+

TOD

TIME

TOD

2 с

AD D_LTOD_LTIME

+

LTOD

LTIME

LTOD

За

ADD

+

DT, LDT

TIME, LTIME

DT, LDT

ЗЬ

ADD_DT_TIME

+

DT

TIME

DT

Зс

ADD_LDT_LTIME

+

LDT

LTIME

LDT

SUB

-

TIME, LTIME

TIME, LTIME

TIME, LTIME

SUB_TIME

-

TIME

TIME

TIME

SUB_LTIME

-

LTIME

LTIME

LTIME

SUB

-

DATE

DATE

TIME

SUB_DATE_DATE

-

DATE

DATE

TIME

SUB_LDATE_LDATE

-

LDATE

LDATE

LTIME

6 а

SUB

-

TOD, LTOD

TIME, LTIME

TOD, LTOD

6 Ь

SUB_TOD_TIME

-

TOD

TIME

TOD

6 с

SUB_LTOD_LTIME

-

LTOD

LTIME

LTOD

SUB

-

TOD, LTOD

TOD, LTOD

TIME, LTIME

SUB_TOD_TOD

-

TOD

TOD

TIME

SUB_TOD_TOD

-

LTOD

LTOD

LTIME

8 а

SUB

-

DT, LDT

TIME, LTIME

DT, LDT

8 Ь

SUB_DT_TIME

-

DT

TIME

DT

8 с

SUB_LDT_LTIME

-

LDT

LTIME

LDT

SUB

-

DT, LDT

DT, LDT

TIME, LTIME

SUB_DT_DT

-

DT

DT

TIME

SUB_LDT_LDT

-

LDT

LDT

LTIME

1 0 а

MUL

*

TIME, LTIME

ANY_NUM

TIME, LTIME

 

1 0 Ь

MUL_TIME

*

TIME

ANY_NUM

TIME

 

Юс

MUL_LTIME

*

LTIME

ANY_NUM

LTIME

 

1 1 а

DIV

1

TIME, LTIME

ANY_NUM

TIME, LTIME

83

ГОСТ Р МЭК 61131-3—2016

Окончание таблицы 35

 

 

 

 

Но­

Описание

Символ

IN1

IN2

OUT

мер

(имя функции)

 

 

 

 

11Ь

DIVTIME

/

TIME

ANY_NUM

TIME

11с

DIV_LTIME

/

LTIME

ANY_NUM

LTIME

П р и м е ч а ни е — Данные стандартные функции поддерживают перегрузку, но только в пределах обоих наборов тапов данных (TIME, DT, DATE, TOD) и (LTIME, LDT, DATE, LTOD).

Пример Операторы языка ST

Х:= DT#1986-04-28-08:40:00; Y:= DT_TO_TOD(X);

W:= DT_TO_DATE(X);

имеют такой же результат, как и операторы с «извлеченными» данными.

Х:= DT1H986-04-28-08:40:00; Y:= TIME_OF_DAY#08:40:00; W:= DATE#1986-04-28;

Функции конкатенации и расщепления данных, показанные в таблице 36, определены и для об­ работки данных даты и времени. Дополнительно определена функция получения дня недели.

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

Таблица 36 — Дополнительные CONCAT и SPLIT функции для типов данных даты и времени

Но­

Описание

 

Графическая форма

 

Пример

мер

 

 

 

 

 

 

 

 

Конкатенация типов данных даты и времени

 

 

1a CONCAT_DATE

 

+-----------------+

Соединить дату и время

 

_TOD

 

VAR

 

 

| CONCAT DATE TOD

|

 

 

 

myD: DATE;

 

DATE

|DATE

|— DT

 

END_VAR

 

TOD

|TOD

|

 

 

 

+-----------------+

myD:= CONCAT_DATE_TOD

(D#2010-03-12, TOD#12:30:00);

1b

CONCAT DATE

 

 

 

 

_LTOD

 

+----------------

+

 

 

 

| CONCAT_DATE_LTOD|

 

DATE

|DATE

|— LDT

 

LTOD

|LTOD

|

 

 

 

+----------------

+

2

CONCAT_DATE

 

+------------

+

 

 

 

| CONCAT DATE

|

 

ANY

INT — |YEAR

|— DATE

 

ANY_INT — |MONTH

|

 

ANY_INT — |DAY

|

 

 

 

+------------

+

Соединить дату и время суток VAR

myD: DATE; END_VAR

myD:= CONCAT_DATE_LTOD (D#2010-03-12,

TOD#12:30:12.1223452);

Соединить дату и время суток VAR

myD: DATE; END_VAR

myD:= CONCATJDATE (2010,3,12);

84

Продолжение таблицы 36

 

 

 

 

Но­

Описание

 

Графическая форма

 

мер

 

 

 

 

 

 

 

За

CONCAT TOD

 

|

CONCAT_TOD

 

 

 

 

 

 

ANY_INT

■|HOUR

— TOD

 

ANY_INT

■|MINUTE

 

 

ANY_INT - 1SECOND

 

 

ANY

INT

- 1MILLISECOND

 

 

 

 

+------------------------

 

 

3b

CONCAT LTOD

 

|

CONCAT_LTOD

 

 

 

 

 

 

ANY_INT

■|HOUR

— LTOD

 

ANY_INT - |MINUTE

 

 

ANY_INT - |SECOND

 

 

ANY

INT

- |MILLISECOND

 

 

 

 

+--------------------------

 

 

4a

CONCAT DT

 

 

 

 

 

ANY

 

|

CONCAT_DT

 

 

IN T

— |YEAR

— DT

 

ANY_ IN T

- - |MONTH

 

 

ANY_ IN T

- - | DAY

 

 

ANY_ IN T

- - | HOUR

 

 

ANY_ IN T

- - |MINUTE

 

 

ANY

IN T

— |SECOND

 

 

ANY

IN T

- - |M ILLISECOND

 

 

 

 

+

-------------------------

 

4b

CONCAT LDT

 

+ ---------------------------

 

 

 

 

 

|

CONCATLDT

 

 

ANY_INT

— |YEAR

— LDT

 

ANY_INT

— |MONTH

 

 

ANY_INT

— |DAY

 

 

ANY_INT

— |HOUR

 

 

ANY_INT

— |MINUTE

 

 

ANY_INT

— |SECOND

 

 

ANY_INT

— |MILLISECOND

 

 

 

 

+------------

 

 

 

Расщепление типов даты и времени

 

 

SPLIT DATE

+---------------

 

-----+

 

 

 

|

SPLIT DATE |

 

 

DATE— |IN

 

YEAR|- ANY_INT

 

 

I

 

MONTH|- ANY_INT

 

 

I

 

DAY | -

ANY INT

 

 

+ ---------------

 

-----------+

 

См. примечание 2

ГОСТ Р МЭК 61131-3— 2016

Пример

Соединить время суток VAR

myTOD: TOD; END_VAR

myTD:=CONCAT_TOD(16,33,12,0);

Соединить время суток VAR

myTOD: LTOD; END_VAR

myTD:= CONCAT_TOD (16,33,12,0);

Соединить время суток VAR

myDT: DT; Day: USINT;

END_VAR

Day := 17; myDT:= CONCAT_DT (2010,3,Day,12,33,12,0);

Соединить время суток VAR

myDT: LDT; Day: USINT;

END_VAR

Day := 17;

myDT:= CONCATLDT (2010,3,Day,12,33,12,0);

Расщепить дату VAR

myD: DATE:= DATE#2010-03-10; myYear: UINT;

myMonth, myDay: USINT;

END_VAR SPLIT_DATE

(myD, myYear, myMonth, myDay);

85

ГОСТ Р МЭК 61131-3—2016

Продолжение таблицы 36

 

 

 

 

 

 

 

 

Но­

Описание

 

 

Графическая форма

 

 

Пример

мер

 

 

 

 

 

 

 

 

 

 

 

 

 

SPLIT_TOD

 

+--------------------------

 

 

+

 

 

Расщепить время суток

 

 

 

|

SPLIT

TOD

|

ANY_INT

VAR myTOD: TOD:= TOD#14:12:03;

 

 

TOD— |I N

 

HOUR|—

myHour, myMin, mySec: USINT;

 

 

 

|

MINUTE|—

ANY_INT

 

 

 

myMilliSec: UINT;

 

 

 

|

SECOND|—

ANY_INT

 

 

 

END_VAR

 

 

 

|

M ILLISECO ND|—

ANY_INT

 

 

 

SPLIT_TOD(myTOD, myHour,

 

 

 

+--------------------------

 

 

+

 

 

 

 

См. примечание 2

 

 

 

 

myMin, mySec, myMilliSec);

 

 

 

 

 

 

 

SPLIT_LTOD

 

+-------------------------

 

 

+

 

 

Расщепить время суток

 

 

 

|

SPLIT

LTOD

|

 

 

VARmyTOD: LTOD:=TOD#14:12:03;

 

 

LTOD— |IN

HOUR|—

ANY

INT

myHour,

 

 

 

|

 

MINUTE|—

ANY_INT

myMin, mySec: USINT;

 

 

 

|

 

SECOND|—

ANY

INT

 

 

 

 

myMilliSec: UINT;

 

 

 

|

M ILLISECOND|—

ANY_INT

 

 

 

+-------------------------

 

 

+

 

 

END_VAR

 

 

См. примечание 2

 

 

 

 

SPLIT_TOD(myTOD, myHour,

 

 

 

 

 

 

myMin, mySec, myMilliSec);

 

 

 

 

 

 

 

 

 

SPLIT_DT

+ ---------------------------

 

 

+

 

 

Расщепить дату

 

 

|

SPLIT

DT

|

ANY_INT

VAR myDT: DT

 

 

DT— | I N

 

YEAR|—

:= DT#2010-03-10-14:12:03:00;

 

 

|

 

 

MONTH|—

ANY_INT

 

 

 

 

myYear, myMilliSec: UINT;

 

 

|

 

 

DAY|—

ANY

IN T

 

 

 

 

myMonth, myDay, myHour,

 

 

|

 

 

HOUR|—

ANY

IN T

 

 

 

 

myMin,

 

 

|

 

M IN UTE|—

ANY_INT

 

 

|

 

SECOND|—

ANY_INT

mySec: USINT;

 

 

|

M ILLIS E C O N D |—

ANY_INT

END_VAR

 

 

+ ---------------------------

 

 

+

 

 

SPLIT_DT(myDT, myYear, myMonth,

 

 

См. примечание 2

 

 

 

 

 

 

 

 

 

 

myDay,

 

 

 

 

 

 

 

 

 

myHour, myMin, mySec, myMilliSec);

SPLIT_LDT

 

+--------------------------

 

 

+

 

 

Расщепить дату

 

 

 

| SPLIT_LDT |

ANY_INT

VAR myDT: LDT

 

 

LDT— | I N

 

YEAR|—

:= DT#2010-03-10-14:12:03:00;

 

 

 

|

 

MONTH|—

ANY

IN T

 

 

 

 

myYear, myMilliSec: UINT; UINT;

 

 

 

|

 

DAY|—

A N Y I N T

 

 

 

 

myMonth, myDay, myHour, myMin,

 

 

 

|

 

HOUR|—

ANY_INT

 

 

 

 

mySec: USINT;

 

 

 

|

MINUTE|—

ANY_INT

 

 

 

|

SECOND|—

ANY_INT END_VAR

 

 

 

|

M ILLISEC O N D |—

ANY_INT

SPLIT_DT(myDT, myYear, myMonth,

 

 

 

+

 

 

+

 

 

 

 

 

 

 

 

 

myDay,

 

 

 

 

 

 

 

 

 

 

 

См. примечание 2

 

 

 

 

myHour, myMin, mySec, myMilliSec);

 

Получить день недели

 

 

 

 

 

 

 

8

DAY_0F_WEЕК

 

+

 

 

+

 

 

Получить день недели:

 

 

 

 

 

 

 

VAR myD: DATE:= DATE#2010-03-

 

 

 

| DAY OF WEEK |

 

 

 

 

DATE— | I N

 

| -

ANY_INT

10; myDoW: USINT;

 

 

 

+--------------------------

 

 

+

 

 

END_VAR

 

 

См. примечание 2

 

 

 

 

myDoW:= DAY_OF_WEEK(myD);

 

 

 

 

 

 

 

Функция DAY_OF_WEEK возвращает 0 для воскресенья, 1 для понедельника,..., 6 для субботы

86

ГОСТ Р МЭК 61131 -3— 2016

Окончание таблицы 36

Пр и м е ч а н и е 1 — Тип данных входной переменной YEAR должен быть, по меньшей мере, 16-битовым типом для поддержки допустимого значения года.

Пр и м е ч а н и е 2 — Типы данных для типов данных выходных переменных ANYJNT определяет разработчик.

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

6.6.2.5.12Функции преобразования порядка следования байтов

Функции преобразования порядка следования байтов преобразуют этот порядок при обмене ин­ формацией с определенным разработчиком PLC.

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

Значения данных в порядке big endian (от старшего к младшему) помещаются в байтах памяти, начиная елевого байта и оканчивая правым.

Значения данных в порядке little endian (от младшего к старшему) помещаются в байтах памяти, начиная с правого байта и оканчивая левым.

Независимо от порядка следования байтов, битовое смещение 0 адресует самый правый бит типа данных.

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

Пример 1 Порядок следования байтов

TYPE D: DWORD:= 16#1234_5678; E N D TY P E ; Расположение в памяти

для порядка big endian: 16#12, 16#34,16#56,16#78 для порядка little endian: 16#78, 16#56,16#34,16#12.

Пример 2 Порядок следования байтов

TYPE L: ULINT:= 16#1234_5678_9ABC_DEF0; END TYPE; Расположение в памяти

для порядка big endian: 16#12, 16#34,16#56, 16#78, 16#9А, 16#ВС, 16#DE, 16#F0 для порядка little endian: 16#F0,16#DE, 16#BC, 16#9A, 16#78, 16#56, 16#34, 16#12

В качестве входных и выходных переменных функций преобразования порядка следования бай­ тов поддерживаются следующие типы данных:

-AN YJNT с размером больше или равным 16 бит.

-ANY_BIT с размером больше или равным 16 бит.

-ANYJREAL;

-WCHAR;

-TIME;

-массивы этих типов данных;

-структуры, содержащие компоненты этих типов данных.

Другие типы не преобразуются, но могут содержаться в структурах, подлежащих преобразованию. Функции преобразования порядка следования байтов показаны в таблице 37.

87

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]