From eb80b0ed955c1cdaa311480e25e307e228538c1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Denis?= <jfdenis@cea.fr> Date: Thu, 10 Nov 2016 10:46:18 +0100 Subject: [PATCH] Add SNL procedure in order to simulate a curent --- src/EMU_RAMP-CURRENT.st | 73 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/EMU_RAMP-CURRENT.st diff --git a/src/EMU_RAMP-CURRENT.st b/src/EMU_RAMP-CURRENT.st new file mode 100644 index 0000000..02664ec --- /dev/null +++ b/src/EMU_RAMP-CURRENT.st @@ -0,0 +1,73 @@ +/* +# C.E.A. IRFU/SIS/LDISC +# +*/ + +program RampCurrent + +%%#include <stdio.h> +%%#include <string.h> +%%#include <stdlib.h> + +/**** PLATES PS ******/ +float PS2_Cons; +assign PS2_Cons to "{PREFIX_PS}:{CONS_PS2}"; +monitor PS2_Cons; +evflag PS2_Cons_flag; +sync PS2_Cons PS2_Cons_flag; + +/**** FC CURRENT ******/ +float FCCurr_Cons; +assign FCCurr_Cons to "SIMU:CURRENT-SP"; +monitor FCCurr_Cons; + +short start; +assign start to "SCAN:MTR.EXSC"; +monitor start; + +short simulation; +assign simulation to "SCAN:PROC-SIMU"; +monitor simulation; + +/**** variables *****/ +float limitCurr=0.6; + +ss ss1 +{ + state init { + when (delay(1.0) && (pvConnectCount() == pvChannelCount())) + { + start=0; + simulation=0; + } state start + } + + state start + { + when ((start==1) && (simulation==1)) + { + FCCurr_Cons=0; + pvPut(FCCurr_Cons); + }state ramp + } + + state ramp + { + when(efTestAndClear(PS2_Cons_flag)) + { + if((PS2_Cons<limitCurr) && (PS2_Cons>-limitCurr)){FCCurr_Cons= 3;} + else{ + %%FCCurr_Cons= 0; + } + pvPut(FCCurr_Cons); + }state ramp + + when (start==0) + { + FCCurr_Cons=0; + pvPut(FCCurr_Cons); + }state start + } + +} + -- GitLab