This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
daq_control_python [2020/07/10 09:04] acqilc |
daq_control_python [2021/07/10 23:21] (current) |
||
---|---|---|---|
Line 192: | Line 192: | ||
==== Le contrôle des processus ==== | ==== Le contrôle des processus ==== | ||
+ | |||
+ | Pour controller les processus un programme (daemon) doit être lancé sur chaque machine participant à l'acquisition: | ||
+ | |||
+ | sudo /opt/dhcal/bin/ljcd status | ||
+ | | ||
+ | Si le programme n'est pas //running// il faut le lancer avec: | ||
+ | |||
+ | sudo /opt/dhcal/bin/ljcd start | ||
+ | | ||
+ | On vérifie son état avec un accès à http://nomdemachine:9999 | ||
+ | |||
+ | |||
+ | Ensuite sur la machine sur laquelle on va controller l'acquisition on utilise le script **difdaq** | ||
+ | |||
+ | usage: difdaq [-h] | ||
+ | [--jc-create | --jc-kill | --jc-destroy | --jc-start | --jc-restart | --jc-status | --jc-info | --jc-appcreate | --daq-initialise | --daq-configure | --daq-startrun | --daq-stoprun | --daq-destroy | --daq-status | --daq-difstatus | --daq-evbstatus | --daq-downloaddb | --dif-ctrlreg] | ||
+ | [--config CONFIG] [--dbstate DBSTATE] [--dbversion DBVERSION] | ||
+ | [--clock CLOCK] [--directory DIRECTORY] [--vth VTH] | ||
+ | [--gain GAIN] [--tdc TDC] [--lines LINES] [--host HOST] | ||
+ | [--name NAME] [--jobname JOBNAME] [--jobpid JOBPID] | ||
+ | [--value VALUE] [--address ADDRESS] [-v] [--comment COMMENT] | ||
+ | [--ctrlreg CTRLREG] [-M METHOD] [-A APPLICATION] [-P PARAMETER] | ||
+ | optional arguments: | ||
+ | -h, --help show this help message and exit | ||
+ | --jc-create Loads configuration in all jobcontrol process | ||
+ | --jc-kill kill all running processes | ||
+ | --jc-destroy delete all jobcontrol configuration | ||
+ | --jc-start start all controled processes described in $DAQCONFIG | ||
+ | jsonfile variable | ||
+ | --jc-restart restart one job with --jobname=name --jobpid=pid | ||
+ | --host=hostname | ||
+ | --jc-status show the status all controled processes or of the | ||
+ | process specified in --name=PROC | ||
+ | --jc-info show the status all controled processesof the host | ||
+ | specified in --host=Host | ||
+ | --jc-appcreate Create all ZDAQ app on all hosts | ||
+ | --daq-initialise Initialise DAQ, data source discovery and Builder | ||
+ | final configuration | ||
+ | --daq-configure Configure FDAQ, front end ASICs configuration | ||
+ | --daq-startrun start the run | ||
+ | --daq-stoprun stop the run | ||
+ | --daq-destroy destroy the readout, back to the CREATED state | ||
+ | --daq-status display DAQ status of all processes | ||
+ | --daq-difstatus display DAQ status of all FEBCMS TDC | ||
+ | --daq-evbstatus display event builder status | ||
+ | --daq-downloaddb download the dbstate specified in --dbstate=state | ||
+ | --version=num | ||
+ | --dif-ctrlreg Send CTRLREG to DIFMANAGER --ctrlreg=ctrl | ||
+ | --config CONFIG json config file | ||
+ | --dbstate DBSTATE set the dbstate | ||
+ | --dbversion DBVERSION | ||
+ | DB state version | ||
+ | --clock CLOCK set the number of 20 ns clock | ||
+ | --directory DIRECTORY | ||
+ | shm publisher directory | ||
+ | --vth VTH set the vth for chips | ||
+ | --gain GAIN set the gain for chips | ||
+ | --tdc TDC set the tdc instance | ||
+ | --lines LINES set the number of lines to be dump | ||
+ | --host HOST host for log | ||
+ | --name NAME application name | ||
+ | --jobname JOBNAME job name | ||
+ | --jobpid JOBPID job pid | ||
+ | --value VALUE value to pass | ||
+ | --address ADDRESS address to pass | ||
+ | -v, --verbose Raw Json output | ||
+ | --comment COMMENT Comment for start run | ||
+ | --ctrlreg CTRLREG Hexadecimal string ctrlreg | ||
+ | -M METHOD, --Method METHOD | ||
+ | Command name | ||
+ | -A APPLICATION, --Application APPLICATION | ||
+ | Application name | ||
+ | -P PARAMETER, --Parameter PARAMETER | ||
+ | parameter set | ||
+ | |||
+ | === Gestion des processus === | ||
+ | |||
+ | - On charge la configuration dans les daemon: //difdaq --jc-create// | ||
+ | - On demarre les processus : //difdaq --jc-start// | ||
+ | - On peut tuer tous les process : //difdaq --jc-kill// | ||
+ | - Et eliminer la configuration des daemon: //difdaq --jc-destroy// | ||
+ | - On visualise les process : //difdaq --jc-info// (-v si on veut voir tous les parametres) | ||
+ | - On charge les parametres de toutes les applications: //difdaq --jc-appcreate// | ||
+ | |||
+ | |||
+ | Avec //difdaq --jc-info// on a le PID de chaque processus créé, on peut accéder a ses log sur la machine correspondante dans **/tmp/fsmjobPID//#pid//.log** | ||
+ | |||
+ | ==== Controle de l'acquisition === | ||
+ | |||
+ | Je donne un exemple avec des DIFs version LAPP et une SDCC | ||
+ | |||
+ | - Initialiser les aplications://difdaq --daq-init// | ||
+ | - Verifier le statut: //difdaq --daq-status// , toutes les DIFs doivent être INITIALISED, si ce n'est pas le cas il y a un problème de clock sur le FPGA de la DIF (HDMI ou cable plat) | ||
+ | - Charger le controle d'acquistion: // difdaq --dif-ctrlreg --ctrlreg=0x815A1B00// | ||
+ | - Changer le state de base de données pour les ASICs://difdaq --daq-download --dbstate TELESCOPE_DOME --dbversion=25// | ||
+ | - Configurer les ASICs://difdaq --daq-configure//, un appel a //difdaq --daq-status// doit donner toutes les DIF CONFIGURED et SLC OK, si ce n'est pas le cas il y a soit un problème de connecteur (DIF-ASU,ASU-ASU) soit un ASIC defectueux | ||
+ | - Demarrer un run://difdaq --daq-start --comment="Mon commentaire"// ,Il faut ensuite verifier que les DIFs prennent des données et que l'Event Builder les écrit avec //difdaq --daq-status// | ||
+ | - Arreter un run ://difdaq --daq-stop// | ||
+ | - Avant de debrancher/rebrancher une DIF: //difdaq --daq-destroy// et on recommence en 1 | ||
+ | |||
+ | Pour rappel la liste des runs s'obtient avec //mgjob --runs// | ||
+ | |||
+ | Je crée souvent un fichier .daqsetup avec des alias vers ces commandes et la definition des variables dénvironnement: | ||
+ | |||
+ | source .daqsetup | ||
+ | | ||
+ | en se connectant doit suffire a les definir. |