Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.sao.ru/hq/vch/Publications/Russ/html/Diss/node35.html
Дата изменения: Unknown Дата индексирования: Sat Sep 11 21:41:08 2010 Кодировка: koi8-r Поисковые слова: п п п п п п п п п п п п п п п п |
Ядро состоит из трех программных секций, размещаемых в ОЗУ контроллерной ЭВМ в перечисленном порядке:
При таком расположении программных секций загружаемая часть ядра размещается в начальных адресах и занимает менее 5% объема оперативной памяти, так что функция загрузки - IFDRL выполняется за доли секунды.
Алгоритмы функционирования основных модулей ядра изображены на рис. .
Таким образом, можно считать, что в контроллере параллельно существуют три процесса (рис. ):
Код | Имя | Что делает |
команды | модуля | |
@ | AGAIN | Включает питание привода каретки. |
а | DONE | Завершает текущий процесс и выключает питание привода. |
б | ACSLR | Осуществляет пуск и ускоренное движение вправо. |
ц | ACSLF | То же, влево. |
д | VELR | Осуществляет пуск и движение по расчитанной траектории. |
е | POINS | Осуществляет установку каретки в заданную точку. |
ф | FINAL | Выключает все внешние устройства, останавливает процессор. |
г | INPUT | Осуществляет ввод таблицы параметров и рассчитывает начало |
траектории. |
Процесс RES запрещает прерывания от входного порта, сохраняет в стеке необходимые регистры оперативного назначения (РОН) и регистр состояния крейт-контроллера, затем читает содержимое порта и использует его как указатель в таблице процедур (команд), одну из которых вызывает. Завершается RES восстановлением данных в обратном порядке и установкой бита разрешения прерывания.
RES может вызывать ряд процедур, оформленных в виде компактных модулей. Функции этих модулей перечислены в табл. .
Необходимость строгой синхронизации выполняемых процедур реального времени требует такой организации порядка их вызова, при котором в случае приема команды указанная процедура выполняется не как переход в подпрограмму, т.е. немедленно, а планируется на момент прихода импульса от таймера. В операционных системах, выполняющих множество асинхронных задач по обслуживанию нескольких внешних устройств, планирование обычно заключается в записи имени указанного процесса в очередь процессов согласно приоритету, обусловленному срочностью выполняемой задачи. В данном случае, поскольку объект управления всего один, планировщик является вырожденным и содержит всего один элемент очереди - ячейку памяти MODE, куда помещается имя (адрес точки входа) планируемой процедуры.
Процесс CLOCK начинает функционировать сразу, как только CONTR оформит стек
и снизит приоритет процессора. Структура подпрограммы, реализующей этот процесс,
состоит из основного модуля и нескольких ветвей, планируемых процедурами из RES
или внешними событиями. Основной модуль имеет точку входа CLOCK, указываемую
вектором обработки прерываний от таймера и завершается инструкцией RTI.
Внутри, как и в RES, производится сохранение регистров и состояния КАМАК и
вызывается процедура, на которую указывает содержимое ячейки MODE.
То есть любая из процедур может записать в MODE имя желаемой операции,
которая прервет на следующем такте любую другую (в том числе и себя) и
гарантированно будет выполняться в течение 10 мс. Аналогичную роль выполняет
содержимое ячейки - BMODE, являющееся указателем процедуры, выполняемой при
срабатывании датчика начального положения каретки.
Имя | Вызывает | Меняет | Что делает |
модуля | модули | MODE | |
DMEAS | По BMODE | - | Формирует импульсы опроса датчика и считывает код угла поворота, по сигналу концевого выключателя вызывает процедуру, указываемую BMODE. |
TIMZER | DMEAS | - | Формирует код величины рассогласования между текущим отсчетом датчика и нулем, при многократном вызове позволяет устанавливать каретку в нулевое положение. |
POINT | DRIVER | + | То же, для произвольной точки. |
FONDLY | DRIVER | + | Формирует задержку движения для регистрации фонового уровня неба. |
MEASU | DRIVER | + | Отрабатывает текущее значение координаты, задаваемой массивом TRACK, по достижении границы массива устанавливает флаг перерасчета траектории. |
DRIVER | DMEAS | - | Измеряет величину рассогласования заданной и действительной траекторий, рассчитывает величину управляющего воздействия на ЦАП. |
RETRN | - | Пустая операция. |