книги / Программирование задач автоматического управления объектами на различных алгоритмических языках
..pdfПосле ввода в структуру PLC_PRG программы модуля Add Action и присвоения ему имени act(ST) подпрограмма этого модуля для поставленной задачи должна состоять из следующих команд:
%QB12.3:=255;
IF PLC_PRG.CV:<=5 AND %IX0.1 THEN TP:=%QD12.3.0.0;(темп) PS:=%QW12.4.0.0; (си-8) IF TP-35<0.0001 OR PS<0 THEN %QX1.3:=TRUE; %QB12.2.0.0:=0;(шим)
%QX1.2:=FALSE; A:= TRUE; END_IF;
IF TP-38 > 0.0001 THEN %QX1.3:=FALSE; A:= FALSE; IF PS<533 AND %QB12.2.0.0=0 THEN %QB12.1.0.0:=63;(датч);
ELSE %QB12.1.0.0:=0; %QB12.2.0.0:=63; END_IF; END_IF;
IF PS<400 AND %QB12.2.0.0=63 THEN %QX1.2:=TRUE; END_IF;
END_IF;
Логика этой программы заключается в следующем. Командой %QB12.3:=255 активируются все каналы в линии управления устройствами ОВЕН. После этого условной командой проверяется числовое содержание программного счетчика, которое не должно превышать числа 5. Поскольку первоначально этот параметр равен нулю, по условию PLC_PRG.CV:<=5 AND %IX0.1 проверяется активность канала с адресом %IX0.1 (состояние кнопки К2). Исходя из этого после нажатия на кнопку К2 программа последовательно выполняет две команды. При этом первой командой TP:=%QD12.3.0.0 в переменную ТР заносятся текущие показания температуры печи, которые регистрирует измеритель РТМ-201, а командой PS:=%QW12.4.0.0 в переменную PS заносятсячисловые показания счетчика импульсовСИ8.
Следующая условная команда анализирует величину параметров ТР и PS. Если параметр ТР будет меньше числа 35 или параметр PS будет меньше числа 0, то по команде %QX1.3:=TRUE активизируется третий канал порта дискретного вывода контроллера ОВЕН,
211
к которому подключен нагреватель эмулятора печи. Одновременно командой %QB12.2.0.0:=0 выключается первый канал порта дискретного вывода модуля МДВВ, работающего в режиме ШИМ, а по команде %QX1.2:=FALSE отключается привод вентилятора печи, подключенного ко второму каналу порта дискретного вывода контроллера ОВЕН. Кроме того, командой A:= TRUE параметру A присваивается значение «истинно». Значение этого параметра в форме импульса подается на вход программного счетчика, увеличивая на единицу его числовое содержание.
После включения нагревателя температура печи будет повышаться. Как только параметр ТР превысит значение числа 38, нагреватель печи отключится по команде %QX1.3:=FALSE, а параметр A командой A:= FALSE примет значение «ложно». После этого программа перейдет к анализу следующего условия, по которому если параметр PS будет меньше числа 533 (это значение числа 215 в дво- ично-десятичной системе счисления, считанное со счетчика СИ8), то активизируется нулевой канал порта дискретного вывода модуля МДВВ, к которому подключен привод датчика импульсов прямого счета. При этом значения параметра PS начнут увеличиваться до величины 533. Как только значение PS станет больше этого числа, привод датчика по направлению ELSE и по команде %QB12.1.0.0:=0 отключится и одновременно по команде %QB12.2.0.0:=63 активизируется первый канал порта дискретного вывода модуля МДВВ, работающий в режиме ШИМ. Импульсы с этого порта подаются на вход обратного счета счетчика импульсов СИ8. В результате этого показания этого счетчика будут уменьшаться. Как только это значение достигнет величины числа 400 (это значение числа 190 в двоич- но-десятичной системе счисления), по команде %QX1.2:=TRUE в работу вступит вентилятор печи. При этом процесс обратного счета и работа вентилятора будут происходить одновременно. Температура печи будет первоначально повышаться до некоторого уровня, а затем за счет обдува вентилятором постепенно снизится до величины числа, равного 35.
Как только это произойдет, снова включится нагреватель печи и параметр А снова импульсно увеличит на единицу содержание
212
программного счетчика, при этом вентилятор и счетчик СИ8 возобновят работу в описанной последовательности. Этот процесс закончится только в том случае, когда числовое содержание программного счетчика достигнет величины числа 5.
Для визуального оформления результата этой задачи необходимо его отразить в файле модуля Vizo. Для этого необходимо определить объекты визуализации и перевести в формат глобального типа входящие в них переменные. Вид окна модуля Vizo для визуализации результата поставленной задачи показан на рис. 6.21.
Рис. 6.21. Вид окна модуля Vizo для визуализации результата задачи
Согласно поставленной задаче, в ней должны быть следующие объекты визуализации:
–пусковая кнопка;
–работа нагревателя печи;
–работа вентилятора;
–показания прибора РТМ-201 по замеру уровня температуры;
–числовое состояние программного счетчика;
–числовое состояние счетчика СИ8;
–работа каналов по передаче сигналов прямого и обратного
счета.
Представленные на рис. 6.21 объекты визуализации устанавливаются вышеописанным способом, а их параметры должны соответствовать их назначению.
213
При соответствующей настройке указанных объектных модулей в файле Vizo они должны работать следующим образом. При установке курсора на контуре кнопки К2 и последующем ее нажатии она должна не только поменять свой цвет, но и запустить в работу программу задачи. Аналогично должны менять свой цвет в соответствии с режимом работы элементы печь и вентилятор. Стрелка элемента программный счетчик при каждом переходе параметра А должна перемещаться с нулевого положения в единичное состояние. Аналогично стрелка элемента счетчика СИ8 должна перемещаться с нулевого положения по часовой стрелке при каждом импульсе, переданном от датчика РТМ18-08N, и менять направление перемещения при подаче импульсного сигнала через соответствующий канал модуля МДВВ.
Сконфигурируйте систему для поставленной задачи. Составьте описанную программу с учетом модуля визуализации. Перегрузите программу в память ПЛК и проверьте ее работу.
214
СПИСОК ЛИТЕРАТУРЫ
1.Руководство пользователя по программированию ПЛК в сре-
де CoDeSys [Электронный ресурс]. – URL: http://Owen.ru/product/ Codesys_v2/documentation.
2.Логические модули Simens [Электронный ресурс]. – URL: http://avenue.ru/ new.simens.com/ru/produkty.
3.Руководство пользователя модулей LOGO Simens [Электрон-
ный ресурс]. – URL: http:// google.com/search?g=Руководство поль-
зователя+лого+сименс&g.
4.Руководство по программированию в среде LOGO [Элек-
тронный ресурс]. – URL: http:// promspecrele/ru/documents/Logo! SoftComfort_v6/0_rus.pdf.
5.Электроприводы NEPTRONIC [Электронный ресурс]. – URL: http:// rst-s,ru/catflog/clapans/Elektroprrivody.
6.Регулирующая аппаратура [Электронный ресурс]. – URL: http://armature-avenue.ru/ru/Compontnt.
215
ПРИЛОЖЕНИЕ
Краткий справочник по операторам и компонентам библиотек
Оператор языка ST |
Оператор языка IL |
Описание |
|
' |
|
Разграничение строк (т.е. 'string1'). |
|
.. [ ] |
|
Задание индексов массива (т.е. |
|
: |
|
ARRAY[0..3] OF INT). |
|
; |
|
Разделитель операнда и типа при объ- |
|
|
явлении (т.е. var1 :INT;). |
||
^ |
|
Конец инструкции (т.е. a:=var1;). |
|
LD var1 |
Обращение через указатель (т.е. |
||
:= |
pointer1^). |
||
ST var1 |
Загрузить значение var1 в аккумулятор. |
||
|
S boolvar |
Записать в var1 значение аккумулятора. |
|
|
R boolvar |
Установка логического операнда boolvar в |
|
|
TRUE, если значение аккумулятора TRUE. |
||
|
|
Сброслогическогооперандаboolvar в |
|
|
|
FALSE, еслизначениеаккумулятораTRUE. |
|
<Program name> |
JMP label |
Переход на метку label. |
|
Вызов программы prog1. |
|||
<Instance name> |
CAL prog1 |
Вызов экземпляра функционального |
|
<Fctname>(vx, vy,) |
CAL inst1 |
блока inst1. |
|
|
<Fctname> vx, vy |
Вызов функции fctname передача пара- |
|
( |
( |
метров vx, vy. |
|
Результат вычислений в скобках ис- |
|||
) |
) |
пользуется как операнд. |
|
Заканчивает вычисление в скобках. |
|||
AND |
AND |
Битовое AND. |
|
OR |
OR |
Битовое OR. |
|
XOR |
XOR |
Битовое исключающее. |
|
NOT |
NOT |
Битовое NOT. |
|
+ |
ADD |
Сложение. |
|
- |
SUB |
Вычитание. |
|
* |
MUL |
Умножение. |
|
/ |
DIV |
Деление. |
|
> |
GT |
Больше, чем. |
|
>= |
GE |
Больше или. |
|
= |
EQ |
||
Равно. |
|||
<> |
NE |
||
Не равно. |
|||
<= |
LE |
||
Меньше или равно. |
|||
< |
LT |
||
Меньше, чем. |
|||
MOD(in) |
MOD |
||
Остаток целочисленного деления. |
|||
INDEXOF(in) |
INDEXOF |
||
Внутренний индекс POU in; [INT]. |
|||
SIZEOF(in) |
SIZEOF |
||
Число байтов, занимаемых in. |
|||
SHL(K,in) |
SHL |
||
Поразрядный сдвиг влево на K бит. |
|||
SHL(K,in) |
SHL |
||
SHR(K,in) |
SHR |
Поразрядный сдвиг влево на K. |
|
ROL(K,in) |
ROL |
Поразрядный сдвиг вправо на K бит. |
|
ROR(K,in) |
ROR |
Циклический сдвиг влево на K бит. |
|
SEL(G,in0,in1) |
SEL |
Циклический сдвиг вправо на K бит. |
|
|
|
|
216
Оператор языка ST |
Оператор языка IL |
Описание |
MAX(in0,in1) |
MAX |
Мультиплексор на 2 входа in0 (при G |
MIN(in0,in1) |
MIN |
FALSE) и in1 (при G TRUE). |
LIMIT(MIN,in,Max) |
LIMIT |
Возвращает наибольшее из 2 значений |
MUX(K,in0,...in_n) |
MUX |
in0 и in1. |
Возвращает наименьшее из 2 значений |
||
ADR(in) |
ADR |
in0 и in1. |
Ограничивает значение in в пределах от |
||
|
|
MIN до MAX. |
|
|
Мультиплексор выбирает K-тое значе- |
|
|
ние из группы (от in0 до In_n). |
ADRINST() |
ADRINST |
Адрес операнда в [DWORD]. |
Адрес экземпляра функционального бло- |
||
BITADR(in) |
BITADR |
ка, из которого вызывается ADRINST. |
Битовое смещение операнда в [DWORD]. |
||
BOOL_TO_<type>(in) |
BOOL_TO_<type> |
Преобразование типа из логического. |
<type>_TO_BOOL(in) |
<type>_TO_BOOL |
Преобразование типа в логический. |
INT_TO_<type>(in) |
INT_TO_<type> |
Преобразование значения операнда |
REAL_TO_<type>(in) |
REAL_TO_<type> |
типа INT в другой базовый тип. |
Преобразование значения операнда |
||
LREAL_TO_<type>(in) |
LREAL_TO_<type> |
типа REAL в другой базовый тип. |
Преобразование значения операнда типа |
||
TIME_TO_<type>(in) |
TIME_TO_<type |
LREAL в другой базовый тип. |
> Преобразование значения операнда |
||
TOD_TO_<type>(in) |
TOD_TO__<type> |
типа TIME в другой базовый тип. |
Преобразование значения операнда |
||
DATE_TO_<type>(in) |
DATE_TO_<type> |
типа TOD в другой базовый тип. |
Преобразование значения операнда |
||
DT_TO_<type>(in) |
DT_TO_<type> |
типа DATE в другой базовый тип. |
Преобразование значения операнда |
||
STRING_TO_<type>(in |
STRING_TO_<type> |
типа DT в другой базовый тип. |
Преобразование текста строки операнда в |
||
) |
|
другой базовый тип. Строка должна со- |
|
TRUNC |
держать соответствующий текст. |
TRUNC(in) |
Преобразование из REAL в INT. |
|
ABS |
Абсолютное значение in. |
|
ABS(in) |
SQRT |
Квадратный корень из in. |
SQRT(in) |
LN |
Натуральный логарифм из in. |
LN(in) |
LOG |
Десятичный логарифм из in. |
LOG(in) |
EXP |
E в степени in. |
EXP(in) |
SIN |
Синус in. |
SIN(in) |
COS |
Косинус in. |
COS(in) |
TAN |
Тангенс in. |
TAN(in) |
ASIN |
Арксинус in. |
ASIN(in) |
ACOS |
Арккосинус in. |
ACOS(in) |
ATAN |
Арктангенс in. |
ATAN(in) |
EXPT expt |
Возведение в степень expt |
EXPT(in,expt) |
|
|
217
Компоненты стандартных функций Standard.lib
Оператор языка ST |
Оператор языка IL |
Описание |
|
LEN(in) |
LEN |
Длина строки in. |
|
LEFT(str,size) |
LEFT |
Левая значимая часть строки str из size |
|
RIGHT(str,size) |
RIGHT |
символов. |
|
Правая значимая часть строки str из size |
|||
MID(str,size,pos) |
MID |
символов. |
|
Часть строки str с позиции pos из size сим- |
|||
CONCAT('str1','str2') |
CONCAT 'str2' |
волов. |
|
I |
INSERT |
'str2' |
Конкатенация (склеивание) 2 строк. |
NSERT('str1','str2',pos) |
Вставитьстрокуstr1 вstr2 спозицииpos. |
||
DELETE('str1',len,pos) |
DELETE |
len,pos |
Удалить часть строки, len символов, |
с позиции pos 'str2',len,pos. |
|||
REPLACE('str1','st |
REPLACE |
Заменить часть строки str1 с позиции pos |
|
r2',len,pos) |
|
|
на len символов из str2. |
FIND('str1','str2') |
FIND 'str2' |
Поиск подстроки str2 в str1. |
|
Переключатель с доминантой включения. |
|||
SR |
SR |
Переключатель с доминантой выключения. |
|
RS |
RS |
Семафор (interruptable). |
|
SEMA |
SEMA |
Детектор переднего фронта импульса. |
|
R_TRIG |
R_TRIG |
Детектор заднего фронта импульса. |
|
F_TRIG |
F_TRIG |
Инкрементный счетчик. |
|
CTU |
CTU |
Декрементный счетчик. |
|
CTD |
CTD |
Реверсивный счетчик. |
|
CTUD |
CTUD |
Триггер. |
|
TP |
TP |
Таймер включения. |
|
TON |
TON |
Таймер выключения. |
|
TOF |
TOF |
Часы |
|
RTC |
RTC |
|
Компоненты специальных функций Util.lib
Компонент |
Описание |
BCD_TO_INT |
Преобразование значения операнда BCD в INT. |
INT_TO_BCD |
Преобразование байта INT в BCD. |
EXTRACT(in,n) |
Определяет значение n-го бита DWORD, результат типа |
PACK |
BOOL. |
PUTBIT |
Упаковка значений 8 бит в байт. |
UNPACK |
Присвоить значение определенному биту в DWORD. |
DERIVATIVE |
Распаковка байта в 8 логических переменных. |
INTEGRAL |
Производная. |
LIN_TRAFO |
Интеграл. |
STATISTICS_INT |
Преобразование REAL-значений. |
STATISTICS_REAL |
Макс., мин., среднее значения в INT-формате. |
VARIANCE |
Макс., мин., среднее значения в REAL-формате. |
PD |
Дисперсия. |
|
|
218
Компонент |
Описание |
PID |
ПД-регулятор. |
BLINK |
ПИД-регулятор. |
FREQ_MEASURE |
Генератор импульсов. |
GEN |
Частотомер. |
CHARCURVE |
Функциональный генератор. |
RAMP_INT |
Интерполятор. |
RAMP_REAL |
Ограничитель скорости изменения сигнала (INT). |
HYSTERESIS |
Ограничитель скорости изменения сигнала (REAL). |
LIMITALARM |
Гистерезис. |
|
Компаратор |
219
ОГЛАВЛЕНИЕ |
|
ВВЕДЕНИЕ............................................................................................. |
3 |
1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ |
|
АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ ОБЪЕКТАМИ................... |
5 |
1.1. Список инструкций (язык IL)..................................................... |
5 |
1.2. Структурированный текст (язык ST)......................................... |
6 |
1.3. Язык релейных диаграмм (язык LD) ......................................... |
7 |
1.4. Язык функциональных блоковых идиаграмм (язык FBD) ...... |
8 |
2. ПРОГРАММИРОВАНИЕ РАБОТЫ ЛОКАЛЬНЫХ |
|
МИКРОКОНТРОЛЛЕРОВ СЕРИИ LOGO |
|
ДЛЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ |
|
ОБЪЕКТАМИ ПО ЗАДАННОМУ АЛГОРИТМУ............................ |
13 |
2.1. Цель работы............................................................................... |
13 |
2.2. Описание стенда........................................................................ |
13 |
2.3. Порядок включения в работу микроконтроллера LOGO ...... |
16 |
2.3.1. Описание программного пакета |
|
LOGO Soft-Comfort V6.0............................................................. |
17 |
2.3.2. Порядок составления программы управления |
|
задвижкой с помощью микроконтроллера LOGO................... |
18 |
3. ПРОГРАММИРОВАНИЕ РАБОТЫ МИКРОКОНТРОЛЛЕРОВ |
|
СЕРИИ ZELIO-TWIDO ФИРМЫ SCHNEIDER ELECTRIC |
|
ДЛЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ ОБЪЕКТАМИ |
|
ПО ЗАДАННОМУ АЛГОРИТМУ...................................................... |
29 |
3.1. Цель работы............................................................................... |
29 |
3.2. Описание стенда........................................................................ |
29 |
3.3. Порядок включения в работу микроконтроллера |
|
Zelio-Twido........................................................................................ |
33 |
3.4. Языки программирования микроконтроллера |
|
Zelio-Twido........................................................................................ |
35 |
3.4.1. Язык Ladder ........................................................................ |
35 |
3.4.2. Типы контактов.................................................................. |
36 |
3.4.3. Типы катушек..................................................................... |
37 |
3.4.4. Принципы программирования в пакете TwidoSoft......... |
37 |
3.4.5. Программирование действия всех видов |
|
битовых сигналов в пакете TwidoSoft........................................ |
44 |
220