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). Если пользователю все же нужно одновременно видеть две панели, ему придется запустить два интерфейса.

Вкладка Server — стартовая.

Эта вкладка включается при старте программы. На ней показывается общая информация о сервере системы, которая доступна и без задания имени пользователя (т.е. при уровне доступа 0).


Date:   дата/время. Локальные, по часам клиента.
Server URL:   по какому сетевому адресу этот клиент обратился к XML-RPC серверу.
Connection:   если связь с сервером есть, то «Ok», иначе «Failed to read servers response. Connection refused.».
Info:   название сервера, используемое имя пользователя и его уровень доступа.
Location:   положение на земной поверхности используемое в расчетах.
Meteo:   используемое в расчетах текущие метео-данные.
IERS:   данные Службы Вращения Земли — поправка к UTC и положение земного полюса.
LastReqest:   последний запрос по XML-RPC.

Все остальные панели работают только если есть связь с сервером и уровень доступа 1. Для этого имеются поля ввода User и Password. Здесь нужно записать имя и пароль пользователя и нажать кнопку Set.

Пользователями являются все наблюдатели заведенные в административной подсистеме. Каждому там приписан уровень доступа, обычно 3 (простой наблюдатель) или 4 (опытный наблюдатель). Кроме того есть еще специальные пользователи: admin (уровень 5) — администратор системы, meh (уровень 4) — сервисный инженер, obs (уровень 3) — простой наблюдатель, user (уровень 2) — только ввод координат, guest (уровень 1) — только просмотр состояния.

Есть еще один специальный пользователь local (уровень 4). Его нельзя задать. Программа интерфейса использует его сама при старте, если работает на управляющем компьютере ztcs, т.е. обращается к серверу не по сети. Это сделано для облегчения вызова ее наблюдателями. При работе на самом управляющем компьютере имя и пароль вводить не надо, достаточно того что наблюдатель на этот компьютер зашел.

Вкладка Admin.

Это панель для использования наблюдателем административной информации, которая загружается в память системы при старте из XML-файла (/usr/local/ztcs/ZeissAdmin.xml). Ее редактирование выполняется через Web-интерфейс пользователями с уровнем доступа 5.


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


В системе есть понятие «текущий сет» (Currend Set), его информация показывается на этой панели. Эта же информация идет и в прототип FITS-шапки, которая доступна в локальной сети на Windows-ресурсе \\ztcs\ZEISS\ZFITS.HDR, для включения в FITS-файлы системы регистрации. Особенно важно правильное задание варианта аппаратуры регистрации (Acquisition Hardware). От него зависит правильный выбор файла конфигурации с поправками и ограничениями.

Все функциональные кнопки на этой панели предназначены для изменения информации «текущего сета» и работают только для опытного наблюдателя (уровень ≥4).
Scheduleкнопки выбора текущего сета из расписания:
List typeкакой список будут загружать расположенные ниже кнопки List:
Кнопки List загружают список в меню рядом с ними.
Кнопки Choose отправляют выбранный в меню элемент серверу системы.

Вкладка TCSstate.

Эта панель предназначена для представления данных о состоянии системы управления.


В верхней строке общая информация о сервере управления телескопом. Она будет повторяться и на других панелях.

Ниже строка Object name — имя объекта на который стартовали наведение последний раз.

Под ней расположены 15 одинаковых элементов типа меню для выбора какие данные показывать. Сами выбранные данные показываются под каждым меню. В меню более 40 наименований величин которые можно индицировать. При старте программы назначаются 15 наиболее употребительных. Пользователь может в любой момент поменять эти назначения.

Структура данных и расчетов.

Для понимания какие данные могут быть представлены на предыдущей панели и какие будут вводится на следующей, полезно рассмотреть общую схему координатных данных и расчетов в сервере системы управления.


В сервере функционируют три одинаковые структуры (Java-объекты): Telescope, Object и Input. Каждый представляет все типы координатных данных и расчетов:
Предназначение этих структур (Java-объектов):

Сравнение Object и Telescope выполняется на уровне энкодеров и дает текущее рассогласование.

