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