Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Control and Monitoring of the Karoo Telescope A...

Pycon ZA
October 05, 2017

Control and Monitoring of the Karoo Telescope Arrays using Python (5 years later) by Toufeeq Ockards and Martin Slabber

In 2012 the The SKA SA Control and Monitoring (CAM) gave a talk at PyConZA and it can be viewed at this Youtube Video and more info at PyConZA 2012 link.

5 years later, Python is still used for Controlling and Monitoring of this world-class instrument, that is on its path to being the most sensitive radio telescope in the southern hemisphere. The 64 dish array completion is around the corner and we take a look back at the last 5 years and our time with Python.

Pycon ZA

October 05, 2017
Tweet

More Decks by Pycon ZA

Other Decks in Programming

Transcript

  1. www.ska.ac.za PRESENTER: Toufeeq Ockards Martin Slabber Control and Monitoring of

    the Karoo Telescope Arrays Using Python 5 Years later
  2. www.ska.ac.za SKA SA Location HCD Human Capital Development MeerKAT World

    Class Telescope SKA Project International Participation SKA SA Who we are and What are our goals?
  3. www.ska.ac.za Control And Monitoring Subsystem diagram CAM CBF SDP BMS

    Data plane SPEAD (UDP Multicast) (big data) TFR WX USE Control plane KATCP (non-http) (little data) FPGA GPU
  4. www.ska.ac.za Why did we choose Python? Operators need low level

    interface for root cause analysis, easy to learn, easy to extend Commissioning Scientists need a scripting framework that allow full control of different subsystems Engineers needed an interface to get the job done Software development had to integrate to everything imaginable Cost of innovation should be low “Life is too short to write C++ code” - David Beazley Zen of Python Poster by ewjoachim Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
  5. www.ska.ac.za KATCP • • • • • • • •

    • • Control protocol used for all internal Control And Monitoring communications
  6. www.ska.ac.za In [30]: kat.print_sensors('m06.*epoch', strategy='period', params='2') Print filtered sensors on

    <all>.m06.*epoch : period : @ 22:21:16 - Page 1 of 1 <B>ack <N>ext Items:4 Per page:50 (+/-) Q to quit ------------------------------ Update strategy: period ------------------------------------ Name Unit Status Value time Update time Value m060.dig.l-band.time.synchronisation-epoch s inactive 10:08:37.79 22:21:15.23 0.0 m061.dig.l-band.time.synchronisation-epoch s nominal 17:41:20.50 22:21:15.28 1507131597.0 m062.dig.l-band.time.synchronisation-epoch s inactive 10:22:14.63 22:21:15.29 0.0 m063.dig.l-band.time.synchronisation-epoch s nominal 17:41:24.50 22:21:15.29 1507131597.0 {a.name:a.sensor.rsc_rsc_he_compressor_supply_pressure.get_value() for a in kat.ants if a.sensor.rsc_device_status.get_status() == 'nominal'}