Services à La Silla
Services à La Silla
Les services en 2 mots
Les services fournissent des données récoltées, pour la plupart 24h/24, concernant l'environnement de la station, c'est dire les capteurs (températures, mesures de courant ou de tension, accéléromètre, ...), les état de switchs fin course, la météo, le seeing, les résultats de la réduction, etc... L'instant de chaque mesure est enregistré pour chaque mesure sous la forme du Temps Unix (tunix, 10 digits, résolution de la seconde, origine 01/01/1970) et parfois, en plus, la date sous forme "humaine".
Ces données permettent le suivi des éléments de la station et permettent de corréler les données entre elles.
Les données des services sont écrites dans des tables RDB (ASCII file with columns tab separated) Documentation Starbase ici et accessibles dans le directory $TDATA/services/<service>/.
Certaines tables RDB sont accédées par le logiciel d'observation pour obtenir des valeurs importantes telles que les températures des CCD et azote ainsi que la météo. L'accès consiste à lire la dernière ligne du fichier RDB et la considérer valide ou non en fonction du tunix.
Chaque service travaille sur un répertoire du même nom qui contient un fichier par mois avec comme exception les services accelerometre et t120sdb qui contiennent un fichier par jour.
Les formats des fichiers est:
- Fichiers mensuels: <service>_YYYYMM.rdb
- Fichiers journaliers: <service>_YYYYMMDD.rdb (accelerometre)
- Fichiers t120sdb: t120sdb.YYYYMMDD. Le service t120sdb suit une autre logique de fabrication car il est créé au lancement du télescope par l'utilitaire t120sdb.
Certains services ont leur origine à la période de la mise en fonction de Euler (1998).
Le directory $TDATA/services/CURRENT/ contient des liens vers la plupart des tables du mois courant.
Le directory $TDATA/services/SERVICES_LOW_RESOLUTION/ contient une structure identique à $TDATA/services/ mais chaque service est échantillonné pour permettre une visualisation plus rapide lorsqu'il s'agit de tracer des données sur plusieurs années avec l'utilitaire (presque obsolète) showserv.
Base de données PostgreSQL
Depuis fin 2015, un monitoring actif de données des services a été mis en place. Le besoin était d'avoir un rapport par mail journalier (MeulReport), une visualisation temps réel des valeurs sensibles sur un écran dédié (Meul), un outil de visualisation accessible hors du site de La Silla (MeulPlot) et un extrait de descripteurs FITS donnant des infos (valeurs et statistiques) de certaines valeurs des services pour la durée d'une exposition (MeulFits, pas encore en fonction).
Ce monitoring est basé sur l'emploi d'une base de données PostgreSQL et d'utilitaires Java.
Malgré l'utilisation d'une BDD, l'emploi des tables RDB se poursuit. Connecter l'ensemble des services à la BDD et ne plus utiliser RDB était un effort trop important pour un résultat identique. Il faut aussi préciser que les services tournent pour la plupart sur le PC glsserv qui a un operating system figé et donc pas de connexion simple avec les derniers développements PostgresSQL. Ainsi la BDD est alimenté par un utilitaire Java qui lit les tables RDB et insert les données dans la BDD (MeulUp) sur la machine glsmonitor toutes les 2 minutes.
Les tables RDB sont synchronisées (rsync) sur Genève sur la machine de transfert et une base PostgreSQL est mise à jour sur la data base machine du réseau interne de l'observatoire selon le même principe que celle de Euler avec l'utilitaire MeulUp.
L'accès aux données est "site sensitive", c'est à dire qu'à la Silla on accède la BDD locale de glsmonitor et depuis l'observatoire de Genève on accède la BDD de la data base machine. Attention: l'accès à la base genevoise ne peux se faire que depuis une machine connectée sur le réseau câblé de l'observatoire. La connexion wifi est une connexion sur l'université de Genève et non sur l'observatoire. La BDD genevoise n'authorise que les connexions venant du réseau de l'observatoire.
Démarrage des services
Il ya deux groupe de services:
- Ceux lancés par cron
- Ceux lancés par le logiciel d'observation durant les nuits d'observations
Les services lancés par cron sont démarrés sur 2 machines:
- glsserv pour les services standards, ceux écrits en C ou Perl communiquant par lignes séries, USB ou modbus sur les PLC CX8090
- glslogin1 pour les services écris en Python communiquant avec ETCS (Euler Telescope Control System) sur PLC avec le protocole OPC-UA
cron sur glsserv:
0 12 * * * /opt/t4/beta/scripts/services
cron sur glslogin1:
0 12 * * * /opt/t4/beta/scripts/services_python
Ces 2 scripts de démarrage lancent les services chaque jour à midi avec des scripts de démarrage liés à chaque service. Ils se terminent le lendemain à midi.
- Les services sont démarrés par des scripts de lancement nommés service_<service>
Les scripts service_<service> fonctionnent selon un principe unique:
- Au démarrage et si besoin le fichier du mois (ou journalier) est créé, ainsi qu'un lien dans $TDATA/services/CURRENT/
- Après, Ils lancent en boucle un programme d'acquisition qui effectue la lecture des informations définies par le service.
- Il acceptent en argument un temps (donné en secondes), généralement 60, qui est le temps d'attente effectué avant que le programme d'acquisition ne rende la main.
Les services lancés par le logiciel d'observation et se terminant en fin de nuit sont:
- Le service t120sdb qui est lancé par l'utilitaire t120sdb.
- Le service temperature_telescope est géré dans Inter-T120 par la procédure $THOME/prc/t120/get_temperature.prc
- Le service focus est géré dans Inter-T120 par la procédure $THOME/prc/util/send_m2z_to_guif.prc
Un désavantage lié au système de démarrage par cron peut arriver si un service s'arrête. Dans ce cas il n'y a plus de données enregistrées jusqu'au lendemain midi.
Les services sont également démarrés au boot de glsserv ou glslogin1. Ainsi redémarrer facilement les services peut-etre fait en rebootant l'un ou l'autre machine. (voir immédiatement ci-dessous)
Le démarrage des services au boot
Il est défini dans les fichiers /etc/init.d/zzzlocal sur glslogin1 et glsserv.
C'est un shell scripts qui lance les services. Extrait pour glsserv:
#!/bin/sh # ... # Initialisations specifiques a chaque machine # mach=$(uname -n|cut -d. -f1) # # Lancement des services sur glsserv # if [ "$mach" = "glsserv" ]; then echo "Launching services" /opt/t4/beta/scripts/services fi # ...
Extrait pour glslogin1 (remarque: sur glslogin1 on attend que le repertoire soit monté):
#!/bin/sh ### BEGIN INIT INFO # Provides: services for Euler # Required-Start: # Required-Stop: # Should-Start: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Start the T4-services # Description: Start the T4-services using python and the OPC-UA module. # ### END INIT INFO while [ ! -e /opt/t4/beta/scripts/services_python ] do echo "/etc/init.d/zzzlocal wait for monting of /opt/t4" sleep 1 done /opt/t4/beta/scripts/services_python
Ces 2 scripts sont lancés par le system au boot grâce aux liens suivants qu'il faut créer sur les 2 machines:
sudo -s (glslogin1) su - (glsserv) ln -s /etc/init.d/zzzlocal /etc/rc2.d/S99zzzlocal ln -s /etc/init.d/zzzlocal /etc/rc3.d/S99zzzlocal ln -s /etc/init.d/zzzlocal /etc/rc4.d/S99zzzlocal ln -s /etc/init.d/zzzlocal /etc/rc5.d/S99zzzlocal
Mise à jour de la BDD PostgreSQL à La Silla
La BDD Euler est mise à jour toutes les 2 minutes avec l'utilitaire MeulUp par ce cron sur glsmonitor sous root:
*/2 * * * * java -Xmx512m -jar /home/weber/Meulup.jar > /gls/data/services/MAINTENANCE/crons_logs/Meulup.log 2>&1
NO LONGER IN USE: Compression des services à La Silla
#Utilisé que pour l'utilitaire showserv, donc presque obsolète, la compression des services est lancé par ce cron sur glsmonitor sous weber:
#0 * * * * /home/weber/src/perl/services_comprime.pl -last > /home/weber/LOGFILES/services_comprime.log 2>&1
Synchronisation des services sur Genève et mise à jour de la BDD PostgreSQL à Genève
Les services sont synchronisés sur Genève sous leur forme de fichiers RDB.
Le cron tourne sur la machine de transfert à Genève. L'opération synchronise les données et lance Meulup pour mettre à jour la BDD genevoise
5-59/10 * * * * rsync -azHlL --exclude=AbsoluteTracking --exclude=MAINTENANCE --exclude=CURRENT --exclude=SERVICES_LOW_RESOLUTION --exclude=DATA --exclude=accelerometre weber@argos1.ls.eso.org:/gls/data/services/ /home/trmgr/MONEULER/services/ ; java -Xmx512m -jar /home/trmgr/MONEULER/Meulup.jar > /home/trmgr/MONEULER/Meulup.log 2>&1
Archivage des services
Les services sont archivé sous la forme RDB par ces 2 cron sur glsmonitor sous root.
Archivage local à La Silla toutes les 15 minutes
8-59/15 * * * * rsync -avHk --exclude=AbsoluteTracking --exclude=MAINTENANCE --exclude=DATA /gls/data/services/ /gls/data/backup_services/ 2>&1
Cet archivage local peut s'avérer utile en cas mauvaise manipulation...
Pour info, la BDD peut etre exporter avec la commande:
pg_dump -U <username> euler > euler.sql
Verification de l'intégrité des services
Dans certaines circonstance, il se peut que des fichiers RDB soient corrompu. Généralement des lignes tronquées ou des headers manquants.
On peut s'en rendre compte si le rapport journalier n'est pas dans un état attendu.
Le test de base consiste à lancer la commande check de starbase. Ici un exemple pour tester l'ensemble des fichiers service 2018:
tcsh cd $TDATA/services foreach i ([a-z]*/*2018*.rdb) echo $i >> myLog.txt check < $i >>& myLog.txt end
(remarque: ce test est OK au 19/10/2018)
En cas de détection de problème, il faut simplement éditer les fichier corrompus selon les 2 cas suivants:
1) Procédure à effectuer dans le cas le où le fichier est celui du mois courant:
- Généralement sur glsserv, sous root
- Arrêter le service : kill -9 de ce qui est en rapport avec le service corrompu (ps -ef | grep <service>)
- Edition et correction du fichier, sauvetage
- Relancer le service en background (voir crontab -l pour plus d'info) ou reboot
Apres cela la base se mettra jour dans les minutes qui suivent.
2) Procédure à effectuer dans le cas le où le fichier est plus ancien. Il faut savoir que la base ne se reconstruira pas. Ainsi la procedure est la suivante:
- Généralement sur glsserv, sous root
- Edition et correction du ou des fichiers, sauvetage
- Arrêter le service : kill -9 de ce qui est en rapport avec le service corrompu (ps -ef | grep <service>)
- Sur glsmonitor et sur la machine de transfert: commenter la ligne du cron contenant le rsync et meulup (juste meulup sur glsmonitor).
- Se connecter sur la BDD genevoise puis sur la BDD de La Silla par pgadmin3
- Sur les 2 bases, supprimer la table du service entier ou partiellement (lignes avec tunix > xxxxxxxxxx) (voir remarque ci-dessous)
- Lancer un meulup spécifique sur cette table et depuis une date donnée (voir plus bas "reconstruction d'un service")
- Relancer le service en background (voir crontab -l pour plus d'info) ou reboot
- Sur glsmonitor et sur la machine de transfert: décommenter la ligne du cron contenant le rsync et meulup
Remarque pour la purge sous pgadmin3:
- Tuer une table: DROP <table>, exemple: DROP clim2
- Pour éliminer une partie d'une table: DELETE FROM <table> WHERE (tunix > xxxxxxxxxx), exemple: DELETE FROM clim2 WHERE (tunix > 1539690000)
Reconstruction d'un service
Un exemple: un service doit etre reconstruit car on ajoute des colonne dans le rdb
Une fois que les utilitaires sont reconstruit (meul up, meulplot, ...) on procède à la mise a jour
il y a une base sur glsmonitor (LaSilla) et sur obstr (Geneve).
La reconstruction d'un service doit se faire sur La Silla et sur Genève à l'aide de l'utilitaire Java Meulup.
Meulup reçoit 4 arguments suivant qui peuvent etre replacé par "-" pour utiliser le défaut:
- Le path du répertoire de base des services (le défaut est le path de la machine transfert si le IP commence par 129.194.6 ou celui de Euler si le IP commence par 10.10.132)
- Le nom du service à reconstruire ("ALL" pour l'ensemble des services, le défaut est "ALL")
- la date de début (format YYYMMDD, le défaut est le jour courant)
- la date de fin (format YYYMMDD, le défaut est le jour courant)
A noter que donner le jour courant signifie le mois courant pour les fichiers mensuels
Principe sur les 2 machines:
- arrêter le cron de mise à jour (sous weber sur glsmonitor) (sous trmgr sur obstr), avec une mise en commentaire de la ligne où se trouve le Meulup.jar (setenv EDITOR vi ; crontab -e)
- se connecter la bdd avec pgadmin3 (attention il faut etre sur le bon réseau)
- delete/drop la table que l'on veut mettre à jour
- choisir la date de reconstruction
- lancer meulup voir ci-dessous
- verifier que tout fonctionne
- de commenter le cron
Exemple de commande pour reconstruire la table clim2 depuis le 1er aout 2018
à La Silla:
java -Xmx512m -jar /home/weber/Meulup.jar /gls/data/services/ clim2 20180801
ou
java -Xmx512m -jar /home/weber/Meulup.jar - clim2 20180801
à Genève
java -Xmx512m -jar /home/trmgr/MONEULER/Meulup.jar /home/trmgr/MONEULER/services/ clim2 20180801
ou
java -Xmx512m -jar /home/trmgr/MONEULER/Meulup.jar - clim2 20180801
Développement Java
Il est essentiel que les sources java soient gérées par un informaticien responsable des services. Celui-ci doit avoir des compétences Java et avoir un accès sur le GitLab de l'Uni (voir avec les services informatiques de lUni), un compte sur glslogin1 (voir avec les personnes en charge de Euler) ainsi que le mot de passe pour l'accès sur la machine de transfer (voir avec Nicolas.Buschchacher@unige.ch).
Actuellement les applications Java sont développées par Luc.JM.Weber@unige.ch sous Eclipse.
La maintenance informatique des utilitaires java consiste:
- Posséder les sources à jour avec GitLab
- Modifier les fichiers de configuration notamment pour les warnings, alarmes, messages etc...
- Générer les utilitaires concernés par ces modifications (Meul, Meulreport, Meulplot)
- Archiver les précédentes version
- Déployer les utilitaires sur les machines adéquates
- Tester
- Commit sur GitLab
Dans le cas de modification plus profondes, comme l'ajout d'un service entier, il faut considérer en plus du codage Java dans MeulSk.
GitLab
On utilise le repository de l'Université de Genève pour la gestion des projets Java: https://gitlab.unige.ch/java-lucweber =>MonitoringEuler
Les projets sont: MEUL, MEULCHECK, MEULFITS, MEULPLOT, MEULREPORT, MEULSK, MEULUP
Building des applications
Les projets utilisent les librairies suivantes:
- hibernate (pour l'accès postgreSQL)
- jfreechart (pour les plot)
Configuration d'une table
Alors que les services stockent les valeurs brutes définies par les scripts et utilitaires qui les enregistrent, les utilitaires Java de type Meul (Monitoring Euler) utilisent des fichiers de configuration pour connaitre la liste des tables, de leurs sensors et de leurs descripteurs.
Il y a un fichier de configuration par table qui se trouve dans MEULSK.src.ch.unige.obs.skmeul.util.config
Ils sont tous self-documentés. Ils donnent l'ensemble des informations nécessaire à Meulup, Meulplot, Meul, MeulReport, Meulfits:
- nom des sensors
- limites de graphique
- limite de warning/alarm
- reference URL
- message de help court
- affichage sur Meul
- pris en compte dans MeulReport
- etc.
Ces fichiers sont inclus dans les jar de chaque utilitaire Java. Ainsi dans le cas d'une modification des paramètres, il faut régénérer les fichiers jar de Meulplot, Meul, Meulfits, MeulReport et signer Meulplot.jar pour un usage sur le WEB. Ensuite les déployer sur les machines qui les utilisent (voir plus bas sous Déploiement des utilitaires Java)
Malgré le fait que les fichiers de configuration sont inclus dans les applications. L'application prendra en priorité les fichiers de configurations du directory $HOME/SensorConfigs/ s'il existe.
Le developer peut également faire ce type de lien pour utiliser les fichiers de configuration avec les jar:
ln -s EclipseWorkspace/SKMEUL/src/ch/unige/obs/skmeul/util/config ~/SensorConfigs
L'utilitaire Meulplot, avec son menu debug, peut exporter les fichiers de config qu'il possède dans son jar et les relire encas de modification. L'extraction se fait dans $HOME/SensorConfigs/.
Ajout d'une table sous Java
Ajouter une table n'est pas fondamentalement compliqué, d'une manière générale, il suffit d'imiter ce qui existe pour une autre table.
Plus précisément:
- créer un fichier de config dans MEULSK.src.ch.unige.obs.skmeul.util.config.<service>.cfg
- ajouter la table dans une ligne <mapping> de MEULSK.src.ch.unige.obs.skmeul.config.hibernate.cfg.xml
- créer le fichier de definition de table dans MEULSK.src.ch.unige.obs.skmeul.entities.<service>.java et générer les getters et setters
- ajouter une ligne fullListOfServices.add("<service") dans la méthode main dans MEULUP.src.ch.unige.obs.meulup.main.Meulup.java
- ajouter un case "<service>" dans la méthode importService dans MEULUP.src.ch.unige.obs.meulup.main.Meulup.java
- creer la méthode upLoad<Service>() dans MEULUP.src.ch.unige.obs.meulup.main.Meulup.java
- ajouter une ligne selectedTables.add("<service") dans la méthode initializeSensorsTabbedPanel dans MEULPLOT.src.ch.unige.obs.meulplot.main.Uif.java
Si cette table doit avoir des colonnes visible dans Meul (voir fichier de config, keyword: DISPLAY)
- ajouter une ligne selectedTables.add("<service") dans le constructeur Uif dans MEUL.src.ch.unige.obs.meul.main.Uif.java
Si cette table doit etre gérée par MeulReport (voir fichier de config, keyword: SHOWINMEULREPORT)
- ajouter une ligne selectedTables.add("<service") dans le constructeur MeulReport dans MEULREPORT.src.ch.unige.obs.meulreport.main.MeulReport.java
Ajout d'une colonne à une table
La documentation dans cette section est un exemple, dans notre cas on rajoute la colonne Remote_Ready dans la table necam:
Necam à la particularité d'être monitoré en permanence et ce monitoring prend des décisions du type passage en mode dégradé ou arrêt du cryocooler en fonction du status lu dans le fichier de service necam. Ainsi il faut suspendre le monitoring, et également la mise a jour de la base à La Silla et à Geneve. En gros un peu de complexité:
En résumé:
- La Silla:
- Arrêt du monitoring (crontab pour glsserv:necamwatch et glslogin1:necamwatchstatus)
- Arrêt du service (crontab sur glsserv:service_necam)
- Arrêt de la mise à jour des bases à La Silla (weber@glsmonitor: crontab, Meulup.jar)
- Idem à Genève (la synchronisation est aussi suspendue, trmgr@obstr01: crontab rsync;Meulup.jar)
- Edition de tous les fichiers rdb $TDATA/service/necam du service et leur rajouter la nouvelle colonne (column -a) avec une valeur de défaut (compute) pour les mesures passées
- Test RDB (check < <file>)
- Test du service (sans mise à jour sur le rdb), voir si la nouvelle colonne sort à l'écran
- Redémarrage du service (crontab), attente de la bonne sortie des lignes (tail -f)
- Test du monitoring (necamwatch en mode avec (edition) $dryrun=1)
- Redémarrage du monitoring (crontab pour glsserv:necamwatch et (attente que les services redémarre (tail -f)) glslogin1:necamwatchstatus)
- Java:
- Update du fichier de config necam, update de Meulup, Meulplot
- Transfert (depuis le mac) Meulup, Meulplot sur weber@glslogin1.ls.eso.org (on peut faire un save avant)
- Suppression de la table necam (La Silla) dans pgAdmin
- Reconstruction du service necam sur weber@glslmonitor
- Update de Meulplot et verification avec x2go sur glslogin1
- Genève::
- Transfert (depuis le mac) Meulup, Meulplot sur trmgr@obstr01 (via login01.astro.unige.ch)
- Suppression de la table necam (Geneve) dans pgAdmin
- Synchronisation manuelle selon crontab reference: crontab de trmgr@obstr01
- Reconstruction du service necam sur trmgr@obstr01
- Update de meulplot sur gvanuc01 et verification
- Redémarrage (trmgr@obstr01:crontab) de la synchronisation+meulplot sur Geneve
rem: la reconstruction se fait avec: java -Xmx1024 -jar Meulup.jar - necam 20210101
MeulFits
Meulfits calcule des statistique sur les sensors qui ont le descripteur FITS mis à "YES" et fourni un extrait de fichier fits à insérer dans l'image fits de l'exposition courante en fin de pose.
Pour l'instant cet utilitaire n'est pas utilisé !
Le paramètre est écrit dans le fichier FITS sous cette forme:
HIERARCH ESO <BDD> <TABLE> <SENSOR>
ex:
HIERACH ESO EULER LAKESHORE TCCD
Déploiement des utilitaires Java
Chaque projet Meul Java possède un fichier RSYNC.txt. Toutes les instructions pour le déploiement des application y est décrit.
L'utilitaire meulplot doit etre signé pour permettre d'etre utilisé par download. Le technique pour signer un jar est décrite dans le projet MEULPLOT dans le fichier SignerLeJar.txt
Création de PostgreSQL et de la Base de Données Euler
Suivre ce document
Liste de services
La colonne Path indique indifféremment ~weber/src/<path> ou $THOME/src/weber/<path>
Table | Sensor | Host | Language | Path | Source | Option | Hardware | Observations |
---|---|---|---|---|---|---|---|---|
accelerometre | accelerometre |
glsserv /dev/ttyr05 |
C |
services/ adam/ |
service_accelerometre.csh adam.c |
-G |
Serie, Adam | |
c2_jumo | tair, trepri, consigne, gamme, pourcent |
glsserv /dev/ttyr02 |
C |
services/ c2_jumo/ |
service_c2_jumo.csh c2_jumo.c |
Serie, Jumo | Sensible meteo | |
c2_lakeshore NOT IN USE Remplacé par necam |
tccd, tazote, consigne, pourcent |
glsserv /dev/ttrr00 |
C |
services/ c2_lakeshore/ |
service_c2_lakeshore.csh c2_lakeshore.c |
Serie, Lakeshore | Sensible aux pleins LN2 et pompages | |
c2_temp |
interne, extgui, extimg, rfi1, ampli, alimimg, alimpc, alimgui |
glsserv /dev/ttyr01 |
C |
services/ c2_temp/ |
service_c2_temp.csh c2_temp.c |
Serie, OBS |
Sensible meteo et Observation |
|
clim2 |
tpulsed, trecovery, tsetpoint, vsetpoint, error, integ, up_a, up_b |
glsserv |
Perl, C, libmodbus |
services/ clim2/ clim2/ |
service_clim2.csh clim2.pl clim2.c |
PLC | Sensible aux pleins LN2 | |
climatisation | sonde1, sonde2, sonde3, chazote |
glsserv /dev/ttyr05 |
C |
services/ adam/ |
service_climatisation.csh adam.c |
-L | Serie, Adam | |
coralie |
reseau, objectif, enceinte, cryostat, localc |
glsserv /dev/ttyr05 |
C |
services/ adam/ |
service_coralie.csh adam.c |
-C | Serie, Adam | Sensible aux pompages et pleins |
coupo |
tmot_pv, tambiant_z, tmot_cimier, tambiant_e, tambiant_o, tambiant_cb, tambiant_rt, tambiant_b |
glsserv
|
Perl |
services/ coupo/ |
service_coupo.csh coupo.pl
|
Ethernet, Adam | ||
cryostat | treg, tcryo, consigne, gamme, pourcent |
glsserv /dev/ttyr06 |
C |
services/ cryostat/ |
service_cryostat.csh cryostat.c |
Serie, Lakeshore | Sensible aux pleins LN2 | |
externe | externe |
glsserv /dev/ttyr05 |
C |
services/ adam/ |
service_externe.csh adam.c |
-X | Serie, Adam | Sensible meteo |
focus | focus | glslogin1 | Procedure | $THOME/prc/util/ | send_m2z_to_guif.prc | |||
fp_pression | pression |
glsserv /dev/ttyr08 |
C |
services/ fp_pression/ |
service_fp_pression.csh fp_pression.c |
Serie, DPG-109 | Fuite permanente acceptée | |
fp_temp | tin, text, consigne, gamme, pourcent | glsserv | C |
services/ fp_temp/ |
service_fp_temp.csh fp_temp.c |
USB, Lakeshore | ||
groupefroid |
ext, cool, ineau, outeau, motor, localsw, localpo, areau, depeau, arhuile, dephuile, rephuile, bac |
glsserv | Perl |
services/ groupefroid/ |
service_groupefroid.csh groupefroid.pl |
Ethernet, Adam | Sensible meteo et Observation | |
hydrau |
f_setpoint, f_cufs, f_cufi, praw_cufs, praw_cufi, p_cufs, p_cufi, t_bearing |
glslogin1 |
Perl, Python, Opc-Ua, |
services/ services/ tcs_srv/ |
service_hydrau.csh manage_rdb_hydrau.pl GetHydrau.py |
PLC | Sensible Observation | |
jumo NOT IN USE Remplacé par clim2 |
tair, trepri, consigne, gamme, pourcent |
glsserv /dev/ttyr07 |
C |
services/ jumo/ |
service_jumo.csh jumo.c |
Serie, Jumo | Sensible aux pleins LN2 | |
lakeshore | tccd, tazote, consigne, gamme, pourcent |
glsserv /dev/ttyr04 |
C + Serie |
services/ lakeshore/ |
service_lakeshore.csh lakeshore.c |
Serie, Lakeshore | Sensible aux pleins LN2 et pompages | |
meteo |
Temp1, RelHumidity, DewPoint, RawBaromPress, 10MinRollAvgWindSpeed, 10MinRollAvgWindDir, 2MinWindGustSpeed, RainRate |
glsserv | Perl + curl |
services/ meteoColumbia/ |
service_meteo.csh meteoColumbia.pl |
Site Web | ||
motor_coupo |
tmot_master tmot_slave, tdrive, cmot_upop, cmot_upcl, cevalve_op, cevalve_cl, cmot_pump |
glslogin1 |
Perl, Python, Opc-Ua |
services/ services/ tcs_srv/ |
service_motor_coupo.csh manage_rdb_motor_coupo.pl GetMotor_coupo.py |
PLC | ||
necam |
Rad_Shield, CC_Up, CC_Down, CC_Head, CC_Ctrl, Cold_Finger, CC_Setpoint, CC_Supply_cur, CC_Supply_volt, CC_Drive_volt, CC_Drive_pwr, CCD_Setpoint, CCD1, CCD2, CCD_Gamme, CCD_Pourcent, Pression |
glsserv |
services/ necam/ |
service_necam.csh necam.py: necam_adam_ctrl.py pynecam.py pydpg109.py Nlakeshore.csh -> Nlakeshore.py |
Serie, Lakeshore, Adam | |||
necamfans |
fan1, fan2, fan3, fan4, fan5, fan6 |
glsserv |
services/ necamfans/ |
services_necamfans.csh necamfans.py |
Adam | |||
pression | pression |
glsserv /dev/ttyr05 |
C |
services/ adam/ |
service_pression.csh adam.c |
-J | Serie, Adam | Sensible meteo |
seeing | seeing | glsserv |
Perl, curl |
services/ perl/ |
service_seeing.csh get_eso_seeing.pl |
Site Web | ||
shutters |
top_open, bottom_open, flap1_open, flap3_open, flap5_open, flap7_open, flap9_open flap11_open, top_closed bottom_closed, flap1_closed, flap3_closed, flap5_closed, flap7_closed, flap9_closed, flap11_closed |
glslogin1 |
Perl, C, modbus, Python, Opc-Ua |
services/ services/ tcs_srv/ flap/ |
service_shutters.csh manage_rdb_shutters.pl GetCupola.py T_stat_flap |
PLC | ||
t120sdb | (Voir fichier service) | glslogin1 | Perl | t120sdb/ | t120sdb.c | t120sdb | Choix des colonnes dans MeulPlot | |
tele | socle, rem, rpm, fourche |
glsserv /dev/ttyr05 |
C |
services/ adam/ |
service_tele.csh adam.c |
-D | Serie, Adam | Sensible meteo et Observation |
temperature_telescope |
temt1m1, temt1m2, temt2m2, eaufroide, temttb, temtth, temthp |
glst ??? | Procedure | $THOME/prc/t120/ | get_temperature.prc | Carte I/O | Sensible meteo et Observation | |
tfibre | tfibre |
glsserv /dev/ttyr05 |
C |
services/ adam/ |
service_tfibre.csh adam.c |
-K | Serie, Adam | Sensible meteo |
ups | ... |
rem: certains sensors des tables: externe, climatisation, coralie, tele, tfibre, pression, jumo donnent des valeurs trop bases en cas de panne (-273, -274 degré, ou -5000 mb, etc). Ces valeurs sont posées à -10[d] ou 0[mb] le cas échéant.
Services résultats de réduction
Les services réduction sont issus de l'analyse des fichiers de reduction depuis lesquels sont extraits les informations qui sont stockés dans les fichiers de reduction RDB.
C'est un cron sur glsmonitor sous weber qui met à jour ces fichiers toutes les 5 minutes:
*/5 * * * * /gls/data/services/last_reduction2service.csh > /gls/data/services/last_reduction.cron.log 2>&1
Ce sont:
- blaze_a
- blaze_b
- ccf_th_a
- ccf_th_b
- drift
- loco_a
- loco_b
- wave_a
- wave_tha2_b
- wave_thfp_b
ANNEXES
Maintenance bi-hebdomadaire
Le moxa serie de c2_temp doit etre reseté tout les 15 jours, bug avec un integer overflow.
Mode d'emploi: se logger sur 10.10.132.17, aller sur Save/Restart, cliquer sur Submit
Depuis le 3/7/2018 les codes de Charles ont ete deplace sous $THOME/src/weber
LOG pour c2_temp
Ce paragraphe montre ce que l'on attend lors de l'interrogation du service c2_temp
Attention tuer (sous root sur glsserv) ces 2 process avant les tests:
root 9580 1 0 May27 ? 00:00:01 /bin/csh -f $THOME/scripts/c2_temp 60 root 17274 9580 0 11:01 ? 00:00:00 $THOME/bin/Linux_2.6/c2_temp -T 60
print_help() { printf("Lecture du reseau service RFI\n"); printf(" \n"); printf("Option -A Lecture des alarmes\n"); printf(" -E Ecriture d'une entete\n"); printf(" -C nom du fichier de configuration\n"); printf(" -F nom du fichier d'ecriture sauvetage temperature\n"); printf(" -H ou -h Sortie HELP\n"); printf(" -M Pas de sortie a l'ecran l'ecran\n"); printf(" -P Numero du port serie (1..4) \n"); printf(" -T temps d'attente en fin de mesure en seconde\n"); printf(" -I Identification\n"); printf(" -U Mesure unique pas de temps d'attente\n"); printf(" -V ecrit sur stderr les messages d'erreur\n"); printf("Sans option: -P = 2 ==> /dev/ttyr01 \n"); printf("Sans option: -T = 60 sec\n"); fflush(stdout); } glspc14:c2_temp 426> $THOME/bin/Linux_2.6/c2_temp -U -V -A Error 5: owsesu.c line 19: DS2480B Adapter Not Detected Error 7: ds2480ut.c line 78: DS2480B: Bad Response Exit 1 glspc14:c2_temp 427> $THOME/bin/Linux_2.6/c2_temp -U -V Lecture sonde 0 Lecture sonde 1 Lecture sonde 2 Lecture sonde 3 Lecture sonde 4 Lecture sonde 5 Lecture sonde 6 Lecture sonde 7 Lecture sonde 8 Lecture sonde 9 1432822048 14.812 14.062 14.125 13.688 13.750 30.625 15.125 15.000 15.438 15.438 May 28 11:07:28 glspc14:c2_temp 428> $THOME/bin/Linux_2.6/c2_temp -U -V -A Device 3 family_code 40 15.125 0.000t 75.000 15.000 0.000t 75.000 13.688 0.000t 75.000 14.875 0.000t 75.000 14.188 0.000t 75.000 15.438 0.000t 75.000 14.062 0.000t 75.000 13.750 0.000t 75.000 15.438 0.000t 75.000 30.750 1.000t 75.000 glspc14:c2_temp 429> $THOME/bin/Linux_2.6/c2_temp -U Error 5: owsesu.c line 19: DS2480B Adapter Not Detected Error 7: ds2480ut.c line 78: DS2480B: Bad Response Exit 1 glspc14:c2_temp 430> $THOME/bin/Linux_2.6/c2_temp -U 1432822139 14.875 13.938 14.250 13.688 13.812 30.438 15.125 15.062 15.500 15.438 May 28 11:08:59 glspc14:c2_temp 431> $THOME/bin/Linux_2.6/c2_temp -U 1432822163 14.938 14.000 14.250 13.688 13.812 30.375 15.188 15.062 15.500 15.438 May 28 11:09:23 glspc14:c2_temp 432> $THOME/bin/Linux_2.6/c2_temp -I Device 3 family_code 40 Device(s) Found: E80000002CC67628 1B0000002CDB9B28 530000002CBDCE28 7B0000002CDDB628 160000002CC10728 010000002CD0BF28 090000002CF83028 1A0000002CE73028 FD0000002CC01B28 BD0000002CD78F28 glspc14:c2_temp 433> $THOME/bin/Linux_2.6/c2_temp -I Device 3 family_code 40 Device(s) Found: E80000002CC67628 1B0000002CDB9B28 530000002CBDCE28 7B0000002CDDB628 160000002CC10728 010000002CD0BF28 090000002CF83028 1A0000002CE73028 FD0000002CC01B28 BD0000002CD78F28 glspc14:c2_temp 434> $THOME/bin/Linux_2.6/c2_temp -U 1432822208 14.875 14.062 14.250 13.688 13.812 30.562 15.250 15.062 15.500 15.500 May 28 11:10:08 glspc14:c2_temp 435>
Remarque: quand l'erreur "DS2480B Adapter Not Detected" sort, le programme fait un exit, donc pas d'attente et est immédiatement relancé (bonne et involontaire feature, quoique cela pourrait tourner en rond) durant un petit test ce message est sorti 5 fois en 20 minutes.
Avec un exit pas de ligne existe, donc une ligne avec que des zéros est une autre erreur
LW