Автоматизация измерений, контроля и испытаний. Лабораторный практикум. Учебное пособие
.pdf
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ
ФГБОУ ВО
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ»
С.В. ЕРШОВ, Н.Л. КЛЕЙМЕНОВА, Л.Н. НАЗИНА
АВТОМАТИЗАЦИЯ ИЗМЕРЕНИЙ, КОНТРОЛЯ И ИСПЫТАНИЙ
Утверждено редакционно-издательским советом университета
в качестве учебного пособия
ВОРОНЕЖ
2024
УДК 389(076) 531.7.002.5(075)
ББК Ж10я7
Е80
Научный редактор профессор Н. С. РОДИОНОВА
Р е ц е н з е н т ы :
зав. кафедрой метрологического обеспечения производства Воронежского филиала АСМС доцент С. А. СОЛЯНИК,
директор А. В. ЧИЧВАРИН (ООО НПО «БИНАМ»)
Печатается по решению редакционно-издательского совета
Воронежского государственного университета инженерных технологий
Ершов, С.В.
Е80 Автоматизация измерений, контроля и испытаний. Лабораторный практикум : учеб. пособие / С.В. Ершов, Н.Л. Клейменова, Л.И. Назина; Воронежский государственный университет инженерных технологий– Воронеж : ВГУИТ, 2024. -51 с. – Текст: непосредственный.
ISBN 978 -5-00032-690-9
Учебное пособие разработано в соответствии с требованиями ФГОС ВО подготовки выпускников по направлениям27.03.01 – «Стандартизация и метрология», 27.03.02 – «Управление качеством». Оно предназначено для закрепления теоретических знаний дисциплин цикла Б2. В пособии рассмотрены следующие темы: основы создания проектов, типы данных, конструирование входов и выходов
Е |
2402000000-09 |
Без объявл. |
УДК 389(076) 531.7.002.5(075) |
|
ББК Ж10я7 |
||||
|
||||
|
ОК2(03)-2024 |
|
||
ã |
Ершов С.В., Клейменова Н.Л., |
|||
ISBN 978-5-00032-690-9 |
Назина Л.И., 2024 |
|||
ã |
ФГБОУ ВО «Воронеж. гос. ун-т |
|||
|
|
|
инж. технол.», 2024 |
|
Оригинал-макет данного издания является собственностью Воронежского государственного университета инженерных технологий, его репродуцирование (воспроизведение) любым способом без согласия университета запрещается.
2
Лабораторная работа № 1.
ОСНОВЫ СОЗДАНИЯ ПРОЕКТОВ В СРЕДЕ ПРОГРАММИРОВАНИЯ CoDeSys
Цель работы: овладение приемами и навыками создания проектов в среде программирования CoDeSys, а именно: создание проекта, разработка программы управления, методика отладки управляющей программы.
|
|
Теоретические сведения |
|
|
|
|
CoDeSys |
- |
это |
современный |
инструмент |
для |
|
программирования |
контроллеров (CoDeSys образуется |
от слов |
|
|||
Controllers Development System). CoDeSys |
предоставляет |
|
||||
программисту |
|
удобную |
среду |
для |
программировани |
|
контроллеров на языках стандарта МЭК 61131-3. |
|
|
|
|||
С чего начинается программный проект?
Прежде всего, нужно дать проекту новое имя, оно же послужит и названием файла проекта. Первый программный компонент (POU – Program Organization Unit) помещается в новый проект автоматически и получает названиеPLC_PRG. Именно с него и начинается выполнение процесса (по аналогии с функцией main в языке С), из него будут вызываться другие программные блоки (программы, функции и функциональные
блоки). Нет необходимости писать вручную текст дляPLC_PRG, |
|
|||
поскольку конфигурация задачи определяется на вкладке проекта |
|
|||
Task Configuration – (он |
будет рассмотрен далее). Проект |
|
||
содержит ряд разнородных объектов POU, данных разных типов, |
|
|||
элементов |
визуализации |
и ресурсов. Организатор объектов |
|
|
(Object Organizer) управляет писком всех объектов проекта. |
|
|||
Как создать собственный проект? |
|
|
||
Для |
начала |
определяется |
конфигурация |
ПЛК |
соответствии |
с аппаратными средствами |
своего контроллера. |
||
Затем создаются программные компоненты необходимые для
решения |
проблемы. Далее |
пишется программный |
код для |
созданных |
компонентов на |
выбранных языках. Сразу |
после |
3
завершения |
программирования |
компилируется |
проект |
и |
|||||||
исправляются ошибки, если они есть. |
|
|
|
|
|
|
|||||
Как проверить проект? |
|
|
|
|
|
|
|
||||
Когда все ошибки устранены, можно приступить к отладке. |
|
||||||||||
Включается флажок эмуляция(simulation) и «подключитесь» |
к |
|
|||||||||
контроллеру. Теперь вы в режиме Online. Откроется окно с |
|
||||||||||
конфигурацией |
|
ПЛК (PLC |
Configuration) |
и |
проверяется |
|
|||||
правильность выполнения проекта. Для этого |
необходимо |
|
|||||||||
изменить вручную входные данные и убедится, что выходы |
|
||||||||||
контроллера отреагировали нужным образом. Если необходимо, |
|
||||||||||
можно |
наблюдать |
значения |
переменных |
в |
программных |
||||||
компонентах. Используя менеджер просмотра и заказа значений |
|
||||||||||
переменных (короче, менеджер |
рецептов) Watch and |
Receipt |
|
||||||||
Manager, |
задается |
список |
переменных, значения |
|
которых |
|
|||||
необходимо наблюдать. В случае ошибок в работе кода задаются |
|
||||||||||
точки останова. Когда процесс остановлен в определенной точке, |
|
||||||||||
можно просмотреть значения переменных проекта |
в |
данный |
|
||||||||
момент времени. Выполняя проект в пошаговом режиме(single |
|
||||||||||
step), проверяется логическая корректность своих программ. |
|
|
|||||||||
Проект включает следующие объекты: POU, типы данных, |
|
||||||||||
визуализации, ресурсы, библиотеки. Каждый проект сохраняется |
|
||||||||||
в отдельном файле. |
|
|
|
|
|
|
|
|
|
||
POU (Program Organization Unit) |
|
|
|
|
|
|
|||||
К |
программным |
компонентам(POU) |
относятся |
|
|||||||
функциональные блоки, функции и программы. Отдельные POU |
|
||||||||||
могут включать действия (подпрограммы). Каждый программный |
|
||||||||||
компонент состоит из раздела объявлений и кода. Для написания |
|
||||||||||
всего кода POU используется только один из МЭК языков |
|
||||||||||
программирования (IL, ST, FBD, SFC, LD или CFC). CoDeSys |
|
||||||||||
поддерживает все описанные стандартом МЭК компоненты. Для |
|
||||||||||
их использования достаточно включить в свой проект библиотеку |
|
||||||||||
standard.lib. POU могут |
вызывать |
другиеPOU, но |
рекурсии |
|
|||||||
недопустимы. |
|
|
|
|
|
|
|
|
|
|
|
Функция |
|
|
|
|
|
|
|
|
|
|
|
Функция |
– |
это |
POU, |
который |
возвращает |
только |
|
||||
единственное значение (которое может состоять из нескольких |
|
||||||||||
элементов, |
если это битовое поле или структура). В текстовых |
|
|||||||||
4
языках функция вызывается как оператор и может входить в выражения. При объявлении функции необходимо указать тип возвращаемого значения. Для этого после имени функции нужно написать двоеточие и тип. Правильно объявленная функция выглядит следующим образом:
FUNCTION Fct: INT
Имя функции используется как выходная переменная, которой
присваивается результат |
вычислений. Объявление функции |
должно начинаться с |
ключевого слова FUNCTION и |
заканчиваться ключевым словом END_FUNCTION. Функция не имеет внутренней памяти. Это означает, что функция с одними и теми же значениями входных переменных всегда возвращает одно и то же значение.
Например:
На FBD:
Функциональный блок
Функциональный блок - это POU, который принимает и возвращает произвольное число значений. В отличие от функции функциональный блок не формирует возвращаемое значение.
Объявление |
функционального |
блока начинается |
с |
ключевого |
|||
слова FUNCTION_BLOCK и |
заканчивается |
ключевым |
словом |
||||
END_FUNCTION_BLOCK. |
Ниже |
приведен |
|
пример |
|||
функционального блока, написанного на IL, который |
имеет |
две |
|||||
входных и две выходных переменных. Значение выходной |
|||||||
переменной |
MULERG |
равно |
произведению значений |
двух |
|||
входных |
переменных, |
а значение VERGL |
определяется |
в |
|||
результате сравнения значений входных переменных.
5
Экземпляры функционального блока |
|
|
|
|
|
|
|
||||||
Определение |
|
функционального |
|
|
блока |
|
подоб |
||||||
определению |
типа |
данных. Для работы с функциональным |
|
||||||||||
блоком необходимо объявить(создать) |
его |
экземпляр. |
Один |
|
|
||||||||
функциональный |
блок |
может |
иметь |
|
произвольное |
число |
|||||||
экземпляров, |
каждый |
из |
которых |
|
имеет |
собственные |
|||||||
независимые |
|
данные (память). |
|
Каждый |
|
|
экземпляр |
|
|||||
функционального |
блока |
получает |
|
|
свой |
|
собственн |
||||||
идентификатор |
(имя |
экземпляра) |
и |
свои данные, содержащие |
|
|
|||||||
входные, выходные |
и внутренние переменные. Экземпляры |
|
|
||||||||||
функционального блока объявляются глобально или локально как |
|
|
|||||||||||
переменные, имеющие тип соответствующего функционального |
|
||||||||||||
блока. |
Экземпляры |
функционального |
блока |
могут |
быть |
||||||||
объявлены в другом функциональном блоке или в программе. |
|
||||||||||||
Объявлять экземпляр функционального блока в теле функции |
|
||||||||||||
нельзя. |
Экземпляры |
функционального |
блока |
доступны в |
том |
|
|||||||
POU, в |
котором |
они объявлены, если они не объявлены |
|
||||||||||
глобально. Экземпляры функциональных блоков могут быть |
|
||||||||||||
использованы |
в |
качестве |
|
входных |
|
переменных |
|
других |
|||||
функциональных блоков или функций. |
|
|
|
|
|
|
|
|
|||||
Вызов функционального блока |
|
|
|
|
|
|
|
|
|||||
Для обращения к входным и выходным переменным |
|||||||||||||
функционального |
блока |
извне |
|
необходимо |
указать |
имя |
|||||||
6
экземпляра функционального блока, следующей за ней точкой и именем переменной: <Имя экземпляра>.<Имя переменной >
Переменные вход-выход |
|
Переменные вход-выход (VAR_IN_OUT) |
передаются в |
экземпляр функционального блока через |
указатели. Поэтому |
таким переменным нельзя присваивать константы при вызове. Результат умножения сохраняется в переменной ERG, а результат сравнения в переменнойQUAD. Экземпляр функционального блока FUB называется INSTANZ.
Пример в FBD:
Программа – это POU, способный формировать |
|
|||||||
произвольное значение во время вычислений. Значения всех |
|
|||||||
переменных программы сохраняются между вызовами. В отличие |
|
|||||||
от |
функционального |
блока |
экземпляров |
программы |
не |
|||
существует. Программа является глобальной во всем проекте. |
|
|||||||
Нельзя |
вызывать |
программу |
из |
функции. Если |
вызвать |
|
||
программу, которая изменит значения своих переменных, то при |
|
|||||||
следующем вызове ее переменные будут иметь те же значения, |
|
|||||||
даже если она вызвана из другого POU. В этом заключается |
|
|||||||
главное различие между программой и функциональным блоком, |
|
|||||||
в котором изменяются только значения переменных данного |
|
|||||||
экземпляра функционального блока. Объявление программы |
|
|||||||
начинается |
ключевым |
словомPROGRAM и заканчивается |
|
|||||
ключевым словом END_PROGRAM. Так же, как и для |
|
|||||||
экземпляров |
функциональных |
блоков, в |
текстовых |
языках |
|
|||
7
(IL, ST) задать |
актуальные параметры и считать значения |
выходов можно непосредственно при вызове программы. |
|
FBD: |
|
PLC_PRG |
|
Программа |
PLC_PRG – это специальный POU, который |
должен быть в каждом проекте. Эта программа вызывается один |
|
||||||||||||
раз |
за |
цикл |
управления. При |
создании |
нового |
проекта |
|||||||
автоматически |
открывается |
диалог"Project" |
"Object |
Add", |
|
||||||||
предлагающий |
создать |
новыйPOU |
– |
программу |
с |
именем |
|
||||||
PLC_PRG. Не следует менять предложенные установки. Если |
|
||||||||||||
определить |
|
последовательность |
выполнения |
задач Taskв |
|
||||||||
Configuration, |
то |
проект |
может |
|
не |
содержатьPLC_PRG. |
|
||||||
PLC_PRG является главной программой в однозадачном проекте. |
|
||||||||||||
|
Внимание: нельзя |
удалять |
или |
переименовыватьPOU |
|
||||||||
PLC_PRG(если Task Configuration не используется). |
|
|
|
||||||||||
|
Отладка |
|
|
|
|
|
|
|
|
|
|
|
|
|
Специальная |
опция |
|
отладкиCoDeSys |
заставляет |
|
|||||||
компилятор формировать дополнительный код, упрощающий |
|
||||||||||||
поиск ошибок. Опция включается через меню "Project" "Options" |
|
||||||||||||
в диалоговом окне "Debugging". |
|
|
|
|
|
|
|
|
|||||
|
Точки останова |
|
|
|
|
|
|
|
|
|
|
||
|
Точки |
|
останова – |
это |
места, |
в |
которых |
выполнение |
|||||
программы |
|
будет |
приостанавливаться, что |
|
позволяет |
||||||||
просмотреть |
|
значения |
переменных |
на |
определенном |
этапе |
|||||||
работы программы. Точки останова можно задавать во всех |
|||||||||||||
редакторах. |
|
В |
текстовом |
|
редакторе |
точка |
останов |
||||||
устанавливается на номер строки, в FBD и LD – на графический |
|
||||||||||||
элемент и в SFC – на шаг. |
|
|
|
|
|
|
|
|
|
||||
|
Пошаговое выполнение |
|
|
|
|
|
|
|
|
||||
|
Под |
«шагом» |
подразумевается |
в FBD: |
Выполнить |
|
|||||||
следующую цепь. Пошаговое выполнение позволяет проверить логическую правильность программы.
Выполнение по циклам
Команда одинарный цикл(Single Cycle) выполняет один рабочий цикл и останавливает контроллер после выполнения.
8
Изменения значений переменных в режиме Online
Изменив значение переменной в режимеonline, вы можете однократно записать его в контроллер(запись значений) либо включить режим записи заданных значений в каждом рабочем цикле (фиксация значений). Для изменения текущего значения переменной щелкните по нему дважды мышкой. Если это
логическая |
переменная, |
то |
она |
изменит свое |
значение на |
|
противоположное, если же эта переменная любого другого типа, |
||||||
то новое значение переменной нужно будет ввести в диалоговом |
||||||
окне (Write Variable). |
|
|
|
|
|
|
Мониторинг |
|
|
|
|
|
|
В режиме online |
значения |
всех |
видимых |
на экране |
||
переменных |
отображаются CoDeSys |
в реальном времени. Вы |
||||
можете наблюдать актуальные значения переменных в разделах |
||||||
объявлений и кода редакторов, в менеджере «рецептов» (watch |
||||||
and receipt |
manager) и |
на |
экранах |
визуализации. Значения |
||
переменных экземпляров функциональных блоков отображаются в виде иерархического дерева. Для указателей, в разделе кода, отображаются только их собственные значения. В разделе объявлений вы можете «раскрыть» указатель и увидеть значение адресуемой им переменной.
Эмуляция
Во время эмуляции созданная программа выполняется не в ПЛК, а в компьютере, на котором запущенCoDeSys. В этом режиме допустимы все функции online, что позволяет проверить логическую правильность программ, не используя контроллер.
Внимание: функции внешних библиотек не выполняются в режиме эмуляции.
Задания
Реализовать в пользовательском программном компоненте с именем ________ следующую математическую функцию.
Порядок выполнения работы
1. Создаем проект нажатием кнопки«Создать» на панели основного меню главного окна.
9
2.В диалоговом окне«Настройки целевой платформы» выбираем тип промышленного контроллера, для которого будет написана управляющая программа. Затем подтвердить настройки целевой платформы.
3.В диалоговом окне«Новый программный компонент (POU)» выбираем язык реализацииFBD и подтверждаем настройки основного программного компонента.
4.В появившемся рабочем поле во вкладке организатора объектов добавляем новый объект. Далее в диалоговом окне «Новый программный компонент(POU)» выбираем язык реализации FBD, в поле «Имя нового POU» вводим уникальное имя, отличное от PLC_PRG, в качестве «Типа POU» выбираем тип – Программа. Подтвердив настройки нового программного компонента, создаем пользовательский POU типа программа.
5.В области переменных пользовательскогоPOU
сочетанием клавиш Shift+F2 вызываем диалоговое окно «Объявление переменной». В данном диалоговом окне указываем уникальное имя переменной, выбираем тип переменной REAL и указываем её начальное значение. Таким образом, подтвердив
настройки |
переменной, |
создаем |
новую |
|
пользовательскую |
||||
переменную. |
|
|
|
|
|
|
|
|
|
6. В |
рабочей |
области |
основного |
,окнагде |
находится |
||||
редактор |
программы, |
нажатием |
сочетания |
клавишCtrl+B |
|||||
создаем первый элемент программы. Меняем название элемента |
|||||||||
на название любой арифметической функции. В качестве первой |
|||||||||
входной переменной ставим пользовательскую переменную, в |
|||||||||
качестве |
второй – |
любое |
арифметическое |
|
число. |
(Названия |
|||
арифметических |
функций |
выбираем |
следующие: ADD – |
||||||
сложение, SUB – вычитание, MUL – умножение, DIV – деление.)
Нажатием |
сочетания |
клавишCtrl+А |
вызываем |
операцию |
|
«Присвоения» |
и |
присваиваем |
результат |
выполнения |
|
пользовательской переменной. |
|
|
|||
7. В рабочей области основного окнаPOU PLC_PRG, где находится редактор программы, нажатием сочетания клавиш Ctrl+B создаем элемент программы. Меняем название элемента на название пользовательской POU.
10
