Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Управление на основе последовательного программирования




Попытаемся проанализировать следующую проблему; могут ли задачи управ­ления в реальном времени решаться с помощью последовательного программиро­вания. Блок-схема регулирования температуры представлена на рис. 2.3. Про­грамма считывает температуру пластика каждые 10 секунд, определяет необходимое время нагрева (переменная heat_time), включает нагреватель и за­тем переходит в цикл занятого ожидания (busy loop) обновления счетчика време­ни (переменная С), во время которого компьютер не может выполнять никакие другие операции. Очевидно, что это не самое эффективное использование компь­ютера.

Алгоритм управления перемещением поршня показан на рис. 2.4. Компьютер вы­дает команду начать движение вправо, затем непрерывно контролирует информа­цию от датчика конечного положения до тех пор, пока не получит сигнал о том, что оно достигнуто. Затем начинается обратное движение поршня влево, при этом компьютер должен в цикле занятого ожидания ждать очередного импульса и суммиро­вать их (счетчик импульсов обозначен п). Цикл считается завершенным при дости­жении заданного числа импульсов (переменная pulse_ref). Затем весь цикл повторяется сначала. Так же как и при регулировании температуры, компьютер не может выполнять других операций, пока он находится в цикле ожидания очередного импульса.

 

 

Рис. 2.3. Блок-схема регулирования температуры пластика

Каждую из двух задач можно решить непосредственно с помощью последователь­ного кода. Но объединить их в одной программе непросто. Циклы взаимного ожида­ния использовать нельзя, так как управляемый процесс не позволяет длительных за­держек, а исполнение одной задачи не должно быть связано с другой. В принципе, можно обойтись и без циклов ожидания. Однако программа при этом будет все время переключаться между двумя задачами и проверять, какая задача должна исполнять­ся следующей, станет громоздкой и сложной для анализа. Попытка последователь­ного расположения блоков инструкций, исполнение которых фактически должно быть параллельным, порождает взаимосвязи между практически независимыми функциями.

 

 

 

 

 

 
 

2.1.3. Управление на основе прерываний

Главная сложность программы управления прессом — необходимость организа­ции переключения между задачами. На практике проблема решается с помощью двух независимых программ, выполняемых на одной машине: одна — регулирует температуру, а другая — управляет перемещением поршня.

 

Метод сигнализации, называемый прерыванием, используется для переключе­ния ЦП исполнения одной задачи на другую. С помощью прерываний циклы ожидания можно заменить на ожидание прерывания.

Фактически прерывание представляет собой внешний сигнал, извещающий Цц о наступлении некоторого события. События отслеживаются датчиками и застав­ляют ЦП прервать исполнение текущей программы и перейти к другой. Таким об­разом внешние сигналы могут влиять на исполнение того или иного программного модуля. Особый вид прерывания связан со временем. Электронный таймер выдает сигнал прерывания при наступлении определенного момента времени или по исте­чении некоторого интервала. Этот таймер не является частью ЦП, однако конст­руктивно располагается на той же плате. Он освобождает ЦП от необходимости контролировать время. Более подробно о прерываниях рассказано в разделе 10.6.

С использованием прерываний задача регулирования температуры решается про­ще. Прерывание по времени связано с переменной heat_time. После включения на­гревателя программа устанавливает таймер на величину времени нагрева (значение переменной heat time) и ждет сигнала прерывания для продолжения работы (инст­рукция wait_time(heat_time) на рис. 2.5.)

 

Рис. 2.5. Использование прерываний от таймера для регулирования температуры пластика

Аналогично, программа управления поршнем ожидает два прерывания: одно отдатчика крайнего правого положения, другое — от импульсного датчика, контро­лирующего перемещение поршня (рис. 2.6). Прерываниям соответствуют инструк­ции вида wait_interrupt(x), где х обозначает канал поступления сигнала прерыва­ния. Оператор wait_interrupt приостанавливает исполнение программы, которое возобновляется только при поступлении соответствующего сигнала внешнего пре­рывания.

Рис. 2.6. Использование прерываний для управления движением поршня пресса для пластика

 

 

Система прерываний обеспечивает переключение ЦП с исполнения одной про­граммы на другую как следствие внешних событий. В результате решение задачи уп­равления получается прозрачным и элегантным. Если каждый программный модуль является независимым, то добавить новые блоки к системе можно без нарушения су­ществующей структуры. Проблемы, связанные с многозадачностью и методами про­граммирования в реальном времени, обсуждаются в главе 10.


Поделиться:

Дата добавления: 2015-04-05; просмотров: 103; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты