Введение

Программная инфраструктура для создания распределённых систем управления

Система управления в области экспериментальной физики и промышленности (EPICS) — это набор программных инструментов и приложений, используемых для разработки и реализации распределённых систем управления, предназначенных для эксплуатации устройств, таких как ускорители частиц, телескопы и другие крупные научные установки. Инструменты разработаны для создания систем, которые часто включают в себя большое количество сетевых компьютеров, обеспечивающих управление и обратную связь. Они также предоставляют возможности SCADA.

История

EPICS был первоначально разработан как система управления наземным испытательным ускорителем (GTACS) в Лос-Аламосской национальной лаборатории (LANL) в 1988 году Бобом Дейлио, Джеффом Хиллом и другими. В 1989 году Марти Краймер из Аргоннской национальной лаборатории (ANL) присоединился к команде управления GTA на 6 месяцев, внеся в проект свой опыт, полученный при работе над системой управления продвинутым источником фотонов (APS). Полученное программное обеспечение было переименовано в EPICS и представлено на Международной конференции по системам управления ускорителями и крупными экспериментами (ICALEPCS) в 1991 году. Первоначально EPICS распространялся по коммерческой лицензии, а улучшенные версии продавались компанией Tate & Kinetic Systems. Лицензии для участников сотрудничества были бесплатными, но требовали юридического соглашения с LANL и APS. Было создано сообщество EPICS, и разработка расширялась по мере присоединения к сотрудничеству новых объектов. В феврале 2004 года EPICS стал свободно распространяемым после выпуска под лицензией EPICS Open License. В настоящее время EPICS используется и разрабатывается более чем 50 крупными научными учреждениями по всему миру, а также несколькими коммерческими компаниями.

Архитектура

EPICS использует клиент-серверные и publish-subscribe технологии для обмена данными между компьютерами. Серверы, известные как "контроллеры ввода/вывода" (IOC), собирают данные экспериментов и осуществляют управление в режиме реального времени, используя подключенные к ним измерительные приборы. Эта информация затем предоставляется клиентам посредством высокоскоростного протокола Channel Access (CA) или недавно добавленного сетевого протокола pvAccess, разработанных для приложений реального времени, таких как научные эксперименты. IOC хранят и взаимодействуют с базой данных "записей", которые представляют собой либо устройства, либо аспекты устройств, подлежащих управлению. IOC могут быть размещены на стандартных серверах или персональных компьютерах, либо на VME, MicroTCA и других стандартных процессорах встраиваемых систем. Для приложений "жесткого реального времени" обычно используются операционные системы RTEMS или VxWorks, в то время как приложения "мягкого реального времени" обычно работают на Linux или Microsoft Windows. Данные, хранящиеся в записях, представлены уникальными идентификаторами, известными как переменные процесса (PV). Доступ к этим PV осуществляется через сетевые каналы, предоставляемые протоколами CA/pvAccess. Доступно множество типов записей для различных типов входов и выходов (например, аналоговых или двоичных), а также для обеспечения функционального поведения, такого как вычисления. Также возможна разработка пользовательских типов записей. Каждая запись состоит из набора полей, которые содержат статические и динамические данные записи и определяют поведение при запросе различных функций локально или удаленно. Большинство типов записей перечислены в справочном руководстве по записям EPICS. Доступны пакеты графического пользовательского интерфейса, позволяющие пользователям просматривать и взаимодействовать с данными PV с помощью стандартных виджетов отображения, таких как циферблаты и текстовые поля. Примерами являются EDM (Extensible Display Manager), MEDM (Motif/EDM) и CSS. Любое программное обеспечение, реализующее протокол CA/pvAccess, может читать и записывать значения PV. Существуют расширяющие пакеты для поддержки MATLAB, LabVIEW, Perl, Python, Tcl, ActiveX и т.д., которые можно использовать для написания скриптов для взаимодействия с оборудованием, управляемым EPICS.