книги / Микропроцессорное управление технологическими процессами в радиоэлектронике
..pdfпрограммирования. Даже с учетом разработки части ПО на языках высокого уровня (PL/М, Паскаль) затраты на создание индивидуальных программ очень высокие. Для уменьшения этих затрат, повышения эффективности разрабатываемой системы и снижения стоимости ПО целесообразно организовать работу контроллера под управлением исполнительной ОС, которая будет неотъемлемой частью контроллера не зависимо от его конкретного применения. Индиви дуальное программирование, т. е. настройка контрол лера па оборудование, заключается в разработке нескольких прикладных программных модулей, привя занных с конкретному оборудованию. Выполнение этих программных модулей происходит под управле нием исполнительной ОС.
Исполнительная операционная система реального времени RMX/80. События, на которые должна реа гировать СРВ, могут возникать в непредсказуемое время и в непредсказуемой последовательности. Си стема, которая реагирует на такие события, работает асинхронно. Асинхронные операции требуют синхро низации функций системы с конкретными событиями, а не с внутренними функциями. Таким образом, одно событие (внешнее по отношению к системе) вызывает появление другого, связанного с исполнением функ ции обработки. Тем не менее необходимо отметить, что для системы, работающей асинхронно, может по требоваться функция отсчета времени, которая, в свою очередь, требует наличия внутренней синхрони зации.
В СРВ в любой момент времени в рабочем состоя нии находятся несколько операций, если имеется только один процессор как в системах, работающих под управлением RMX/80. В действительности, в каждый момент времени может выполняться только одна операция. Однако вовсе не обязательно, чтобы
21 1
эта операция завершилась прежде, чем управление получит более быстрая или более важная операция! скорость процессора позволяет исполнять параллель ные операции псевдоодновремеино. Разработчик си стемы СРВ должен выделить функции, которые мож но выполнить параллельно. Они называются задача ми. Разработчик предъявляет эти задачи ядру RMX/80, которое и управляет их работой.
Когда несколько задач являются претендентами на исполнение, СРВ определяет, какая из них пойдет первой, т. е. какая задача имеет максимальный прио ритет. Для этого разработчик системы должен на значить каждой задаче уровень приоритета. Система RMX/80 обеспечивает 256 программных приоритетов для задач. Задачи, связанные с критическими усло виями, должны иметь больший приоритет, чем обыч ные: задачи, которые выполняются быстро или тре буют незамедлительного ответа, обладают более вы соким приоритетом, чем медленные и менее срочные задачи; наконец, задачи, которые обслуживают пре рывания от периферийных устройств, должны обыч но иметь больший приоритет, чем другие задачи обра ботки.
В любой момент времени работающая задача (т. е. задача, которая управляет процессором) — это зада ча, имеющая максимальный приоритет и готовая к работе. Данная задача продолжает работать до тех пор, пока она сама не освободит процессор или не будет прервана новой задачей, ставшей готовой и имеющей более высокий приоритет. Когда такая си туация возникает, система должна сохранить всю необходимую информацию о прерываемой задаче, чтобы задача могла возобновить свою работу, как если бы никакого прерывания не было.
Другим требованием к СРВ является наличие свя зей между задачами. Одна задача может запустить
112
другую или передать ей некоторую информацию. Для этих целей в RMX/80 используется механизм «сообщение — обменник». Сообщение — это группа данных, которые одна задача посылает другой. Обмен ник — структура, где RMX/80 хранит элемент списка задач, ожидающих сообщений, или элемент сообще нии, которые ждут приема.
Для того чтобы избежать потерь времени на пере дачу всего сообщения в обменник, RMX/80 посылает только адрес сообщения. Когда сообщение поступает в обменник, где есть ожидающие задачи, оно ставит ся в соответствие первой ожидающей задаче в списке, и эта задача удаляется из списка. Точно также, ко гда задача поступает в обменник, где ожидают сооб щения, она ставится в соответствие первому ожидаю щему сообщению, и это сообщение удаляется из спис ка. Таким • образом, связь «задача — сообщение» организована по принципу «первым пришел — первым обслужен». Когда задача и сообщение ставятся в соответствие друг другу, задача становится готовой к выполнению.
Как было указано выше, задачи и сообщения не мо гут находиться в обменнике одновременно. Также отметим, что задача не может находиться в ожидании более чем в одном обменнике одновременно, и сообще ние в каждый момент времени может быть послано лишь в один обменник. Это связано с методом, кото рым задачи и сообщения запоминаются в обменниках. Для использования с аппаратными уровнями преры ваний зарезервирован специальный набор обменников прерываний. Они отличаются от других обменников некоторыми деталями.
Задача может находиться в одном из двух состоя ний: работающем и ожидающем. В дополнение к этим состояниям, задача может быть готовой или приоста новленной. Работающей называется задача, которая
2 1 8
в данный момент выполняется на процессоре. Ожи дающая задача — это задача, которая ждет в обмен нике сообщения. Готовой называется задача, которая готова к работе. Всякие ожидания сообщений или вре менных интервалов для такой задачи удовлетворены. Приостановленная задача — это задача, которая име ется в системе, но временно исключена из соревнова ния за ресурсы системы. Подобная ситуация часто встречается при проверке и отладке. Приостановка некоторых задач упрощает СРВ. Например, задача инициализации может приостановить себя, когда она выполнит все свои функции.
Система RMX/80 содержит ряд управляющих структур (списков), которые несут информацию обо всех задачах, находящихся в системе. Рассмотрим кратко эти списки.
Список готовых — это список всех ^готовых задач в системе.
Список задержанных — это список всех задач, ожидающих завершения временных интервалов (ожи дание может быть по времени или безусловным).
Список приостановленных — это список всех при остановленных задач.
Задачи всегда вносятся в список готовых в порядке приоритета. Работающая задача — это задача макси мального приоритета в списке готовых. Если несколь ко задач имеют одинаковый приоритет, они вносятся в список готовых в порядке «первым пришел — пер вым обслужен». Задачи поступают в список готовых по любой из трех причин: 1) задача готова с исполне нию, когда она впервые создана; задачи создаются во время инициализации системы или другими зада чами во время исполнения; 2) задача стала готовой, когда условие, которого она ожидала, удовлетвори лось; задача может ожидать сообщения в обменнике или ждать завершения некоторого временного интер
214
вала или обоих этих событий; 3) приостановленная задача становится готовой, когда ей снова разрешается борьба за системные ресурсы; в этом случае она пере носится из списка приостановленных в список гото вых.
Задача добавляется в список задержанных, когда она запрашивает ожидание по времени. Задачи зано сятся в список задержанных в порядке возрастания времени, оставшегося до удовлетворения запроса по времени. Первая задача в списке имеет минимальное оставшееся время. Задача исключается из списка за держанных, когда заканчивается ожидаемый времен ной интервал, или в обменник, в котором задача ждет, поступило сообщение.
Задача добавляется в список приостановленных, если на это имеется указание в другой задаче или в ней самой. Если указывается — приостановить ожидаю щую задачу, то RMX/80, прежде чем перенести ее в список приостановленных, ждет, когда эта задача станет готовой. Задача из списка приостановленных переносится в список готовых, когда указывается на ее возобновление.
Программирование в ОС РВ RMX/80. Для выпол нения системных действий RMX/80 содержит ряд управляющих структур. Наиболее важные из этих структур следующие: описатель задачи, описатель обменников, описатель обменника прерываний, заго ловок сообщения, стек задачи. Прикладной програм мист должен знать эти структуры, так как он должен инициализировать некоторые из них и время от време ни обращаться к ним.
Описатель задачи — это управляющая структура, которая определяет задачу в системе. Он содержит приоритет, состояние задачи и указывает адрес стека задачи. RMX/80 строит описатель задачи в памяти пользователя по информации, которая задается на
215
этапе конфигурации прикладной системы, или когда задача создается другой работающей задачей.
Описатель обменника является физическим вопло щением обменника в системе. Он позволяет RMX/80 отслеживать задачи, ждущие в обменнике, или сооб щения, находящиеся в обменнике. Он содержит ука затели на список задач и список сообщений. Когда сообщение поступает в обменник или задача посту пает на ожидание в обменник, или задача получает сообщение, RMX/80 изменяет эти списки, RMX/80 ставит задачи и сообщения в соответствие друг другу по принципу «первым пришел — первым обслужен». Если, например, в обменнике хранятся три сообщения] первая задача, которая обращается в обменник, получает первое сообщение из списка, и это сообще ние удаляется из обменника. В следующий раз эта задача (или другая, которая обращается в обменник) получит второе сообщение из списка и т. д.
Описатель обменника прерываний — это специаль ный тип описателя обменника, предназначенный для превращения аппаратных прерываний в сообщения. Для каждого уровня прерываний, используемого в прикладной системе, определен отдельный обменник. Описатель обменника прерываний на 5 байт длиннее других описателей обменников. Последние 5 байт являются сообщением, которое посылается в этот обменник прерываний, когда возникает прерывание по данному уровню.
RMX/80 создает описатели обменников и описате ли обменников прерываний в ОЗУ пользователя по данным, представленным программистом на этапе конфигурации системы, или когда работающая про грамма запрашивает создание обменников.
Каждое сообщение начинается с поля управляю щей информации в 5 или 9 байт, которая называется заголовком сообщения. Заголовок содержит указа-
216
тель, используемый для объединения сообщения в списки, индикаторы типа и длины и (дополнительно) некоторые адреса обменников, связанных с данным сообщением. Задача строит сообщения в некоторой области ОЗУ, которая может принадлежать задаче, или задача может запросить ее у программы управле ния свободной памятью. Последнее особенно полезно, когда задачи посылают сообщения переменной длины. Сообщение может иметь любую длину, если для него есть место в ОЗУ.
Каждая задача имеет свой стек, где RMX/80 может сохранять состояние регистров в момент прерывания. Когда задача вновь станет работающей, RMX/80 вос станавливает регистры из стека и выполнение задачи продолжается с команды, следующей за той, после которой произошло прерывание. Во время работы за дача может запоминать данные в своем стеке для своих собственных целей. Эти данные не искажаются RMX/80 во время запоминания и восстановления регистров, если указатель стека изменяется программистом над лежащим образом, однако программист должен от вести достаточно места под стек для этих данных и для адресов возврата в подпрограммы.
Структура ПО контроллера состоит из двух час тей: общего ПО, включающего исполнительную ОС, и специального ПО, состоящего из программ, завися щих от конкретного применения. Специальное ПО разрабатывается в соответствии с инструкцией по определенным правилам. На рис. 26 показана струк тура ПО программируемого логического контроллера.
Исполнительная операционная система (ИОС) контроллера содержит ряд обрабатывающих программ. Рассмотрим более подробно назначение каждой про граммы.
Восемь модулей составляют группу программ вво да-вывода: обработка прерываний от клавиатуры
выполняется по прерыванию ввод кода нажатой кла виши и посылает сообщение задаче обслуживания кла виатуры; обслуживание клавиатуры определяет наз начение нажатой клавиши и формирует соответствую щее сообщение для управляющей задачи или драйвера НМЛК; обслуживание экрана обеспечивает вывод на
Рис. 26. Структура ПО программируемого логического контрол лера
экран дисплея типа «Электроника» любой информа ции, предназначенной для оператора и представлен ной в стандартном 7-битовом символьном коде с воз можностью инвертирования; с помощью 8-го бита обеспечивает изменение цвета отображаемого симво ла (темный символ на светлом фоне или светлый сим вол на темном фоне); буфер символьной информации
218
имеет 8 страниц по 280 символов (14 х 20); драйвер ИРПС — задача обслуживания интерфейса радиаль ного последовательного; драйвер ИРПР обслуживает интерфейс радиальный параллельный; драйвер НМЛК обеспечивает чтение информации с кассетного накопи теля на магнитных лентах; драйвер ввода-вывода дискретной информации обслуживает модули дискрет ного ввода-вывода; драйвер ввода-вывода аналоговой информации обслуживает модули аналогового вводавывода.
Общее количество модулей ввода-вывода не должно превышать 16. Соотношение аналоговых и дискретных модулей зависит от конкретного применения контрол лера.
Всостав микропроцессорной системы входит про граммируемый контроллер прерываний, обеспечиваю щий восемь уровней прерывания от внешних устройств. Обслуживается этот контроллер ядром RMX/80.
Всостав ИОС включена задача отработки времен ных интервалов, которая предоставляет пользовате лю дополнительную возможность получения заданной метки времени без ожидания в обменнике. Эта зада ча удобна для организации временного контроля отра ботки технологического процесса. Общее ПО контрол лера включает тестовую программу, предназначенную для проверки ОЗУ системы.
Специальное ПО (СПО) контроллера разрабаты вается с учетом конкретного оборудования, для управ ления которым применяется система. В состав СПО входят задачи обслуживания объекта управления; управляющая задача, реализующая основной алго ритм функционирования системы в каждом конкрет ном применении, и конфигурационный модуль, а
также четыре задачи, реализующие непосредственное управление линией: управление автооператором
219
(АО), обработка прерываний от датчиков, чтение сиг налов от датчиков и управление параметрами техно логического процесса. Конфигурационный модуль со держит описание всех задач и обменников, входящих в состав ИОС. Описания задач и обменников общего ПО являются основной, неизменной частью любого конфигурационного модуля для данной системы уп равления. Описания прикладных задач и исполь зуемых ими обменников составляют изменяющуюся часть модуля, которая зависит от конкретного приме нения. Конфигурационный модуль предназначен для генерации ИОС, ориентированной на конкретное обо рудование и алгоритм функционирования контролле ра. Этот модуль используется на стадии подготовки ПО и не является задачей ИОС.
5.7.УСТРОЙСТВА ВВОДА-ВЫВОДА
Устройства ввода-вывода служат для связи микропро цессора с периферийными устройствами. Для их реа лизации используют компоненты общего назначе ния: буферные регистры, шинные формирователи, системные контроллеры, программируемые таймеры, параллельные и последовательные интерфейсы, моду ли обработки прерываний. Рассмотрим основные схе мы, принципы функционирования и организацию управления наиболее распространенных устройств ввода-вывода.
Многорежимный буферный регистр К589ИР12 (МБР) с формированием запросов прерываний ис пользуется для организации мультиплексоров, схем фиксаторов, стробируемых буферов, двунаправленных магистралей. Схема К589ИР12 (рис. 27) состоит из 8-битового параллельного регистра на основе D-триг геров с трехстабильными схемами И на выходах. МБР имеет встроенную логическую схему для
220