1.4 Основная Программная Архитектура OCAAS дизайн берет полное преимущество UNIX архитектуры. Это использует длинное выполнение daemon Процессы, чтобы управлять драйверами низкого уровня, которые связываются с фактическими аппаратными средствами. Они daemons обращаются, используя простые текстовые команды через fifos (также известный как названный каналами). Команды, которые текут по этим подключениям - высокий уровень и позволяют daemons скрывать все Аппаратные зависимости. Эти fifos используется Графическим Интерфейсом пользователя, GUI, процессы к Предложите управление в реальном масштабе времени системой и пакетом, намечающим процессы, чтобы управлять системой Без прямого пользовательского вмешательства. Весь daemons хранит их текущее состояние в общем{*обычном*} общедоступном Сегмент памяти, который процессы могут использовать, чтобы эффективно учиться о текущем государстве{*состоянии*} системы и Действие. 1.4.1 Потоковая диаграмма Следует - диаграмма который резюме типичный поток данных через систему. Обратитесь{*отнеситесь*} к диаграмме В течение обсуждения, которое следует. Эта диаграмма типична, и некоторые системы построены слегка По-другому. Эта гибкость - существенная особенность этого дизайна. 1.4.2 Драйвер Устройства Начинаясь справа от диаграммы, аппаратные средства управляются, используя три драйвера. Два из Эти драйверы, pc39.o и apogee.o - часть OCAAS системы. Они - фактически Linux Загружаемые драйверы и установлены когда системные начальные загрузки от/etc/rc.d/rc.local. 1.4.2.1 PC39 stepper двигатели управляются через модуль драйвера для OMS PC39 интеллектуальный двигатель Контроллер. Этот драйвер обеспечивает синхронизированный доступ к на основе сообщения контроллеру от Многопользовательские процессы. Драйвер поддерживает открытый, писать, выбирать, ioctl, и близкий файл Операции. Специальный файл, чтобы обратиться к драйверу - $TELHOME/dev/pc39. Сам модуль Pc39.o в том же самом каталоге. В конфигурации, изображенной в диаграмме, одном процессе, telescoped, использует PC39, чтобы управлять двигателями, домой и предел включит телескоп Крепление, двигатель центра и поле rotator. Другой процесс, куполообразный, использует PC39, чтобы работать Устройства, связанные с куполом и затвором. 1.4.2.2 Камера CCD камера управляется через второй модуль драйвера. Этот драйвер обеспечивает униформу Интерфейс для всех марок CCD камер. Функции включают: . Установка параметров экспозиции . Чтение более прохладной температуры и состояния . Установка целевой более прохладной температуры . Инициализизация экспозиции . Выбор блокированного или голосующего уведомления о завершении экспозиции . Чтение пикселей от камеры . Прерывание выполнения экспозиции прежде, чем это завершает Параметры Экспозиции включают, должен ли затвор быть открыт, расположение Подрамки{*подфрейма*}, Горизонтальный и вертикальный пиксель binning коэффициенты{*факторы*}, и продолжительность экспозиции в секундах. Драйвер Поддерживает открытый, читать, выбирать, ioctl, и близкие операции файла. Так как этот интерфейс родовой Поперек всех камер, поддержанных OCAAS, прикладные программы используют символическую связь{*ссылку*}, $TELHOME/dev/ccdcamera, чтобы обратиться к камере. Эта связь{*ссылка*} указывает на специальный файл Драйвер камеры, фактически установленный. В конфигурации, изображенной в диаграмме, драйвер - тот Который использует все модели камеры от Приборов Апогея. Этот драйвер имеет специальный файл Названным $TELHOME/dev/apogee. Сам модуль - apogee.o в том же самом каталоге. 1.4.2.3 Последовательный порт Третий драйвер не действительно часть OCAAS, но - часть Linux распределения, чтобы обратиться К RS232 Последовательные порты. Эти порты используются, чтобы подключить с различными внешними устройствами такую sa погодную станцию, GPS получатель и вспомогательные температурные датчики. Если компьютер не имеет достаточного RS232 Доступные порты, многоходовая последовательная плата может использоваться. Мы можем сообщать о превосходных результатах, использующих Жеребец EasyIO 4 порта многоходовая доска{*правление*} и их версия 5.3.3 драйвера. 1.4.3 daemon процессы UNIX традиционно использует срок{*термин*} daemon, чтобы обратиться{*отнестись*} к процессам, которые являются runnable все время Приложение активно на системе и которые не имеют никакого прямого интерфейса пользователя. Такой имеет место для Все процессы, описанные в этом разделе. OCAAS daemons может быть начат от стандарта Linux системный файл запуска/etc/rc.d/rc.local, который выполняет сценарий $TELHOME/archive/config/boot. Этот сценарий в свою очередь берет команды от boot.cfg, который изменяется в сайт в зависимости от точного Конфигурация и была ли система конфигурирована, чтобы быть полностью автономной или иметь a Интерфейс пользователя в реальном масштабе времени. Каждый daemon слушает для относительно команд высокого уровня и ответов проблем{*выпусков*}, назад использующих несколько Пары fifos (также известный как названный каналами) для связи межпроцесса. Весь fifos постоянно находится в $TELHOME/comm. fifo называет конец с .in, когда они читаются daemon, и концом С .out когда написались daemon. Также в каталоге связи - файлы блокировки, содержащие pid каждого daemon и обеспечивая, чтобы только один случай каждого daemon выполнился в одно время. Весь fifo трафик - форма текста ASCII. Это очень удобно для испытания, потому что команды могут быть Посланным и полученные использующие простые UNIX инструментальные средства типа ECHO и кота. daemons конвертирует{*преобразовывает*} команды высокого уровня в системно-определенные команды на подходящее устройство Драйверы, чтобы выполнить команду. Когда команды закончены, или если ошибки происходят, они Выпустите ответ назад через эти fifos. Таким образом, fifo сообщения к OCAAS daemons - всегда Инициализированный процессом клиента, который всегда получает ответ. daemons никогда не инициализирует Связь к другим процессам через fifos. В этом смысле, daemons может также относиться К как процессы сервера. Обратите внимание, что процессы, использующие fifos не знают архитектуру daemons. Там может Будьте один daemon, обрабатывающий каждый fifo, одна обработка все или любая другая комбинация. Это позволяет Выполнение, чтобы воспользоваться преимуществом определенной операционной системы и аппаратных особенностей без Процессы приложения осуществления. Это также позволяет сайтам быть конфигурированным, создавая daemons определенно согласованный к, скажем, существующий контроллер купола, только понижаясь в новом daemon (и возможно новые аппаратные драйверы). Все fifo ответы находятся в ASCII и следуют за тем же самым форматом: целое число, одно место{*космос*}, затем краткий Английское описание. Целое число 0 всегда указывает успех. Отрицательные значения указывают отказ{*неудачу*}. Положительные значения используются для промежуточных докладов о достигнутых результатах. Они и весь последующий fifo трафик Детали подчиненны, чтобы измениться. Войдите в контакт С CSI для самого последнего детальный список. 1.4.3.1 telescoped telescoped daemon обычно ответствен за операцию осей крепления, поле rotator, focuser, и колесо фильтра. Чтобы исполнять эти режимы работы, это использует pc39 драйвер. Основная установка Параметры для telescoped содержатся в файле конфигурации telescoped.cfg расположенный в $TELHOME/archive/config. В том же самом каталоге - файлы конфигурации чтобы установить фильтр, filter.cfg, и центр, focus.cfg. Только один случай telescoped может выполняться одновременно, так это Оставляет файл блокировки в $TELHOME/comm, названном telescoped.pid, который также содержит идентификатор процесса Из daemon. Если файл $TELHOME/archive/config/telescoped.mesh существует, telescoped будет использовать это, чтобы совершенствовать Указание точности. См. программу командной строки pterrors для получения дополнительной информации. Следующая таблица суммирует синтаксис связи к и от telescoped на Каждый канал. Канал Название{*имя*} Входное Описание Синтаксиса Убивал Alt: Az: < rads E N > убивал к данному Alt/Az и останов Убивал ХА: декабрь: убивал к данному ХА/ДЕКАБРЬ и останов Канал Название{*имя*} Входное Описание Синтаксиса (cont). Дорожка{*фонограмма*} RA: декабрь: убивал к данному очевидный (EOD0 RA/Dec и Дорожка{*фонограмма*} Дорожка{*фонограмма*} RA: декабрь: Эпоха: убивал к данному astrometric RA/Dec/Epoch И дорожка{*фонограмма*} Дорожка{*фонограмма*} < xephem формат входа базы данных > убивала к описанному объекту{*цели*} и дорожке{*фонограмме*} Ctrl Останов останавливает все движение немедленно Ctrl Сброс останавливает все движение, и перечитывает все файлы конфигурации Ctrl Домой ищет все домашние выключатели Ctrl Пределы ищет все выключатели предела и отчеты{*рекорды*} Их кодирующее устройство оценивает в home.cfg Центр < движение, микроны > перемещение сосредотачивает двигатель данный подписанный Расстояние; масштаб установлен в focus.cfg Фильтр <Название{*<имя>*} вращается, чтобы центрировать названный фильтр, как Описанный в filter.cfg Зажигает{*освещает*} интенсивность, 0 через MAXFLINT., используемый для Квартиры купола. 1.4.3.2 куполообразный Куполообразный daemon ответствен за операцию купола. Чтобы исполнять эти режимы работы, это использует Pc39 драйвер. Основные параметры установки для куполообразного содержатся в файле конфигурации domed.cfg Расположенный в $TELHOME/archive/config. Только один случай куполообразных может выполняться одновременно, так это Оставляет файл блокировки в $TELHOME/comm, названном domed.pid, который также содержит идентификатор процесса daemon. Следующая таблица суммирует синтаксис связи к и от куполообразного на каждом Канал Канал Название{*имя*} Входное Описание Синтаксиса Купол Az: < rads E N > вращаются к данному азимуту и останову Купол Авто поддерживает{*обслуживает*} разрез с телескопом без дальнейших команд Останов Купола останавливает все движение немедленно Затвор Открытый открытый затвор (купол набора az в случае необходимости) или крыша Затвор Близко закрывает затвор (купол набора az в случае необходимости) или крыша Останов Затвора останавливает все движение немедленно 1.4.3.3 camerad camerad daemon ответствен за пакетную операцию камеры. (Камера используется В интерактивном режиме при использовании программы Camera) Чтобы связаться с драйвером камеры это использует Символическая связь{*ссылка*} $TELHOME/dev/ccdcamera. Это возможно потому что весь CCD драйвер камеры Модули в пределах OCAAS твердо придерживаются того же самого интерфейса. В конфигурации, описанной в Диаграмма, это - связь{*ссылка*} к драйверу Апогея, апогею. Только один случай camerad может быть При выполнении одновременно, так что это оставляет файл блокировки в $TELHOME/comm, названном camerad.pid который также Содержит идентификатор процесса daemon. Основные параметры установки для camerad содержатся в Файл конфигурации camera.cfg (не обратите внимание ни на какой d) расположенный в $TELHOME/archive/config. Следующая таблица суммирует синтаксис связи к и от camerad на каждом Канал. В отличие от других каналов, есть два ответа от одной команды Expose до Канал Камеры. Первый ответ указывает, что экспозиция закончена, и затвор имеет Закрытый; второй ответ указывает, что пиксели читались, и камера свободна{*бесплатная*} к Берите другое изображение. Эта особенность позволяет телескопу начинать вращение следующему адресату как скоро Как завершения затвора камеры. Канал Название{*имя*} Ввод Синтаксис Код Ответа Описания Камера Выставляет{*подвергает*}... Начните экспозицию 0 законченных Экспозиций Законченная загрузка На 1 пиксель 3 ошибки установки Камеры 4 ошибки Считывания Останов Камеры не прерывает текущую экспозицию, если любой 2 Прерванный (даже если ни один в продвижении{*прогрессе*}) 1.4.3.4 gpsd gpsd daemon ответствен за непрерывную операцию GPS получателя. Связываться С получателем это использует tty, указанный в gpsd.cfg. Только один случай gpsd может выполняться в Время, так, это оставляет файл блокировки в $TELHOME/comm, названном gpsd.pid, который также содержит Идентификатор процесса daemon. gpsd daemon имеет две роли. На системном запуске, это ждет, чтобы получить блокировку от получателя. Тогда это читает географическое расположение и сравнивает это с этим в файле конфигурации telsched.cfg. (Этот файл, подобно всем файлам конфигурации, постоянно находится в $TELHOME/archive/config.) Если Расположение отличается к больше чем одной секунде дуги, это обновляет{*модифицирует*} значения, добавляя в конец их к файлу. Также на системном запуске, это читает текущее время от получателя и устанавливает часы Linux Немедленно к этому времени, использующему settimeofday () системный вызов. Вторая роль должна поддержать{*обслужить*} системное время на продолжающемся основании. gpsd добирается текущее время от Получатель приблизительно однажды в минуту. Если это отличается от часов Linux, это обновляет{*модифицирует*} часы Использование adjtime () системный вызов. Этот системный вызов резко не изменяет{*заменяет*} время. Скорее, это Причиняет маленькое увеличение или уменьшение к норме{*разряду*} часов flywheel способом, пока время не правильно И затем возвращается к нормальной норме{*разряду*}. Таким образом, это корректирует время и все же поддерживает{*обслуживает*} инвариант То время всегда увеличивает monotonically. Обратите внимание, что ни один из этих системных вызовов не изменяет{*заменяет*} аппаратные средства (CMOS) часы. OCAAS не делает Установите аппаратные часы. Это может быть установлено вручную, корнем, используя команду/sbin/hwclock. Даже при том, что gpsd - не suid - корень, это имеет разрешение изменить{*заменить*} время, потому что это выполнено от Linux запуск пишет сценарий/etc/rc.d/rc.local. 1.4.3.5 wxd wxd daemon ответствен за непрерывную операцию погоды 2000 Пита Броса Ултиметера Станция. Чтобы связываться со станцией, это использует tty, указанный в wxd.cfg файле конфигурации. Только один случай wxd может выполняться одновременно, так что это оставляет файл блокировки в $TELHOME/comm Названным wxd.pid, который также содержит идентификатор процесса daemon. wxd daemon инициализирует последовательный канал и устанавливает 2000 Ултиметера, чтобы сообщить о всем потоке Статистика однажды в секунду. Это сравнивает каждое новое значение с его старым значением от предыдущего Секунда. Если любые изменения{*замены*} значения больше чем количества с перестраиваемой конфигурацией это пишут новый отчет{*рекорд*} Погодная статистика данных к файлу. Это также поддерживает{*обслуживает*} текущую погодную статистику в области{*регионе*} Общедоступная память и отчеты{*рекорды*}, о которых время отпечатывает в общедоступной памяти, когда данные были последние{*прошлые*} сохранены. В Этим путем, процессы, которые желают использовать погодные данные, могут решать, является ли данные несвежими ( Должен wxd daemon прекращать функционировать по любой причине). wxd файл конфигурации - wxd.cfg, расположенный в $TELHOME/archive/config. Каждая новая погода Отчет{*рекорд*} статистики добавлен в конец к файлу, названному wx.log расположенный в $TELHOME/archive/logs. Это Файл повторно открыт, и создан в случае необходимости, для добавляют в конец каждый раз новый отчет{*рекорд*}, добавлен. Таким образом, это Прекрасный перемещать этот файл из под wxd для архивных целей. Формат этого файла - ASCII Текст, один отчет{*рекорд*} в линию. Каждая линия - устанавливаемая-ширина со следующим форматом: (общее количество дождя сброшено Однажды каждые 24 часа, хотя ни в какое специфическое время дня) Модули Столбцов Роли Юлианская Дата 1-13 днями начиная с Гринвича в полдень 1 января, 4713 BC, %13.5f Быстродействие Перемотки 15-17 КМ\ЧАС, %3d Руководство{*направление*} Перемотки 19-21 Степень E N, 3-ий % Температура 23-27 степеней C, %5.1f Влажность 29-31 процент (0.. 100), %3d Давление 33-38 millibars, %6.1f Дождь 40-44 мм начиная с последнего{*прошлого*} сброса, %5.1f Погодное предупреждение закодирует 46-50, см. ниже, %5s Aux temp датчик 1 52-57 степеней C, %6.2f (-99.99 при отсутствующем) Aux temp датчик 2 59-64 степени C, %6.2f (") Aux temp датчик 3 66-71 степень C, %6.2f (") Погодный аварийный столбец состоит из точно 5 символов. Каждая символьная позиция может быть a Код, если активный или дефис (-). Возможные коды, в порядке: T temp выше чем MAXT C temp более низок чем МЯТА H Влажность Ос выше чем MAXH W быстродействие Перемотки выше чем MAXWS R Дождь увеличился (любое количество) 1.4.4 Структура Каталога Вся часть файлов OCAAS сохранена, начинаясь в каталоге, названном системной переменной $TELHOME. Это -/usr/local/telescope по умолчанию. Следует - резюме основных каталогов Под этим началом. $TELHOME/Роль archive/calib уклон{*предубеждение*}, тепловые и плоские файлы калибровки камеры Файлы базы данных архива/каталогов, включая *.edb, ppm.xe, gsc Архив/конфигурация все файлы калибровки, типа telsched.cfg, и т.д Архив/изображения выбрал изображения, предназначенные для архивной памяти{*хранения*} Архив/файлы регистрации, проектирующий файлы регистрации, сохраняемые всеми процессами archive/photcal Landolt фотометрические стандартные поля и данные archive/pointmesh отображает принятый, чтобы моделировать телескоп, направляющий ошибки archive/telrun поток наметил список команд, в telrun.sls archive/userlogs организация области для файлов регистрации в то время как архивировались Лоток все выполнимые программы Связь связи fifos, блокируйте файлы dev модули драйвера, их точки входа и родовые связи{*ссылки*} Пользователь/изображения отображает принятый в течение пакета намеченную операцию Пользователь/файлы регистрации технические журналы в-список{*-график*} Пользователь/файлы регистрации/резюме краткие описания каждого telrun просматривает список user/schedin индивидуальный *.sch намечают представления файла xephem/auxil поддерживают файлы типа Марса и лунных изображений, справки xephem/catalogs symlink к ../archive/catalogs (для совместимости) xephem/fifos symlink к ../comm (для совместимости) 1.4.5 В реальном масштабе времени против Намеченного управления Операция средства обсерватории непосредственно оператором выполнена, прежде всего используя xobs и камера программы GUI. Эти программы используют различный fifos, чтобы связаться с daemon обрабатывает, чтобы исполнить каждое действие. Они также соединяются с общедоступным сегментом памяти к Контролируйте всю информацию текущего состояния. Но fifos может также быть связан с telrun вместо этого, когда они обрабатывают команды Будучи сгенерируемым автоматически от последовательностей просмотра, описанных в telrun.sls. Одно основное управление Доступный от xobs должен включить операцию Batch и от, который действительно означает давать управление fifos к telrun (и удостоверится, что это выполняет) или использование fifos непосредственно, соответственно. Возможно конфигурировать OCAAS систему так, чтобы, когда это было загружено, telrun начат Автоматически. В этом случае{*регистре*} xobs, и действительно любой интерфейс пользователя вообще, является дополнительным. Если xobs начат И это находит, что telrun уже выполняется, это возвращается к пассивному режиму. Или загрузка может начинаться только xobs И ожидать пользовательский ввод. Эти конфигурации созданы, соответственно изменяя сценарий $TELHOME/archive/config/boot.cfg