Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование контроллеров для АСУ и мехатронных систем. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
(* ST эквивалент: *) wo10 := wi1 AND wi2;
wo2 := wi51 OR wi52;
wo6 := wi61 XOR wi62;
wo7 := NOT wi7;
Рис. 7.4. Пример использования логических операций с целочисленными переменными
переменными или константами. В CFC или LD имеются традиционные операции сравнения с соответсвенным обозначением внутри блока: меньше –
LT, меньше или равно – LE, больше – GT, больше или равно – GE, равно – EQ,
не равно – NE.
В CoDeSys присутствует автоматическое преобразование типов данных. Поэтому при использовании, например, в операции сложения переменных или констант разных типов компилятор не выдаст сообщение об ошибке, а осу­ществит предварительное преобразование операндов к старшему типу.
Например, переменные A, B имеют тип INT, а переменные С, D – тип
REAL. Есть два выражения:
D := A+C; В := A+C;
В первом выражении компилятор не выдаёт ошибки, а во втором – компилятор выдаст ошибку о невозможности автоматической конвертации
REAL в INT.
Неявное (автоматическое) преобразование из более крупного типа в меньший тип невозможно (например, из INT в BYTE, из DINT в WORD, из INT в REAL). Для преобразования из более крупного типа в меньший тип необходимо использовать специальный тип конверсии. Как правило, всегда возможно преобразование любого элементарного типа в любой другой элементарный тип. При использования операторов явного преобразования типов необходимо помнить два важных аспекта, связанных с потерей точности и возможным переполнением:
−
например, если значение числа REAL находится за границами диапа-
зона integer, вы получите неопределённый результат в зависимости от целевой системы;
71
−
при конверсии из большего типа данных в меньший может быть поте-
ряна информация.
Общая форма записи оператора преобразования типов имеет вид
<тип1>_TO_<тип2>
где <тип1>, <тип2> – элементарные типы, перечень которых перечислен в разделе 2.7.
В таблице 7.2 приведены результаты некоторых преобразований данных различных типов.
Преобразование
В булевское
…TO_BOOL
В целое аналоговое INT
7.2. Результаты преобразования данных
Тип данных
на входе
Аналоговое или таймерное
Строка TRUE, если сообщение ‘TRUE’;
Булевское 0 – для FALSE;
Вещественное Целая часть числа Таймерное Количество милисекунд Строка Десятичное число, представленное строкой на
TRUE, если значение на входе ненулевое; FALSE, если значение на входе нулевое
FALSE, если сообщение ‘FALSE’
1 – для TRUE
входе, например:
mres := STRING_TO_INT ('0198'); (* mres равно 198 *)
Результат преобразования
В вещественное аналоговое
…TO_REAL
В таймерное …_TO_TIME
В строку …TO_STRING
Булевское 0.0 – для FALSE;
1.0 – для TRUE
Целое То же значение в вещественном виде:
1 (целое) => 1.0 (вещественное)
Таймерное Количество милисекунд, представленное в
вещественном виде
Целое или вещественное
Строка Количество милисекунд, представленное строкой на
Булевское ‘TRUE’ или ‘FALSE’ Аналоговое Символьное десятичное представление
Количество милисекунд, например:
ares := INT_TO_TIME (1256); (* ares := t#1s256ms *) rres := REAL_TO_TIME(1256.3); (*rres := t#1s256ms *)
входе, например:
mres := STRING_TO_INT('198'); (* mres равно t#198ms *)
72

7.2. СТАНДАРТНЫЕ ФУНКЦИИ И ФУНКЦИОНАЛЬНЫЕ БЛОКИ

В CoDeSys присутствует библиотека standard.library, которая содержит все функции и функциональные блоки, предусмотренные стандартом МЭК
61131-3. Хотя система разработки неявно распознаёт операторы, стандартные
модули должны быть импортированы в проект в виде библиотеки. Библиотека
standard.library включает:
−
функции STRING – строковые функции;
−
бистабильные функциональные блоки;
−
функциональные блоки определения фронта;
−
функциональные блоки счётчиков;
−
таймерные функциональные блоки.
Стандартные функции для работы со строковыми переменными:
LEN Взять длину строки LEFT Извлечь левую часть строки RIGHT Извлечь правую часть строки MID Извлечь середину строки CONCAT Конкатенация (сцепление) двух строк INSERT Вставить строку DELETE Удалить подстроку REPLACE Заменить подстроку FIND Найти подстроку
Бистабильные функциональные блоки SR и RS.
Функциональный блок SR – триггер SR с приоритетом установки.
Функциональный блок RS – триггер RS с приоритетом сброса.
Переключатели с преобладанием включения SR имеет булевский вход
SET1, который устанавливает выходной сигнал блока Q1 в TRUE, и булевский
вход RESET, сбрасывающий выходной сигнал блока Q1 в FALSE. Следова­тельно, вход SET1 включает выход, вход RESET – выключает. При одновре­менном воздействии обоих входов побеждает SET1 (включение является доми­нантным).
Переключатели с преобладанием включения RS имеет булевский вход
SET, который устанавливает выходной сигнал блока Q1 в TRUE, и булевский
вход RESET1, сбрасывающий выходной сигнал блока Q1 в FALSE. В отличие от функционального блока SR в блоке RS при одновременном воздействии обоих входов побеждает RESET1 (доминантным является выключение).
73
(* ST эквивалент: Мы предпо­лагаем, что SR_1 – это экзем­пляр блока SR *)
SR1(set1:=auto_mode AND start_cmd), reset:=stop_cmd); command := SR_1.Q1;
(* ST Эквивалент: Мы предпо-
лагаем, что RS_1 – это экзем­пляр блока RS *)
RS_1(set:=start_cmd, reset1:= stop_cmd OR alarm); command := RS_1.Q1;
Рис. 7.5. Примеры использования функциональных блоков SR и RS
(* ST Эквивалент: Мы предпо­лагаем, что RTRIG1 – это эк­земпляр блока R_TRIG *)
RTRIG1(CLK:=cmd); nb_edge := nb_edge + BOOL_TO_INT(RTRIG1.Q);
Рис. 7.6. Пример использования функционального блока R_Trig
На рисунке 7.5 представлены примеры использования функциональных блоков SR и RS в диаграмме FBD и их эквиваленты на языке ST.
Детекторы импульсов предназначены для применения в случае, когда требуется реакция не на состояние дискретного сигнала, а на его изменение. Функциональный блок R_Trig генерирует единичный импульс по переднему фронту входного сигнала, а F_Trig – по заднему фронту.
На рисунке 7.6 представлен пример использования функционального блока R_Trig в диаграмме CFC для решения задачи подсчёта числа импульсов и его эквивалент на языке ST.
В CoDeSys сущеcтвует три вида счётчиков: инкрементный – CTU, декре­ментный – CTD и реверсивный – CTUD.
У инкрементного счётчика CTU по каждому фронту на входе CU значе­ние счётчика (выход CV) увеличивается на 1. Выход Q устанавливается в
TRUE, когда счётчик достигнет или превысит заданный переменной PV порог.
Логическая единица на входе сброса (RESET = TRUE) останавливает счёт и обнуляет счётчик (CV := 0).
У декрементного счётчика CTD по каждому фронту на входе CD счётчик
(выход CV) уменьшается на 1. Выход Q устанавливается в TRUE, когда счётчик
достигнет нуля. Счётчик CV загружается начальным значением, равным PV по входу LOAD = TRUE.
74
У реверсивного счётчика CTUD по значению входа RESET = TRUE счёт-
(* ST Эквивалент: Мы предполагаем, что
(* ST Эквивалент: Мы предполагаем, что
(* ST Эквивалент: Мы предполагаем, что
чик CV сбрасывается в 0. По значению входа LOAD = TRUE счётчик CV за­гружается значением, равным PV. По фронту на входе CU счётчик увеличива­ется на 1. По фронту на входе CD счётчик уменьшается на 1 (до 0).
Выход QU равен TRUE, если CV >= PV, иначе FALSE. Выход QD равен
TRUE, если CV = 0, иначе FALSE.
CTU_1 – это экземпляр блока CTU *) CTU_1(CU:=in1,RESET:=in2,PV:=10); Out1:= CTU_1.Q; res := CTU_1.CV;
CTD_1 – это экземпляр блока CTD *) CTD_1(CU:=in1,LOAD:=in2,PV:=10); Out1:= CTD_1.Q; res := CTD_1.CV;
CTUD_1 – это экземпляр блока CTUD*) CTUD_1(CU:= add_elt, CD:= sub_elt, re­set:= reset_cmd, load:= load_cmd, PV:= 100); full := CTUD_1.QU; empty := CTUD_1.QD; nb_elt := CTUD_1.CV;
Рис. 7.7. Примеры использования функциональных блоков CTU, CTD и CTUD
В CoDeSys представлены три вида таймерных функциональных блоков:
TP, TOF, TON.
Для генерации одиночного прямоугольного импульса используется функционаьный блок TP. У этого блока имеется два входа (булевский IN и таймерный PT) и два выхода (булевский Q и таймерный ET). Запуск таймера происходит по фронту импульса на входе IN. Вход РТ задаёт длительность формируемого импульса. После запуска таймер не реагирует на изменение зна­чения входа IN. Выход ЕТ отсчитывает прошедшее время. При достижении ЕТ значения РТ счётчик останавливается, и выход Q сбрасывается в 0.
Временная диаграмма работы таймера ТР показана на рис. 7.8.
Таймер с задержкой выключения TOF имеет два входа (булевский IN и таймерный PT) и два выхода (булевский Q и таймерный ET). По фронту входа
IN выход Q устанавливается в TRUE. Сброс счётчика ЕТ и начало отсчёта вре-
75
Рис. 7.8. Временная диаграмма работы
таймера ТР
Рис. 7.9. Временная диаграмма работы
таймера TOF
мени происходит по каждому спаду входа IN. Выход Q будет сброшен через за­данное РТ время после спада входного сигнала. Если во время отсчёта вход IN будет установлен в TRUE, отсчёт приостанавливается. Таким образом, выход Q включается по фронту, а выключается логическим нулём продолжительностью не менее РТ.
Временная диаграмма работы таймера TOF показана на рис. 7.9.
Таймер с задержкой включения TON также имеет два входа (булевский
IN и таймерный PT) и два выхода (булевский Q и таймерный ET). По фронту
входа IN выполняется обнуление счётчика и начинается новый отсчёт времени. Выход Q будет установлен в TRUE через заданное РТ время, если IN будет продолжать оставаться в состоянии TRUE. Спад входа IN останавливает отсчёт и сбрасывает выход Q в FALSE. Таким образом, выход Q включается логиче­ской единицей продолжительностью не менее РТ, а выключается по спаду вхо­да IN.
Временная диаграмма работы таймера TON показана на рис. 7.10.
Рис. 7.10. Временная диаграмма работы таймера TON
76
Контрольные вопросы
1. Приведите стандартные операторы IEC языков программирования.
2. Приведите стандартные математические функции, поддерживаемые
системой CoDeSys.
3. Приведите стандартные функции для работы со строковыми перемен-
ными, поддерживаемые системой CoDeSys.
4. Приведите стандартные функции для работы с данными и регистрами.
5. Какие стандартные булевские функциональные блоки CoDeSys вы
знаете? Поясните принцип их работы.
6. Какие стандартные функциональные блоки реализуют функции счёт-
чиков, в чём их отличие?
7. Поясните по временным диаграммам функционирование стандартных
функциональных блоков TP, TON, TOF.
77

ЗАКЛЮЧЕНИЕ

В учебном пособии изложены основные технические характеристики программируемых логических контроллеров компании ОВЕН. Программирова­ние новейших контроллеров ОВЕН ПЛК200/210, а также сенсорных панельных контроллеров серии СПК-1хх осуществляется в системе программирования
CoDeSys 3.5. Рассмотрены основы работы с CoDeSys 3.5, начиная от установки CoDeSys 3.5 на компьютер до загрузки готового приложения в контроллер и его
отладки.
Приведены стандарт на языки программирования промышленных про­граммируемых логических контроллеров IEC-61131-3 (МЭК-61131-3), примеры разработки прикладного программного обеспечения для контроллеров ОВЕН ПЛК200/210 в системе программирования CoDeSys 3.5.
Авторы надеются, что учебное пособие создаст запас знаний у студентов, который будет полезен в их дальнейшей профессиональной деятельности.
78

СПИСОК ЛИТЕРАТУРЫ

1. Энциклопедия АСУТП [Электронный ресурс]. – URL :
http://www.bookasutp.ru/
2. Петров, И. В. Программируемые контроллеры. Стандартные языки и
приемы прикладного проектирования / И. В. Петров. – М. : СОЛОН-Пресс,
2004. – 296 с.
3. Руководство пользователя по программированию ПЛК в CoDeSys 2.3
[Электронный ресурс]. – URL : https://owen.ru/uploads/134/codesys_v23_ru.pdf
4. Технические средства автоматизации: программирование контролле-
ров в среде ISaGRAF [Электронное издание] : лабораторные работы / сост. : И. А. Елизаров, В. Н. Назаров, М. Н. Солуданов, А. А. Третьяков. – Тамбов : ТГТУ, 2008.
79
ОГЛАВЛЕНИЕ
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Глава 1. Программируемые логические контроллеры компании ОВЕН . . . . 5
Глава 2. Введение в среду программирования CoDeSys v3.5 . . . . . . . . . . . . . .
2.1. Установка CoDeSys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2. Создание нового проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3. Редактирование программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4. Отладка программы в режиме эмуляции . . . . . . . . . . . . . . . . . . . . 17
2.5. Настройка связи контроллера с компьютером . . . . . . . . . . . . . . . 20
2.6. Компоненты проекта CoDeSys . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.7. Типы данных и объявление переменных в CoDeSys . . . . . . . . . . 31
Глава 3. Разработка программ в CoDeSys на языке CFC . . . . . . . . . . . . . . . . . 36
Глава 4. Разработка программ в CoDeSys в редакторе FBD/LD/IL . . . . . . . . .
Глава 5. Разработка программ в CoDeSys на языке ST . . . . . . . . . . . . . . . . . . .
Глава 6. Язык последовательных функциональных схем SFC . . . . . . . . . . . . .
Глава 7. Стандартные операторы, функции и функциональные блоки . . . . . .
7.1. Операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.2. Стандартные функции и функциональные блоки . . . . . . . . . . . . 73
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
44
51
59
69
79
80
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]