Nodal 14. Juli 2016
14. Juli Nodal 2 Nodal: Was ist das? Interpreter / Programmiersprache integriert: Zugriffe auf Geräte im bisherigen GSI-Kontrollsystem interaktive Nutzung > type GTK1MU1(CURRENTS) Scripte (Programme) Utilities zur Geräte-Bedienung Sammlung im Laufe der Zeit gewachsen CERN-Entwicklung Crowley-Milling, M. C., Shering, G., The NODAL system for the SPS, 1978
14. Juli Nodal 3 Zukunft von Nodal? NODAL-Interpreter ist legacy-software Programmiersprache Modula-2 Zeilen Code Code an vielen Stellen ausgerichtet auf OpenVMS NODAL-Syntax Stand von ~1980 Basic-ähnlich Zeilennummern GOTO-Befehle, sind unerlässlich Unterprogramme allenfalls ansatzweise möglich... NODAL-Programme sehr unübersichtlich Portierung aller Programme unrealistisch 711 Programme Controls-Abteilung: ausgelastet mit Zukunft FESA, White-Rabbit Timing, LSA, JAPC, CMW, RBAC, Logging, Alarming, Archiving,... bestehendes Umfeld? Aufwand minimieren nur das Nötigste leistbar
14. Juli Nodal 4 Aktuelle Kontrollsystemumgebung Linux C, C++ Java Python ... Python: Interpreter interaktiv nutzbar skriptbar aktuelle Programmiersprache objektorientiert gängiges Mittel für Scripte vielfältigster Art Zugriffe auf Geräte am Beschleuniger in-house Modul ‘devacc’ Nodal-Programme: vorwiegend: Bedienung von Geräten Zugriffe auf Geräte-Properties einige weitere Programme generische Lösung: PropHelper ählich wie FESA-Explorer Auflistung der Properties eines beliebigen Gerätes Zugriff auf jede Property des Gerätes Darstellung / Zugriffe konfigurierbar Erweiterungen pro Gerätemodell sowie einzelne Utilities jeweils in Python
14. Juli Nodal 5 Prophelper
6 PropHelper: Anpassungen
14. Juli Nodal 7 PropHelper, Gruppe ’Extra’ Einbinden von Python-Code pro Gerätemodell nicht an Property gebunden Kombination mehrerer Properties, besondere Darstellung, Zugriff auf andere Geräte, ...
14. Juli Nodal 8 Anpassungen: Python-Code Status-Definitionen graphische Darstellung
14. Juli Nodal 9 Utilities Übersichten devstatus Gerätestatus, tabellarisch devdesc Geräteigenschaften ecconfig Liste der Geräte an einer SE propdesc Liste der Properties eines Gerätes dev-dttc-inl Trafo-Interlock im Unilac einige weitere Utilities
14. Juli Nodal 10 Übersichten: devstatus, devdesc devstatus devdesc
14. Juli Nodal 11 Geräte an einer SE: ecconfig
14. Juli Nodal 12 Properties eines Gerätes: propdesc Beispiel: DTC
14. Juli Nodal 13 Interlock Unilac: dev-dttc-inl
14. Juli Nodal 14 Sonstige Utilities dev-swpz: Bedienung einer SW-Pulszentrale dev-read: ein Gerät: Properties (eine/mehrere) lesen, Daten in File ablegen dev-write: ein Gerät: Daten aus File lesen, Properties setzen Datenformat wie bei dev-read dev-group: lese / schreibe eine Property für eine Liste von Geräten Liste der Geräte (und der Setz-Daten) aus File
14. Juli Nodal 15 Erweiterung / eigene Utilities: It’s Python alle vorgestellten Tools, Scripte: Python auch PropHelper Anpasung der Darstellung im PropHelper: Eigenes Modul möglich Zugriffe auf Geräte im GSI-Kontrollsystem: Modul devacc.py nur für bestehendes Kontrollsystem Beispiel, minimalistisch: >>> import devacc >>> devacc.Device(’gtv2di1i’).read(’constant’) [3.0, 1.0, , 500.0, , , , , 2.0, e-06, e-07] >>>
14. Juli Nodal 16 Informationen: CSCO-Wiki CSCO-Wiki: darin Front-End Seite: Beschreibung unter GSI Control System / Tools, Utilities, Hints Utilities, Scripte: PropHelper: darin Link auf Anpassung des PropHelpers: Einführung in Zugriffe auf Geräte aus Python: Module devacc.py