# HG changeset patch # User Edouard Tisserant <edouard.tisserant@gmail.com> # Date 1679905154 -7200 # Node ID fda6c1a37662763a47ed0330c84a24d632990b4e # Parent a811e1ff718a5c5afb25e29033b23d0d746f2b84 Tests: Add preliminary IEC-61131 language test, to be continued. Test sets BEREMIZ_TEST_CYCLES in order to speed-up TON duration test. diff -r a811e1ff718a -r fda6c1a37662 tests/cli_tests/iec61131_lang_test.bash --- /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 diff -r a811e1ff718a -r fda6c1a37662 tests/projects/iec61131_lang_test/beremiz.xml --- /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> diff -r a811e1ff718a -r fda6c1a37662 tests/projects/iec61131_lang_test/gen_conversion.py --- /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) + + diff -r a811e1ff718a -r fda6c1a37662 tests/projects/iec61131_lang_test/plc.xml --- /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>