Управление на основе последовательного программирования
Попытаемся проанализировать следующую проблему: могут ли задачи управления в реальном времени решаться с помощью по- следовательного программирования. Блок-схема регулирования температуры представлена на рис. 101. Программа считывает тем- пературу пластика каждые 10 секунд, определяет необходимое время нагрева (переменная heat_time), включает нагреватель и за- тем переходит в цикл занятого ожидания (busy loop) обновления счетчика времени (переменная С), во время которого компьютер не может выполнять никакие другие операции. Очевидно, что это не самое эффективное использование компьютера.
Алгоритм управления перемещением поршня показан на рис. 102. Компьютер выдает команду начать движение вправо, за- тем непрерывно контролирует информацию от датчика конечного
положения до тех пор, пока не получит сигнал о том, что оно дос- тигнуто. Затем начинается обратное движение поршня влево, при этом компьютер должен в цикле занятого ожидания ждать очеред- ного импульса и суммировать их (счетчик импульсов обозначен n). Цикл считается завершенным при достижении заданного числа им- пульсов (переменная pulse_ref). Затем весь цикл повторяется сна- чала. Так же как и при регулировании температуры, компьютер не может выполнять других операций, пока он находится в цикле ожидания очередного импульса.
Рис. 101. Блок-схема алгоритма регулирования температуры пластика
Рис. 102. Блок-схема управления движением поршня пресса
Каждую из двух задач можно решить непосредственно с помо- щью последовательного кода. Но объединить их в одной програм- ме непросто. Циклы взаимного ожидания использовать нельзя, так как управляемый процесс не позволяет длительных задержек, а ис- полнение одной задачи не должно быть связано с другой. Можно
обойтись и без циклов ожидания, однако в этом случае программа будет все время переключаться между двумя задачами и проверять, какая задача должна исполняться следующей, станет громоздкой и сложной для анализа. Попытка последовательного расположения блоков инструкций, исполнение которых фактически должно быть параллельным, порождает взаимосвязи между практически незави- симыми функциями.
В любых цифровых устройствах непрерывность достигается за счет применения дискретных алгоритмов, повторяющихся через достаточно малые промежутки времени. Таким образом, вычисле- ния в ПЛК всегда повторяются циклически (рис. 103). Одна итера- ция, включающая замер, обсчет и выработку воздействия, называется рабочим циклом ПЛК. Выполняемые действия зависят от значения входов контроллера, предыдущего состояния и опре- деляются пользовательской программой.
Рис. 103. Цикл работы ПЛК
В самом начале цикла ПЛК производит физическое чтение вхо- дов. Считанные значения размещаются в области памяти входов. Таким образом создается полная одномоментная зеркальная копия значений входов. Далее выполняется код пользовательской про- граммы. Пользовательская программа работает с копией значений
входов и выходов, размещенной в оперативной памяти. Если при- кладная программа не загружена или остановлена, то данная фаза рабочего цикла не выполняется. Отладчик системы программиро- вания имеет доступ к образу входов/выходов, что позволяет управ- лять выходами вручную и проводить исследования работы датчиков. После выполнения пользовательского кода физические выходы ПЛК приводятся в соответствие с расчетными значениями. Пользовательская программа работает только с мгновенной ко- пией входов. Таким образом, значения входов в процессе выполне- ния пользовательской программы не изменяются в пределах одного рабочего цикла. Это фундаментальный принцип построения ПЛК сканирующего типа. Такой подход исключает неоднозначность ал-
горитма обработки данных в различных его ветвях.
Общая продолжительность рабочего цикла ПЛК называется временем сканирования. Время сканирования в значительной сте- пени определяется длительностью фазы кода пользовательской программы. Время, занимаемое прочими фазами рабочего цикла, практически является величиной постоянной. Для задачи среднего объема в ПЛК с системой исполнения CoDeSys время распределит- ся примерно так: 98 % – пользовательская программа, 2 % – все остальное.
Время реакции – это время с момента изменения состояния сис- темы до момента выработки соответствующей реакции. Очевидно, для ПЛК время реакции зависит от распределения моментов воз- никновения события и начала фазы чтения входов. Если изменение значений входов произошло непосредственно перед фазой чтения входов, то время реакции будет наименьшим и равным времени сканирования. Худший случай, когда изменение значений входов происходит сразу после фазы чтения входов. Тогда время реакции будет наибольшим, равным удвоенному времени сканирования ми- нус время одного чтения входов. Иными словами, время реакции ПЛК не превышает удвоенного времени сканирования.
Достарыңызбен бөлісу: |