How to Integrate LabVIEW Applications into a Tango Control System http://www.tango-controls.org/ Tango Meeting – ONERA – Toulouse – France - 06.22.2016 N. Leclercq – Synchrotron SOLEIL
About this talk… Aim Part 1 : Part 2 : overview of a work in progress main motivation: turning a LabVIEW application into a Tango device server Part 1 : foundations & core components of the proposed solution how to write a Tango device in LabVIEW: the laborious way Nicolas Leclercq - Synchrotron SOLEIL Part 2 : solution enhancement on LabVIEW side how to write a Tango device in LabVIEW: the magical way Birgit Ploetzeneder – ELI Beamlines
Problem & Solution The problem The current offer The solution how to integrate subsystems delivered with a LabVIEW interface into a TANGO control system? The current offer the Tango binding for LabVIEW: a pure client platform :-( the DataSocket approach: very limited solution, works but doesn’t scale well The solution add server support to the existing Tango binding for LabVIEW 100% native [no indirection, no intermediate protocol]
Tango Bindings for LabVIEW [Vis library] Client VIs Tango Bindings for LabVIEW [C++ shared library] Client API Client API Tango Core [C++ shared library]
Tango Bindings for LabVIEW [Vis library] Client VIs Server VIs Tango Bindings for LabVIEW [C++ shared library] Client API Server API Tango Core [C++ shared library] Client API Server API
LabVIEW Application w/ Tango interface Tango Bindings for LabVIEW [Vis library] Client VIs Server VIs Tango Bindings for LabVIEW [C++ shared library] Client API Server API Tango Core [C++ shared library] Client API Server API
The LabVIEW Server API [main VIs] Starting up Handling client requests Shutting down
The LabVIEW Server API [impl. pattern]
The LabVIEW Server API [main VIs] Cmd ArgIn & ArgOut Get/Set Attr Value Misc.
Supported Tango features So far, support for Tango 9 minus {Pipes, DevEncoded} Pipes support to be studied [e.g. mapping? LV Cluster?] Almost everything configured via POGO e.g. default prop. value, polling, … one exception: inheritance mechanism [to be implemented] Everything taken in charge by the Tango kernel e.g. [write,read]_attributes, events, …
Demo: let’s rewrite TangoTest in LabVIEW Step 1 1.1 - open POGO, 1.2 - define the device interface 1.3 - the generate the XMI file (and nothing else) Step 2 register your device into the Tango database Step 3 specify the path to the XMI file [repository] dedicated PathToPogoXmiFile class property Step 4 implement the device in LabVIEW using the provided VIs done!
Thanks! Any question?