# HG changeset patch # User Edouard Tisserant <edouard.tisserant@gmail.com> # Date 1696429440 -7200 # Node ID d29d67e8653228e4cde43fc7dff9d4e7b0567a16 # Parent e1cfb03e65822e467bb558221f5db8084590dd41# Parent efe0b5b21842dece64c5298eb343e1681f383951 Merge diff -r e1cfb03e6582 -r d29d67e86532 svghmi/gen_index_xhtml.xslt --- a/svghmi/gen_index_xhtml.xslt Tue Oct 03 21:33:13 2023 +0200 +++ b/svghmi/gen_index_xhtml.xslt Wed Oct 04 16:24:00 2023 +0200 @@ -2170,8 +2170,6 @@ </xsl:text> <xsl:text> this.incoming[index] = undefined; </xsl:text> - <xsl:text> // TODO: add timestamp argument to dispatch, so that defered data do not appear wrong on graphs -</xsl:text> <xsl:text> this.lastdispatch[index] = Date.now(); </xsl:text> <xsl:text> this.do_dispatch(new_val, old_val, index); @@ -9273,8 +9271,6 @@ </xsl:text> <xsl:text> </xsl:text> - <xsl:text> console.log("dispatch(",value,oldval, index, time); -</xsl:text> <xsl:text> // naive local buffer impl. </xsl:text> <xsl:text> // data is updated only when graph is visible @@ -10985,9 +10981,19 @@ </xsl:text> <xsl:text> </xsl:text> - <xsl:text> if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) { -</xsl:text> - <xsl:text> throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg)) + <xsl:text> if (re.numeric_arg.test(ph.type)){ +</xsl:text> + <xsl:text> let argtype = typeof arg; +</xsl:text> + <xsl:text> if ( argtype !== 'bigint') { +</xsl:text> + <xsl:text> if ( argtype !== 'number' && isNaN(arg) ) { +</xsl:text> + <xsl:text> throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg)) +</xsl:text> + <xsl:text> } +</xsl:text> + <xsl:text> } </xsl:text> <xsl:text> } </xsl:text> @@ -11481,13 +11487,27 @@ </xsl:text> <xsl:text>const dvgetters = { </xsl:text> - <xsl:text> INT: (dv,offset) => [dv.getInt16(offset, true), 2], -</xsl:text> - <xsl:text> BOOL: (dv,offset) => [dv.getInt8(offset, true), 1], -</xsl:text> - <xsl:text> NODE: (dv,offset) => [dv.getInt8(offset, true), 1], -</xsl:text> - <xsl:text> REAL: (dv,offset) => [dv.getFloat32(offset, true), 4], + <xsl:text> SINT: (dv,offset) => [dv.getInt8(offset, true), 1], +</xsl:text> + <xsl:text> INT: (dv,offset) => [dv.getInt16(offset, true), 2], +</xsl:text> + <xsl:text> DINT: (dv,offset) => [dv.getInt32(offset, true), 4], +</xsl:text> + <xsl:text> LINT: (dv,offset) => [dv.getBigInt64(offset, true), 8], +</xsl:text> + <xsl:text> USINT: (dv,offset) => [dv.getUint8(offset, true), 1], +</xsl:text> + <xsl:text> UINT: (dv,offset) => [dv.getUint16(offset, true), 2], +</xsl:text> + <xsl:text> UDINT: (dv,offset) => [dv.getUint32(offset, true), 4], +</xsl:text> + <xsl:text> ULINT: (dv,offset) => [dv.getBigUint64(offset, true), 8], +</xsl:text> + <xsl:text> BOOL: (dv,offset) => [dv.getInt8(offset, true), 1], +</xsl:text> + <xsl:text> NODE: (dv,offset) => [dv.getInt8(offset, true), 1], +</xsl:text> + <xsl:text> REAL: (dv,offset) => [dv.getFloat32(offset, true), 4], </xsl:text> <xsl:text> STRING: (dv, offset) => { </xsl:text> @@ -11717,8 +11737,22 @@ </xsl:text> <xsl:text>const typedarray_types = { </xsl:text> + <xsl:text> SINT: (number) => new Int8Array([number]), +</xsl:text> <xsl:text> INT: (number) => new Int16Array([number]), </xsl:text> + <xsl:text> DINT: (number) => new Int32Array([number]), +</xsl:text> + <xsl:text> LINT: (number) => new Int64Array([number]), +</xsl:text> + <xsl:text> USINT: (number) => new Uint8Array([number]), +</xsl:text> + <xsl:text> UINT: (number) => new Uint16Array([number]), +</xsl:text> + <xsl:text> UDINT: (number) => new Uint32Array([number]), +</xsl:text> + <xsl:text> ULINT: (number) => new Uint64Array([number]), +</xsl:text> <xsl:text> BOOL: (truth) => new Int8Array([truth]), </xsl:text> <xsl:text> NODE: (truth) => new Int8Array([truth]), diff -r e1cfb03e6582 -r d29d67e86532 svghmi/hmi_tree.py --- a/svghmi/hmi_tree.py Tue Oct 03 21:33:13 2023 +0200 +++ b/svghmi/hmi_tree.py Wed Oct 04 16:24:00 2023 +0200 @@ -17,7 +17,15 @@ HMI_TYPES_DESC = { "HMI_NODE":{}, "HMI_STRING":{}, + "HMI_SINT":{}, "HMI_INT":{}, + "HMI_DINT":{}, + "HMI_LINT":{}, + "HMI_DINT":{}, + "HMI_USINT":{}, + "HMI_UINT":{}, + "HMI_UDINT":{}, + "HMI_ULINT":{}, "HMI_BOOL":{}, "HMI_REAL":{} } diff -r e1cfb03e6582 -r d29d67e86532 svghmi/pous.xml --- a/svghmi/pous.xml Tue Oct 03 21:33:13 2023 +0200 +++ b/svghmi/pous.xml Wed Oct 04 16:24:00 2023 +0200 @@ -16,11 +16,46 @@ </contentHeader> <types> <dataTypes> + <dataType name="HMI_SINT"> + <baseType> + <SINT/> + </baseType> + </dataType> <dataType name="HMI_INT"> <baseType> <INT/> </baseType> </dataType> + <dataType name="HMI_DINT"> + <baseType> + <DINT/> + </baseType> + </dataType> + <dataType name="HMI_LINT"> + <baseType> + <LINT/> + </baseType> + </dataType> + <dataType name="HMI_USINT"> + <baseType> + <USINT/> + </baseType> + </dataType> + <dataType name="HMI_UINT"> + <baseType> + <UINT/> + </baseType> + </dataType> + <dataType name="HMI_UDINT"> + <baseType> + <UDINT/> + </baseType> + </dataType> + <dataType name="HMI_ULINT"> + <baseType> + <ULINT/> + </baseType> + </dataType> <dataType name="HMI_REAL"> <baseType> <REAL/> diff -r e1cfb03e6582 -r d29d67e86532 svghmi/sprintf.js --- a/svghmi/sprintf.js Tue Oct 03 21:33:13 2023 +0200 +++ b/svghmi/sprintf.js Wed Oct 04 16:24:00 2023 +0200 @@ -59,8 +59,13 @@ arg = arg() } - if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) { - throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg)) + if (re.numeric_arg.test(ph.type)){ + let argtype = typeof arg; + if ( argtype !== 'bigint') { + if ( argtype !== 'number' && isNaN(arg) ) { + throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg)) + } + } } if (re.number.test(ph.type)) { diff -r e1cfb03e6582 -r d29d67e86532 svghmi/svghmi.js --- a/svghmi/svghmi.js Tue Oct 03 21:33:13 2023 +0200 +++ b/svghmi/svghmi.js Wed Oct 04 16:24:00 2023 +0200 @@ -24,10 +24,17 @@ var has_watchdog = window.location.hash == "#watchdog"; const dvgetters = { - INT: (dv,offset) => [dv.getInt16(offset, true), 2], - BOOL: (dv,offset) => [dv.getInt8(offset, true), 1], - NODE: (dv,offset) => [dv.getInt8(offset, true), 1], - REAL: (dv,offset) => [dv.getFloat32(offset, true), 4], + SINT: (dv,offset) => [dv.getInt8(offset, true), 1], + INT: (dv,offset) => [dv.getInt16(offset, true), 2], + DINT: (dv,offset) => [dv.getInt32(offset, true), 4], + LINT: (dv,offset) => [dv.getBigInt64(offset, true), 8], + USINT: (dv,offset) => [dv.getUint8(offset, true), 1], + UINT: (dv,offset) => [dv.getUint16(offset, true), 2], + UDINT: (dv,offset) => [dv.getUint32(offset, true), 4], + ULINT: (dv,offset) => [dv.getBigUint64(offset, true), 8], + BOOL: (dv,offset) => [dv.getInt8(offset, true), 1], + NODE: (dv,offset) => [dv.getInt8(offset, true), 1], + REAL: (dv,offset) => [dv.getFloat32(offset, true), 4], STRING: (dv, offset) => { const size = dv.getInt8(offset); return [ @@ -142,7 +149,14 @@ }; const typedarray_types = { + SINT: (number) => new Int8Array([number]), INT: (number) => new Int16Array([number]), + DINT: (number) => new Int32Array([number]), + LINT: (number) => new Int64Array([number]), + USINT: (number) => new Uint8Array([number]), + UINT: (number) => new Uint16Array([number]), + UDINT: (number) => new Uint32Array([number]), + ULINT: (number) => new Uint64Array([number]), BOOL: (truth) => new Int8Array([truth]), NODE: (truth) => new Int8Array([truth]), REAL: (number) => new Float32Array([number]), diff -r e1cfb03e6582 -r d29d67e86532 tests/projects/svghmi_real/plc.xml --- a/tests/projects/svghmi_real/plc.xml Tue Oct 03 21:33:13 2023 +0200 +++ b/tests/projects/svghmi_real/plc.xml Wed Oct 04 16:24:00 2023 +0200 @@ -1,7 +1,7 @@ <?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="2019-08-06T14:23:42"/> - <contentHeader name="Unnamed" modificationDateTime="2021-02-16T10:38:12"> + <contentHeader name="Unnamed" modificationDateTime="2023-08-18T11:29:36"> <coordinateInfo> <fbd> <scaling x="5" y="5"/> @@ -27,53 +27,334 @@ </variable> <variable name="var1"> <type> + <derived name="HMI_SINT"/> + </type> + </variable> + <variable name="var2"> + <type> <derived name="HMI_INT"/> </type> </variable> + <variable name="var3"> + <type> + <derived name="HMI_DINT"/> + </type> + </variable> + <variable name="var4"> + <type> + <derived name="HMI_LINT"/> + </type> + </variable> + <variable name="var5"> + <type> + <derived name="HMI_USINT"/> + </type> + </variable> + <variable name="var6"> + <type> + <derived name="HMI_UINT"/> + </type> + </variable> + <variable name="var7"> + <type> + <derived name="HMI_UDINT"/> + </type> + </variable> + <variable name="var8"> + <type> + <derived name="HMI_ULINT"/> + </type> + </variable> + <variable name="var9"> + <type> + <derived name="HMI_UDINT"/> + </type> + </variable> </localVars> </interface> <body> <FBD> <inVariable localId="5" executionOrderId="0" height="30" width="125" negated="false"> - <position x="240" y="45"/> + <position x="320" y="60"/> <connectionPointOut> <relPosition x="125" y="15"/> </connectionPointOut> <expression>var0</expression> </inVariable> - <outVariable localId="10" executionOrderId="0" height="25" width="85" negated="false"> - <position x="720" y="70"/> + <block localId="11" typeName="REAL_TO_INT" executionOrderId="0" height="40" width="100"> + <position x="495" y="95"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5"> + <position x="495" y="125"/> + <position x="470" y="125"/> + <position x="470" y="75"/> + <position x="445" y="75"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="100" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <outVariable localId="12" executionOrderId="0" height="25" width="45" negated="false"> + <position x="680" y="65"/> + <connectionPointIn> + <relPosition x="0" y="10"/> + <connection refLocalId="1" formalParameter="OUT"> + <position x="680" y="75"/> + <position x="610" y="75"/> + </connection> + </connectionPointIn> + <expression>var1</expression> + </outVariable> + <outVariable localId="13" executionOrderId="0" height="25" width="45" negated="false"> + <position x="680" y="115"/> <connectionPointIn> <relPosition x="0" y="10"/> <connection refLocalId="11" formalParameter="OUT"> - <position x="720" y="80"/> - <position x="667" y="80"/> - <position x="667" y="75"/> - <position x="605" y="75"/> - </connection> - </connectionPointIn> - <expression>var1</expression> - </outVariable> - <block localId="11" typeName="REAL_TO_INT" executionOrderId="0" height="40" width="100"> - <position x="505" y="45"/> - <inputVariables> - <variable formalParameter="IN"> - <connectionPointIn> - <relPosition x="0" y="30"/> - <connection refLocalId="5"> - <position x="505" y="75"/> - <position x="445" y="75"/> - <position x="445" y="60"/> - <position x="365" y="60"/> - </connection> - </connectionPointIn> - </variable> - </inputVariables> - <inOutVariables/> - <outputVariables> - <variable formalParameter="OUT"> - <connectionPointOut> - <relPosition x="100" y="30"/> + <position x="680" y="125"/> + <position x="595" y="125"/> + </connection> + </connectionPointIn> + <expression>var2</expression> + </outVariable> + <outVariable localId="14" executionOrderId="0" height="25" width="45" negated="false"> + <position x="680" y="165"/> + <connectionPointIn> + <relPosition x="0" y="10"/> + <connection refLocalId="21" formalParameter="OUT"> + <position x="680" y="175"/> + <position x="605" y="175"/> + </connection> + </connectionPointIn> + <expression>var3</expression> + </outVariable> + <outVariable localId="15" executionOrderId="0" height="25" width="45" negated="false"> + <position x="680" y="215"/> + <connectionPointIn> + <relPosition x="0" y="10"/> + <connection refLocalId="20" formalParameter="OUT"> + <position x="680" y="225"/> + <position x="605" y="225"/> + </connection> + </connectionPointIn> + <expression>var4</expression> + </outVariable> + <outVariable localId="16" executionOrderId="0" height="25" width="45" negated="false"> + <position x="680" y="265"/> + <connectionPointIn> + <relPosition x="0" y="10"/> + <connection refLocalId="22" formalParameter="OUT"> + <position x="680" y="275"/> + <position x="610" y="275"/> + </connection> + </connectionPointIn> + <expression>var5</expression> + </outVariable> + <outVariable localId="17" executionOrderId="0" height="25" width="45" negated="false"> + <position x="680" y="315"/> + <connectionPointIn> + <relPosition x="0" y="10"/> + <connection refLocalId="23" formalParameter="OUT"> + <position x="680" y="325"/> + <position x="605" y="325"/> + </connection> + </connectionPointIn> + <expression>var6</expression> + </outVariable> + <outVariable localId="18" executionOrderId="0" height="25" width="45" negated="false"> + <position x="680" y="365"/> + <connectionPointIn> + <relPosition x="0" y="10"/> + <connection refLocalId="24" formalParameter="OUT"> + <position x="680" y="375"/> + <position x="610" y="375"/> + </connection> + </connectionPointIn> + <expression>var7</expression> + </outVariable> + <outVariable localId="19" executionOrderId="0" height="25" width="45" negated="false"> + <position x="680" y="415"/> + <connectionPointIn> + <relPosition x="0" y="10"/> + <connection refLocalId="25" formalParameter="OUT"> + <position x="680" y="425"/> + <position x="610" y="425"/> + </connection> + </connectionPointIn> + <expression>var8</expression> + </outVariable> + <block localId="1" typeName="REAL_TO_SINT" executionOrderId="0" height="40" width="115"> + <position x="495" y="45"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5"> + <position x="495" y="75"/> + <position x="445" y="75"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="115" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="20" typeName="REAL_TO_LINT" executionOrderId="0" height="40" width="110"> + <position x="495" y="195"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5"> + <position x="495" y="225"/> + <position x="470" y="225"/> + <position x="470" y="75"/> + <position x="445" y="75"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="110" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="21" typeName="REAL_TO_DINT" executionOrderId="0" height="40" width="110"> + <position x="495" y="145"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5"> + <position x="495" y="175"/> + <position x="470" y="175"/> + <position x="470" y="75"/> + <position x="445" y="75"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="110" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="22" typeName="REAL_TO_USINT" executionOrderId="0" height="40" width="115"> + <position x="495" y="245"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5"> + <position x="495" y="275"/> + <position x="470" y="275"/> + <position x="470" y="75"/> + <position x="445" y="75"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="115" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="23" typeName="REAL_TO_UINT" executionOrderId="0" height="40" width="110"> + <position x="495" y="295"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5"> + <position x="495" y="325"/> + <position x="470" y="325"/> + <position x="470" y="75"/> + <position x="445" y="75"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="110" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="24" typeName="REAL_TO_UDINT" executionOrderId="0" height="40" width="115"> + <position x="495" y="345"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5"> + <position x="495" y="375"/> + <position x="470" y="375"/> + <position x="470" y="75"/> + <position x="445" y="75"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="115" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="25" typeName="REAL_TO_ULINT" executionOrderId="0" height="40" width="115"> + <position x="495" y="395"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5"> + <position x="495" y="425"/> + <position x="470" y="425"/> + <position x="470" y="75"/> + <position x="445" y="75"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="115" y="30"/> </connectionPointOut> </variable> </outputVariables> diff -r e1cfb03e6582 -r d29d67e86532 tests/projects/svghmi_real/svghmi_0@svghmi/svghmi.svg --- a/tests/projects/svghmi_real/svghmi_0@svghmi/svghmi.svg Tue Oct 03 21:33:13 2023 +0200 +++ b/tests/projects/svghmi_real/svghmi_0@svghmi/svghmi.svg Wed Oct 04 16:24:00 2023 +0200 @@ -25,7 +25,7 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> + <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> @@ -59,14 +59,14 @@ inkscape:current-layer="hmi0" showgrid="false" units="px" - inkscape:zoom="0.64" - inkscape:cx="106.50649" - inkscape:cy="372.66049" - inkscape:window-width="1600" - inkscape:window-height="836" - inkscape:window-x="1600" + inkscape:zoom="0.90509668" + inkscape:cx="672.72033" + inkscape:cy="359.05499" + inkscape:window-width="1850" + inkscape:window-height="1036" + inkscape:window-x="0" inkscape:window-y="27" - inkscape:window-maximized="0" + inkscape:window-maximized="1" showguides="true" inkscape:guide-bbox="true" inkscape:snap-global="true" @@ -381,13 +381,13 @@ <g id="g4490" inkscape:label="HMI:Input:%.4f@/VAR0" - transform="translate(220,-220)"> + transform="translate(220,-480)"> <rect style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect4452" - width="165.96402" - height="78.240181" - x="207.3945" + width="525.04169" + height="78.240173" + x="147.3945" y="501.87585" rx="7" ry="7" @@ -395,18 +395,18 @@ <text id="text4456" y="551.66504" - x="289.30231" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="161.72418" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve" inkscape:label="value"><tspan y="551.66504" - x="289.30231" + x="161.72418" id="tspan4454" sodipodi:role="line">1234</tspan></text> <g id="g4464" inkscape:label="-1" - transform="translate(-414.79908,-17.189114)"> + transform="translate(-474.79908,-17.189114)"> <rect style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect4458" @@ -428,7 +428,7 @@ y="566.1087">-1</tspan></text> </g> <g - transform="translate(-534.79908,-17.189114)" + transform="translate(-594.79908,-17.189114)" inkscape:label="-10" id="g4472"> <rect @@ -452,7 +452,7 @@ sodipodi:role="line">-10</tspan></text> </g> <g - transform="translate(111.20092,-17.189114)" + transform="translate(411.20092,-17.189114)" inkscape:label="+1" id="g4480"> <rect @@ -478,7 +478,7 @@ <g id="g4488" inkscape:label="+10" - transform="translate(231.20092,-17.189114)"> + transform="translate(531.20092,-17.189114)"> <rect style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect4482" @@ -502,7 +502,7 @@ <g id="g154" inkscape:label="+0.1" - transform="translate(-8.7991028,-17.189114)"> + transform="translate(291.2009,-17.189114)"> <rect style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect148" @@ -524,7 +524,7 @@ y="566.1087">+.1</tspan></text> </g> <g - transform="translate(-294.79907,-17.189114)" + transform="translate(-354.79907,-17.189114)" inkscape:label="-0.1" id="g162"> <rect @@ -551,85 +551,69 @@ <g id="g170" inkscape:label="HMI:Display@/VAR0" - transform="translate(-400)"> + transform="translate(-380,60)"> <text id="text166" y="96.5625" - x="595.3125" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="550.9082" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve" inkscape:label="format"><tspan y="96.5625" - x="595.3125" + x="550.9082" id="tspan164" sodipodi:role="line">%.2f</tspan></text> </g> <g - inkscape:label="HMI:Display@/VAR1" - id="g3879" - transform="translate(-400,80)"> - <text - inkscape:label="format" - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - x="595.3125" - y="96.5625" - id="text3877"><tspan - sodipodi:role="line" - id="tspan3875" - x="595.3125" - y="96.5625">%d</tspan></text> - </g> - <g inkscape:label="HMI:Display@/VAR0" id="g3885" - transform="translate(-140)"> + transform="translate(20,60)"> <text inkscape:label="format" xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - x="595.3125" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="464.23828" y="96.5625" id="text3883"><tspan sodipodi:role="line" id="tspan3881" - x="595.3125" + x="464.23828" y="96.5625">temp: %.2f℃</tspan></text> </g> <g - transform="translate(220)" + transform="translate(460,60)" id="g3895" inkscape:label="HMI:Display@/VAR0"> <text id="text3893" y="96.5625" - x="595.3125" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="455.88867" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve" inkscape:label="format"><tspan y="96.5625" - x="595.3125" + x="455.88867" id="tspan3891" sodipodi:role="line">ratio: %.2f%%</tspan></text> </g> <g - transform="translate(-220,80)" + transform="translate(-240,120.96802)" id="g3901" inkscape:label="HMI:Display@/VAR1"> <text id="text3899" y="96.5625" - x="655.3125" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="507.86133" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve" inkscape:label="format"><tspan y="96.5625" - x="655.3125" + x="507.86133" id="tspan3897" sodipodi:role="line">padded: %'04d</tspan></text> </g> <g - transform="translate(-140,440)" + transform="translate(-18.895146,610.14757)" id="g3907" inkscape:label="HMI:Display@/VAR1@/VAR0"> <text @@ -642,6 +626,356 @@ y="96.5625" x="595.3125" id="tspan3903" - sodipodi:role="line">this way, %d and %.3f are together</tspan></text> + sodipodi:role="line">Multiple variable display: var1 %d and var0 %.3f</tspan></text> + </g> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="19.93924" + y="156.82739" + id="text3883-3"><tspan + sodipodi:role="line" + id="tspan3881-6" + x="19.93924" + y="156.82739">REAL</tspan></text> + <text + id="text631" + y="216.82739" + x="19.93924" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="format"><tspan + y="216.82739" + x="19.93924" + sodipodi:role="line" + id="tspan637">SINT</tspan></text> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="19.93924" + y="276.82739" + id="text643"><tspan + id="tspan641" + sodipodi:role="line" + x="19.93924" + y="276.82739">INT</tspan></text> + <text + id="text647" + y="336.82739" + x="19.93924" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="format"><tspan + y="336.82739" + x="19.93924" + sodipodi:role="line" + id="tspan645">DINT</tspan></text> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="19.93924" + y="396.82739" + id="text651"><tspan + id="tspan649" + sodipodi:role="line" + x="19.93924" + y="396.82739">LINT</tspan></text> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="19.93924" + y="456.82739" + id="text655"><tspan + id="tspan653" + sodipodi:role="line" + x="19.93924" + y="456.82739">USINT</tspan></text> + <text + id="text659" + y="516.82739" + x="19.93924" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="format"><tspan + y="516.82739" + x="19.93924" + sodipodi:role="line" + id="tspan657">UINT</tspan></text> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="19.93924" + y="576.82739" + id="text663"><tspan + id="tspan661" + sodipodi:role="line" + x="19.93924" + y="576.82739">UDINT</tspan></text> + <text + id="text667" + y="636.82739" + x="19.93924" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="format"><tspan + y="636.82739" + x="19.93924" + sodipodi:role="line" + id="tspan665">ULINT</tspan></text> + <g + transform="translate(-400,120.96802)" + id="g673" + inkscape:label="HMI:Display@/VAR1" + style=""> + <text + id="text671" + y="96.5625" + x="595.3125" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="format"><tspan + y="96.5625" + x="595.3125" + id="tspan669" + sodipodi:role="line">%d</tspan></text> + </g> + <g + inkscape:label="HMI:Display@/VAR2" + id="g679" + transform="translate(-400,180.96802)"> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="566.5332" + y="96.5625" + id="text677"><tspan + sodipodi:role="line" + id="tspan675" + x="566.5332" + y="96.5625">%d</tspan></text> + </g> + <g + transform="translate(-400,240.96802)" + id="g685" + inkscape:label="HMI:Display@/VAR3"> + <text + id="text683" + y="96.5625" + x="566.5332" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="format"><tspan + y="96.5625" + x="566.5332" + id="tspan681" + sodipodi:role="line">%d</tspan></text> + </g> + <g + inkscape:label="HMI:Display@/VAR4" + id="g691" + transform="translate(-400,300.96802)"> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="566.5332" + y="96.5625" + id="text689"><tspan + sodipodi:role="line" + id="tspan687" + x="566.5332" + y="96.5625">%d</tspan></text> + </g> + <g + transform="translate(-400,360.96802)" + id="g697" + inkscape:label="HMI:Display@/VAR5"> + <text + id="text695" + y="96.5625" + x="566.5332" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="format"><tspan + y="96.5625" + x="566.5332" + id="tspan693" + sodipodi:role="line">%d</tspan></text> + </g> + <g + inkscape:label="HMI:Display@/VAR6" + id="g703" + transform="translate(-400,420.96802)"> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="566.5332" + y="96.5625" + id="text701"><tspan + sodipodi:role="line" + id="tspan699" + x="566.5332" + y="96.5625">%d</tspan></text> + </g> + <g + transform="translate(-400,480.96802)" + id="g709" + inkscape:label="HMI:Display@/VAR7"> + <text + id="text707" + y="96.5625" + x="566.5332" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="format"><tspan + y="96.5625" + x="566.5332" + id="tspan705" + sodipodi:role="line">%d</tspan></text> + </g> + <g + inkscape:label="HMI:Display@/VAR8" + id="g3879" + transform="translate(-400,540.96802)"> + <text + inkscape:label="format" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="566.5332" + y="96.5625" + id="text3877"><tspan + sodipodi:role="line" + id="tspan3875" + x="566.5332" + y="96.5625">%d</tspan></text> + </g> + <g + transform="translate(480,24)" + inkscape:label="HMI:Input:%d@/VAR9" + id="g765"> + <rect + inkscape:label="edit" + ry="7" + rx="7" + y="501.87585" + x="281.3945" + height="78.240173" + width="236.67467" + id="rect711" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <text + inkscape:label="value" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="289.72418" + y="551.66504" + id="text715"><tspan + sodipodi:role="line" + id="tspan713" + x="289.72418" + y="551.66504">1234</tspan></text> + <g + transform="translate(-234.79908,-17.189114)" + inkscape:label="-1" + id="g723"> + <rect + ry="7" + rx="7" + y="513.73041" + x="392.38638" + height="88.909302" + width="99.578415" + id="rect717" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <text + id="text721" + y="566.1087" + x="441.65189" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="566.1087" + x="441.65189" + id="tspan719" + sodipodi:role="line">-1</tspan></text> + </g> + <g + id="g731" + inkscape:label="-10" + transform="translate(-354.79908,-17.189114)"> + <rect + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect725" + width="99.578415" + height="88.909302" + x="392.38638" + y="513.73041" + rx="7" + ry="7" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="441.65189" + y="566.1087" + id="text729"><tspan + sodipodi:role="line" + id="tspan727" + x="441.65189" + y="566.1087">-10</tspan></text> + </g> + <g + id="g739" + inkscape:label="+1" + transform="translate(145.20092,-17.189114)"> + <rect + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect733" + width="99.578415" + height="88.909302" + x="392.38638" + y="513.73041" + rx="7" + ry="7" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="441.65189" + y="566.1087" + id="text737"><tspan + sodipodi:role="line" + id="tspan735" + x="441.65189" + y="566.1087">+1</tspan></text> + </g> + <g + transform="translate(265.20092,-17.189114)" + inkscape:label="+10" + id="g747"> + <rect + ry="7" + rx="7" + y="513.73041" + x="392.38638" + height="88.909302" + width="99.578415" + id="rect741" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <text + id="text745" + y="566.1087" + x="441.65189" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="566.1087" + x="441.65189" + id="tspan743" + sodipodi:role="line">+10</tspan></text> + </g> </g> </svg>