ZeissGUI — интерфейс для наблюдателей и инженеров на Цейсс-1000.
2014г.
Основной интерфейс для наблюдателей и инженеров ZeissGUI написан на Java. Это графический клиент взаимодействующий по локальной сети с сервером системы управления Цейсс-1000. Он позволяет получать основную информацию о состоянии системы и выполнять управление работой телескопа во время наблюдений или сервисного обслуживания.
Новая система управления Цейсс-1000 находится в штатной эксплуатации с лета 2013 года. Главная часть МО загружается вместе с ОС Linux и работает непрерывно. Она разработана на языке Java как XML-RPC сервер. Протокол XML-RPC работает поверх стандартного HTTP. Это один из первых протоколов Web-сервисов. Он достаточно старый и распространенный. Поддержка его имеется для большинства языков и ОС. Это позволяет разрабатывать клиентские приложения на разных языках в разных ОС. Они могут работать как на том же управляющем компьютере, так и на разных компьютерах в сети.
Основной пользовательский интерфейс ZeissGUI для управления телескопом также разработан на языке Java, но уже как XML-RPC клиент. Теоретически он может запускаться на любой машине в локальной сети под разными ОС, если в них установлена исполняемая система Java (JVM). И даже предусмотрена возможность в будущем запускать его как Java-applet в Web-браузере. Но на практике он пока работает только на управляющем компьютере ztcs, а пользователи вызывают его либо на рабочем столе этой машины, либо через сеть по протоколу X11, либо на удаленном рабочем столе по протоколу RDP. В основу интерактивного взаимодействия с пользователем положены следующие принципы. Окно на экране должно быть одно и не занимать много места. Для различных видов работы разрабатываются отдельные интерфейсные панели. Все они объединяются в одном окне как вкладки (tabs). Если пользователю все же нужно одновременно видеть две панели, ему придется запустить два интерфейса.
Эта вкладка включается при старте программы. На ней показывается общая информация о сервере системы, которая доступна и без задания имени пользователя (т.е. при уровне доступа 0).
Все остальные панели работают только если есть связь с сервером и уровень доступа ≥1. Для этого имеются поля ввода User и Password. Здесь нужно записать имя и пароль пользователя и нажать кнопку Set.
Пользователями являются все наблюдатели заведенные в административной подсистеме. Каждому там приписан уровень доступа, обычно 3 (простой наблюдатель) или 4 (опытный наблюдатель). Кроме того есть еще специальные пользователи: admin (уровень 5) — администратор системы, meh (уровень 4) — сервисный инженер, obs (уровень 3) — простой наблюдатель, user (уровень 2) — только ввод координат, guest (уровень 1) — только просмотр состояния.
Есть еще один специальный пользователь local (уровень 4). Его нельзя задать. Программа интерфейса использует его сама при старте, если работает на управляющем компьютере ztcs, т.е. обращается к серверу не по сети. Это сделано для облегчения вызова ее наблюдателями. При работе на самом управляющем компьютере имя и пароль вводить не надо, достаточно того что наблюдатель на этот компьютер зашел.
Это панель для использования наблюдателем административной информации, которая загружается в память системы при старте из XML-файла (/usr/local/ztcs/ZeissAdmin.xml). Ее редактирование выполняется через Web-интерфейс пользователями с уровнем доступа 5.
Административная
информация включает списки наблюдателей,
программ наблюдений, авторов программ,
вариантов аппаратуры регистрации, а
также расписание наблюдений. Последнее
это список сетов наблюдений. Описание
каждого сета это: дата начала сета,
используемая аппаратура, список возможных
наблюдателей, список программ наблюдений
и их авторов. В памяти сервера эта
информация существует в виде структуры
DOM.
В
системе есть понятие «текущий сет»
(Currend Set), его информация показывается
на этой панели. Эта же информация идет
и в прототип FITS-шапки, которая доступна
в локальной сети на Windows-ресурсе
\\ztcs\ZEISS\ZFITS.HDR,
для включения в FITS-файлы системы
регистрации. Особенно важно правильное
задание варианта
аппаратуры
регистрации
(Acquisition
Hardware).
От него зависит правильный выбор файла
конфигурации с поправками и ограничениями.
Эта панель предназначена для представления данных о состоянии системы управления.
Ниже строка Object name — имя объекта на который стартовали наведение последний раз.
Под ней расположены 15 одинаковых элементов типа меню для выбора какие данные показывать. Сами выбранные данные показываются под каждым меню. В меню более 40 наименований величин которые можно индицировать. При старте программы назначаются 15 наиболее употребительных. Пользователь может в любой момент поменять эти назначения.
Для понимания какие данные могут быть представлены на предыдущей панели и какие будут вводится на следующей, полезно рассмотреть общую схему координатных данных и расчетов в сервере системы управления.
Сравнение Object и Telescope выполняется на уровне энкодеров и дает текущее рассогласование.
Input — также можно использовать снаружи из клиентов как калькулятор для пересчетов координат и предварительного просмотра.
Note: все координатные расчеты выполняются с использованием популярной библиотеки SLALIB (автор Patrick Wallace), которая оформлена в виде shared-библиотеки и подключена к Java-программам сервера через JNI-интерфейс.
Эта панель предназначена для ввода данных о наблюдаемом объекте или точке позиционирования телескопа.
В
этой панели предусмотрены все варианты
ввода данных в структуру Input
сервера
управления. Общий принцип: после ввода
данных нажимается соответствующая
кнопка Send.
Данные отправляются серверу в
соответствующий уровень структуры
Input. Тут же все содержимое Input
считывается назад и все остальные поля
заполняются рассчитанными сервером
значениями.
Apparent Place — видимое место, т.е. RA,Dec пересчитанные к текущей дате. Кнопка Get считывает эти данные из уже наблюдаемого объекта (т.е. из структуры Object).
HA/Decl position — положение телескопа по часовому углу и склонению. Ввод идет в наблюдаемое место. Кнопка Get считывает текущее положение телескопа (т.е. из структуры Telescope). Кнопка Park устанавливает в поля ввода положение для парковки телескопа с текущим вариантом навесной аппаратуры.
Az/ZD position — положение телескопа по азимуту и зенитному расстоянию.
Кнопка GoToObject стартует наведение (Slewing) на объект, с последующим переходом в режим сопровождения (Tracking).
Кнопка GoToPosition стартует наведение в фиксированное положение с последующим остановом.
Кнопка Stop останавливает любое движение.
Кнопка Parking посылает в сервер положение для парковки телескопа и купола в соответствии с текущим вариантом навесной аппаратуры (методом наблюдений). После этого сразу стартует наведение телескопа и переезд купола в это положение. Данные о парковочных положениях записаны в файлах конфигурации (*.conf) в директории /usr/local/ztcs/.
На этой панели еще три вкладки для трех вариантов ручной коррекции которые предусмотрены в системе управления. Все эти три «под-панели» организованы примерно одинаково. В центре поле кнопок движения по 8-ми направлениям. Это кнопки которые нужно удерживать (т.е. нажали — едем, отпустили — остановились). Над ними поле ввода скорости смещения по RA или HA (в сек/сек) и кнопки (Add Sub) для разовых смещений координаты на эту величину. Снизу тоже самое для координаты Dec (только поле ввода в "/сек). Скорости также можно менять слайдерами и выбирать фиксированные значения радио-кнопками.
Эта панель предназначена для изменения координат объекта или переезда на близлежащий объект.
Работа
кнопками описана выше.
Кнопка /cos(Decl) служит для выбора как рассматривать изменение координаты RA, как абсолютное, или как «на небе».
Эта панель предназначена для коррекции положения телескопа относительно наблюдаемого объекта.
Это
собственно гидирование объекта.
Координаты наблюдаемого объекта не
меняются. Меняется текущая поправка
телескопа, которая добавляется к
остальным поправкам. При перенаведении
на другой объект она обнуляется.
Коррекцию можно выполнять движением по 8-ми направлениям (и разовыми смещениями) при помощи кнопок слева, а можно сразу вводить новые значения в поля справа и нажимать кнопки Set.
Кнопка /cos(Decl) служит для выбора как рассматривать смещения по часовому углу, как «на приводе», или как «на небе».
Эта
поправка хранится в файле конфигурации
для конкретного варианта аппаратуры
регистрации. Она считывается из файла
либо при смене варианта аппаратуры (см.
вкладку Admin), либо по
кнопке Restore Config
на этой панели.
Поправки можно подгонять итеративно при помощи кнопок слева, а можно сразу вводить новые значения в поля справа и нажимать кнопки Set.
Поле New Pos.Angle заменяет отсутствующий датчик угла поворотного стола. Пока оно чисто информационное. Угол установки поворотного стола также хранится в файле конфигурации. Он записывается в прототип FITS-шапки (\\ztcs\ZEISS\ZFITS.HDR) для системы регистрации.
С помощью кнопки Save Acq.Hardw.Config измененные поправки можно сохранить в файле конфигурации текущего варианта аппаратуры для повторного использования в будущем.
Note: поправка по часовому углу (Corr.HA) при использовании разумеется всегда делится на cos(δ).
Эта панель предназначена для ручного управления движением телескопа.
В
центре поле кнопок движения по 8-ми
направлениям. Это кнопки которые нужно
удерживать (т.е. нажали — едем, отпустили
— остановились).
Над ними поле ввода скорости движения по HA (в сек/сек) и toggle-кнопки для включения и остановки движения по координате. Снизу тоже самое для координаты Dec (только поле ввода в "/сек).
Скорости также можно менять слайдерами или выбирать фиксированные значения радио-кнопками.
В нижней строке есть поля ввода для задания ограничений на максимальные скорости движения по координатам. Рядом с ними показаны реально установленные. Без ограничений — 2 градуса/сек. Новые ограничения устанавливаются кнопкой Set. Она для опытного наблюдателя (уровень доступа ≥4).
На этом месте должна была бы быть (и разрабатывалась) панель управления фокусировкой телескопа через SEW-привод. Но пока этот привод не установлен на телескоп. В 2014-м году в систему добавлено устройство KBX-110. Это блок с 10-ю реле управляемый по TCP. Реле предназначались для временной схемы удаленного ручного управления фокусировкой телескопа. Соответственно было принято временное решение не включать TCP-связь с KBX в главный сервер, а разработать вместо панели «Focus» временную панель управления реле. Панель сама связывается с TCP-сервером KBX при включении вкладки «Focus» и отключает эту связь при переключении на другую вкладку.
Note:
следует помнить что устройство
KBX-110 обеспечивает только
одну TCP-связь!
Поэтому не следует оставлять эту вкладку
влюченой без необходимости.
Параметры для настройки панель берет при старте из файла FocusKBX.conf в Home-справочнике пользователя.
Кнопки слева управляют реле включения двигателей фокусировки, а также питания сельсинов которые показывают положение фокуса.
Кнопка «Camera viewer» запускает/отключает видео с Axis-камеры показывающей шкалы сельсинов.
В панель были добавлены кнопки справа управляющие включением этих питаний.
Но это уже не временная схема. В результате получилась эклектичная структура системы, когда часть функций включена прямо в клиента, а управляющая программа ничего о них не знает. В будущем, когда будет установлено штатное управление фокусом, эти функции следует перенести в сервер системы управления.
Это панель управления куполом башни Цейсс-1000.
В
верхней строке общая информация о
состоянии управления куполом.
Position — положение купола по угловому датчику в градусах от юга («west-positive»). Это значение дается с учетом Turns — числа оборотов купола от начального положения. Дело в том что необходима коррекция нуль-пункта датчика на ~2.6º на каждом обороте из-за ошибки выбора редуктора (редукция для привода купола 69.5, а для углового датчика - 70.0).
Velocity — скорость движения купола в градусах/сек.
TargetAzimuth — рассчитанное по координатам или заданное вручную целевое положение купола.
Difference — рассогласование между целевым и реальным положением купола.
Ниже расположено поле ввода желаемого азимута для установки купола в нужное положение. Кнопка Get считывает в него текущее положение. Кнопка Go To стартует переезд купола.
Еще ниже расположены кнопки ручного движения влево (на восток) <---- и вправо (на запад) +++> .
Кнопка Stop Dome operations — останавливает любые движения купола.
На этой панели представлена информация о работе SEW-приводов телескопа.
Эта панель для представления реальных и расчетных положений угловых датчиков.
Последнее можно использовать для проверки «куда попали» после посылки данных нового объекта серверу.
На этой панели представлены коэффициенты используемые в модели наведения телескопа (Pointing Model).
По результатам технических наблюдений проводившихся в течении 2011-го года и их обработки в 2012-м, были разработаны формулы коррекции наведения телескопа (аналог СКН на БТА). Они основаны на классических формулах для экваториальных монтировок (см. например: Patrick Wallace «Telescope Pointing» http://tpointsw.uk/pointing.htm ) плюс гармоники за эксцентриситет и эллиптичность главных червячных колес.
IH,
ID — индексные поправки, т.е. нуль-пункты
индексных датчиков (энкодеров).
CH — «восточно-западная» коллимационная ошибка ( горизонтальное смещение оптической оси).
NP — «не-перпендикулярность» осей вращения HA и Dec.
MA, ME — ошибка в направлении полярной оси по азимуту (горизонтальная) и по высоте (вертикальная).
TF — гнутие трубы.
DAF — консольное гнутие оси вращения Dec.
GWH1,GWD1 — амплитуды 1-й гармоники — эксцентриситет главных червячных колес HA и Dec.
GWH2,GWD2 — амплитуды 2-й гармоники — эллиптичность главных червячных колес HA и Dec.
GWH1phi, GWD1phi, GWH2phi, GWD2phi — фазы соответствующих гармоник.
Формулы дают поправки по часовому углу Δh(h,δ) и склонению Δδ(h,δ):
где - смещение фаз 1-й и 2-й гармоник.
где - смещение фаз 1-й и 2-й гармоник.
Коэффициенты загружаются из файла ZeissPointing.conf при старте сервера. Если коэффициенты в файле были изменены, их можно перезагрузить кнопкой (Re)Load.
Кнопка On/Off служит для отключения формул коррекции (но это доступно только администратору с уровнем доступа 5).
Эта панель показывает последние строчки файла протокола системы управления ZeissServer.log.
Разумеется
эта панель работает только при
использовании ZeissGUI
на
самой управляющей машине где этот файл
есть. Показываются
последние 100 строк протокола.
Программа панели
постоянно следит за состоянием файла
и при появлении новых строк, переносит
их на панель.
Поскольку интерфейс ZeissGUI написан на языке Java, и кроме того требует подключения дополнительной библиотеки классов (для XML-RPC), вызов его достаточно сложен. Написан командный файл ZeissGUI.sh выполняющий все необходимые действия. Он, в свою очередь, может вызываться по ссылке zgui из /usr/local/bin.
Возможный параметр вызова — сетевой адрес управляющего компьютера для связи с его XML-RPC сервером. При вызове без параметров берется адрес localhost, т.е. предполагается что это запуск интерфейса на самом управляющем компьютере ztcs.
На рабочем столе наблюдателя на управляющем компьютере ztcs для запуска программы ZeissGUI имеется иконка.