Input — также можно использовать снаружи из клиентов как калькулятор для пересчетов координат и предварительного просмотра.

Note: все координатные расчеты выполняются с использованием популярной библиотеки SLALIB (автор Patrick Wallace), которая оформлена в виде shared-библиотеки и подключена к Java-программам сервера через JNI-интерфейс.

Вкладка Object.

Эта панель предназначена для ввода данных о наблюдаемом объекте или точке позиционирования телескопа.


В этой панели предусмотрены все варианты ввода данных в структуру Input сервера управления. Общий принцип: после ввода данных нажимается соответствующая кнопка Send. Данные отправляются серверу в соответствующий уровень структуры Input. Тут же все содержимое Input считывается назад и все остальные поля заполняются рассчитанными сервером значениями.

Mean place — ввод данных об объекте их каталога. Тут предусмотрено все что может быть в каталоге и использоваться при расчете.

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/.

Строка Movig object tracking speed — для ввода (и изменения) скоростей смещения координат для «движущихся» объектов, т.е. тел солнечной системы. По RA в сек/сек, по Dec в угл.сек/сек.

Вкладка Corrections.

На этой панели еще три вкладки для трех вариантов ручной коррекции которые предусмотрены в системе управления. Все эти три «под-панели» организованы примерно одинаково. В центре поле кнопок движения по 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(δ).

Вкладка Moving.

Эта панель предназначена для ручного управления движением телескопа.


В центре поле кнопок движения по 8-ми направлениям. Это кнопки которые нужно удерживать (т.е. нажали — едем, отпустили — остановились).

