diff --git a/src/EMU_RAMP-CURRENT.st b/src/EMU_RAMP-CURRENT.st new file mode 100644 index 0000000000000000000000000000000000000000..02664ec71bf27700a3edca80dfb1eea2a6ebaefb --- /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 + } + +} +