--- a/lib/ieclib.txt Wed Mar 16 10:31:50 2011 +0100
+++ b/lib/ieclib.txt Sat Mar 26 18:53:51 2011 +0100
@@ -36,3 +36,4 @@
{#include "integral_st.txt" }
{#include "pid_st.txt" }
{#include "ramp_st.txt" }
+{#include "sema.txt" }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/sema.txt Sat Mar 26 18:53:51 2011 +0100
@@ -0,0 +1,25 @@
+(*
+ * (c) 2011 Edouard Tisserant
+ *
+ * Fake semaphore support, for non preemptive implementation.
+ *
+ *)
+
+
+FUNCTION_BLOCK SEMA
+ VAR_INPUT
+ CLAIM : BOOL;
+ RELEASE : BOOL;
+ END_VAR
+ VAR_OUTPUT
+ BUSY : BOOL;
+ END_VAR
+ VAR
+ Q_INTERNAL : BOOL;
+ END_VAR
+
+ Q_INTERNAL := CLAIM OR ( Q_INTERNAL AND (NOT RELEASE));
+ BUSY := Q_INTERNAL;
+
+END_FUNCTION_BLOCK
+