Над ними поле ввода скорости движения по HA (в сек/сек) и toggle-кнопки для включения и остановки движения по координате. Снизу тоже самое для координаты Dec (только поле ввода в "/сек).

Скорости также можно менять слайдерами или выбирать фиксированные значения радио-кнопками.

Stopping mode — эти радио-кнопки позволяют выбрать вариант останова:

В нижней строке есть поля ввода для задания ограничений на максимальные скорости движения по координатам. Рядом с ними показаны реально установленные. Без ограничений — 2 градуса/сек. Новые ограничения устанавливаются кнопкой Set. Она для опытного наблюдателя (уровень доступа ≥4).

Вкладка Focus.

На этом месте должна была бы быть (и разрабатывалась) панель управления фокусировкой телескопа через SEW-привод. Но пока этот привод не установлен на телескоп. В 2014-м году в систему добавлено устройство KBX-110. Это блок с 10-ю реле управляемый по TCP. Реле предназначались для временной схемы удаленного ручного управления фокусировкой телескопа. Соответственно было принято временное решение не включать TCP-связь с KBX в главный сервер, а разработать вместо панели «Focus» временную панель управления реле. Панель сама связывается с TCP-сервером KBX при включении вкладки «Focus» и отключает эту связь при переключении на другую вкладку.


Note: следует помнить что устройство KBX-110 обеспечивает только одну TCP-связь! Поэтому не следует оставлять эту вкладку влюченой без необходимости.

Параметры для настройки панель берет при старте из файла FocusKBX.conf в Home-справочнике пользователя.

Кнопки слева управляют реле включения двигателей фокусировки, а также питания сельсинов которые показывают положение фокуса.

Кнопка «Camera viewer» запускает/отключает видео с Axis-камеры показывающей шкалы сельсинов.


К сожалению, затем на свободные реле было подключено управление включением питания:
SEW-приводов телескопа,
стоек в аппаратной,
аппаратуры на трубе телескопа.

В панель были добавлены кнопки справа управляющие включением этих питаний.

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

Вкладка Dome.

Это панель управления куполом башни Цейсс-1000.


В верхней строке общая информация о состоянии управления куполом.

Position — положение купола по угловому датчику в градусах от юга («west-positive»). Это значение дается с учетом Turns — числа оборотов купола от начального положения. Дело в том что необходима коррекция нуль-пункта датчика на ~2.6º на каждом обороте из-за ошибки выбора редуктора (редукция для привода купола 69.5, а для углового датчика - 70.0).

Velocity — скорость движения купола в градусах/сек.

TargetAzimuth — рассчитанное по координатам или заданное вручную целевое положение купола.

Difference — рассогласование между целевым и реальным положением купола.

Align with — набор радио-кнопок для изменения режима согласования купола:

Ниже расположено поле ввода желаемого азимута для установки купола в нужное положение. Кнопка Get считывает в него текущее положение. Кнопка Go To стартует переезд купола.

Еще ниже расположены кнопки ручного движения влево (на восток) <---- и вправо (на запад) +++> .

Кнопка Stop Dome operations — останавливает любые движения купола.

Вкладка Drives.

На этой панели представлена информация о работе SEW-приводов телескопа.


Информация на панели организована в виде таблицы. Каждый столбец это один SEW-привод.
HApoint — наведение по HA — маршевый двигатель часового угла.
DecPoint — наведение по Dec — маршевый двигатель склонения.
HAcor1 — первая ступень коррекции (быстрая) по часовому углу.
DecCor1 — первая ступень коррекции (быстрая) по склонению.
HAcor2 — вторая ступень коррекции (точная) по часовому углу.
DecCor2 — вторая ступень коррекции (точная) по склонению.
HAtrack — синхронный двигатель часового ведения.
Focus — привод фокусировки пока отсутствует, вместо в системе работает симулятор.
Dome — двигатель поворота купола башни Цейсс-1000.
Строки таблицы это типы информации о приводах.
Drv.Name — название привода внутри системы, SEWN — для реальных приводов, SimN — для программной симуляции.
St.Code — код состояния привода (hex).
State — текстовое представление смысла кода состояния привода.
ReqSpeed — запрошенная скорость вращения вала в об/мин (rpm).
RealRPMs — измеренная скорость вращения вала в об/мин (rpm).
Current — ток в двигателе (A).

Вкладка Encdrs.

Эта панель для представления реальных и расчетных положений угловых датчиков.


В нижней части рисунка область нормальной работы телескопа, в верхней — с перекладкой. Слева от рисунка цифровые значения положений датчиков соответствующие крестикам на рисунке.
Красным цветом показано положение осей телескопа — реальные показания датчиков (из структуры Telescope).
Синим цветом — положение наблюдаемого объекта — расчетные положения датчиков (из структуры Object).
Зеленым — расчет по введенным (в Input) координатам.

Последнее можно использовать для проверки «куда попали» после посылки данных нового объекта серверу.

Замкнутыми линиями показаны:
местный горизонт, т.е. допустимая область положений телескопа;
области запрещенных положений из-за навесной аппаратуры.
Данные для этого считываются из файлов используемых сервером: ZeissHorizon.tab и *.conf в директории /usr/local/ztcs/. Поэтому эти области показывается только при использовании ZeissGUI на самой управляющей машине где эти файлы есть.

Вкладка PM.

На этой панели представлены коэффициенты используемые в модели наведения телескопа (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).

Рядом с ней меню для выбора какие рассчитанные поправки показывать:
для реального положения телескопа,
для наблюдаемого объекта,
для вновь введенных (input) координат.
Поправки показываются в угл.секундах как PMHA=... и PMDec=...

Вкладка Log.

Эта панель показывает последние строчки файла протокола системы управления ZeissServer.log.


Разумеется эта панель работает только при использовании ZeissGUI на самой управляющей машине где этот файл есть. Показываются последние 100 строк протокола. Программа панели постоянно следит за состоянием файла и при появлении новых строк, переносит их на панель.

Запуск программы.

Поскольку интерфейс ZeissGUI написан на языке Java, и кроме того требует подключения дополнительной библиотеки классов (для XML-RPC), вызов его достаточно сложен. Написан командный файл ZeissGUI.sh выполняющий все необходимые действия. Он, в свою очередь, может вызываться по ссылке zgui из /usr/local/bin.

Возможный параметр вызова — сетевой адрес управляющего компьютера для связи с его XML-RPC сервером. При вызове без параметров берется адрес localhost, т.е. предполагается что это запуск интерфейса на самом управляющем компьютере ztcs.

На рабочем столе наблюдателя на управляющем компьютере ztcs для запуска программы ZeissGUI имеется иконка.