El Sistema de Control Industrial y de Física Experimental ( EPICS ) es un conjunto de herramientas y aplicaciones de software que se utilizan para desarrollar e implementar sistemas de control distribuido para operar dispositivos como aceleradores de partículas , telescopios y otras grandes instalaciones científicas. Las herramientas están diseñadas para ayudar a desarrollar sistemas que a menudo cuentan con una gran cantidad de computadoras en red que brindan control y retroalimentación. También brindan capacidades SCADA . [1]
EPICS fue desarrollado inicialmente como el Sistema de Control de Aceleradores de Pruebas Terrestres (GTACS, por sus siglas en inglés) en el Laboratorio Nacional de Los Álamos (LANL, por sus siglas en inglés) en 1988 por Bob Dalesio, Jeff Hill y otros. [2] En 1989, Marty Kraimer del Laboratorio Nacional de Argonne (ANL, por sus siglas en inglés) se unió al equipo de controles del GTA durante 6 meses, aportando al proyecto su experiencia adquirida en su trabajo en el Sistema de Control de Fuentes de Fotones Avanzadas (APS, por sus siglas en inglés). El software resultante se renombró EPICS y se presentó en la Conferencia Internacional sobre Sistemas de Control de Aceleradores y Grandes Experimentos Físicos (ICALEPCS, por sus siglas en inglés) en 1991. [1]
EPICS estaba disponible originalmente bajo una licencia comercial, con versiones mejoradas vendidas por Tate & Kinetic Systems. Las licencias para colaboradores eran gratuitas, pero requerían un acuerdo legal con LANL y APS. Se estableció una comunidad EPICS y el desarrollo creció a medida que más instalaciones se sumaron a la colaboración. En febrero de 2004, EPICS se convirtió en libremente distribuible después de su lanzamiento bajo la Licencia Abierta EPICS. [3]
Actualmente lo utilizan y desarrollan más de 50 grandes instituciones científicas en todo el mundo, así como varias empresas comerciales.
EPICS utiliza técnicas de cliente-servidor y de publicación-suscripción para comunicarse entre computadoras. Los servidores, los “ controladores de entrada/salida ” (IOC), recopilan datos de control y experimentos en tiempo real, utilizando los instrumentos de medición conectados a ellos. Esta información luego se proporciona a los clientes, utilizando el acceso de canal (CA) de alto ancho de banda [4] o el recientemente agregado pvAccess [5] [6] protocolos de red que están diseñados para adaptarse a aplicaciones en tiempo real, como experimentos científicos.
Los IOC contienen e interactúan con una base de datos de "registros", que representan dispositivos o aspectos de los dispositivos que se van a controlar. Los IOC pueden estar alojados en servidores o PC estándar o en VME , MicroTCA y otros procesadores de sistemas integrados estándar . Para aplicaciones de "tiempo real estricto", normalmente se utilizan los sistemas operativos RTEMS o VxWorks , mientras que las aplicaciones de "tiempo real flexible" normalmente se ejecutan en Linux o Microsoft Windows .
Los datos almacenados en los registros están representados por identificadores únicos conocidos como variables de proceso (PV). Estas PV son accesibles a través de los canales de red proporcionados por el protocolo CA/pvAccess.
Existen muchos tipos de registros disponibles para distintos tipos de entrada y salida (por ejemplo, analógicos o binarios) y para proporcionar un comportamiento funcional, como cálculos. También es posible crear tipos de registros personalizados. Cada registro consta de un conjunto de campos que contienen los datos estáticos y dinámicos del registro y especifican el comportamiento cuando se solicitan varias funciones de forma local o remota. La mayoría de los tipos de registros se enumeran en el manual de referencia de registros de EPICS.
Hay paquetes de interfaz gráfica de usuario disponibles que permiten a los usuarios ver e interactuar con datos fotovoltaicos a través de widgets de visualización típicos, como diales y cuadros de texto. Algunos ejemplos incluyen EDM (Extensible Display Manager), MEDM ( Motif /EDM) y CSS.
Cualquier software que implemente el protocolo CA/pvAccess puede leer y escribir valores PV. Hay paquetes de extensión disponibles para brindar soporte para MATLAB , LabVIEW , Perl , Python , Tcl , ActiveX , etc. Estos se pueden utilizar para escribir scripts para interactuar con equipos controlados por EPICS.