Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование технологических контроллеров в среде Unity. Учебное пособие.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
31
RU
STO
( )
OR
CTU
( )
( )
C3
C2
C1
OUT
L1
NZ1
NZ2
NZ3
( )
( )
S
R
ТON
R
GEN
S
R
Рис. 2.17. Функциональная схема бункера-накопителя
AND
Упражнение. Разработка программы управления работой бункера­накопителя.
1. В соответствии с функциональной схемой на рис. 2.17 создайте
список переменных с распределением по физическим адресам кон­троллера.
2. Разработайте и отладьте программу управления работой бунке-
ра-накопителя, сохранив ее под именем bunker.
3. Проанализируйте работу программы и определите, каким недос-
татком обладает функциональная схема на рис. 2.17.

2.6. Математические операции и команды работы с массивами

Группа основных арифметических команд. Основной набор
арифметических команд содержит следующие команды: ADD – сло­жение двух или нескольких чисел, SUB – вычитание, MUL – умноже­ние, DIV – деление (рис. 2.18, а–г соответственно). Для каждого из ти­пов переменных существует своя арифметическая команда.
Команда ADD. Складываются содержимые чисел, указанных на
верхнем и среднем входах функционального блока. Результат переда­ется на выход. Слагаемые должны быть типа, соответствующего ко­манде сложения.
Команда SUB. Из числа, поступающего на верхний вход (Опе-
ранд1), вычитается число, поступающее на второй вход (Операнд2),
32
результат передается на выход. Операнды должны быть соответст­вующих типов.
Команда MUL. Функция перемножает входные значение и при-
сваивает результат выходу.
Команда DIV. Делит Операнд1 на Операнд2. При делении типов данных (INT, DINT, UINT, UDINT) десятичные
части в результате опускаются, например: 7 ∕ 3 = 2.
а б в г
Рис. 2.18. Функциональные блоки математических операций
Группа команд Сравнения (отношения). Функции команд срав­нения проверяют значения входов на заданное отношение. Выход бло­ка устанавливается в «1», если заданное отношение истинно. При этом существующие блоки проверяют следующие отношения:
• команда EQ – равно;
• команда GE – больше либо равно;
• команда GT – больше;
• команда LE – меньше либо равно;
• команда LT – меньше;
• команда NE – не равно.
Упражнение. Изучение работы арифметических команд.
Перевод значений температуры по шкале Фаренгейта в значение температуры по шкале Цельсия осуществляется по формуле
C = (F – 32) 5/9,
где F – температура по Фаренгейту, С – температура в градусах Цель­сия.
Составьте программу, осуществляющую перевод значений тем­пературы по шкале Фаренгейта в значение температуры по шкале Цельсия.
33
Упражнение. Модернизация программы управления работой бун-
( )
( )
AND ( )
( )
( )
С3
С2
С1
RUN
STOP
L1
OUT
NZ1
NZ2
NZ3
GE
#0012
ADD
CTU
#0012
CTU
#0012
CTU
#0012
S
R
Регистр 1
Регистр 2
Регистр 3
...
Регистр N
кера-накопителя.
1. Разработанную вами программу для бункера-накопителя (см. рис. 2.16) необходимо модернизировать для устранения имеющихся на функциональной схеме (см. рис. 2.17) недостатков. При работе ис­пользуйте функциональную схему на рис. 2.19.
2. Функция GE используется для реализации сравнения текущего количества пришедших импульсов с предельным значением (констан­та #0012).
S
R
T0.1
R
GEN
Рис. 2.19. Модернизированная функциональная схема бункера-накопителя
Примечания. При реализации широкого спек-
тра задач управления требуется манипулировать большими массивами данных. В контроллерах для хранения данных используются группы реги­стров. В программных оболочках для программи­рования контроллеров имеются библиотеки, по­зволяющие работать с массивами данных (биб­лиотеки Array). При этом массив данных носит название таблицы.
Таблица – непрерывная последовательность ре-
гистров (рис. 2.20), чтение-запись которых осущест-
Рис. 2.20. Таблица
вляется последовательно. Если таблица обрабаты­вается не полностью, в блоках может присутствовать указатель, в кото-
34
ром содержится значение, указывающее на очередной обрабатываемый регистр таблицы.
Функциональные блоки библиотеки Array позволяют выполнять
следующие операции с таблицами:
1) операции пересылки;
2) арифметические операции с таблицами;
3) логические операции с таблицами;
4) операции сравнения;
5) операции с поиском заданных значений и сортировки.
Для организации пересылок с таблицами в основном наборе биб-
лиотек имеются следующие блоки, показанные на рис. 2.21.
Рис. 2.21. Блоки для организации пересылок
Блок MOVE копирует содержимое регистров-источников в регист-
ры таблицы приема. При этом возможны следующие функции.
1. Одним из действий функции MOVE_***_*** является присваи-
вание одного значения всем элементам таблицы (рис. 2.22, а).
Доступны следующие функции:
• MOVE_BOOL_AREBOOL (присваивание значения BOOL всем элементам таблицы EBOOL);
• MOVE_WORD_ARWORD (присваивание значения WORD всем элементам таблицы WORD);
• MOVE_DWORD_ARDWORD (присваивание значения DWORD всем элементам таблицы DWORD);
• MOVE_INT_ARINT (присваивание значения INT всем элемен- там таблицы INT);
• MOVE_REAL_ARREAL (присваивание значения REAL всем элементам таблицы REAL).
2. Другим действием функции MOVE_***_*** является преобра­зование таблицы в значение или значения в таблицу.
Доступны следующие функции:
• MOVE_AREBOOL_INT (преобразование таблицы EBOOL в число INT);
35
• MOVE_AREBOOL_DINT (преобразование таблицы EBOOL в
Регистр 1
Регистр 2
Регистр 3
...
Источник
Регистр N
Таблица
Регистр 1
Регистр 2
Регистр 3
...
Регистр N
Регистр 1
Регистр 2
Регистр 3
...
Регистр N
Таблица-источник
Таблица-приемник
число DINT);
• MOVE_INT_AREBOOL (преобразование числа INT в таблицу
EBOOL);
• MOVE_DINT_AREBOOL (преобразование числа DINT в табли- цу EBOOL).
Команда COPY_***_*** (рис. 2.22, б) копирует набор последова-
тельных элементов из одной таблицы в другую. Таблицы могут иметь различные или одинаковые типы, целевая область фиксируется пара­метрами функции.
а б
Рис. 2.22. Функции работы с таблицами
Упражнение. Работа с массивами.
1. Разработайте самостоятельно программу, реализующую опера- ции с массивами (рис. 2.22). Проверьте действие программы.
2. Самостоятельно придумайте несколько способов обнуления таб­лицы.
Значительное число функциональных блоков позволяют рабо-
тать только с данными одного типа. Для расширения возможностей программирования на языке FBD – диаграмм следует воспользоваться библиотекой преобразования типов (Type to type).
Кроме того, часто библиотекой преобразования типов пользуются
для преобразования отдельных битов в слова и наоборот.
Упражнение. Программирование индикации младшего секундного
разряда часов с помощью поля отображения состояния выходов кон­троллера (рис. 2.23).
36
12:45:37
Outputs
ПЛК
Рис. 2.23. Программирование инди­кации младшего секундного разряда часов
Постановка задачи. Контроллер на передней панели имеет поле
отображения состояния своих дискретных выходов. Используя это по­ле как 16-точечный индикатор, организуйте индикацию младшего се­кундного разряда часов.
1. Разработайте программу, которая должна содержать генератор с периодом импульсов в 1 секунду и индицировать текущее состояние младшего секундного разряда в соответствии со значением.
2. При создании программы используйте команды манипулирова­ния данными или команды преобразования типов.
Обычно версии программных пакетов позволяют разделять логи-
ческую программу пользователя на несколько секций. Разбиение на секции целиком зависит от желания и стиля работы программиста и зачастую соответствует различным этапам реализации технологиче­ского процесса.
Последовательность обработки отдельных секций – естественная, в
последовательности, соответствующей последовательности создания секций. Однако большинство пакетов программирования позволяет установить условия выполнения такой секции. Для изменения естест­венного порядка выполнения секций обычно используется логическая переменная CONDITION, которая разрешает/запрещает выполнение секции.
37
Упражнение. Программирование генератора с переключением
G 1
1 Hz
G 2
2 Hz
( ) OUT1
IN1
ON
OFF
частоты прямоугольных импульсов.
Постановка задачи. Функциональная схема двухчастотного гене-
ратора (рис. 2.24) включает генераторы G1 и G2, работающие с посто­янными частотами 1 и 2 Гц соответственно. Частота импульсов на вы­ходе OUT1 зависит от контакта IN1. Переключение частоты необ­ходимо организовать с использованием логической переменной CONDITION, разрешающей выполнение одной секции и запрещающей выполнение другой.
При разработке программы учитывайте, что обмоткам реле даже
в разных секциях не может ставиться в соответствие одна и та же ссылка на выходную переменную. Для объединения выходов генера­торов следует воспользоваться функцией «исключающее или».
Рис. 2.24. Функциональная схема двухчастотного генератора
38
нием
ние

