Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

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

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

 

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

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

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

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

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

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

 

Последовательное программирование (sequential programming) является наиболее распространенным способом написания программ. Понятие «последовательное» подразумевает, что операторы программы выполняются в известной последовательности один за другим. Целью последовательной программы является преобразование входных данных. заданных в определенной форме, в выходные данные, имеющие другую форму, в соотвествии с некоторым алгоритмом – методом решения (рис. 10.1).

Таким образом, последовательная программа работает как фильтр для исходных данных. Ее результат и характеристики полностью определяются входными данными и алгоритмом их обработки, при этом временные показатели играют, как правило, второстепенную роль. На результат не влияют ни инструментальные (язык программирования), ни аппаратные (быстродействие ЦП) средства: от первых зависят усилия и время, затраченные на разработку и характеристики исполняемого кода, а от вторых – скорость выполнения программы, но в любом случае выходные данные будут одинаковыми.

Программирование в реальном времени (real-time programming) отличается от последовательного программирования – разработчик программы должен постоянно иметь в виду среду, в которой работает программа, будь то контроллер микроволновой печи или устройство управления манипулятором робота. В системах реального времени внешние сигналы, как правило, требуют немедленной реакции процессора.

В большинстве случаев применение обычных приемов последовательного программирования не позволяет построить систему реального времени. В таких системах независимые программные модули или задачи должны быть активными одновременно, т.е. работать параллельно, при этом каждая задача выполняет свои специфические функции. Такая техника известна под названием параллельного программирования (concurrent programming). В названии делается упор на взаимодействие между отдельными программными модулями. Параллеьное исполнение может осуществляться на одной или нескольких ЭВМ, связанных распределенной сетью. В этой главе будут рассмотрены принципиальные вопросы, относящиеся к обоим случаям.

 

<== предыдущая лекция | следующая лекция ==>
Пример – пресс для пластика | Программы, задачи, процессы, потоки
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 858; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.