Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
И. В. Петров
Программируемые контроллеры.
Стандартные языки и приемы
прикладного проектирования
Москва
СОЛОН-Пресс
2004
УДК 681,5
ББК 32.96
ПЗО
Петров И. В. г
Предисловие научного редактора
t J
ПЗО Программируемые контроллеры. Стандартные языки и приемы Более тридцати лет прошло со знаменательного события — по-
прикладного проектирования / Под ред. проф, В. П. Дьяконова. явления первого микропроцессора корпорации Intel — 40.04. Ча-
— М.: СОЛОН-Пресс, 2004. — 256 с : ил. — (Серия «Библиотека ин- стота его работы была в тысячи раз меньше, чем частота элект-
женера») ронных устройств на уже, созданных тогда в СССР мощных СВЧ-
прлевых транзисторах. Однако микропроцессор обладал новым
ISBN 5-98003-079-4 удивительным в те годы качеством — он мог выполнять самые
i разнообразные функции, изменяемые пррграммно. И это обеспе-
Описана практика применения промышленных программируемых чило невиданные темцы, развития микропроцессорной техники.
контроллеров, широко применяющихся для автоматизации производст-
ва. Излагаются языки программирования иа основе действующего стан- Сейчас, когда череда процессоров для персональных компью-
дарта МЭК 61131-3 и многочисленные примеры подготовки программ теров (ПК) только одной кардор&цци Intel насчитывает ряд поко-
для промышленных программируемых контроллеров. лений (от ушедшего в истории 8086 до новейших Pentium 4, p<m-
Для специалистов по автоматизации производственных процессов и tium М (Centrino) и Inatium) Я сотни конкретных типов, у многих
производственного оборудования, а также для студентов и преподавате- создалось впечатление, что микропроцессоры это прежде всего
лей высших технических заведений. принадлежность персональных компьютеров. И впряли», взлету
роли и значимости ЦК трудно что-то противопоставить, А данные
о частотах работы современных процессоров в единицы Й^д
КНИГА — ПОЧТОЙ перспективе ТГц), о числе транзисторов в десятки миллионов
Книги издательства «СОЛОН-Пресс» можно заказать наложенным плате- Кристалле и о ничтожной Ьгже до долей. ватта) потребляемой
жом по фиксированной цене. Оформить заказ можно одним из двух способов: мощности этих сложнейших устройств даже специалисты воспри-
1) выслать открытку ИЛИ ПИСЬМО ПО адресу: 123242, Москва, а/я 20; нимают как фантастику наших дней.
2) передать заказ по электронной почте по адресу: fnaga2iit@eQlon-r.ru
И тем не менее не стоит забывать, что изначально ;
При оформления заказа следует правильно и полностью указать адрес, по
которому должны быть высланы книги, а также фамилию, имя и отчество по-
цессоры были созданы не столько для работы в пк» сколько в ка-
лучателя. Желательно указать дополнительно свой телефон и адрес электрон- честве программно-управляемых устройств .для автоматизации
ной почты. 1 _ •..•/'• промышленности и бытовой техники. На их основе были
Через Интернет вы можете в любое время получить свежий каталог издате- программцруемые логические контроллеры (П.ЦЩ -т- ,ул_,____„___,
льства «СОЛОН-Пресс». Для этого надо послать пустое письмо на робот-автоот- автоматизирующие работу как отдельных аппаратов» например
ветчик по адресу: станков с программным управлением или стиральных машин и
микроволновых печей^ так и огромных производственных компт
Получать информацию о новых книгах нашего издательства вы сможете, лексов. Сегодня в своей квартире мы, увы, не всегда, встретим
подписавшись на рассылку новостей по электронной почте. Для этого пошлите
письмо по адресу:
персональный компьютер, но, даже не подозревая об этом, поль-
news@8olon-r.ru
зуемся работой доброго десятка программируемых микроконтрол-
В теле письма должно быть написано слово SUBSCRIBE. леров. Таким образом, программируемые логические контролле-
ры — даже более распространенные устройства, чем ПК, количе-
ство которых во всем мире недавно превысило магическую цифру
в 1 миллиард.
ISBN 5-98003-079-4 Макет и обложка «СОЛОН-Пресс», 2004
По микропроцессорам и ПК у нас написаны и изданы сотни
to Петров И. В., 2004 книг. А вот литературы по программируемым логическим контт
роллерам сейчас практически нет. Отчасти это обусловлено об-
Предисловие научного редактора Предисловие научного редактора
щим крайне неблагоприятным для нашей науки и техники поло- обобщает многолетний опыт его практической работы в области
жением» возникшим после распада СССР и ввода ряда явно не- программирования и применения программируемых логических
продуманных и неприемлемых для нашего менталитета и состоя- контроллеров, В области» безусловно, актуальной, интересной и
ния промышленности рыночных реформ. В результате навязан- для нас новой.
ной нам экономической политики произошел распад занятых ав- Автор книги опытный программист. И ему удалось описать
томатизацией промышленности коллективов ученых и техниче- все важнейшие аспекты программирования таких массовых
ских специалистов, устройств, как программируемые контроллеры. Приятно отме-
К счастью» наука и техника принадлежат к отраслям деятель- тить, что это описание сделано хорошим и ясным языком, впол-
ности человечества, которые, испытывая отдельные спады в той не понятным не только опытным специалистам, но и студентам
или иной конкретной стране, в целом непрерывно развиваются и технических вузов и университетов. Книга хорошо иллюстриро-
совершенствуются- Сложившееся у нас положение имеет и свои вана. Она компактна, но содержит практически весь необходи-
положительные стороны. Прежде всего надо отметить интегра- мый материал по программированию ПЛК с рядом интересных
цию нашей промышленности с мировой промышленностью, без примеров. Уважительное отношение автора к стандартам также
чего создание конкурентно-способных изделий и товаров невоз- является ее достоинством, как и отражение новейшего програм-
можно- Пал «железный занавес» как в общении специалистов много инструментария.
разных стран, так и в обмене конструктивными идеями и разра-
ботками. В итоге на наш рынок стали поступать новейшие микро- Все это позволяет надеяться на то, что данная книга найдет
электронные изделия и программные продукты ведущих запад- своего читателя в лице специалистов в области автоматизации
ных корпораций и фирм. Ширится их применение в наших раз- промышленности, а также преподавателей и студентов техниче-
работках и товарах как внутреннего потребления» так и идущих ских вузов соответствующего книге профиля.
на экспорт.
Но, пожалуй, самое главное состоит в том, что созданный в Дьяконов В. II.,
годы СССР научный, технический и промышленный потенциал в ^ доктор технических наук,
наше время вновь стал расти, причем на качественно новом уров- профессор
не — интеграции с мировым промышленным потенциалом. К сча-
стью, далеко не все наши специалисты, окончившие технические
вузы, ринулись в торговлю, коммерцию и юриспруденцию или в
поисках лучшей доли эмигрировали на Запад. Многие остались
верными выбранному пути и, несмотря на его временные трудно-
сти, влились в ряды разработчиков новейшей аппаратуры и тех-
нических средств автоматизации производства- Разумеется, те-
перь уже использующей мировые достижения в науке и технике.
К таким специалистам относится и автор этой книги — Игорь
Петров. Это, безусловно, человек новой формации, понимающий
нынешние рыночные реалии и вовсе не пасующий перед ними.
Будучи моим студентом и аспирантом, Игорь Петров выбрал путь
как по своему образованию (промышленная электроника), так и
по призванию. Он является техническим директором компании
«Пролог*, успешно разрабатывающей и внедряющей современ-
ные программируемые логические контроллеры в наше производ-
ство. И вот теперь он решился на подготовку этой книги, которая
Введение
ции, без подключения внешнего оборудования. Технически контроллеры реализуются по-разному. Это может
быть механическое устройства, пневматический или гидравличе-
ский автомат, релейная или электронная схема или даже компь-
ютерная программа.
В случае, когда контроллер встроен в машину массового выпу-
ска, стоимость его проектирования распределена на большое чис-
ло изделий и мала в отношении к стоимости изготовления. В слу-
чае машин, изготавливаемых в единичных экземплярах, ситуа-
ция обратная. Стоимость проектирования контроллера доминиру-
ет по отношению к стоимости его физической реализации.
- i
При создании машин, занятых в сфере промышленного произ-
водства, как правило, приходится иметь дело не более чем с еди-
ницами однотипных устройств. Кроме того, очень существенной
здесь является возможность быстрой перенастройки оборудова-
ния на выпуск другой продукции.
Контроллеры, выполненные на основе реле или микросхем с
«жесткой» логикой, невозможно научить делать другую работу
без существенной переделки. Очевидно, что такой возможностью
обладают только программируемые логические контроллеры
(ПЛК). Идея создания ПЛК родилась практически сразу с появле-
нием микропроцессора, т, е- 30 лет назад.
1 2 Глава 1. Программируемые контроллеры Определение ПЛК 13
Физически, типичный ПЛК представляет собой блок, имею- Изначально ПЛК предназначались для управления последова-
щий определенный набор выходов и входов, для подключения тельными логическими процессами, что и обусловило слово «ло-
датчиков и исполнительных механизмов (рис. 1.1). Логика управ- гический» в названии ПЛК. Современные ПЛК помимо простых
ления описывается программно на основе микрокомпьютерного логических операций способны выполнять цифровую обработку
ядра. Абсолютно одинаковые ПЛК могут выполнять совершенно сигналов, управление приводами, регулирование, функции опе-
разные функции. Причем для изменения алгоритма работы не раторского управления и т. д. В стандарте МЭК и очень часто в
требуется каких-либо переделок аппаратной части. Аппаратная литературе для обозначения контроллеров применяется сокраще-
реализация входов и выходов ПЛК ориентирована на сопряжение ние ПК (программируемый контроллер). Поскольку в России
с унифицированными приборами и мало подвержена изменениям. обозначение ПК устойчиво связано с персональным» компьюте-
о
рами, мы будем использовать сокращение ПЛК.
в В Конструкция ПЛК может быть самой разнообразной — от
ы стойки, заполненной аппаратурой, до миниатюрных ПЛК, подоб-
ПРОГРАММНАЯ X ных показанному на рис. 1.2.
II о ОБРАБОТКА
о
д д
ы ы
t
тем АСУ. Это объясняется тем, что необходимость автоматизации написали и отладили автономный проект на контроллере при по-
отдельного механизма или установки всегда наиболее очевидна* мощи системы подготовки программ CoDeSys. Как теперь нужно
Она дает быстрый экономический эффект, улучшает качество доработать программу, чтобы связать ПЛК с системой диспетчер-
производства, позволяет избежать физически тяжелой и рутин- ского управления» базой данных,или Интернет-сервером? Ответ:
ной работы. Контроллеры по определению созданы именно для никак. Никакого программирования далее вообще не потребует^
такой работы. ся. В комплекс программирования ПЛК входит ОРС-сервер, Он
•ч
Далеко не всегда удается создать полностью автоматическую умеет получать доступ к данным ПЛК также прозрачно, как и
систему. Часто «общее руководство» со стороны квалифицирован- отладчик. Достаточно обеспечить канал передачи данных ПЛК —
ОРС-сервер. Обычно такой канал уже существует, вы использова-
ного человека — диспетчера необходимо. В отличие от автомати-
ли его, при отладке. Вся дальнейшая работа сводится к определе-
ческих систем управления такие системы называют автоматизи-
нию сциска доступных переменных, правильной настройке сети,
рованными. Еще 10 — 15 лет назад диспетчерский пульт управле-
конфигурированию ОРС-сервера и SCADA-системы. В целом, опе-
ния представлял собой табло с множеством кнопок и световых рация очень н&помияает настройку общедбступных устройств ло-
индикаторов. В настоящее время подобные пульты применяются кальной сети ПК*
только в очень простых случаях, когда можно обойтись несколь-
кими кнопками и индикаторами. В более «серьезных» системах Второй часто возникающей задачей является интеграция не-
применяются ПК. скольких ПЛК с целью синхронизации их работы. Здесь по^вдя-
ются сети, обладающие рядом специфических требований. В це-
Появился целый класс программного обеспечения реализую-
щего интерфейс человек—машина (MMI). Это так называемые си- Машина! Машина N
стемы сбора данных и оперативного диспетчерского управления
(Supervisory Control And Data Acquision System — SCADA). Совре- Органы Объект
Датчики
менные SCADA-системы выполняются с обязательным примене- воздействия управления
лом это требования, аналогичные требованиям к ПЛК: режим ре- Существенный минус такого решения — большое время выхот
ального времени, надежность в условиях промышленной среды, да на рабочий режим после включения питания или зависания
ремонтопригодность, простота программирования. Такой класс компьютера. Особенно опасно, если перезапуск произвел «сторо-
сетей получил название промышленных сетей (fieldbus). Сущест- жевой таймер» в автоматическом режиме, в то время как состоя-
вует масса фирменных реализаций и достаточно много стандартов ние исполнительных механизмов не соответствует исходным пози-
таких сетей (Bitbus, Modbus, Profibus, CANopen, DeviceNet), по- циям. Загрузка операционной системы может отнимать несколько
зволяющих интегрировать аппаратуру различных фирм, но ни минут, все это время система оказывается неуправляемой. Для
один из них нельзя признать доминирующим. ПЛК время «холодного» запуска измеряется миллисекундами.
Благодаря продуктивному развитию средств сетевой интегра- Для достижения сравнимых с ПЛК технических показателей
ции появилась возможность создания распределенных систем по надежности компьютер, конечно, должен быть промышленно-
управления. В 80-х гг. XX в, доминировали ПЛК с числом вхо- го исполнения (на базе магистралей РС/104 или VME), а не деше-
дов-выходов десколько сотен. В настоящее время большим спро- вый офисный «no name».
сом пользуются микроЙЛК с количеством входов-выходов до 64.
В распределенных системах каждый ПЛК решает локальную за-
дачу» Задача синхронизации управления выполняется компьюте- 1.8. Рабочий цикл
рами среднего звена АСУ. Распределенные системы выигрывают
по надежности, гибкости монтажа и простоте обслуживания. Задачи управления требуют непрерывного циклического конт-
роля. В любых цифровых устройствах непрерывность достигается
за счет применения дискретных алгоритмов, повторяющихся че-
рез достаточно малые промежутки времени. Таким -образом, вы-
1.6. Доступность программирования числения в ПЛК всегда повторяются циклически, Одна итерация,
Главным требованием к ПЛК всегда была и остается возмож- включающая замер, обсчет и выработку воздействия, называется
ность его эксплуатации существующим техническим персоналом рабочим циклом ПЛК. Выполняемые действия зависят от значе-
и возможность быстрой замены старого оборудования- Поэтому ния входов контроллера, предыдущего состояния и определяются
языки программирования компьютеров и встраиваемых микро- пользовательской программой.
процессорных систем управления плохо подходят для программи- По включению питания ПЛК выполняет самотестирование и
рования ПЛК. Здесь нужны более простые и наглядные языки, настройку аппаратных ресурсов, очистку оперативной памяти
позволяющие излагать задачу в близких к применяемым техно- данных (ОЗУ), контроль целостности прикладной программы по-
логиям категориях. Привлечение же к программированию специ- льзователя. Если прикладная программа сохранена в памяти,
ализированной фирмы неизбежно порождает зависимость, если ПЛК переходит к основной работе, которая состоит из постоян-
реализация не является достаточно прозрачной. Сложный язык ного повторения последовательности действий, входящих в рабо-
программирования ПЛК снижает его шансы на конкурентном чий цикл.
рынке существенно больше, чем массогабаритные показатели. Рабочий цикл ПЛК состоит из нескольких фаз.
1. Начало цикла.
1*7. Программный ПЛК 2. Чтение состояния входов.
3. Выполнение кода программы пользователя.
Программные приложения, имитирующие технологию ПЛК 4. Запись состояния выходов.
на компьютере (оснащенном платами ввода-вывода), получили 5. Обслуживание аппаратных ресурсов ПЛК.
название программный ПЛК (soft PLC). Программная эмуляция
6. Монитор системы исполнения.
ПЛК удобна тем, что благодаря наличию многозадачной операци-
онной системы можно совместить в одном месте контроллер, сре- 7. Контроль времени цикла.
ду программирования и систему диспетчерского управления. 8. Переход на начало цикла.
2 2
Глава 1. Программируемые контроллеры Время реакции 23
В самом начале цикла ПЛК производит физическое чтение входов. Например, АЦП обычно требуют определенного времени
входов. Считанные значения размещаются в области памяти вхо- с момента запуска до считывания измеренного значения. Часть
дов. Таким образом, создается полная одномоментная зеркальная работы системное программное обеспечение контроллера выпол-
копия значений входов. няет по прерываниям. Грамотно реализованная система исполне-
Далее выполняется код пользовательской программы. Пользо- ния нигде и никогда не использует пустые циклы ожидания го-
вательская программа работает с копией значений входов и выхо- товности аппаратуры. Для прикладного программиста все эти
дов, размещенной в оперативной памяти. Если прикладная про- детали не важны. Существенно только то, что значения входов
грамма не загружена или остановлена, то данная фаза рабочего обновляются автоматически исключительно в начале каждого
цикла, естественно, не выполняется. Отладчик системы програм- рабочего цикла.
мирования имеет доступ к образу входов-выходов, что позволяет
управлять выходами вручную и проводить исследования работы Общая цродолжительность рабочего цикла ПЛК называется
датчиков. временем сканирования. Время сканирования в значительной сте-
пени определяется длительностью фазы кода пользовательской
После выполнения пользовательского кода физические выхо- программы. Время, занимаемое прочими фазами рабочего цикла,
ды ПЛК приводятся в соответствие с расчетными значениями
практически является величиной постоянной. Для задачи средне-
(фаза 4). го объема в ПЛК с системой исполнения CoDeSys время распреде-
Обслуживание аппаратных ресурсов подразумевает обеспече- лится примерно так: 98% — пользовательская программа, 2% —
ние работы системных таймеров, часов реального времени, опера- все остальное.
тивное самотестирование, индикацию состояния и другие аппа-
ратно-завиеимые задачи. Существуют задачи, в которых плавающее время цикла суще-
Монитор системы исполнения включает большое число функ- ственно влияет на результат, например это автоматическое регу-
ций, необходимых при отладке программы и обеспечении взаимо- лирование. Для устранения этой проблемы в развитых ПЛК пре-
действия с системой программирования, сервером данных и се- дусмотрен контроль времени цикла. Если отдельные ветви кода
тью. В функции системы исполнения обычно включается: загруз- управляющей программы выполняются слишком быстро, в рабо-
ка кода программы в оперативную и электрически перепрограм- чий цикл добавляется искусственная задержка. Если контроль
мируемую память, управление последовательностью выполнения времени цикла не предусмотрен, подобные задачи приходится ре-
задач, отображение процесса выполнения программ, пошаговое шать исключительно по таймерам.
выполнение, обеспечение просмотра и редактирования значений
переменных, фиксация и трассировка значений переменных, кон-
троль времени цикла и т. д. 1.9. Время реакции
Пользовательская программа работает только с мгновенной ко- к
пией входов. Таким образом, значения входов в процессе выпол- Время реакции — это время с момента изменения состояния
нения пользовательской программы не изменяются в пределах системы до момента выработки соответствующей реакции. Оче-
одного рабочего цикла. Это фундаментальный принцип построе- видно, для ПЛК время реакции зависит от распределения момен-
ния ПЛК сканирующего типа. Такой подход исключает неодно- тов возникновения события и начала фазы чтения входов. Если
значность алгоритма обработки данных в различных его ветвях. изменение значений входов произошло непосредственно перед фа-
Кроме того, чтение копии значения входа из ОЗУ выполняется зой чтения входов, то время реакции будет наименьшим и рав-
значительно быстрее, чем прямое чтение входа. Аппаратно чтение ным времени сканирования (рис. 1.5). Худший случай, когда из-
входа может быть связано с формированием определенных вре- менение значений входов происходит сразу после фазы чтения
менных интервалов, передачей последовательности команд для входов. Тогда время реакции будет наибольшим, равным удвоен-
конкретной микросхемы или даже запросом по сети. ному времени сканирования минус время одного чтения входов.
Если заглянуть глубже, то нужно отметить, что не всегда ра- Иными словами, время реакции ПЛК не превышает удвоенного
бота по чтению входов полностью локализована в фазе чтения времени сканирования.
Устройство ПЛК
Глава 1. Программируемые контроллеры 25
Чтение код программы Установка Прочив Аппаратно ПЛК является вычислительной машиной. Поэтому
фазы
входов управления выходов архитектура его процессорного ядра практически не отличается
от архитектуры компьютера. Отличия заключены в составе пери-
Время реакции
ферийного оборудования, отсутствуют видеоплата, средства руч-
Событие
ного ввода и дисковая подсистема. Вместо них ПЛК имеет блоки
входов и выходов.
Рис. 1.6. Время реакции ПЛК
созданы на основе наиболее популярных языков программирова- Страшно подумать, что придется объяснять работу сложной
ния, наиболее распространенных в мире контроллеров. Если взять программы по ассемблерным или С листингам. Не исключайте
любой контроллер, работающий в современном производстве, то ситуации, что общаться придется не на родном языке. Современ-
его программу можно перенести в среду МЭК 61131-3 с минималь- ные системы программирования контроллеров позволяют выпол-
ными затратами- Речь не идет о том» что программу можно будет нить несколько распечаток программы с комментариями на раз-
использовать без какой-либо правки. Безусловно, потребуется не- ных языках — русском, немецком н т. д. Очевидно, это уже не
которая адаптация и отладка, но несравненно меньшая» чем при маркетинговый ход разработчиков, а реальное требование совре-
менного бизнеса. Неэффективно реализованную программу мож-
создании проекта с нуля.
но заставить работать быстрее увеличением быстродействия про-
После принятия стандарта появилась возможность создания
цессора. Доходчивостц представления достичь гораздо сложнее.
аппаратно-независимых библиотек. Это регуляторы, фильтры, Программу, в которой невозможно разобраться, придется рано
управление сервоприводом, модули с нечеткой логикой и т. д. или поздно выбросить.
Наиболее удачные, отработанные востребованные библиотеки ста-
новятся коммерческими продуктами,
2Л, Единые требования в подготовке
-и
Project [E:\SCj
> Library Pi
3.19
LD free
Рис. 3.2. Графический редактор релейных схем и панель ввода GT 0
AHO «ntr
MULTIPROG AND
OR
ST ope ion2»3.19
f* Close the entrap
Sm
i ua
l tor
assign - Stmt
RU
STN
OP
P
CFt
EO
RM
R
16#0000-
Рис. З.7. Эмуляция ПЛК в OpenPCS
16Й0001
• загрузку кода управляющей программы в оперативную па-
мять и электрически перепрограммируемую память ПЛК;
• автоматический контроль версий кода. Проверка соответст-
вия кода содержащегося в памяти ПЛК и кода полученного
FALSE Counter2=16#0000 после текущей компиляции;
• выполнение управляющей программы в режиме реального
времени;
Рис. З.6. LD-диаграмма в процессе исполнения и диалог изменения • режим останова. Останов означает прекращение выполнения
значения переменной (CoDeSys) только кода управляющей программы. Все прочие фазы ра-
4 2 Глава 3. Инструменты программирования ПЛК 1 Инструменты комплексов программирования ПЛК 43
бочего цикла выполняются. Способность наблюдать значе- просмотр последовательности вызовов компонентов в точке
ния входов и управлять выходами ПЛК вручную сохраняет- останова;
ся. В этом режиме можно проводить тестирование и настрой- графическую трассировку переменных. Значения нужных
ку датчиков и механизмов объекта управления; переменных запоминаются в циклическом буфере и пред-
сброс ПЛК. Может быть несколько видов сброса. В стандарте ставляются на экране ПК в виде графиков. Запись значений
МЭК предусмотрено два вида сброса «горячий» и «холод- можно выполнять в конце каждого рабочего цикла либо че-
ный». Первый включает перевод управляющей программы в рез заданные цериоды времени. Трассировка запускается
исходное состояние и выполнение начальной инициализа- вручную или синхронизируется с заданным изменением зна-
ции переменных. Во втором виде сброса добавляется началь- чения определенной (триггёрной) переменной;,
ная инициализация переменных, размещенных в энергоне- визуализацию — анимационные картинки, составленные из
зависимой области памяти. В CoDeSys предусмотрен еще и графических примитивов, связанных с переменными про-
«заводской» сброс (original), удаляющий пользовательскую граммы- Значение переменной может определять координа-
программу и восстанавливающий состояние контроллера, в ты, размер или цвет графического объекта. Графические
котором он поступает с завода изготовителя. Кроме того, в объекты включают векторные геометрические фигуры или
ПЛК может произойти аппаратный сброс путем выключения произвольные растровые изображения. Визуализация может
питания или перезапуска микропроцессора. Система про- содержать элементы обратной связи» например кнопки, пол-
граммирования должна адекватно реагировать в случае ап- зунки и т. д. (см. рис. 3.8» 3.9). С помощью визуализации
паратного сброса» Детальная реакция на команды сброса создается изображение, моделирующее объект управления
определяется системой исполнения. Поэтому здесь возмож- или систему операторского управления.
ны некоторые отличия для разных ПЛК, даже в одной среде
программирования;
мониторинг и изменение мгновенных значений всех пере-
менных проекта» включая входы-выходы ПЛК. Для удобства
работы значения представляются в заданной пользователем
системе счисления;
i
фиксацию переменных, включая входы-выходы. Фиксиро-
ванные переменные будут получать заданные значения в
каждом рабочем цикле независимо от реального состояния
ПЛК и действий управляющей программы. Данная функция
позволяет имитировать элементарные внешние события в ла-
бораторных условиях и избегать нежелательной работы ис-
полнительных механизмов при отладке на «живом» объекте
управления. Неуправляемая работа механизмов может при-
вести к поломке и представлять опасность для окружающих
людей;
выполнение управляющей программы шагами по одному ра-
бочему циклу. Применяется при проверке логической прави-
льности алгоритма;
пошаговое выполнение команд программы и задание точек
останова; Рис. 3.8. Визуализация в iCon-L
44 Глава 3. Инструменты программирования ПЛК Инструменты комплексов программирования ПЛК 45
3.2.5. Средства управления проектом Средства восстановления проекта. В реальной жизни нель-
зя исключать ситуацию, что исходные файлы проекта окажутся
Все программные комплексы обязательно содержат средства утраченными. В это время обязательно возникнет необходимость
управления проектом. Эту задачу решает менеджер проекта, в внести поправки в работу готовой программы- Эта задача имеет
обязанности которого входит: три решения.
• представление всех элементов проекта и общей его структу- 1. Декомпиляция кода. Исполняемый код считывается из
ры в удобном виде (см. рис. 5.10). Создание, удаление, пере-
памяти ПЛК и преобразуется в МЭК-программы. Для систем ге-
именование и копирование компонентов. Автоматический
вызов соответствующих редакторов для любой глубины вло- нерирующих машинный код эта задача практически невыполни-
жения программных компонентов. Настройка ресурсов; ма. Безусловно, можно дизассемблировать код в IL или ST. Но
это ненамного лучше, чем обычное машинно-зависимое дизассем-
• управление процессом трансляции и сборки кода. Настройка
блирование. Структура программы получится отличной от исход-
опций транслятора; ного представления. Как правило, разобраться в такой программе
• сравнение и выборочное слияние нескольких проектов или сложнее, чем написать заново. Для интерпретирующих систем
их версий; ситуация значительно лучше. Так, OpenPCS способен восстано-
• управление библиотеками. Здесь существуют две задачи. вить программу из исполняемого кода IL абсолютно адекватно,
Первая — это включение необходимых библиотек в состав естественно, с потерей комментариев. Декомпиляция — это край-
проекта, а вторая — это создание и сопровождение новых няя мера. Важное практическое значение она имела во времена
библиотек; преобладания автономных пультов программирования ПЛК и при
• документирование проекта. Документирование проекта в отсутствии надежных устройств хранения информации.
комплексах МЭК-программирования предусматривает распе-
чатку всех данных проекта, включая: 2. Сжатие всех файлов проекта и сохранение в памяти ПЛК.
Современные мощные алгоритмы компрессии и существенное уде-
• текстовое описание, дата создания и авторские права;
шевление памяти делают такой подход все более популярным
• описание переменных и реализацию всех компонентов (MULTIPROG, CoDeSys), Безусловно, при наличии достаточного
проекта; объема памяти ПЛК это наиболее удобный способ архивации.
• ресурсы проекта — конфигурацию ПЛК, описание гло-
3. Правильная организация работы. В комплекс разработчи-
бальных переменных, настройки задач, список и состав
ка включается утилита для периодической архивации проектов и
библиотечных модулей;
сохранения на сервере, сменных носителях, в печатном виде и от-
• таблицу перекрестных ссылок и стек вызовов;
правки по электронной почте. В архив помещаются исходные
• окно трассировки. файлы, включенные в проект библиотеки, объектные файлы, тек-
Естественно, нельзя ожидать от системы программирования стовое описание архива и любые другие нужные файлы. Проме-
полного комплекта документации в соответствии с требованиями жуточные версии проекта не перезаписываются, а хранятся неза-
ЕСКД. Под словами «полная документация» в руководстве по висимо, что позволяет осуществить быстрый откат при выборе не-
применению системы понимается только то, что по данному пе- удачного решения. В связи с появлением накопителей большой
чатному документу можно полностью и однозначно восстановить емкости и надежных перезаписываемых оптических носителей
проект. такой подход не имеет технических препятствий.
CoDeSys позволяет составить специальные файлы комментари-
Средства обеспечения безопасности* Возможность просмотра
ев на разных языках (русский, английский и т. д.). Благодаря
и модификации проекта закрывается парольным доступом или
этому можно распечатать несколько разноязычных вариантов до-
аппаратным ключом. Посторонний человек не должен иметь воз-
кументации одного и того же проекта без изменения в тексте про-
можности читать, распечатывать и модифицировать проект. \
грамм» Кроме того, система предоставляет возможность настрой-
ки формата страницы документа, включая колонтитулы с вашим Сквозной (по всем программам проекта, разделам объявлений,
фирменным логотипом. конфигурации и др.) контекстный поиск и замена.
4 6 Глава 3. Инструменты программирования ПЛК Комплекс CoDeSys 47
i •• • — • •
64 VAR
ULINT 0 2 -1 | 3
— - • • • ^ ^ ^ i и g r r r ^ ^ — Щ Д Ы
Ш Д И Ш М Р — H P W — ^ P i ^ ^ ^ = III "
wVarO, wVarl: WORD; (*2 переменных типа WORD*)
Нижний предел диапазона целых без знака 0, верхний предел byVar3: BYTE; (*тип BYTE начальное значение 0*)
определяется как (2П)- 1, где п — число разрядов числа. Для чи- byVar2: BYTE := 16#55; (*тип BYTE начальное
а 1 1
сел со знаком нижний предел ~-(2 ~ ),верхний предел (2"" ) - 1. значение 55h*)
Наименования целых типов данных образуются с применени- END VAR -
ем префиксов, выражающих отношение размера к 16-разрядным
byVar2 : - 2#1_0_0_0_1_0_0_0; (*равносильно2#1000_1000*)
словам: S (short *l/2) короткое, D (double *2) двойное, L (long *4)
длинное. Префикс U (unsigned) указывает на представление це- ЬуУагЗ := 2#1_0_0_0__1_0_0_0; (*ошибка*)
лых без знака.
Переменные типов BYTE, WORD, DWORD и LWORD опреде- 4.2.2. тип
ляются стандартом как битовые строки ANY_BIT. Говорить о
диапазоне значений чисел для этих переменных вообще некор- Логические переменные объявляются ключевым словом BOOL
Это означает их принадлежность к алгебре Буля. Они могут при
ректно. Они представляют строки из 8, 16 и 32 бит, соответствен-
нимать только значение логического нуля FALSE (ЛОЖЬ) или ло
но. Помимо обращения с такими переменными как к единым це-
гической единицы TRUE (ИСТИНА). При начальной инициализа
лым, их можно использовать побитно.
ции логическое значение по умолчанию — ЛОЖЬ.
Целые числа могут быть представлены в двоичной, восьмерич-
ной, десятичной или шестнадцатеричной системе счисления. Чис- VAR
ловые константы, отличные от десятичных, требуют указания bVarl: BOOL := TRUE;
основания системы счисления перед знаком «#». Например:
wVar2: WORD;
END VAR
двоичное 2#0100_1110
При преобразовании значения логической переменной в целую
восьмеричное 8#116
FALSE дает 0, a TRUE 1.
шестнадцатеричное 16#4Е
wVar2:= BOOL_TO_WORD(bVarl); (*результат 1 *)
десятичное 78
При обратном преобразовании любого целого в логическую пе-
ременную истину образует любое ненулевое значение:
Для обозначения шестнадцатеричных цифр от 10 до 15 испо-
льзуются латинские буквы от А до F. wVar2 := 0;
Символ подчеркивания «_» не влияет на значение и использу- bVarl := WORD _TO_ BOOL (wVar2); ('результат FALSE*)
ется исключительно для улучшения зрительного восприятия чис-
Результаты операций, дающих логическое значение, можно
ла. Например: 10_000, 16#01_88. Подчеркивание можно приме- присваивать переменным типа BOOL:
нять только между цифрами или в конце числа. Два или более
подчеркивания подряд применять нельзя. bVarl : - wVar2 > 5000;
Глава 4. Данные и переменные Элементарные типы данных
Объявление в программе переменной Telegal типа Trolley и са элементов при компиляции. Естественно, это не относится к
начальная инициализация структуры выглядит так: массивам структур. Чтобы не иметь проблем при использовании
нескольких различных переменных одной структуры, применять
Telegal: Trolley := (Агис1:='Пустой*); прямые адреса в структуре нельзя.
Состояние элементов после начальной инициализации Telegal
показано на рис. 4.2. 4.3.3. Перечисления
Перечисление позволяет определить несколько последователь-
B-Teleoal ных значений переменной и присвоить им наименования. Пере-
—.Start = TtOms числение — это удобный инструмент, позволяющий ограничить
—.Distance = О
—.Load = множество значений переменной и усилить контроль при транс-
~-.0n =
—JUtfd = 'Пустей'
ляции. Как и структура, перечисление создает новый тип дан-
ных, определение которого выполняется на уровне проекта:
Рис. 4.2. Результат начальной инициализации Telegal TYPE <Имя перечисления^
При начальной инициализации не обязательно задавать значе- (<Элемент 0>, < Элемент ,... < Элемент п>);
ния для всех элементов. Элементы, не имеющие явно указанных ENDJTYPE
начальных значений, по умолчанию получат нулевые значения.
Для доступа к элементам структуры используется следующий Объявленная позднее переменная типа <Имя перечисления>
синтаксис: может принимать только перечисленные значения. При инициа-
лизации переменная получает первое из списка значение. Если
<Имя_переменной>.<Имя_элемента> числовые значения элементов перечисления не указаны явно, им
присваиваются последовательно возрастающие числа начиная с 0.
Например: Фактически элемент перечисления — это число типа INT с огра-
Telegal.On := True; ниченным набором значений. Если необходимо, значения элемен-
там можно присвоить явно при объявлении типа перечисления.
Структуры могут включать другие структуры, массивы и сами Например:
образовывать массивы. Пример объявления и инициализации
массива структур: TYPE TEMPO: (Adagio := 1,Andante : - 2,Allegro := 4);
ENDJTYPE
TrolleySet: ARRAY[0..2] OF Trolley := (Articl := 'T 1'),
(Articl := 'T 2'), (Articl := *T 3'); Идентификаторы элементов перечисления используются в про-
TrolleySet[i].On := TRUE; грамме как значения переменной:
Если структура содержит вложенную структуру, то доступ к VAR
элементам вложенной структуры осуществляется с применением LiftTemp : TEMPO := Allegro;
составного имени, содержащего две точки: END_VAR
train*wagon[5]. weight; (*wagonQ вложенный массив структур*)
Если в разные перечисления включены элементы с одинаковы-
Поскольку физический размер элементов структуры известен ми именами, возникает неоднозначность. Для решения этой проб-
транслятору заранее, обращение к элементу структуры не дает лемы применяется префикс, содержащий перечисление:
каких-либо накладных расходов в сравнении с простой перемен- TEMPO#Adagio. В CoDeSys все наименования элементов перечис-
ной. Транслятор имеет возможность рассчитать абсолютные адре- ления обязаны быть уникальными.
ГлаЬа 4. Данные н переменные Пользовательские типы данных 63
6 2
используются нультерминированные (как в С-компиляторах) обычно применяется символ подчеркивания. Символ подчеркива-
строки- То есть под строку всегда заранее выделяется область па* ния является значимым. Так имена 'Varl', *Var_l' и *__VarV яв-
мяти заданного максимального размера- Любая строка оканчива- ляются различными. Два подчеркивания подряд использовать не-
ется нулевым байтом, который не входит состав строки» а служи* льзя. Регистр букв не учитывается. Так 'VAR1' и *Varl' одно и то
исключительно для определения конца строки функциями, опе- же. Как минимум, 6 первых знаков идентификатора являются
рирующими со строками. Пустая строка состоит из единственного значимыми для всех систем программирования.
нулевого байта. При объявлении строки необходимо задавать рав- В CoDeSys такого ограничения нет — все символы наименова-
мер на единицу больше необходимого для символа «конец стро- ния являются значимыми. Символы кириллицы (русского языка),
ки». Такая форма представления наиболее компактна (всего 1 к сожалению, в идентификаторах применять нельзя. Это ограни-
вспомогательный байт), но, очевидно, не оптимальна в плане бы- чение характерно для всех программных систем.
стродействия. Если, например, нужно слить две строки, то функ-
ция конкатенации строк обязана сначала найти, где кончается Аналогичные требования относятся и к любым идентификато-
первая строка. В других системах программирования можно рам МЭК-программ (компоненты, метки, типы и т. д.).
встретить реализацию строк в виде структуры, содержащей мак-
симальный размер, текущую длину строки и саму строку (массив 4.4.2. Распределение памяти переменных
байт). Вообще же работа со строками в ПЛК требуется не часто.
Контроллер с точки зрения МЭК программы, имеет несколько
Для поддержки проверки значений переменных с ограничен- областей памяти, имеющих разное назначение. ,
ным диапазоном во время работы система исполнения должна 1. Область входов ПЛК.
предоставлять средства контроля. В CoDeSys эта задача решается
2. Область выходов ПЛК.
достаточно изящно — действия, которые выполняются, при по-
пытке выхода за диапазон определяются программистом. Для 3. Область прямо адресуемой памяти.
этого служат специальные функции (CheckRangeSigned, Check- 4. Оперативная память пользователя (ОЗУ).
RangeUnsigned), которые необходимо включить в проект. На вхо- Аппаратные ресурсы ПЛК присутствуют в МЭК-проектах в не-
де функции получают три параметра: две границы диапазона в; явной форме. Размещение переменной в одной из трех первых об-
значение. Любая необходимая реакция на нарушение границ, ластей приводит к ее связи с определенной аппаратурой — входа-
(ограничение переменной, индикация ошибки и т. д.) описывает- ми, выходами или переменными системы исполнения (диагности-
ся в теле функций контроля. . л ка модулей, настройка параметров ядра и т. д.). Распределение пе-
i ременных в этих областях определяется изготовителем ПЛК. При-
. i вязка к конкретным адресам задается при помощи прямой адреса-
4.4. Переменные ции. Для обеспечения переносимости программного обеспечения
прямые адреса нужно использовать только в разделе объявлений.
Каждая переменная обязательно имеет наименование и тип. В языках программирования стандарта не предусмотрено опера-
Сущность переменной может быть различной. Переменная может ций прямого чтения входов-выходов. Эту работу выполняет систе-
представлять вход или выход ПЛК, данные в оперативной или. ма исполнения. При необходимости для низкоуровневого обраще-
энергонезависимой памяти. Далее мы рассмотрим правила объяв- ния изготовителем ПЛК поставляются специальные библиотеки.
ления и некоторые практические сложности и тонкости, возника-
ющие при работе с переменными. Объявление переменной без префикса AT физически означает
выделение ей определенной памяти в области ОЗУ. Распределение
л доступной памяти ОЗУ транслятор осуществляет автоматически.
4*4*1. Идентификаторы
Переменные принято разделять на глобальные и локальные по
Имя переменной (ее идентификатор) должно быть составлено* области видимости. Глобальные переменные определяются на
из печатных символов и цифр. Цифру нельзя ставить на первое: уровне ресурсов проекта (VAR_GLOBAL) и доступны для всех про-
место. Пробелы в наименовании использовать нельзя. Вместо них* граммных компонентов проекта. Локальные переменные описыва-
• - -—•ЛЬ Г | -, • i
6 6
Глава 4. Данные и переменные Переменные 67
ются при объявлении компонента и доступны только внутри него. Символ Область памяти
Описание любого программного компонента содержит, как мини-
мум, один раздел объявления локальных переменных VAR, пере- В Байт
менных интерфейса VABJNPUT, VAR_OUTPUT, VAR__IN_OUT W Слово
и внешних глобальных переменных VAR_EXTERNAL (см. по-
дробнее «Компоненты организации программ»). D Двойное слово
Наименования разделов объявления переменных могут содер- L Длинное слово
жать дополнительные ключевые слова, уточняющие способ при-
менения. Завершает прямой адрес число — составной иерархический ад-
• Я М 1 Ш » * И ^ И - ^ - ™ 1 1 И 1
•
*
рес, поля которого разделены точкой. В простейшем случае испо-
Ключевое слово Применение переменной льзуется два поля адреса: номер элемента и номер бита.
Переменные нужно разместить в энергонезависи- В конце объявления, как и для автоматически размещаемых
мой памяти, сохраняющей значения при выклю- переменных, необходимо указать тип неременной. При указании
RETAIN ченном питании. Такая память не является обяза- адреса одного бита тип переменной может быть только BOOL.
тельной и присутствует далеко не во всех ПЛК В прямом адресе указывается именно номер элемента. Это ко-
CONSTANT Константы, доступные только для чтения ренным образом отличается от физических адресов микропроцес-
— сора. Если прямой адрес определяет байт, то номер Элемента —
это номер байта. Бели прямой адрес определяет слово, то номер
4.4.3. Прямая адресация элемента — это номер слова, и, естественно, один элемент зани-
мает два байта. Так, следующие три объявления адресуют один и
Для создания прямо адресуемой переменной используется сле- тот ate байт:
дующее объявление:
dwHeat AT%MD1: BYTE;
имя переменной АТ% прямой адрес тип;
wbHeat AT%MW2: BYTE;
Прямой адрес начинается с буквы, определяющей область па- byHeat AT %MB4: BYTE;
мяти:
Нумерацию элементов памяти для данного примера иллюстри-
рует следующая таблица.
Символ Область памяти
I Область входов D | 1 •'
•
Q Область выходов
1 1 3
М Прямо адресуемая память в 11 1 2 з !\ 5 6 7
во целых чисел- При одинаковой разрядности максимальное по- Еще один существенный факт состоит в том, что множество
ложительное число для знаковых типов вдвое меньше (на 1 раз*- целых чисел незамкнуто относительно операции деления. Иначе
ряд), чем для беззнаковых. говоря, при делении двух целых образуется рациональное число,
Наибольшее распространение для представления отрицатель- которое неизбежно приходится округлять для представления его
ных чисел получил дополнительный код. Для данных в дополни- на множестве целых чисел. За редким исключением, когда воз-
тельном коде описанные выше математические закономерности можно деление без остатка, деление в целочисленных выражени-
остаются в силе, В знаковых типах с применением дополнитель- ях образует операционную погрешность.
ного кода выбирается определенная граница, разделяющая поло- Для достижения минимальной вычислительной ошибки преж-
жительные и отрицательные числа. Так, для типа SINT граница де всего необходимо попытаться преобразовать формулу с целью
положительных чисел 127, для INT это 32767. Отрицательные минимизации количества операций деления. Рассмотрим пример.
числа обра