120 likes | 251 Views
10 Years of EPICS at the Joint Astronomy Centre. Nick Rees Head of Software and Computing Services Joint Astronomy Centre, Hilo, Hawaii. Outline. Introduction History Differences between Astronomy and Accelerators Two developments UAE TIDE. Introduction. Joint Astronomy Centre (JAC)
E N D
10 Years of EPICS at the Joint Astronomy Centre Nick Rees Head of Software and Computing Services Joint Astronomy Centre, Hilo, Hawaii.
Outline • Introduction • History • Differences between Astronomy and Accelerators • Two developments • UAE • TIDE
Introduction • Joint Astronomy Centre (JAC) • Administered through the UK Particle Physics and Astronomy Research Council (PPARC) • Responsible for the two UK dominated Hawaii telescopes • James Clerk Maxwell Telescope (JCMT) • United Kingdom InfraRed Telescope (UKIRT) • Two very different telescopes with very different user communities • JCMT is UK/Dutch/Canadian collaboration • UKIRT is UK only, but has history of specific international collaborations (e.g. Germany and Japan).
JAC’s initial foray into EPICS • JAC adopted EPICS in about 1993 • One of the first astronomy sites to adopt it • Previous environment was VAX/VMS CAMAC • Major attraction was the simple GUI’s and connection management • Allowed us to avoid the pitfalls of our first gui-based distributed system • First EPICS system rolled out in 1995
Current EPICS systems • UKIRT mount servo (~50 records) • UKIRT primary mirror control (~500) • UKIRT optical closed loop and active control (~500) • UKIRT instrumentation - UFTI, UIST, Michelle (100’s - 1000’s) • JCMT mount servo (~50) • JCMT surface control system (~5000) • JCMT instrumentation - HARP-B (delivery 2004), SCUBA2 (delivery 2005-6) (1000’s)
Device support • VME Cards • BC635, XY240, XY566, DVME626, VMIC2534, VMIC 4514 • Various motor and array controllers • All through to primitive records using Capfast for encapsulation. • Most over serial links • Most either using drvAscii or one-offs over transputer links.
Differences with Astronomy • Heterogeneous • Device drivers must work in non-EPICS context • re-wrote xy240 and xy566 drivers for this reason • Make system must build non-EPICS software • Vertically integrated • EPICS control system are part of a much larger whole • Less duplication at the low level.
Time Allocation Committee Observation Preparation Observation Feedback Observation Database Observation Selection Science Data Product System Configurations Observation Translation Instrument Control System Data Handling Data Reduction Observation Sequencer Observation Queue Telescope Control System Astronomer Science Programmes MinimumSchedulable Blocks (MSBs)
UAE Application Environment based on EPICS make Predates EPICS makeBaseApp, but similar Makefile independent of position in directory hierarchy. No “Makefile’, just Makefile.Host, Makefile.Vx and Makefile.Dirs Directory traversal rules generate Makefile as part of the build, and this had the information of the position in the hierarchy. Can co-exist with other make systems since there are no name clashes (Perl has Makefile.PL, other systems have dmakefile, etc).
DRAMA Layer immediately above EPICS in all our systems. Distributed object system based developed by the Anglo Australian Observatory (AAO). Predates CORBA Has tasks (objects), actions with supplied and returned parameters (methods) and task parameters (which can be got, set and monitored). Uses Self-describing Data System (SDS) for passing and storing parameters. EPICS interface with a configuration file driven library (TIDE).
TIDE Turns a set of EPICS records into a DRAMA “object” Initialized with a configuration file. Places monitors on EPICS records and stores the results in DRAMA parameters (which can be monitored). Provides a translation between a DRAMA SDS structure and a collection of EPICS records. Allows “trigger” records to be specified which determine when a DRAMA structure is updated. Provides other control over parameter updates for efficiency (can handle several 1000 updates/second).
TIDE Configuration File field irpol.timeout irpol:irpolCtrl:timeout field irpol.posn irpol:irpolAxis:posn NOTRIGGER field irpol.angle irpol:irpolAxis:angle action irpol_pos irpol:irpolAxis:datumCmd=Active irpol:irpolAxis:datumCmd.VAL!=Active irpol:irpolAxis:errString action irpol_ang irpol:irpolAxis:datumCmd=Active irpol:irpolAxis:datumCmd.VAL!=Active irpol:irpolAxis:errString # FP stuff: field fp.X fp:X:move_out action FPX fp:X:cmd=Active fp:X:cmd=!Active