--- a/Pous/pousGOT.xml Thu Sep 06 14:18:00 2018 +0200
+++ b/Pous/pousGOT.xml Tue Sep 11 16:14:13 2018 +0200
@@ -17,7 +17,7 @@
- <pou name="Backlight_dimmer" pouType="functionBlock">
+ <pou name="Set_Brightness" pouType="functionBlock"> @@ -25,70 +25,97 @@
- <variable name="TYPE_VALUE">
- <variable name="DIMM_VALUE">
+ <variable name="PERCENT"> <derived name="python_eval"/>
+ <xhtml:p><![CDATA[(* Set dimmer value *) + INT_TO_STRING(PERCENT); + <xhtml:p><![CDATA[Set backlight brightness to PERCENT on raising edge of TRIG.]]></xhtml:p> + <pou name="Fade_Brightness" pouType="functionBlock"> + <variable name="PERCENT"> + <variable name="TIME_MS"> - <variable name="RESULT">
- <variable name="INPUT_ARGS">
- <variable name="INPUT_TYPE">
- <variable name="INPUT_VALUE">
- <variable name="INPUT_VALUE_CODE">
+ <derived name="python_eval"/> - <xhtml:p><![CDATA[(* *)
-INPUT_TYPE:=INT_TO_STRING(TYPE_VALUE); INPUT_VALUE:=INT_TO_STRING(DIMM_VALUE); INPUT_ARGS:=CONCAT(INPUT_TYPE, ',', INPUT_VALUE); INPUT_VALUE_CODE:=CONCAT('PLCObject.MWProvider.SetDimmerValue(', INPUT_ARGS, ')'); eval(TRIG := TRIG, CODE := INPUT_VALUE_CODE, ACK => ACK, RESULT => RESULT);]]></xhtml:p>
+ <xhtml:p><![CDATA[(* Fade dimmer value *) + INT_TO_STRING(PERCENT); + INT_TO_STRING(TIME_MS); - <xhtml:p><![CDATA[Backlight_dimmer function block allows the manipulation of brightness. TYPE_VALUE ranges from 0 to 3, where 0 is no fading, 1 slowly changes brightness when lowering it, 2 slowly changes brightness when rising it and 3 slowly changes it both ways. DIMM_VALUE ranges from 0 to 26 and changes the brightness value.]]></xhtml:p>
+ <xhtml:p><![CDATA[Start fading backlight brightness on raising edge of TRIG, from current value to PERCENT, in TIME_MS miliseconds.]]></xhtml:p> <pou name="Buzzer" pouType="functionBlock">
@@ -111,24 +138,19 @@
- <variable name="RESULT">
- <variable name="INPUT_VALUE_OLD">
- <variable name="INPUT_VALUE_CODE">
+ <variable name="APPLIED_VAL">
+ <variable name="ORDERED_VAL"> @@ -136,15 +158,48 @@
+ <variable name="rtrig"> + <derived name="R_TRIG"/> - <xhtml:p><![CDATA[TRIG :=TRUE; INPUT_VALUE_CODE:=CONCAT('PLCObject.MWProvider.SetBuzzerValue(', INT_TO_STRING(BOOL_TO_INT(INPUT_VALUE)), ')'); eval(TRIG := TRIG, CODE := INPUT_VALUE_CODE, ACK => ACK, RESULT => RESULT);]]></xhtml:p>
+ <xhtml:p><![CDATA[(* Turn buzzer on or off *) +(* test if not already waiting for ack *) +IF NOT(TRIG & NOT(ACK)) THEN + IF APPLIED_VAL <> INPUT_VALUE THEN + ORDERED_VAL := INPUT_VALUE; + INT_TO_STRING(BOOL_TO_INT(INPUT_VALUE)), +rtrig(CLK := ACK, Q => RACK); + APPLIED_VAL := ORDERED_VAL; - <xhtml:p><![CDATA[Buzzer function block provides a buzz sound]]></xhtml:p>
+ <xhtml:p><![CDATA[Turns buzzer on or off, according to input value]]></xhtml:p> --- a/Pous/pousRTC.xml Thu Sep 06 14:18:00 2018 +0200
+++ b/Pous/pousRTC.xml Tue Sep 11 16:14:13 2018 +0200
@@ -17,14 +17,69 @@
- <pou name="getRTC" pouType="functionBlock">
+ <pou name="getRTCString" pouType="functionBlock"> + <derived name="python_eval"/> + <xhtml:p><![CDATA[(* Get time from RTC *) +eval(TRIG:=TRIG, CODE:='GetRTC()', ACK => ACK, RESULT => DT_STR);]]></xhtml:p> + <xhtml:p><![CDATA[Sample time from RTC on raising edge of TRIG. Outputs a formated string in DT_STR and sets ACK to TRUE when output is ready. + YYYY-mm-dd HH:MM:SS w v + 2018-07-28 11:24:07 6 1]]></xhtml:p> + <pou name="getRTC" pouType="functionBlock"> @@ -72,17 +127,17 @@
<derived name="python_eval"/>
+ <variable name="rtrig"> + <derived name="R_TRIG"/> + <variable name="COMPUTE"> - <variable name="INPUT_VALUE_CODE">
+ <variable name="DT_STR"> @@ -93,21 +148,27 @@
<xhtml:p><![CDATA[(* Get time from RTC *)
eval(TRIG:=TRIG, CODE:='GetRTC()', ACK => ACK, RESULT => DT_STR);
- VALID:=STRING_TO_BOOL(IN:=MID(IN:=DT_STR,L:=1,P:=23));
- YEAR:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=4,P:=1));
- MONTH:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=6));
- DAY:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=9));
- WDAY:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=1,P:=21));
- HOUR:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=12));
- MINUTE:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=15));
- SECOND:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=18));
+rtrig(CLK := ACK, Q => COMPUTE); +IF COMPUTE OR (TRIG & ACK ) THEN + VALID:=STRING_TO_BOOL(IN:=MID(IN:=DT_STR,L:=1,P:=23)); + YEAR:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=4,P:=1)); + MONTH:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=6)); + DAY:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=9)); + WDAY:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=1,P:=21)); + HOUR:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=12)); + MINUTE:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=15)); + SECOND:=STRING_TO_UINT(IN:=MID(IN:=DT_STR,L:=2,P:=18)); - <xhtml:p><![CDATA[Get time from RTC on raising edge of TRIG]]></xhtml:p>
+ <xhtml:p><![CDATA[Sample time from RTC on raising edge of TRIG. Outputs time as separate values and sets ACK to TRUE when output is ready. VALID is FALSE if hardware clock had a power failure and time is incorrect, TRUE otherwise.]]></xhtml:p> <pou name="setRTC" pouType="functionBlock">
@@ -150,9 +211,14 @@
- <variable name="RESULT">
+ <variable name="VALID"> @@ -162,7 +228,12 @@
<derived name="python_eval"/>
+ <variable name="rtrig"> + <derived name="R_TRIG"/> + <variable name="COMPUTE"> @@ -177,7 +248,7 @@
+ <variable name="RESULT"> @@ -187,17 +258,22 @@
<xhtml:p><![CDATA[(* Set RTC time *)
+rtrig(CLK := TRIG, Q => COMPUTE); + INPUT_VALUE_CODE:=CONCAT( UINT_TO_STRING(YEAR), ',',
UINT_TO_STRING(MONTH), ',',
UINT_TO_STRING(DAY), ',',
UINT_TO_STRING(HOUR), ',',
UINT_TO_STRING(MINUTE), ',',
- UINT_TO_STRING(SECOND));
- INPUT_VALUE_CODE:=CONCAT('SetRTC(', INPUT_ARGS, ')');
+ UINT_TO_STRING(SECOND), ')'); -eval(TRIG := TRIG, CODE := INPUT_VALUE_CODE, ACK => ACK, RESULT => RESULT);]]></xhtml:p>
+eval(TRIG := TRIG, CODE := INPUT_VALUE_CODE, ACK => ACK, RESULT => RESULT); + VALID := RESULT = 'True';