<?xml version='1.0' encoding='utf-8'?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.plcopen.org/xml/tc6_0201">
<fileHeader companyName="Beremiz" productName="Beremiz" productVersion="0.0" creationDateTime="2008-12-14T16:53:26"/>
<contentHeader name="Beremiz non-standard POUs library" modificationDateTime="2025-06-19T17:25:20">
<pou name="check_if_url_is_reachable" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="256" y="352"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="456" y="328"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="456" y="368"/>
<position x="312" y="368"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="2">
<position x="456" y="416"/>
<position x="384" y="416"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="681" y="353"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="681" y="368"/>
<position x="581" y="368"/>
<expression>ACK</expression>
<block localId="7" typeName="CONCAT" executionOrderId="0" height="195" width="67">
<position x="512" y="80"/>
<variable formalParameter="IN1">
<relPosition x="0" y="48"/>
<connection refLocalId="8">
<position x="512" y="128"/>
<position x="459" y="128"/>
<variable formalParameter="IN2">
<relPosition x="0" y="104"/>
<connection refLocalId="9">
<position x="512" y="184"/>
<position x="456" y="184"/>
<variable formalParameter="IN3">
<relPosition x="0" y="168"/>
<connection refLocalId="14">
<position x="512" y="248"/>
<position x="456" y="248"/>
<variable formalParameter="OUT">
<relPosition x="67" y="48"/>
<inVariable localId="8" executionOrderId="0" height="38" width="213" negated="false">
<position x="264" y="112"/>
<relPosition x="213" y="16"/>
<expression>'CheckIfURLIsReachable("'</expression>
<inVariable localId="9" executionOrderId="0" height="32" width="128" negated="false">
<position x="328" y="168"/>
<relPosition x="128" y="16"/>
<expression>URL</expression>
<inVariable localId="14" executionOrderId="0" height="32" width="112" negated="false">
<position x="344" y="232"/>
<relPosition x="112" y="16"/>
<expression>'")'</expression>
<connector name="Code" localId="30" height="28" width="128">
<position x="640" y="112"/>
<relPosition x="0" y="16"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="640" y="128"/>
<position x="579" y="128"/>
<continuation name="Code" localId="2" width="128" height="32">
<position x="256" y="400"/>
<relPosition x="128" y="16"/>
<block localId="31" typeName="STRING_TO_BOOL" executionOrderId="0" width="128" height="48">
<position x="760" y="384"/>
<variable formalParameter="IN">
<relPosition x="0" y="32"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="760" y="416"/>
<position x="581" y="416"/>
<variable formalParameter="OUT">
<relPosition x="128" y="32"/>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="944" y="400"/>
<relPosition x="0" y="16"/>
<connection refLocalId="31" formalParameter="OUT">
<position x="944" y="416"/>
<position x="888" y="416"/>
<expression>RESULT</expression>
<pou name="get_timezone" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<inVariable localId="4" height="46" width="216" executionOrderId="0" negated="false">
<position x="72" y="102"/>
<relPosition x="216" y="26"/>
<expression>'GetTimeZone()'</expression>
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="72" y="56"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="328" y="32"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="328" y="72"/>
<position x="128" y="72"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="4">
<position x="328" y="120"/>
<position x="262" y="120"/>
<position x="262" y="120"/>
<position x="285" y="120"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="497" y="57"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="497" y="72"/>
<position x="453" y="72"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="497" y="102"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="497" y="120"/>
<position x="453" y="120"/>
<expression>RESULT</expression>
<pou name="set_timezone" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<variable name="TIMEZONE">
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="264" y="416"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="464" y="392"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="464" y="432"/>
<position x="320" y="432"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="2">
<position x="464" y="480"/>
<position x="392" y="480"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="689" y="417"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="689" y="432"/>
<position x="589" y="432"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="689" y="462"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="689" y="480"/>
<position x="589" y="480"/>
<expression>RESULT</expression>
<block localId="7" typeName="CONCAT" executionOrderId="0" height="206" width="70">
<position x="512" y="80"/>
<variable formalParameter="IN1">
<relPosition x="0" y="48"/>
<connection refLocalId="8">
<position x="512" y="128"/>
<position x="483" y="128"/>
<variable formalParameter="IN2">
<relPosition x="0" y="112"/>
<connection refLocalId="9">
<position x="512" y="192"/>
<position x="480" y="192"/>
<variable formalParameter="IN3">
<relPosition x="0" y="176"/>
<connection refLocalId="14">
<position x="512" y="256"/>
<position x="480" y="256"/>
<variable formalParameter="OUT">
<relPosition x="70" y="48"/>
<inVariable localId="8" executionOrderId="0" height="35" width="195" negated="false">
<position x="288" y="112"/>
<relPosition x="195" y="16"/>
<expression>'SetTimeZone("'</expression>
<inVariable localId="9" executionOrderId="0" height="35" width="131" negated="false">
<position x="352" y="176"/>
<relPosition x="131" y="16"/>
<expression>TIMEZONE</expression>
<inVariable localId="14" executionOrderId="0" height="32" width="112" negated="false">
<position x="368" y="240"/>
<relPosition x="112" y="16"/>
<expression>'")'</expression>
<connector name="Code" localId="30" height="28" width="128">
<position x="640" y="112"/>
<relPosition x="0" y="16"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="640" y="128"/>
<position x="582" y="128"/>
<continuation name="Code" localId="2" width="128" height="32">
<position x="264" y="464"/>
<relPosition x="128" y="16"/>
<pou name="get_available_timezones" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<inVariable localId="4" height="43" width="213" executionOrderId="0" negated="false">
<position x="72" y="102"/>
<relPosition x="213" y="18"/>
<expression>'GetAvailableTimeZones()'</expression>
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="72" y="56"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="328" y="32"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="328" y="72"/>
<position x="128" y="72"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="4">
<position x="328" y="120"/>
<position x="262" y="120"/>
<position x="262" y="120"/>
<position x="285" y="120"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="497" y="57"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="497" y="72"/>
<position x="453" y="72"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="497" y="102"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="497" y="120"/>
<position x="453" y="120"/>
<expression>RESULT</expression>
<pou name="get_wifi_settings" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<variable name="INTERFACE_NAME">
<variable name="FIELD_NAME">
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="256" y="352"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="456" y="328"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="456" y="368"/>
<position x="312" y="368"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="2">
<position x="456" y="416"/>
<position x="384" y="416"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="681" y="353"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="681" y="368"/>
<position x="581" y="368"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="681" y="398"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="681" y="416"/>
<position x="581" y="416"/>
<expression>RESULT</expression>
<block localId="7" typeName="CONCAT" executionOrderId="0" height="192" width="64">
<position x="512" y="80"/>
<variable formalParameter="IN1">
<relPosition x="0" y="40"/>
<connection refLocalId="8">
<position x="512" y="120"/>
<position x="464" y="120"/>
<variable formalParameter="IN2">
<relPosition x="0" y="72"/>
<connection refLocalId="9">
<position x="512" y="152"/>
<position x="248" y="152"/>
<variable formalParameter="IN3">
<relPosition x="0" y="104"/>
<connection refLocalId="10">
<position x="512" y="184"/>
<position x="464" y="184"/>
<variable formalParameter="IN4">
<relPosition x="0" y="136"/>
<connection refLocalId="11">
<position x="512" y="216"/>
<position x="248" y="216"/>
<variable formalParameter="IN5">
<relPosition x="0" y="176"/>
<connection refLocalId="14">
<position x="512" y="256"/>
<position x="464" y="256"/>
<variable formalParameter="OUT">
<relPosition x="64" y="40"/>
<inVariable localId="8" executionOrderId="0" height="35" width="195" negated="false">
<position x="272" y="104"/>
<relPosition x="195" y="16"/>
<expression>'GetWiFiSettings("'</expression>
<inVariable localId="9" executionOrderId="0" height="32" width="128" negated="false">
<position x="120" y="136"/>
<relPosition x="128" y="16"/>
<expression>INTERFACE_NAME</expression>
<inVariable localId="10" executionOrderId="0" height="32" width="112" negated="false">
<position x="352" y="168"/>
<relPosition x="112" y="16"/>
<expression>'", "'</expression>
<inVariable localId="11" executionOrderId="0" height="32" width="112" negated="false">
<position x="136" y="200"/>
<relPosition x="112" y="16"/>
<expression>FIELD_NAME</expression>
<inVariable localId="14" executionOrderId="0" height="32" width="112" negated="false">
<position x="352" y="240"/>
<relPosition x="112" y="16"/>
<expression>'")'</expression>
<connector name="Code" localId="30" height="28" width="128">
<position x="632" y="104"/>
<relPosition x="0" y="16"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="632" y="120"/>
<position x="576" y="120"/>
<continuation name="Code" localId="2" width="128" height="32">
<position x="256" y="400"/>
<relPosition x="128" y="16"/>
<pou name="connect_to_wifi" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<variable name="INTERFACE_NAME">
<variable name="AUTHENTICATION_TYPE">
<variable name="PASSWORD">
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="264" y="416"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="464" y="392"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="464" y="432"/>
<position x="320" y="432"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="2">
<position x="464" y="480"/>
<position x="392" y="480"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="689" y="417"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="689" y="432"/>
<position x="589" y="432"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="689" y="462"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="689" y="480"/>
<position x="589" y="480"/>
<expression>RESULT</expression>
<block localId="7" typeName="CONCAT" executionOrderId="0" height="203" width="67">
<position x="512" y="80"/>
<variable formalParameter="IN1">
<relPosition x="0" y="32"/>
<connection refLocalId="8">
<position x="512" y="112"/>
<position x="480" y="112"/>
<variable formalParameter="IN2">
<relPosition x="0" y="48"/>
<connection refLocalId="9">
<position x="512" y="128"/>
<position x="224" y="128"/>
<variable formalParameter="IN3">
<relPosition x="0" y="72"/>
<connection refLocalId="10">
<position x="512" y="152"/>
<position x="480" y="152"/>
<variable formalParameter="IN4">
<relPosition x="0" y="88"/>
<connection refLocalId="15">
<position x="512" y="168"/>
<position x="221" y="168"/>
<variable formalParameter="IN5">
<relPosition x="0" y="112"/>
<connection refLocalId="4">
<position x="512" y="192"/>
<position x="480" y="192"/>
<variable formalParameter="IN6">
<relPosition x="0" y="128"/>
<connection refLocalId="11">
<position x="512" y="208"/>
<position x="224" y="208"/>
<variable formalParameter="IN7">
<relPosition x="0" y="152"/>
<connection refLocalId="13">
<position x="512" y="232"/>
<position x="480" y="232"/>
<variable formalParameter="IN8">
<relPosition x="0" y="168"/>
<connection refLocalId="12">
<position x="512" y="248"/>
<position x="224" y="248"/>
<variable formalParameter="IN9">
<relPosition x="0" y="192"/>
<connection refLocalId="14">
<position x="512" y="272"/>
<position x="480" y="272"/>
<variable formalParameter="OUT">
<relPosition x="67" y="32"/>
<inVariable localId="8" executionOrderId="0" height="32" width="192" negated="false">
<position x="288" y="96"/>
<relPosition x="192" y="16"/>
<expression>'ConnectToWiFi("'</expression>
<inVariable localId="9" executionOrderId="0" height="32" width="128" negated="false">
<position x="96" y="112"/>
<relPosition x="128" y="16"/>
<expression>INTERFACE_NAME</expression>
<inVariable localId="10" executionOrderId="0" height="32" width="112" negated="false">
<position x="368" y="136"/>
<relPosition x="112" y="16"/>
<expression>'", "'</expression>
<inVariable localId="11" executionOrderId="0" height="32" width="112" negated="false">
<position x="112" y="192"/>
<relPosition x="112" y="16"/>
<expression>SSID</expression>
<inVariable localId="14" executionOrderId="0" height="32" width="112" negated="false">
<position x="368" y="256"/>
<relPosition x="112" y="16"/>
<expression>'")'</expression>
<connector name="Code" localId="30" height="28" width="128">
<position x="600" y="96"/>
<relPosition x="0" y="16"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="600" y="112"/>
<position x="579" y="112"/>
<continuation name="Code" localId="2" width="128" height="32">
<position x="264" y="464"/>
<relPosition x="128" y="16"/>
<inVariable localId="4" executionOrderId="0" height="32" width="112" negated="false">
<position x="368" y="176"/>
<relPosition x="112" y="16"/>
<expression>'", "'</expression>
<inVariable localId="12" executionOrderId="0" height="32" width="112" negated="false">
<position x="112" y="232"/>
<relPosition x="112" y="16"/>
<expression>PASSWORD</expression>
<inVariable localId="13" executionOrderId="0" height="32" width="112" negated="false">
<position x="368" y="216"/>
<relPosition x="112" y="16"/>
<expression>'", "'</expression>
<inVariable localId="15" executionOrderId="0" height="35" width="165" negated="false">
<position x="56" y="152"/>
<relPosition x="165" y="16"/>
<expression>AUTHENTICATION_TYPE</expression>
<pou name="get_network_settings" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<variable name="INTERFACE_NAME">
<variable name="FIELD_NAME">
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="256" y="352"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="456" y="328"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="456" y="368"/>
<position x="312" y="368"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="2">
<position x="456" y="416"/>
<position x="384" y="416"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="681" y="353"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="681" y="368"/>
<position x="581" y="368"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="681" y="398"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="681" y="416"/>
<position x="581" y="416"/>
<expression>RESULT</expression>
<block localId="7" typeName="CONCAT" executionOrderId="0" height="192" width="64">
<position x="512" y="80"/>
<variable formalParameter="IN1">
<relPosition x="0" y="40"/>
<connection refLocalId="8">
<position x="512" y="120"/>
<position x="464" y="120"/>
<variable formalParameter="IN2">
<relPosition x="0" y="72"/>
<connection refLocalId="9">
<position x="512" y="152"/>
<position x="248" y="152"/>
<variable formalParameter="IN3">
<relPosition x="0" y="104"/>
<connection refLocalId="10">
<position x="512" y="184"/>
<position x="464" y="184"/>
<variable formalParameter="IN4">
<relPosition x="0" y="136"/>
<connection refLocalId="11">
<position x="512" y="216"/>
<position x="248" y="216"/>
<variable formalParameter="IN5">
<relPosition x="0" y="176"/>
<connection refLocalId="14">
<position x="512" y="256"/>
<position x="464" y="256"/>
<variable formalParameter="OUT">
<relPosition x="64" y="40"/>
<inVariable localId="8" executionOrderId="0" height="32" width="192" negated="false">
<position x="272" y="104"/>
<relPosition x="192" y="16"/>
<expression>'GetNetworkSettings("'</expression>
<inVariable localId="9" executionOrderId="0" height="32" width="128" negated="false">
<position x="120" y="136"/>
<relPosition x="128" y="16"/>
<expression>INTERFACE_NAME</expression>
<inVariable localId="10" executionOrderId="0" height="32" width="112" negated="false">
<position x="352" y="168"/>
<relPosition x="112" y="16"/>
<expression>'", "'</expression>
<inVariable localId="11" executionOrderId="0" height="32" width="112" negated="false">
<position x="136" y="200"/>
<relPosition x="112" y="16"/>
<expression>FIELD_NAME</expression>
<inVariable localId="14" executionOrderId="0" height="32" width="112" negated="false">
<position x="352" y="240"/>
<relPosition x="112" y="16"/>
<expression>'")'</expression>
<connector name="Code" localId="30" height="28" width="128">
<position x="632" y="104"/>
<relPosition x="0" y="16"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="632" y="120"/>
<position x="576" y="120"/>
<continuation name="Code" localId="2" width="128" height="32">
<position x="256" y="400"/>
<relPosition x="128" y="16"/>
<pou name="get_image_version" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<inVariable localId="4" height="40" width="168" executionOrderId="0" negated="false">
<position x="72" y="102"/>
<relPosition x="168" y="18"/>
<expression>'GetImageVersion()'</expression>
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="72" y="56"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="272" y="32"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="272" y="72"/>
<position x="128" y="72"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="4">
<position x="272" y="120"/>
<position x="127" y="120"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="497" y="57"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="497" y="72"/>
<position x="397" y="72"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="497" y="102"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="497" y="120"/>
<position x="397" y="120"/>
<expression>RESULT</expression>
<pou name="get_linux_version" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<inVariable localId="4" height="40" width="168" executionOrderId="0" negated="false">
<position x="72" y="102"/>
<relPosition x="168" y="18"/>
<expression>'GetLinuxVersion()'</expression>
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="72" y="56"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="272" y="32"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="272" y="72"/>
<position x="128" y="72"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="4">
<position x="272" y="120"/>
<position x="127" y="120"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="497" y="57"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="497" y="72"/>
<position x="397" y="72"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="497" y="102"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="497" y="120"/>
<position x="397" y="120"/>
<expression>RESULT</expression>
<pou name="get_plc_id" pouType="functionBlock">
<variable name="py_eval">
<derived name="python_eval"/>
<inVariable localId="4" height="43" width="171" executionOrderId="0" negated="false">
<position x="72" y="102"/>
<relPosition x="171" y="18"/>
<expression>'GetPLCID()'</expression>
<inVariable localId="3" height="35" width="56" executionOrderId="0" negated="false">
<position x="72" y="56"/>
<relPosition x="56" y="16"/>
<expression>TRIG</expression>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="272" y="32"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="40"/>
<connection refLocalId="3">
<position x="272" y="72"/>
<position x="128" y="72"/>
<variable formalParameter="CODE">
<relPosition x="0" y="88"/>
<connection refLocalId="4">
<position x="272" y="120"/>
<position x="127" y="120"/>
<variable formalParameter="ACK">
<relPosition x="125" y="40"/>
<variable formalParameter="RESULT">
<relPosition x="125" y="88"/>
<outVariable localId="5" height="35" width="45" executionOrderId="0" negated="false">
<position x="497" y="57"/>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="497" y="72"/>
<position x="397" y="72"/>
<expression>ACK</expression>
<outVariable localId="6" height="35" width="75" executionOrderId="0" negated="false">
<position x="497" y="102"/>
<relPosition x="0" y="18"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="497" y="120"/>
<position x="397" y="120"/>
<expression>RESULT</expression>
<pou name="log_append" pouType="functionBlock">
<variable name="VARNAME">
<variable name="py_eval0">
<derived name="python_eval"/>
<variable name="R_TRIG1">
<inVariable localId="8" executionOrderId="0" height="30" width="117" negated="false">
<position x="432" y="128"/>
<relPosition x="117" y="16"/>
<expression>'LogAppend("'</expression>
<comment localId="29" height="40" width="232">
<position x="64" y="32"/>
<xhtml:p><![CDATA[Generate python code line]]></xhtml:p>
<block localId="40" width="104" height="80" typeName="python_eval" instanceName="py_eval0" executionOrderId="0">
<position x="392" y="416"/>
<variable formalParameter="TRIG">
<relPosition x="0" y="32"/>
<connection refLocalId="46" formalParameter="Q">
<position x="392" y="448"/>
<position x="200" y="448"/>
<variable formalParameter="CODE">
<relPosition x="0" y="64"/>
<connection refLocalId="41">
<position x="392" y="480"/>
<position x="360" y="480"/>
<variable formalParameter="ACK">
<relPosition x="104" y="32"/>
<variable formalParameter="RESULT">
<relPosition x="104" y="64"/>
<continuation name="Code" localId="41" height="28" width="128">
<position x="232" y="464"/>
<relPosition x="128" y="16"/>
<inVariable localId="42" height="27" width="64" executionOrderId="0" negated="false">
<position x="48" y="432"/>
<relPosition x="64" y="16"/>
<expression>TRIG</expression>
<outVariable localId="43" height="32" width="40" executionOrderId="0" negated="false">
<position x="840" y="432"/>
<relPosition x="0" y="16"/>
<connection refLocalId="40" formalParameter="ACK">
<position x="840" y="448"/>
<position x="496" y="448"/>
<expression>ACK</expression>
<outVariable localId="44" height="27" width="64" executionOrderId="0" negated="false">
<position x="840" y="488"/>
<relPosition x="0" y="16"/>
<connection refLocalId="40" formalParameter="RESULT">
<position x="840" y="504"/>
<position x="668" y="504"/>
<position x="668" y="480"/>
<position x="496" y="480"/>
<expression>RESULT</expression>
<block localId="46" typeName="R_TRIG" instanceName="R_TRIG1" executionOrderId="0" height="48" width="64">
<position x="136" y="416"/>
<variable formalParameter="CLK">
<relPosition x="0" y="32"/>
<connection refLocalId="42">
<position x="136" y="448"/>
<position x="112" y="448"/>
<variable formalParameter="Q">
<relPosition x="64" y="32"/>
<block localId="33" typeName="LEFT" executionOrderId="0" height="64" width="56">
<position x="592" y="520"/>
<variable formalParameter="IN">
<relPosition x="0" y="32"/>
<connection refLocalId="40" formalParameter="RESULT">
<position x="592" y="552"/>
<position x="540" y="552"/>
<position x="540" y="480"/>
<position x="496" y="480"/>
<variable formalParameter="L">
<relPosition x="0" y="56"/>
<connection refLocalId="35">
<position x="592" y="576"/>
<position x="568" y="576"/>
<variable formalParameter="OUT">
<relPosition x="56" y="32"/>
<block localId="34" typeName="EQ" executionOrderId="0" height="72" width="64">
<position x="736" y="520"/>
<variable formalParameter="IN1">
<relPosition x="0" y="32"/>
<connection refLocalId="33" formalParameter="OUT">
<position x="736" y="552"/>
<position x="648" y="552"/>
<variable formalParameter="IN2">
<relPosition x="0" y="56"/>
<connection refLocalId="36">
<position x="736" y="576"/>
<position x="704" y="576"/>
<variable formalParameter="OUT">
<relPosition x="64" y="32"/>
<inVariable localId="35" executionOrderId="0" height="27" width="24" negated="false">
<position x="544" y="560"/>
<relPosition x="24" y="16"/>
<expression>1</expression>
<inVariable localId="36" executionOrderId="0" height="32" width="40" negated="false">
<position x="664" y="560"/>
<relPosition x="40" y="16"/>
<expression>'#'</expression>
<outVariable localId="54" executionOrderId="0" width="56" height="32" negated="false">
<position x="840" y="536"/>
<relPosition x="0" y="16"/>
<connection refLocalId="34" formalParameter="OUT">
<position x="840" y="552"/>
<position x="800" y="552"/>
<expression>ERROR</expression>
<block localId="7" typeName="CONCAT" executionOrderId="0" height="246" width="78">
<position x="592" y="104"/>
<variable formalParameter="IN1">
<relPosition x="0" y="40"/>
<connection refLocalId="8">
<position x="592" y="144"/>
<position x="549" y="144"/>
<variable formalParameter="IN2">
<relPosition x="0" y="88"/>
<connection refLocalId="2">
<position x="592" y="192"/>
<position x="352" y="192"/>
<variable formalParameter="IN3">
<relPosition x="0" y="136"/>
<connection refLocalId="10">
<position x="592" y="240"/>
<position x="552" y="240"/>
<variable formalParameter="IN4">
<relPosition x="0" y="176"/>
<connection refLocalId="3">
<position x="592" y="280"/>
<position x="352" y="280"/>
<variable formalParameter="IN5">
<relPosition x="0" y="224"/>
<connection refLocalId="1">
<position x="592" y="328"/>
<position x="550" y="328"/>
<variable formalParameter="OUT">
<relPosition x="78" y="40"/>
<inVariable localId="2" executionOrderId="0" height="32" width="112" negated="false">
<position x="240" y="176"/>
<relPosition x="112" y="16"/>
<expression>VARNAME</expression>
<inVariable localId="10" executionOrderId="0" height="27" width="112" negated="false">
<position x="440" y="224"/>
<relPosition x="112" y="16"/>
<expression>'","'</expression>
<inVariable localId="3" executionOrderId="0" height="32" width="112" negated="false">
<position x="240" y="264"/>
<relPosition x="112" y="16"/>
<expression>VALUE</expression>
<connector name="Code" localId="19" height="28" width="128">
<position x="728" y="128"/>
<relPosition x="0" y="16"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="728" y="144"/>
<position x="670" y="144"/>
<inVariable localId="1" executionOrderId="0" height="33" width="118" negated="false">
<position x="432" y="312"/>
<relPosition x="118" y="16"/>
<expression>'")'</expression>