Tests: Add preliminary IEC-61131 language test, to be continued. wxPython4
authorEdouard Tisserant <edouard.tisserant@gmail.com>
Mon, 27 Mar 2023 10:19:14 +0200
branchwxPython4
changeset 3749 fda6c1a37662
parent 3748 a811e1ff718a
child 3750 f62625418bff
Tests: Add preliminary IEC-61131 language test, to be continued.

Test sets BEREMIZ_TEST_CYCLES in order to speed-up TON duration test.
tests/cli_tests/iec61131_lang_test.bash
tests/projects/iec61131_lang_test/beremiz.xml
tests/projects/iec61131_lang_test/gen_conversion.py
tests/projects/iec61131_lang_test/plc.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/cli_tests/iec61131_lang_test.bash	Mon Mar 27 10:19:14 2023 +0200
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# Run IEC61131 language test through command line, and check for success in output
+
+coproc setsid $BEREMIZPYTHONPATH $BEREMIZPATH/Beremiz_cli.py -k --project-home $BEREMIZPATH/tests/projects/iec61131_lang_test build transfer run;
+
+while read -t 5 -u ${COPROC[0]} line; do 
+    echo "$line"
+    if [[ "$line" == *ALL\ TESTS\ OK* ]]; then
+        pkill INT -s $COPROC_PID 
+        exit 0
+    fi
+done
+
+exit 42
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/projects/iec61131_lang_test/beremiz.xml	Mon Mar 27 10:19:14 2023 +0200
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='utf-8'?>
+<BeremizRoot xmlns:xsd="http://www.w3.org/2001/XMLSchema" URI_location="LOCAL://">
+  <TargetType>
+    <Linux CFLAGS="-DBEREMIZ_TEST_CYCLES=1000"/>
+  </TargetType>
+</BeremizRoot>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/projects/iec61131_lang_test/gen_conversion.py	Mon Mar 27 10:19:14 2023 +0200
@@ -0,0 +1,37 @@
+
+# Naive code generator for type convesion function XX_TO_YY testing
+
+
+types = [
+    ("BOOL", "TRUE"),
+    ("SINT", "42"),
+    ("USINT", "42"),
+    ("BYTE", "42"),
+    ("STRING", "'42'"),
+    ("INT", "42"),
+    ("UINT", "42"),
+    ("WORD", "42"),
+    ("DINT", "42"),
+    ("UDINT", "42"),
+    ("DWORD", "42"),
+    ("LINT", "42"),
+    ("ULINT", "42"),
+    ("LWORD", "42"),
+    ("REAL", "42.0"),
+    ("LREAL", "42.0"),
+    #("TIME", "42"),
+    #("TOD", "42"),
+    #("DATE", "42"),
+    #("DT", "42"),
+]
+
+for tsrc, src_literal in types:
+    for tdest, dest_literal in types:
+        if tsrc == tdest: continue
+        s = f"""
+RESULT := '{tsrc}_TO_{tdest}'; 
+IF {tsrc}_TO_{tdest}({tsrc}#{src_literal}) <> {tdest}#{dest_literal} THEN RETURN; END_IF;
+"""
+        print(s)
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/projects/iec61131_lang_test/plc.xml	Mon Mar 27 10:19:14 2023 +0200
@@ -0,0 +1,2183 @@
+<?xml version='1.0' encoding='utf-8'?>
+<project xmlns:ns1="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.plcopen.org/xml/tc6_0201">
+  <fileHeader companyName="Unknown" productName="Unnamed" productVersion="1" creationDateTime="2023-03-11T14:33:27"/>
+  <contentHeader name="Unnamed" modificationDateTime="2023-03-27T09:12:21">
+    <coordinateInfo>
+      <fbd>
+        <scaling x="8" y="8"/>
+      </fbd>
+      <ld>
+        <scaling x="0" y="0"/>
+      </ld>
+      <sfc>
+        <scaling x="0" y="0"/>
+      </sfc>
+    </coordinateInfo>
+  </contentHeader>
+  <types>
+    <dataTypes/>
+    <pous>
+      <pou name="CONVERSION_TEST" pouType="functionBlock">
+        <interface>
+          <outputVars>
+            <variable name="RESULT">
+              <type>
+                <string/>
+              </type>
+            </variable>
+          </outputVars>
+        </interface>
+        <body>
+          <ST>
+            <xhtml:p><![CDATA[
+(* Code generated by gen_vonversion.py, 
+   fixed by hand for corner cases *)
+
+(* 240 conversions from literals tested *)
+
+(* Tested types
+   BOOL, SINT, USINT, BYTE, STRING, INT, UINT,
+   WORD, DINT, UDINT, DWORD, LINT, ULINT, LWORD, 
+   REAL, LREAL *)
+
+(* TODO: test TIME, TOD, DATE and DT *)
+(* TODO: similar test with values that tiggers overflow *)
+
+RESULT := 'BOOL_TO_SINT'; 
+IF BOOL_TO_SINT(BOOL#TRUE) <> SINT#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_USINT'; 
+IF BOOL_TO_USINT(BOOL#TRUE) <> USINT#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_BYTE'; 
+IF BOOL_TO_BYTE(BOOL#TRUE) <> BYTE#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_STRING'; 
+IF BOOL_TO_STRING(BOOL#TRUE) <> 'TRUE' THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_INT'; 
+IF BOOL_TO_INT(BOOL#TRUE) <> INT#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_UINT'; 
+IF BOOL_TO_UINT(BOOL#TRUE) <> UINT#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_WORD'; 
+IF BOOL_TO_WORD(BOOL#TRUE) <> WORD#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_DINT'; 
+IF BOOL_TO_DINT(BOOL#TRUE) <> DINT#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_UDINT'; 
+IF BOOL_TO_UDINT(BOOL#TRUE) <> UDINT#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_DWORD'; 
+IF BOOL_TO_DWORD(BOOL#TRUE) <> DWORD#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_LINT'; 
+IF BOOL_TO_LINT(BOOL#TRUE) <> LINT#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_ULINT'; 
+IF BOOL_TO_ULINT(BOOL#TRUE) <> ULINT#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_LWORD'; 
+IF BOOL_TO_LWORD(BOOL#TRUE) <> LWORD#1 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_REAL'; 
+IF BOOL_TO_REAL(BOOL#TRUE) <> REAL#1.0 THEN RETURN; END_IF;
+
+
+RESULT := 'BOOL_TO_LREAL'; 
+IF BOOL_TO_LREAL(BOOL#TRUE) <> LREAL#1.0 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_BOOL'; 
+IF SINT_TO_BOOL(SINT#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_USINT'; 
+IF SINT_TO_USINT(SINT#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_BYTE'; 
+IF SINT_TO_BYTE(SINT#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_STRING'; 
+IF SINT_TO_STRING(SINT#42) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_INT'; 
+IF SINT_TO_INT(SINT#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_UINT'; 
+IF SINT_TO_UINT(SINT#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_WORD'; 
+IF SINT_TO_WORD(SINT#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_DINT'; 
+IF SINT_TO_DINT(SINT#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_UDINT'; 
+IF SINT_TO_UDINT(SINT#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_DWORD'; 
+IF SINT_TO_DWORD(SINT#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_LINT'; 
+IF SINT_TO_LINT(SINT#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_ULINT'; 
+IF SINT_TO_ULINT(SINT#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_LWORD'; 
+IF SINT_TO_LWORD(SINT#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_REAL'; 
+IF SINT_TO_REAL(SINT#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'SINT_TO_LREAL'; 
+IF SINT_TO_LREAL(SINT#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_BOOL'; 
+IF USINT_TO_BOOL(USINT#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_SINT'; 
+IF USINT_TO_SINT(USINT#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_BYTE'; 
+IF USINT_TO_BYTE(USINT#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_STRING'; 
+IF USINT_TO_STRING(USINT#42) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_INT'; 
+IF USINT_TO_INT(USINT#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_UINT'; 
+IF USINT_TO_UINT(USINT#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_WORD'; 
+IF USINT_TO_WORD(USINT#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_DINT'; 
+IF USINT_TO_DINT(USINT#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_UDINT'; 
+IF USINT_TO_UDINT(USINT#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_DWORD'; 
+IF USINT_TO_DWORD(USINT#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_LINT'; 
+IF USINT_TO_LINT(USINT#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_ULINT'; 
+IF USINT_TO_ULINT(USINT#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_LWORD'; 
+IF USINT_TO_LWORD(USINT#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_REAL'; 
+IF USINT_TO_REAL(USINT#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'USINT_TO_LREAL'; 
+IF USINT_TO_LREAL(USINT#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_BOOL'; 
+IF BYTE_TO_BOOL(BYTE#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_SINT'; 
+IF BYTE_TO_SINT(BYTE#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_USINT'; 
+IF BYTE_TO_USINT(BYTE#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_STRING'; 
+IF BYTE_TO_STRING(BYTE#42) <> '16#2a' THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_INT'; 
+IF BYTE_TO_INT(BYTE#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_UINT'; 
+IF BYTE_TO_UINT(BYTE#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_WORD'; 
+IF BYTE_TO_WORD(BYTE#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_DINT'; 
+IF BYTE_TO_DINT(BYTE#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_UDINT'; 
+IF BYTE_TO_UDINT(BYTE#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_DWORD'; 
+IF BYTE_TO_DWORD(BYTE#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_LINT'; 
+IF BYTE_TO_LINT(BYTE#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_ULINT'; 
+IF BYTE_TO_ULINT(BYTE#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_LWORD'; 
+IF BYTE_TO_LWORD(BYTE#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_REAL'; 
+IF BYTE_TO_REAL(BYTE#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'BYTE_TO_LREAL'; 
+IF BYTE_TO_LREAL(BYTE#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_BOOL'; 
+IF STRING_TO_BOOL('42') <> BOOL#FALSE THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_SINT'; 
+IF STRING_TO_SINT('42') <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_USINT'; 
+IF STRING_TO_USINT('42') <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_BYTE'; 
+IF STRING_TO_BYTE('42') <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_INT'; 
+IF STRING_TO_INT('42') <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_UINT'; 
+IF STRING_TO_UINT('42') <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_WORD'; 
+IF STRING_TO_WORD('42') <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_DINT'; 
+IF STRING_TO_DINT('42') <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_UDINT'; 
+IF STRING_TO_UDINT('42') <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_DWORD'; 
+IF STRING_TO_DWORD('42') <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_LINT'; 
+IF STRING_TO_LINT('42') <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_ULINT'; 
+IF STRING_TO_ULINT('42') <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_LWORD'; 
+IF STRING_TO_LWORD('42') <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_REAL'; 
+IF STRING_TO_REAL('42') <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'STRING_TO_LREAL'; 
+IF STRING_TO_LREAL('42') <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_BOOL'; 
+IF INT_TO_BOOL(INT#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_SINT'; 
+IF INT_TO_SINT(INT#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_USINT'; 
+IF INT_TO_USINT(INT#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_BYTE'; 
+IF INT_TO_BYTE(INT#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_STRING'; 
+IF INT_TO_STRING(INT#42) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_UINT'; 
+IF INT_TO_UINT(INT#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_WORD'; 
+IF INT_TO_WORD(INT#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_DINT'; 
+IF INT_TO_DINT(INT#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_UDINT'; 
+IF INT_TO_UDINT(INT#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_DWORD'; 
+IF INT_TO_DWORD(INT#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_LINT'; 
+IF INT_TO_LINT(INT#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_ULINT'; 
+IF INT_TO_ULINT(INT#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_LWORD'; 
+IF INT_TO_LWORD(INT#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_REAL'; 
+IF INT_TO_REAL(INT#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'INT_TO_LREAL'; 
+IF INT_TO_LREAL(INT#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_BOOL'; 
+IF UINT_TO_BOOL(UINT#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_SINT'; 
+IF UINT_TO_SINT(UINT#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_USINT'; 
+IF UINT_TO_USINT(UINT#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_BYTE'; 
+IF UINT_TO_BYTE(UINT#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_STRING'; 
+IF UINT_TO_STRING(UINT#42) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_INT'; 
+IF UINT_TO_INT(UINT#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_WORD'; 
+IF UINT_TO_WORD(UINT#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_DINT'; 
+IF UINT_TO_DINT(UINT#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_UDINT'; 
+IF UINT_TO_UDINT(UINT#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_DWORD'; 
+IF UINT_TO_DWORD(UINT#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_LINT'; 
+IF UINT_TO_LINT(UINT#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_ULINT'; 
+IF UINT_TO_ULINT(UINT#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_LWORD'; 
+IF UINT_TO_LWORD(UINT#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_REAL'; 
+IF UINT_TO_REAL(UINT#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'UINT_TO_LREAL'; 
+IF UINT_TO_LREAL(UINT#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_BOOL'; 
+IF WORD_TO_BOOL(WORD#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_SINT'; 
+IF WORD_TO_SINT(WORD#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_USINT'; 
+IF WORD_TO_USINT(WORD#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_BYTE'; 
+IF WORD_TO_BYTE(WORD#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_STRING'; 
+IF WORD_TO_STRING(WORD#42) <> '16#2a' THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_INT'; 
+IF WORD_TO_INT(WORD#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_UINT'; 
+IF WORD_TO_UINT(WORD#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_DINT'; 
+IF WORD_TO_DINT(WORD#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_UDINT'; 
+IF WORD_TO_UDINT(WORD#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_DWORD'; 
+IF WORD_TO_DWORD(WORD#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_LINT'; 
+IF WORD_TO_LINT(WORD#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_ULINT'; 
+IF WORD_TO_ULINT(WORD#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_LWORD'; 
+IF WORD_TO_LWORD(WORD#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_REAL'; 
+IF WORD_TO_REAL(WORD#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'WORD_TO_LREAL'; 
+IF WORD_TO_LREAL(WORD#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_BOOL'; 
+IF DINT_TO_BOOL(DINT#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_SINT'; 
+IF DINT_TO_SINT(DINT#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_USINT'; 
+IF DINT_TO_USINT(DINT#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_BYTE'; 
+IF DINT_TO_BYTE(DINT#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_STRING'; 
+IF DINT_TO_STRING(DINT#42) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_INT'; 
+IF DINT_TO_INT(DINT#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_UINT'; 
+IF DINT_TO_UINT(DINT#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_WORD'; 
+IF DINT_TO_WORD(DINT#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_UDINT'; 
+IF DINT_TO_UDINT(DINT#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_DWORD'; 
+IF DINT_TO_DWORD(DINT#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_LINT'; 
+IF DINT_TO_LINT(DINT#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_ULINT'; 
+IF DINT_TO_ULINT(DINT#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_LWORD'; 
+IF DINT_TO_LWORD(DINT#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_REAL'; 
+IF DINT_TO_REAL(DINT#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'DINT_TO_LREAL'; 
+IF DINT_TO_LREAL(DINT#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_BOOL'; 
+IF UDINT_TO_BOOL(UDINT#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_SINT'; 
+IF UDINT_TO_SINT(UDINT#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_USINT'; 
+IF UDINT_TO_USINT(UDINT#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_BYTE'; 
+IF UDINT_TO_BYTE(UDINT#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_STRING'; 
+IF UDINT_TO_STRING(UDINT#42) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_INT'; 
+IF UDINT_TO_INT(UDINT#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_UINT'; 
+IF UDINT_TO_UINT(UDINT#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_WORD'; 
+IF UDINT_TO_WORD(UDINT#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_DINT'; 
+IF UDINT_TO_DINT(UDINT#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_DWORD'; 
+IF UDINT_TO_DWORD(UDINT#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_LINT'; 
+IF UDINT_TO_LINT(UDINT#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_ULINT'; 
+IF UDINT_TO_ULINT(UDINT#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_LWORD'; 
+IF UDINT_TO_LWORD(UDINT#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_REAL'; 
+IF UDINT_TO_REAL(UDINT#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'UDINT_TO_LREAL'; 
+IF UDINT_TO_LREAL(UDINT#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_BOOL'; 
+IF DWORD_TO_BOOL(DWORD#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_SINT'; 
+IF DWORD_TO_SINT(DWORD#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_USINT'; 
+IF DWORD_TO_USINT(DWORD#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_BYTE'; 
+IF DWORD_TO_BYTE(DWORD#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_STRING'; 
+IF DWORD_TO_STRING(DWORD#42) <> '16#2a' THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_INT'; 
+IF DWORD_TO_INT(DWORD#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_UINT'; 
+IF DWORD_TO_UINT(DWORD#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_WORD'; 
+IF DWORD_TO_WORD(DWORD#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_DINT'; 
+IF DWORD_TO_DINT(DWORD#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_UDINT'; 
+IF DWORD_TO_UDINT(DWORD#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_LINT'; 
+IF DWORD_TO_LINT(DWORD#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_ULINT'; 
+IF DWORD_TO_ULINT(DWORD#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_LWORD'; 
+IF DWORD_TO_LWORD(DWORD#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_REAL'; 
+IF DWORD_TO_REAL(DWORD#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'DWORD_TO_LREAL'; 
+IF DWORD_TO_LREAL(DWORD#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_BOOL'; 
+IF LINT_TO_BOOL(LINT#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_SINT'; 
+IF LINT_TO_SINT(LINT#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_USINT'; 
+IF LINT_TO_USINT(LINT#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_BYTE'; 
+IF LINT_TO_BYTE(LINT#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_STRING'; 
+IF LINT_TO_STRING(LINT#42) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_INT'; 
+IF LINT_TO_INT(LINT#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_UINT'; 
+IF LINT_TO_UINT(LINT#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_WORD'; 
+IF LINT_TO_WORD(LINT#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_DINT'; 
+IF LINT_TO_DINT(LINT#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_UDINT'; 
+IF LINT_TO_UDINT(LINT#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_DWORD'; 
+IF LINT_TO_DWORD(LINT#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_ULINT'; 
+IF LINT_TO_ULINT(LINT#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_LWORD'; 
+IF LINT_TO_LWORD(LINT#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_REAL'; 
+IF LINT_TO_REAL(LINT#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'LINT_TO_LREAL'; 
+IF LINT_TO_LREAL(LINT#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_BOOL'; 
+IF ULINT_TO_BOOL(ULINT#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_SINT'; 
+IF ULINT_TO_SINT(ULINT#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_USINT'; 
+IF ULINT_TO_USINT(ULINT#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_BYTE'; 
+IF ULINT_TO_BYTE(ULINT#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_STRING'; 
+IF ULINT_TO_STRING(ULINT#42) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_INT'; 
+IF ULINT_TO_INT(ULINT#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_UINT'; 
+IF ULINT_TO_UINT(ULINT#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_WORD'; 
+IF ULINT_TO_WORD(ULINT#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_DINT'; 
+IF ULINT_TO_DINT(ULINT#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_UDINT'; 
+IF ULINT_TO_UDINT(ULINT#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_DWORD'; 
+IF ULINT_TO_DWORD(ULINT#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_LINT'; 
+IF ULINT_TO_LINT(ULINT#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_LWORD'; 
+IF ULINT_TO_LWORD(ULINT#42) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_REAL'; 
+IF ULINT_TO_REAL(ULINT#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'ULINT_TO_LREAL'; 
+IF ULINT_TO_LREAL(ULINT#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_BOOL'; 
+IF LWORD_TO_BOOL(LWORD#42) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_SINT'; 
+IF LWORD_TO_SINT(LWORD#42) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_USINT'; 
+IF LWORD_TO_USINT(LWORD#42) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_BYTE'; 
+IF LWORD_TO_BYTE(LWORD#42) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_STRING'; 
+IF LWORD_TO_STRING(LWORD#42) <> '16#2a' THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_INT'; 
+IF LWORD_TO_INT(LWORD#42) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_UINT'; 
+IF LWORD_TO_UINT(LWORD#42) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_WORD'; 
+IF LWORD_TO_WORD(LWORD#42) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_DINT'; 
+IF LWORD_TO_DINT(LWORD#42) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_UDINT'; 
+IF LWORD_TO_UDINT(LWORD#42) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_DWORD'; 
+IF LWORD_TO_DWORD(LWORD#42) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_LINT'; 
+IF LWORD_TO_LINT(LWORD#42) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_ULINT'; 
+IF LWORD_TO_ULINT(LWORD#42) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_REAL'; 
+IF LWORD_TO_REAL(LWORD#42) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'LWORD_TO_LREAL'; 
+IF LWORD_TO_LREAL(LWORD#42) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_BOOL'; 
+IF REAL_TO_BOOL(REAL#42.0) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_SINT'; 
+IF REAL_TO_SINT(REAL#42.0) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_USINT'; 
+IF REAL_TO_USINT(REAL#42.0) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_BYTE'; 
+IF REAL_TO_BYTE(REAL#42.0) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_STRING'; 
+IF REAL_TO_STRING(REAL#42.0) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_INT'; 
+IF REAL_TO_INT(REAL#42.0) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_UINT'; 
+IF REAL_TO_UINT(REAL#42.0) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_WORD'; 
+IF REAL_TO_WORD(REAL#42.0) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_DINT'; 
+IF REAL_TO_DINT(REAL#42.0) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_UDINT'; 
+IF REAL_TO_UDINT(REAL#42.0) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_DWORD'; 
+IF REAL_TO_DWORD(REAL#42.0) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_LINT'; 
+IF REAL_TO_LINT(REAL#42.0) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_ULINT'; 
+IF REAL_TO_ULINT(REAL#42.0) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_LWORD'; 
+IF REAL_TO_LWORD(REAL#42.0) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'REAL_TO_LREAL'; 
+IF REAL_TO_LREAL(REAL#42.0) <> LREAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_BOOL'; 
+IF LREAL_TO_BOOL(LREAL#42.0) <> BOOL#TRUE THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_SINT'; 
+IF LREAL_TO_SINT(LREAL#42.0) <> SINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_USINT'; 
+IF LREAL_TO_USINT(LREAL#42.0) <> USINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_BYTE'; 
+IF LREAL_TO_BYTE(LREAL#42.0) <> BYTE#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_STRING'; 
+IF LREAL_TO_STRING(LREAL#42.0) <> '42' THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_INT'; 
+IF LREAL_TO_INT(LREAL#42.0) <> INT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_UINT'; 
+IF LREAL_TO_UINT(LREAL#42.0) <> UINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_WORD'; 
+IF LREAL_TO_WORD(LREAL#42.0) <> WORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_DINT'; 
+IF LREAL_TO_DINT(LREAL#42.0) <> DINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_UDINT'; 
+IF LREAL_TO_UDINT(LREAL#42.0) <> UDINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_DWORD'; 
+IF LREAL_TO_DWORD(LREAL#42.0) <> DWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_LINT'; 
+IF LREAL_TO_LINT(LREAL#42.0) <> LINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_ULINT'; 
+IF LREAL_TO_ULINT(LREAL#42.0) <> ULINT#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_LWORD'; 
+IF LREAL_TO_LWORD(LREAL#42.0) <> LWORD#42 THEN RETURN; END_IF;
+
+
+RESULT := 'LREAL_TO_REAL'; 
+IF LREAL_TO_REAL(LREAL#42.0) <> REAL#42.0 THEN RETURN; END_IF;
+
+
+RESULT := 'OK'; 
+
+]]></xhtml:p>
+          </ST>
+        </body>
+      </pou>
+      <pou name="main_test" pouType="program">
+        <interface>
+          <localVars>
+            <variable name="RUN">
+              <type>
+                <BOOL/>
+              </type>
+              <initialValue>
+                <simpleValue value="TRUE"/>
+              </initialValue>
+            </variable>
+            <variable name="RESULT">
+              <type>
+                <string/>
+              </type>
+            </variable>
+            <variable name="CONVERSION_TEST0">
+              <type>
+                <derived name="CONVERSION_TEST"/>
+              </type>
+            </variable>
+            <variable name="R_TRIG0">
+              <type>
+                <derived name="R_TRIG"/>
+              </type>
+            </variable>
+            <variable name="LOGGER0">
+              <type>
+                <derived name="LOGGER"/>
+              </type>
+            </variable>
+            <variable name="TEMPO_TEST0">
+              <type>
+                <derived name="TEMPO_TEST"/>
+              </type>
+            </variable>
+            <variable name="LOGGER1">
+              <type>
+                <derived name="LOGGER"/>
+              </type>
+            </variable>
+            <variable name="SR0">
+              <type>
+                <derived name="SR"/>
+              </type>
+            </variable>
+            <variable name="SR1">
+              <type>
+                <derived name="SR"/>
+              </type>
+            </variable>
+            <variable name="LOGGER2">
+              <type>
+                <derived name="LOGGER"/>
+              </type>
+            </variable>
+          </localVars>
+        </interface>
+        <body>
+          <FBD>
+            <block localId="4" typeName="CONVERSION_TEST" instanceName="CONVERSION_TEST0" executionOrderId="0" height="72" width="136">
+              <position x="320" y="280"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="5" formalParameter="Q">
+                      <position x="320" y="312"/>
+                      <position x="264" y="312"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="136" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="RESULT">
+                  <connectionPointOut>
+                    <relPosition x="136" y="56"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="5" typeName="R_TRIG" instanceName="R_TRIG0" executionOrderId="0" height="48" width="64">
+              <position x="200" y="280"/>
+              <inputVariables>
+                <variable formalParameter="CLK">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="6">
+                      <position x="200" y="312"/>
+                      <position x="168" y="312"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="6" executionOrderId="0" height="32" width="48" negated="false">
+              <position x="120" y="296"/>
+              <connectionPointOut>
+                <relPosition x="48" y="16"/>
+              </connectionPointOut>
+              <expression>TRUE</expression>
+            </inVariable>
+            <block localId="8" typeName="LOGGER" instanceName="LOGGER0" executionOrderId="0" height="112" width="64">
+              <position x="848" y="304"/>
+              <inputVariables>
+                <variable formalParameter="TRIG">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="4" formalParameter="ENO">
+                      <position x="848" y="336"/>
+                      <position x="760" y="336"/>
+                      <position x="760" y="312"/>
+                      <position x="456" y="312"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="MSG">
+                  <connectionPointIn>
+                    <relPosition x="0" y="64"/>
+                    <connection refLocalId="11" formalParameter="OUT">
+                      <position x="848" y="368"/>
+                      <position x="736" y="368"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="LEVEL">
+                  <connectionPointIn>
+                    <relPosition x="0" y="96"/>
+                    <connection refLocalId="10">
+                      <position x="848" y="400"/>
+                      <position x="816" y="400"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables/>
+            </block>
+            <inVariable localId="9" executionOrderId="0" height="32" width="128" negated="false">
+              <position x="512" y="352"/>
+              <connectionPointOut>
+                <relPosition x="128" y="16"/>
+              </connectionPointOut>
+              <expression>'CONVERSION: '</expression>
+            </inVariable>
+            <inVariable localId="10" executionOrderId="0" height="32" width="56" negated="false">
+              <position x="760" y="384"/>
+              <connectionPointOut>
+                <relPosition x="56" y="16"/>
+              </connectionPointOut>
+              <expression>DEBUG</expression>
+            </inVariable>
+            <block localId="11" typeName="CONCAT" executionOrderId="0" height="64" width="64">
+              <position x="672" y="336"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="9">
+                      <position x="672" y="368"/>
+                      <position x="640" y="368"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="4" formalParameter="RESULT">
+                      <position x="672" y="392"/>
+                      <position x="480" y="392"/>
+                      <position x="480" y="336"/>
+                      <position x="456" y="336"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <comment localId="12" height="40" width="248">
+              <position x="88" y="216"/>
+              <content>
+                <xhtml:p><![CDATA[Execute only on first cycle]]></xhtml:p>
+              </content>
+            </comment>
+            <comment localId="1" height="40" width="248">
+              <position x="576" y="216"/>
+              <content>
+                <xhtml:p><![CDATA[Log when just executed]]></xhtml:p>
+              </content>
+            </comment>
+            <block localId="13" typeName="TEMPO_TEST" instanceName="TEMPO_TEST0" executionOrderId="0" height="64" width="96">
+              <position x="336" y="600"/>
+              <inputVariables>
+                <variable formalParameter="RUN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="16">
+                      <position x="336" y="632"/>
+                      <position x="248" y="632"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="VALID">
+                  <connectionPointOut>
+                    <relPosition x="96" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="RESULT">
+                  <connectionPointOut>
+                    <relPosition x="96" y="56"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="2" typeName="LOGGER" instanceName="LOGGER1" executionOrderId="0" height="112" width="64">
+              <position x="824" y="624"/>
+              <inputVariables>
+                <variable formalParameter="TRIG">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="13" formalParameter="VALID">
+                      <position x="824" y="656"/>
+                      <position x="736" y="656"/>
+                      <position x="736" y="632"/>
+                      <position x="432" y="632"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="MSG">
+                  <connectionPointIn>
+                    <relPosition x="0" y="64"/>
+                    <connection refLocalId="14" formalParameter="OUT">
+                      <position x="824" y="688"/>
+                      <position x="712" y="688"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="LEVEL">
+                  <connectionPointIn>
+                    <relPosition x="0" y="96"/>
+                    <connection refLocalId="7">
+                      <position x="824" y="720"/>
+                      <position x="792" y="720"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables/>
+            </block>
+            <inVariable localId="3" executionOrderId="0" height="32" width="128" negated="false">
+              <position x="488" y="672"/>
+              <connectionPointOut>
+                <relPosition x="128" y="16"/>
+              </connectionPointOut>
+              <expression>'TEMPO: '</expression>
+            </inVariable>
+            <inVariable localId="7" executionOrderId="0" height="32" width="56" negated="false">
+              <position x="736" y="704"/>
+              <connectionPointOut>
+                <relPosition x="56" y="16"/>
+              </connectionPointOut>
+              <expression>DEBUG</expression>
+            </inVariable>
+            <block localId="14" typeName="CONCAT" executionOrderId="0" height="64" width="64">
+              <position x="648" y="656"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="3">
+                      <position x="648" y="688"/>
+                      <position x="616" y="688"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="13" formalParameter="RESULT">
+                      <position x="648" y="712"/>
+                      <position x="464" y="712"/>
+                      <position x="464" y="656"/>
+                      <position x="432" y="656"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <comment localId="15" height="40" width="248">
+              <position x="536" y="536"/>
+              <content>
+                <xhtml:p><![CDATA[Log when valid]]></xhtml:p>
+              </content>
+            </comment>
+            <inVariable localId="16" executionOrderId="0" height="32" width="48" negated="false">
+              <position x="200" y="616"/>
+              <connectionPointOut>
+                <relPosition x="48" y="16"/>
+              </connectionPointOut>
+              <expression>TRUE</expression>
+            </inVariable>
+            <block localId="17" typeName="AND" executionOrderId="0" height="64" width="64">
+              <position x="1016" y="568"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="13" formalParameter="VALID">
+                      <position x="1016" y="600"/>
+                      <position x="736" y="600"/>
+                      <position x="736" y="632"/>
+                      <position x="432" y="632"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="18" formalParameter="OUT">
+                      <position x="1016" y="624"/>
+                      <position x="990" y="624"/>
+                      <position x="990" y="752"/>
+                      <position x="976" y="752"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="18" typeName="EQ" executionOrderId="0" height="64" width="64">
+              <position x="912" y="720"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="13" formalParameter="RESULT">
+                      <position x="912" y="752"/>
+                      <position x="464" y="752"/>
+                      <position x="464" y="656"/>
+                      <position x="432" y="656"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="19">
+                      <position x="912" y="776"/>
+                      <position x="864" y="776"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="19" executionOrderId="0" height="32" width="48" negated="false">
+              <position x="816" y="760"/>
+              <connectionPointOut>
+                <relPosition x="48" y="16"/>
+              </connectionPointOut>
+              <expression>'OK'</expression>
+            </inVariable>
+            <block localId="20" typeName="SR" instanceName="SR0" executionOrderId="0" height="64" width="48">
+              <position x="1120" y="568"/>
+              <inputVariables>
+                <variable formalParameter="S1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="17" formalParameter="OUT">
+                      <position x="1120" y="600"/>
+                      <position x="1080" y="600"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="R">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q1">
+                  <connectionPointOut>
+                    <relPosition x="48" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="21" typeName="AND" executionOrderId="0" height="64" width="64">
+              <position x="1296" y="496"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="23" formalParameter="Q1">
+                      <position x="1296" y="528"/>
+                      <position x="1256" y="528"/>
+                      <position x="1256" y="272"/>
+                      <position x="1192" y="272"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="20" formalParameter="Q1">
+                      <position x="1296" y="552"/>
+                      <position x="1232" y="552"/>
+                      <position x="1232" y="600"/>
+                      <position x="1168" y="600"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="22" typeName="AND" executionOrderId="0" height="64" width="64">
+              <position x="1040" y="240"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="4" formalParameter="ENO">
+                      <position x="1040" y="272"/>
+                      <position x="760" y="272"/>
+                      <position x="760" y="312"/>
+                      <position x="456" y="312"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="24" formalParameter="OUT">
+                      <position x="1040" y="296"/>
+                      <position x="1014" y="296"/>
+                      <position x="1014" y="424"/>
+                      <position x="1000" y="424"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="23" typeName="SR" instanceName="SR1" executionOrderId="0" height="64" width="48">
+              <position x="1144" y="240"/>
+              <inputVariables>
+                <variable formalParameter="S1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="22" formalParameter="OUT">
+                      <position x="1144" y="272"/>
+                      <position x="1104" y="272"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="R">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q1">
+                  <connectionPointOut>
+                    <relPosition x="48" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="24" typeName="EQ" executionOrderId="0" height="64" width="64">
+              <position x="936" y="392"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="4" formalParameter="RESULT">
+                      <position x="936" y="424"/>
+                      <position x="480" y="424"/>
+                      <position x="480" y="336"/>
+                      <position x="456" y="336"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="25">
+                      <position x="936" y="448"/>
+                      <position x="888" y="448"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="25" executionOrderId="0" height="32" width="48" negated="false">
+              <position x="840" y="432"/>
+              <connectionPointOut>
+                <relPosition x="48" y="16"/>
+              </connectionPointOut>
+              <expression>'OK'</expression>
+            </inVariable>
+            <inVariable localId="26" executionOrderId="0" height="32" width="56" negated="false">
+              <position x="1464" y="576"/>
+              <connectionPointOut>
+                <relPosition x="56" y="16"/>
+              </connectionPointOut>
+              <expression>DEBUG</expression>
+            </inVariable>
+            <block localId="27" typeName="LOGGER" instanceName="LOGGER2" executionOrderId="0" height="112" width="64">
+              <position x="1552" y="496"/>
+              <inputVariables>
+                <variable formalParameter="TRIG">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="21" formalParameter="OUT">
+                      <position x="1552" y="528"/>
+                      <position x="1360" y="528"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="MSG">
+                  <connectionPointIn>
+                    <relPosition x="0" y="64"/>
+                    <connection refLocalId="28">
+                      <position x="1552" y="560"/>
+                      <position x="1512" y="560"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="LEVEL">
+                  <connectionPointIn>
+                    <relPosition x="0" y="96"/>
+                    <connection refLocalId="26">
+                      <position x="1552" y="592"/>
+                      <position x="1520" y="592"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables/>
+            </block>
+            <inVariable localId="28" executionOrderId="0" height="32" width="128" negated="false">
+              <position x="1384" y="544"/>
+              <connectionPointOut>
+                <relPosition x="128" y="16"/>
+              </connectionPointOut>
+              <expression>'ALL TESTS OK'</expression>
+            </inVariable>
+            <comment localId="29" height="144" width="504">
+              <position x="80" y="32"/>
+              <content>
+                <xhtml:p><![CDATA[This tests some IEC-61131 languages and standard library.
+
+BEREMIZ_TEST_CYCLES CFLAG is used here. 
+- pre-defined PLC cycles all run with no pause
+- time is emulated]]></xhtml:p>
+              </content>
+            </comment>
+          </FBD>
+        </body>
+      </pou>
+      <pou name="TEMPO_TEST" pouType="functionBlock">
+        <interface>
+          <inputVars>
+            <variable name="RUN">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+          </inputVars>
+          <outputVars>
+            <variable name="VALID">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="RESULT">
+              <type>
+                <string/>
+              </type>
+            </variable>
+          </outputVars>
+          <localVars>
+            <variable name="TON0">
+              <type>
+                <derived name="TON"/>
+              </type>
+            </variable>
+            <variable name="R_TRIG0">
+              <type>
+                <derived name="R_TRIG"/>
+              </type>
+            </variable>
+            <variable name="R_TRIG1">
+              <type>
+                <derived name="R_TRIG"/>
+              </type>
+            </variable>
+            <variable name="RTC1">
+              <type>
+                <derived name="RTC"/>
+              </type>
+            </variable>
+            <variable name="START_TIME">
+              <type>
+                <DT/>
+              </type>
+            </variable>
+            <variable name="MEASURED_DURATION">
+              <type>
+                <TIME/>
+              </type>
+            </variable>
+          </localVars>
+        </interface>
+        <body>
+          <FBD>
+            <block localId="2" typeName="TON" instanceName="TON0" executionOrderId="0" height="64" width="48">
+              <position x="296" y="440"/>
+              <inputVariables>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="9">
+                      <position x="296" y="472"/>
+                      <position x="256" y="472"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="PT">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="17">
+                      <position x="296" y="496"/>
+                      <position x="208" y="496"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q">
+                  <connectionPointOut>
+                    <relPosition x="48" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="ET">
+                  <connectionPointOut>
+                    <relPosition x="48" y="56"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="3" typeName="R_TRIG" instanceName="R_TRIG0" executionOrderId="0" height="48" width="64">
+              <position x="152" y="288"/>
+              <inputVariables>
+                <variable formalParameter="CLK">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="8">
+                      <position x="152" y="320"/>
+                      <position x="120" y="320"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="4" typeName="R_TRIG" instanceName="R_TRIG1" executionOrderId="0" height="48" width="64">
+              <position x="384" y="440"/>
+              <inputVariables>
+                <variable formalParameter="CLK">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="2" formalParameter="Q">
+                      <position x="384" y="472"/>
+                      <position x="344" y="472"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="5" typeName="RTC" instanceName="RTC1" executionOrderId="0" height="64" width="64">
+              <position x="80" y="184"/>
+              <inputVariables>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="PDT">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="CDT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="56"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <connector name="now" localId="7" height="32" width="72">
+              <position x="176" y="224"/>
+              <connectionPointIn>
+                <relPosition x="0" y="16"/>
+                <connection refLocalId="5" formalParameter="CDT">
+                  <position x="176" y="240"/>
+                  <position x="144" y="240"/>
+                </connection>
+              </connectionPointIn>
+            </connector>
+            <continuation name="now" localId="1" height="32" width="72">
+              <position x="496" y="488"/>
+              <connectionPointOut>
+                <relPosition x="72" y="16"/>
+              </connectionPointOut>
+            </continuation>
+            <inVariable localId="8" executionOrderId="0" height="32" width="40" negated="false">
+              <position x="80" y="304"/>
+              <connectionPointOut>
+                <relPosition x="40" y="16"/>
+              </connectionPointOut>
+              <expression>RUN</expression>
+            </inVariable>
+            <inVariable localId="9" executionOrderId="0" height="32" width="40" negated="false">
+              <position x="216" y="456"/>
+              <connectionPointOut>
+                <relPosition x="40" y="16"/>
+              </connectionPointOut>
+              <expression>RUN</expression>
+            </inVariable>
+            <inVariable localId="10" executionOrderId="0" height="32" width="80" negated="false">
+              <position x="344" y="184"/>
+              <connectionPointOut>
+                <relPosition x="80" y="16"/>
+              </connectionPointOut>
+              <expression>TIME#10s</expression>
+            </inVariable>
+            <continuation name="now" localId="11" height="32" width="72">
+              <position x="232" y="328"/>
+              <connectionPointOut>
+                <relPosition x="72" y="16"/>
+              </connectionPointOut>
+            </continuation>
+            <block localId="12" typeName="MOVE" executionOrderId="0" height="64" width="56">
+              <position x="360" y="288"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="3" formalParameter="Q">
+                      <position x="360" y="320"/>
+                      <position x="216" y="320"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="56"/>
+                    <connection refLocalId="11">
+                      <position x="360" y="344"/>
+                      <position x="304" y="344"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="56" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="56" y="56"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <outVariable localId="14" executionOrderId="0" height="32" width="96" negated="false">
+              <position x="464" y="328"/>
+              <connectionPointIn>
+                <relPosition x="0" y="16"/>
+                <connection refLocalId="12" formalParameter="OUT">
+                  <position x="464" y="344"/>
+                  <position x="416" y="344"/>
+                </connection>
+              </connectionPointIn>
+              <expression>START_TIME</expression>
+            </outVariable>
+            <block localId="15" typeName="SUB" executionOrderId="0" height="112" width="64">
+              <position x="616" y="440"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="4" formalParameter="Q">
+                      <position x="616" y="472"/>
+                      <position x="448" y="472"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="64"/>
+                    <connection refLocalId="1">
+                      <position x="616" y="504"/>
+                      <position x="568" y="504"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="96"/>
+                    <connection refLocalId="6">
+                      <position x="616" y="536"/>
+                      <position x="568" y="536"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="64"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="6" executionOrderId="0" height="32" width="96" negated="false">
+              <position x="472" y="520"/>
+              <connectionPointOut>
+                <relPosition x="96" y="16"/>
+              </connectionPointOut>
+              <expression>START_TIME</expression>
+            </inVariable>
+            <comment localId="21" height="120" width="552">
+              <position x="96" y="32"/>
+              <content>
+                <xhtml:p><![CDATA[Test that TON and TOFF work as expected]]></xhtml:p>
+              </content>
+            </comment>
+            <outVariable localId="22" executionOrderId="0" height="32" width="56" negated="false">
+              <position x="1384" y="456"/>
+              <connectionPointIn>
+                <relPosition x="0" y="16"/>
+                <connection refLocalId="26" formalParameter="ENO">
+                  <position x="1384" y="472"/>
+                  <position x="1328" y="472"/>
+                </connection>
+              </connectionPointIn>
+              <expression>VALID</expression>
+            </outVariable>
+            <block localId="13" typeName="SUB" executionOrderId="0" height="112" width="64">
+              <position x="856" y="440"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="15" formalParameter="ENO">
+                      <position x="856" y="472"/>
+                      <position x="680" y="472"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="64"/>
+                    <connection refLocalId="15" formalParameter="OUT">
+                      <position x="856" y="504"/>
+                      <position x="680" y="504"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="96"/>
+                    <connection refLocalId="18">
+                      <position x="856" y="536"/>
+                      <position x="816" y="536"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="64"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <connector name="duration" localId="23" height="32" width="104">
+              <position x="496" y="184"/>
+              <connectionPointIn>
+                <relPosition x="0" y="16"/>
+                <connection refLocalId="10">
+                  <position x="496" y="200"/>
+                  <position x="424" y="200"/>
+                </connection>
+              </connectionPointIn>
+            </connector>
+            <continuation name="duration" localId="17" height="32" width="104">
+              <position x="104" y="480"/>
+              <connectionPointOut>
+                <relPosition x="104" y="16"/>
+              </connectionPointOut>
+            </continuation>
+            <continuation name="duration" localId="18" height="32" width="104">
+              <position x="712" y="520"/>
+              <connectionPointOut>
+                <relPosition x="104" y="16"/>
+              </connectionPointOut>
+            </continuation>
+            <block localId="24" typeName="LT" executionOrderId="0" height="104" width="64">
+              <position x="1048" y="440"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="13" formalParameter="ENO">
+                      <position x="1048" y="472"/>
+                      <position x="920" y="472"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="64"/>
+                    <connection refLocalId="13" formalParameter="OUT">
+                      <position x="1048" y="504"/>
+                      <position x="920" y="504"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="88"/>
+                    <connection refLocalId="19">
+                      <position x="1048" y="528"/>
+                      <position x="1016" y="528"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="64"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="19" executionOrderId="0" height="32" width="80" negated="false">
+              <position x="936" y="512"/>
+              <connectionPointOut>
+                <relPosition x="80" y="16"/>
+              </connectionPointOut>
+              <expression>TIME#1s</expression>
+            </inVariable>
+            <block localId="26" typeName="SEL" executionOrderId="0" height="144" width="64">
+              <position x="1264" y="440"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="32"/>
+                    <connection refLocalId="24" formalParameter="ENO">
+                      <position x="1264" y="472"/>
+                      <position x="1112" y="472"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="G">
+                  <connectionPointIn>
+                    <relPosition x="0" y="64"/>
+                    <connection refLocalId="24" formalParameter="OUT">
+                      <position x="1264" y="504"/>
+                      <position x="1112" y="504"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN0">
+                  <connectionPointIn>
+                    <relPosition x="0" y="96"/>
+                    <connection refLocalId="28">
+                      <position x="1264" y="536"/>
+                      <position x="1208" y="536"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="128"/>
+                    <connection refLocalId="27">
+                      <position x="1264" y="568"/>
+                      <position x="1208" y="568"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="64" y="32"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="64" y="64"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="27" executionOrderId="0" height="32" width="56" negated="false">
+              <position x="1152" y="552"/>
+              <connectionPointOut>
+                <relPosition x="56" y="16"/>
+              </connectionPointOut>
+              <expression>'OK'</expression>
+            </inVariable>
+            <inVariable localId="28" executionOrderId="0" height="32" width="56" negated="false">
+              <position x="1152" y="520"/>
+              <connectionPointOut>
+                <relPosition x="56" y="16"/>
+              </connectionPointOut>
+              <expression>'BAD'</expression>
+            </inVariable>
+            <outVariable localId="29" executionOrderId="0" height="32" width="64" negated="false">
+              <position x="1384" y="488"/>
+              <connectionPointIn>
+                <relPosition x="0" y="16"/>
+                <connection refLocalId="26" formalParameter="OUT">
+                  <position x="1384" y="504"/>
+                  <position x="1328" y="504"/>
+                </connection>
+              </connectionPointIn>
+              <expression>RESULT</expression>
+            </outVariable>
+          </FBD>
+        </body>
+      </pou>
+    </pous>
+  </types>
+  <instances>
+    <configurations>
+      <configuration name="config">
+        <resource name="resource1">
+          <task name="task0" priority="0" interval="T#20ms">
+            <pouInstance name="instance0" typeName="main_test"/>
+          </task>
+        </resource>
+      </configuration>
+    </configurations>
+  </instances>
+</project>