Cекция "Kомпьютерные и информационные технологии в технических системах, экономике, науке и образовании"
ПРИМЕНЕНИЕ ТЕХНОЛОГИИ JAVA
ДЛЯ ДИСТАНЦИОННОГО УПРАВЛЕНИЯ
ФИЗИЧЕСКИМ ЭКСПЕРИМЕНТОМ
Жиганов Е.Д., Кипрушкин С.А., Курсков С.Ю. (г. Петрозаводск, ПГУ)
В настоящее время технология клиент-сервер получила широкое распространение. В основе этой технологии лежит разделение процесса обработки данных между программой-клиентом и программой-сервером. Программа-клиент и программа-сервер могут выполняться на удаленных компьютерах, связанных как локальной сетью, так и глобальной сетью Internet.
Технология клиент-сервер позволяет организовать эффективное управление физическим экспериментом.
В данной работе рассмотрена разработанная авторами программа-сервер (КАМАК-сервер), обеспечивающая одновременный доступ удаленных пользователей к измерительным и исполнительным устройствам экспериментальной установки, связанной с цифровой аппаратурой обработки данных с помощью программно-управляемой системы КАМАК.
Доступ к физическому оборудованию на основе технологии клиент-сервер реализован следующим образом. Для управления устройствами установки используется специально выделенный для этой цели компьютер под управлением операционной системы Linux. КАМАК-сервер, запущенный на этом компьютере, обеспечивает доступ к модулям КАМАК. На КАМАК-сервер возложены функции посредника между клиентами и подключенными к компьютеру крейтами КАМАК, а также обеспечение защиты от доступа к уже используемым модулям. Логика управления экспериментом определяется клиентом. По его запросам сервер передает контроллеру крейта команды и возвращает клиенту полученные данные и информацию о состоянии магистрали КАМАК. Обработка ответов сервера осуществляется программой-клиентом.
КАМАК-сервер (как и программа-клиент), реализован на языке Java с использованием технологии Java-сокетов TCP. В данном случае сокет - это описатель сетевого соединения одного приложения с другим. Выбор сокетa TCP обусловлен тем, что он основан на протоколе TCP. В отличие от протокола UDP протокол TCP обеспечивает коррекцию ошибок при передаче данных.
Сокеты TCP позволяют создавать оригинальные прикладные протоколы, отличные от FTP или HTTP. Прикладной протокол, разработанный в данной работе, содержит следующие шаги:
- Программа-клиент посылает запрос на подключение к КАМАК-серверу.
- Сервер подтверждает установление соединения.
- Клиент передает сообщение о резервировании для себя ряда станций в имеющихся крейтах КАМАК.
- Сервер подтверждает резервирование станций или отказывает, если эти станции уже используются другими клиентами. В последнем случае сервер завершает сеанс связи.
- При подтверждении клиент посылает серверу сообщение, содержащее адрес и субадрес модуля, код операции и, возможно, данные, которые нужно передать модулю.
- Сервер адресует эти данные драйверу КАМАК и получает от него выходные данные и информацию о сигналах состояния магистрали крейта. После чего он пересылает эти данные клиенту.
- Шаги 5-6 повторяются до завершения эксперимента.
- Клиент посылает серверу сообщение о завершении работы.
- Сервер закрывает потоки ввода/вывода и сокет данного клиента.
Для обслуживания нескольких клиентов сервер сделан многопотоковым. Это обеспечивается следующим образом. Программа-сервер содержит два класса. Первый класс обеспечивает ожидание клиента. Второй класс поддерживает диалог с клиентом и реализует интерфейс с крейтами КАМАК. При подключении клиента экземпляр первого класса создает экземпляр второго класса и передает ему объект сокет, связанный с клиентом. Поскольку экземпляр второго класса (т.е. обработчик) работает в отдельном потоке, сервер может вернуться к ожиданию других клиентов.
Так как Java не имеет средств для доступа к портам ввода/вывода оборудования, подключенного к компьютеру, то методы, обеспечивающие доступ к аппаратуре КАМАК, написаны на Си.
Обращение к разделяемым обработчиками ресурсам (крейтам КАМАК) синхронизировано, т.е. выполнение кода блокируется до тех пор, пока не будет получен монопольный доступ к ресурсу. Поэтому при одновременной работе нескольких клиентов конфликты при обращении к одним и тем же контроллерам крейтов не возникают.
Также отметим, что выбор объектно-ориентированного языка Java не случаен, т.к. этот язык изначально предназначен для создания сетевых аппаратно-независимых приложений. Клиент, написанный на Java, может работать на любой программно-аппаратной платформе, для которой реализована виртуальная Java-машина. Что касается КАМАК-сервера, то наличие методов, написанных на Си (которые обеспечивают связь с аппаратурой КАМАК), делает его аппаратно-зависимым, хотя адаптация этой части сервера к конкретной платформе не составляет большого труда.
Литература.
1. Вебер Д. Технология Java в подлиннике.-СПб.: BHV-СПб, 1997.
© МГТУ 2000
webmaster@mstu.edu.ru