diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..43687c1dbda705d7a266947b654eee4553e4aaab --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +CVS +*.pyc +core +.project +.pydevproject +.idea + diff --git a/FRTND_E/FRTND_E.py b/FRTND_E/FRTND_E.py new file mode 100755 index 0000000000000000000000000000000000000000..237b843434f1263eb022528c462c585db20f723d --- /dev/null +++ b/FRTND_E/FRTND_E.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +# $Author: claudio $ +# +# $Name: $ +# +# $Log: FRTND_E.py,v $ +# Revision 1.3 2017-02-13 09:30:51 claudio +# revision tag +# +# + +import sys +from PyQt4 import QtCore, QtGui +#from ui_frntd_e import Ui_frntd_e +from active_frntd_e import active_frntd_e +app = QtGui.QApplication(sys.argv) +window = QtGui.QDialog() +#ui = Ui_frntd_e() +ui=active_frntd_e() +#ui.setupUi(window) +ui.setup(window) + +window.show() +sys.exit(app.exec_()) diff --git a/FRTND_E/Makefile b/FRTND_E/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..c2aa3aa227560e42c91712ec97a4a2ebf8e0e4b1 --- /dev/null +++ b/FRTND_E/Makefile @@ -0,0 +1,4 @@ +#makefile for PyQt4 panel + +ui_frntd_e.py::frntd_e.ui + pyuic4 frntd_e.ui >ui_frntd_e.py \ No newline at end of file diff --git a/FRTND_E/active_frntd_e.py b/FRTND_E/active_frntd_e.py new file mode 100644 index 0000000000000000000000000000000000000000..9e260e63734f9f3214b9731f82ebba9d82884c37 --- /dev/null +++ b/FRTND_E/active_frntd_e.py @@ -0,0 +1,245 @@ +# deirved class to which active beahvoirou is delegated +# the fatehr class is re-generated by the designer + +# $Author: claudio $ +# +# $Name: $ +# +# $Log: active_frntd_e.py,v $ +# Revision 1.5 2019-06-20 08:14:21 claudio +# #8957, #8947: add new stopper syrmep, tango controlled +# +# Revision 1.4 2017-02-13 09:30:51 claudio +# revision tag +# +# + + +from PyQt4 import QtCore, QtGui +from ui_frntd_e import * +import blfe +import tango + + +class Worker(QtCore.QThread): + def __init__(self, parent=None): + QtCore.QThread.__init__(self, parent) + self.BL = blfe.blfe() + self.exiting = False + self.mode = 'update' + # tango device for syrmep - geco device + self.syrmepstopper = 0 + self.syrmepstopperindex = 0 + self.stopper_value = -1 # 0: closed , 1:open, -1 : unknown + try: + self.syrmepstopper = tango.DeviceProxy('syrmep-control-01.blcs.elettra.trieste.it:20000/syrmep/beamline/geco') + except: + self.syrmepstopper = 0 + + def run(self): + if self.mode == 'update': + self.update() + if self.mode == 'execute': + self.execute() + + def update(self): + self.BL.read() + self.emit(QtCore.SIGNAL("UpdateThread(PyQt_PyObject)"), self.BL) + # read tango status + try: + self.stopper_value = self.syrmepstopper.r_bs4_v + except: + self.stopper_value = -1 + + def execute(self): + errtable = self.BL.closeall() + + #close tango controlloed syrme stopper + try: + self.syrmepstopper.r_bs4_v=0 + except: + self.emit(QtCore.SIGNAL("ExecuteError(PyQt_PyObject,PyQt_PyObject)"), self.BL, 'geco/r_bs4_v failed') + if errtable is None: + self.emit(QtCore.SIGNAL("ExecuteThread(PyQt_PyObject)"), self.BL) + else: + self.emit(QtCore.SIGNAL("ExecuteError(PyQt_PyObject,PyQt_PyObject)"), self.BL, errtable) + + +class active_frntd_e(Ui_frntd_e, QtCore.QObject): + + # ovverride setupUI: create graphics and active object, worker thread , then connects signals and start timer + def setup(self, father): + # create ancesstor graphic objetcs + ui = self.setupUi(father) + self.ui = ui + self.msgbox = None + # connect to slots of this class + self.connect(self.pushClose, QtCore.SIGNAL("clicked()"), self.slot_do_close) + self.connect(self.tableWidget, QtCore.SIGNAL("destroyed()"), self.slot_quit) + + # create worker thread - does all the slow network activities + self.thread = Worker() + + self.connect(self.thread, QtCore.SIGNAL("UpdateThread(PyQt_PyObject)"), self.slot_thread_update) + self.connect(self.thread, QtCore.SIGNAL("ExecuteThread(PyQt_PyObject)"), self.slot_thread_execute) + self.connect(self.thread, QtCore.SIGNAL("ExecuteError(PyQt_PyObject,PyQt_PyObject)"), self.slot_thread_execute_error) + self.connect(self.thread, QtCore.SIGNAL("ExecuteError(PyQt_PyObject,PyQt_PyObject)"), self.slot_thread_tango_error) + + # get reference of BL object from thread + # since the class only reads form BL object non synch primitives are used + # N.B. python copyes object references + self.BL = self.thread.BL + + # configure table widget and create color brushes + self.yellowbrush = QtGui.QBrush(QtGui.QColor("yellow")) + self.greenbrush = QtGui.QBrush(QtGui.QColor("green")) + self.redbrush = QtGui.QBrush(QtGui.QColor("red")) + self.graybrush = QtGui.QBrush(QtGui.QColor("gray")) + n = self.BL.nentries + self.tableWidget.setRowCount(n + 1) + row = 0 + for entry in self.BL.bltable: + bname = entry[2] + objname = entry[0] + stname = entry[4] + col0 = QtGui.QTableWidgetItem(bname, 0) + col1 = QtGui.QTableWidgetItem(objname, 1) + col2 = QtGui.QTableWidgetItem(stname, 2) + col2.setBackground(self.graybrush) + self.tableWidget.setItem(row, 0, col0) + self.tableWidget.setItem(row, 1, col1) + self.tableWidget.setItem(row, 2, col2) + self.tableWidget.setRowHeight(row, 22) + row = row + 1 + # add Tango managed entries - different + bname = 'Syrmep' + objname = 'geco/r_bs4_v' + stname = 'UNKNOWN' + col0 = QtGui.QTableWidgetItem(bname, 0) + col1 = QtGui.QTableWidgetItem(objname, 1) + col2 = QtGui.QTableWidgetItem(stname, 2) + col2.setBackground(self.graybrush) + self.tableWidget.setItem(row, 0, col0) + self.tableWidget.setItem(row, 1, col1) + self.tableWidget.setItem(row, 2, col2) + self.tableWidget.setRowHeight(row, 22) + self.thread.syrmepstopperindex = row + self.syrmepstopperindex = row + row = row + 1 + palette = self.label.palette() + palette.setBrush(QtGui.QPalette.Window, self.graybrush) + self.label.setPalette(palette) + self.label.setAutoFillBackground(1) + self.label.setText('UNKNOWN') + + # resize columns + self.tableWidget.setColumnWidth(0, 130) + self.tableWidget.setColumnWidth(1, 310) + + # do first table update + self.update_table() + # start timer + self.timer = QtCore.QTimer(self) + self.connect(self.timer, QtCore.SIGNAL("timeout()"), self.update_table) + self.timer.start(3000) + + return ui + + def update_table(self): + # configure and start thread + self.thread.mode = 'update' + self.thread.start() + + def redraw_table(self, myBL): + # redraw informations + row = 0 + for entry in myBL.bltable: + stname = entry[4] + item = self.tableWidget.item(row, 2) + item.setText(stname) + if stname == 'OPEN': + item.setBackground(self.redbrush) + if stname == 'CLOSED': + item.setBackground(self.greenbrush) + if stname == 'ERROR': + item.setBackground(self.yellowbrush) + if stname == 'UNKNOWN': + item.setBackground(self.graybrush) + # self.tableWidget.setItem(row,2,item) + row = row + 1 + # check syrmep tango reading + idx = self.thread.syrmepstopperindex + item = self.tableWidget.item(idx, 2) + if self.thread.stopper_value == 1: + item.setBackground(self.redbrush) + item.setText('OPEN') + if self.thread.stopper_value == 0: + item.setBackground(self.greenbrush) + item.setText('CLOSED') + if self.thread.stopper_value == -1: + item.setBackground(self.graybrush) + item.setText('UNKNOWN') + palette = self.label.palette() + if (myBL.allclosed() == 1 and self.thread.stopper_value == 0): + palette.setBrush(QtGui.QPalette.Window, self.greenbrush) + self.label.setText('ALL CLOSED') + else: + palette.setBrush(QtGui.QPalette.Window, self.redbrush) + self.label.setText('OPEN/CLOSED') + self.label.setPalette(palette) + self.label.setAutoFillBackground(1) + + def slot_do_close(self): + # first stop aqcusition thread + self.timer.stop() + self.thread.wait() + + # start execution thread + self.thread.mode = 'execute' + self.thread.start() + + # post dialog box since there is some time to wait + if self.msgbox is None: + self.msgbox = QtGui.QProgressDialog('Closing front-ends...', '', 0, 0) + self.msgbox.setLabelText('Closing front-ends...') + self.msgbox.setCancelButtonText('') + self.msgbox.setWindowTitle('BEAMLINE FRONT END') + self.msgbox.setModal(True) + # How do you remove a button in a dialog???? + # butt=self.msgbox.button(QtGui.QMessageBox.Close) + # as a work-aroud, remove cancel functionality + QtCore.QObject.disconnect(self.msgbox, QtCore.SIGNAL('canceled()'), self.msgbox, QtCore.SLOT('cancel()')) + self.msgbox.show() + QtCore.SIGNAL + else: + self.msgbox.show() + + def slot_thread_update(self, myBL): + # slot called when read is terminated + self.redraw_table(myBL) + + def slot_thread_execute(self, myBL): + # called when execution thread is terminated normally + self.msgbox.close() + self.redraw_table(myBL) + self.timer.start(3000) + + def slot_thread_execute_error(self, myBL, myerrtable): + # called when execution thread is terminated with error + self.msgbox.close() + self.redraw_table(myBL) + self.timer.start(3000) + # shuold improve formatting of beamline errors... + QtGui.QMessageBox.critical(self.ui, 'front-end close', repr(myerrtable)) + + def slot_thread_tango_error(self, myBL, msg): + # called when execution thread is terminated with error + self.msgbox.close() + self.redraw_table(myBL) + self.timer.start(3000) + # shuold improve formatting of beamline errors... + QtGui.QMessageBox.critical(self.ui, 'syrmep front-end close', msg) + + def slot_quit(self): + self.timer.stop() + self.thread.wait() diff --git a/FRTND_E/frntd_e.ui b/FRTND_E/frntd_e.ui new file mode 100644 index 0000000000000000000000000000000000000000..2d9b84c45bf194a92a12185a7c1032f4a437f086 --- /dev/null +++ b/FRTND_E/frntd_e.ui @@ -0,0 +1,163 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>frntd_e</class> + <widget class="QDialog" name="frntd_e"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>702</width> + <height>1021</height> + </rect> + </property> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="windowTitle"> + <string>BEAMLINE FRONT END</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QGridLayout"> + <item row="0" column="0"> + <layout class="QHBoxLayout"> + <item> + <layout class="QVBoxLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="font"> + <font> + <pointsize>10</pointsize> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="frameShape"> + <enum>QFrame::Panel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Sunken</enum> + </property> + <property name="lineWidth"> + <number>1</number> + </property> + <property name="text"> + <string>ALL CLOSED</string> + </property> + <property name="textFormat"> + <enum>Qt::PlainText</enum> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + <property name="margin"> + <number>1</number> + </property> + <property name="textInteractionFlags"> + <set>Qt::NoTextInteraction</set> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pushClose"> + <property name="font"> + <font> + <pointsize>10</pointsize> + </font> + </property> + <property name="text"> + <string>CLOSE ALL</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QTableWidget" name="tableWidget"> + <property name="font"> + <font> + <pointsize>9</pointsize> + </font> + </property> + <property name="autoFillBackground"> + <bool>true</bool> + </property> + <property name="lineWidth"> + <number>1</number> + </property> + <property name="autoScroll"> + <bool>false</bool> + </property> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="tabKeyNavigation"> + <bool>false</bool> + </property> + <property name="showDropIndicator" stdset="0"> + <bool>false</bool> + </property> + <property name="dragDropOverwriteMode"> + <bool>false</bool> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::MultiSelection</enum> + </property> + <property name="selectionBehavior"> + <enum>QAbstractItemView::SelectRows</enum> + </property> + <property name="textElideMode"> + <enum>Qt::ElideNone</enum> + </property> + <property name="sortingEnabled"> + <bool>false</bool> + </property> + <property name="wordWrap"> + <bool>false</bool> + </property> + <property name="cornerButtonEnabled"> + <bool>false</bool> + </property> + <column> + <property name="text"> + <string>Beamline</string> + </property> + </column> + <column> + <property name="text"> + <string>Point Name</string> + </property> + </column> + <column> + <property name="text"> + <string>Status</string> + </property> + </column> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/FRTND_E/ui_frntd_e.py b/FRTND_E/ui_frntd_e.py new file mode 100644 index 0000000000000000000000000000000000000000..3602c35d658e48320202ec7fe50244d7d62d30fb --- /dev/null +++ b/FRTND_E/ui_frntd_e.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'frntd_e.ui' +# +# Created by: PyQt4 UI code generator 4.12.1 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_frntd_e(object): + def setupUi(self, frntd_e): + frntd_e.setObjectName(_fromUtf8("frntd_e")) + frntd_e.resize(702, 1021) + font = QtGui.QFont() + font.setPointSize(10) + frntd_e.setFont(font) + frntd_e.setSizeGripEnabled(True) + self.gridlayout = QtGui.QGridLayout(frntd_e) + self.gridlayout.setObjectName(_fromUtf8("gridlayout")) + self.hboxlayout = QtGui.QHBoxLayout() + self.hboxlayout.setObjectName(_fromUtf8("hboxlayout")) + self.vboxlayout = QtGui.QVBoxLayout() + self.vboxlayout.setObjectName(_fromUtf8("vboxlayout")) + self.label = QtGui.QLabel(frntd_e) + font = QtGui.QFont() + font.setPointSize(10) + font.setBold(True) + font.setWeight(75) + self.label.setFont(font) + self.label.setFrameShape(QtGui.QFrame.Panel) + self.label.setFrameShadow(QtGui.QFrame.Sunken) + self.label.setLineWidth(1) + self.label.setTextFormat(QtCore.Qt.PlainText) + self.label.setAlignment(QtCore.Qt.AlignCenter) + self.label.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) + self.label.setObjectName(_fromUtf8("label")) + self.vboxlayout.addWidget(self.label) + self.pushClose = QtGui.QPushButton(frntd_e) + font = QtGui.QFont() + font.setPointSize(10) + self.pushClose.setFont(font) + self.pushClose.setObjectName(_fromUtf8("pushClose")) + self.vboxlayout.addWidget(self.pushClose) + spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.vboxlayout.addItem(spacerItem) + self.hboxlayout.addLayout(self.vboxlayout) + self.tableWidget = QtGui.QTableWidget(frntd_e) + font = QtGui.QFont() + font.setPointSize(9) + self.tableWidget.setFont(font) + self.tableWidget.setAutoFillBackground(True) + self.tableWidget.setLineWidth(1) + self.tableWidget.setAutoScroll(False) + self.tableWidget.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) + self.tableWidget.setTabKeyNavigation(False) + self.tableWidget.setProperty("showDropIndicator", False) + self.tableWidget.setDragDropOverwriteMode(False) + self.tableWidget.setAlternatingRowColors(True) + self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) + self.tableWidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) + self.tableWidget.setTextElideMode(QtCore.Qt.ElideNone) + self.tableWidget.setWordWrap(False) + self.tableWidget.setCornerButtonEnabled(False) + self.tableWidget.setObjectName(_fromUtf8("tableWidget")) + self.tableWidget.setColumnCount(3) + self.tableWidget.setRowCount(0) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(2, item) + self.hboxlayout.addWidget(self.tableWidget) + self.gridlayout.addLayout(self.hboxlayout, 0, 0, 1, 1) + + self.retranslateUi(frntd_e) + QtCore.QMetaObject.connectSlotsByName(frntd_e) + + def retranslateUi(self, frntd_e): + frntd_e.setWindowTitle(_translate("frntd_e", "BEAMLINE FRONT END", None)) + self.label.setText(_translate("frntd_e", "ALL CLOSED", None)) + self.pushClose.setText(_translate("frntd_e", "CLOSE ALL", None)) + self.tableWidget.setSortingEnabled(False) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("frntd_e", "Beamline", None)) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("frntd_e", "Point Name", None)) + item = self.tableWidget.horizontalHeaderItem(2) + item.setText(_translate("frntd_e", "Status", None)) + diff --git a/TCPSserver/README b/TCPSserver/README new file mode 100644 index 0000000000000000000000000000000000000000..f1110217fc675910660a6ce064ad77cf97f120f0 --- /dev/null +++ b/TCPSserver/README @@ -0,0 +1,20 @@ +Il servzio TCPS viene gestito da un certo numero di istanze differenti con port number assegnato in modo da ripartire il carico, +le uscite da bending - per ora - leggono tutte dalla stessa istanza. + +Le porte vanno assegnate per corrispondere al range di bcs da 1.1 (11) A 11.2 (112) +011 TWIN mIC : 20011 +012 FEL - Nanospectroscopy : 20012 +022 SuperESCA - Escamicroscopy : 20022 +032 VUV photoemission - Spectromicroscopy : 20032 +042 Circularly Polarized : 20042 +052 X-ray diffraction - SAXS : 20052 +061 SYRMEP - MSB : 20061 +062 Gas Phase : 20062 +072 ALOISA : 20072 +081 Lilit - BEAR : 20081 +082 Bach : 20082 +092 APE : 20092 +101 Microfabrication : 20101 +102 Iuvs BaDElph : 20102 +111 Exsafs : 20111 +112 Xrd2 : 20112 (previsto ma non attivato, ci sara' un srver tango diretto) \ No newline at end of file diff --git a/TCPSserver/TCPS2tango.coverage b/TCPSserver/TCPS2tango.coverage new file mode 100644 index 0000000000000000000000000000000000000000..6be62e646ae741c1f75f2a69a24eb48b40ea61f7 Binary files /dev/null and b/TCPSserver/TCPS2tango.coverage differ diff --git a/TCPSserver/TCPS2tango.py b/TCPSserver/TCPS2tango.py new file mode 100644 index 0000000000000000000000000000000000000000..4d3ad64c40ebdec4dd4d64f6319f506a61197233 --- /dev/null +++ b/TCPSserver/TCPS2tango.py @@ -0,0 +1,390 @@ +# parse,check,translate TCPS to tango +# and exec tabled actions + + +import string +import sys +import PyTango + +#module wide constants +okmsg = 'Command execution OK' +errmsg_header = '*** ERROR' +term = "\r\n" + + +################################################################################################# +#utilities - taken from tangoclient.py to prpperly convert/assign types to command and attributes +#from strings + +def convertToAttributeValue(pars, info, logger): + logger.debug( 'ConvertToAttribute() entering...') + #val = PyTango.AttributeValue() + #val.name = info.name + logger.debug( 'ConvertToAttribute() entered...') + if info.data_format == PyTango.SCALAR: + if info.data_type == PyTango.DevBoolean: + if pars[0] == '0' or pars[0].lower() == 'false': + value = False + else: + value = True + elif info.data_type == PyTango.DevFloat or info.data_type == PyTango.DevDouble: + value = float(pars[0]) + elif info.data_type == PyTango.ConstDevString or info.data_type == PyTango.DevString or info.data_type == PyTango.DevUChar: + value = pars[0] + elif info.data_type == PyTango.DevLong or info.data_type == PyTango.DevShort or info.data_type == PyTango.DevULong or info.data_type == PyTango.DevUShort: + value = int(pars[0]) + elif info.data_format == PyTango.SPECTRUM: + temp = list() + if info.data_type == PyTango.DevBoolean: + for p in pars: + if p == '0' or p.lower() == 'false': + temp.append(False) + else: + temp.append(True) + elif info.data_type == PyTango.DevFloat or info.data_type == PyTango.DevDouble: + for p in pars: + temp.append(float(p)) + elif info.data_type == PyTango.ConstDevString or info.data_type == PyTango.DevString or info.data_type == PyTango.DevUChar: + temp = pars + elif info.data_type == PyTango.DevLong or info.data_type == PyTango.DevShort or info.data_type == PyTango.DevULong or info.data_type == PyTango.DevUShort: + temp.append(int(p)) + value = temp + return value + +####--------------------------------------------------------------------------------------------- + +def convertToCommandInput(pars, mtype): + if mtype == PyTango.DevBoolean: + if pars[0] == '0' or pars[0].lower() == 'false': + return False + else: + return True + elif mtype == PyTango.DevFloat or mtype == PyTango.DevDouble: + return float(pars[0]) + elif mtype == PyTango.ConstDevString or mtype == PyTango.DevString or mtype == PyTango.DevUChar: + return pars[0] + elif mtype == PyTango.DevLong or mtype == PyTango.DevShort or mtype == PyTango.DevULong or mtype == PyTango.DevUShort: + return int(pars[0]) + + if mtype == PyTango.DevVarBooleanArray: + temp = list() + for p in pars: + if p == '0' or p.lower() == 'false': + temp.append(False) + else: + temp.append(True) + return temp + elif mtype == PyTango.DevVarFloatArray or mtype == PyTango.DevVarDoubleArray: + temp = list() + for p in pars: + temp.append(float(p)) + return temp + elif mtype == PyTango.DevVarStringArray: + return pars + elif mtype == PyTango.DevVarLongArray or mtype == PyTango.DevVarShortArray or mtype == PyTango.DevVarULongArray or mtype == PyTango.DevVarUShortArray: + temp = list() + for p in pars: + temp.append(int(p)) + return temp + else: + return None + + +################################################################################################# + +class ProxyContainer(object): + + """ + This class parses the configuration files, + build the approriate TCPSproxyes and inserts the in a map. + + :version: + :author: + """ + def __init__(self): + #init to empty dictionaries the two main dispatch tables + self.get_dict = {} + self.set_dict = {} + def add_logger(self, addedlogger): + self.logger = addedlogger + def parse_conf_file(self, fname): + """ + + @param string fname : + @return : + @author + """ + self.logger.debug('ProxyContainer.parse_conf_file() parsing: '+fname) + try: + conf_file = open(fname,'r') + except: + self.logger.fatal( 'ProxyContainer.parse_conf_file() fatal error opening conf_file: '+fname) + raise #impossible to continue.... + count = 0 + result = True + for rawline in conf_file.readlines(): + if not rawline.strip(): + continue #discard empty lines + count = count+1 + line=' '.join(rawline.split()) # collapse multiple white spaces into single white space + if(line[0]=='#' or line[0]=='*' or not line.strip()) : #discard comment and empyt lines + continue + datum=string.split(line,' ') + if (datum[0]!='GET' and datum[0] !='SET'): + result = False + self.logger.error( 'ProxyContainer: parse_conf_file error on line '+repr(count) +' '+ datum[0]) + return result + if(datum[0]=='GET'): + if datum[1] not in self.get_dict: + tangostring = datum[-1] + if tangostring.count('->') ==1: + px = ProxyCommand(tangostring.strip(),self.logger) + elif tangostring.count('/') >=3: + px = ProxyAttribute(tangostring.strip(),self.logger) + self.get_dict[datum[1]] = px + else: + result=False + self.logger.error( 'ProxyContainer: parse_conf_file error on line '+repr(count)+' : SET duplicate '+datum[1]) + return result + + if(datum[0]=='SET'): + #create special keys for searching - must include also list of parameter names + skey = datum[1] + for s in datum[2:-1]: + skey = skey+'_'+s + if skey not in self.set_dict: + tangostring = datum[-1] + if tangostring.count('->') ==1: + px = ProxyCommand(tangostring.strip(),self.logger) + elif tangostring.count('/') >=3: + self.logger.debug('Inserting SET attribute '+tangostring.strip()+' with key: '+skey) + px = ProxyAttribute(tangostring.strip(),self.logger) + self.set_dict[skey] = px + else: + result=False + self.logger.error( 'ProxyContainer: parse_conf_file error on line '+repr(count)+' : SET duplicate '+repr(datum)) + return result + + return result + + + def dispatch_call(self, data): + """ + use "data" for finding the appropriate TCPSproxy, then invoches the appropriate + operation to it. + + @param string data : + @return string : + @author + """ + #print 'ProxyContainer: dispacth_call '+data + self.logger.debug('processing '+data) + try: + cleandata=' '.join(data.split()) # collapse multiple white spaces into single white space + selector=string.split(cleandata," ") + self.logger.debug('processing selector ' +selector[0]) + except: + self.logger.error('message not correctly configured:'+data) + return errmsg_header + ' message not correctly configured'+term + try: + if selector[0]=='GET': + if self.get_dict.has_key(selector[1]): + handler=self.get_dict[selector[1]] + resp=handler.get() + if(resp==None): + self.logger.error('not correctly handled: '+data) + return errmsg_header +' not correctly handled'+term + return resp + else: + self.logger.error(selector[1] + ' is not configured as GET point') + return errmsg_header + ' ' +selector[1]+' is not configured as GET point'+term + + elif selector[0]=='SET': + self.logger.debug('processing SET...selector : '+selector[1]) + skey=selector[1] + valuelist=[] + for s in selector[2:]: + arg=s.split(',') + cmd=arg[0] + for v in arg[1:]: + valuelist.append(v) + self.logger.debug('processing SET..adding to valuelist: '+v) + skey=skey+'_'+cmd + self.logger.debug('processing SET...searching for '+skey) + if self.set_dict.has_key(skey): + handler=self.set_dict[skey] + if (handler==None): + self.logger.error('SET: handler not found for: '+skey) + self.logger.debug('processing SET...calling set() for device... ') + resp=handler.set(valuelist) + self.logger.debug('processing SET..set() called or device... ') + if(resp==None): + self.logger.error('not correctly handled: '+data) + return errmsg_header + ' not correctly handled'+term + return resp + else: + self.logger.debug(selector[1] + ' is not configured as SET point') + return errmsg_header +' '+selector[1] +' is not configured as SET point'+term + # first field is neither SET nor GET... error! + self.logger.error('not correctly configured: '+data) + return errmsg_header +' not correctly configured'+term + except: + self.logger.error('exception processing data:' + data) + +########################################################################################## +# 'abstract' class for Proxy Objects +class Proxy(object): + def get(self): + pass + def set(self,data): + pass +########################################################################################## +class ProxyAttribute(Proxy): + def __init__(self, attrname, log): + pos=attrname.rfind('/') + self.__attribute=attrname[(pos+1):].strip() #get read of terminating chrartcers if left + self.__devname=attrname[:pos] + self.__attrinfo=0 + self.logger=log + try: + self.__device=PyTango.DeviceProxy(self.__devname) + #self.__attrinfo=self.__device.get_attribute_config(self.__attribute) + except: + self.logger.error( 'ProxyAttribute.init(): failed to create '+self.__devname+' for: '+attrname) + return None + try: + self.__attrinfo=self.__device.get_attribute_config(self.__attribute) + except: + self.__attrinfo=0 + self.logger.error( 'ProxyAttribute.init(): failed to create self.__attrinfo for: '+self.__devname+'/'+self.__attribute) + return None + self.logger.debug('ProxyAttribute init() OK: '+self.__devname+'/'+self.__attribute) + + def get(self): + error=False + if self.__attrinfo==0: + try: + self.logger.debug( 'ProxyAttribute.get(): getting attr config for : '+self.__devname+'/'+self.__attribute) + self.__attrinfo=self.__device.get_attribute_config(self.__attribute) + except: + self.logger.error( 'ProxyAttribute.get(): failed to create self.__attrinfo for: '+self.__devname+'/'+self.__attribute) + self.__attrinfo=0 + error=True + #rstat='BEN-------' #simplicistic error notification ! + #resp='R'+','+'?'+','+rstat+','+0+term + return 'R,?,BEN------,0'+term + try: + #self.logger.debug( 'ProxyAttribute.get(): reading : '+self.__devname) + attr=self.__device.read_attribute(self.__attribute) #read_attribute_as_string ???? + val=attr.value + #self.logger.debug( 'ProxyAttribute.get(): reading value ok') + except PyTango.DevFailed,myex: + des0=myex[0].desc + self.logger.error ('GET: '+self.__devname+'/'+self.__attribute+' failed with exception '+des0) + #print 'ProxyAttribute: get() '+self.__attribute+' ERROR' + val=0 + error=True + + # analyze result and prepare answer + rtype='?' + racq='R' #fixed + if self.__attrinfo.data_format == PyTango.SCALAR: + if self.__attrinfo.data_type == PyTango.DevBoolean: + rtype='D' + if val: + rvalue='1,'+self.__attrinfo.unit + else: + rvalue='0,'+self.__attrinfo.unit + if self.__attrinfo.data_type == PyTango.DevDouble or self.__attrinfo.data_type == PyTango.DevFloat: + self.logger.debug( 'ProxyAttribute.get(): processing float...') + rtype='A' + rvalue=self.__attrinfo.format % val + ','+self.__attrinfo.unit + self.logger.debug( 'ProxyAttribute.get(): processing float:'+rvalue) + if self.__attrinfo.data_type == PyTango.DevLong or self.__attrinfo.data_type == PyTango.DevShort or self.__attrinfo.data_type == PyTango.DevULong or self.__attrinfo.data_type == PyTango.DevUShort: + rtype='I' + rvalue=self.__attrinfo.format % val + ','+self.__attrinfo.unit + if self.__attrinfo.data_type== 19: #pyTango.DevState + rtype='I' + rvalue= '%d'% int(val) + ','+self.__attrinfo.unit + if(error): + rstat='BEN-------' #simplicistic error notification ! + else: + rstat='----------' + elif self.__attrinfo.data_format == PyTango.SPECTRUM and self.__attrinfo.data_type == PyTango.DevBoolean: + # special handling of bool spectrum - which are turned into bit masks or Bitmap + rtype='B' + longval=0 + mask=0x1 + count = 0 + #if self.__attrinfo.writable==PyTango._PyTango.AttrWriteType.READ_WRITE : + numbits=attr.dim_x #make sure to get ALWAY the Read values, also with READ_WRITE attributes + + if self.__devname.rfind('vlvfe') > 0: #workaround for different bitmaps of new valves. Dirty but... C.S. nov. 2016 + numbits=3 #show only open close local bits - better solution must implelemented + + for p in val: + count = count + 1 + if count >32 or count > numbits: + break + # stuff bits into bitmap - max 64 bits + + if p: + longval= longval | mask + mask = mask << 1 + rvalue= '%d' % longval +','+self.__attrinfo.unit + if(error): + rstat='BEN-------' #simplicistic error notification ! + else: + rstat='----------' + resp=racq+','+rtype+','+rstat+','+rvalue+term + self.logger.debug( 'ProxyAttribute.get(): about to return:'+resp) + return resp + + +#------------------------------------------------------------------ +# set takes value in imput - use python list for arrays + def set(self,data): + self.logger.debug( 'ProxyAttribute.set() entering for '+self.__devname+'/'+self.__attribute) + if self.__attrinfo==0: + try: + self.__attrinfo=self.__device.get_attribute_config(self.__attribute) + except PyTango.DevFailed,e: + des=e[0].desc + errmsg= errmsg_header+ ' in perform command : '+des + self.logger.error( 'ProxyAttribute.set(): failed to create self.__attrinfo for: '+self.__devname+'/'+self.__attribute) + self.__attrinfo=0 + return errmsg+des+term + try: + #self.logger.debug( 'ProxyAttribute.set(): converting attribute for '+self.__devname+'/'+self.__attribute) + val=convertToAttributeValue(data,self.__attrinfo,self.logger) + self.logger.debug( 'ProxyAttribute.set(): for '+self.__devname+'/'+self.__devname+'/'+self.__attribute) + self.__device.write_attribute(self.__attrinfo,val) + self.logger.info( 'SET: ACCEPT'+self.__devname+'/'+self.__attribute+' '+data[0]) + return okmsg+term + except PyTango.DevFailed,myex: + des0=myex[0].desc + self.logger.debug ('SET: '+self.__devname+'/'+self.__attribute+' failed with exception '+des0) + msg = errmsg_header +' in perform command : ' + self.logger.debug('msg:'+msg) + if des0.find('RESPINTA')>1: + msg = errmsg_header + ' in access violation : ' + self.logger.info( 'SET: REJECT '+self.__devname+'/'+self.__attribute+' '+data[0]) + else: + msg = errmsg_header + ' in perform command : ' + self.logger.info ('SET: '+self.__devname+'/'+self.__attribute+' failed with exception '+des0) + return msg+des0+term + + +######################################################################################## +class ProxyCommand(Proxy): + def __init__(self,cmdname,log): + pos=cmdname.rfind('->') + self.__command=cmdname[(pos+2):].strip() + self.__devname=cmdname[:pos] + self.logger=log + try: + self.__device=PyTango.DeviceProxy(self.__devname) + self.type=self.__device.command_query(self.__command) + except: + self.logger.error('ProxyCommand(): failed to create '+self.__devname) +######################################################################################## diff --git a/TCPSserver/TCPSserver.e4p b/TCPSserver/TCPSserver.e4p new file mode 100644 index 0000000000000000000000000000000000000000..7ec4265f45d4bf82a88ce98cecfc281c36818ae0 --- /dev/null +++ b/TCPSserver/TCPSserver.e4p @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE Project SYSTEM "Project-4.6.dtd"> +<!-- eric4 project file for project TCPSserver --> +<!-- Saved: 2012-02-24, 14:20:40 --> +<!-- Copyright (C) 2012 , --> +<Project version="4.6"> + <Language></Language> + <ProgLanguage mixed="0">Python</ProgLanguage> + <ProjectType>Console</ProjectType> + <Description></Description> + <Version>0.1</Version> + <Author></Author> + <Email></Email> + <Sources> + <Source>TCPStwserver.py</Source> + <Source>TCPS2tango.py</Source> + </Sources> + <Forms> + </Forms> + <Translations> + </Translations> + <Resources> + </Resources> + <Interfaces> + </Interfaces> + <Others> + </Others> + <MainScript>TCPStwserver.py</MainScript> + <Vcs> + <VcsType>CVS</VcsType> + <VcsOptions> + <dict> + <key> + <string>add</string> + </key> + <value> + <list> + <string></string> + </list> + </value> + <key> + <string>checkout</string> + </key> + <value> + <list> + <string></string> + </list> + </value> + <key> + <string>commit</string> + </key> + <value> + <list> + <string></string> + </list> + </value> + <key> + <string>diff</string> + </key> + <value> + <list> + <string>-u3</string> + <string>-p</string> + </list> + </value> + <key> + <string>export</string> + </key> + <value> + <list> + <string></string> + </list> + </value> + <key> + <string>global</string> + </key> + <value> + <list> + <string>-f</string> + <string>-z3</string> + </list> + </value> + <key> + <string>history</string> + </key> + <value> + <list> + <string>-e</string> + <string>-a</string> + </list> + </value> + <key> + <string>log</string> + </key> + <value> + <list> + <string></string> + </list> + </value> + <key> + <string>remove</string> + </key> + <value> + <list> + <string>-f</string> + </list> + </value> + <key> + <string>status</string> + </key> + <value> + <list> + <string>-v</string> + </list> + </value> + <key> + <string>tag</string> + </key> + <value> + <list> + <string>-c</string> + </list> + </value> + <key> + <string>update</string> + </key> + <value> + <list> + <string>-dP</string> + </list> + </value> + </dict> + </VcsOptions> + <VcsOtherData> + <dict> + </dict> + </VcsOtherData> + </Vcs> + <FiletypeAssociations> + <FiletypeAssociation pattern="*.pyw" type="SOURCES" /> + <FiletypeAssociation pattern="*.idl" type="INTERFACES" /> + <FiletypeAssociation pattern="*.py" type="SOURCES" /> + <FiletypeAssociation pattern="*.ptl" type="SOURCES" /> + </FiletypeAssociations> + <Checkers> + <CheckersParams> + <dict> + <key> + <string>PYLINT</string> + </key> + <value> + <dict> + <key> + <string>dialogReport</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableBasic</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableClasses</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableDesign</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableExceptions</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableFormat</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableImports</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableMetrics</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableMiscellaneous</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableNewstyle</string> + </key> + <value> + <bool>False</bool> + </value> + <key> + <string>enableRPython</string> + </key> + <value> + <bool>False</bool> + </value> + <key> + <string>enableSimilarities</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableTypecheck</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>enableVariables</string> + </key> + <value> + <bool>True</bool> + </value> + <key> + <string>htmlReport</string> + </key> + <value> + <bool>False</bool> + </value> + <key> + <string>reportFile</string> + </key> + <value> + <unicode>pylint.html</unicode> + </value> + <key> + <string>txtReport</string> + </key> + <value> + <bool>False</bool> + </value> + </dict> + </value> + </dict> + </CheckersParams> + </Checkers> +</Project> \ No newline at end of file diff --git a/TCPSserver/TCPStwserver.py b/TCPSserver/TCPStwserver.py new file mode 100755 index 0000000000000000000000000000000000000000..d9368be06c4befb2958d6ff80e262a691e517ed4 --- /dev/null +++ b/TCPSserver/TCPStwserver.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python +# TCPS server-bridge based on twisted +from twisted.internet.protocol import Protocol, Factory +from twisted.internet import reactor +import time +import sys +import TCPS2tango +import logging +import logging.handlers + +#obsolete! must be switched to argparse +import optparse + +global_logging=logging.getLogger('TCPS') +# there should be a cleaner way ... but now I use a GLOBAL..... +#-------------------------------------------------------------- + +class twistedTCPS(Protocol): + 'adapter of TCPS protocol for twisted package' + def __init__(self): + self.__myname='default TCPS server' + def connectionMade(self): + if(self.factory._timeout): + self.transport.socket.settimeout(self.factory._timeout) # it is possible to set timeouts!! + self.__peer=self.transport.getPeer() + global_logging.info ('new connection: ' + self.__peer.host + ':' + repr(self.__peer.port)) + + def connectionLost(self, reason): + self.transport.loseConnection() + global_logging.info('connection closed/lost: ' + self.__peer.host + ':' + repr(self.__peer.port)) + + def dataReceived(self, data): + try: + resp=self.factory.handler.dispatch_call(data.strip()) + self.transport.write(resp) + except: + global_logging.error ('exception writing data to ' + self.__peer.host + ':' + repr(self.__peer.port)) + +# method to associate TCPS object and other initialization data +def makeTCPSFactory(fname,logger,timeout=None,): + factory=Factory() + factory.protocol=twistedTCPS + factory._fname=fname + factory._timeout=timeout + factory.handler=TCPS2tango.ProxyContainer() + factory.handler.add_logger(logger) + factory.handler.parse_conf_file(fname) + + return factory + +#----------------------------------------------------------------- +#remeber to switch use argparse for configuring cmd line options with python > 2.7 + +def main(argv=None): + if argv is None: + argv = sys.argv # argv for initializing , etc + + #parse comnd line and prepare optinal arguments + parser = optparse.OptionParser(description='TCPStwserver options') + parser.add_option('-f','--configfile',help='config_file') + parser.add_option('-p', '--port', help='tpc port number [20000]') + parser.add_option('-l','--logfile',help='log_file') + parser.add_option('-v','--loglevel',help='log_level [debug|info|warning|error|critical]') + parser.add_option('-s','--logsize',help='log_file_size') + parser.add_option('-V','--verbose',help='echo debug to console') + (options,argmy) = parser.parse_args() + if options.configfile: + fname=options.configfile + else: + print 'usage: '+sys.argv[0] + ' --configfile= ' + return 1 + + if options.port: + tcpport=int(options.port) + else: + tcpport=20000 + + if options.logfile: + lfile=options.logfile + else: + lfile='/dev/null' + + if options.loglevel: + lev=options.loglevel + level=-1 + if lev=='debug': + level=logging.DEBUG + elif lev=='info': + level=logging.INFO + elif lev=='warning': + level=logging.WARNING + elif lev=='error': + level=logging.ERROR + elif lev=='critical': + level=logging.CRITICAL + elif lev=='notset': + level==logging.NOTSET + else: + lev='notset' + level=logging.NOTSET + + if options.logsize: + mBytes=int(options.logsize) + else: + mBytes=2196608 + + if options.verbose: + verbose=True + else: + verbose=False + + # Set up a specific logger with our desired output level + # use INFO for for tracking all SET operations + # use ERROR and CRITICAL for errors (non-fatal and fatal) + # use INFO and DEBUG for diagnostics + # info is set with -V + #debug is set + logger = logging.getLogger('TCPS') + logger.setLevel(level) #default level is NOTSET + formatter = logging.Formatter("%(asctime)s\t%(levelname)s\t%(message)s") + + # Add the log message handler to the logger + handler = logging.handlers.RotatingFileHandler(lfile, maxBytes=mBytes, backupCount=5) + + # create and add formatter to logger + handler.setFormatter(formatter) + + logger.addHandler(handler) + + if verbose: + ch = logging.StreamHandler() + ch.setLevel(level) + ch.setFormatter(formatter) + logger.addHandler(ch) + logger.info('debug echo to console') + + # use special builder to associate our data to TCPS object + # extra arguments are: + # 'internal name' + # timeout for network calls + logger.info('using config file '+fname) + factory=makeTCPSFactory(fname,logger) + + # 20000 is the port assigned to TPCS - 30 seconds timeount + reactor.listenTCP(tcpport, factory,30.0) + # we can also open on multiple ports, just make another instance another reactor object + #reactor.listenTCP(30000, factory,30.0) + logger.debug('entering loop') + reactor.run() + logger.debug('exit loop') +if __name__ == "__main__": + sys.exit(main()) diff --git a/TCPSserver/TODO b/TCPSserver/TODO new file mode 100644 index 0000000000000000000000000000000000000000..c727ff6401a3fe4f5684c716659e4d93ea49a3ea --- /dev/null +++ b/TCPSserver/TODO @@ -0,0 +1,2 @@ +- analizzare "exception processing data" +- Transient CORBA excpetion:come si alza il timeout? \ No newline at end of file diff --git a/TCPSserver/elettrabcsbridge.cfg b/TCPSserver/elettrabcsbridge.cfg new file mode 100644 index 0000000000000000000000000000000000000000..e7dd976a7e664067e06b2d8ab869fe501ef7f5cd --- /dev/null +++ b/TCPSserver/elettrabcsbridge.cfg @@ -0,0 +1,329 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET FRONTEND_MACHINE_MACHINE_1_P120S01M tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s01.03/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P120S012 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S1.7_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P120S101 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s10.03/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P120S102 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s10.07/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P120S111 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s11.03/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P120S112 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s11.07/Pressure +GET 022F_MACHINE_MACHINE_1_P120S022 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S2.7_PRES_RR +GET 032F_MACHINE_MACHINE_1_P120S032 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s03.07/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P120S042 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s04.07/Pressure +GET 052F_MACHINE_MACHINE_1_P120S052 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S5.7_PRES_RR +GET 061F_MACHINE_MACHINE_1_P120S061 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S6.3_PRES_RR +GET 062F_MACHINE_MACHINE_1_P120S062 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S6.7_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P120S071 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S7.3_PRES_RR +GET 072F_MACHINE_MACHINE_1_P120S072 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S7.7_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P120S081 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S8.3_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P120S082 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S8.7_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P120S092 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s09.07/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s01.01/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S012 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s01.01/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S101 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s10.01/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S102 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s10.02/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S111 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s11.01/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S112 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s11.02/Pressure +GET 022F_MACHINE_MACHINE_1_P400S022 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S2.2_PRES_RR +GET 032F_MACHINE_MACHINE_1_P400S032 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s03.02/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S042 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s04.02/Pressure +GET 052F_MACHINE_MACHINE_1_P400S052 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S5.2_PRES_RR +GET 061F_MACHINE_MACHINE_1_P400S061 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S6.1_PRES_RR +GET 062F_MACHINE_MACHINE_1_P400S062 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S6.2_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S071 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S7.1_PRES_RR +GET 072F_MACHINE_MACHINE_1_P400S072 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S7.2_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S081 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S8.1_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S082 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S8.2_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S091 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S9.1_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S092 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s09.02/Pressure + + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE01M tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s1.1m/StatRF +GET FRONTEND_MACHINE_MACHINE_1_VALVE012 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S1.2_STAT_RF +GET FRONTEND_MACHINE_MACHINE_1_VALVE101 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s10.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_VALVE102 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s10.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_VALVE111 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s11.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_VALVE112 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s12.2/StatRF +GET 022F_MACHINE_MACHINE_1_VALVE022 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S2.2_STAT_RF +GET 032F_MACHINE_MACHINE_1_VALVE032 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s3.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_VALVE042 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s4.2/StatRF +GET 052F_MACHINE_MACHINE_1_VALVE052 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S5.2_STAT_RF +GET 061F_MACHINE_MACHINE_1_VALVE061 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S6.1_STAT_RF +GET 062F_MACHINE_MACHINE_1_VALVE062 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S6.2_STAT_RF +GET FRONTEND_MACHINE_MACHINE_1_VALVE071 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S7.1_STAT_RF +GET 072F_MACHINE_MACHINE_1_VALVE072 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S7.2_STAT_RF +GET FRONTEND_MACHINE_MACHINE_1_VALVE081 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S8.1_STAT_RF +GET FRONTEND_MACHINE_MACHINE_1_VALVE082 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S8.2_STAT_RF +GET FRONTEND_MACHINE_MACHINE_1_VALVE091 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S9.1_STAT_RF +GET FRONTEND_MACHINE_MACHINE_1_VALVE092 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s9.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_VALVB011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvbe_s1/StatRF + +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT01M tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s1.1m/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT012 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s1.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT101 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s10.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT102 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s10.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT111 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s11.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT112 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s11.2/StatRF +GET 022F_MACHINE_MACHINE_1_SHUT022 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s2.2/StatRF +GET 032F_MACHINE_MACHINE_1_SHUT032 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s3.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT042 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s4.2/StatRF +GET 052F_MACHINE_MACHINE_1_SHUT052 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s5.2/StatRF +GET 061F_MACHINE_MACHINE_1_SHUT061 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s6.1/StatRF +GET 062F_MACHINE_MACHINE_1_SHUT062 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s6.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT071 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s7.1/StatRF +GET 072F_MACHINE_MACHINE_1_SHUT072 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s7.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT081 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s8.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT082 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s8.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT091 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s9.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT092 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s9.2/StatRF + +#beam positions and angles at centre of straigth sections +GET 012F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S1 +GET 012F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S1 +GET 012F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S1 +GET 012F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S1 + +GET 022F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S2 +GET 022F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S2 +GET 022F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S2 +GET 022F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S2 + + +GET 032F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S3 +GET 032F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S3 +GET 032F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S3 +GET 032F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S3 + + +GET 042F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S4 +GET 042F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S4 +GET 042F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S4 +GET 042F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S4 + +GET 052F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S5 +GET 052F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S5 +GET 052F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S5 +GET 052F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S5 + +GET 062F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S6 +GET 062F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S6 +GET 062F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S6 +GET 062F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S6 + + +GET 072F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S7 +GET 072F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S7 +GET 072F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S7 +GET 072F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S7 + +GET 082F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S8 +GET 082F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S8 +GET 082F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S8 +GET 082F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S8 + +GET 092F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S9 +GET 092F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S9 +GET 092F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S9 +GET 092F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S9 + +GET 102F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S10 +GET 102F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S10 +GET 102F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S10 +GET 102F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S10 + +GET 112F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S11 +GET 112F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S11 +GET 112F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S11 +GET 112F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S11 +#beam positions and angles at exit of bending magnets + +GET 061F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B6 +GET 061F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B6 +GET 061F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B6 +GET 061F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B6 + +GET 071F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B7 +GET 071F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B7 +GET 071F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B7 +GET 071F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B7 + +GET 081F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B8 +GET 081F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B8 +GET 081F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B8 +GET 081F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B8 + +GET 091F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B9 +GET 091F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B9 +GET 091F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B9 +GET 091F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B9 + +GET 101F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B10 +GET 101F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B10 +GET 101F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B10 +GET 101F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B10 + +GET 111F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B11 +GET 111F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B11 +GET 111F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B11 +GET 111F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B11 + +#beam positions and angles at short straight sections + + +GET 011F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_SS1 +GET 011F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_SS1 +GET 011F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_SS1 +GET 011F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_SS1 + +#ID1 readings +GET FRONTEND_MACHINE_MACHINE_1_GAP011 sr/id/id_s1.1/Gap +GET FRONTEND_MACHINE_MACHINE_1_GAP012 sr/id/id_s1.2/Gap +GET FRONTEND_MACHINE_MACHINE_1_PHA011 sr/id/id_s1.1/Phase +GET FRONTEND_MACHINE_MACHINE_1_PHA012 sr/id/id_s1.2/Phase +GET FRONTEND_MACHINE_MACHINE_1_GAPS011 sr/id/id_s1.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_GAPS012 sr/id/id_s1.2/StatRF + +#ID1 settings +SET FRONTEND_MACHINE_MACHINE_1_GAP011 GAP011 sr/id/id_s1.1/Gap +SET FRONTEND_MACHINE_MACHINE_1_GAP012 GAP012 sr/id/id_s1.2/Gap +SET FRONTEND_MACHINE_MACHINE_1_PHA011 PHA011 sr/id/id_s1.1/Phase +SET FRONTEND_MACHINE_MACHINE_1_PHA012 PHA012 sr/id/id_s1.2/Phase + +#PSMOD1 readings +GET FRONTEND_MACHINE_MACHINE_1_IM012 sr/id/psmod_s1/Current +GET FRONTEND_MACHINE_MACHINE_1_M012 sr/id/psmod_s1/StatRF + +#PSMOD1 settings +SET FRONTEND_MACHINE_MACHINE_1_IM012 IM012 sr/id/psmod_s1/Current + + +#ID2 readings +GET 022F_MACHINE_MACHINE_1_GAP021 blproxy/id/id_s2/Gap +GET 022F_MACHINE_MACHINE_1_TAP021 blproxy/id/id_s2/Tapering +GET 022F_MACHINE_MACHINE_1_GAPS020 blproxy/id/id_s2/StatRF + +#ID2 settings +SET 022F_MACHINE_MACHINE_1_GAP021 VALGAP blproxy/id/id_s2/Gap +SET 022F_MACHINE_MACHINE_1_TAP021 VALGAP blproxy/id/id_s2/Tapering + + +#ID3 readings +GET 032F_MACHINE_MACHINE_1_GAP031 sr/id/id_s3/Gap1 +GET 032F_MACHINE_MACHINE_1_GAP032 sr/id/id_s3/Gap2 +GET 032F_MACHINE_MACHINE_1_GAP033 sr/id/id_s3/Gap3 +GET 032F_MACHINE_MACHINE_1_GAPS030 sr/id/id_s3/StatRF + +#ID3 settings +SET 032F_MACHINE_MACHINE_1_GAP031 GAP031 sr/id/id_s3/Gap1 +SET 032F_MACHINE_MACHINE_1_GAP032 GAP032 sr/id/id_s3/Gap2 +SET 032F_MACHINE_MACHINE_1_GAP033 GAP033 sr/id/id_s3/Gap3 +SET 032F_MACHINE_MACHINE_1_GAP030 VALUE sr/id/id_s3/Gapall + +#ID4 readings +GET FRONTEND_MACHINE_MACHINE_1_IHSET042 sr/id/id_s4/CurrentH +GET FRONTEND_MACHINE_MACHINE_1_IVSET042 sr/id/id_s4/CurrentV +GET FRONTEND_MACHINE_MACHINE_1_IVSTAT042 sr/id/id_s4/StatRF +GET FRONTEND_MACHINE_MACHINE_1_IHSTAT042 sr/id/id_s4/StatRF +GET PSEWH_S4_CURSET_RR sr/id/id_s4/CurrentH +GET PSEWV_S4_CURSET_RR sr/id/id_s4/CurrentV +GET PSEWV_S4_STAT_RF sr/id/id_s4/StatRF +GET PSEWH_S4_STAT_RF sr/id/id_s4/StatRF + +#id4 settings +SET FRONTEND_MACHINE_MACHINE_1_IHSET042 GAP040 sr/id/id_s4/CurrentH +SET FRONTEND_MACHINE_MACHINE_1_IVSET042 GAP041 sr/id/id_s4/CurrentV + +#ID5 readings +GET 052F_MACHINE_MACHINE_1_GAP051 sr/id/id_s5/Gap1 +GET 052F_MACHINE_MACHINE_1_GAP052 sr/id/id_s5/Gap2 +GET 052F_MACHINE_MACHINE_1_GAP053 sr/id/id_s5/Gap3 +GET 052F_MACHINE_MACHINE_1_GAPS050 sr/id/id_s5/StatRF + +#ID6 readings +GET 062F_MACHINE_MACHINE_1_GAP061 sr/id/id_s6/Gap1 +GET 062F_MACHINE_MACHINE_1_GAP062 sr/id/id_s6/Gap2 +GET 062F_MACHINE_MACHINE_1_GAP063 sr/id/id_s6/Gap3 +GET 062F_MACHINE_MACHINE_1_GAPS060 sr/id/id_s6/StatRF + +#ID6 settings +SET 062F_MACHINE_MACHINE_1_GAP061 GAP061 sr/id/id_s6/Gap1 +SET 062F_MACHINE_MACHINE_1_GAP062 GAP062 sr/id/id_s6/Gap2 +SET 062F_MACHINE_MACHINE_1_GAP063 GAP063 sr/id/id_s6/Gap3 +SET 062F_MACHINE_MACHINE_1_GAP060 VALUE sr/id/id_s6/Gapall + +#ID7 readings +GET 072F_MACHINE_MACHINE_1_POS072 blproxy/id/id_s7/UserPosition +GET 072F_MACHINE_MACHINE_1_STAT070 blproxy/id/id_s7/StatRF + +#ID7 settings +SET 072F_MACHINE_MACHINE_1_POS072 VALUE blproxy/id/id_s7/UserPosition + +#ID8 readings +GET FRONTEND_MACHINE_MACHINE_1_GAP081 sr/id/id_s8.1/Gap +GET FRONTEND_MACHINE_MACHINE_1_GAP082 sr/id/id_s8.2/Gap +GET FRONTEND_MACHINE_MACHINE_1_TAP081 sr/id/id_s8.1/Taper +GET FRONTEND_MACHINE_MACHINE_1_TAP082 sr/id/id_s8.2/Taper +GET FRONTEND_MACHINE_MACHINE_1_PHA081 sr/id/id_s8.1/Phase +GET FRONTEND_MACHINE_MACHINE_1_PHA082 sr/id/id_s8.2/Phase +GET FRONTEND_MACHINE_MACHINE_1_GAPS081 sr/id/id_s8.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_GAPS082 sr/id/id_s8.2/StatRF + +#ID8 settings +SET FRONTEND_MACHINE_MACHINE_1_GAP081 GAP081 sr/id/id_s8.1/Gap +SET FRONTEND_MACHINE_MACHINE_1_GAP082 GAP082 sr/id/id_s8.2/Gap +SET FRONTEND_MACHINE_MACHINE_1_TAP081 TAP081 sr/id/id_s8.1/Taper +SET FRONTEND_MACHINE_MACHINE_1_TAP082 TAP082 sr/id/id_s8.2/Taper +SET FRONTEND_MACHINE_MACHINE_1_PHA081 PHA081 sr/id/id_s8.1/Phase +SET FRONTEND_MACHINE_MACHINE_1_PHA082 PHA082 sr/id/id_s8.2/Phase + + +#ID9 readings +GET FRONTEND_MACHINE_MACHINE_1_GAP091 sr/id/id_s9.1/Gap +GET FRONTEND_MACHINE_MACHINE_1_GAP092 sr/id/id_s9.2/Gap +GET FRONTEND_MACHINE_MACHINE_1_TAP091 sr/id/id_s9.1/Taper +GET FRONTEND_MACHINE_MACHINE_1_TAP092 sr/id/id_s9.2/Taper +GET FRONTEND_MACHINE_MACHINE_1_PHA091 sr/id/id_s9.1/Phase +GET FRONTEND_MACHINE_MACHINE_1_PHA092 sr/id/id_s9.2/Phase +GET FRONTEND_MACHINE_MACHINE_1_GAPS091 sr/id/id_s9.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_GAPS092 sr/id/id_s9.2/StatRF + +#ID9 settings +SET FRONTEND_MACHINE_MACHINE_1_GAP091 GAP091 sr/id/id_s9.1/Gap +SET FRONTEND_MACHINE_MACHINE_1_GAP092 GAP092 sr/id/id_s9.2/Gap +SET FRONTEND_MACHINE_MACHINE_1_TAP091 TAP091 sr/id/id_s9.1/Taper +SET FRONTEND_MACHINE_MACHINE_1_TAP092 TAP092 sr/id/id_s9.2/Taper +SET FRONTEND_MACHINE_MACHINE_1_PHA091 PHA091 sr/id/id_s9.1/Phase +SET FRONTEND_MACHINE_MACHINE_1_PHA092 PHA092 sr/id/id_s9.2/Phase + +#ID10 readings +GET FRONTEND_MACHINE_MACHINE_1_GAP101 sr/id/id_s10.1/Gap1 +GET FRONTEND_MACHINE_MACHINE_1_GAP102 sr/id/id_s10.2/Gap1 +GET FRONTEND_MACHINE_MACHINE_1_GAPS101 sr/id/id_s10.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_GAPS102 sr/id/id_s10.2/StatRF +#ID10 settings +SET FRONTEND_MACHINE_MACHINE_1_GAP101 VALGAP sr/id/id_s10.1/Gap1 +SET FRONTEND_MACHINE_MACHINE_1_GAP102 VALGAP sr/id/id_s10.2/Gap1 + +#ID12 twin apu readings +GET FRONTEND_MACHINE_MACHINE_1_HIGHENPOS sr/id/id_s12.01/UserPositionHigh +GET FRONTEND_MACHINE_MACHINE_1_LOWENPOS sr/id/id_s12.01/UserPositionLow +GET FRONTEND_MACHINE_MACHINE_1_LOWEN011 sr/id/id_s12.01/LowEnergy +GET FRONTEND_MACHINE_MACHINE_1_HIGHEN011 sr/id/id_s12.01/HighEnergy +GET FRONTEND_MACHINE_MACHINE_1_GAPS010 sr/id/id_s12.01/StatRF + +#ID12 twin apu settings +SET FRONTEND_MACHINE_MACHINE_1_LOWENPOS LOWENPOS sr/id/id_s12.01/UserPositionLow +SET FRONTEND_MACHINE_MACHINE_1_HIGHENPOS HIGHENPOS sr/id/id_s12.01/UserPositionHigh diff --git a/TCPSserver/elettrabcsbridge011.cfg b/TCPSserver/elettrabcsbridge011.cfg new file mode 100644 index 0000000000000000000000000000000000000000..4b9694e2976e2e1e2027f85c4dd5f20e490bf194 --- /dev/null +++ b/TCPSserver/elettrabcsbridge011.cfg @@ -0,0 +1,49 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current + +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy + +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits + +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET FRONTEND_MACHINE_MACHINE_1_P120S011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s01.03/Pressure + +GET FRONTEND_MACHINE_MACHINE_1_P400S011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s01.01/Pressure + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s1.1m/StatRF + +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s1.1m/StatRF + +GET 011F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_SS1 + +GET 011F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_SS1 + +GET 011F_MACHINE_MACHINE_1_XANGL sr/diagnostics/bpmid/XP_SS1 + +GET 011F_MACHINE_MACHINE_1_YANGL sr/diagnostics/bpmid/YP_SS1 + +#ID12 twin apu readings +GET FRONTEND_MACHINE_MACHINE_1_HIGHENPOS sr/id/id_s12.01/UserPositionHigh + +GET FRONTEND_MACHINE_MACHINE_1_LOWENPOS sr/id/id_s12.01/UserPositionLow + +GET FRONTEND_MACHINE_MACHINE_1_LOWEN011 sr/id/id_s12.01/LowEnergy + +GET FRONTEND_MACHINE_MACHINE_1_HIGHEN011 sr/id/id_s12.01/HighEnergy + +GET FRONTEND_MACHINE_MACHINE_1_GAPS010 sr/id/id_s12.01/StatRF + +#ID12 twin apu settings +SET FRONTEND_MACHINE_MACHINE_1_LOWENPOS LOWENPOS sr/id/id_s12.01/UserPositionLow +SET FRONTEND_MACHINE_MACHINE_1_HIGHENPOS HIGHENPOS sr/id/id_s12.01/UserPositionHigh diff --git a/TCPSserver/elettrabcsbridge011.cfg.old b/TCPSserver/elettrabcsbridge011.cfg.old new file mode 100644 index 0000000000000000000000000000000000000000..b4b4de6015b89ceb970c1941b3a4bd60c2445db2 --- /dev/null +++ b/TCPSserver/elettrabcsbridge011.cfg.old @@ -0,0 +1,48 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current + +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy + +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits + +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_USERBEAM tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET FRONTEND_MACHINE_MACHINE_1_P120S011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s01.03/Pressure + +GET FRONTEND_MACHINE_MACHINE_1_P400S011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s01.01/Pressure + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s1.1m/StatRF + +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT011 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s1.1m/StatRF + +GET 011F_MACHINE_MACHINE_1_XPOS011 sr/diagnostics/bpmid/X_S1 + +GET 011F_MACHINE_MACHINE_1_YPOS011 sr/diagnostics/bpmid/Y_S1 + +GET 011F_MACHINE_MACHINE_1_XANGL011 sr/diagnostics/bpmid/XP_S1 + +GET 011F_MACHINE_MACHINE_1_YANGL011 sr/diagnostics/bpmid/YP_S1 + +#ID12 twin apu readings +GET FRONTEND_MACHINE_MACHINE_1_HIGHENPOS sr/id/id_s12.01/UserPositionHigh + +GET FRONTEND_MACHINE_MACHINE_1_LOWENPOS sr/id/id_s12.01/UserPositionLow + +GET FRONTEND_MACHINE_MACHINE_1_LOWEN011 sr/id/id_s12.01/LowEnergy + +GET FRONTEND_MACHINE_MACHINE_1_HIGHEN011 sr/id/id_s12.01/HighEnergy + +GET FRONTEND_MACHINE_MACHINE_1_GAPS010 sr/id/id_s12.01/StatRF + +#ID12 twin apu settings +SET FRONTEND_MACHINE_MACHINE_1_LOWENPOS LOWENPOS sr/id/id_s12.01/UserPositionLow diff --git a/TCPSserver/elettrabcsbridge012.cfg b/TCPSserver/elettrabcsbridge012.cfg new file mode 100644 index 0000000000000000000000000000000000000000..0adf6078a5655013598237982b0e38e0e9f9a429 --- /dev/null +++ b/TCPSserver/elettrabcsbridge012.cfg @@ -0,0 +1,55 @@ +#configuration file for elettra-Tango to BCS bridge - FEL - Nanospectroscopy : 20012 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + +GET FRONTEND_MACHINE_MACHINE_1_P120S012 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s01.07/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S012 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s01.01/Pressure +#questo puo' essere diffente dal vecchio SIP400_S1.2_PRES_RR che non esiet piu' + + +#front-end VLVFE readings +#GET FRONTEND_MACHINE_MACHINE_1_VALVE01M tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s1.1m/StatRF +GET FRONTEND_MACHINE_MACHINE_1_VALVE012 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s1.2/StatRF + +#front-end PHOTON SHUTTER readings +#GET FRONTEND_MACHINE_MACHINE_1_SHUT01M tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s1.1m/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT012 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s1.2/StatRF + + +#beam positions and angles at centre of straigth sections +GET 012F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S1 +GET 012F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S1 +GET 012F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S1 +GET 012F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S1 + +#ID1 readings +GET FRONTEND_MACHINE_MACHINE_1_GAP011 sr/id/id_s1.1/Gap +GET FRONTEND_MACHINE_MACHINE_1_GAP012 sr/id/id_s1.2/Gap +GET FRONTEND_MACHINE_MACHINE_1_PHA011 sr/id/id_s1.1/Phase +GET FRONTEND_MACHINE_MACHINE_1_PHA012 sr/id/id_s1.2/Phase +GET FRONTEND_MACHINE_MACHINE_1_GAPS011 sr/id/id_s1.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_GAPS012 sr/id/id_s1.2/StatRF + +#ID1 settings +SET FRONTEND_MACHINE_MACHINE_1_GAP011 GAP011 sr/id/id_s1.1/Gap +SET FRONTEND_MACHINE_MACHINE_1_GAP012 GAP012 sr/id/id_s1.2/Gap +SET FRONTEND_MACHINE_MACHINE_1_PHA011 PHA011 sr/id/id_s1.1/Phase +SET FRONTEND_MACHINE_MACHINE_1_PHA012 PHA012 sr/id/id_s1.2/Phase + +#PSMOD1 readings +GET FRONTEND_MACHINE_MACHINE_1_IM012 sr/id/psmod_s1/Current +GET FRONTEND_MACHINE_MACHINE_1_M012 sr/id/psmod_s1/StatRF + +#PSMOD1 settings +SET FRONTEND_MACHINE_MACHINE_1_IM012 IM012 sr/id/psmod_s1/Current diff --git a/TCPSserver/elettrabcsbridge022.cfg b/TCPSserver/elettrabcsbridge022.cfg new file mode 100644 index 0000000000000000000000000000000000000000..c46fa111dc8858e9ee13a91399159dbd4e12f427 --- /dev/null +++ b/TCPSserver/elettrabcsbridge022.cfg @@ -0,0 +1,45 @@ +#configuration file for elettra-Tango to BCS bridge 022 SuperESCA - Escamicroscopy : 20022 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + +GET 022F_MACHINE_MACHINE_1_P120S022 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s02.07/Pressure +GET 022F_MACHINE_MACHINE_1_P400S022 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s02.02/Pressure + +#front-end VLVFE readings +GET 022F_MACHINE_MACHINE_1_VALVE022 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s2.2/StatRF + +#front-end PHOTON SHUTTER readings +GET 022F_MACHINE_MACHINE_1_SHUT022 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s2.2/StatRF + + +#beam positions and angles at centre of straigth sections + +GET 022F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S2 +GET 022F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S2 +GET 022F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S2 +GET 022F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S2 + + + +#beam positions and angles at short straight sections + + +#ID2 readings +GET 022F_MACHINE_MACHINE_1_GAP021 blproxy/id/id_s2/Gap +GET 022F_MACHINE_MACHINE_1_TAP021 blproxy/id/id_s2/Tapering +GET 022F_MACHINE_MACHINE_1_GAPS020 blproxy/id/id_s2/StatRF + +#ID2 settings +SET 022F_MACHINE_MACHINE_1_GAP021 VALGAP blproxy/id/id_s2/Gap +SET 022F_MACHINE_MACHINE_1_TAP021 VALGAP blproxy/id/id_s2/Tapering diff --git a/TCPSserver/elettrabcsbridge032.cfg b/TCPSserver/elettrabcsbridge032.cfg new file mode 100644 index 0000000000000000000000000000000000000000..1bd255155ed351454918b649d403ac9e92e0f64b --- /dev/null +++ b/TCPSserver/elettrabcsbridge032.cfg @@ -0,0 +1,45 @@ +#configuration file for elettra-Tango to BCS bridge 032 VUV photoemission - Spectromicroscopy : 20032 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + +GET 032F_MACHINE_MACHINE_1_P120S032 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s03.07/Pressure +GET 032F_MACHINE_MACHINE_1_P400S032 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s03.02/Pressure + +#front-end VLVFE readings + +GET 032F_MACHINE_MACHINE_1_VALVE032 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s3.2/StatRF + +#front-end PHOTON SHUTTER readings + +GET 032F_MACHINE_MACHINE_1_SHUT032 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s3.2/StatRF + + +#beam positions and angles at centre of straigth sections + +GET 032F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S3 +GET 032F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S3 +GET 032F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S3 +GET 032F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S3 + +#ID3 readings +GET 032F_MACHINE_MACHINE_1_GAP031 sr/id/id_s3/Gap1 +GET 032F_MACHINE_MACHINE_1_GAP032 sr/id/id_s3/Gap2 +GET 032F_MACHINE_MACHINE_1_GAP033 sr/id/id_s3/Gap3 +GET 032F_MACHINE_MACHINE_1_GAPS030 sr/id/id_s3/StatRF + +#ID3 settings +SET 032F_MACHINE_MACHINE_1_GAP031 GAP031 sr/id/id_s3/Gap1 +SET 032F_MACHINE_MACHINE_1_GAP032 GAP032 sr/id/id_s3/Gap2 +SET 032F_MACHINE_MACHINE_1_GAP033 GAP033 sr/id/id_s3/Gap3 +SET 032F_MACHINE_MACHINE_1_GAP030 VALUE sr/id/id_s3/Gapall diff --git a/TCPSserver/elettrabcsbridge042.cfg b/TCPSserver/elettrabcsbridge042.cfg new file mode 100644 index 0000000000000000000000000000000000000000..745fcced078633cf3ba07c6bd138cc11cf2f731a --- /dev/null +++ b/TCPSserver/elettrabcsbridge042.cfg @@ -0,0 +1,50 @@ +#configuration file for elettra-Tango to BCS bridge 042 Circularly Polarized : 20042 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + +GET FRONTEND_MACHINE_MACHINE_1_P120S042 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s04.07/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S042 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s04.02/Pressure + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE042 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s4.2/StatRF + +#front-end PHOTON SHUTTER readings + +GET FRONTEND_MACHINE_MACHINE_1_SHUT042 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s4.2/StatRF + +#beam positions and angles at centre of straigth sections + +GET 042F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S4 +GET 042F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S4 +GET 042F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S4 +GET 042F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S4 + + +#ID4 readings +GET FRONTEND_MACHINE_MACHINE_1_IH042 sr/id/id_s4/CurrentH +GET FRONTEND_MACHINE_MACHINE_1_IV042 sr/id/id_s4/CurrentV +GET FRONTEND_MACHINE_MACHINE_1_IHSET042 sr/id/id_s4/CurrentH +GET FRONTEND_MACHINE_MACHINE_1_IVSET042 sr/id/id_s4/CurrentV +GET FRONTEND_MACHINE_MACHINE_1_IVST042 sr/id/id_s4/FlagV +GET FRONTEND_MACHINE_MACHINE_1_IHST042 sr/id/id_s4/FlagH +GET PSEWH_S4_CURSET_RR sr/id/id_s4/CurrentH +GET PSEWV_S4_CURSET_RR sr/id/id_s4/CurrentV +GET PSEWV_S4_STAT_RF sr/id/id_s4/FlagV +GET PSEWH_S4_STAT_RF sr/id/id_s4/FlagH + +#id4 settings +SET FRONTEND_MACHINE_MACHINE_1_IH042 GAP040 sr/id/id_s4/CurrentH +SET FRONTEND_MACHINE_MACHINE_1_IV042 GAP041 sr/id/id_s4/CurrentV +SET FRONTEND_MACHINE_MACHINE_1_IHSET042 GAP040 sr/id/id_s4/CurrentH +SET FRONTEND_MACHINE_MACHINE_1_IVSET042 GAP041 sr/id/id_s4/CurrentV diff --git a/TCPSserver/elettrabcsbridge052.cfg b/TCPSserver/elettrabcsbridge052.cfg new file mode 100644 index 0000000000000000000000000000000000000000..eba374a529d95e5b8c15c7d17f94e5f83017af8f --- /dev/null +++ b/TCPSserver/elettrabcsbridge052.cfg @@ -0,0 +1,40 @@ +#configuration file for elettra-Tango to BCS bridge 052 X-ray diffraction - SAXS : 20052 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + + +GET 052F_MACHINE_MACHINE_1_P120S052 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S5.7_PRES_RR +GET 052F_MACHINE_MACHINE_1_P400S052 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S5.2_PRES_RR + + + +#front-end VLVFE readings +GET 052F_MACHINE_MACHINE_1_VALVE052 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S5.2_STAT_RF + +#front-end PHOTON SHUTTER readings +GET 052F_MACHINE_MACHINE_1_SHUT052 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s5.2/StatRF + +#beam positions and angles at centre of straigth sections + +GET 052F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S5 +GET 052F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S5 +GET 052F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S5 +GET 052F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S5 + + +#ID5 readings +GET 052F_MACHINE_MACHINE_1_GAP051 sr/id/id_s5/Gap1 +GET 052F_MACHINE_MACHINE_1_GAP052 sr/id/id_s5/Gap2 +GET 052F_MACHINE_MACHINE_1_GAP053 sr/id/id_s5/Gap3 +GET 052F_MACHINE_MACHINE_1_GAPS050 sr/id/id_s5/StatRF diff --git a/TCPSserver/elettrabcsbridge061.cfg b/TCPSserver/elettrabcsbridge061.cfg new file mode 100644 index 0000000000000000000000000000000000000000..ee401ee0247a1972c6df65b5cac8e9a90bb5640a --- /dev/null +++ b/TCPSserver/elettrabcsbridge061.cfg @@ -0,0 +1,31 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET 061F_MACHINE_MACHINE_1_P120S061 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S6.3_PRES_RR +GET 061F_MACHINE_MACHINE_1_P400S061 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S6.1_PRES_RR + +#front-end VLVFE readings +GET 061F_MACHINE_MACHINE_1_VALVE061 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S6.1_STAT_RF + +#front-end PHOTON SHUTTER readings + +GET 061F_MACHINE_MACHINE_1_SHUT061 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s6.1/StatRF + + +#beam positions and angles at exit of bending magnets + +GET 061F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B6 +GET 061F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B6 +GET 061F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B6 +GET 061F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B6 diff --git a/TCPSserver/elettrabcsbridge062.cfg b/TCPSserver/elettrabcsbridge062.cfg new file mode 100644 index 0000000000000000000000000000000000000000..5e8c3a2590b8db870114244b83f6ac80de953083 --- /dev/null +++ b/TCPSserver/elettrabcsbridge062.cfg @@ -0,0 +1,41 @@ +#configuration file for elettra-Tango to BCS bridge 062 Gas Phase : 20062 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET 062F_MACHINE_MACHINE_1_P120S062 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S6.7_PRES_RR +GET 062F_MACHINE_MACHINE_1_P400S062 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S6.2_PRES_RR + +#front-end VLVFE readings +GET 062F_MACHINE_MACHINE_1_VALVE062 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S6.2_STAT_RF + +#front-end PHOTON SHUTTER readings +GET 062F_MACHINE_MACHINE_1_SHUT062 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s6.2/StatRF + +#beam positions and angles at centre of straigth sections + +GET 062F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S6 +GET 062F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S6 +GET 062F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S6 +GET 062F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S6 + +#ID6 readings +GET 062F_MACHINE_MACHINE_1_GAP061 sr/id/id_s6/Gap1 +GET 062F_MACHINE_MACHINE_1_GAP062 sr/id/id_s6/Gap2 +GET 062F_MACHINE_MACHINE_1_GAP063 sr/id/id_s6/Gap3 +GET 062F_MACHINE_MACHINE_1_GAPS060 sr/id/id_s6/StatRF + +#ID6 settings +SET 062F_MACHINE_MACHINE_1_GAP061 GAP061 sr/id/id_s6/Gap1 +SET 062F_MACHINE_MACHINE_1_GAP062 GAP062 sr/id/id_s6/Gap2 +SET 062F_MACHINE_MACHINE_1_GAP063 GAP063 sr/id/id_s6/Gap3 +SET 062F_MACHINE_MACHINE_1_GAP060 VALUE sr/id/id_s6/Gapall diff --git a/TCPSserver/elettrabcsbridge071.cfg b/TCPSserver/elettrabcsbridge071.cfg new file mode 100644 index 0000000000000000000000000000000000000000..99fb1be57f47f64c89fd827ac009df35fb9707e6 --- /dev/null +++ b/TCPSserver/elettrabcsbridge071.cfg @@ -0,0 +1,30 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET FRONTEND_MACHINE_MACHINE_1_P120S071 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S7.3_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S071 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S7.1_PRES_RR + +#front-end VLVFE readings + +GET FRONTEND_MACHINE_MACHINE_1_VALVE071 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S7.1_STAT_RF + +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT071 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s7.1/StatRF + +#beam positions and angles at exit of bending magnets + +GET 071F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B7 +GET 071F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B7 +GET 071F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B7 +GET 071F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B7 diff --git a/TCPSserver/elettrabcsbridge072.cfg b/TCPSserver/elettrabcsbridge072.cfg new file mode 100644 index 0000000000000000000000000000000000000000..3d9d4aaab3072a42820bd6ba3fc1237147b8e89f --- /dev/null +++ b/TCPSserver/elettrabcsbridge072.cfg @@ -0,0 +1,39 @@ +#configuration file for elettra-Tango to BCS bridge 072 ALOISA : 20072 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + +GET 072F_MACHINE_MACHINE_1_P120S072 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S7.7_PRES_RR +GET 072F_MACHINE_MACHINE_1_P400S072 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S7.2_PRES_RR + +#front-end VLVFE readings + +GET 072F_MACHINE_MACHINE_1_VALVE072 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S7.2_STAT_RF + +#front-end PHOTON SHUTTER readings + +GET 072F_MACHINE_MACHINE_1_SHUT072 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s7.2/StatRF + +#beam positions and angles at centre of straigth sections + +GET 072F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S7 +GET 072F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S7 +GET 072F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S7 +GET 072F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S7 + +#ID7 readings +GET 072F_MACHINE_MACHINE_1_POS072 blproxy/id/id_s7/UserPosition +GET 072F_MACHINE_MACHINE_1_STAT070 blproxy/id/id_s7/StatRF + +#ID7 settings +SET 072F_MACHINE_MACHINE_1_POS072 VALUE blproxy/id/id_s7/UserPosition diff --git a/TCPSserver/elettrabcsbridge081.cfg b/TCPSserver/elettrabcsbridge081.cfg new file mode 100644 index 0000000000000000000000000000000000000000..a3f01c3aeb5df25b246643d90542c1b223a3805e --- /dev/null +++ b/TCPSserver/elettrabcsbridge081.cfg @@ -0,0 +1,33 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET FRONTEND_MACHINE_MACHINE_1_P120S081 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S8.3_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S081 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S8.1_PRES_RR + + +#front-end VLVFE readings + +GET FRONTEND_MACHINE_MACHINE_1_VALVE081 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S8.1_STAT_RF + + +#front-end PHOTON SHUTTER readings + +GET FRONTEND_MACHINE_MACHINE_1_SHUT081 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s8.1/StatRF + +#beam positions and angles at centre bending + +GET 081F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B8 +GET 081F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B8 +GET 081F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B8 +GET 081F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B8 diff --git a/TCPSserver/elettrabcsbridge082.cfg b/TCPSserver/elettrabcsbridge082.cfg new file mode 100644 index 0000000000000000000000000000000000000000..16e4c036363e2ab66fd41a8c9bea1f69c2e9597f --- /dev/null +++ b/TCPSserver/elettrabcsbridge082.cfg @@ -0,0 +1,53 @@ +#configuration file for elettra-Tango to BCS bridge 082 Bach : 20082 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + + +#vacuum redings SIP120-SIP400 +GET FRONTEND_MACHINE_MACHINE_1_P120S082 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S8.7_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S082 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S8.2_PRES_RR + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE082 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S8.2_STAT_RF + +#front-end PHOTON SHUTTER readings + +GET FRONTEND_MACHINE_MACHINE_1_SHUT082 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s8.2/StatRF + + +#beam positions and angles at centre of straigth sections + + +GET 082F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S8 +GET 082F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S8 +GET 082F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S8 +GET 082F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S8 + +#ID8 readings +GET FRONTEND_MACHINE_MACHINE_1_GAP081 sr/id/id_s8.1/Gap +GET FRONTEND_MACHINE_MACHINE_1_GAP082 sr/id/id_s8.2/Gap +GET FRONTEND_MACHINE_MACHINE_1_TAP081 sr/id/id_s8.1/Taper +GET FRONTEND_MACHINE_MACHINE_1_TAP082 sr/id/id_s8.2/Taper +GET FRONTEND_MACHINE_MACHINE_1_PHA081 sr/id/id_s8.1/Phase +GET FRONTEND_MACHINE_MACHINE_1_PHA082 sr/id/id_s8.2/Phase +GET FRONTEND_MACHINE_MACHINE_1_GAPS081 sr/id/id_s8.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_GAPS082 sr/id/id_s8.2/StatRF + +#ID8 settings +SET FRONTEND_MACHINE_MACHINE_1_GAP081 GAP081 sr/id/id_s8.1/Gap +SET FRONTEND_MACHINE_MACHINE_1_GAP082 GAP082 sr/id/id_s8.2/Gap +SET FRONTEND_MACHINE_MACHINE_1_TAP081 TAP081 sr/id/id_s8.1/Taper +SET FRONTEND_MACHINE_MACHINE_1_TAP082 TAP082 sr/id/id_s8.2/Taper +SET FRONTEND_MACHINE_MACHINE_1_PHA081 PHA081 sr/id/id_s8.1/Phase +SET FRONTEND_MACHINE_MACHINE_1_PHA082 PHA082 sr/id/id_s8.2/Phase +SET FRONTEND_MACHINE_MACHINE_1_BRK081 BRKON sr/id/id_s8.1/Brake +SET FRONTEND_MACHINE_MACHINE_1_BRK082 BRKON sr/id/id_s8.2/Brake diff --git a/TCPSserver/elettrabcsbridge091.cfg b/TCPSserver/elettrabcsbridge091.cfg new file mode 100644 index 0000000000000000000000000000000000000000..1dc3c108147a9433a4899405da351b0f619f18d2 --- /dev/null +++ b/TCPSserver/elettrabcsbridge091.cfg @@ -0,0 +1,30 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + +GET FRONTEND_MACHINE_MACHINE_1_P120S091 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S9.2_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S091 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S9.1_PRES_RR + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE091 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S9.1_STAT_RF + +#front-end PHOTON SHUTTER readings + +GET FRONTEND_MACHINE_MACHINE_1_SHUT091 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s9.1/StatRF + +#beam positions and angles at centre of straigth sections +GET 091F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B9 +GET 091F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B9 +GET 091F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B9 +GET 091F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B9 diff --git a/TCPSserver/elettrabcsbridge092.cfg b/TCPSserver/elettrabcsbridge092.cfg new file mode 100644 index 0000000000000000000000000000000000000000..775e1b4dc70955fe64da9992610be471abd430f5 --- /dev/null +++ b/TCPSserver/elettrabcsbridge092.cfg @@ -0,0 +1,53 @@ +#configuration file for elettra-Tango to BCS bridge 092 APE : 20092 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + +GET FRONTEND_MACHINE_MACHINE_1_P120S092 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s09.07/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S092 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s09.02/Pressure + + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE092 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s9.2/StatRF + +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT092 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s9.2/StatRF + + +#beam positions and angles at centre of straigth sections + + +GET 092F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S9 +GET 092F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S9 +GET 092F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S9 +GET 092F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S9 + +#ID9 readings +GET FRONTEND_MACHINE_MACHINE_1_GAP091 sr/id/id_s9.1/Gap +GET FRONTEND_MACHINE_MACHINE_1_GAP092 sr/id/id_s9.2/Gap +GET FRONTEND_MACHINE_MACHINE_1_TAP091 sr/id/id_s9.1/Taper +GET FRONTEND_MACHINE_MACHINE_1_TAP092 sr/id/id_s9.2/Taper +GET FRONTEND_MACHINE_MACHINE_1_PHA091 sr/id/id_s9.1/Phase +GET FRONTEND_MACHINE_MACHINE_1_PHA092 sr/id/id_s9.2/Phase +GET FRONTEND_MACHINE_MACHINE_1_GAPS091 sr/id/id_s9.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_GAPS092 sr/id/id_s9.2/StatRF + +#ID9 settings +SET FRONTEND_MACHINE_MACHINE_1_GAP091 GAP091 sr/id/id_s9.1/Gap +SET FRONTEND_MACHINE_MACHINE_1_GAP092 GAP092 sr/id/id_s9.2/Gap +SET FRONTEND_MACHINE_MACHINE_1_TAP091 TAP091 sr/id/id_s9.1/Taper +SET FRONTEND_MACHINE_MACHINE_1_TAP092 TAP092 sr/id/id_s9.2/Taper +SET FRONTEND_MACHINE_MACHINE_1_PHA091 PHA091 sr/id/id_s9.1/Phase +SET FRONTEND_MACHINE_MACHINE_1_PHA092 PHA092 sr/id/id_s9.2/Phase +SET FRONTEND_MACHINE_MACHINE_1_BRK091 BRKON sr/id/id_s9.1/Brake +SET FRONTEND_MACHINE_MACHINE_1_BRK092 BRKON sr/id/id_s9.2/Brake diff --git a/TCPSserver/elettrabcsbridge101.cfg b/TCPSserver/elettrabcsbridge101.cfg new file mode 100644 index 0000000000000000000000000000000000000000..a309597e774e92e12cfd4b29dd2a8704c0c6e58d --- /dev/null +++ b/TCPSserver/elettrabcsbridge101.cfg @@ -0,0 +1,32 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 + +GET FRONTEND_MACHINE_MACHINE_1_P120S101 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s10.03/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S101 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s10.01/Pressure + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE101 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s10.1/StatRF + + +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT101 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s10.1/StatRF + +#beam positions and angles at exit of bending magnets + + +GET 101F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B10 +GET 101F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B10 +GET 101F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B10 +GET 101F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B10 diff --git a/TCPSserver/elettrabcsbridge102.cfg b/TCPSserver/elettrabcsbridge102.cfg new file mode 100644 index 0000000000000000000000000000000000000000..e25277ddf989d0bc56524bb9cab3af4a2ab1f50d --- /dev/null +++ b/TCPSserver/elettrabcsbridge102.cfg @@ -0,0 +1,48 @@ +#configuration file for elettra-Tango to BCS bridge 102 Iuvs BaDElph: 20102 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET FRONTEND_MACHINE_MACHINE_1_P120S102 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s10.07/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S102 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s10.02/Pressure + +#front-end VLVFE readings + +GET FRONTEND_MACHINE_MACHINE_1_VALVE102 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s10.2/StatRF + +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT102 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s10.2/StatRF + +#beam positions and angles at centre of straigth sections + + +GET 102F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S10 +GET 102F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S10 +GET 102F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S10 +GET 102F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S10 + + + +#ID10 readings +GET FRONTEND_MACHINE_MACHINE_1_GAP101 sr/id/id_s10.1/Gap1 +GET FRONTEND_MACHINE_MACHINE_1_GAP102 sr/id/id_s10.2/Gap1 +GET FRONTEND_MACHINE_MACHINE_1_GAPS101 sr/id/id_s10.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_GAPS102 sr/id/id_s10.2/StatRF +#ID10 settings +SET FRONTEND_MACHINE_MACHINE_1_GAP101 VALGAP sr/id/id_s10.1/Gap1 +SET FRONTEND_MACHINE_MACHINE_1_GAP102 VALGAP sr/id/id_s10.2/Gap1 + +#ID10 collective readings +GET FRONTEND_MACHINE_MACHINE_1_GAP100 sr/id/id_s10/Gap +GET FRONTEND_MACHINE_MACHINE_1_GAPS100 sr/id/id_s10/StatRF +#ID10 collective settings +SET FRONTEND_MACHINE_MACHINE_1_GAP100 VALGAP sr/id/id_s10/Gap diff --git a/TCPSserver/elettrabcsbridge111.cfg b/TCPSserver/elettrabcsbridge111.cfg new file mode 100644 index 0000000000000000000000000000000000000000..d2311fd50b8bcb5c9c32eff82a261715d2d246b2 --- /dev/null +++ b/TCPSserver/elettrabcsbridge111.cfg @@ -0,0 +1,29 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +##vacuum redings SIP120-SIP400 + +GET FRONTEND_MACHINE_MACHINE_1_P120S111 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s11.03/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S111 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s11.01/Pressure + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE111 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s11.2/StatRF + +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT111 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s11.1/StatRF + +#beam positions and angles at exit of bending magnets +GET 111F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B11 +GET 111F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B11 +GET 111F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B11 +GET 111F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B11 diff --git a/TCPSserver/elettrabcsbridge112.cfg b/TCPSserver/elettrabcsbridge112.cfg new file mode 100644 index 0000000000000000000000000000000000000000..12226d108926db65886a65eaa0c1fb20c2eeb242 --- /dev/null +++ b/TCPSserver/elettrabcsbridge112.cfg @@ -0,0 +1,36 @@ +#configuration file for elettra-Tango to BCS bridge 112 (SCW) : 20112 + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA tango://ecsproxy:11111/info/sr/1#dbase=no/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON tango://ecsproxy:11111/info/sr/1#dbase=no/beamON + +#vacuum redings SIP120-SIP400 +GET FRONTEND_MACHINE_MACHINE_1_P120S112 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip120_s11.07/Pressure +GET FRONTEND_MACHINE_MACHINE_1_P400S112 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/sip400_s11.02/Pressure + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE112 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/vlvfe_s12.2/StatRF + +#front-end PHOTON SHUTTER readings + +GET FRONTEND_MACHINE_MACHINE_1_SHUT112 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s11.2/StatRF + + +#beam positions and angles at centre of straigth sections + + +GET 112F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_S11 +GET 112F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_S11 +GET 112F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_S11 +GET 112F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_S11 + +#SCW reading +GET FRONTEND_MACHINE_MACHINE_1_SCWFIELD sr/scw/scw_a11.1/MagneticField +GET FRONTEND_MACHINE_MACHINE_1_SCWSTATE sr/scw/scw_a11.1/State diff --git a/TCPSserver/list-active.txt b/TCPSserver/list-active.txt new file mode 100644 index 0000000000000000000000000000000000000000..d985964ea28298a4a4540d818e22db0a9cdd977d --- /dev/null +++ b/TCPSserver/list-active.txt @@ -0,0 +1,36 @@ +1.1: PS120S01_M, PS400S11, VALVE01M SHUT01M XANGL011,XPOS011,YANGL011 YPOS011 + +1.2 (012) P120S012, PS400S012 SHUT012 VALVE012 XANGL012,XPOS012,YANGL012 YPOS012 + +2.2 (022) PS120S022 PS400S022 SHUT022 VALVE022 XANGL022,XPOS022,YANGL022 YPOS022 + +3.2 (032) PS120S032 PS400S032 SHUT032 VALVE032 XANGL032,XPOS032,YANGL032 YPOS032 + +4.2 (042) PS120S042 PS400S042 SHUT042 VALVE042 XANGL042,XPOS042,YANGL032 YPOS042 + +5.2 (052) PS120S042 PS400S052 SHUT052 VALVE052 XANGL052,XPOS052,YANGL032 YPOS052 + +6.1 (061) PS120S061 PS400S061 SHUT061 VALVE061 XANGL061,XPOS061,YANGL061 YPOS061 + +6.2 (062) PS120S062 PS400S062 SHUT062 VALVE062 XANGL062,XPOS062,YANGL062 YPOS062 + +7.1 (071) PS120S071 PS400S071 SHUT071 VALVE071 XANGL071,XPOS071,YANGL071 YPOS071 + +7.2 (072) PS120S072 PS400S072 SHUT072 VALVE072 XANGL072,XPOS072,YANGL072 YPOS072 + +8.1 (081) PS120S081 PS400S081 SHUT081 VALVE081 XANGL081,XPOS081,YANGL081 YPOS081 + +8.2 (082) PS120S082 PS400S082 SHUT082 VALVE082 XANGL082,XPOS082,YANGL082 YPOS082 + +9.1 (091) PS120S091 PS400S091 SHUT091 VALVE091 XANGL091,XPOS091,YANGL091 YPOS091 + +9.2 (092) PS120S092 PS400S092 SHUT092 VALVE092 XANGL092,XPOS092,YANGL092 YPOS092 + +10.1 (101) PS120S101 PS400S101 SHUT101 VALVE101 XANGL101,XPOS101,YANGL101 YPOS101 + +10.2 (102) PS120S102 PS400S102 SHUT102 VALVE102 XANGL102,XPOS102,YANGL102 YPOS102 + +11.1 (111) PS120S111 PS400S111 SHUT111 VALVE111 XANGL111,XPOS111,YANGL111 YPOS111 + +11.2 (112) PS120S112 PS400S112 SHUT112 VALVE112 XANGL112,XPOS112,YANGL112 YPOS112 + diff --git a/TCPSserver/prova.sh b/TCPSserver/prova.sh new file mode 100755 index 0000000000000000000000000000000000000000..ddadca65f37512ef30d02475c2ca52fdb5edd8c5 --- /dev/null +++ b/TCPSserver/prova.sh @@ -0,0 +1,9 @@ +INSTANCES="elettrabcsbridge012.cfg elettrabcsbridge022.cfg elettrabcsbridge032.cfg elettrabcsbridge042.cfg elettrabcsbridge052.cfg elettrabcsbridge062.cfg elettrabcsbridge072.cfg elettrabcsbridge082.cfg elettrabcsbridge092.cfg elettrabcsbridge102.cfg" +PORTS=(20012 20022 20032 20042 20052 20062 02072 20082 20092 20102) +index=0 +for inst in $INSTANCES +do +PORT=${PORTS[$index]} +echo "$inst -f $PORT" +index=$((index + 1)) +done \ No newline at end of file diff --git a/TCPSserver/tcps.sh b/TCPSserver/tcps.sh new file mode 100755 index 0000000000000000000000000000000000000000..27f54944667a810443ac6ca4befff9ba41842de0 --- /dev/null +++ b/TCPSserver/tcps.sh @@ -0,0 +1,156 @@ +#!/bin/bash + +################################################################################ +# RP - 17 febbraio 2006 +# CS - 23 gennaio 2009 +# Codici di errore dello script +# - in avvio: +# 2: non c'e` l'eseguibile oppure i permessi non sono impostati correttamente +# 3: il programma e` gia` in esecuzione +# 4: non c'e` il file di configurazione /etc/default/elettra_daemons +# 5: nel file di configurazione /etc/default/elettra_daemons non viene +# richiesto di avviare il programma +# 6: errore nell'avvio del programma come root. +# 7: errore nell'avvio del programma come servuser. +# 8: e` stato utilizzato un utente sbagliato per eseguire lo script +# - in arresto: +# 50: il programma non e` in esecuzione +# 51: si e` verificato un errore arrestando il programma. Viene fornito il +# codice di uscita del kill +################################################################################ +PREFIX="/runtime/elettra/servers" +CONFPREFIX="$PREFIX/etc" +PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PREFIX/bin +LD_LIBRARY_PATH=/usr/local/tango-7.2.6/lib:/usr/local/omniorb-4.1.4/lib +export LD_LIBRARY_PATH PATH +export TANGO_HOST=tom:20000 + +PYTHONPATH=$PREFIX/bin +export PYTHONPATH +SERVER="$PREFIX/bin/TCPStwserver.py" + +INSTANCES="elettrabcsbridge012.cfg elettrabcsbridge022.cfg elettrabcsbridge032.cfg elettrabcsbridge042.cfg elettrabcsbridge052.cfg elettrabcsbridge062.cfg elettrabcsbridge072.cfg elettrabcsbridge082.cfg elettrabcsbridge092.cfg elettrabcsbridge102.cfg elettrabcsbridge011.cfg elettrabcsbridge061.cfg elettrabcsbridge071.cfg elettrabcsbridge081.cfg elettrabcsbridge101.cfg elettrabcsbridge111.cfg elettrabcsbridge091.cfg elettrabcsbridge112.cfg" + +PORTS=(20012 20022 20032 20042 20052 20062 20072 20082 20092 20102 20011 20061 20071 20081 20101 20111 20091 20112) + +LOGNAME="tcpserver" +LOGBASE="/runtime/site/ecsproxy/log" +LOGSIZE=1024k +LOGLEVEL=info + +startserver() +{ +if [ ! -x $SERVER ]; then + echo " FAILED: $SERVER executable not found." + exit 2 +fi +index=0 +for INSTANCE in $INSTANCES +do + PORT=${PORTS[$index]} + LOGFILE="$LOGBASE/$LOGNAME$PORT.log" + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "1" ] + then + echo "$SERVER -f $INSTANCE: already running." + else + echo -n "Starting $SERVER $INSTANCE server ..." + if [ `id -u` -eq "0" ] + then + su - servuser -c "cd / && ulimit -c unlimited && $SERVER -f $CONFPREFIX/$INSTANCE -p $PORT -v $LOGLEVEL -l $LOGFILE &" + sleep 1 + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "0" ] + then + echo " FAILED: an error occurred starting the program. Exit code: $?" + exit 6 + else + echo " OK." + fi + else + if [ `id -u` -eq "10005" ] + then + cd / && ulimit -c unlimited && $SERVER -f $CONFPREFIX/$INSTANCE -p $PORT -v $LOGLEVEL -l $LOGFILE & + sleep 1 + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "0" ] + then + echo " FAILED: an error occurred starting the program. Exit code: $?" + exit 6 + else + echo " OK." + fi + else + echo " FAILED: You must be root or servuser to run this script." + exit 8 + fi + fi + fi + index=$((index + 1)) +done +} + +stopserver() +{ +for INST in $INSTANCES +do + PORT=${PORTS[$index]} + LOGFILE="$LOGBASE/$LOGFILE$PORT.log" + INSTANCE=$INST + echo -n "Stopping $SERVER $CONFPREFIX/$INSTANCE server ..." + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "0" ] + then + echo " FAILED: not running." + else + kill `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | awk '{print $2}'` + if [ $? != "0" ] + then + echo " FAILED stopping $SERVER -f $CONFPREFIX/$INSTANCE : an error occurred stopping the program. Exit code: $?" + else + echo " OK." + fi + fi +done +} + +status() +{ +for INSTANCE in $INSTANCES +do + echo -n "checking $SERVER -f $CONFPREFIX/$INSTANCE ..." + + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "0" ] + then + echo " NOT running." + fi + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -gt "0" ] + then + echo " running." + fi +done +} + +case "$1" in + start) + startserver + ;; + + stop) + stopserver + ;; + + status) + status + ;; + + restart) + $0 stop + sleep 2 + $0 start + ;; + + *) + echo "Usage: /etc/init.d/$0 {start|stop|status|restart}" + ;; +esac + +exit 0 + +# EOF diff --git a/TCPSserver/tcps.sh.inst b/TCPSserver/tcps.sh.inst new file mode 100755 index 0000000000000000000000000000000000000000..f909233ca8f1a89284618cc44753d297cadc01a0 --- /dev/null +++ b/TCPSserver/tcps.sh.inst @@ -0,0 +1,156 @@ +#!/bin/bash + +################################################################################ +# RP - 17 febbraio 2006 +# CS - 23 gennaio 2009 +# Codici di errore dello script +# - in avvio: +# 2: non c'e` l'eseguibile oppure i permessi non sono impostati correttamente +# 3: il programma e` gia` in esecuzione +# 4: non c'e` il file di configurazione /etc/default/elettra_daemons +# 5: nel file di configurazione /etc/default/elettra_daemons non viene +# richiesto di avviare il programma +# 6: errore nell'avvio del programma come root. +# 7: errore nell'avvio del programma come servuser. +# 8: e` stato utilizzato un utente sbagliato per eseguire lo script +# - in arresto: +# 50: il programma non e` in esecuzione +# 51: si e` verificato un errore arrestando il programma. Viene fornito il +# codice di uscita del kill +################################################################################ +PREFIX="/runtime/elettra/servers" +CONFPREFIX="$PREFIX/etc" +PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PREFIX/bin +LD_LIBRARY_PATH=/usr/local/tango-7.2.6/lib:/usr/local/omniorb-4.1.4/lib +export LD_LIBRARY_PATH PATH +export TANGO_HOST=tom:20000 + +PYTHONPATH=$PREFIX/bin +export PYTHONPATH +SERVER="$PREFIX/bin/TCPStwserver.py" + +INSTANCES="elettrabcsbridge012.cfg elettrabcsbridge022.cfg elettrabcsbridge032.cfg elettrabcsbridge042.cfg elettrabcsbridge052.cfg elettrabcsbridge062.cfg elettrabcsbridge072.cfg elettrabcsbridge082.cfg elettrabcsbridge092.cfg elettrabcsbridge102.cfg elettrabcsbridge011.cfg elettrabcsbridge061.cfg elettrabcsbridge081.cfg elettrabcsbridge101.cfg elettrabcsbridge111.cfg" + +PORTS=(20012 20022 20032 20042 20052 20062 02072 20082 20092 20102 20011 20061 20081 20101 20111) + +LOGNAME="tcpserver" +LOGBASE="/runtime/site/ecsproxy/log" +LOGSIZE=1024k +LOGLEVEL=info + +startserver() +{ +if [ ! -x $SERVER ]; then + echo " FAILED: $SERVER executable not found." + exit 2 +fi +index=0 +for INSTANCE in $INSTANCES +do + PORT=${PORTS[$index]} + LOGFILE="$LOGBASE/$LOGNAME$PORT.log" + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "1" ] + then + echo "$SERVER -f $INSTANCE: already running." + else + echo -n "Starting $SERVER $INSTANCE server ..." + if [ `id -u` -eq "0" ] + then + su - servuser -c "cd / && ulimit -c unlimited && $SERVER -f $CONFPREFIX/$INSTANCE -p $PORT -v $LOGLEVEL -l $LOGFILE &" + sleep 1 + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "0" ] + then + echo " FAILED: an error occurred starting the program. Exit code: $?" + exit 6 + else + echo " OK." + fi + else + if [ `id -u` -eq "10005" ] + then + cd / && ulimit -c unlimited && $SERVER -f $CONFPREFIX/$INSTANCE -p $PORT -v $LOGLEVEL -l $LOGFILE & + sleep 1 + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "0" ] + then + echo " FAILED: an error occurred starting the program. Exit code: $?" + exit 6 + else + echo " OK." + fi + else + echo " FAILED: You must be root or servuser to run this script." + exit 8 + fi + fi + fi + index=$((index + 1)) +done +} + +stopserver() +{ +for INST in $INSTANCES +do + PORT=${PORTS[$index]} + LOGFILE="$LOGBASE/$LOGFILE$PORT.log" + INSTANCE=$INST + echo -n "Stopping $SERVER $CONFPREFIX/$INSTANCE server ..." + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "0" ] + then + echo " FAILED: not running." + else + kill `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | awk '{print $2}'` + if [ $? != "0" ] + then + echo " FAILED stopping $SERVER -f $CONFPREFIX/$INSTANCE : an error occurred stopping the program. Exit code: $?" + else + echo " OK." + fi + fi +done +} + +status() +{ +for INSTANCE in $INSTANCES +do + echo -n "checking $SERVER -f $CONFPREFIX/$INSTANCE ..." + + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -eq "0" ] + then + echo " NOT running." + fi + if [ `ps -ef | grep "$SERVER -f $CONFPREFIX/$INSTANCE" | grep -v grep | wc -l` -gt "0" ] + then + echo " running." + fi +done +} + +case "$1" in + start) + startserver + ;; + + stop) + stopserver + ;; + + status) + status + ;; + + restart) + $0 stop + sleep 2 + $0 start + ;; + + *) + echo "Usage: /etc/init.d/$0 {start|stop|status|restart}" + ;; +esac + +exit 0 + +# EOF diff --git a/TCPSserver/tcpserver20012.log b/TCPSserver/tcpserver20012.log new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/TCPSserver/testcmd.cfg b/TCPSserver/testcmd.cfg new file mode 100644 index 0000000000000000000000000000000000000000..2296e15efe5492972b5a5d406f57bc57900a61a3 --- /dev/null +++ b/TCPSserver/testcmd.cfg @@ -0,0 +1,13 @@ +#configuration file for elettra-Tango to BCS bridge test simple commnds to fake ID + +#ID2 readings +GET 022F_MACHINE_MACHINE_1_GAP021 sr/id/id_s2/Gap +GET 022F_MACHINE_MACHINE_1_TAP021 sr/id/id_s2/Tapering + +#ID2 settings +SET 022F_MACHINE_MACHINE_1_GAP021 VALGAP sr/id/id_s2/Gap +SET 022F_MACHINE_MACHINE_1_TAP021 VALPHA sr/id/id_s2/Tapering + +#ID8 brakes +GET 081F_MACHINE_MACHINE_1_BRK sr/id/id_s8.1/Brake +SET 081F_MACHINE_MACHINE_1_BRK BRKON sr/id/id_s8.1/Brake \ No newline at end of file diff --git a/TCPSserver/testexc.py b/TCPSserver/testexc.py new file mode 100644 index 0000000000000000000000000000000000000000..75a7c0a9ea03cd2d796f0c7eba279f29f9b25b4f --- /dev/null +++ b/TCPSserver/testexc.py @@ -0,0 +1,19 @@ +import sys +import string +import PyTango + +dev=PyTango.DeviceProxy('sr/id/id_s2.2') + +try: + dev.write_attribute('Gap',22.5) +except PyTango.DevFailed, e: + #exctype ,value = sys.exc_info()[:2] + #print 'Exception: ' , e + #for err in e: + #print ' reason', err.reason + #print ' description', err.desc + #print ' origin', err.origin + #print ' severity',err.severity + Err0=e[0].desc + Err1=e[1].desc + print 'ERRR', Err0, Err1.split()[5], \ No newline at end of file diff --git a/TCPSserver/testphbsh.cfg b/TCPSserver/testphbsh.cfg new file mode 100644 index 0000000000000000000000000000000000000000..39299db0e43c61ebd0d47746a7a991a10180bf99 --- /dev/null +++ b/TCPSserver/testphbsh.cfg @@ -0,0 +1,19 @@ +#front-end PHOTON SHUTTER readings +GET FRONTEND_MACHINE_MACHINE_1_SHUT01M tango://tom:20000/sr/vacuum/phbsh_s1.1m/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT012 tango://tom:20000/sr/vacuum/phbsh_s1.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT101 tango://tom:20000/sr/vacuum/phbsh_s10.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT102 tango://tom:20000/sr/vacuum/phbsh_s10.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT111 tango://tom:20000/sr/vacuum/phbsh_s11.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT112 tango://tom:20000/sr/vacuum/phbsh_s11.2/StatRF +GET 022F_MACHINE_MACHINE_1_SHUT022 tango://tom:20000/sr/vacuum/phbsh_s2.2/StatRF +GET 032F_MACHINE_MACHINE_1_SHUT032 tango://tom:20000/sr/vacuum/phbsh_s3.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT042 tango://tom:20000/sr/vacuum/phbsh_s4.2/StatRF +GET 052F_MACHINE_MACHINE_1_SHUT052 tango://tom:20000/sr/vacuum/phbsh_s5.2/StatRF +GET 061F_MACHINE_MACHINE_1_SHUT061 tango://tom:20000/sr/vacuum/phbsh_s6.1/StatRF +GET 062F_MACHINE_MACHINE_1_SHUT062 tango://tom:20000/sr/vacuum/phbsh_s6.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT071 tango://tom:20000/sr/vacuum/phbsh_s7.1/StatRF +GET 072F_MACHINE_MACHINE_1_SHUT072 tango://tom:20000/sr/vacuum/phbsh_s7.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT081 tango://tom:20000/sr/vacuum/phbsh_s8.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT082 tango://tom:20000/sr/vacuum/phbsh_s8.2/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT091 tango://tom:20000/sr/vacuum/phbsh_s9.1/StatRF +GET FRONTEND_MACHINE_MACHINE_1_SHUT092 tango://tom:20000/sr/vacuum/phbsh_s9.2/StatRF \ No newline at end of file diff --git a/TCPSserver/testsissi.cfg b/TCPSserver/testsissi.cfg new file mode 100644 index 0000000000000000000000000000000000000000..0cbe8cc61a37043e9fffae5a1e80178d2c1a5e27 --- /dev/null +++ b/TCPSserver/testsissi.cfg @@ -0,0 +1,30 @@ +#configuration file for elettra-Tango to BCS bridge + + +#main beam parameters +GET FRONTEND_MACHINE_MACHINE_1_ACCUCURR tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Current +GET FRONTEND_MACHINE_MACHINE_1_EENERGY tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Energy +GET FRONTEND_MACHINE_MACHINE_1_LIFETIME tango://tom.ecs.elettra.trieste.it:20000/sr/diagnostics/dcct_s4/Lifetime + +#topup bits reading reading +GET FRONTEND_MACHINE_MACHINE_1_TOPUSTA info/sr/1/Topupbits +#BeamON reading +GET FRONTEND_MACHINE_MACHINE_1_BEAMON info/sr/1/beamON + +#vacuum redings SIP120-SIP400 + +GET FRONTEND_MACHINE_MACHINE_1_P120S091 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip120/SIP120_S9.2_PRES_RR +GET FRONTEND_MACHINE_MACHINE_1_P400S091 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/sip400/SIP400_S9.1_PRES_RR + +#front-end VLVFE readings +GET FRONTEND_MACHINE_MACHINE_1_VALVE091 tango://tom.ecs.elettra.trieste.it:20000/rpcbridge/rpc2tangobridge/vlvfe/VLVFE_S9.1_STAT_RF + +#front-end PHOTON SHUTTER readings + +GET FRONTEND_MACHINE_MACHINE_1_SHUT091 tango://tom.ecs.elettra.trieste.it:20000/sr/vacuum/phbsh_s9.1/StatRF + +#beam positions and angles at centre of straigth sections +GET 091F_MACHINE_MACHINE_1_XPOS sr/diagnostics/bpmid/X_B9 +GET 091F_MACHINE_MACHINE_1_YPOS sr/diagnostics/bpmid/Y_B9 +GET 091F_MACHINE_MACHINE_1_XANGLE sr/diagnostics/bpmid/XP_B9 +GET 091F_MACHINE_MACHINE_1_YANGLE sr/diagnostics/bpmid/YP_B9 diff --git a/blfe.py b/blfe.py new file mode 100644 index 0000000000000000000000000000000000000000..476e957d86afeda00d8f3d93661416c0c0096891 --- /dev/null +++ b/blfe.py @@ -0,0 +1,209 @@ +# module for creating beamline front-end config +# class blfe incapsulates the reading and closing of beamline front-ends shuter/stoppers +# stores also the complet configuration +# $Author: claudio $ +# +# $Name: $ +# +# $Log: blfe.py,v $ +# Revision 1.15 2021-01-11 14:46:35 claudio +# removed 061_BSTOPPERAF +# +# Revision 1.14 2018-04-30 08:36:29 claudio +# #5959 errore closing front end +# +# Revision 1.13 2018-04-12 08:46:16 claudio +# mod syrmep- verificate +# +# Revision 1.12 2018-04-03 08:42:34 claudio +# #5643: modifiche syrmep +# +# Revision 1.11 2017-02-13 09:27:36 claudio +# revision tag +# +# Revision 1.10 2016-03-21 08:54:23 claudio +# tested commands for 112f +# +# Revision 1.9 2016-03-10 09:05:23 claudio +# add 112 stopper +# +# Revision 1.8 2015-12-22 10:34:45 claudio +# ticket 1591 +# +# Revision 1.7 2014-09-29 09:08:53 claudio +# correctc CMD and VAR for microfluo shopper +# +# Revision 1.6 2014-09-11 11:15:23 claudio +# corrected label +# +# Revision 1.5 2014-09-10 12:16:13 claudio +# ticket 1406: LEFT_SHUTTER_VACOWAGO_20 +# +# Revision 1.4 2013-04-08 14:19:24 claudio +# force case in string comparison +# +# Revision 1.3 2009/11/13 10:01:36 claudio +# "natural" default rpc timeout +# +# Revision 1.2 2008/09/30 07:53:49 claudio +# commented out shutter/stopper under commissioning (11.2) +# +# Revision 1.1 2008/09/23 09:12:10 claudio +# First import +# +# +import lib_pyElettra +import string +class blfe: + def __init__(self): + self.nread=0 + self.nerror=0 + self.nopen=0 + self.nclosed=0 + self.nunknown=0 + self.nentries=0 + + self.bltable=[] + #here put in the complete table of shopper/shutters/stoppers in beamline jargon + # format of table entry is: + # 'point','host','read-command_name',value,'status',set-command_name,set-parm + # value:0 closed, 1 open, -1 unknown, -2 read error' + # status: UNKNOWN,OPEN,CLOSED,ERROR + # value and status are dynamically changed by read operations + +# self.bltable.append(['BACKEND_SHOPPER_VACOBECK_20_STATUS0','bacs011.blcs.elettra.trieste.it','1.0-backend',-1,'UNKNOWN','BACKEND_SHOPPER_VACOBECK_20_RMTCMD0','RMTCMD0']) + + self.bltable.append(['FRONTEND_SHOPPER-L_VACO_1_STATUS2','011f-bcs.blcs.elettra.trieste.it','1.1M TwinMic',-1,'UNKNOWN','FRONTEND_SHOPPER-L_VACO_1_RMTCMD2','VALRMTCMD2']) + + self.bltable.append(['FRONTEND_STOPPER_VACO_1_STATUS1','012f-bcs.blcs.elettra.trieste.it','1.2 Nanospectr.',-1,'UNKNOWN','FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1' ]) + self.bltable.append(['FRONTEND_SHUTTER_VACO_1_STATUS0','012f-bcs.blcs.elettra.trieste.it','1.2 Nanospectr.',-1,'UNKNOWN','FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0' ]) + + self.bltable.append(['022F_USTOPPER1F_VACO_1_STATUS1','022f-bcs.blcs.elettra.trieste.it','2.2 ESCA',-1,'UNKNOWN','022F_USTOPPER1F_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['022F_USHUTTER1F_VACO_1_STATUS0','022f-bcs.blcs.elettra.trieste.it','2.2 ESCA',-1,'UNKNOWN','022F_USHUTTER1F_VACO_1_RMTCMD0' , 'VALRMTCMD0' ]) + + self.bltable.append(['032F_USTOPPER1F_VACO_1_STATUS1','032f-bcs.blcs.elettra.trieste.it','3.2 VUV/Spectrom.',-1,'UNKNOWN','032F_USTOPPER1F_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['032F_USHUTTER1F_VACO_1_STATUS0','032f-bcs.blcs.elettra.trieste.it','3.2 VUV/Spectrom.',-1,'UNKNOWN','032F_USHUTTER1F_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['FRONTEND_STOPPER_VACO_1_STATUS1','042f-bcs.blcs.elettra.trieste.it','4.2 Circ. pol.',-1,'UNKNOWN','FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['FRONTEND_SHUTTER_VACO_1_STATUS0','042f-bcs.blcs.elettra.trieste.it','4.2 Circ. pol.',-1,'UNKNOWN','FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['XRD_STOPPER1_VACO_11_STATUS0','052f-bcs.blcs.elettra.trieste.it','5.2 XRD1',-1,'UNKNOWN','XRD_STOPPER1_VACO_11_RMTCMD0' , 'VALRMTCMD0']) + self.bltable.append(['XRD_STOPPER2_VACO_10_STATUS3','052f-bcs.blcs.elettra.trieste.it','5.2 XRD1',-1,'UNKNOWN','XRD_STOPPER2_VACO_10_RMTCMD3' , 'VALRMTCMD3']) + self.bltable.append(['XRD_STOPPER3_VACO_10_STATUS2','052f-bcs.blcs.elettra.trieste.it','5.2 XRD1',-1,'UNKNOWN','XRD_STOPPER3_VACO_10_RMTCMD2' , 'VALRMTCMD2' ]) + self.bltable.append(['052F_WSHUTTER1F_VACO_1_STATUS5','052f-bcs.blcs.elettra.trieste.it','5.2 SAXS',-1,'UNKNOWN','052F_WSHUTTER1F_VACO_1_RMTCMD5' , 'VALRMTCMD5']) + self.bltable.append(['052F_WSTOPPER1F_VACO_1_STATUS4','052f-bcs.blcs.elettra.trieste.it','5.2 SAXS',-1,'UNKNOWN','052F_WSTOPPER1F_VACO_1_RMTCMD4' , 'VALRMTCMD4']) + + self.bltable.append(['061F_BSTOPPERCF_VACO_1_STATUS2','061f-bcs.blcs.elettra.trieste.it','6.1 Mat. Science',-1,'UNKNOWN','061F_BSTOPPERCF_VACO_1_RMTCMD2' , 'VALRMTCMD2']) + self.bltable.append(['061F_BSHUTTERAF_VACO_2_STATUS0','061f-bcs.blcs.elettra.trieste.it','6.1 Syrmep',-1,'UNKNOWN','061F_BSHUTTERAF_VACO_2_RMTCMD0' , 'VALRMTCMD0']) + self.bltable.append(['061F_BSHUTTERCF_VACO_1_STATUS0','061f-bcs.blcs.elettra.trieste.it','6.1 Mat. Science',-1,'UNKNOWN','061F_BSHUTTERCF_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['062F_USTOPPER1F_VACO_1_STATUS1','062f-bcs.blcs.elettra.trieste.it','6.2 GasPhase',-1,'UNKNOWN','062F_USTOPPER1F_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['062F_USHUTTER1F_VACO_1_STATUS0','062f-bcs.blcs.elettra.trieste.it','6.2 GasPhase',-1,'UNKNOWN','062F_USHUTTER1F_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['FRONTEND_SHOPPER-R_VACO_1_STATUS0','071f-bcs.blcs.elettra.trieste.it','7.1 MCX',-1,'UNKNOWN','FRONTEND_SHOPPER-R_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + self.bltable.append(['RIGHT_SHUTTER_VACO_30_STATUS4','071f-bcs.blcs.elettra.trieste.it','7.1 MCX',-1,'UNKNOWN','RIGHT_SHUTTER_VACO_30_RMTCMD4' , 'VALRMTCMD4']) + + self.bltable.append(['072F_USTOPPER1F_VACO_1_STATUS1','072f-bcs.blcs.elettra.trieste.it','7.2 ALOISA',-1,'UNKNOWN','072F_USTOPPER1F_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['072F_USHUTTER1F_VACO_1_STATUS0','072f-bcs.blcs.elettra.trieste.it','7.2 ALOISA',-1,'UNKNOWN','072F_USHUTTER1F_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['FRONTEND_SHOPPER-R_VACO_2_STATUS0','081f-bcs.blcs.elettra.trieste.it','8.1 Lilit',-1,'UNKNOWN','FRONTEND_SHOPPER-R_VACO_2_RMTCMD0' , 'VALRMTCMD0']) + self.bltable.append(['FRONTEND_SHOPPER-L_VACO_1_STATUS0','081f-bcs.blcs.elettra.trieste.it','8.1 BEAR',-1,'UNKNOWN','FRONTEND_SHOPPER-L_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + self.bltable.append(['RIGHT_EXSLIT_VACO_10_STATUS4','081f-bcs.blcs.elettra.trieste.it','8.1 Lilit',-1,'UNKNOWN','RIGHT_EXSLIT_VACO_10_RMTCMD4' , 'VALRMTCMD4']) + + self.bltable.append(['FRONTEND_STOPPER_VACO_1_STATUS1','082f-bcs.blcs.elettra.trieste.it','8.2 Bach',-1,'UNKNOWN','FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['FRONTEND_SHUTTER_VACO_1_STATUS0','082f-bcs.blcs.elettra.trieste.it','8.2 Bach',-1,'UNKNOWN','FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['CENTRAL_STOPPER_VACO_20_STATUS0','091f-bcs.blcs.elettra.trieste.it','9.1 SISSI',-1,'UNKNOWN','CENTRAL_STOPPER_VACO_20_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['FRONTEND_STOPPER_VACO_1_STATUS1','092f-bcs.blcs.elettra.trieste.it','9.2 APE',-1,'UNKNOWN','FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['FRONTEND_SHUTTER_VACO_1_STATUS0','092f-bcs.blcs.elettra.trieste.it','9.2 APE',-1,'UNKNOWN','FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['FRONTEND_SHOPPER-R_VACO_1_STATUS4','101f-bcs.blcs.elettra.trieste.it','10.1 DXRL',-1,'UNKNOWN','FRONTEND_SHOPPER-R_VACO_1_RMTCMD4' , 'VALRMTCMD4']) + self.bltable.append(['FRONTEND_SHOPPER-L_VACO_1_STATUS0','101f-bcs.blcs.elettra.trieste.it','10.1 X-Ray Fluo.',-1,'UNKNOWN','FRONTEND_SHOPPER-L_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['LEFT_SHUTTER_VACOWAGO_20_STATUS1','101f-bcs.blcs.elettra.trieste.it','10.1L X-Ray Fluo.',-1,'UNKNOWN','LEFT_SHUTTER_VACOWAGO_20_RMTCMD1' , 'RMTCMD1']) + + self.bltable.append(['FRONTEND_STOPPER_VACO_1_STATUS1','102f-bcs.blcs.elettra.trieste.it','10.2 IUVS/BaDElPh',-1,'UNKNOWN','FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['FRONTEND_SHUTTER_VACO_1_STATUS0','102f-bcs.blcs.elettra.trieste.it','10.2 IUVS/BaDElPh',-1,'UNKNOWN','FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['FRONTEND_SHOPPER-R_VACO_2_STATUS0','111f-bcs.blcs.elettra.trieste.it','11.1 XAFS',-1,'UNKNOWN','FRONTEND_SHOPPER-R_VACO_2_RMTCMD0' , 'VALRMTCMD0']) + self.bltable.append(['RIGHT_STOPPER_VACO_30_STATUS6','111f-bcs.blcs.elettra.trieste.it','11.1 XAFS',-1,'UNKNOWN','RIGHT_STOPPER_VACO_30_RMTCMD6' , 'VALRMTCMD6']) + self.bltable.append(['FRONTEND_SHOPPER-L_VACO_1_STATUS0','111f-bcs.blcs.elettra.trieste.it','11.1 WhITE',-1,'UNKNOWN','FRONTEND_SHOPPER-L_VACO_1_RMTCMD0' , 'VALRMTCMD0']) + + self.bltable.append(['FRONTEND_STOPPER_VACO_1_STATUS1','112f-bcs.blcs.elettra.trieste.it','11.2 XPRESS & XRD2',-1,'UNKNOWN','FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1']) + self.bltable.append(['RIGHT_SHOPPER2_VACOWAGO_30_STATUS0','112f-bcs.blcs.elettra.trieste.it','11.2 XPRESS',-1,'UNKNOWN','RIGHT_SHOPPER2_VACOWAGO_30_RMTCMD0' , 'RMTCMD0']) + self.bltable.append(['CENTRAL_STOPPER2_VACOWAGO_20_STATUS1','112f-bcs.blcs.elettra.trieste.it','11.2 XRD2',-1,'UNKNOWN','CENTRAL_STOPPER2_VACOWAGO_20_RMTCMD1' , 'RMTCMD1']) + + #form dictionary of hosts-controlstem objetcs + self.hostdict={} + for entry in self.bltable: + self.nunknown=self.nunknown+1 + self.nentries=self.nentries+1 + if entry[1] not in self.hostdict: + ControlSystem = lib_pyElettra.XCS() + ControlSystem.open(entry[1]) + self.hostdict[entry[1]]=ControlSystem + #print 'add '+entry[1] + def disconnect(self): + for host,contrsys in self.hostdict.iteritems(): + contrsys.close() + def read(self): + self.nread=0 + self.nerror=0 + self.nopen=0 + self.nclosed=0 + self.nunknown=0 + for entry in self.bltable: + ControlSystem=self.hostdict[entry[1]] + resp = ControlSystem.fetch(entry[0]) + self.nread=self.nread+1 +# print entry[0]+" "+resp[0]+" "+resp[1] + if resp[1]=='fetchException': + ntry[3]=-2 + entry[4]='ERROR' + self.nerror=self.nerror+1 +# print entry[0]+' read error' + else: + if resp[0]=='1' and resp[1].lower()=='open': + entry[3]=1 + entry[4]='OPEN' + self.nopen=self.nopen+1 +# print entry[0]+' OPENED' + elif resp[0]=='0' and resp[1].lower()=='closed': + entry[3]=0 + entry[4]='CLOSED' + self.nclosed=self.nclosed+1 +# print entry[0]+' CLOSED' + elif resp[0]=='3' and resp[1].lower()=='closed': + entry[3]=0 + entry[4]='CLOSED' + self.nclosed=self.nclosed+1 + else: + entry[3]=-1 + entry[4]='UNKNOWN' +# print entry[0]+' UNKNOWN '+ resp[0]+ " "+resp[1] + def allclosed(self): +# return 1 ONLY if we are positvely sure that we have successufully read all the shutters and that they are closed + if self.nclosed==self.nread and self.nread==self.nentries: + return 1 + else: + return 0 + + def closeall(self): +# send close command to all known front-ends shuttters,stoppers, etc. + nclosed=0 + nerror=0 + errtable=[] + for entry in self.bltable: + ControlSystem=self.hostdict[entry[1]] + nclosed=nclosed+1 + print nclosed , entry[5],entry[6] + if len(entry[5]) > 0 and len(entry[6]) >0: + resp=ControlSystem.doit(entry[5],entry[6],'0') # 0 per chiudere, 1 per aprire! + else: + resp = 'OK' + if ( string.find(resp,'OK') == -1): + nerror = nerror+1 + errtable.append([entry[1],entry[2],entry[5],entry[6]]) + if(nerror): + return errtable diff --git a/blfetest.py b/blfetest.py new file mode 100644 index 0000000000000000000000000000000000000000..c50bfdcedc40d63d1dbd6fe3509c0197aec4685a --- /dev/null +++ b/blfetest.py @@ -0,0 +1,11 @@ +import blfe + +BL=blfe.blfe() + +BL.read() + +print 'BL all closed: '+repr(BL.allclosed()) + +BL.disconnect() + +#print repr(BL.bltable) \ No newline at end of file diff --git a/demo.py b/demo.py new file mode 100755 index 0000000000000000000000000000000000000000..63feed7ad588d83e65c8286e421bfe62beec73b5 --- /dev/null +++ b/demo.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +from lib_pyElettra import * + + +ControlSystem = XCS() +ControlSystem.open("112f-bcs.blcs.elettra.trieste.it") + +#Let's read a pressure +#resp = ControlSystem.fetch("FRONTEND_SHUTTER_TPG300_1_B2PRESSURE") +#if resp[1]=='fetchException': + #print 'Exception' + resp[0]+","+resp[1]+","+resp[2] +#else: + #value = float(resp[3]) + #print 'response: press ' + repr(value) + +##Let's read a valve status +resp = ControlSystem.fetch("CENTRAL_STOPPER2_VACOWAGO_20_STATUS1") +if resp[1]=='fetchException': + print 'Exception ' + resp[0]+","+resp[1]+","+resp[2] +else: + print resp + value = int(resp[0]) + print 'response: stat ' + repr(value) + + +#Let's change a valve status +resp = ControlSystem.doit('CENTRAL_STOPPER2_VACOWAGO_20_RMTCMD1' , 'RMTCMD1' ,0) +if ( string.find(resp,'OK') == -1): + print 'doit ERROR' + resp[0]+","+resp[1]+","+resp[2] +else: + print 'response: ' + resp + +ControlSystem.close() diff --git a/fakedevices/HelicalID.py b/fakedevices/HelicalID.py new file mode 100644 index 0000000000000000000000000000000000000000..738c1231e63f88fef1496f54deda3db76b225142 --- /dev/null +++ b/fakedevices/HelicalID.py @@ -0,0 +1,632 @@ +#!/usr/bin/python +# "$Name: $"; +# "$Header: /home/cvsadm/cvsroot/elettra/server/bcsbridge/fakedevices/HelicalID.py,v 1.7 2014-05-12 12:14:43 claudio Exp $"; +#============================================================================= +# +# file : HelicalID.py +# +# description : Python source for the HelicalID and its commands. +# The class is derived from Device. It represents the +# CORBA servant object which will be accessed from the +# network. All commands which can be executed on the +# HelicalID are implemented in this file. +# +# project : TANGO Device Server +# +# $Author: claudio $ +# +# $Revision: 1.7 $ +# +# $Log: HelicalID.py,v $ +# Revision 1.7 2014-05-12 12:14:43 claudio +# *** empty log message *** +# +# Revision 1.6 2013-04-19 13:30:45 claudio +# bug correctec in write_attribute +# +# Revision 1.5 2013-04-19 09:55:33 claudio +# PyTango 8.0.2 compliant +# +# Revision 1.4 2012-08-21 14:06:20 claudio +# interfaccia con MoveMaxGap e SetGapTapPha +# +# Revision 1.3 2012-08-20 12:34:06 claudio +# support simulations for FERMI +# +# Revision 1.2 2010/12/24 10:48:08 claudio +# improved simulation of motion +# +# Revision 1.1 2010/08/03 15:46:15 claudio +# for testing TCPS +# +# +# copyleft : Sincrotrone Trieste s.c.p.A. +# +#============================================================================= +# This file is generated by POGO +# (Program Obviously used to Generate tango Object) +# +# (c) - Software Engineering Group - ESRF +#============================================================================= +# + + +import PyTango +import sys + + +#================================================================== +# HelicalID Class Description: +# +# simulator for helical insertion device. +# Use for testing tango - bcs bridge and supervisor +# +#================================================================== +# Device States Description: +# +# DevState.ON : +# DevState.FAULT : +# DevState.UNKNOWN : +# DevState.MOVING : +#================================================================== + + +class HelicalID(PyTango.Device_4Impl): + +#--------- Add you global variables here -------------------------- + +#------------------------------------------------------------------ +# Device constructor +#------------------------------------------------------------------ + def __init__(self,cl, name): + PyTango.Device_4Impl.__init__(self,cl,name) + HelicalID.init_device(self) + +#------------------------------------------------------------------ +# Device destructor +#------------------------------------------------------------------ + def delete_device(self): + print "[Device delete_device method] for device",self.get_name() + + +#------------------------------------------------------------------ +# Device initialization +#------------------------------------------------------------------ + def init_device(self): + print "In ", self.get_name(), "::init_device()" + self.set_state(PyTango.DevState.INIT) + self.get_device_properties(self.get_device_class()) + self.attr_Enabled_read=True + self.attr_StatRF_read = [False,False] + self.attr_Gap_read = 100.0 + self.attr_Phase_read = 0.0 + self.attr_Taper_read = 0.0 + self.gap_write = self.attr_Gap_read + self.phase_write = self.attr_Phase_read + self.taper_write = self.attr_Taper_read + self.ready = True + self.moving = False + self.set_state(PyTango.DevState.ON) + +#------------------------------------------------------------------ +# Always excuted hook method +#------------------------------------------------------------------ + def always_executed_hook(self): + print "In ", self.get_name(), "::always_excuted_hook()" + +#================================================================== +# +# HelicalID read/write attribute methods +# +#================================================================== +#------------------------------------------------------------------ +# Read Attribute Hardware +#------------------------------------------------------------------ + def read_attr_hardware(self,data): + print "In ", self.get_name(), "::read_attr_hardware()" + #do simulated movement + if self.moving: + self.moving=False + if self.gap_write != self.attr_Gap_read: + delta=self.gap_write - self.attr_Gap_read + if delta > -1.0 and delta <1.0: + self.attr_Gap_read = self.gap_write + elif delta <= -1.0: + self.attr_Gap_read -= 1.0 + self.moving=True + elif delta >=0.0: + self.attr_Gap_read += 1.0 + self.moving = True + + if self.phase_write != self.attr_Phase_read: + delta=self.phase_write - self.attr_Phase_read + if delta > -1.0 and delta <1.0: + self.attr_Phase_read = self.phase_write + elif delta <= -1.0: + self.attr_Phase_read -= 1.0 + self.moving=True + elif delta >=0.0: + self.attr_Phase_read += 1.0 + self.moving = True + + if self.taper_write != self.attr_Taper_read: + delta=self.taper_write - self.attr_Taper_read + if delta > -1.0 and delta <1.0: + self.attr_Taper_read = self.taper_write + elif delta <= -1.0: + self.attr_Taper_read -= 1.0 + self.moving=True + elif delta >=0.0: + self.attr_Taper_read += 1.0 + self.moving = True + + + + if self.moving: + self.set_state(PyTango.DevState.MOVING) + self.set_status('moving') + self.ready=False #not ready + else: + self.set_state(PyTango.DevState.ON) + self.ready=True # ready + self.set_status('ON and ready') + + + +#------------------------------------------------------------------ +# Read Enabled attribute +#------------------------------------------------------------------ + def read_Enabled(self, attr): + print "In ", self.get_name(), "::read_Enabled()" + + # Add your own code here + attr.set_value(self.attr_Enabled_read) + + +#------------------------------------------------------------------ +# Read Gap attribute +#------------------------------------------------------------------ + def read_Gap(self, attr): + print "In ", self.get_name(), "::read_Gap()" + + # Add your own code here + attr.set_value(self.attr_Gap_read) + + +#------------------------------------------------------------------ +# Write Gap attribute +#------------------------------------------------------------------ + def write_Gap(self, attr): + print "In ", self.get_name(), "::write_Gap()" + + data = attr.get_write_value() + print "Attribute value = ", data + # Add your own code here + # raise excpetionif operation is not permitted + if not (self.attr_Enabled_read and self.ready): + msg='gap request for '+str(data)+' RESPINTA' + PyTango.Except.throw_exception('Rejected request',msg,'HelicalID.write_Gap()') + self.gap_write=data + self.set_state(PyTango.DevState.MOVING) + self.moving = True + self.ready=False # NOT ready + self.set_status('moving and not ready') + + +#---- Gap attribute State Machine ----------------- + def is_Gap_allowed(self, req_type): + if self.get_state() in [PyTango.DevState.FAULT, + PyTango.DevState.UNKNOWN]: + # End of Generated Code + # Re-Start of Generated Code + return False + return True + + +#------------------------------------------------------------------ +# Read Phase attribute +#------------------------------------------------------------------ + def read_Phase(self, attr): + print "In ", self.get_name(), "::read_Phase()" + + # Add your own code here + attr.set_value(self.attr_Phase_read) + + +#------------------------------------------------------------------ +# Write Phase attribute +#------------------------------------------------------------------ + def write_Phase(self, attr): + print "In ", self.get_name(), "::write_Phase()" + data = attr.get_write_value() + print "Attribute value = ", data + + # Add your own code here + if not (self.attr_Enabled_read and self.ready): + msg='phase request for '+str(data)+' RESPINTA' + PyTango.Except.throw_exception('Rejected request',msg,'HelicalID.write_Phase()') + self.phase_write=data + self.set_state(PyTango.DevState.MOVING) + self.moving = True + self.ready=False # NOT ready + self.set_status('moving and not ready') + + +#---- Phase attribute State Machine ----------------- + def is_Phase_allowed(self, req_type): + if self.get_state() in [PyTango.DevState.FAULT, + PyTango.DevState.UNKNOWN]: + # End of Generated Code + # Re-Start of Generated Code + return False + return True + + +#------------------------------------------------------------------ +# Read Taper attribute +#------------------------------------------------------------------ + def read_Taper(self, attr): + print "In ", self.get_name(), "::read_Taper()" + + # Add your own code here + + attr.set_value(self.attr_Taper_read) + + +#------------------------------------------------------------------ +# Write Taper attribute +#------------------------------------------------------------------ + def write_Taper(self, attr): + print "In ", self.get_name(), "::write_Taper()" + data= attr.get_write_value() + print "Attribute value = ", data + + # Add your own code here + if not (self.attr_Enabled_read and self.ready): + msg='phase request for '+str(data)+' RESPINTA' + PyTango.Except.throw_exception('Rejected request',msg,'HelicalID.write_Phase()') + self.taper_write=data + self.set_state(PyTango.DevState.MOVING) + self.moving = True + self.ready=False # NOT ready + self.set_status('moving and not ready') + + +#---- Taper attribute State Machine ----------------- + def is_Taper_allowed(self, req_type): + if self.get_state() in [PyTango.DevState.FAULT, + PyTango.DevState.UNKNOWN]: + # End of Generated Code + # Re-Start of Generated Code + return False + return True + + +#------------------------------------------------------------------ +# Read GapSetPoint attribute +#------------------------------------------------------------------ + def read_GapSetPoint(self, attr): + print "In ", self.get_name(), "::read_GapSetPoint()" + + # Add your own code here + + attr.set_value(self.gap_write) + + +#---- GapSetPoint attribute State Machine ----------------- + def is_GapSetPoint_allowed(self, req_type): + if self.get_state() in [PyTango.DevState.FAULT, + PyTango.DevState.UNKNOWN]: + # End of Generated Code + # Re-Start of Generated Code + return False + return True + + +#------------------------------------------------------------------ +# Read PhaseSetPoint attribute +#------------------------------------------------------------------ + def read_PhaseSetPoint(self, attr): + print "In ", self.get_name(), "::read_PhaseSetPoint()" + + # Add your own code here + + attr.set_value(self.phase_write) + + +#---- PhaseSetPoint attribute State Machine ----------------- + def is_PhaseSetPoint_allowed(self, req_type): + if self.get_state() in [PyTango.DevState.FAULT, + PyTango.DevState.UNKNOWN]: + # End of Generated Code + # Re-Start of Generated Code + return False + return True + + +#------------------------------------------------------------------ +# Read TaperSetPoint attribute +#------------------------------------------------------------------ + def read_TaperSetPoint(self, attr): + print "In ", self.get_name(), "::read_TaperSetPoint()" + + # Add your own code here + + + attr.set_value(self.taper_write) + + +#---- TaperSetPoint attribute State Machine ----------------- + def is_TaperSetPoint_allowed(self, req_type): + if self.get_state() in [PyTango.DevState.FAULT, + PyTango.DevState.UNKNOWN]: + # End of Generated Code + # Re-Start of Generated Code + return False + return True + + +#------------------------------------------------------------------ +# Read StatRF attribute +#------------------------------------------------------------------ + def read_StatRF(self, attr): + print "In ", self.get_name(), "::read_StatRF()" + + # Add your own code here + + attr_StatRF_read = [self.ready,self.attr_Enabled_read] + attr.set_value(attr_StatRF_read, 2) + + + +#================================================================== +# +# HelicalID command methods +# +#================================================================== + +#------------------------------------------------------------------ +# Remote command: +# +# Description: enable remote operations for beamlines +# +#------------------------------------------------------------------ + def Remote(self): + print "In ", self.get_name(), "::Remote()" + # Add your own code here + self.attr_Enabled_read=True + + +#------------------------------------------------------------------ +# Local command: +# +# Description: inhibit remote operations to beamlines +# +#------------------------------------------------------------------ + def Local(self): + print "In ", self.get_name(), "::Local()" + # Add your own code here + self.attr_Enabled_read=False + + +#------------------------------------------------------------------ +# MoveMaxGap command: +# +# Description: go to max gap , rest position +# +#------------------------------------------------------------------ + def MoveMaxGap(self): + print "In ", self.get_name(), "::MoveMaxGap()" + # Add your own code here + self.gap_write = self.MaxGap + self.phase_write = 0.0 + self.taper_write = 0.0 + self.set_state(PyTango.DevState.MOVING) + self.ready=False # NOT ready + self.moving = True + self.set_status('moving and not ready') + return + + +#------------------------------------------------------------------ +# SetGapTapPha command: +# +# Description: set new working point in one go +# +# argin: DevVarDoubleArray gap, taper, phase +#------------------------------------------------------------------ + def SetGapTapPha(self, argin): + print "In ", self.get_name(), "::SetGapTapPha()" + # Add your own code here + self.gap_write = argin[0] + self.taper_write = argin[1] + self.phase_write = argin[2] + self.set_state(PyTango.DevState.MOVING) + self.moving = True + self.ready=False # NOT ready + self.set_status('moving and not ready') + + +#------------------------------------------------------------------ +# Stop command: +# +# Description: Stop movement +# +#------------------------------------------------------------------ + def Stop(self): + print "In ", self.get_name(), "::Stop()" + # Add your own code here + self.moving = False + + +#================================================================== +# +# HelicalIDClass class definition +# +#================================================================== +class HelicalIDClass(PyTango.DeviceClass): + + # Class Properties + class_property_list = { + } + + + # Device Properties + device_property_list = { + 'NumAxes': + [PyTango.DevLong, + "number of mechanical axes , 6, 4, or 2", + [ 6 ] ], + 'MaxGap': + [PyTango.DevDouble, + "gap value for rest position", + [ 190.0 ] ], + } + + + # Command definitions + cmd_list = { + 'Remote': + [[PyTango.DevVoid, ""], + [PyTango.DevVoid, ""]], + 'Local': + [[PyTango.DevVoid, ""], + [PyTango.DevVoid, ""]], + 'MoveMaxGap': + [[PyTango.DevVoid, ""], + [PyTango.DevVoid, ""]], + 'SetGapTapPha': + [[PyTango.DevVarDoubleArray, "gap, taper, phase"], + [PyTango.DevVoid, ""]], + 'Stop': + [[PyTango.DevVoid, ""], + [PyTango.DevVoid, ""]], + } + + + # Attribute definitions + attr_list = { + 'Enabled': + [[PyTango.DevBoolean, + PyTango.SCALAR, + PyTango.READ], + { + 'label':"enabled", + 'description':"true when operator enables remote operation", + } ], + 'Gap': + [[PyTango.DevDouble, + PyTango.SCALAR, + PyTango.READ_WRITE], + { + 'label':"gap", + 'unit':"mm", + 'standard unit':1, + 'display unit':"mm", + 'format':"%6.3f", + 'max value':190, + 'min value':10.0, + 'description':"magnetic gap of id", + } ], + 'Phase': + [[PyTango.DevDouble, + PyTango.SCALAR, + PyTango.READ_WRITE], + { + 'label':"phase", + 'unit':"mm", + 'standard unit':1, + 'display unit':"mm", + 'format':"%6.3f", + 'description':"carriage magnetic phase", + } ], + 'Taper': + [[PyTango.DevDouble, + PyTango.SCALAR, + PyTango.READ_WRITE], + { + 'label':"taper", + 'unit':"mm", + 'standard unit':1, + 'display unit':"mm", + 'format':"%6.3f", + 'max value':10, + 'min value':-10, + 'description':"magnetic tapering of id", + } ], + 'GapSetPoint': + [[PyTango.DevDouble, + PyTango.SCALAR, + PyTango.READ], + { + 'label':"gap set point", + 'unit':"mm", + 'standard unit':1, + 'display unit':"mm", + 'format':"%6.3f", + 'max value':190, + 'min value':10.0, + 'description':"set point of magnetic gap of id", + } ], + 'PhaseSetPoint': + [[PyTango.DevDouble, + PyTango.SCALAR, + PyTango.READ], + { + 'label':"phase set point", + 'unit':"mm", + 'standard unit':1, + 'display unit':"mm", + 'format':"%6.3f", + 'description':"set point of carriage magnetic phase", + } ], + 'TaperSetPoint': + [[PyTango.DevDouble, + PyTango.SCALAR, + PyTango.READ], + { + 'label':"taper set point", + 'unit':"mm", + 'standard unit':1, + 'display unit':"mm", + 'format':"%6.3f", + 'max value':150, + 'min value':19, + 'description':"set point of magnetic tapering of id", + } ], + 'StatRF': + [[PyTango.DevBoolean, + PyTango.SPECTRUM, + PyTango.READ, 2], + { + 'label':"enabled,ready", + } ], + } + + +#------------------------------------------------------------------ +# HelicalIDClass Constructor +#------------------------------------------------------------------ + def __init__(self, name): + PyTango.DeviceClass.__init__(self, name) + self.set_type(name); + print "In HelicalIDClass constructor" + +#================================================================== +# +# HelicalID class main method +# +#================================================================== +if __name__ == '__main__': + try: + py = PyTango.Util(sys.argv) + py.add_TgClass(HelicalIDClass,HelicalID,'HelicalID') + + U = PyTango.Util.instance() + U.server_init() + U.server_run() + + except PyTango.DevFailed,e: + print '-------> Received a DevFailed exception:',e + except Exception,e: + print '-------> An unforeseen exception occured....',e diff --git a/fakedevices/KymaID.py b/fakedevices/KymaID.py new file mode 100755 index 0000000000000000000000000000000000000000..320f3fdfb2704a07a04bc25da78d5be06450579e --- /dev/null +++ b/fakedevices/KymaID.py @@ -0,0 +1,323 @@ +#!/usr/bin/python +# "$Name: $"; +# "$Header: /home/cvsadm/cvsroot/elettra/server/bcsbridge/fakedevices/KymaID.py,v 1.1 2010/12/24 10:48:38 claudio Exp $"; +#============================================================================= +# +# file : KymaID.py +# +# description : Python source for the KymaID and its commands. +# The class is derived from Device. It represents the +# CORBA servant object which will be accessed from the +# network. All commands which can be executed on the +# KymaID are implemented in this file. +# +# project : TANGO Device Server +# +# $Author: claudio $ +# +# $Revision: 1.1 $ +# +# $Log: KymaID.py,v $ +# Revision 1.1 2010/12/24 10:48:38 claudio +# crude superesca simulator +# +# Revision 1.1 2010/08/03 15:46:15 claudio +# for testing TCPS +# +# +# copyleft : Sincrotrone Trieste s.c.p.A. +# +#============================================================================= +# This file is generated by POGO +# (Program Obviously used to Generate tango Object) +# +# (c) - Software Engineering Group - ESRF +#============================================================================= +# + + +import PyTango +import sys + + +#================================================================== +# KymaID Class Description: +# +# simulator for helical insertion device. +# Use for testing tango - bcs bridge and supervisor +# +#================================================================== +# Device States Description: +# +# DevState.ON : +# DevState.FAULT : +# DevState.UNKNOWN : +# DevState.MOVING : +#================================================================== + + +class KymaID(PyTango.Device_4Impl): + +#--------- Add you global variables here -------------------------- + +#------------------------------------------------------------------ +# Device constructor +#------------------------------------------------------------------ + def __init__(self,cl, name): + PyTango.Device_4Impl.__init__(self,cl,name) + KymaID.init_device(self) + +#------------------------------------------------------------------ +# Device destructor +#------------------------------------------------------------------ + def delete_device(self): + print "[Device delete_device method] for device",self.get_name() + + +#------------------------------------------------------------------ +# Device initialization +#------------------------------------------------------------------ + def init_device(self): + print "In ", self.get_name(), "::init_device()" + self.set_state(PyTango.DevState.INIT) + self.get_device_properties(self.get_device_class()) + self.attr_StatRF_read = [False,False] + self.attr_Gap_read = 50.0 + self.attr_Tapering_read = 0.0 + self.gap_write=self.attr_Gap_read + self.taper_write=self.attr_Tapering_read + self.ready=True + self.set_state(PyTango.DevState.ON) + +#------------------------------------------------------------------ +# Always excuted hook method +#------------------------------------------------------------------ + def always_executed_hook(self): + print "In ", self.get_name(), "::always_excuted_hook()" + + +#================================================================== +# +# KymaID read/write attribute methods +# +#================================================================== +#------------------------------------------------------------------ +# Read Attribute Hardware +#------------------------------------------------------------------ + def read_attr_hardware(self,data): + print "In ", self.get_name(), "::read_attr_hardware()" + #do simulated movement + moving=False + if self.gap_write != self.attr_Gap_read: + delta=self.gap_write - self.attr_Gap_read + if delta > -1.0 and delta <1.0: + self.attr_Gap_read = self.gap_write + elif delta <= -1.0: + self.attr_Gap_read -= 1.0 + moving=True + elif delta >=0.0: + self.attr_Gap_read += 1.0 + moving = True + + if self.taper_write != self.attr_Tapering_read: + delta=self.taper_write - self.attr_Tapering_read + if delta > -1.0 and delta <1.0: + self.attr_Tapering_read = self.taper_write + elif delta <= -1.0: + self.attr_Tapering_read -= 1.0 + moving=True + elif delta >=0.0: + self.attr_Tapering_read += 1.0 + moving = True + + if moving: + self.set_state(PyTango.DevState.MOVING) + self.set_status('moving') + self.ready=False #not ready + else: + self.set_state(PyTango.DevState.ON) + self.ready=True # ready + self.set_status('ON and ready') + + + +#------------------------------------------------------------------ +# Read Gap attribute +#------------------------------------------------------------------ + def read_Gap(self, attr): + print "In ", self.get_name(), "::read_Gap()" + + # Add your own code here + attr.set_value(self.attr_Gap_read) + + +#------------------------------------------------------------------ +# Write Gap attribute +#------------------------------------------------------------------ + def write_Gap(self, attr): + print "In ", self.get_name(), "::write_Gap()" + data=[] + attr.get_write_value(data) + print "Attribute value = ", data + # Add your own code here + # raise excpetionif operation is not permitted + self.gap_write=data[0] + self.set_state(PyTango.DevState.MOVING) + self.ready=False # NOT ready + self.set_status('moving and not ready') + + +#---- Gap attribute State Machine ----------------- + def is_Gap_allowed(self, req_type): + if self.get_state() in [PyTango.DevState.FAULT, + PyTango.DevState.UNKNOWN]: + # End of Generated Code + # Re-Start of Generated Code + return False + return True + + +#------------------------------------------------------------------ +# Read Tapering attribute +#------------------------------------------------------------------ + def read_Tapering(self, attr): + print "In ", self.get_name(), "::read_Tapering()" + + # Add your own code here + attr.set_value(self.attr_Tapering_read) + + +#------------------------------------------------------------------ +# Write Tapering attribute +#------------------------------------------------------------------ + def write_Tapering(self, attr): + print "In ", self.get_name(), "::write_Tapering()" + data=[] + attr.get_write_value(data) + print "Attribute value = ", data + + # Add your own code here + self.taper_write=data[0] + self.set_state(PyTango.DevState.MOVING) + self.ready=False # NOT ready + self.set_status('moving and not ready') + + +#---- Tapering attribute State Machine ----------------- + def is_Tapering_allowed(self, req_type): + if self.get_state() in [PyTango.DevState.FAULT, + PyTango.DevState.UNKNOWN]: + # End of Generated Code + # Re-Start of Generated Code + return False + return True + + +#------------------------------------------------------------------ +# Read StatRF attribute +#------------------------------------------------------------------ + def read_StatRF(self, attr): + print "In ", self.get_name(), "::read_StatRF()" + + # Add your own code here + + attr_StatRF_read = [True,True] + attr.set_value(attr_StatRF_read, 2) + + + +#================================================================== +# +# KymaID command methods +# +#================================================================== + +#================================================================== +# +# KymaIDClass class definition +# +#================================================================== +class KymaIDClass(PyTango.DeviceClass): + + # Class Properties + class_property_list = { + } + + + # Device Properties + device_property_list = { + } + + + # Command definitions + cmd_list = { + } + + + # Attribute definitions + attr_list = { + 'Gap': + [[PyTango.DevDouble, + PyTango.SCALAR, + PyTango.READ_WRITE], + { + 'label':"gap", + 'unit':"mm", + 'standard unit':1, + 'display unit':"mm", + 'format':"%6.3f", + 'max value':150, + 'min value':14, + 'description':"magnetic gap of id", + 'Polling period':2000, + } ], + 'Tapering': + [[PyTango.DevDouble, + PyTango.SCALAR, + PyTango.READ_WRITE], + { + 'label':"taper", + 'unit':"mm", + 'standard unit':1, + 'display unit':"mm", + 'format':"%6.3f", + 'max value':3, + 'min value':-3, + 'description':"carriage magnetic taper", + } ], + 'StatRF': + [[PyTango.DevBoolean, + PyTango.SPECTRUM, + PyTango.READ, 2], + { + 'label':"enabled,ready", + } ], + } + + +#------------------------------------------------------------------ +# KymaIDClass Constructor +#------------------------------------------------------------------ + def __init__(self, name): + PyTango.DeviceClass.__init__(self, name) + self.set_type(name); + print "In KymaIDClass constructor" + +#================================================================== +# +# KymaID class main method +# +#================================================================== +if __name__ == '__main__': + try: + py = PyTango.Util(sys.argv) + py.add_TgClass(KymaIDClass,KymaID,'KymaID') + + U = PyTango.Util.instance() + U.server_init() + U.server_run() + + except PyTango.DevFailed,e: + print '-------> Received a DevFailed exception:',e + except Exception,e: + print '-------> An unforeseen exception occured....',e diff --git a/fakedevices/TangoClassID.txt b/fakedevices/TangoClassID.txt new file mode 100644 index 0000000000000000000000000000000000000000..328b46a8578283eb92361ed0ed87e64ac720ab51 --- /dev/null +++ b/fakedevices/TangoClassID.txt @@ -0,0 +1,11 @@ +/** + * Device Class Identification: + * + * Class Name : HelicalID + * Contact : claudio.scafuri@elettra.trieste.it + * Class Family : Simulators + * Platform : All Platforms + * Bus : Not Applicable + * Manufacturer : none + * Reference : + */ diff --git a/lib_pyElettra.py b/lib_pyElettra.py new file mode 100644 index 0000000000000000000000000000000000000000..5dc7a018c77fc6ecc8b8a9e8b5f6c50539846402 --- /dev/null +++ b/lib_pyElettra.py @@ -0,0 +1,143 @@ +# class for SET/GET client operations with TPCS protocol +# used by Elettra beamlines +# $Author:Roberto Borghes +# +# $Version:$ +# +# $Log: lib_pyElettra.py,v $ +# Revision 1.1 2008/09/23 09:12:10 claudio +# First import +# +# +import string +from socket import * +from threading import Lock +import time +import httplib + +class XCSException(Exception): + def __init__(self, value): + self.value = value + def __str__(self): + return `self.value` + +class XCS: + def __init__(self, mode=None): + if mode == None: + self.mode = 'TCP' + self.port = 20000 + elif mode == 'HTTP': + self.mode = mode + self.port = 80 + else: + raise XCSException, 'Unsupported Mode: '+mode + self.host = "" + self.sid = 0 + self.mutex = Lock() + + def open(self, host, port=None): + self.host = host + if port != None: + self.port = port + if self.mode == 'TCP': + self.mutex.acquire() + try: + self.sid = socket(AF_INET, SOCK_STREAM) + self.sid.connect((self.host,self.port)) + finally: + self.mutex.release() + elif self.mode == 'HTTP': + self.sid = 0 + else: + raise XCSException, 'Not Implemented Yet!' + + def close(self): + if self.sid != 0: + self.mutex.acquire() + try: + self.sid.close() + self.sid = 0 + finally: + self.mutex.release() + + def get(self, var): + if self.mode == 'TCP': + if string.find(var,"UES") != -1: + getvar = "GETUES "+var+"\r\n" + else: + getvar = "GET "+var+"\r\n" + self.mutex.acquire() + try: + self.sid.send(getvar) + retvar = self.sid.recv(256) + finally: + self.mutex.release() + line = string.split(retvar,"\r") + if string.find(line[0],"*** ERROR") != -1: + raise XCSException, line[0] + res = string.split(line[0],",") + if string.find(var,"UES") != -1: + return(res[0],'',res[1],time.time()) + else: + return (res[3],res[4],res[2],time.time()) + if self.mode == 'HTTP': + getvar = "/blcs/"+var+"?ACTION=GET&METHOD=TEXT" + conn = httplib.HTTPConnection(self.host,self.port) + conn.request("GET",getvar) + retvar = conn.getresponse() + line = retvar.read() + if string.find(line,"----------") != -1 or retvar.status != 200: + raise XCSException, line + res = string.split(line,",") + conn.close() + return (res[2],res[3],res[1],time.time()) + else: + raise XCSException, 'Not Implemented Yet!' + + def set(self, var, values=None): + if self.mode == 'TCP': + if string.find(var,"UES") != -1: + setvar = "UES "+var + if values != None: + for p,v in values.items(): + setvar = setvar +" "+str(v) + else: + setvar = "SET "+var + if values != None: + for p,v in values.items(): + setvar = setvar +" "+p+","+str(v) + setvar = setvar + "\n" + self.mutex.acquire() + try: + self.sid.send(setvar) + retvar = self.sid.recv(256) + + finally: + self.mutex.release() + line = string.split(retvar,"\r") + if string.find(line[0],"*** ERROR") != -1: + raise XCSException, line[0] + return line[0] + else: + raise XCSException, 'Not Implemented Yet!' + + def fetch(self,variable): + try: + a = self.get(variable) + except: + a = ('0','fetch Exception') + return a + + + def doit(self,target,par1=None,val1=None,par2=None,val2=None): + try: + if (par1 == None): + a = self.set(target) + elif (par2 == None): + a = self.set(target,{par1:val1} ) + else: + a = self.set(target,{par1:val1,par2:val2}) + except: + a = " Exception" +# print a + return a diff --git a/punti_da_comandare.cfg.txt b/punti_da_comandare.cfg.txt new file mode 100644 index 0000000000000000000000000000000000000000..3569150995c6e6f1ce4aee452ef6a6ad62aee591 --- /dev/null +++ b/punti_da_comandare.cfg.txt @@ -0,0 +1,84 @@ +Valore 0 x chiudere e 1 x aprire + +# 1.1M +'FRONTEND_SHOPPER-L_VACO_1_RMTCMD2','VALRMTCMD2' + +# 1.2 - frontend +'FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 1.0 - backend +'BACKEND_SHOPPER_VACOBECK_20_RMTCMD0' , 'RMTCMD0' + +# 2.2 +'022F_USTOPPER1F_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'022F_USHUTTER1F_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 3.2 +'032F_USTOPPER1F_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'032F_USHUTTER1F_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 4.2 +'FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 5.2 +'052F_WSTOPPER1F_VACO_1_RMTCMD4' , 'VALRMTCMD4' +'XRD_STOPPER1_VACO_11_RMTCMD0' , 'VALRMTCMD0' +'XRD_STOPPER2_VACO_10_RMTCMD3' , 'VALRMTCMD3' +'XRD_STOPPER3_VACO_10_RMTCMD2' , 'VALRMTCMD2' +'052F_WSHUTTER1F_VACO_1_RMTCMD5' , 'VALRMTCMD5' + +# 6.1 +'061F_BSTOPPERAF_VACO_2_RMTCMD2' , 'VALRMTCMD2' +'061F_BSTOPPERCF_VACO_1_RMTCMD2' , 'VALRMTCMD2' +'061A_BSTOPPER1A_VACO_10_RMTCMD2' , 'VALRMTCMD2' +'061F_BSHUTTERAF_VACO_2_RMTCMD0' , 'VALRMTCMD0' +'061F_BSHUTTERCF_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 6.2 +'062F_USTOPPER1F_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'062F_USHUTTER1F_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 7.1 +'FRONTEND_SHOPPER-R_VACO_1_RMTCMD0' , 'VALRMTCMD0' +'RIGHT_SHUTTER_VACO_30_RMTCMD4' , 'VALRMTCMD4' + +# 7.2 +'072F_USTOPPER1F_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'072F_USHUTTER1F_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 8.1 +'FRONTEND_SHOPPER-R_VACO_2_RMTCMD0' , 'VALRMTCMD0' +'FRONTEND_SHOPPER-L_VACO_1_RMTCMD0' , 'VALRMTCMD0' +'RIGHT_EXSLIT_VACO_10_RMTCMD4' , 'VALRMTCMD4' + +# 8.2 +'FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 9.1 +'CENTRAL_STOPPER_VACO_20_RMTCMD0' , 'VALRMTCMD0' + +# 9.2 +'FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 10.1 +'FRONTEND_SHOPPER-R_VACO_1_RMTCMD4' , 'VALRMTCMD4' +'FRONTEND_SHOPPER-L_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 10.2 +'FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 11.1 +'FRONTEND_SHOPPER-R_VACO_2_RMTCMD0' , 'VALRMTCMD0' +'RIGHT_STOPPER_VACO_30_RMTCMD6' , 'VALRMTCMD6' +'FRONTEND_SHOPPER-L_VACO_1_RMTCMD0' , 'VALRMTCMD0' + +# 11.2 +'FRONTEND_STOPPER_VACO_1_RMTCMD1' , 'VALRMTCMD1' +'FRONTEND_SHUTTER_VACO_1_RMTCMD0' , 'VALRMTCMD0' + + diff --git a/punti_di_lettura.cfg.txt b/punti_di_lettura.cfg.txt new file mode 100644 index 0000000000000000000000000000000000000000..697fd0e8912b858f7c9058ac664a1fa882fee45f --- /dev/null +++ b/punti_di_lettura.cfg.txt @@ -0,0 +1,92 @@ +# Syntax: +# ecs_name bcs_name +# FAM_MEM_ACT_MOD BL_SECT_COMP_INSTR_N_NAME + +# 1.1M +'FRONTEND_SHOPPER-L_VACO_1_STATUS2' + +# 1.2 - frontend +'FRONTEND_STOPPER_VACO_1_STATUS1' +'FRONTEND_SHUTTER_VACO_1_STATUS0' + +# 1.0 - backend +'BACKEND_SHOPPER_VACOBECK_20_STATUS0' + +# 2.2 +'022F_USTOPPER1F_VACO_1_STATUS1' +'022F_USHUTTER1F_VACO_1_STATUS0' + +# 3.2 +'032F_USTOPPER1F_VACO_1_STATUS1' +'032F_USHUTTER1F_VACO_1_STATUS0' + +# 4.2 +'FRONTEND_STOPPER_VACO_1_STATUS1' +'FRONTEND_SHUTTER_VACO_1_STATUS0' + +# 5.2 +'XRD_STOPPER1_VACO_11_STATUS0' +'XRD_STOPPER2_VACO_10_STATUS3' +'XRD_STOPPER3_VACO_10_STATUS2' +'052F_WSHUTTER1F_VACO_1_STATUS5' + +# 6.1 +'061F_BSTOPPERAF_VACO_2_STATUS2' +'061F_BSTOPPERCF_VACO_1_STATUS2' +'061A_BSTOPPER1A_VACO_10_STATUS2' +'061F_BSHUTTERAF_VACO_2_STATUS0' +'061F_BSHUTTERCF_VACO_1_STATUS0' + +# 6.2 +'062F_USTOPPER1F_VACO_1_STATUS1' +'062F_USHUTTER1F_VACO_1_STATUS0' + +# 7.1 +'FRONTEND_SHOPPER-R_VACO_1_STATUS0' +'RIGHT_SHUTTER_VACO_30_STATUS4' + +# 7.2 +'072F_USTOPPER1F_VACO_1_STATUS1' +'072F_USHUTTER1F_VACO_1_STATUS0' + +# 8.1 +'FRONTEND_SHOPPER-R_VACO_2_STATUS0' +'FRONTEND_SHOPPER-L_VACO_1_STATUS0' +'RIGHT_EXSLIT_VACO_10_STATUS4' + +# 8.2 +'FRONTEND_STOPPER_VACO_1_STATUS1' +'FRONTEND_SHUTTER_VACO_1_STATUS0' + + +# 9.1 +'CENTRAL_STOPPER_VACO_20_STATUS0' + +# 9.2 +'FRONTEND_STOPPER_VACO_1_STATUS1' +'FRONTEND_SHUTTER_VACO_1_STATUS0' + +# 10.1 +'FRONTEND_SHOPPER-R_VACO_1_STATUS4' +'FRONTEND_SHOPPER-L_VACO_1_STATUS0' + +# 10.2 +'FRONTEND_STOPPER_VACO_1_STATUS1' +'FRONTEND_SHUTTER_VACO_1_STATUS0' + +# 11.1 +'FRONTEND_SHOPPER-R_VACO_2_STATUS0' +'RIGHT_STOPPER_VACO_30_STATUS6' +'FRONTEND_SHOPPER-L_VACO_1_STATUS0' + +# 11.2 +'FRONTEND_STOPPER_VACO_1_STATUS1' +'FRONTEND_SHUTTER_VACO_1_STATUS0' + + +Gli host sono: +011f-bcs.blcs.elettra.trieste.it +012f-bcs.blcs.elettra.trieste.it +022f-bcs.blcs.elettra.trieste.it +032f-bcs.blcs.elettra.trieste.it +112f-bcs.blcs.elettra.trieste.it diff --git a/tabella-bemline-id.ods b/tabella-bemline-id.ods new file mode 100644 index 0000000000000000000000000000000000000000..a524ea6be33abd98e7cce73480429817a2a68703 Binary files /dev/null and b/tabella-bemline-id.ods differ diff --git a/testsissi.py b/testsissi.py new file mode 100644 index 0000000000000000000000000000000000000000..0a51adb4f25817d491b6e0c6280d62e1de4b325d --- /dev/null +++ b/testsissi.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +import telnetlib +import time +import sys +tn=telnetlib.Telnet('ecsproxy',20091) + +ans_old='' +while True: + tn.write('GET FRONTEND_MACHINE_MACHINE_1_BEAMON') + ans = tn.read_until('\n') + if ans != ans_old: + print time.ctime(), ans.rstrip(), ' <<<< variazione' + ans_old = ans + else: + pass + #print time.ctime(), ans.rstrip() + sys.stdout.flush() + time.sleep(1) +