3. ТИПЫ ПЕРЕМЕННЫХ

3.1. Элементарные типы данных

Стандарт IEC 1131-3 предусматривает элементарные типы данных
[1, 8, 9], список которых приведен в табл. 3.1.
Таб лица 3.1
Тип
данных
BOOL 1 Логический 0 или 1 EBOOL 3 Логический c определе
BYTE 8 8-битовая последовательность – WORD 16 16-битовая последовательность – INT 16 Целое со знаком от -32768 до 32767 DINT 32 Длинное целое со знаком от -2147483648
UINT 16 Целое без знака от 0 до 65535 UDINT 32 Длинное целое без знака от 0 до 4294967295 REAL 32 Вещественное число от -8,43Е-37 до 3,36Е38 TIME 32 Время от 0 до 4294967295 мс STRING 16–256 Последовательность от 16
Количе-
ство бит
Описание Диапазон значений
форсирования и фронтов
до 256 бит
0 или 1, управле фронтами
до 214783647
–
Типы данных используются во всех видах программного обеспече­ния, работающего с ПЛК. Одни и те же аппаратные регистры ПЛК мо­гут интерпретироваться как разные типы данных в зависимости от за­дач пользователя.
Дадим некоторые комментарии к типам переменных.
При работе с аппаратной частью контроллеров могут применяться специальные типы данных ANL_IN и ANL_OUT, которые использу­ются с аналоговыми входами и выходами.
Применение логического типа переменных BOOL и EBOOL в ПЛК определяется в соответствии с табл. 3.2.
39
Таблица 3.2
Переменная Тип
Внутренний бит Системный бит Бит, извлеченный из слова
% I входы
Бит ошибки модуля Бит ошибки канала Входной бит
% Q выходы
Выходной бит EBOOL
EBOOL EBOOL BOOL
BOOL BOOL EBOOL
Заметим, что типы данных BYTE, WORD и STRING применяются только как последовательность битов. Арифметические операции с ними выполнять нельзя. К ним применимы поразрядные логические операции, операции поразрядного сложения, умножения и сдвига.
Целые типы переменных могут быть представлены по различным основаниям. По умолчанию целая переменная представляется по осно­ванию 10. Значение по основанию 2 является беззнаковым и имеет префикс 2#. Восьмеричное и шестнадцатеричное представление пере­менных имеют соответственно префиксы 8# и 16#. Из всех представ­лений знаковым может быть только десятичное представление, при этом тип переменной должен быть знаковым. В этом случае значению переменной предшествует знак «+» (необязательно) или «–».
Переменная Т# или TIME# (время) представляется двойным беззнаковым целым типом (UDINT). Он выражает продолжитель­ность в миллисекундах. При этом внутри переменной указываются представления времени: дни (D), часы (Н), минуты (М), секунды (S), миллисекунды (MS). Максимальная продолжительность пере­менной типа TIME составляет примерно 49 дней. Возможные спо­собы ввода максимального значения переменной типа TIME приве­дены в табл. 3.3.
40
Десятичное значение
2 4 5 0 3 1
Двоичное представление
0010
0100
0101
0000
0011
0001
0110
Таблица 3.3
Представление Комментарий
T#4294967295MS Значение в миллисекундах T#4294967S_295MS Значение в секундах и миллисекундах T#71582M_47S_295MS Значение в минутах / секундах / миллисе-
кундах
T#1193H_2M_47S_295MS Значение в часах / минутах / секундах / мил-
лисекундах
T#49D_17H_2M_47S_295MS Значение в днях / часах / минутах / секундах /
миллисекундах

3.2. Представление элементарных типов данных

Элементарные типы данных могут быть кодированы в двоично­десятичном формате (BCD – Binary Coded Decimal). Двоично-деся-
тичный формат служит для представления десятичных чисел от 0 до 9 с использованием группы из 4 бит. В этом формате 4 бита применя­ются для кодирования десятичных цифр. При этом комбинации битов, начиная с 1010, не используются. Пример кодирования в 16-битовом формате приведен в табл. 3.4, а в 32-битовом – в табл. 3.5.
Десятичное значение
2730 Двоичное представление 0010 0111 0011 0000
2450316
В двоично-десятичном формате хранятся типы данных, включаю­щие календарные и временные метки. Это типы «Дата» (D), «Время дня» (TOD), «Дата и время» (DT).
Таб лица 3.4
2
7
3
Таб лица 3.5
0
6
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]