Прогон программы 

Прогон программы

2.2

Работу программы ПЛК можно рассматривать как непрерывно выполняемый цикл, что иллюстрирует рис. 2.2 (о). Инструкции пользователя выполняются последовательно, и когда выполнена последняя, то работа вновь начинается с первой. Таким образом, ПЛК не имеет постоянной связи с внешним миром, а действует скорее как «кинопроектор с закольцованной лентой».

Работа ПЛК, представленная на рис. 2.2 (а), называется прогоном программы, а период цикла — временем прогона, которое зависит от размера программы и быстродействия процессора. В среднем время прогона обычно составляет 10—50 мс, что соответствует 2—5 мс на килобайт программы.

На рис 2.2 (6) работа ПЛК поясняется более детально. ПЛК не считывает входные данные по мере необходимости (как ясно из рис. 2.2 (а)), поскольку это было бы расточительной тратой времени. В начале прогона программы он опрашивает состояние всех подключенных входов и запоминает их состояния в памяти. Если программа ПЛК получает доступ к входным данным, она считывает те значения, которые имели место в начале текущего прогона.

В течение прогона программы выходные данные также временно не изменяются. ПЛК сначала отводит для этих данных определенную область памяти, и только в конце прогона программы все выходные данные обновляются одновременно. Следовательно, цикл работы таков: чтение входных данных, прогон программы, обновление выходных данных.

Память ПЛК можно считать состоящей из четырех областей, как показано на рис. 2.2 (в). Входные данные считываются в соответствующую виртуальную область в начале прогона программы, а обновление выходных данных производится из аналогичной виртуальной области в конце прогона. Имеется также область памяти, зарезервированная для внутренних сигналов, используемых программой, но не связанных непосредственно с внешним миром (сигналы таймеров, счетчиков, биты памяти, например, отведенные для сигналов неисправности и т. д.). Эти три области часто упоминаются как таблица данных (в ПЛК Allen Bradley) или база данных (в ПЛК ASEA/ABB).

Рис. 2.2. Прогон программы ПЛК и организация памяти: (а) действие ПЛК; (б) последовательность выполнения программы; (в) организация памяти ПЛК

Эта область памяти меньше, чем можно было подумать. ПЛК средних размеров имеет около 1000 входов и выходов. При запоминании этих сигналов отдельными битами это соответствует немногим более 60 ячейкам памяти в ПЛК с 16-битовым словом. Аналоговый сигнал, поступающий от объекта или посылаемый к объекту, будет занимать одно слово. Таймеры и счетчики будут использовать Два слова (одно для значения и одно для предварительной установки), а 16 бит внутренней памяти — всего одно слово. Большая часть памяти, следовательно, отводится под четвертую область, где хранится собственно программа.

Время прогона программы явным образом ограничивает скорость изменения сигнала, воспринимаемого ПЛК На рис. 2.3 (а) ПЛК ис-

Рис. 2.3. Влияние прогона программы на подсчет импульсов

пользуется для подсчета последовательности импульсов, причем частота следования импульсов меньше частоты прогона программы. Подсчет выполняется правильно. На рис. 2.3 (б) частота следования импульсов больше частоты прогона программы, и ПЛК начинает пропускать отдельные импульсы. В случае же, изображенном на рис. 2.3 (в), полностью игнорируются целые группы импульсов.

Рис. 2.4. Влияние прогона программы на время реакции: (а) лучший случай; (б) худший случай

В общем случае любой входной сигнал, который воспринимает ПЛК, должен иметь длительность больше, чем время прогона; более короткие сигналы могут быть считаны, только если они появляются в нужное время, но этого нельзя гарантировать. Если наблюдаются серии импульсов, то частота их следования должна быть меньше, чем 1 / (2 х период прогона). ПЛК с периодом прогона 40 мс теоретически способен отслеживать последовательность импульсов с частотой 1 / (2 х 0.04) = 12.5 Гц. На практике, однако, значительное влияние могут оказывать другие факторы, такие как наличие фильтров во входных платах, поэтому при оценке скорости изменения сигналов всегда следует соблюдать осторожность.

