MQTT: WIP, now connects to broker. Added MQTT 3 support and protocol version selection in IDE.
<?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="2022-09-05T09:02:48"/>
<contentHeader name="Unnamed" modificationDateTime="2022-09-09T09:39:37">
<coordinateInfo>
<fbd>
<scaling x="5" y="5"/>
</fbd>
<ld>
<scaling x="0" y="0"/>
</ld>
<sfc>
<scaling x="0" y="0"/>
</sfc>
</coordinateInfo>
</contentHeader>
<types>
<dataTypes/>
<pous>
<pou name="program0" pouType="program">
<interface>
<localVars>
<variable name="LOGGER0">
<type>
<derived name="LOGGER"/>
</type>
</variable>
<variable name="ENTERING_PAGE">
<type>
<derived name="HMI_BOOL"/>
</type>
</variable>
<variable name="LEVEL">
<type>
<derived name="LOGLEVEL"/>
</type>
<initialValue>
<simpleValue value="DEBUG"/>
</initialValue>
</variable>
</localVars>
<externalVars>
<variable name="CURRENT_PAGE_0">
<type>
<derived name="HMI_STRING"/>
</type>
</variable>
</externalVars>
<localVars>
<variable name="R_TRIG0">
<type>
<derived name="R_TRIG"/>
</type>
</variable>
<variable name="ENABLE_JUMP">
<type>
<derived name="HMI_BOOL"/>
</type>
</variable>
<variable name="FB_ZERO">
<type>
<derived name="my_functionBlock"/>
</type>
</variable>
<variable name="FB_ONE">
<type>
<derived name="my_functionBlock"/>
</type>
</variable>
<variable name="FB_TWO">
<type>
<derived name="my_functionBlock"/>
</type>
</variable>
<variable name="FB_THREE">
<type>
<derived name="my_functionBlock"/>
</type>
</variable>
<variable name="FB_FOUR">
<type>
<derived name="my_functionBlock"/>
</type>
</variable>
<variable name="FB_FIVE">
<type>
<derived name="my_functionBlock"/>
</type>
</variable>
<variable name="Enable0">
<type>
<derived name="HMI_BOOL"/>
</type>
<initialValue>
<simpleValue value="TRUE"/>
</initialValue>
</variable>
<variable name="Enable1">
<type>
<derived name="HMI_BOOL"/>
</type>
</variable>
<variable name="Enable2">
<type>
<derived name="HMI_BOOL"/>
</type>
<initialValue>
<simpleValue value="TRUE"/>
</initialValue>
</variable>
<variable name="Enable3">
<type>
<derived name="HMI_BOOL"/>
</type>
<initialValue>
<simpleValue value="TRUE"/>
</initialValue>
</variable>
<variable name="Enable4">
<type>
<derived name="HMI_BOOL"/>
</type>
</variable>
<variable name="Enable5">
<type>
<derived name="HMI_BOOL"/>
</type>
<initialValue>
<simpleValue value="TRUE"/>
</initialValue>
</variable>
</localVars>
</interface>
<body>
<FBD>
<block localId="1" typeName="LOGGER" instanceName="LOGGER0" executionOrderId="0" height="105" width="58">
<position x="280" y="275"/>
<inputVariables>
<variable formalParameter="TRIG">
<connectionPointIn>
<relPosition x="0" y="35"/>
<connection refLocalId="7">
<position x="280" y="310"/>
<position x="189" y="310"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="MSG">
<connectionPointIn>
<relPosition x="0" y="60"/>
<connection refLocalId="11">
<position x="280" y="335"/>
<position x="212" y="335"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="LEVEL">
<connectionPointIn>
<relPosition x="0" y="90"/>
<connection refLocalId="8">
<position x="280" y="365"/>
<position x="190" y="365"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables/>
</block>
<inVariable localId="2" executionOrderId="0" height="24" width="114" negated="false">
<position x="25" y="550"/>
<connectionPointOut>
<relPosition x="114" y="10"/>
</connectionPointOut>
<expression>ENTERING_PAGE</expression>
</inVariable>
<inVariable localId="4" executionOrderId="0" height="25" width="90" negated="false">
<position x="160" y="575"/>
<connectionPointOut>
<relPosition x="90" y="10"/>
</connectionPointOut>
<expression>BOOL#FALSE</expression>
</inVariable>
<block localId="6" typeName="MOVE" executionOrderId="0" height="70" width="55">
<position x="295" y="530"/>
<inputVariables>
<variable formalParameter="EN" edge="falling">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="13" formalParameter="Q">
<position x="295" y="560"/>
<position x="250" y="560"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="55"/>
<connection refLocalId="4">
<position x="295" y="585"/>
<position x="250" y="585"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="ENO">
<connectionPointOut>
<relPosition x="55" y="30"/>
</connectionPointOut>
</variable>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="55" y="55"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="7" executionOrderId="0" height="24" width="114" negated="false">
<position x="75" y="300"/>
<connectionPointOut>
<relPosition x="114" y="10"/>
</connectionPointOut>
<expression>ENTERING_PAGE</expression>
</inVariable>
<inVariable localId="8" executionOrderId="0" height="25" width="50" negated="false">
<position x="140" y="355"/>
<connectionPointOut>
<relPosition x="50" y="10"/>
</connectionPointOut>
<expression>LEVEL</expression>
</inVariable>
<comment localId="9" height="40" width="640">
<position x="15" y="210"/>
<content>
<xhtml:p><![CDATA[Acknowledge page jump being notified by HMI by setting ENTERING_PAGE to True]]></xhtml:p>
</content>
</comment>
<inVariable localId="11" executionOrderId="0" height="25" width="122" negated="false">
<position x="90" y="325"/>
<connectionPointOut>
<relPosition x="122" y="10"/>
</connectionPointOut>
<expression>CURRENT_PAGE_0</expression>
</inVariable>
<outVariable localId="12" executionOrderId="0" height="25" width="115" negated="false">
<position x="385" y="575"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="6" formalParameter="OUT">
<position x="385" y="585"/>
<position x="350" y="585"/>
</connection>
</connectionPointIn>
<expression>ENTERING_PAGE</expression>
</outVariable>
<block localId="13" typeName="R_TRIG" instanceName="R_TRIG0" executionOrderId="0" height="40" width="60">
<position x="190" y="530"/>
<inputVariables>
<variable formalParameter="CLK">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="2">
<position x="190" y="560"/>
<position x="139" y="560"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q">
<connectionPointOut>
<relPosition x="60" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<comment localId="3" height="60" width="640">
<position x="15" y="440"/>
<content>
<xhtml:p><![CDATA[Reset ENTERING_PAGE 1 cycle after being set.
Use EN pin of MOVE to ensure that variable is only assigned when being reset.]]></xhtml:p>
</content>
</comment>
<block localId="14" typeName="my_functionBlock" instanceName="FB_ZERO" executionOrderId="0" height="70" width="191">
<position x="170" y="16"/>
<inputVariables>
<variable formalParameter="SOME_STRING">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="24">
<position x="170" y="46"/>
<position x="125" y="46"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="SOME_INPUT">
<connectionPointIn>
<relPosition x="0" y="55"/>
<connection refLocalId="18">
<position x="170" y="71"/>
<position x="125" y="71"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="SOME_OUTPUT">
<connectionPointOut>
<relPosition x="191" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="5" typeName="my_functionBlock" instanceName="FB_ONE" executionOrderId="0" height="70" width="191">
<position x="170" y="110"/>
<inputVariables>
<variable formalParameter="SOME_STRING">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="25">
<position x="170" y="140"/>
<position x="125" y="140"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="SOME_INPUT">
<connectionPointIn>
<relPosition x="0" y="55"/>
<connection refLocalId="19">
<position x="170" y="165"/>
<position x="125" y="165"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="SOME_OUTPUT">
<connectionPointOut>
<relPosition x="191" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="10" typeName="my_functionBlock" instanceName="FB_THREE" executionOrderId="0" height="70" width="191">
<position x="515" y="110"/>
<inputVariables>
<variable formalParameter="SOME_STRING">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="27">
<position x="515" y="140"/>
<position x="475" y="140"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="SOME_INPUT">
<connectionPointIn>
<relPosition x="0" y="55"/>
<connection refLocalId="21">
<position x="515" y="165"/>
<position x="475" y="165"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="SOME_OUTPUT">
<connectionPointOut>
<relPosition x="191" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="15" typeName="my_functionBlock" instanceName="FB_TWO" executionOrderId="0" height="70" width="191">
<position x="515" y="16"/>
<inputVariables>
<variable formalParameter="SOME_STRING">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="26">
<position x="515" y="46"/>
<position x="475" y="46"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="SOME_INPUT">
<connectionPointIn>
<relPosition x="0" y="55"/>
<connection refLocalId="20">
<position x="515" y="71"/>
<position x="475" y="71"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="SOME_OUTPUT">
<connectionPointOut>
<relPosition x="191" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="16" typeName="my_functionBlock" instanceName="FB_FIVE" executionOrderId="0" height="75" width="191">
<position x="860" y="111"/>
<inputVariables>
<variable formalParameter="SOME_STRING">
<connectionPointIn>
<relPosition x="0" y="34"/>
<connection refLocalId="29">
<position x="860" y="145"/>
<position x="815" y="145"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="SOME_INPUT">
<connectionPointIn>
<relPosition x="0" y="59"/>
<connection refLocalId="23">
<position x="860" y="170"/>
<position x="815" y="170"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="SOME_OUTPUT">
<connectionPointOut>
<relPosition x="191" y="34"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="17" typeName="my_functionBlock" instanceName="FB_FOUR" executionOrderId="0" height="70" width="191">
<position x="860" y="17"/>
<inputVariables>
<variable formalParameter="SOME_STRING">
<connectionPointIn>
<relPosition x="0" y="34"/>
<connection refLocalId="28">
<position x="860" y="51"/>
<position x="815" y="51"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="SOME_INPUT">
<connectionPointIn>
<relPosition x="0" y="59"/>
<connection refLocalId="22">
<position x="860" y="76"/>
<position x="815" y="76"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="SOME_OUTPUT">
<connectionPointOut>
<relPosition x="191" y="34"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="18" executionOrderId="0" height="25" width="70" negated="false">
<position x="55" y="61"/>
<connectionPointOut>
<relPosition x="70" y="10"/>
</connectionPointOut>
<expression>Enable0</expression>
</inVariable>
<inVariable localId="19" executionOrderId="0" height="25" width="70" negated="false">
<position x="55" y="155"/>
<connectionPointOut>
<relPosition x="70" y="10"/>
</connectionPointOut>
<expression>Enable1</expression>
</inVariable>
<inVariable localId="20" executionOrderId="0" height="25" width="70" negated="false">
<position x="405" y="61"/>
<connectionPointOut>
<relPosition x="70" y="10"/>
</connectionPointOut>
<expression>Enable2</expression>
</inVariable>
<inVariable localId="21" executionOrderId="0" height="25" width="70" negated="false">
<position x="405" y="155"/>
<connectionPointOut>
<relPosition x="70" y="10"/>
</connectionPointOut>
<expression>Enable3</expression>
</inVariable>
<inVariable localId="22" executionOrderId="0" height="25" width="70" negated="false">
<position x="745" y="66"/>
<connectionPointOut>
<relPosition x="70" y="10"/>
</connectionPointOut>
<expression>Enable4</expression>
</inVariable>
<inVariable localId="23" executionOrderId="0" height="25" width="70" negated="false">
<position x="745" y="160"/>
<connectionPointOut>
<relPosition x="70" y="10"/>
</connectionPointOut>
<expression>Enable5</expression>
</inVariable>
<inVariable localId="24" executionOrderId="0" height="25" width="70" negated="false">
<position x="55" y="36"/>
<connectionPointOut>
<relPosition x="70" y="10"/>
</connectionPointOut>
<expression>'VENUS'</expression>
</inVariable>
<inVariable localId="25" executionOrderId="0" height="25" width="75" negated="false">
<position x="50" y="130"/>
<connectionPointOut>
<relPosition x="75" y="10"/>
</connectionPointOut>
<expression>'URANUS'</expression>
</inVariable>
<inVariable localId="26" executionOrderId="0" height="25" width="85" negated="false">
<position x="390" y="36"/>
<connectionPointOut>
<relPosition x="85" y="10"/>
</connectionPointOut>
<expression>'JUPITER'</expression>
</inVariable>
<inVariable localId="27" executionOrderId="0" height="25" width="60" negated="false">
<position x="415" y="130"/>
<connectionPointOut>
<relPosition x="60" y="10"/>
</connectionPointOut>
<expression>'MARS'</expression>
</inVariable>
<inVariable localId="28" executionOrderId="0" height="25" width="85" negated="false">
<position x="730" y="41"/>
<connectionPointOut>
<relPosition x="85" y="10"/>
</connectionPointOut>
<expression>'NEPTUNE'</expression>
</inVariable>
<inVariable localId="29" executionOrderId="0" height="25" width="70" negated="false">
<position x="745" y="135"/>
<connectionPointOut>
<relPosition x="70" y="10"/>
</connectionPointOut>
<expression>'EARTH'</expression>
</inVariable>
</FBD>
</body>
</pou>
<pou name="my_functionBlock" pouType="functionBlock">
<interface>
<localVars>
<variable name="MYNODE">
<type>
<derived name="HMI_NODE"/>
</type>
<documentation>
<xhtml:p><![CDATA[Using HMI_NODE creates node un HMI tree]]></xhtml:p>
</documentation>
</variable>
<variable name="SOME_INT">
<type>
<derived name="HMI_INT"/>
</type>
</variable>
</localVars>
<inputVars>
<variable name="SOME_STRING">
<type>
<derived name="HMI_STRING"/>
</type>
</variable>
</inputVars>
<localVars>
<variable name="SOME_BOOL">
<type>
<derived name="HMI_BOOL"/>
</type>
</variable>
<variable name="SOME_REAL">
<type>
<derived name="HMI_REAL"/>
</type>
</variable>
</localVars>
<inputVars>
<variable name="SOME_INPUT">
<type>
<BOOL/>
</type>
</variable>
</inputVars>
<outputVars>
<variable name="SOME_OUTPUT">
<type>
<BOOL/>
</type>
</variable>
</outputVars>
</interface>
<body>
<FBD>
<inVariable localId="1" executionOrderId="0" height="25" width="90" negated="false">
<position x="100" y="70"/>
<connectionPointOut>
<relPosition x="90" y="10"/>
</connectionPointOut>
<expression>SOME_INPUT</expression>
</inVariable>
<outVariable localId="2" executionOrderId="0" height="25" width="100" negated="false">
<position x="250" y="70"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="1">
<position x="250" y="80"/>
<position x="190" y="80"/>
</connection>
</connectionPointIn>
<expression>SOME_OUTPUT</expression>
</outVariable>
<outVariable localId="4" executionOrderId="0" height="25" width="85" negated="false">
<position x="250" y="105"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="1">
<position x="250" y="115"/>
<position x="225" y="115"/>
<position x="225" y="80"/>
<position x="190" y="80"/>
</connection>
</connectionPointIn>
<expression>SOME_BOOL</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="program0"/>
</task>
</resource>
</configuration>
</configurations>
</instances>
</project>