Менее очевиден факт, что при прогоне программы ПЛК иногда может появиться «сдвиг» между входным и выходным сигналами. На рис. 2.4 входной сигнал должен привести к «немедленному» появлению выходного. В лучшем случае, представленном на рис. 2.4 (о), входной сигнал поступает как раз в начале прогона, что приводит к появлению сигнала на выходе спустя один период прогона. На рис. 2.4 (б) входной сигнал поступает уже после того, как были опрошены все входы, поэтому один целый прогон будет пропущен, пока ПЛК «увидит» этот входной сигнал, и пройдет еще один прогон, прежде чем появится сигнал на выходе. Поэтому реакция ПЛК может занимать от одного до двух периодов прогона.

В большинстве практических приложений сдвиг в несколько десятков миллисекунд не является существенным (его, например, нельзя заметить в реакции объекта на нажатие пусковой кнопки). Однако если требуется быстродействие, этот сдвиг может быть критическим фактором. В типичном примере, с которым довелось столкнуться автору, материал, двигавшийся со скоростью 15 м/с, разрезали на куски с помощью автоматической системы с ПЛК, причем сигнал на ПЛК поступал от фотоэлемента. При времени прогона в 30 мс отклонение от требуемой длины отрезаемых кусков составляло 0,03 х 15 000 = 450 мм.

Производители ПЛК поставляют специальные платы (которые по праву можно было бы назвать небольшими процессорами) для работы в системах, где требуется высокое быстродействие. К этому вопросу мы вернемся в разделах "Замкнутая система управления" и "Специализированные управляющие процессоры".

Нежелательные задержки могут появиться, если структура программы ПЛК такова, что логика ее выполнения выстроена против направления прогона. При каждом прогоне выполнение программы начинается с первой инструкции, и все остальные инструкции выполняются последовательно до конца программы. Только после этого программа производит обновление выходов, переходит к чтению входов и выполняется еще раз.

На рис. 2.5 (а) вход вызывает изменение выхода, но прежде для этого должны быть выполнены пять шагов (это может быть, например, пошаговая работа счетчика или проверка некоторых заданных условий). Логика программы, однако, выстроена против направления прогона. При первом прогоне вход вызывает событие А. При следующем прогоне событие А вызывает событие Вит. д., пока после пяти прогонов событие D не приведет к изменению выхода. Если же структура программы имеет вид рис. 2.5 (б), то вся последовательность событий займет всего один прогон.

Недостаток схемы на рис. 2.5 (а) очевиден, но аналогичный эффект (задержка) часто может возникнуть и тогда, когда структура программы недостаточно продумана. С другой стороны, этот эффект можно использовать преднамеренно для формирования очень коротких импульсов (данная проблема обсуждается в разделе "Аварийная сигнализация").

Проблемы, связанные с временем прогона, могут стать еще более серьезными, если в системе используются удаленные стойки с последовательно опрашиваемыми входными/выходными платами. Связь с этими стойками осуществляется с помощью опрашивающего устройства, как показано на рис. 2.6, но работа этого устройства обычно не синхронизирована с прогоном программы. В этом случае, если, к примеру, время прогона равно 30 мс, а цикл работы опрашивающего устройства составляет 50 мс, наиболее быстрая реакция займет 30 мс, а наиболее медленная — 130 мс (при условии, что чтение входов пропускает начало опроса, а начало опроса пропускает прогон программы).

Рис. 2.5. Образование задержек при прогоне программы: (а) логика программы выстроена против направления прогона, от входа до выхода требуются пять прогонов; (б) логика программы совпадает с направлением прогона, от входа до выхода - только один прогон
Рис. 2.6. Взаимодействие циклов прогона программы и опроса входов/выходов

Производители ПЛК предлагают много способов, позволяющих уменьшить влияние времени прогона. Из них можно отметить настраиваемые быстродействующие входные/выходные платы (см. разделы Замкнутая система управления и Специализированные управляющие процессоры) и возможность разбиения программы на секции с различными временами прогона (например, для сигнальных ламп, возможно, будет достаточно времени реакции 0.5—1 с, тогда как другие части программы могут выполняться намного быстрее). Более подробно методы минимизации времени прогона программ ПЛК рассматриваются в разделе Сокращение времени прогона программы.