Merge branch 'develop' into newfeature/paddle

This commit is contained in:
Alessio
2020-06-15 10:49:53 +02:00
208 changed files with 10050 additions and 3373 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<modules>
<block>
<id>1</id>
<localizedLabels>
<lang langKey="en">DiscesaCZ ENG</lang>
<lang langKey="it">DiscesaCZ ITA</lang>
</localizedLabels>
<type>MOVEMENT</type>
<section>HEATING</section>
<idParam>-1</idParam>
<showDelay>false</showDelay>
<showStatus>false</showStatus>
<priority>1</priority>
</block>
<block>
<id>2</id>
<localizedLabels>
<lang langKey="en">MembDiscesaZ ENG</lang>
<lang langKey="it">MembDiscesaZ ITA</lang>
</localizedLabels>
<type>MOVEMENT</type>
<section>HEATING</section>
<idParam>-1</idParam>
<showDelay>false</showDelay>
<showStatus>false</showStatus>
<priority>1</priority>
</block>
<block>
<id>3</id>
<localizedLabels>
<lang langKey="en">MembZ ENG</lang>
<lang langKey="it">MembZ ITA</lang>
</localizedLabels>
<type>MOVEMENT</type>
<section>HEATING</section>
<idParam>-1</idParam>
<showDelay>false</showDelay>
<showStatus>false</showStatus>
<priority>1</priority>
</block>
<block>
<id>4</id>
<localizedLabels>
<lang langKey="en">Mod_MembSalitaZ ENG</lang>
<lang langKey="it">Mod_MembSalitaZ ITA</lang>
</localizedLabels>
<type>MOVEMENT</type>
<section>HEATING</section>
<idParam>-1</idParam>
<showDelay>false</showDelay>
<showStatus>false</showStatus>
<priority>1</priority>
</block>
<block>
<id>6</id>
<localizedLabels>
<lang langKey="en">Mod_RiscaldoInf ENG</lang>
<lang langKey="it">Mod_RiscaldoInf ITA</lang>
</localizedLabels>
<type>HEATING</type>
<section>HEATING</section>
<idParam>-1</idParam>
<showDelay>false</showDelay>
<showStatus>false</showStatus>
<priority>1</priority>
</block>
<block>
<id>7</id>
<localizedLabels>
<lang langKey="en">Mod_RiscaldoSup ENG</lang>
<lang langKey="it">Mod_RiscaldoSup ITA</lang>
</localizedLabels>
<type>HEATING</type>
<section>HEATING</section>
<idParam>0</idParam>
<showDelay>false</showDelay>
<showStatus>false</showStatus>
<priority>2</priority>
</block>
<block>
<id>8</id>
<localizedLabels>
<lang langKey="en">Mod_PirometroRisc ENG</lang>
<lang langKey="it">Mod_PirometroRisc ITA</lang>
</localizedLabels>
<type>HEATING</type>
<section>HEATING</section>
<idParam>80</idParam>
<showDelay>true</showDelay>
<showStatus>true</showStatus>
<priority>3</priority>
</block>
<block>
<id>13</id>
<localizedLabels>
<lang langKey="en">Mod_Imbutitura ENG</lang>
<lang langKey="it">Mod_Imbutitura ITA</lang>
</localizedLabels>
<type>DRAWING</type>
<section>FORMING</section>
<idParam>99</idParam>
<showDelay>true</showDelay>
<showStatus>true</showStatus>
<priority>2</priority>
</block>
<block>
<id>16</id>
<localizedLabels>
<lang langKey="en">Mod_Raffreddamento ENG</lang>
<lang langKey="it">Mod_Raffreddamento ITA</lang>
</localizedLabels>
<type>COOLING</type>
<section>FORMING</section>
<idParam>-1</idParam>
<showDelay>true</showDelay>
<showStatus>false</showStatus>
<priority>2</priority>
</block>
<block>
<id>17</id>
<localizedLabels>
<lang langKey="en">Mod_PirometroRaffr ENG</lang>
<lang langKey="it">Mod_PirometroRaffr ITA</lang>
</localizedLabels>
<type>COOLING</type>
<section>FORMING</section>
<idParam>139</idParam>
<showDelay>true</showDelay>
<showStatus>true</showStatus>
<priority>3</priority>
</block>
<block>
<id>19</id>
<localizedLabels>
<lang langKey="en">Mod_Vuoto ENG</lang>
<lang langKey="it">Mod_Vuoto ITA</lang>
</localizedLabels>
<type>VACUUM</type>
<section>FORMING</section>
<idParam>-1</idParam>
<showDelay>true</showDelay>
<showStatus>false</showStatus>
<priority>4</priority>
</block>
<block>
<id>21</id>
<localizedLabels>
<lang langKey="en">Mod_VuotoDiretto ENG</lang>
<lang langKey="it">Mod_VuotoDiretto ITA</lang>
</localizedLabels>
<type>VACUUM</type>
<section>FORMING</section>
<idParam>-1</idParam>
<showDelay>true</showDelay>
<showStatus>false</showStatus>
<priority>5</priority>
</block>
<block>
<id>36</id>
<localizedLabels>
<lang langKey="en">Mod_EstrazioneZ ENG</lang>
<lang langKey="it">Mod_EstrazioneZ ITA</lang>
</localizedLabels>
<type>EXTRACTION</type>
<section>EXTRACTION</section>
<idParam>-1</idParam>
<showDelay>true</showDelay>
<showStatus>false</showStatus>
<priority>2</priority>
</block>
<block>
<id>42</id>
<localizedLabels>
<lang langKey="en">Mod_SalitaCZ ENG</lang>
<lang langKey="it">Mod_SalitaCZ ITA</lang>
</localizedLabels>
<type>MOVEMENT</type>
<section>EXTRACTION</section>
<idParam>-1</idParam>
<showDelay>false</showDelay>
<showStatus>false</showStatus>
<priority>1</priority>
</block>
</modules>
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="modules">
<xs:complexType>
<xs:sequence>
<!-- Heads -->
<xs:element name="block" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="id" type="xs:int"/>
<xs:element name="localizedLabels">
<xs:complexType>
<xs:sequence>
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="type" type="mblockType" />
<xs:element name="section" type="mblockSection" />
<xs:element name="idParam" type="xs:int" />
<xs:element name="showDelay" type="xs:boolean" />
<xs:element name="showStatus" type="xs:boolean" />
<xs:element name="priority" type="xs:int" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Language Type -->
<xs:complexType name="langType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="langKey" use="required" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- ModBlock Type -->
<xs:simpleType name="mblockType" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="HEATING" />
<xs:enumeration value="DRAWING" />
<xs:enumeration value="MOVEMENT"/>
<xs:enumeration value="VACUUM"/>
<xs:enumeration value="COOLING"/>
<xs:enumeration value="EXTRACTION"/>
</xs:restriction>
</xs:simpleType>
<!-- Section Type -->
<xs:simpleType name="mblockSection" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="HEATING" />
<xs:enumeration value="FORMING" />
<xs:enumeration value="EXTRACTION"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+981
View File
@@ -0,0 +1,981 @@
<?xml version="1.0" encoding="utf-8"?>
<riscaldo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="risk2007Validator.xsd" comPort="5" baudRate="19200" gainTc="0.5" addrTc="4D5">
<riflettore tipo="0" dimensionScale="20000" slimScale="2" offsetTc="0">
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="1" termocoppiaAssociata="1" canale="7" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="2" termocoppiaAssociata="1" canale="44" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="3" termocoppiaAssociata="1" canale="81" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="4" termocoppiaAssociata="1" canale="118" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="5" termocoppiaAssociata="1" canale="155" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="6" termocoppiaAssociata="1" canale="192" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="7" termocoppiaAssociata="1" canale="229" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="8" termocoppiaAssociata="1" canale="266" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="9" termocoppiaAssociata="1" canale="303" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="10" termocoppiaAssociata="1" canale="340" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="11" termocoppiaAssociata="1" canale="377" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="12" termocoppiaAssociata="1" canale="414" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="1" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="1" canale="1" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="14" termocoppiaAssociata="1" canale="8" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="15" termocoppiaAssociata="1" canale="45" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="16" termocoppiaAssociata="1" canale="82" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="17" termocoppiaAssociata="1" canale="119" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="18" termocoppiaAssociata="1" canale="156" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="19" termocoppiaAssociata="1" canale="193" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="20" termocoppiaAssociata="1" canale="230" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="21" termocoppiaAssociata="1" canale="267" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="22" termocoppiaAssociata="1" canale="304" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="23" termocoppiaAssociata="1" canale="341" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="24" termocoppiaAssociata="1" canale="378" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="1" idTermocoppia="0" idGruppo="25" termocoppiaAssociata="1" canale="415" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="26" termocoppiaAssociata="1" canale="9" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="27" termocoppiaAssociata="1" canale="46" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="28" termocoppiaAssociata="1" canale="83" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="29" termocoppiaAssociata="1" canale="120" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="30" termocoppiaAssociata="1" canale="157" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="31" termocoppiaAssociata="1" canale="194" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="32" termocoppiaAssociata="1" canale="231" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="33" termocoppiaAssociata="1" canale="268" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="34" termocoppiaAssociata="1" canale="305" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="35" termocoppiaAssociata="1" canale="342" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="36" termocoppiaAssociata="1" canale="379" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="37" termocoppiaAssociata="1" canale="416" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="3" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="1" canale="1" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="38" termocoppiaAssociata="1" canale="10" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="39" termocoppiaAssociata="1" canale="47" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="40" termocoppiaAssociata="1" canale="84" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="41" termocoppiaAssociata="1" canale="121" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="42" termocoppiaAssociata="1" canale="158" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="43" termocoppiaAssociata="1" canale="195" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="44" termocoppiaAssociata="1" canale="232" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="45" termocoppiaAssociata="1" canale="269" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="46" termocoppiaAssociata="1" canale="306" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="47" termocoppiaAssociata="1" canale="343" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="48" termocoppiaAssociata="1" canale="380" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="3" idTermocoppia="0" idGruppo="25" termocoppiaAssociata="1" canale="415" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="49" termocoppiaAssociata="1" canale="11" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="50" termocoppiaAssociata="1" canale="48" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="51" termocoppiaAssociata="1" canale="85" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="52" termocoppiaAssociata="1" canale="122" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="53" termocoppiaAssociata="1" canale="159" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="54" termocoppiaAssociata="1" canale="196" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="55" termocoppiaAssociata="1" canale="233" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="56" termocoppiaAssociata="1" canale="270" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="57" termocoppiaAssociata="1" canale="307" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="58" termocoppiaAssociata="1" canale="344" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="59" termocoppiaAssociata="1" canale="381" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="60" termocoppiaAssociata="1" canale="417" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="28" riga="5" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="1" canale="1" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="61" termocoppiaAssociata="1" canale="12" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="62" termocoppiaAssociata="1" canale="49" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="63" termocoppiaAssociata="1" canale="86" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="64" termocoppiaAssociata="1" canale="123" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="65" termocoppiaAssociata="1" canale="160" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="66" termocoppiaAssociata="1" canale="197" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="67" termocoppiaAssociata="1" canale="234" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="68" termocoppiaAssociata="1" canale="271" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="69" termocoppiaAssociata="1" canale="308" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="70" termocoppiaAssociata="1" canale="345" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="71" termocoppiaAssociata="1" canale="382" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="5" idTermocoppia="0" idGruppo="25" termocoppiaAssociata="1" canale="415" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="72" termocoppiaAssociata="1" canale="13" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="73" termocoppiaAssociata="1" canale="50" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="74" termocoppiaAssociata="1" canale="87" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="75" termocoppiaAssociata="1" canale="124" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="76" termocoppiaAssociata="1" canale="161" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="77" termocoppiaAssociata="1" canale="198" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="78" termocoppiaAssociata="1" canale="235" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="79" termocoppiaAssociata="1" canale="272" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="80" termocoppiaAssociata="1" canale="309" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="81" termocoppiaAssociata="1" canale="346" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="82" termocoppiaAssociata="1" canale="383" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="83" termocoppiaAssociata="1" canale="418" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="7" idTermocoppia="0" idGruppo="84" termocoppiaAssociata="1" canale="2" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="85" termocoppiaAssociata="1" canale="14" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="86" termocoppiaAssociata="1" canale="51" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="87" termocoppiaAssociata="1" canale="88" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="88" termocoppiaAssociata="1" canale="125" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="89" termocoppiaAssociata="1" canale="162" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="90" termocoppiaAssociata="1" canale="199" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="91" termocoppiaAssociata="1" canale="236" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="92" termocoppiaAssociata="1" canale="273" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="93" termocoppiaAssociata="1" canale="310" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="94" termocoppiaAssociata="1" canale="347" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="95" termocoppiaAssociata="1" canale="384" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="7" idTermocoppia="0" idGruppo="96" termocoppiaAssociata="1" canale="419" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="97" termocoppiaAssociata="1" canale="15" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="98" termocoppiaAssociata="1" canale="52" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="99" termocoppiaAssociata="1" canale="89" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="100" termocoppiaAssociata="1" canale="126" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="101" termocoppiaAssociata="1" canale="163" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="102" termocoppiaAssociata="1" canale="200" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="103" termocoppiaAssociata="1" canale="237" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="104" termocoppiaAssociata="1" canale="274" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="105" termocoppiaAssociata="1" canale="311" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="106" termocoppiaAssociata="1" canale="348" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="107" termocoppiaAssociata="1" canale="385" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="108" termocoppiaAssociata="1" canale="420" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="9" idTermocoppia="0" idGruppo="84" termocoppiaAssociata="1" canale="2" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="109" termocoppiaAssociata="1" canale="16" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="110" termocoppiaAssociata="1" canale="53" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="111" termocoppiaAssociata="1" canale="90" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="112" termocoppiaAssociata="1" canale="127" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="113" termocoppiaAssociata="1" canale="164" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="114" termocoppiaAssociata="1" canale="201" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="115" termocoppiaAssociata="1" canale="238" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="116" termocoppiaAssociata="1" canale="275" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="117" termocoppiaAssociata="1" canale="312" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="118" termocoppiaAssociata="1" canale="349" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="119" termocoppiaAssociata="1" canale="386" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="9" idTermocoppia="0" idGruppo="96" termocoppiaAssociata="1" canale="419" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="120" termocoppiaAssociata="1" canale="17" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="121" termocoppiaAssociata="1" canale="54" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="122" termocoppiaAssociata="1" canale="91" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="123" termocoppiaAssociata="1" canale="128" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="124" termocoppiaAssociata="1" canale="165" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="125" termocoppiaAssociata="1" canale="202" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="126" termocoppiaAssociata="1" canale="239" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="127" termocoppiaAssociata="1" canale="276" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="128" termocoppiaAssociata="1" canale="313" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="129" termocoppiaAssociata="1" canale="350" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="130" termocoppiaAssociata="1" canale="387" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="131" termocoppiaAssociata="1" canale="421" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="28" riga="11" idTermocoppia="0" idGruppo="84" termocoppiaAssociata="1" canale="2" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="132" termocoppiaAssociata="1" canale="18" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="133" termocoppiaAssociata="1" canale="55" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="134" termocoppiaAssociata="1" canale="92" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="135" termocoppiaAssociata="1" canale="129" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="136" termocoppiaAssociata="1" canale="166" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="137" termocoppiaAssociata="1" canale="203" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="138" termocoppiaAssociata="1" canale="240" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="139" termocoppiaAssociata="1" canale="277" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="140" termocoppiaAssociata="1" canale="314" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="141" termocoppiaAssociata="1" canale="351" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="142" termocoppiaAssociata="1" canale="388" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="11" idTermocoppia="0" idGruppo="96" termocoppiaAssociata="1" canale="419" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="143" termocoppiaAssociata="1" canale="19" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="144" termocoppiaAssociata="1" canale="56" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="145" termocoppiaAssociata="1" canale="93" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="146" termocoppiaAssociata="1" canale="130" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="147" termocoppiaAssociata="1" canale="167" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="148" termocoppiaAssociata="1" canale="204" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="149" termocoppiaAssociata="1" canale="241" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="150" termocoppiaAssociata="1" canale="278" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="151" termocoppiaAssociata="1" canale="315" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="152" termocoppiaAssociata="1" canale="352" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="153" termocoppiaAssociata="1" canale="389" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="154" termocoppiaAssociata="1" canale="422" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="13" idTermocoppia="0" idGruppo="155" termocoppiaAssociata="1" canale="3" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="156" termocoppiaAssociata="1" canale="20" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="157" termocoppiaAssociata="1" canale="57" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="158" termocoppiaAssociata="1" canale="94" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="159" termocoppiaAssociata="1" canale="131" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="160" termocoppiaAssociata="1" canale="168" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="161" termocoppiaAssociata="1" canale="205" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="162" termocoppiaAssociata="1" canale="242" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="163" termocoppiaAssociata="1" canale="279" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="164" termocoppiaAssociata="1" canale="316" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="165" termocoppiaAssociata="1" canale="353" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="166" termocoppiaAssociata="1" canale="390" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="13" idTermocoppia="0" idGruppo="167" termocoppiaAssociata="1" canale="423" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="168" termocoppiaAssociata="1" canale="21" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="169" termocoppiaAssociata="1" canale="58" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="170" termocoppiaAssociata="1" canale="95" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="171" termocoppiaAssociata="1" canale="132" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="172" termocoppiaAssociata="1" canale="169" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="173" termocoppiaAssociata="1" canale="206" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="174" termocoppiaAssociata="1" canale="243" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="175" termocoppiaAssociata="1" canale="280" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="176" termocoppiaAssociata="1" canale="317" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="177" termocoppiaAssociata="1" canale="354" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="178" termocoppiaAssociata="1" canale="391" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="179" termocoppiaAssociata="1" canale="424" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="15" idTermocoppia="0" idGruppo="155" termocoppiaAssociata="1" canale="3" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="180" termocoppiaAssociata="1" canale="22" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="181" termocoppiaAssociata="1" canale="59" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="182" termocoppiaAssociata="1" canale="96" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="183" termocoppiaAssociata="1" canale="133" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="184" termocoppiaAssociata="1" canale="170" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="185" termocoppiaAssociata="1" canale="207" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="186" termocoppiaAssociata="1" canale="244" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="187" termocoppiaAssociata="1" canale="281" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="188" termocoppiaAssociata="1" canale="318" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="189" termocoppiaAssociata="1" canale="355" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="190" termocoppiaAssociata="1" canale="392" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="15" idTermocoppia="0" idGruppo="167" termocoppiaAssociata="1" canale="423" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="191" termocoppiaAssociata="1" canale="23" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="192" termocoppiaAssociata="1" canale="60" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="193" termocoppiaAssociata="1" canale="97" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="194" termocoppiaAssociata="1" canale="134" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="195" termocoppiaAssociata="1" canale="171" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="196" termocoppiaAssociata="1" canale="208" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="197" termocoppiaAssociata="1" canale="245" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="198" termocoppiaAssociata="1" canale="282" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="199" termocoppiaAssociata="1" canale="319" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="200" termocoppiaAssociata="1" canale="356" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="201" termocoppiaAssociata="1" canale="393" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="202" termocoppiaAssociata="1" canale="425" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="28" riga="17" idTermocoppia="0" idGruppo="155" termocoppiaAssociata="1" canale="3" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="203" termocoppiaAssociata="1" canale="24" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="204" termocoppiaAssociata="1" canale="61" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="205" termocoppiaAssociata="1" canale="98" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="206" termocoppiaAssociata="1" canale="135" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="207" termocoppiaAssociata="1" canale="172" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="208" termocoppiaAssociata="1" canale="209" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="209" termocoppiaAssociata="1" canale="246" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="210" termocoppiaAssociata="1" canale="283" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="211" termocoppiaAssociata="1" canale="320" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="212" termocoppiaAssociata="1" canale="357" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="213" termocoppiaAssociata="1" canale="394" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="17" idTermocoppia="0" idGruppo="167" termocoppiaAssociata="1" canale="423" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="214" termocoppiaAssociata="1" canale="25" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="215" termocoppiaAssociata="1" canale="62" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="216" termocoppiaAssociata="1" canale="99" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="217" termocoppiaAssociata="1" canale="136" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="218" termocoppiaAssociata="1" canale="173" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="219" termocoppiaAssociata="1" canale="210" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="220" termocoppiaAssociata="1" canale="247" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="221" termocoppiaAssociata="1" canale="284" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="222" termocoppiaAssociata="1" canale="321" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="223" termocoppiaAssociata="1" canale="358" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="224" termocoppiaAssociata="1" canale="395" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="225" termocoppiaAssociata="1" canale="426" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="19" idTermocoppia="0" idGruppo="226" termocoppiaAssociata="1" canale="4" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="227" termocoppiaAssociata="1" canale="26" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="228" termocoppiaAssociata="1" canale="63" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="229" termocoppiaAssociata="1" canale="100" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="230" termocoppiaAssociata="1" canale="137" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="231" termocoppiaAssociata="1" canale="174" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="232" termocoppiaAssociata="1" canale="211" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="233" termocoppiaAssociata="1" canale="248" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="234" termocoppiaAssociata="1" canale="285" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="235" termocoppiaAssociata="1" canale="322" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="236" termocoppiaAssociata="1" canale="359" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="237" termocoppiaAssociata="1" canale="396" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="19" idTermocoppia="0" idGruppo="238" termocoppiaAssociata="1" canale="427" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="239" termocoppiaAssociata="1" canale="27" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="240" termocoppiaAssociata="1" canale="64" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="241" termocoppiaAssociata="1" canale="101" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="242" termocoppiaAssociata="1" canale="138" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="243" termocoppiaAssociata="1" canale="175" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="244" termocoppiaAssociata="1" canale="212" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="245" termocoppiaAssociata="1" canale="249" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="246" termocoppiaAssociata="1" canale="286" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="247" termocoppiaAssociata="1" canale="323" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="248" termocoppiaAssociata="1" canale="360" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="249" termocoppiaAssociata="1" canale="397" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="250" termocoppiaAssociata="1" canale="428" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="21" idTermocoppia="0" idGruppo="226" termocoppiaAssociata="1" canale="4" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="251" termocoppiaAssociata="1" canale="28" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="252" termocoppiaAssociata="1" canale="65" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="253" termocoppiaAssociata="1" canale="102" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="254" termocoppiaAssociata="1" canale="139" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="255" termocoppiaAssociata="1" canale="176" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="256" termocoppiaAssociata="1" canale="213" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="257" termocoppiaAssociata="1" canale="250" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="258" termocoppiaAssociata="1" canale="287" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="259" termocoppiaAssociata="1" canale="324" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="260" termocoppiaAssociata="1" canale="361" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="261" termocoppiaAssociata="1" canale="398" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="21" idTermocoppia="0" idGruppo="238" termocoppiaAssociata="1" canale="427" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="262" termocoppiaAssociata="1" canale="29" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="263" termocoppiaAssociata="1" canale="66" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="264" termocoppiaAssociata="1" canale="103" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="265" termocoppiaAssociata="1" canale="140" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="266" termocoppiaAssociata="1" canale="177" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="267" termocoppiaAssociata="1" canale="214" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="268" termocoppiaAssociata="1" canale="251" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="269" termocoppiaAssociata="1" canale="288" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="270" termocoppiaAssociata="1" canale="325" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="271" termocoppiaAssociata="1" canale="362" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="272" termocoppiaAssociata="1" canale="399" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="273" termocoppiaAssociata="1" canale="429" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="28" riga="23" idTermocoppia="0" idGruppo="226" termocoppiaAssociata="1" canale="4" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="274" termocoppiaAssociata="1" canale="30" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="275" termocoppiaAssociata="1" canale="67" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="276" termocoppiaAssociata="1" canale="104" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="277" termocoppiaAssociata="1" canale="141" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="278" termocoppiaAssociata="1" canale="178" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="279" termocoppiaAssociata="1" canale="215" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="280" termocoppiaAssociata="1" canale="252" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="281" termocoppiaAssociata="1" canale="289" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="282" termocoppiaAssociata="1" canale="326" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="283" termocoppiaAssociata="1" canale="363" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="284" termocoppiaAssociata="1" canale="400" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="23" idTermocoppia="0" idGruppo="238" termocoppiaAssociata="1" canale="427" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="285" termocoppiaAssociata="1" canale="31" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="286" termocoppiaAssociata="1" canale="68" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="287" termocoppiaAssociata="1" canale="105" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="288" termocoppiaAssociata="1" canale="142" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="289" termocoppiaAssociata="1" canale="179" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="290" termocoppiaAssociata="1" canale="216" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="291" termocoppiaAssociata="1" canale="253" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="292" termocoppiaAssociata="1" canale="290" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="293" termocoppiaAssociata="1" canale="327" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="294" termocoppiaAssociata="1" canale="364" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="295" termocoppiaAssociata="1" canale="401" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="296" termocoppiaAssociata="1" canale="430" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="25" idTermocoppia="0" idGruppo="297" termocoppiaAssociata="1" canale="5" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="298" termocoppiaAssociata="1" canale="32" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="299" termocoppiaAssociata="1" canale="69" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="300" termocoppiaAssociata="1" canale="106" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="301" termocoppiaAssociata="1" canale="143" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="302" termocoppiaAssociata="1" canale="180" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="303" termocoppiaAssociata="1" canale="217" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="304" termocoppiaAssociata="1" canale="254" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="305" termocoppiaAssociata="1" canale="291" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="306" termocoppiaAssociata="1" canale="328" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="307" termocoppiaAssociata="1" canale="365" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="308" termocoppiaAssociata="1" canale="402" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="25" idTermocoppia="0" idGruppo="309" termocoppiaAssociata="1" canale="431" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="310" termocoppiaAssociata="1" canale="33" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="311" termocoppiaAssociata="1" canale="70" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="312" termocoppiaAssociata="1" canale="107" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="313" termocoppiaAssociata="1" canale="144" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="314" termocoppiaAssociata="1" canale="181" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="315" termocoppiaAssociata="1" canale="218" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="316" termocoppiaAssociata="1" canale="255" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="317" termocoppiaAssociata="1" canale="292" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="318" termocoppiaAssociata="1" canale="329" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="319" termocoppiaAssociata="1" canale="366" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="320" termocoppiaAssociata="1" canale="403" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="321" termocoppiaAssociata="1" canale="432" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="27" idTermocoppia="0" idGruppo="297" termocoppiaAssociata="1" canale="5" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="322" termocoppiaAssociata="1" canale="34" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="323" termocoppiaAssociata="1" canale="71" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="324" termocoppiaAssociata="1" canale="108" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="325" termocoppiaAssociata="1" canale="145" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="326" termocoppiaAssociata="1" canale="182" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="327" termocoppiaAssociata="1" canale="219" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="328" termocoppiaAssociata="1" canale="256" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="329" termocoppiaAssociata="1" canale="293" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="330" termocoppiaAssociata="1" canale="330" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="331" termocoppiaAssociata="1" canale="367" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="332" termocoppiaAssociata="1" canale="404" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="27" idTermocoppia="0" idGruppo="309" termocoppiaAssociata="1" canale="431" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="333" termocoppiaAssociata="1" canale="35" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="334" termocoppiaAssociata="1" canale="72" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="335" termocoppiaAssociata="1" canale="109" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="336" termocoppiaAssociata="1" canale="146" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="337" termocoppiaAssociata="1" canale="183" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="338" termocoppiaAssociata="1" canale="220" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="339" termocoppiaAssociata="1" canale="257" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="340" termocoppiaAssociata="1" canale="294" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="341" termocoppiaAssociata="1" canale="331" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="342" termocoppiaAssociata="1" canale="368" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="343" termocoppiaAssociata="1" canale="405" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="344" termocoppiaAssociata="1" canale="433" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="28" riga="29" idTermocoppia="0" idGruppo="297" termocoppiaAssociata="1" canale="5" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="345" termocoppiaAssociata="1" canale="36" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="346" termocoppiaAssociata="1" canale="73" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="347" termocoppiaAssociata="1" canale="110" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="348" termocoppiaAssociata="1" canale="147" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="349" termocoppiaAssociata="1" canale="184" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="350" termocoppiaAssociata="1" canale="221" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="351" termocoppiaAssociata="1" canale="258" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="352" termocoppiaAssociata="1" canale="295" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="353" termocoppiaAssociata="1" canale="332" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="354" termocoppiaAssociata="1" canale="369" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="355" termocoppiaAssociata="1" canale="406" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="29" idTermocoppia="0" idGruppo="309" termocoppiaAssociata="1" canale="431" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="356" termocoppiaAssociata="1" canale="37" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="357" termocoppiaAssociata="1" canale="74" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="358" termocoppiaAssociata="1" canale="111" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="359" termocoppiaAssociata="1" canale="148" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="360" termocoppiaAssociata="1" canale="185" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="361" termocoppiaAssociata="1" canale="222" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="362" termocoppiaAssociata="1" canale="259" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="363" termocoppiaAssociata="1" canale="296" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="364" termocoppiaAssociata="1" canale="333" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="365" termocoppiaAssociata="1" canale="370" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="366" termocoppiaAssociata="1" canale="407" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="367" termocoppiaAssociata="1" canale="434" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="31" idTermocoppia="0" idGruppo="368" termocoppiaAssociata="1" canale="6" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="369" termocoppiaAssociata="1" canale="38" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="370" termocoppiaAssociata="1" canale="75" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="371" termocoppiaAssociata="1" canale="112" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="372" termocoppiaAssociata="1" canale="149" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="373" termocoppiaAssociata="1" canale="186" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="374" termocoppiaAssociata="1" canale="223" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="375" termocoppiaAssociata="1" canale="260" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="376" termocoppiaAssociata="1" canale="297" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="377" termocoppiaAssociata="1" canale="334" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="378" termocoppiaAssociata="1" canale="371" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="379" termocoppiaAssociata="1" canale="408" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="31" idTermocoppia="0" idGruppo="380" termocoppiaAssociata="1" canale="435" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="381" termocoppiaAssociata="1" canale="39" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="382" termocoppiaAssociata="1" canale="76" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="383" termocoppiaAssociata="1" canale="113" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="384" termocoppiaAssociata="1" canale="150" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="385" termocoppiaAssociata="1" canale="187" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="386" termocoppiaAssociata="1" canale="224" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="387" termocoppiaAssociata="1" canale="261" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="388" termocoppiaAssociata="1" canale="298" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="389" termocoppiaAssociata="1" canale="335" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="390" termocoppiaAssociata="1" canale="372" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="391" termocoppiaAssociata="1" canale="409" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="392" termocoppiaAssociata="1" canale="436" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="33" idTermocoppia="0" idGruppo="368" termocoppiaAssociata="1" canale="6" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="393" termocoppiaAssociata="1" canale="40" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="394" termocoppiaAssociata="1" canale="77" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="395" termocoppiaAssociata="1" canale="114" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="396" termocoppiaAssociata="1" canale="151" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="397" termocoppiaAssociata="1" canale="188" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="398" termocoppiaAssociata="1" canale="225" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="399" termocoppiaAssociata="1" canale="262" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="400" termocoppiaAssociata="1" canale="299" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="401" termocoppiaAssociata="1" canale="336" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="402" termocoppiaAssociata="1" canale="373" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="403" termocoppiaAssociata="1" canale="410" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="33" idTermocoppia="0" idGruppo="380" termocoppiaAssociata="1" canale="435" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="404" termocoppiaAssociata="1" canale="41" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="405" termocoppiaAssociata="1" canale="78" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="406" termocoppiaAssociata="1" canale="115" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="407" termocoppiaAssociata="1" canale="152" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="408" termocoppiaAssociata="1" canale="189" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="409" termocoppiaAssociata="1" canale="226" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="410" termocoppiaAssociata="1" canale="263" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="411" termocoppiaAssociata="1" canale="300" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="412" termocoppiaAssociata="1" canale="337" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="413" termocoppiaAssociata="1" canale="374" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="414" termocoppiaAssociata="1" canale="411" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="415" termocoppiaAssociata="1" canale="437" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="28" riga="35" idTermocoppia="0" idGruppo="368" termocoppiaAssociata="1" canale="6" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="416" termocoppiaAssociata="1" canale="42" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="417" termocoppiaAssociata="1" canale="79" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="418" termocoppiaAssociata="1" canale="116" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="419" termocoppiaAssociata="1" canale="153" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="420" termocoppiaAssociata="1" canale="190" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="421" termocoppiaAssociata="1" canale="227" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="422" termocoppiaAssociata="1" canale="264" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="423" termocoppiaAssociata="1" canale="301" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="424" termocoppiaAssociata="1" canale="338" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="425" termocoppiaAssociata="1" canale="375" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="426" termocoppiaAssociata="1" canale="412" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="35" idTermocoppia="0" idGruppo="380" termocoppiaAssociata="1" canale="435" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="427" termocoppiaAssociata="1" canale="43" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="428" termocoppiaAssociata="1" canale="80" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="429" termocoppiaAssociata="1" canale="117" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="430" termocoppiaAssociata="1" canale="154" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="431" termocoppiaAssociata="1" canale="191" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="432" termocoppiaAssociata="1" canale="228" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="433" termocoppiaAssociata="1" canale="265" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="434" termocoppiaAssociata="1" canale="302" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="435" termocoppiaAssociata="1" canale="339" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="436" termocoppiaAssociata="1" canale="376" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="437" termocoppiaAssociata="1" canale="413" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="438" termocoppiaAssociata="1" canale="438" fast="false" softDelay="100" sfasamImp="false" />
</riflettore>
<riflettore tipo="1" dimensionScale="20000" slimScale="2" offsetTc="0">
<resistenza tipo="28" riga="0" idTermocoppia="0" idGruppo="1" termocoppiaAssociata="9" canale="513" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="2" termocoppiaAssociata="9" canale="520" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="3" termocoppiaAssociata="9" canale="557" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="4" termocoppiaAssociata="9" canale="594" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="5" termocoppiaAssociata="9" canale="631" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="6" termocoppiaAssociata="9" canale="668" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="7" termocoppiaAssociata="9" canale="705" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="8" termocoppiaAssociata="9" canale="742" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="9" termocoppiaAssociata="9" canale="779" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="10" termocoppiaAssociata="9" canale="816" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="11" termocoppiaAssociata="9" canale="853" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="12" termocoppiaAssociata="9" canale="890" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="0" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="9" canale="927" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="14" termocoppiaAssociata="9" canale="521" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="15" termocoppiaAssociata="9" canale="558" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="16" termocoppiaAssociata="9" canale="595" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="17" termocoppiaAssociata="9" canale="632" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="18" termocoppiaAssociata="9" canale="669" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="19" termocoppiaAssociata="9" canale="706" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="20" termocoppiaAssociata="9" canale="743" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="21" termocoppiaAssociata="9" canale="780" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="22" termocoppiaAssociata="9" canale="817" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="23" termocoppiaAssociata="9" canale="854" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="24" termocoppiaAssociata="9" canale="891" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="25" termocoppiaAssociata="9" canale="928" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="2" idTermocoppia="0" idGruppo="1" termocoppiaAssociata="9" canale="513" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="26" termocoppiaAssociata="9" canale="522" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="27" termocoppiaAssociata="9" canale="559" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="28" termocoppiaAssociata="9" canale="596" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="29" termocoppiaAssociata="9" canale="633" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="30" termocoppiaAssociata="9" canale="670" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="31" termocoppiaAssociata="9" canale="707" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="32" termocoppiaAssociata="9" canale="744" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="33" termocoppiaAssociata="9" canale="781" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="34" termocoppiaAssociata="9" canale="818" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="35" termocoppiaAssociata="9" canale="855" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="36" termocoppiaAssociata="9" canale="892" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="2" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="9" canale="927" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="37" termocoppiaAssociata="9" canale="523" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="38" termocoppiaAssociata="9" canale="560" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="39" termocoppiaAssociata="9" canale="597" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="40" termocoppiaAssociata="9" canale="634" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="41" termocoppiaAssociata="9" canale="671" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="42" termocoppiaAssociata="9" canale="708" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="43" termocoppiaAssociata="9" canale="745" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="44" termocoppiaAssociata="9" canale="782" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="45" termocoppiaAssociata="9" canale="819" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="46" termocoppiaAssociata="9" canale="856" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="47" termocoppiaAssociata="9" canale="893" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="48" termocoppiaAssociata="9" canale="929" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="28" riga="4" idTermocoppia="0" idGruppo="1" termocoppiaAssociata="9" canale="513" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="49" termocoppiaAssociata="9" canale="524" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="50" termocoppiaAssociata="9" canale="561" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="51" termocoppiaAssociata="9" canale="598" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="52" termocoppiaAssociata="9" canale="635" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="53" termocoppiaAssociata="9" canale="672" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="54" termocoppiaAssociata="9" canale="709" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="55" termocoppiaAssociata="9" canale="746" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="56" termocoppiaAssociata="9" canale="783" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="57" termocoppiaAssociata="9" canale="820" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="58" termocoppiaAssociata="9" canale="857" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="59" termocoppiaAssociata="9" canale="894" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="4" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="9" canale="927" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="60" termocoppiaAssociata="9" canale="525" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="61" termocoppiaAssociata="9" canale="562" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="62" termocoppiaAssociata="9" canale="599" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="63" termocoppiaAssociata="9" canale="636" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="64" termocoppiaAssociata="9" canale="673" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="65" termocoppiaAssociata="9" canale="710" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="66" termocoppiaAssociata="9" canale="747" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="67" termocoppiaAssociata="9" canale="784" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="68" termocoppiaAssociata="9" canale="821" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="69" termocoppiaAssociata="9" canale="858" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="70" termocoppiaAssociata="9" canale="895" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="71" termocoppiaAssociata="9" canale="930" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="6" idTermocoppia="0" idGruppo="72" termocoppiaAssociata="9" canale="514" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="73" termocoppiaAssociata="9" canale="526" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="74" termocoppiaAssociata="9" canale="563" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="75" termocoppiaAssociata="9" canale="600" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="76" termocoppiaAssociata="9" canale="637" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="77" termocoppiaAssociata="9" canale="674" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="78" termocoppiaAssociata="9" canale="711" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="79" termocoppiaAssociata="9" canale="748" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="80" termocoppiaAssociata="9" canale="785" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="81" termocoppiaAssociata="9" canale="822" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="82" termocoppiaAssociata="9" canale="859" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="83" termocoppiaAssociata="9" canale="896" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="6" idTermocoppia="0" idGruppo="84" termocoppiaAssociata="9" canale="931" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="85" termocoppiaAssociata="9" canale="527" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="86" termocoppiaAssociata="9" canale="564" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="87" termocoppiaAssociata="9" canale="601" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="88" termocoppiaAssociata="9" canale="638" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="89" termocoppiaAssociata="9" canale="675" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="90" termocoppiaAssociata="9" canale="712" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="91" termocoppiaAssociata="9" canale="749" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="92" termocoppiaAssociata="9" canale="786" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="93" termocoppiaAssociata="9" canale="823" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="94" termocoppiaAssociata="9" canale="860" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="95" termocoppiaAssociata="9" canale="897" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="96" termocoppiaAssociata="9" canale="932" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="8" idTermocoppia="0" idGruppo="72" termocoppiaAssociata="9" canale="514" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="97" termocoppiaAssociata="9" canale="528" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="98" termocoppiaAssociata="9" canale="565" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="99" termocoppiaAssociata="9" canale="602" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="100" termocoppiaAssociata="9" canale="639" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="101" termocoppiaAssociata="9" canale="676" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="102" termocoppiaAssociata="9" canale="713" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="103" termocoppiaAssociata="9" canale="750" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="104" termocoppiaAssociata="9" canale="787" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="105" termocoppiaAssociata="9" canale="824" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="106" termocoppiaAssociata="9" canale="861" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="107" termocoppiaAssociata="9" canale="898" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="8" idTermocoppia="0" idGruppo="84" termocoppiaAssociata="9" canale="931" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="108" termocoppiaAssociata="9" canale="529" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="109" termocoppiaAssociata="9" canale="566" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="110" termocoppiaAssociata="9" canale="603" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="111" termocoppiaAssociata="9" canale="640" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="112" termocoppiaAssociata="9" canale="677" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="113" termocoppiaAssociata="9" canale="714" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="114" termocoppiaAssociata="9" canale="751" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="115" termocoppiaAssociata="9" canale="788" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="116" termocoppiaAssociata="9" canale="825" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="117" termocoppiaAssociata="9" canale="862" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="118" termocoppiaAssociata="9" canale="899" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="119" termocoppiaAssociata="9" canale="933" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="28" riga="10" idTermocoppia="0" idGruppo="72" termocoppiaAssociata="9" canale="514" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="120" termocoppiaAssociata="9" canale="530" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="121" termocoppiaAssociata="9" canale="567" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="122" termocoppiaAssociata="9" canale="604" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="123" termocoppiaAssociata="9" canale="641" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="124" termocoppiaAssociata="9" canale="678" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="125" termocoppiaAssociata="9" canale="715" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="126" termocoppiaAssociata="9" canale="752" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="127" termocoppiaAssociata="9" canale="789" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="128" termocoppiaAssociata="9" canale="826" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="129" termocoppiaAssociata="9" canale="863" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="130" termocoppiaAssociata="9" canale="900" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="10" idTermocoppia="0" idGruppo="84" termocoppiaAssociata="9" canale="931" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="131" termocoppiaAssociata="9" canale="531" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="132" termocoppiaAssociata="9" canale="568" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="133" termocoppiaAssociata="9" canale="605" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="134" termocoppiaAssociata="9" canale="642" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="135" termocoppiaAssociata="9" canale="679" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="136" termocoppiaAssociata="9" canale="716" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="137" termocoppiaAssociata="9" canale="753" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="138" termocoppiaAssociata="9" canale="790" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="139" termocoppiaAssociata="9" canale="827" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="140" termocoppiaAssociata="9" canale="864" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="141" termocoppiaAssociata="9" canale="901" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="142" termocoppiaAssociata="9" canale="934" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="12" idTermocoppia="0" idGruppo="143" termocoppiaAssociata="9" canale="515" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="144" termocoppiaAssociata="9" canale="532" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="145" termocoppiaAssociata="9" canale="569" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="146" termocoppiaAssociata="9" canale="606" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="147" termocoppiaAssociata="9" canale="643" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="148" termocoppiaAssociata="9" canale="680" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="149" termocoppiaAssociata="9" canale="717" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="150" termocoppiaAssociata="9" canale="754" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="151" termocoppiaAssociata="9" canale="791" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="152" termocoppiaAssociata="9" canale="828" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="153" termocoppiaAssociata="9" canale="865" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="154" termocoppiaAssociata="9" canale="902" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="12" idTermocoppia="0" idGruppo="155" termocoppiaAssociata="9" canale="935" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="156" termocoppiaAssociata="9" canale="533" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="157" termocoppiaAssociata="9" canale="570" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="158" termocoppiaAssociata="9" canale="607" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="159" termocoppiaAssociata="9" canale="644" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="160" termocoppiaAssociata="9" canale="681" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="161" termocoppiaAssociata="9" canale="718" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="162" termocoppiaAssociata="9" canale="755" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="163" termocoppiaAssociata="9" canale="792" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="164" termocoppiaAssociata="9" canale="829" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="165" termocoppiaAssociata="9" canale="866" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="166" termocoppiaAssociata="9" canale="903" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="167" termocoppiaAssociata="9" canale="936" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="14" idTermocoppia="0" idGruppo="143" termocoppiaAssociata="9" canale="515" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="168" termocoppiaAssociata="9" canale="534" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="169" termocoppiaAssociata="9" canale="571" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="170" termocoppiaAssociata="9" canale="608" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="171" termocoppiaAssociata="9" canale="645" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="172" termocoppiaAssociata="9" canale="682" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="173" termocoppiaAssociata="9" canale="719" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="174" termocoppiaAssociata="9" canale="756" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="175" termocoppiaAssociata="9" canale="793" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="176" termocoppiaAssociata="9" canale="830" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="177" termocoppiaAssociata="9" canale="867" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="178" termocoppiaAssociata="9" canale="904" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="14" idTermocoppia="0" idGruppo="155" termocoppiaAssociata="9" canale="935" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="179" termocoppiaAssociata="9" canale="535" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="180" termocoppiaAssociata="9" canale="572" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="181" termocoppiaAssociata="9" canale="609" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="182" termocoppiaAssociata="9" canale="646" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="183" termocoppiaAssociata="9" canale="683" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="184" termocoppiaAssociata="9" canale="720" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="185" termocoppiaAssociata="9" canale="757" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="186" termocoppiaAssociata="9" canale="794" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="187" termocoppiaAssociata="9" canale="831" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="188" termocoppiaAssociata="9" canale="868" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="189" termocoppiaAssociata="9" canale="905" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="190" termocoppiaAssociata="9" canale="937" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="28" riga="16" idTermocoppia="0" idGruppo="143" termocoppiaAssociata="9" canale="515" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="191" termocoppiaAssociata="9" canale="536" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="192" termocoppiaAssociata="9" canale="573" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="193" termocoppiaAssociata="9" canale="610" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="194" termocoppiaAssociata="9" canale="647" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="195" termocoppiaAssociata="9" canale="684" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="196" termocoppiaAssociata="9" canale="721" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="197" termocoppiaAssociata="9" canale="758" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="198" termocoppiaAssociata="9" canale="795" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="199" termocoppiaAssociata="9" canale="832" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="200" termocoppiaAssociata="9" canale="869" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="201" termocoppiaAssociata="9" canale="906" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="16" idTermocoppia="0" idGruppo="155" termocoppiaAssociata="9" canale="935" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="202" termocoppiaAssociata="9" canale="537" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="203" termocoppiaAssociata="9" canale="574" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="204" termocoppiaAssociata="9" canale="611" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="205" termocoppiaAssociata="9" canale="648" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="206" termocoppiaAssociata="9" canale="685" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="207" termocoppiaAssociata="9" canale="722" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="208" termocoppiaAssociata="9" canale="759" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="209" termocoppiaAssociata="9" canale="796" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="210" termocoppiaAssociata="9" canale="833" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="211" termocoppiaAssociata="9" canale="870" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="212" termocoppiaAssociata="9" canale="907" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="213" termocoppiaAssociata="9" canale="938" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="20" riga="18" idTermocoppia="0" idGruppo="214" termocoppiaAssociata="9" canale="516" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="215" termocoppiaAssociata="9" canale="538" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="216" termocoppiaAssociata="9" canale="575" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="217" termocoppiaAssociata="9" canale="612" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="218" termocoppiaAssociata="9" canale="649" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="219" termocoppiaAssociata="9" canale="686" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="220" termocoppiaAssociata="9" canale="723" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="221" termocoppiaAssociata="9" canale="760" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="222" termocoppiaAssociata="9" canale="797" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="223" termocoppiaAssociata="9" canale="834" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="224" termocoppiaAssociata="9" canale="871" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="225" termocoppiaAssociata="9" canale="908" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="20" riga="18" idTermocoppia="0" idGruppo="226" termocoppiaAssociata="9" canale="939" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="227" termocoppiaAssociata="9" canale="539" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="228" termocoppiaAssociata="9" canale="576" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="229" termocoppiaAssociata="9" canale="613" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="230" termocoppiaAssociata="9" canale="650" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="231" termocoppiaAssociata="9" canale="687" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="232" termocoppiaAssociata="9" canale="724" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="233" termocoppiaAssociata="9" canale="761" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="234" termocoppiaAssociata="9" canale="798" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="235" termocoppiaAssociata="9" canale="835" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="236" termocoppiaAssociata="9" canale="872" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="237" termocoppiaAssociata="9" canale="909" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="238" termocoppiaAssociata="9" canale="940" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="20" idTermocoppia="0" idGruppo="239" termocoppiaAssociata="9" canale="517" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="240" termocoppiaAssociata="9" canale="540" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="241" termocoppiaAssociata="9" canale="577" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="242" termocoppiaAssociata="9" canale="614" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="243" termocoppiaAssociata="9" canale="651" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="244" termocoppiaAssociata="9" canale="688" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="245" termocoppiaAssociata="9" canale="725" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="246" termocoppiaAssociata="9" canale="762" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="247" termocoppiaAssociata="9" canale="799" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="248" termocoppiaAssociata="9" canale="836" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="249" termocoppiaAssociata="9" canale="873" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="20" idTermocoppia="0" idGruppo="250" termocoppiaAssociata="9" canale="910" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="20" idTermocoppia="0" idGruppo="251" termocoppiaAssociata="9" canale="941" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="252" termocoppiaAssociata="9" canale="541" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="253" termocoppiaAssociata="9" canale="578" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="254" termocoppiaAssociata="9" canale="615" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="255" termocoppiaAssociata="9" canale="652" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="256" termocoppiaAssociata="9" canale="689" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="257" termocoppiaAssociata="9" canale="726" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="258" termocoppiaAssociata="9" canale="763" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="259" termocoppiaAssociata="9" canale="800" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="260" termocoppiaAssociata="9" canale="837" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="261" termocoppiaAssociata="9" canale="874" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="262" termocoppiaAssociata="9" canale="911" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="21" idTermocoppia="0" idGruppo="263" termocoppiaAssociata="9" canale="942" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="22" idTermocoppia="0" idGruppo="239" termocoppiaAssociata="9" canale="517" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="264" termocoppiaAssociata="9" canale="542" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="265" termocoppiaAssociata="9" canale="579" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="266" termocoppiaAssociata="9" canale="616" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="267" termocoppiaAssociata="9" canale="653" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="268" termocoppiaAssociata="9" canale="690" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="269" termocoppiaAssociata="9" canale="727" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="270" termocoppiaAssociata="9" canale="764" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="271" termocoppiaAssociata="9" canale="801" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="272" termocoppiaAssociata="9" canale="838" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="273" termocoppiaAssociata="9" canale="875" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="22" idTermocoppia="0" idGruppo="274" termocoppiaAssociata="9" canale="912" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="22" idTermocoppia="0" idGruppo="251" termocoppiaAssociata="9" canale="941" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="275" termocoppiaAssociata="9" canale="543" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="276" termocoppiaAssociata="9" canale="580" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="277" termocoppiaAssociata="9" canale="617" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="278" termocoppiaAssociata="9" canale="654" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="279" termocoppiaAssociata="9" canale="691" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="280" termocoppiaAssociata="9" canale="728" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="281" termocoppiaAssociata="9" canale="765" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="282" termocoppiaAssociata="9" canale="802" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="283" termocoppiaAssociata="9" canale="839" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="284" termocoppiaAssociata="9" canale="876" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="285" termocoppiaAssociata="9" canale="913" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="23" idTermocoppia="0" idGruppo="286" termocoppiaAssociata="9" canale="943" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="28" riga="24" idTermocoppia="0" idGruppo="239" termocoppiaAssociata="9" canale="517" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="287" termocoppiaAssociata="9" canale="544" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="288" termocoppiaAssociata="9" canale="581" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="289" termocoppiaAssociata="9" canale="618" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="290" termocoppiaAssociata="9" canale="655" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="291" termocoppiaAssociata="9" canale="692" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="292" termocoppiaAssociata="9" canale="729" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="293" termocoppiaAssociata="9" canale="766" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="294" termocoppiaAssociata="9" canale="803" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="295" termocoppiaAssociata="9" canale="840" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="296" termocoppiaAssociata="9" canale="877" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="24" idTermocoppia="0" idGruppo="297" termocoppiaAssociata="9" canale="914" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="24" idTermocoppia="0" idGruppo="251" termocoppiaAssociata="9" canale="941" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="298" termocoppiaAssociata="9" canale="545" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="299" termocoppiaAssociata="9" canale="582" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="300" termocoppiaAssociata="9" canale="619" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="301" termocoppiaAssociata="9" canale="656" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="302" termocoppiaAssociata="9" canale="693" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="303" termocoppiaAssociata="9" canale="730" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="304" termocoppiaAssociata="9" canale="767" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="305" termocoppiaAssociata="9" canale="804" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="306" termocoppiaAssociata="9" canale="841" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="307" termocoppiaAssociata="9" canale="878" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="308" termocoppiaAssociata="9" canale="915" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="25" idTermocoppia="0" idGruppo="309" termocoppiaAssociata="9" canale="944" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="26" idTermocoppia="0" idGruppo="310" termocoppiaAssociata="9" canale="518" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="311" termocoppiaAssociata="9" canale="546" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="312" termocoppiaAssociata="9" canale="583" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="313" termocoppiaAssociata="9" canale="620" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="314" termocoppiaAssociata="9" canale="657" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="315" termocoppiaAssociata="9" canale="694" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="316" termocoppiaAssociata="9" canale="731" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="317" termocoppiaAssociata="9" canale="768" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="318" termocoppiaAssociata="9" canale="805" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="319" termocoppiaAssociata="9" canale="842" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="320" termocoppiaAssociata="9" canale="879" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="26" idTermocoppia="0" idGruppo="321" termocoppiaAssociata="9" canale="916" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="26" idTermocoppia="0" idGruppo="322" termocoppiaAssociata="9" canale="945" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="323" termocoppiaAssociata="9" canale="547" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="324" termocoppiaAssociata="9" canale="584" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="325" termocoppiaAssociata="9" canale="621" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="326" termocoppiaAssociata="9" canale="658" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="327" termocoppiaAssociata="9" canale="695" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="328" termocoppiaAssociata="9" canale="732" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="329" termocoppiaAssociata="9" canale="769" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="330" termocoppiaAssociata="9" canale="806" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="331" termocoppiaAssociata="9" canale="843" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="332" termocoppiaAssociata="9" canale="880" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="333" termocoppiaAssociata="9" canale="917" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="27" idTermocoppia="0" idGruppo="334" termocoppiaAssociata="9" canale="946" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="28" idTermocoppia="0" idGruppo="310" termocoppiaAssociata="9" canale="518" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="335" termocoppiaAssociata="9" canale="548" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="336" termocoppiaAssociata="9" canale="585" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="337" termocoppiaAssociata="9" canale="622" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="338" termocoppiaAssociata="9" canale="659" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="339" termocoppiaAssociata="9" canale="696" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="340" termocoppiaAssociata="9" canale="733" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="341" termocoppiaAssociata="9" canale="770" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="342" termocoppiaAssociata="9" canale="807" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="343" termocoppiaAssociata="9" canale="844" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="344" termocoppiaAssociata="9" canale="881" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="28" idTermocoppia="0" idGruppo="345" termocoppiaAssociata="9" canale="918" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="28" idTermocoppia="0" idGruppo="322" termocoppiaAssociata="9" canale="945" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="346" termocoppiaAssociata="9" canale="549" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="347" termocoppiaAssociata="9" canale="586" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="348" termocoppiaAssociata="9" canale="623" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="349" termocoppiaAssociata="9" canale="660" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="350" termocoppiaAssociata="9" canale="697" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="351" termocoppiaAssociata="9" canale="734" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="352" termocoppiaAssociata="9" canale="771" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="353" termocoppiaAssociata="9" canale="808" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="354" termocoppiaAssociata="9" canale="845" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="355" termocoppiaAssociata="9" canale="882" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="356" termocoppiaAssociata="9" canale="919" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="29" idTermocoppia="0" idGruppo="357" termocoppiaAssociata="9" canale="947" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="28" riga="30" idTermocoppia="0" idGruppo="310" termocoppiaAssociata="9" canale="518" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="358" termocoppiaAssociata="9" canale="550" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="359" termocoppiaAssociata="9" canale="587" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="360" termocoppiaAssociata="9" canale="624" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="361" termocoppiaAssociata="9" canale="661" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="362" termocoppiaAssociata="9" canale="698" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="363" termocoppiaAssociata="9" canale="735" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="364" termocoppiaAssociata="9" canale="772" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="365" termocoppiaAssociata="9" canale="809" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="366" termocoppiaAssociata="9" canale="846" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="367" termocoppiaAssociata="9" canale="883" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="30" idTermocoppia="0" idGruppo="368" termocoppiaAssociata="9" canale="920" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="28" riga="30" idTermocoppia="0" idGruppo="322" termocoppiaAssociata="9" canale="945" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="369" termocoppiaAssociata="9" canale="551" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="370" termocoppiaAssociata="9" canale="588" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="371" termocoppiaAssociata="9" canale="625" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="372" termocoppiaAssociata="9" canale="662" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="373" termocoppiaAssociata="9" canale="699" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="374" termocoppiaAssociata="9" canale="736" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="375" termocoppiaAssociata="9" canale="773" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="376" termocoppiaAssociata="9" canale="810" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="377" termocoppiaAssociata="9" canale="847" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="378" termocoppiaAssociata="9" canale="884" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="379" termocoppiaAssociata="9" canale="921" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="31" idTermocoppia="0" idGruppo="380" termocoppiaAssociata="9" canale="948" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="32" idTermocoppia="0" idGruppo="381" termocoppiaAssociata="9" canale="519" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="382" termocoppiaAssociata="9" canale="552" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="383" termocoppiaAssociata="9" canale="589" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="384" termocoppiaAssociata="9" canale="626" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="385" termocoppiaAssociata="9" canale="663" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="386" termocoppiaAssociata="9" canale="700" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="387" termocoppiaAssociata="9" canale="737" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="388" termocoppiaAssociata="9" canale="774" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="389" termocoppiaAssociata="9" canale="811" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="390" termocoppiaAssociata="9" canale="848" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="391" termocoppiaAssociata="9" canale="885" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="32" idTermocoppia="0" idGruppo="392" termocoppiaAssociata="9" canale="922" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="28" riga="32" idTermocoppia="0" idGruppo="393" termocoppiaAssociata="9" canale="949" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="394" termocoppiaAssociata="9" canale="553" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="395" termocoppiaAssociata="9" canale="590" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="396" termocoppiaAssociata="9" canale="627" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="397" termocoppiaAssociata="9" canale="664" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="398" termocoppiaAssociata="9" canale="701" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="399" termocoppiaAssociata="9" canale="738" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="400" termocoppiaAssociata="9" canale="775" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="401" termocoppiaAssociata="9" canale="812" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="402" termocoppiaAssociata="9" canale="849" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="403" termocoppiaAssociata="9" canale="886" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="404" termocoppiaAssociata="9" canale="923" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="33" idTermocoppia="0" idGruppo="405" termocoppiaAssociata="9" canale="950" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="34" idTermocoppia="0" idGruppo="381" termocoppiaAssociata="9" canale="519" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="406" termocoppiaAssociata="9" canale="554" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="407" termocoppiaAssociata="9" canale="591" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="408" termocoppiaAssociata="9" canale="628" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="409" termocoppiaAssociata="9" canale="665" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="410" termocoppiaAssociata="9" canale="702" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="411" termocoppiaAssociata="9" canale="739" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="412" termocoppiaAssociata="9" canale="776" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="413" termocoppiaAssociata="9" canale="813" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="414" termocoppiaAssociata="9" canale="850" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="415" termocoppiaAssociata="9" canale="887" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="34" idTermocoppia="0" idGruppo="416" termocoppiaAssociata="9" canale="924" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="28" riga="34" idTermocoppia="0" idGruppo="393" termocoppiaAssociata="9" canale="949" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="417" termocoppiaAssociata="9" canale="555" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="418" termocoppiaAssociata="9" canale="592" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="419" termocoppiaAssociata="9" canale="629" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="420" termocoppiaAssociata="9" canale="666" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="421" termocoppiaAssociata="9" canale="703" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="422" termocoppiaAssociata="9" canale="740" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="423" termocoppiaAssociata="9" canale="777" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="424" termocoppiaAssociata="9" canale="814" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="425" termocoppiaAssociata="9" canale="851" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="426" termocoppiaAssociata="9" canale="888" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="427" termocoppiaAssociata="9" canale="925" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="35" idTermocoppia="0" idGruppo="428" termocoppiaAssociata="9" canale="951" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="28" riga="36" idTermocoppia="0" idGruppo="381" termocoppiaAssociata="9" canale="519" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="429" termocoppiaAssociata="9" canale="556" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="430" termocoppiaAssociata="9" canale="593" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="431" termocoppiaAssociata="9" canale="630" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="432" termocoppiaAssociata="9" canale="667" fast="false" softDelay="40" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="433" termocoppiaAssociata="9" canale="704" fast="false" softDelay="140" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="434" termocoppiaAssociata="9" canale="741" fast="false" softDelay="80" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="435" termocoppiaAssociata="9" canale="778" fast="false" softDelay="20" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="436" termocoppiaAssociata="9" canale="815" fast="false" softDelay="120" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="437" termocoppiaAssociata="9" canale="852" fast="false" softDelay="60" sfasamImp="false" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="438" termocoppiaAssociata="9" canale="889" fast="false" softDelay="0" sfasamImp="true" />
<resistenza tipo="18" riga="36" idTermocoppia="0" idGruppo="439" termocoppiaAssociata="9" canale="926" fast="false" softDelay="100" sfasamImp="false" />
<resistenza tipo="28" riga="36" idTermocoppia="0" idGruppo="393" termocoppiaAssociata="9" canale="949" fast="false" softDelay="80" sfasamImp="true" />
</riflettore>
<riferimenti corrente="110" potenza="500" modello="Quarzo 500" dimensione="2">1</riferimenti>
<riferimenti corrente="0" potenza="250" modello="Quarzo 250" dimensione="1">2</riferimenti>
<riferimenti corrente="138" potenza="600" modello="HTS 600" dimensione="2">3</riferimenti>
<riferimenti corrente="105" potenza="400" modello="HTS 400" dimensione="2">4</riferimenti>
<riferimenti corrente="76" potenza="300" modello="HTS 300" dimensione="1">5</riferimenti>
<riferimenti corrente="139" potenza="650" modello="FSR 650" dimensione="2">6</riferimenti>
<riferimenti corrente="105" potenza="400" modello="FSR 400" dimensione="2">7</riferimenti>
<riferimenti corrente="49" potenza="325" modello="FSR 325" dimensione="1">8</riferimenti>
<riferimenti corrente="168" potenza="400" modello="HTS 400 coppia" dimensione="2">9</riferimenti>
<riferimenti corrente="168" potenza="400" modello="FSR 400 coppia" dimensione="2">10</riferimenti>
<riferimenti corrente="135" potenza="250" modello="Quarzo 250 coppia" dimensione="2">11</riferimenti>
<riferimenti corrente="42" potenza="200" modello="HTS 200" dimensione="1">12</riferimenti>
<riferimenti corrente="105" potenza="200" modello="HTS 200 coppia" dimensione="1">13</riferimenti>
<riferimenti corrente="42" potenza="200" modello="FSR 200" dimensione="1">14</riferimenti>
<riferimenti corrente="104" potenza="200" modello="FSR 200 coppia" dimensione="1">15</riferimenti>
<riferimenti corrente="167" potenza="400" modello="Quarzo 400 coppia" dimensione="2">16</riferimenti>
<riferimenti corrente="104" potenza="400" modello="Quarzo 400" dimensione="1">17</riferimenti>
<riferimenti corrente="169" potenza="800" modello="Alogena 800" dimensione="2" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="15" softStart="2" filtCycle="2" PctMin="153">18</riferimenti>
<riferimenti corrente="232" potenza="800" modello="Alogena 800 coppia" dimensione="2" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">19</riferimenti>
<riferimenti corrente="78" potenza="300" modello="Alogena 300" dimensione="1" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">20</riferimenti>
<riferimenti corrente="141" potenza="300" modello="Alogena 300 coppia" dimensione="1" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">21</riferimenti>
<riferimenti corrente="141" potenza="700" modello="Quarzo 700" dimensione="2">22</riferimenti>
<riferimenti corrente="173" potenza="500" modello="Quarzo 500 coppia" dimensione="2">23</riferimenti>
<riferimenti corrente="205" potenza="300" modello="Alogena 300 gruppo da 5" dimensione="1" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">24</riferimenti>
<riferimenti corrente="177" potenza="400" modello="Quarzo 400 gruppo da 3" dimensione="2">25</riferimenti>
<riferimenti corrente="206" potenza="400" modello="Quarzo 400 gruppo da 4" dimensione="2">26</riferimenti>
<riferimenti corrente="201" potenza="400" modello="HTS 400 gruppo da 3" dimensione="2">27</riferimenti>
<riferimenti corrente="171" potenza="300" modello="Alogena 300 gruppo da 3" dimensione="1" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">28</riferimenti>
<riferimenti corrente="177" potenza="300" modello="Alogena 300 gruppo da 4" dimensione="1">29</riferimenti>
<riferimenti corrente="78" potenza="350" modello="Quarzo 350" dimensione="1">30</riferimenti>
<riferimenti corrente="100" potenza="700" modello="Quarzo 700 coppia" dimensione="2">31</riferimenti>
<riferimenti corrente="100" potenza="350" modello="Quarzo 350 coppia" dimensione="1">32</riferimenti>
<riferimenti corrente="100" potenza="250" modello="Quarzo 250 coppia" dimensione="1">33</riferimenti>
<riferimenti corrente="100" potenza="400" modello="HTS 400" dimensione="1">34</riferimenti>
<riferimenti corrente="213" potenza="500" modello="Quarzo 500 gruppo da 4" dimensione="2">35</riferimenti>
<riferimenti corrente="100" potenza="700" modello="Alogena 700" dimensione="2" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">36</riferimenti>
<riferimenti corrente="104" potenza="400" modello="Quarzo 400" dimensione="2">37</riferimenti>
<corrente valore="64" sens1="144" sens2="190" sens3="265" sens4="380" sens5="533" sens6="800" sens7="1187" sens8="1700">1</corrente>
<corrente valore="72" sens1="150" sens2="200" sens3="280" sens4="400" sens5="566" sens6="845" sens7="1250" sens8="1800">2</corrente>
<corrente valore="80" sens1="156" sens2="210" sens3="295" sens4="420" sens5="600" sens6="890" sens7="1312" sens8="1900">3</corrente>
<corrente valore="88" sens1="162" sens2="220" sens3="310" sens4="440" sens5="633" sens6="935" sens7="1375" sens8="2000">4</corrente>
<corrente valore="96" sens1="168" sens2="230" sens3="325" sens4="460" sens5="666" sens6="980" sens7="1437" sens8="2100">5</corrente>
<corrente valore="104" sens1="175" sens2="240" sens3="340" sens4="480" sens5="700" sens6="1025" sens7="1500" sens8="2200">6</corrente>
<corrente valore="112" sens1="181" sens2="250" sens3="355" sens4="500" sens5="733" sens6="1070" sens7="1562" sens8="2300">7</corrente>
<corrente valore="120" sens1="187" sens2="260" sens3="370" sens4="520" sens5="766" sens6="1115" sens7="1625" sens8="2400">8</corrente>
<corrente valore="128" sens1="193" sens2="270" sens3="385" sens4="540" sens5="800" sens6="1160" sens7="1687" sens8="2500">9</corrente>
<corrente valore="136" sens1="200" sens2="280" sens3="400" sens4="560" sens5="833" sens6="1205" sens7="1750" sens8="2600">10</corrente>
<corrente valore="144" sens1="206" sens2="290" sens3="415" sens4="580" sens5="866" sens6="1250" sens7="1812" sens8="2700">11</corrente>
<corrente valore="152" sens1="212" sens2="325" sens3="430" sens4="600" sens5="899" sens6="1295" sens7="1874" sens8="2800">12</corrente>
</riscaldo>
@@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2006 U (http://www.altova.com) by fg (nn) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:complexType name="resistenzaType">
<xs:attribute name="tipo" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Id tipo resistenza. Corrisponde al'id riferimento</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="riga" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Numero riga di appartenenza</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idTermocoppia" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Id della termocoppia installata. 0 = no termocoppia, altrimenti 1...</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="termocoppiaAssociata" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Id della termocoppia di riferimento</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idGruppo" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Id del gruppo di appartenenza</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="canale" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Numero del canale assoluto</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fast" type="xs:boolean" use="required">
<xs:annotation>
<xs:documentation>TRUE = duty cycle nuovo, altrimenti FALSE</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="leftConstraint" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Spazio da aggiungere prima della resistenza [pix]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="rightConstraint" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Spazio da aggiungere dopo la resistenza [pix]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sfasamImp" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Sfasamento per pilotaggio a impulsi:
possibilità di far lavorare alcuni canali sfasati rispetto agli altri, in modo da avere un assorbimento istantaneo il più basso possibile.
Default=FALSE
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="softDelay" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Ritardo per la partenza del soft-start ad impulsi per ogni singolo canale senza che questo abbia necessariamente finito la rampa
Default=0
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="riflettoreType">
<xs:sequence>
<xs:element name="resistenza" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="resistenzaType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="riferimentoType" mixed="true">
<xs:annotation>
<xs:documentation>Id tipo resistenza</xs:documentation>
</xs:annotation>
<xs:attribute name="corrente" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Corrente riferimento specifico per il tipo resistenza</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="potenza" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Potenza nominale della resistenza espressa in Watt</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="modello" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Marca e modello resistenza</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="dimensione" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>1=250mm 2=125mm</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="correnteMinima" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Soglia bassa sotto cui considerare l'assorbimento un allarme</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="tolleranzaCorrente" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Usata in collaudo. Esprime la semiampiezza dell'intorno di corrente di lettura entro cui l'assorbimento è considerato coretto</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="tolleranzaLettureON" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Usata in lavoro. Esprime il numero di letture non buone oltre cui considerare allarme</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="softStart" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Impostazioni softstart.
Bit0-4: definiscono la velocità del softstart. Il valore indica il numero di ripetizioni del singolo step della rampa. Più il valore è piccolo maggiore sarà la velocità del softstart. [default 3].
Bit5: se = 0 il softstart lavora con tabella fissa (solo 50hZ), se = 1 il softstart lavora con i valori WaveMax e IntervalWidth, anche con frequenze diverse da 50hZ.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="filtCycle" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Numero di letture dell'allarme oltre cui considerare vero l'allarme</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SoftLim" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Limite di percentuale per soft start
Default=100
Esempio: se pct target = 50% e SoftLim=35%, viene effettuato il soft start fino al 35% poi si salta alla pct target di 50%
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="PctMin" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Percentuale minima per duty a impulsi
Default=0
Esempio: se PctMin=40% per pct target da 0-39% viene usato il pilataggio a parzializzazione di fase (alogeno) da 40% a 100% viene usato il pilotaggio a impulsi (quarzo)
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="correnteType" mixed="true">
<xs:annotation>
<xs:documentation>Record di configurazione correnti per tipo resistenza</xs:documentation>
</xs:annotation>
<xs:attribute name="valore" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Boh!!!</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sens1" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Sensibilità [W]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sens2" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Sensibilità [W]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sens3" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Sensibilità [W]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sens4" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Sensibilità [W]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sens5" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Sensibilità [W]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sens6" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Sensibilità [W]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sens7" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Sensibilità [W]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sens8" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Sensibilità [W]</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="riscaldo">
<xs:annotation>
<xs:documentation>Configurazione sistema di riscaldo NEW_Risk2007</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="riflettore" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="riflettoreType">
<xs:attribute name="tipo" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>0 = riscaldo superiore, 1 = riscaldo inferiore, 2 = preriscaldo sup., 3 = preriscaldo inf.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="dimensionScale" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Fattore di scala per disegnare il riscaldo [TwinPix]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="slimScale" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Fattore di proporzione fra larghezza e altezza [larghezza/altezza]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="offsetTc" type="xs:integer">
<xs:annotation>
<xs:documentation>Offset di compensazione lettura termocoppia</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="rowOffset" type="xs:integer">
<xs:annotation>
<xs:documentation>Interasse fra le righe di resistenza [mm]</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="riferimenti" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="riferimentoType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="corrente" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:complexContent>
<xs:extension base="correnteType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="addrTc" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Indirizzo di memorizzazione termocoppie lato CPU: 4D5=R8TC8IO, D5=NEW_RISK2007</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="baudRate" type="xs:long" use="required">
<xs:annotation>
<xs:documentation>Velocità di trasmissione [baud] (9600,19200)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="comPort" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Porta seriale per comunicazione con CPU riscaldo</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="gainTc" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Fattore di moltiplicazione della lettura della termocoppia: 0.5=R8TC8IO, 0.6=NEW_RISK2007</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="softStartParam" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>TRUE = utilizzo la parametrizzazione per il softStart, FALSE = utilizzo il softstart cablato nel firmware delle res8CH</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="waveMax" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Numero di semionde massime in un secondo (50hZ = 120, 60hZ = 140)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="intervalWidth" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Durata in tempo di 1/100 di semionda [microsec] (50hZ = 95, 60hZ = 82)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="comTimeout" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Durata timeout per spegnimento riscaldo in caso di mancanza di comunicazione con la CPU. Trascorso il timout serve rimandare un comando di ON alla CPU per la riaccensione del riscaldo. Indicando 0 la CPU ignora lo spegnimento automatico su assenza di comunicazione. [sec]</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="intervalWidthQuarzo" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Durata in tempo di 1/100 di semionda [microsec] per lampade al quarzo</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="regFramePeriodQuarzo" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>Frequenza di invio dei frame di regolazione dalla cpu per lampade al quarzo</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
+28
View File
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Config
{
/// <summary>
/// Live data for Thermo Active
/// </summary>
public class LiveData
{
/// <summary>
/// Current loaded recipe
/// </summary>
public string RecipeName = "current.json";
/// <summary>
/// Dictionary of all parameters and values
/// </summary>
public Dictionary<string, double> RecipeParameters;
/// <summary>
/// Dictionary of all channels and relative setpoints
/// </summary>
public Dictionary<int, int> ChannelSetpoints;
}
}
@@ -0,0 +1 @@

+13 -1
View File
@@ -32,7 +32,8 @@ namespace Thermo.Active.Config
public static List<NcSoftKeysModel> NcSoftKeysConfig;
public static List<AlarmsConfigModel> InitialAlarmsConfig;
public static List<HeadsConfigModel> HeadsConfig;
public static List<RecipeConfigModel> RecipeConfig;
public static CmsConnectConfigModel CmsConnectConfig;
public static AreasConfigModel ProductionConfig;
@@ -52,5 +53,16 @@ namespace Thermo.Active.Config
public static List<string> MacrosConfig;
public static string CMSMainProgramContent;
// Thermo
public static List<RecipeConfigModel> RecipeConfig;
public static List<ModBlockConfigModel> ModBlockConfig;
public static List<RiskResistModel> RiskResistConfig;
public static List<RiskChannelModel> RiskChannelConfig;
public static List<RiskBoardModel> RiskBoardConfig;
public static LiveData RecipeLiveData;
}
}
+383 -33
View File
@@ -13,14 +13,15 @@ using System.Xml.Linq;
using System.Xml.Schema;
using System.Xml.Serialization;
using static Thermo.Active.Config.ServerConfig;
using static Thermo.Active.Model.Constants;
using static Thermo.Active.Model.Constants;
using static Thermo.Active.Utils.SupportFunctions;
using Newtonsoft.Json;
namespace Thermo.Active.Config
{
public static class ServerConfigController
{
private static string actualFileName;
private static string actualFileName;
public static void ReadStartupConfig()
{
@@ -34,15 +35,17 @@ namespace Thermo.Active.Config
ReadAlarmsConfig();
ReadHeadsConfig();
ReadRecipeConfig();
ReadModBlockConfig();
ReadRiskConfig();
// ReadCMSConnectConfig();
ReadMacros();
ReadScadaFile();
//ReadMainProgram();
ReadLiveData();
}
catch (XmlException ex)
{
ExceptionManager.ManageError(ERROR_LEVEL.FATAL,
"Error while reading file: " + ex.SourceUri +
"Error while reading file: " + ex.SourceUri +
"\n Error: " + ex.Message,
true
);
@@ -51,7 +54,7 @@ namespace Thermo.Active.Config
{
var message = ex.Message;
if (ex.InnerException != null)
message += "\n"+ex.InnerException.Message;
message += "\n" + ex.InnerException.Message;
ExceptionManager.ManageError(ERROR_LEVEL.FATAL, message, true);
}
}
@@ -60,7 +63,7 @@ namespace Thermo.Active.Config
{
// Create new instance
XmlSchemaSet readerSettings = new XmlSchemaSet();
// Add Schema from Assembly
Assembly myAssembly = Assembly.GetExecutingAssembly();
using (Stream schemaStream = myAssembly.GetManifestResourceStream(configSchemaFilePath))
@@ -70,11 +73,11 @@ namespace Thermo.Active.Config
readerSettings.Add(null, schemaReader);
}
}
actualFileName = configFilePath;
// Open file reader
XDocument xmlConfigFile = XDocument.Load((!isFullPath ? BASE_PATH + "\\": "") + configFilePath);
XDocument xmlConfigFile = XDocument.Load((!isFullPath ? BASE_PATH + "\\" : "") + configFilePath);
// Validate file
xmlConfigFile.Validate(readerSettings, ValidationHandler);
@@ -130,13 +133,13 @@ namespace Thermo.Active.Config
break;
case AREAS.SCADA_KEY:
SetAreaValue(ref ScadaConfig, element);
SetAreaValue(ref ScadaConfig, element);
break;
case AREAS.JOBEDITOR_KEY:
SetAreaValue(ref JobEditorConfig, element);
break;
case AREAS.USERS_KEY:
SetAreaValue(ref UsersConfig, element);
break;
@@ -158,20 +161,20 @@ namespace Thermo.Active.Config
private static void ValidationHandler(object sender, ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Warning)
{
{
ExceptionManager.ManageError(ERROR_LEVEL.WARNING, e.Message, true);
}
}
else if (e.Severity == XmlSeverityType.Error)
{
{
ExceptionManager.ManageError(ERROR_LEVEL.FATAL,
// "Error while reading file: " + e.Exception.SourceUri +
"Error while reading XML file \"" + actualFileName + "\" \n\n" + e.Message,
true
);
}
}
}
public static bool CheckAreaStatus(string areaName)
public static bool CheckAreaStatus(string areaName)
{ // Get Area status ( enabled field) by name
switch (areaName)
{
@@ -206,7 +209,7 @@ namespace Thermo.Active.Config
}
private static void ReadScadaFile()
{
{
DirectoryInfo d = new DirectoryInfo(SCADA_DIRECTORY);
FileInfo[] files = d.GetFiles("*.xml");
@@ -218,7 +221,7 @@ namespace Thermo.Active.Config
StreamReader sr = new StreamReader(SCADA_DIRECTORY + file.Name);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ScadaSchemaModel));
ScadaSchemaModel schema = xmlSerializer.Deserialize(sr) as ScadaSchemaModel;
ScadaSchemaModel schema = xmlSerializer.Deserialize(sr) as ScadaSchemaModel;
// Setup incremental ids
@@ -231,7 +234,8 @@ namespace Thermo.Active.Config
{
Id = i++,
Buttons = x.Buttons.Select(y => { y.Id = i++; return y; }).ToArray(),
Images = x.Images.Select(y => {
Images = x.Images.Select(y =>
{
y.Id = i++;
y.Name = GetImageBase64String(SCADA_DIRECTORY + name, y.Name);
return y;
@@ -277,7 +281,7 @@ namespace Thermo.Active.Config
InstallationDate = x.Element("installationDate").Value,
MgiOption = Convert.ToBoolean(x.Element("mgiOption").Value),
SiemensKeyboardOption = Convert.ToBoolean(x.Element("siemensKeyboardOption").Value),
MachineNumberHasLetters = Convert.ToBoolean(x.Element("machineNumberHasLetters").Value)
MachineNumberHasLetters = Convert.ToBoolean(x.Element("machineNumberHasLetters").Value)
}).FirstOrDefault();
// Read Prod Software Config with LINQ
@@ -286,9 +290,9 @@ namespace Thermo.Active.Config
.Descendants(PROD_SFT_CONFIG_KEY)
.Select(x => new SoftwareProdConfigModel()
{
Enabled = Convert.ToBoolean(x.Element("enabled").Value),
Enabled = Convert.ToBoolean(x.Element("enabled").Value),
Path = x.Element("path").Value
}).FirstOrDefault();
}).FirstOrDefault();
// Read server config with LINQ and save into static config
ServerStartupConfig = xmlConfigFile
@@ -302,7 +306,7 @@ namespace Thermo.Active.Config
EnableDirectoryBrowsing = Convert.ToBoolean(x.Element("enableDirectoryBrowsing").Value),
DatabaseAddress = x.Element("databaseAddress").Value,
AutoOpenCmsClient = Convert.ToBoolean(x.Element("autoOpenCmsClient").Value),
TextEditorPath = x.Element("textEditorPath").Value,
TextEditorPath = x.Element("textEditorPath").Value,
MTCFolderPath = x.Element("MTCFolderPath").Value,
MTCApplicationName = x.Element("MTCApplicationName").Value,
MaxAlarmsRows = Convert.ToInt32(x.Element("maxAlarmsRows").Value),
@@ -345,7 +349,7 @@ namespace Thermo.Active.Config
XDocument xmlConfigFile = GetXmlHandlerWithValidator(MAINTENANCES_CONFIG_SCHEMA_PATH, MAINTENANCES_CONFIG_PATH);
ReadAssistanceConfig();
MaintenancesConfig = xmlConfigFile
.Descendants("maintenances")
.Elements("maintenance")
@@ -374,11 +378,11 @@ namespace Thermo.Active.Config
XDocument xmlConfigFile = GetXmlHandlerWithValidator(MAINTENANCES_CONFIG_SCHEMA_PATH, MAINTENANCES_CONFIG_PATH);
ReadAssistanceConfigFromXml(
xmlConfigFile.Root.Descendants("cmsContacts").FirstOrDefault(),
out CmsContactConfig,
out CmsAuxContact1,
out CmsContactConfig,
out CmsAuxContact1,
out CmsAuxContact2
);
xmlConfigFile = GetXmlHandlerWithValidator(MAINTENANCES_CONFIG_SCHEMA_PATH, MAINTENANCES_CONFIG_PATH);
ReadAssistanceConfigFromXml(
xmlConfigFile.Root.Descendants("scmContacts").FirstOrDefault(),
@@ -545,7 +549,7 @@ namespace Thermo.Active.Config
{
AlarmId = Convert.ToInt32(x.Element("alarmId").Value),
PlcId = Convert.ToInt32(x.Element("plcId").Value),
RestoreIsActive = Convert.ToBoolean(x.Element("restoreIsActive").Value)
RestoreIsActive = Convert.ToBoolean(x.Element("restoreIsActive").Value)
})
.ToList();
}
@@ -572,19 +576,21 @@ namespace Thermo.Active.Config
})
.ToList();
}
/// <summary>
/// Recipe Config setup from file
/// </summary>
private static void ReadRecipeConfig()
{
XDocument xmlConfigFile = GetXmlHandlerWithValidator(RECIPE_CONFIG_SCHEMA_PATH, RECIPE_CONFIG_PATH);
// Read head config from XML file
// Read Recipe config from XML file
RecipeConfig = xmlConfigFile
.Root
.Elements()
.Select(x => new RecipeConfigModel()
{
Id = Convert.ToInt16(x.Element("id").Value),
Category = GetTActCategory(x.Element("category").Value),
Category = GetTActParamType(x.Element("category").Value),
SubCategory_1 = x.Element("subCategory_1").Value,
SubCategory_2 = x.Element("subCategory_2").Value,
Name = x.Element("name").Value,
@@ -593,6 +599,178 @@ namespace Thermo.Active.Config
})
.ToList();
}
/// <summary>
/// Module config setup from file
/// </summary>
private static void ReadModBlockConfig()
{
XDocument xmlConfigFile = GetXmlHandlerWithValidator(MODBLOCK_CONFIG_SCHEMA_PATH, MODBLOCK_CONFIG_PATH);
// Read head config from XML file
ModBlockConfig = xmlConfigFile
.Root
.Elements()
.Select(x => new ModBlockConfigModel()
{
Id = Convert.ToInt16(x.Element("id").Value),
LocalizedLabels = x.Element("localizedLabels").Elements().ToDictionary(
y => y.Attribute("langKey").Value, y => y.Value
),
Type = GetTActMB_Type(x.Element("type").Value),
Section = GetTActMB_Section(x.Element("section").Value),
IdParam = Convert.ToInt16(x.Element("idParam").Value),
ShowDelay = Convert.ToBoolean(x.Element("showDelay").Value),
Priority = Convert.ToInt16(x.Element("priority").Value)
})
.ToList();
}
/// <summary>
/// Warmers config setup from file
/// </summary>
private static void ReadRiskConfig()
{
XDocument xmlConfigFile = GetXmlHandlerWithValidator(RISK_CONFIG_SCHEMA_PATH, RISK_CONFIG_PATH);
int i = 0;
List<RiskRiflettore> Riflettori = new List<RiskRiflettore>();
List<RiskResistenza> Resistenze = new List<RiskResistenza>();
List<RiskRiferimenti> Riferimenti = new List<RiskRiferimenti>();
// carico gli oggetti "nativi"
Riferimenti = xmlConfigFile
.Root
.Elements("riferimenti")
.Select(x => new RiskRiferimenti()
{
Id = Convert.ToInt16(x.Value),
Dimensione = Convert.ToInt16(x.Attribute("dimensione").Value),
Potenza = Convert.ToInt16(x.Attribute("potenza").Value),
Modello = x.Attribute("modello").Value
})
.ToList();
Riflettori = xmlConfigFile
.Root
.Elements("riflettore")
.Select(x => new RiskRiflettore()
{
Tipo = Convert.ToInt16(x.Attribute("tipo").Value),
Resistenze = x.Elements("resistenza")
.Select(y => new RiskResistenza()
{
Canale = Convert.ToInt16(y.Attribute("canale").Value),
Riga = Convert.ToInt16(y.Attribute("riga").Value),
Tipo = Convert.ToInt16(y.Attribute("tipo").Value)
}
)
.ToList()
})
.ToList();
// conversione da modelli RISK a modello Thermo...
int numCol = -1;
int ResistId = 0;
int oldRow = 0;
int currIdBoard = 0;
RiskBoardConfig = new List<RiskBoardModel>();
RiskResistConfig = new List<RiskResistModel>();
RiskChannelConfig = new List<RiskChannelModel>();
// inizializzo le 64 schede a 0 canali...
for (int idxBoard = 0; idxBoard < 64; idxBoard++)
{
RiskBoardConfig.Add(new RiskBoardModel()
{
IdBoard = idxBoard,
NumChannels = 0
});
}
// ciclo x calcolare i canali
foreach (var riflettore in Riflettori)
{
// ciclo sulle resistenze
foreach (var resistenza in riflettore.Resistenze)
{
// cerco la scheda dato il canale... 16 ch x ogni scheda
currIdBoard = (resistenza.Canale - 1) / 16;
// cerco se ho già la scheda
var boardFound = RiskBoardConfig.Find(item => item.IdBoard == currIdBoard);
if (boardFound == null)
{
RiskBoardConfig.Add(new RiskBoardModel()
{
IdBoard = currIdBoard,
NumChannels = 1
});
}
else
{
boardFound.NumChannels += 1;
}
// cerco se ho già il canale
var chanFound = RiskChannelConfig.Find(item => item.IdChannel == resistenza.Canale);
if (chanFound == null)
{
// cerco il TIPO...
var riferimento = Riferimenti.Find(x => x.Id == resistenza.Tipo);
if (riferimento != null)
{
RiskChannelConfig.Add(new RiskChannelModel()
{
IdChannel = resistenza.Canale,
IdReflector = riflettore.Tipo,
SetpointRecipe = 0,
SetpointThermo = 0,
MaxPower = riferimento.Potenza,
NumResist = 1,
CalcIchMin=riferimento.Modello.Contains("Quarzo")
});
}
else
{
chanFound.NumResist += 1;
}
}
}
}
// ciclo sui riflettori x recuperare le resistenze...
foreach (var riflettore in Riflettori)
{
// ciclo sulle resistente
foreach (var resistenza in riflettore.Resistenze)
{
if (oldRow != resistenza.Riga)
{
numCol = 0;
oldRow = resistenza.Riga;
}
else
{
numCol++;
}
// cerco il TIPO...
var riferimento = Riferimenti.Find(x => x.Id == resistenza.Tipo);
RiskResistConfig.Add(new RiskResistModel()
{
Id = ResistId++,
Row = resistenza.Riga,
Column = numCol,
IdChannel = resistenza.Canale,
Dimension = riferimento.Dimensione
}); ;
}
}
}
private static void ReadCMSConnectConfig()
{
@@ -624,14 +802,14 @@ namespace Thermo.Active.Config
Token = x.Element("token").Value
})
.FirstOrDefault();
if (DecodeCMSConnectGatewayLogin(tempGatewayConfigModel.Token, out _tempUSR, out _tempPSW))
{
tempGatewayConfigModel.Username = _tempUSR;
tempGatewayConfigModel.Password = _tempPSW;
}
else
throw new Exception("Error while reading \""+ CMS_CONNECT_CONFIG_PATH + "\": Gateway Token not valid");
throw new Exception("Error while reading \"" + CMS_CONNECT_CONFIG_PATH + "\": Gateway Token not valid");
CmsConnectConfig.Gateway = tempGatewayConfigModel;
}
@@ -648,15 +826,187 @@ namespace Thermo.Active.Config
.Select(x => x.Value)
.ToList();
}
/// <summary>
/// Try to load live data from json persistence file
/// </summary>
public static bool ReadLiveData()
{
bool answ = false;
if (File.Exists(LIVE_RECIPE_PATH))
{
// load all text data
var rawData = File.ReadAllText(LIVE_RECIPE_PATH);
try
{
// deserialize to object
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
}
catch
{ }
answ = true;
}
else
{
// reload from template...
var rawData = File.ReadAllText(RECIPE_TEMPLATE_PATH);
try
{
// deserialize to object
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
}
catch
{ }
answ = true;
}
// rendo se fatto
return answ;
}
/// <summary>
/// Try to load selected recipe to live data (memory and json persistence file)
/// </summary>
public static bool LoadRecipe(string filePath)
{
bool answ = false;
// check file extension
string fileName = Path.GetFileName(filePath);
if (!fileName.EndsWith(".json"))
{
fileName += ".json";
filePath += ".json";
}
// check filePath...
if (!filePath.Contains(RECIPE_DIRECTORY) && filePath != RECIPE_TEMPLATE_PATH)
{
// aggiungo base path!
filePath = RECIPE_DIRECTORY + filePath;
}
if (File.Exists(filePath))
{
answ = true;
// load all text data
var rawData = File.ReadAllText(filePath);
try
{
// deserialize to object
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
}
catch
{ }
// update current live data!
SaveRecipeCurrent();
}
// rendo se fatto
return answ;
}
/// <summary>
/// Try to load template recipe
/// </summary>
public static bool LoadTemplate()
{
bool answ = false;
// check filePath...
if (File.Exists(RECIPE_TEMPLATE_PATH))
{
answ = true;
// load all text data
var rawData = File.ReadAllText(RECIPE_TEMPLATE_PATH);
try
{
// deserialize to object
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
// update NAME
RecipeLiveData.RecipeName = $"{DateTime.Now:yyyyMMss_HHmmss}.json";
}
catch
{ }
// update current live data!
SaveRecipeCurrent();
}
// rendo se fatto
return answ;
}
/// <summary>
/// Try to write live data to json persistence file
/// </summary>
public static bool SaveRecipeCurrent()
{
bool answ = false;
try
{
answ = true;
// serialize
string rawData = JsonConvert.SerializeObject(RecipeLiveData);
// save live!
var dir = Path.GetDirectoryName(LIVE_RECIPE_PATH);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
}
catch
{ }
// rendo se fatto
return answ;
}
/// <summary>
/// Try to save live recipe as NEW template
/// </summary>
public static bool SaveRecipeTemplate()
{
RecipeLiveData.RecipeName = "template.json";
return SaveRecipe(RECIPE_TEMPLATE_PATH);
}
/// <summary>
/// Try to save live recipe to selected filePath
/// </summary>
public static bool SaveRecipe(string filePath)
{
bool answ = false;
try
{
answ = true;
string fileName = Path.GetFileName(filePath);
if (!fileName.EndsWith(".json"))
{
fileName += ".json";
filePath += ".json";
}
// fix name!
RecipeLiveData.RecipeName = fileName;
// serialize
string rawData = JsonConvert.SerializeObject(RecipeLiveData);
// save live!
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
// check filePath...
if (!filePath.Contains(RECIPE_DIRECTORY) && filePath != RECIPE_TEMPLATE_PATH)
{
// aggiungo base path!
filePath = RECIPE_DIRECTORY + filePath;
}
// save!
File.WriteAllText(filePath, rawData);
}
catch
{ }
// rendo se fatto
return answ;
}
#if false
public static void ReadMainProgram()
{
if (File.Exists(MAIN_PROGRAM_CONFIG_PATH))
{
CMSMainProgramContent = File.ReadAllText(MAIN_PROGRAM_CONFIG_PATH);
}
}
}
#endif
public static string CalculateHash(string filename)
{
@@ -32,6 +32,9 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
@@ -52,9 +55,13 @@
<SubType>Designer</SubType>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Compile Include="LiveData.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ServerConfig.cs" />
<Compile Include="ServerConfigController.cs" />
<Content Include="Recipes\.placeholder.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<EmbeddedResource Include="Report\Programs.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
@@ -69,9 +76,15 @@
<Content Include="Config\customMainProgram.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Config\moduleBlockConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\recipeConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\risk2007.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\userSoftKeyConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
@@ -159,5 +172,22 @@
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Config\moduleBlockConfigValidator.xsd">
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Config\risk2007Validator.xsd">
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="Config\Recipes\template.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
</packages>
+87 -3
View File
@@ -26,7 +26,7 @@ using Thermo.Active.Model.DTOModels.Recipe;
public static class ThreadsFunctions
{
public static int recipeRtCounter = 5;
public static int recipeRtCounter = 0;
public static bool reconnectionIsRunning = false;
private static ConcurrentDictionary<string, long> Timers = new ConcurrentDictionary<string, long>();
@@ -692,7 +692,91 @@ public static class ThreadsFunctions
catch (ThreadAbortException)
{
ncAdapter.Dispose();
}
}
}
public static void ReadProdInfoData()
{
NcAdapter ncAdapter = new NcAdapter();
Stopwatch sw = new Stopwatch();
try
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
while (true)
{
sw.Restart();
// Check if client is connected
if (ncAdapter.numericalControl.NC_IsConnected())
{
// Get new data from PLC
libraryError = ncAdapter.ReadProdInfoData(out ThermoModels.ProdInfoModel prodInfoData);
if (libraryError.IsError())
ManageLibraryError(libraryError);
MessageServices.Current.Publish(SEND_THERMO_PROD_INFO_DATA, null, prodInfoData);
}
else
RestoreConnection();
sw.Stop();
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
{
ncAdapter.Dispose();
}
}
public static void ReadProdCycleData()
{
NcAdapter ncAdapter = new NcAdapter();
Stopwatch sw = new Stopwatch();
try
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
while (true)
{
sw.Restart();
// Check if client is connected
if (ncAdapter.numericalControl.NC_IsConnected())
{
// Get new data from PLC
libraryError = ncAdapter.ReadProdCycleData(out ThermoModels.ProdCycleModel prodCycleData);
if (libraryError.IsError())
ManageLibraryError(libraryError);
MessageServices.Current.Publish(SEND_THERMO_PROD_CYCLE_DATA, null, prodCycleData);
}
else
RestoreConnection();
sw.Stop();
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
{
ncAdapter.Dispose();
}
}
public static void ReadRecipeData()
{
@@ -721,7 +805,7 @@ public static class ThreadsFunctions
if (ncAdapter.numericalControl.NC_IsConnected())
{
// Get new data from PLC
libraryError = ncAdapter.ReadRecipeData(onlyRt, out Dictionary<string, DTORecipeParam> currRecipe);
libraryError = ncAdapter.ReadRecipeData(onlyRt, false, out Dictionary<string, DTORecipeParam> currRecipe);
if (libraryError.IsError())
ManageLibraryError(libraryError);
+5 -3
View File
@@ -14,19 +14,21 @@ namespace Thermo.Active.Core
ThreadsFunctions.ReadAlarms,
ThreadsFunctions.ReadPowerOnData,
ThreadsFunctions.StatThread,
ThreadsFunctions.ReadProcessesPPStatus,
//ThreadsFunctions.ReadProcessesPPStatus,
ThreadsFunctions.ReadEnabledFunctionality,
ThreadsFunctions.ReadExpiredMaintenances,
ThreadsFunctions.ReadAxesPositionsData,
//ThreadsFunctions.ReadAxesPositionsData,
ThreadsFunctions.ReadUserSoftKeysData,
//ThreadsFunctions.ReadHeadsData,
ThreadsFunctions.ReadAxesNamesData,
//ThreadsFunctions.ReadAxesNamesData,
//ThreadsFunctions.ReadActiveProgramData,
//ThreadsFunctions.ReadPartProgramQueueData,
ThreadsFunctions.ReadScadaData,
ThreadsFunctions.ReadM154Data, // levare?
// ThreadsFunctions.ReadNcSoftKeysData,
ThreadsFunctions.ReadGaugeData,
ThreadsFunctions.ReadProdInfoData,
ThreadsFunctions.ReadProdCycleData,
ThreadsFunctions.ReadRecipeData,
ThreadsFunctions.ReadWarmersData,
ThreadsFunctions.ReadModulesData
@@ -0,0 +1,16 @@
using System.Collections.Generic;
using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Model.ConfigModels
{
public class ModBlockConfigModel
{
public int Id;
public Dictionary<string,string> LocalizedLabels { get; set; }
public TACT_MBLOCK_TYPE Type { get; set; }
public TACT_MBLOCK_SECTION Section { get; set; }
public int IdParam{ get; set; }
public bool ShowDelay { get; set; }
public int Priority { get; set; }
}
}
@@ -0,0 +1,47 @@
using System.Collections.Generic;
using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Model.ConfigModels
{
public class RiskRiflettore
{
public int Tipo;
public List<RiskResistenza> Resistenze;
}
public class RiskResistenza
{
public int Tipo;
public int Riga;
public int Canale;
}
public class RiskRiferimenti
{
public int Id;
public int Potenza;
public int Dimensione;
public string Modello;
}
public class RiskResistModel
{
public int Id;
public int IdChannel;
public int Column;
public int Row;
public int Dimension;
}
public class RiskChannelModel
{
public int IdChannel;
public int IdReflector;
public int SetpointRecipe;
public int SetpointThermo;
public int MaxPower;
public int NumResist;
public bool CalcIchMin;
}
public class RiskBoardModel
{
public int IdBoard;
public int NumChannels;
}
}
+31
View File
@@ -90,6 +90,25 @@ namespace Thermo.Active.Model
Options
}
public enum TACT_MBLOCK_TYPE
{
ND = 0,
HEATING,
DRAWING,
MOVEMENT,
VACUUM,
COOLING,
EXTRACTION
}
public enum TACT_MBLOCK_SECTION
{
ND = 0,
HEATING,
FORMING,
EXTRACTION
}
public enum MAINTENANCE_UNIT_OF_MEASURE
{
mm = 0,
@@ -191,6 +210,9 @@ namespace Thermo.Active.Model
public static string WEBSITE_DIRECTORY = BASE_PATH + "\\view";
#endif
public const string CONFIG_DIRECTORY = "Config\\";
public const string RECIPE_DIRECTORY = "Recipes\\";
public const string RECIPE_TEMPLATE_PATH = CONFIG_DIRECTORY + RECIPE_DIRECTORY + "template.json";
public const string LIVE_RECIPE_PATH = TEMP_FOLDER + RECIPE_DIRECTORY + "current.json";
public const string RESOURCE_DIRECTORY = @"Thermo.Active.Config.Config.";
public const string SERVER_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"serverConfigValidator.xsd";
public const string SERVER_CONFIG_PATH = CONFIG_DIRECTORY + "serverConfig.xml";
@@ -216,6 +238,12 @@ namespace Thermo.Active.Model
public const string RECIPE_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "recipeConfigValidator.xsd";
public const string RECIPE_CONFIG_PATH = CONFIG_DIRECTORY + "recipeConfig.xml";
public const string MODBLOCK_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "moduleBlockConfigValidator.xsd";
public const string MODBLOCK_CONFIG_PATH = CONFIG_DIRECTORY + "moduleBlockConfig.xml";
public const string RISK_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "risk2007Validator.xsd";
public const string RISK_CONFIG_PATH = CONFIG_DIRECTORY + "risk2007.xml";
public const string NC_SOFTKEYS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "ncSoftKeyConfigValidator.xsd";
public const string NC_SOFTKEYS_CONFIG_PATH = CONFIG_DIRECTORY + "ncSoftKeyConfig.xml";
@@ -227,6 +255,7 @@ namespace Thermo.Active.Model
public const string MAIN_PROGRAM_CONFIG_PATH = CONFIG_DIRECTORY + "customMainProgram.txt";
public static string LANGUAGE_PACK_DIRECTORY = BASE_PATH + "\\languages\\";
public static string LANGUAGE_SCHEMA_PATH = BASE_PATH + "\\LanguageValidator.xsd";
@@ -270,6 +299,8 @@ namespace Thermo.Active.Model
public const string SEND_THERMO_MODULE_DATA = "SEND_THERMO_MODULE_DATA";
public const string SEND_THERMO_WARMERS_DATA = "SEND_THERMO_WARMERS_DATA";
public const string SEND_THERMO_GAUGE_DATA = "SEND_THERMO_GAUGE_DATA";
public const string SEND_THERMO_PROD_INFO_DATA = "SEND_THERMO_PROD_INFO_DATA";
public const string SEND_THERMO_PROD_CYCLE_DATA = "SEND_THERMO_PROD_CYCLE_DATA";
public const string BROADCAST_DATA = "BROADCAST_DATA";
@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Model.DTOModels.Recipe
{
public class DTOModule
{
public int Id { get; set; } = 0;
public int ActualDuration { get; set; } = 0;
public int ActualDelay { get; set; } = 0;
public int EstimDuration { get; set; } = 0;
public int EstimDelay { get; set; } = 0;
public List<int> PrevModId { get; set; } = new List<int>();
public RBStatus Status { get; set; }
public override bool Equals(object obj)
{
if (!(obj is DTOModule item))
return false;
if (Id!= item.Id)
return false;
if (ActualDuration != item.ActualDuration)
return false;
if (ActualDelay != item.ActualDelay)
return false;
if (PrevModId != item.PrevModId)
return false;
if (EstimDelay != item.EstimDelay)
return false;
if (!Status.Equals(item.Status))
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
public struct RBStatus
{
public bool Visible { get; set; }
public bool Executing { get; set; }
public bool HasError { get; set; }
public override bool Equals(object obj)
{
if (!(obj is RBStatus item))
return false;
if (Visible != item.Visible)
return false;
if (Executing != item.Executing)
return false;
if (HasError != item.HasError)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Model.DTOModels.Recipe
{
public class DTOModuleConfigModel
{
public int Id;
public string Label;
public BlockType Type;
public BlockSection Section;
public int IdMainParam = -1; // -1 = non visibile
public bool DelayVisible;
public int VisualPriority;
}
public enum BlockType
{
HEATING,
DRAWING,
MOVEMENT,
VACUUM,
COOLING,
EXTRACTION
}
public enum BlockSection
{
HEATING,
FORMING,
EXTRACTION
}
}
@@ -0,0 +1,97 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Model.DTOModels.Recipe
{
public class DTOModulesBlock
{
public int Id { get; set; } = 0;
public double SetpointHMI { get; set; } = 0;
public double SetpointPLC { get; set; } = 0;
//public RPRange Range { get; set; }
//public RPStatus Status { get; set; }
public string UnitMeasure { get; set; }
public double ValueAct { get; set; }
public override bool Equals(object obj)
{
if (!(obj is DTOModulesBlock item))
return false;
if (Id!= item.Id)
return false;
if (SetpointHMI != item.SetpointHMI)
return false;
if (SetpointPLC != item.SetpointPLC)
return false;
//if (!Range.Equals(item.Range))
// return false;
//if (!Status.Equals(item.Status))
// return false;
if (UnitMeasure != item.UnitMeasure)
return false;
if (ValueAct != item.ValueAct)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
#if false
public struct RPRange
{
public double Min { get; set; }
public double Max { get; set; }
public override bool Equals(object obj)
{
if (!(obj is RPRange item))
return false;
if (Min != item.Min)
return false;
if (Max != item.Max)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
public struct RPStatus
{
public bool Visible { get; set; }
public bool Enabled { get; set; }
public bool HasError { get; set; }
public override bool Equals(object obj)
{
if (!(obj is RPStatus item))
return false;
if (Visible != item.Visible)
return false;
if (Enabled != item.Enabled)
return false;
if (HasError != item.HasError)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
#endif
}
@@ -9,6 +9,8 @@ namespace Thermo.Active.Model.DTOModels.Recipe
public class DTORecipeParam
{
public int Id { get; set; } = 0;
public double SetpointHMI { get; set; } = 0;
public double SetpointPLC { get; set; } = 0;
public RPRange Range { get; set; }
public RPStatus Status { get; set; }
public string UnitMeasure { get; set; }
@@ -21,6 +23,10 @@ namespace Thermo.Active.Model.DTOModels.Recipe
if (Id!= item.Id)
return false;
if (SetpointHMI != item.SetpointHMI)
return false;
if (SetpointPLC != item.SetpointPLC)
return false;
if (!Range.Equals(item.Range))
return false;
if (!Status.Equals(item.Status))
@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Model.DTOModels.Recipe
{
public class DTOWarmers
{
public int IdChannel { get; set; } = 0;
public int IdReflector { get; set; } = 0;
public int SetpointHMI { get; set; } = 0;
public int SetpointTermocam { get; set; } = 0;
public int SetpointPLC { get; set; } = 0;
public int ChannelStatus { get; set; } = 0;
public double ActualCurrent { get; set; } = 0;
public int ActualPerc { get; set; } = 0;
public int MaxPower { get; set; } = 0;
public override bool Equals(object obj)
{
if (!(obj is DTOWarmers item))
return false;
if (IdChannel != item.IdChannel)
return false;
if (IdReflector != item.IdReflector)
return false;
if (SetpointHMI != item.SetpointHMI)
return false;
if (SetpointTermocam != item.SetpointTermocam)
return false;
if (SetpointPLC != item.SetpointPLC)
return false;
if (ChannelStatus != item.ChannelStatus)
return false;
if (ActualCurrent != item.ActualCurrent)
return false;
if (ActualPerc != item.ActualPerc)
return false;
if (MaxPower != item.MaxPower)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}
@@ -1,21 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Model.DTOModels.Recipe
{
/// <summary>
/// Struttura parametri "lenti" (lettura NON frequente)
/// </summary>
public class RecipeParam
{
public int Id { get; set; }
public double SetpointHMI { get; set; }
public double SetpointPLC { get; set; }
public double ValueMax { get; set; }
public double ValueMin { get; set; }
public string UnitMeasure { get; set; }
}
}
@@ -1,27 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Model.DTOModels.Recipe
{
/// <summary>
/// Struttura parametri "veloci" (RT=RealTime, lettura frequente)
/// </summary>
public class RecipeParamRT
{
public short Id { get; set; }
public short StatusBit { get; set; }
public double ValueAct { get; set; }
}
[Flags]
public enum StatusVal
{
None = 0x0,
Visible = 0x1,
Enabled = 0x2,
HasError = 0x4
}
}
@@ -63,6 +63,8 @@
<Compile Include="ConfigModels\AlarmsConfigModel.cs" />
<Compile Include="ConfigModels\CmsConnectConfigModel.cs" />
<Compile Include="ConfigModels\ExtSoftwareModel.cs" />
<Compile Include="ConfigModels\ModBlockConfigModel.cs" />
<Compile Include="ConfigModels\RiskConfigModel.cs" />
<Compile Include="ConfigModels\RecipeConfigModel.cs" />
<Compile Include="ConfigModels\HeadsConfigModel.cs" />
<Compile Include="ConfigModels\MaintenanceConfigModel.cs" />
@@ -102,6 +104,10 @@
<Compile Include="DTOModels\DTOAxesModel.cs" />
<Compile Include="DTOModels\DTOAxisNameModel.cs" />
<Compile Include="DTOModels\DTOClientConfigurationModel.cs" />
<Compile Include="DTOModels\Recipe\DTOModule.cs" />
<Compile Include="DTOModels\Recipe\DTOModuleConfigModel.cs" />
<Compile Include="DTOModels\Recipe\DTOModulesBlock.cs" />
<Compile Include="DTOModels\Recipe\DTOWarmers.cs" />
<Compile Include="DTOModels\Recipe\DTORecipeParam.cs" />
<Compile Include="DTOModels\Recipe\DTORecipeConfigModel .cs" />
<Compile Include="DTOModels\DTONetworkMonitor.cs" />
@@ -114,8 +120,6 @@
<Compile Include="DTOModels\JobModels\DTOMetadataFieldsModel.cs" />
<Compile Include="DTOModels\JobModels\DTOMetadataModel.cs" />
<Compile Include="DTOModels\Recipe\DTORecipeOverview.cs" />
<Compile Include="DTOModels\Recipe\RecipeParamRT.cs" />
<Compile Include="DTOModels\Recipe\RecipeParam.cs" />
<Compile Include="DTOModels\Scada\DTOScadaModel.cs" />
<Compile Include="DTOModels\Scada\ScadaSchemaModel.cs" />
<Compile Include="DTOModels\MaintenanceModels\DTOExpiredMaintenanceModel.cs" />
+503 -82
View File
@@ -28,11 +28,6 @@ namespace Thermo.Active.NC
{
public class NcAdapter : IDisposable
{
/// <summary>
/// check e usare dati simulati/reali (in fase implementazione)
/// </summary>
public bool simData = true;
public NcThermo numericalControl;
public NcAdapter() =>
@@ -906,6 +901,7 @@ namespace Thermo.Active.NC
return cmsError;
}
#if false
// !!!FARE!!! è copia delle heads
public CmsError GetRecipeData(out List<DTOHeadModel> heads)
{
@@ -978,6 +974,7 @@ namespace Thermo.Active.NC
return cmsError;
}
#endif
public CmsError GetM155Data(out List<DTOM155InputModel> data)
{
data = new List<DTOM155InputModel>();
@@ -1068,7 +1065,28 @@ namespace Thermo.Active.NC
return cmsError;
}
public CmsError ReadRecipeData(bool refreshOnlyRT, out Dictionary<string, DTORecipeParam> currentRecipe)
public CmsError ReadProdInfoData(out ThermoModels.ProdInfoModel prodInfoData)
{
prodInfoData = new ThermoModels.ProdInfoModel();
CmsError cmsError = numericalControl.PLC_RProdInfo(ref prodInfoData);
return cmsError;
}
public CmsError ReadProdCycleData(out ThermoModels.ProdCycleModel prodCycleData)
{
prodCycleData = new ThermoModels.ProdCycleModel();
CmsError cmsError = numericalControl.PLC_RProdCycle(ref prodCycleData);
return cmsError;
}
/// <summary>
/// Vero metodo lettura ricetta da 2 aree memoria PLC
/// </summary>
/// <param name="refreshOnlyRT">Indica se aggiornare SOLO i dati RT</param>
/// <param name="useLastRead">Indica se usare ultimi dati letti dal PLC senza effettiva lettura (via cache)</param>
/// <param name="currentRecipe"></param>
/// <returns></returns>
public CmsError ReadRecipeData(bool refreshOnlyRT, bool useLastRead, out Dictionary<string, DTORecipeParam> currentRecipe)
{
// init obj
currentRecipe = new Dictionary<string, DTORecipeParam>();
@@ -1077,10 +1095,20 @@ namespace Thermo.Active.NC
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
Dictionary<int, DataStructures.RecipeParam> currPlcRecipe = new Dictionary<int, DataStructures.RecipeParam>();
CmsError cmsError = numericalControl.PLC_RRecipeParamList(refreshOnlyRT, ref currPlcRecipe);
Dictionary<int, ThermoModels.RecipeParam> currPlcRecipe = new Dictionary<int, ThermoModels.RecipeParam>();
CmsError cmsError = NO_ERROR;
if (useLastRead)
{
cmsError = numericalControl.PLC_RRecipeParamList(false, ref currPlcRecipe);
}
else
{
cmsError = numericalControl.PLC_RRecipeParamList(refreshOnlyRT, ref currPlcRecipe);
}
if (cmsError.IsError())
return cmsError;
DTORecipeParam currParam = new DTORecipeParam();
// leggo l'intero array delle DB... QUI FAKE sulle DB configurate...
List<DTORecipeConfigModel> recipeConfig = RecipeConfig.Select(x => new DTORecipeConfigModel()
@@ -1100,11 +1128,11 @@ namespace Thermo.Active.NC
if (currPlcRecipe.ContainsKey(item.Id))
{
// recupero da mem PLC
var paramPLC = currPlcRecipe[item.Id];
ThermoModels.RecipeParam paramPLC = currPlcRecipe[item.Id];
currRange = new RPRange()
{
Min = paramPLC.ValMin,
Max = paramPLC.ValMax,
Max = paramPLC.ValMax
};
currStatus = new RPStatus()
{
@@ -1115,10 +1143,36 @@ namespace Thermo.Active.NC
// calcolo intero oggetto
currParam = new DTORecipeParam()
{
Id = item.Id,
Range = currRange,
Status = currStatus,
UnitMeasure = "",
ValueAct = paramPLC.ValueAct
ValueAct = paramPLC.ValueAct,
SetpointHMI = paramPLC.SetpointHMI,
SetpointPLC = paramPLC.SetpointPLC
};
}
else
{
currRange = new RPRange()
{
Min = 0,
Max = 999999
};
currStatus = new RPStatus()
{
Visible = false,
Enabled = false,
HasError = false
};
// calcolo intero oggetto
currParam = new DTORecipeParam()
{
Id = item.Id,
Range = currRange,
Status = currStatus,
UnitMeasure = "",
ValueAct = 0
};
}
currentRecipe.Add(item.Label, currParam);
@@ -1131,6 +1185,217 @@ namespace Thermo.Active.NC
return NO_ERROR;
}
/// <summary>
/// Recipe Parameters write to PLC (only SetpointHMI)
/// </summary>
/// <param name="updtRecipe"></param>
/// <returns></returns>
public CmsError WriteRecipeParametersToPLC(Dictionary<string, DTORecipeParam> updtRecipe)
{
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// ciclo x ogni valore della ricetta aggiornata ricevuto
ThermoModels.RecipeParam currParam;
foreach (var item in updtRecipe)
{
// salvo SOLO il setpoint HMI...
currParam = new ThermoModels.RecipeParam()
{
Id = (short)item.Value.Id,
SetpointHMI = item.Value.SetpointHMI
};
// scrivo!
CmsError cmsError = numericalControl.PLC_WRecipeParam(currParam);
if (cmsError.IsError())
return cmsError;
}
}
else
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
return NO_ERROR;
}
/// <summary>
/// Comando conferma dati ricetta
/// </summary>
/// <param name="confirmUpdate">true: HMI --> PLC, false: PLC --> HMI</param>
/// <returns></returns>
public CmsError ConfirmRecipeData(bool confirmUpdate)
{
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// call NC for update
CmsError cmsError = numericalControl.PLC_WRecipeEdit(confirmUpdate);
if (cmsError.IsError())
return cmsError;
}
else
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
return NO_ERROR;
}
/// <summary>
/// Vero metodo lettura Warmers data da memoria PLC
/// </summary>
/// <param name="currentWarmers"></param>
/// <returns></returns>
public CmsError ReadWarmersData(out Dictionary<int, DTOWarmers> currentWarmers)
{
// init obj
currentWarmers = new Dictionary<int, DTOWarmers>();
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
CmsError cmsError = NO_ERROR;
// leggo stato ricetta da PLC
Dictionary<int, ThermoModels.WarmerChannel> currPlcWarmers = new Dictionary<int, ThermoModels.WarmerChannel>();
cmsError = numericalControl.PLC_RWarmerChannelList(ref currPlcWarmers);
if (cmsError.IsError())
return cmsError;
// compongo con il resto delle info da config... do x scontato di avere TUTIT i 1024 channels
List<DTOWarmers> warmersConfig = RiskChannelConfig.Select(x => new DTOWarmers()
{
IdChannel = x.IdChannel,
IdReflector = x.IdReflector,
SetpointHMI = x.SetpointRecipe,
SetpointTermocam = 0, // FIXME TODO x.SetpointTer,
SetpointPLC = currPlcWarmers[x.IdChannel].SetpointPLC,
ChannelStatus = currPlcWarmers[x.IdChannel].ChStatus,
ActualCurrent = currPlcWarmers[x.IdChannel].CurrAct,
ActualPerc = currPlcWarmers[x.IdChannel].PercAct,
MaxPower = x.MaxPower
}).ToList();
}
else
{
currentWarmers = new Dictionary<int, DTOWarmers>();
}
return NO_ERROR;
}
/// <summary>
/// Write warmers configuration Parameters to PLC
/// </summary>
/// <param name="updtRecipe"></param>
/// <returns></returns>
public CmsError WriteRecipeWarmersConf(Dictionary<int, DTOWarmers> updtRecipe)
{
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// FIXME TODO WRITE CH LOAD DATA
#if false
// ciclo x ogni valore della ricetta aggiornata ricevuto
ThermoModels.RecipeParam currParam;
foreach (var item in updtRecipe)
{
// salvo SOLO il setpoint HMI...
currParam = new ThermoModels.RecipeParam()
{
Id = (short)item.Value.Id,
SetpointHMI = item.Value.SetpointHMI
};
// scrivo!
CmsError cmsError = numericalControl.PLC_WRecipeParam(currParam);
if (cmsError.IsError())
return cmsError;
}
#endif
}
else
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
return NO_ERROR;
}
/// <summary>
/// Write warmers Setpoint to PLC
/// </summary>
/// <param name="updtLoad"></param>
/// <returns></returns>
public CmsError WriteRecipeWarmersLoad(Dictionary<int, int> updtLoad)
{
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// FIXME TODO WRITE CH LOAD DATA
#if false
// ciclo x ogni valore della ricetta aggiornata ricevuto
ThermoModels.RecipeParam currParam;
foreach (var item in updtRecipe)
{
// salvo SOLO il setpoint HMI...
currParam = new ThermoModels.RecipeParam()
{
Id = (short)item.Value.Id,
SetpointHMI = item.Value.SetpointHMI
};
// scrivo!
CmsError cmsError = numericalControl.PLC_WRecipeParam(currParam);
if (cmsError.IsError())
return cmsError;
}
#endif
}
else
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
return NO_ERROR;
}
/// <summary>
/// Write warmers Setpoint to PLC
/// </summary>
/// <param name="updtLoad"></param>
/// <returns></returns>
public CmsError WriteRecipeWarmersThermo(Dictionary<int, int> updtLoad)
{
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// FIXME TODO WRITE CH LOAD DATA
#if false
// ciclo x ogni valore della ricetta aggiornata ricevuto
ThermoModels.RecipeParam currParam;
foreach (var item in updtRecipe)
{
// salvo SOLO il setpoint HMI...
currParam = new ThermoModels.RecipeParam()
{
Id = (short)item.Value.Id,
SetpointHMI = item.Value.SetpointHMI
};
// scrivo!
CmsError cmsError = numericalControl.PLC_WRecipeParam(currParam);
if (cmsError.IsError())
return cmsError;
}
#endif
}
else
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
return NO_ERROR;
}
public CmsError ReadNcScada(ScadaSchemaModel scadaSchema, out DTOScadaModel scadaValue)
{
@@ -1492,65 +1757,27 @@ namespace Thermo.Active.NC
currRecipe = new Dictionary<string, DTORecipeParam>();
DTORecipeParam currParam = new DTORecipeParam();
RPRange currRange = new RPRange();
RPStatus currStatus = new RPStatus();
if (simData)
{
// leggo l'intero array delle DB... QUI FAKE sulle DB configurate...
List<DTORecipeConfigModel> recipeConfig = RecipeConfig.Select(x => new DTORecipeConfigModel()
{
Id = x.Id,
Category = x.Category.ToString(),
SubCategory_1 = x.SubCategory_1,
SubCategory_2 = x.SubCategory_2,
Name = x.Name,
Description = x.Description,
Format = x.Format,
Label = $"{x.Category}_{x.SubCategory_1}_{x.SubCategory_2}_{x.Name}".Replace("__", "_").Replace("__", "_").ToLower()
}).ToList();
int minVal, maxVal, actVal;
Random rnd = new Random();
foreach (var item in recipeConfig)
{
// randomizzo valori...
minVal = rnd.Next(0, 10);
maxVal = rnd.Next(100, 200);
actVal = rnd.Next(minVal - 5, maxVal + 5);
currRange = new RPRange()
{
Min = minVal,
Max = maxVal,
};
currStatus = new RPStatus()
{
Visible = true,
Enabled = true,
HasError = (actVal < minVal || actVal > maxVal)
};
currParam = new DTORecipeParam()
{
Range = currRange,
Status = currStatus,
UnitMeasure = "",
ValueAct = actVal
};
currRecipe.Add(item.Label, currParam);
}
}
else
{
// gestione errore
cmsError = ReadRecipeData(false, out currRecipe);
if (cmsError.IsError())
return cmsError;
}
// gestione errore
cmsError = ReadRecipeData(false, true, out currRecipe);
if (cmsError.IsError())
return cmsError;
// restituisco cod errore se trovato
return cmsError;
}
/// <summary>
/// Scrive tutti i parametri della ricetta indicati
/// </summary>
/// <param name="updtRecipe">Oggetto parametri da aggiornare (from HMI)</param>
/// <returns></returns>
public CmsError WriteRecipeParams(Dictionary<string, DTORecipeParam> updtRecipe)
{
CmsError cmsError = WriteRecipeParametersToPLC(updtRecipe);
return cmsError;
}
/// <summary>
/// Legge tutti i parametri della ricetta e calcolo la overview dei vari steps
@@ -1562,15 +1789,11 @@ namespace Thermo.Active.NC
CmsError cmsError = NO_ERROR;
currOverview = new Dictionary<string, RecipeCatStatus>();
// !!!FARE davvero!!!
#if false
// gestione errore
cmsError = ReadScadaData(schema, out currParam);
// leggo la ricetta!
var currRecipe = new Dictionary<string, DTORecipeParam>();
cmsError = ReadFullRecipe(out currRecipe);
if (cmsError.IsError())
return cmsError;
#endif
// calcolo!
return cmsError;
// leggo l'intero array delle DB... QUI FAKE sulle DB configurate...
List<DTORecipeConfigModel> recipeConfig = RecipeConfig.Select(x => new DTORecipeConfigModel()
@@ -1586,40 +1809,238 @@ namespace Thermo.Active.NC
}).ToList();
RecipeCatStatus currStatus = RecipeCatStatus.Unchanged;
int countCat = 0;
// percorro conf ricetta...
foreach (var item in recipeConfig)
{
// ogni 20 incremento...
if (countCat < 20)
currStatus = RecipeCatStatus.Unchanged;
// cerco SE ci sia già uno status...
if (currOverview.ContainsKey(item.Category))
{
currStatus = RecipeCatStatus.Unchanged;
currStatus = currOverview[item.Category];
}
else if (countCat < 40)
// se lo stato è errore --> esco...
if (currStatus == RecipeCatStatus.HasError)
{
currStatus = RecipeCatStatus.ChangedOk;
continue;
}
// altrimenti controllo
else
{
currStatus = RecipeCatStatus.HasError;
// se in errore --> registro...
if (currRecipe[item.Label].Status.HasError)
{
currStatus = RecipeCatStatus.HasError;
}
// FARE verificare il significato di questo changed (se è da file o da HMI/PLC)
else if (currRecipe[item.Label].SetpointHMI != currRecipe[item.Label].SetpointPLC)
{
currStatus = RecipeCatStatus.ChangedOk;
}
else
{
currStatus = RecipeCatStatus.Unchanged;
}
}
// se non c'è aggiungo
// ora verifico overview finale: se non c'è aggiungo
if (!currOverview.ContainsKey(item.Category))
{
currOverview.Add(item.Category, currStatus);
countCat = 0;
}
else
{
// se il valore è maggiore --> aggiorno
currOverview[item.Category] = (int)currStatus > (int)currOverview[item.Category] ? currStatus : currOverview[item.Category];
}
countCat++;
}
// restituisco cod errore se trovato
return cmsError;
}
/// <summary>
/// Legge tutti i parametri della ricetta
/// </summary>
/// <param name="currModules">Oggetto elenco modules block</param>
/// <returns></returns>
public CmsError ReadModulesBlock(out Dictionary<int, DTOModulesBlock> currModules)
{
CmsError cmsError = NO_ERROR;
currModules = new Dictionary<int, DTOModulesBlock>();
// FIXME TODO
#if false
DTORecipeParam currParam = new DTORecipeParam();
RPRange currRange = new RPRange();
RPStatus currStatus = new RPStatus();
// gestione errore
cmsError = ReadRecipeData(false, true, out currModules);
if (cmsError.IsError())
return cmsError;
#endif
// restituisco cod errore se trovato
return cmsError;
}
/// <summary>
/// GEt all warmers data by channel
/// </summary>
/// <param name="currWarmers">List of <= 1024 warmers channels</param>
/// <returns></returns>
public CmsError ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers)
{
CmsError cmsError = NO_ERROR;
currWarmers = new Dictionary<int, DTOWarmers>();
DTOWarmers currVal = new DTOWarmers();
// read and return warmers data
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
Dictionary<int, ThermoModels.WarmerChannel> currPlcWarmChan = new Dictionary<int, ThermoModels.WarmerChannel>();
cmsError = numericalControl.PLC_RWarmerChannelList(ref currPlcWarmChan);
foreach (var item in RiskChannelConfig)
{
try
{
ThermoModels.WarmerChannel currWarm = currPlcWarmChan[item.IdChannel];
currVal = new DTOWarmers()
{
IdChannel = item.IdChannel,
IdReflector = item.IdReflector,
SetpointHMI = currWarm.SetpointHMI,
SetpointTermocam = currWarm.SetpointThermoCam,
SetpointPLC = currWarm.SetpointPLC,
ChannelStatus = currWarm.ChStatus,
ActualCurrent = currWarm.CurrAct,
ActualPerc = currWarm.PercAct,
MaxPower = item.MaxPower
};
currWarmers.Add(item.IdChannel, currVal);
}
catch
{ }
}
}
// gestione errore
if (cmsError.IsError())
return cmsError;
// restituisco cod errore se trovato
return cmsError;
}
/// <summary>
/// Returns resistances configuration
/// </summary>
/// <param name="currWarmersResistances">List of configured resistances</param>
/// <returns></returns>
public CmsError GetWarmersResistances(out Dictionary<int, Model.ConfigModels.RiskResistModel> currWarmersResistances)
{
CmsError cmsError = NO_ERROR;
currWarmersResistances = new Dictionary<int, Model.ConfigModels.RiskResistModel>();
// read and return config
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
foreach (var item in RiskResistConfig)
{
currWarmersResistances.Add(item.Id, item);
}
}
// restituisco cod errore se trovato
return cmsError;
}
/// <summary>
/// Write all warmers load for recipe
/// </summary>
/// <param name="updtSetpHmi">Oggetto parametri da aggiornare (from HMI)</param>
/// <returns></returns>
public CmsError WriteRecipeWarmChSetpHMI(Dictionary<int, int> updtSetpHmi)
{
CmsError cmsError = numericalControl.PLC_WWarmerChSetpHmi(updtSetpHmi);
return cmsError;
}
/// <summary>
/// Write all warmers termocam data for recipe
/// </summary>
/// <param name="updtSetpTCam">Oggetto parametri da aggiornare (from HMI)</param>
/// <returns></returns>
public CmsError WriteRecipeWarmChSetpTermoCam(Dictionary<int, int> updtSetpTCam)
{
CmsError cmsError = numericalControl.PLC_WWarmerChSetpTCam(updtSetpTCam);
return cmsError;
}
/// <summary>
/// Write all warmers CONFIG data
/// </summary>
/// <param name="updtSetpTCam">Oggetto parametri da aggiornare (from HMI)</param>
/// <returns></returns>
public CmsError WriteRecipeWarmConfig()
{
Dictionary<int, int> newData = new Dictionary<int, int>();
CmsError cmsError = NO_ERROR;
// scrivo l'abilitazione dei canali...
foreach (var item in RiskBoardConfig)
{
newData.Add(item.IdBoard, item.NumChannels > 0 ? 1 : 0);
}
cmsError = numericalControl.PLC_WWarmerConfBoardEnabl(newData);
if (cmsError.IsError())
return cmsError;
// processo riflettori...
newData = new Dictionary<int, int>();
foreach (var item in RiskChannelConfig)
{
newData.Add(item.IdChannel, item.IdReflector);
}
cmsError = numericalControl.PLC_WWarmerConfRefl(newData);
if (cmsError.IsError())
return cmsError;
// recupero parametro VUMin...
ushort VUMin = 1;
cmsError = numericalControl.PLC_RWarmerConfVUMin(ref VUMin);
if (cmsError.IsError())
return cmsError;
// check div0!
if (VUMin == 0)
{
VUMin = 1;
}
// processo corrente minima!
var newFloatTData = new Dictionary<int, double>();
double minICh = 0;
int calcPower = 0;
foreach (var item in RiskChannelConfig)
{
minICh = 0;
if (item.CalcIchMin)
{
calcPower = (item.NumResist - 1) + item.MaxPower + item.MaxPower / 2;
minICh = (double)calcPower / VUMin;
}
newFloatTData.Add(item.IdChannel, minICh);
}
cmsError = numericalControl.PLC_WWarmerConfMinCurr(newFloatTData);
if (cmsError.IsError())
return cmsError;
return cmsError;
}
#endregion Read Data
+57 -2
View File
@@ -19,6 +19,61 @@ namespace Thermo.Active.NC
{
public class NcFileAdapter : NcAdapter
{
/// <summary>
/// Read file from local devices ad give back string content
/// </summary>
/// <param name="path"></param>
/// <param name="fileContent"></param>
/// <returns></returns>
public CmsError ReadFileContent(string path, out string fileContent)
{
// init
fileContent = "";
if (!string.IsNullOrEmpty(path))
{
// check existing
if (File.Exists(path))
{
// read all lines as string
fileContent = File.ReadAllText(path);
}
else
{
return FILE_NOT_FOUND_ERROR;
}
}
else
{
return FILE_NOT_FOUND_ERROR;
}
return NO_ERROR;
}
/// <summary>
/// Save string content to file
/// </summary>
/// <param name="path"></param>
/// <param name="fileContent"></param>
/// <returns></returns>
public CmsError WriteFileContent(string path, string fileContent)
{
if (!string.IsNullOrEmpty(path))
{
if (!string.IsNullOrEmpty(fileContent))
{
File.WriteAllText(path, fileContent);
}
}
else
{
return FILE_NOT_FOUND_ERROR;
}
return NO_ERROR;
}
public CmsError GetFileList(string path, out List<PreviewFileModel> fileList)
{
fileList = new List<PreviewFileModel>();
@@ -41,8 +96,8 @@ namespace Thermo.Active.NC
if (cmsError.IsError())
return cmsError;
string [] names = fileInfo.Name.Split('/');
if(names.Length > 0)
string[] names = fileInfo.Name.Split('/');
if (names.Length > 0)
{
string name = names.Last();
if (!String.IsNullOrWhiteSpace(name))
+37 -3
View File
@@ -39,13 +39,47 @@ namespace Thermo.Active.Utils
default: return HEAD_TYPE.WJ;
}
}
public static TACT_PARAM_TYPE GetTActCategory(string strCategory)
/// <summary>
/// Conversion string --> TACT_PARAM_TYPE
/// </summary>
/// <param name="strValue"></param>
/// <returns></returns>
public static TACT_PARAM_TYPE GetTActParamType(string strValue)
{
TACT_PARAM_TYPE answ = TACT_PARAM_TYPE.ND;
try
{
answ = (TACT_PARAM_TYPE)Enum.Parse(typeof(TACT_PARAM_TYPE), strCategory);
answ = (TACT_PARAM_TYPE)Enum.Parse(typeof(TACT_PARAM_TYPE), strValue);
}
catch { }
return answ;
}
/// <summary>
/// Conversion string --> TACT_MBLOCK_TYPE
/// </summary>
/// <param name="strValue"></param>
/// <returns></returns>
public static TACT_MBLOCK_TYPE GetTActMB_Type(string strValue)
{
TACT_MBLOCK_TYPE answ = TACT_MBLOCK_TYPE.ND;
try
{
answ = (TACT_MBLOCK_TYPE)Enum.Parse(typeof(TACT_MBLOCK_TYPE), strValue);
}
catch { }
return answ;
}
/// <summary>
/// Conversion string --> TACT_MBLOCK_SECTION
/// </summary>
/// <param name="strValue"></param>
/// <returns></returns>
public static TACT_MBLOCK_SECTION GetTActMB_Section(string strValue)
{
TACT_MBLOCK_SECTION answ = TACT_MBLOCK_SECTION.ND;
try
{
answ = (TACT_MBLOCK_SECTION)Enum.Parse(typeof(TACT_MBLOCK_SECTION), strValue);
}
catch { }
return answ;
+1 -1
View File
@@ -33,7 +33,7 @@ namespace Thermo.Active
// hold additional metadata for an API. Version and title are required but you can also provide
// additional fields by chaining methods off SingleApiVersion.
//
c.SingleApiVersion("v1", "Step");
c.SingleApiVersion("v1", "ThermoActive");
// If you want the output Swagger docs to be indented properly, enable the "PrettyPrint" option.
//
@@ -0,0 +1,41 @@
using CMS_CORE_Library.Models;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.NC;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using static CMS_CORE_Library.Models.DataStructures;
using static Thermo.Active.Config.ServerConfig;
using static Thermo.Active.Model.Constants;
using Thermo.Active.Model.DTOModels.Recipe;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/ModBlock")]
public class ModulesController : ApiController
{
[Route("current"), HttpGet]
public IHttpActionResult GetCurrentModules()
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
CmsError cmsError = ncAdapter.ReadModulesBlock(out Dictionary<int, DTOModulesBlock> currModules);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
return Ok(currModules);
}
}
}
}
@@ -13,6 +13,7 @@ using static CMS_CORE_Library.Models.DataStructures;
using static Thermo.Active.Config.ServerConfig;
using static Thermo.Active.Model.Constants;
using Thermo.Active.Model.DTOModels.Recipe;
using Thermo.Active.Config;
namespace Thermo.Active.Controllers.WebApi
{
@@ -24,8 +25,11 @@ namespace Thermo.Active.Controllers.WebApi
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// serve?!?!?
//ncAdapter.Connect();
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
CmsError cmsError = ncAdapter.GetRecipeOverview(out Dictionary<string, RecipeCatStatus> currOverview);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
@@ -38,14 +42,369 @@ namespace Thermo.Active.Controllers.WebApi
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// serve?!?!?
//ncAdapter.Connect();
CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currentRecipe);
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
return Ok(currentRecipe);
return Ok(currRecipe);
}
}
[Route("update"), HttpPut]
public IHttpActionResult WriteParameters(Dictionary<string, double> parametersList)
{
if (parametersList != null)
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
// read recipe!
CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
Dictionary<string, DTORecipeParam> updtRecipe = new Dictionary<string, DTORecipeParam>();
foreach (var item in parametersList)
{
if (prevRecipe.ContainsKey(item.Key))
{
// aggiorno il valore HMI nel parametro
var currParam = prevRecipe[item.Key];
currParam.SetpointHMI = item.Value;
// salvo (1 parametro, potrei fare N...)
updtRecipe.Add(item.Key, currParam);
}
else
{
return NotFound();
}
}
// scrivo sul PLC
ncAdapter.WriteRecipeParams(updtRecipe);
// ritorno solo fatto!
return Ok();
}
}
else
{
return NotFound();
}
}
/// <summary>
/// Confirm recipe modification (parameters: HMI --> PLC)
/// </summary>
/// <returns></returns>
[Route("confirm"), HttpPut]
public IHttpActionResult ConfirmEdit()
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
// scrivo sul PLC il comando conferma!
CmsError cmsError = ncAdapter.ConfirmRecipeData(true);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// recupero i dati LIVE dei parametri HMI della ricetta...
cmsError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// rileggo la ricetta
var currParams = new Dictionary<string, double>();
foreach (var item in currRecipe)
{
currParams.Add(item.Key, item.Value.SetpointHMI);
}
saveCurrentRecipeParams(currParams);
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// Cancel recipe modification (parameters: PLC --> HMI)
/// </summary>
/// <returns></returns>
[Route("cancel"), HttpPut]
public IHttpActionResult CancelEdit()
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
// scrivo sul PLC il comando annula!
CmsError cmsError = ncAdapter.ConfirmRecipeData(false);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// recupero i dati LIVE dei parametri HMI della ricetta...
cmsError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
var currParams = new Dictionary<string, double>();
foreach (var item in currRecipe)
{
currParams.Add(item.Key, item.Value.SetpointPLC);
}
// ora salvo ANCHE i dati live...
saveCurrentRecipeParams(currParams);
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// load recipe from file and send to PLC
/// </summary>
/// <returns></returns>
[Route("load"), HttpPut]
public IHttpActionResult Load(string newName)
{
using (NcFileAdapter ncAdapter = new NcFileAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
// chiamo metodo di lettura...
//CmsError cmsError = ServerConfigController.LoadRecipe(newName);
bool fatto = ServerConfigController.LoadRecipe(newName);
if (!fatto)
return NotFound();
CmsError cmsError = writeCurrentRecipeToPlc();
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// Load tempalte recipe from file and save as new current...
/// </summary>
/// <returns></returns>
[Route("new"), HttpPut]
public IHttpActionResult NewRecipe()
{
using (NcFileAdapter ncAdapter = new NcFileAdapter())
{
// chiamo metodo di lettura...
bool fatto = ServerConfigController.LoadTemplate();
if (!fatto)
return NotFound();
CmsError cmsError = writeCurrentRecipeToPlc();
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
}
// ritorno solo fatto!
return Ok();
}
/// <summary>
/// Save current recipe from PLC to default
/// </summary>
/// <returns></returns>
[Route("save"), HttpPut]
public IHttpActionResult Save()
{
using (NcFileAdapter ncAdapter = new NcFileAdapter())
{
// recupero i dati LIVE dei parametri HMI della ricetta...
CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
var currParams = new Dictionary<string, double>();
foreach (var item in currRecipe)
{
currParams.Add(item.Key, item.Value.SetpointPLC);
}
// ora salvo ANCHE i dati live...
saveCurrentRecipeParams(currParams);
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// Save current recipe from PLC with new name
/// </summary>
/// <returns></returns>
[Route("saveAs"), HttpPut]
public IHttpActionResult SaveAs(string newName)
{
using (NcFileAdapter ncAdapter = new NcFileAdapter())
{
// recupero i dati LIVE dei parametri HMI della ricetta...
CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
var currParams = new Dictionary<string, double>();
foreach (var item in currRecipe)
{
currParams.Add(item.Key, item.Value.SetpointPLC);
}
// ora salvo ANCHE i dati live...
RecipeLiveData.RecipeParameters = currParams;
// e salvo su disco
ServerConfigController.SaveRecipe(newName);
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// Save current recipe from PLC to Template
/// </summary>
/// <returns></returns>
[Route("saveTemplate"), HttpPut]
public IHttpActionResult SaveTemplate()
{
using (NcFileAdapter ncAdapter = new NcFileAdapter())
{
// recupero i dati LIVE dei parametri HMI della ricetta...
CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// recupero i dati LIVE dei carichi load dei cahnnels di riscaldo...
cmsError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// uso i valopri HMI...
var currParams = new Dictionary<string, double>();
foreach (var item in currRecipe)
{
currParams.Add(item.Key, item.Value.SetpointHMI);
}
// ora salvo nei dati live...
RecipeLiveData.RecipeParameters = currParams;
// carico i dati dei riscaldi...
var currChSet = new Dictionary<int, int>();
foreach (var item in currWarmers)
{
currChSet.Add(item.Key, item.Value.SetpointHMI);
}
RecipeLiveData.ChannelSetpoints = currChSet;
// e salvo su disco
ServerConfigController.SaveRecipeTemplate();
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// Do actual recipe parameters FileSave
/// </summary>
/// <param name="currParams"></param>
private static void saveCurrentRecipeParams(Dictionary<string, double> currParams)
{
// ora salvo ANCHE i dati live...
RecipeLiveData.RecipeParameters = currParams;
// e salvo su disco
ServerConfigController.SaveRecipeCurrent();
}
protected static CmsError writeCurrentRecipeToPlc()
{
CmsError checkError = NO_ERROR;
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return libraryError;
// copy data to PLC
checkError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
if (checkError.IsError())
return checkError;
// save parameters to PLC!!!
Dictionary<string, DTORecipeParam> updtRecipe = new Dictionary<string, DTORecipeParam>();
foreach (var item in RecipeLiveData.RecipeParameters)
{
if (prevRecipe.ContainsKey(item.Key))
{
// aggiorno il valore HMI nel parametro
var currParam = prevRecipe[item.Key];
currParam.SetpointHMI = item.Value;
// salvo (1 parametro, potrei fare N...)
updtRecipe.Add(item.Key, currParam);
}
else
{
return NOT_FOUND_ERROR;
}
}
// write to PLC
checkError = ncAdapter.WriteRecipeParams(updtRecipe);
// process ch load setup...
Dictionary<int, int> newRisk = new Dictionary<int, int>();
foreach (var item in RecipeLiveData.ChannelSetpoints)
{
newRisk.Add(item.Key, item.Value);
}
// write to PLC
checkError = ncAdapter.WriteRecipeWarmChSetpHMI(newRisk);
// enable recipe! scrivo sul PLC il comando conferma!
CmsError cmsError = ncAdapter.ConfirmRecipeData(true);
if (cmsError.IsError())
return checkError;
}
return checkError;
}
}
}
@@ -0,0 +1,195 @@
using CMS_CORE_Library.Models;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.NC;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using static CMS_CORE_Library.Models.DataStructures;
using static Thermo.Active.Config.ServerConfig;
using static Thermo.Active.Model.Constants;
using Thermo.Active.Model.DTOModels.Recipe;
using Thermo.Active.Config;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/warmers")]
public class WarmersController : ApiController
{
[Route("channels"), HttpGet]
public IHttpActionResult GetCurrentWarmersChannels()
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
CmsError cmsError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
return Ok(currWarmers);
}
}
[Route("resistances"), HttpGet]
public IHttpActionResult GetCurrentWarmersResistances()
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
CmsError cmsError = ncAdapter.GetWarmersResistances(out Dictionary<int, Model.ConfigModels.RiskResistModel> currWarmers);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
return Ok(currWarmers);
}
}
[Route("update"), HttpPut]
public IHttpActionResult WriteSetpoints(Dictionary<int, int> channelsLoad)
{
// scrive su CHp da ricetta oppure da override x parametri utente...
if (channelsLoad != null)
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
// scrivo sul PLC
ncAdapter.WriteRecipeWarmChSetpHMI(channelsLoad);
// ritorno solo fatto!
return Ok();
}
}
else
{
return NotFound();
}
}
/// <summary>
/// Confirm recipe modification (parameters: HMI --> PLC)
/// </summary>
/// <returns></returns>
[Route("confirm"), HttpPut]
public IHttpActionResult ConfirmEdit()
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
// scrivo sul PLC il comando conferma!
CmsError cmsError = ncAdapter.ConfirmRecipeData(true);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// recupero i dati LIVE dei parametri HMI dei riscaldi...
cmsError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// rileggo la ricetta
var currParams = new Dictionary<int, int>();
foreach (var item in currWarmers)
{
currParams.Add(item.Key, item.Value.SetpointHMI);
}
saveCurrentRecipeWarmers(currParams);
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// Cancel recipe modification (parameters: PLC --> HMI)
/// </summary>
/// <returns></returns>
[Route("cancel"), HttpPut]
public IHttpActionResult CancelEdit()
{
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
// scrivo sul PLC il comando annula!
CmsError cmsError = ncAdapter.ConfirmRecipeData(false);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// recupero i dati LIVE dei parametri HMI dei riscaldi...
cmsError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// rileggo la ricetta
var currParams = new Dictionary<int, int>();
foreach (var item in currWarmers)
{
currParams.Add(item.Key, item.Value.SetpointHMI);
}
saveCurrentRecipeWarmers(currParams);
// ritorno solo fatto!
return Ok();
}
}
[Route("setConfig"), HttpPut]
public IHttpActionResult SetConfig()
{
// scrive configurazioni RISK
using (NcAdapter ncAdapter = new NcAdapter())
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
return NotFound();
// scrivo sul PLC
ncAdapter.WriteRecipeWarmConfig();
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// Do actual recipe warmers setpoints FileSave
/// </summary>
/// <param name="chSetpoints"></param>
private static void saveCurrentRecipeWarmers(Dictionary<int, int> chSetpoints)
{
// ora salvo ANCHE i dati live...
RecipeLiveData.ChannelSetpoints = chSetpoints;
// e salvo su disco
ServerConfigController.SaveRecipeCurrent();
}
}
}
+8 -1
View File
@@ -113,7 +113,14 @@ namespace Thermo.Active.Listeners
{
SignalRListener.SendThermoGaugeData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_PROD_INFO_DATA, (a, b) =>
{
SignalRListener.SendThermoProdInfoData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_PROD_CYCLE_DATA, (a, b) =>
{
SignalRListener.SendThermoProdCycleData(a);
}));
// Broadcast
infos.Add(MessageServices.Current.Subscribe(BROADCAST_DATA, (a, b) =>
@@ -359,6 +359,30 @@ namespace Thermo.Active.Listeners.SignalR
context.Clients.Group("ncData").gaugeData(currGauge);
}
}
public static void SendThermoProdInfoData(object prodInfoData)
{
ProdInfoModel currProdInfo = prodInfoData as ProdInfoModel;
if (!LastProdInfoData.Equals(currProdInfo))
{
LastProdInfoData = currProdInfo;
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").prodInfoData(currProdInfo);
}
}
public static void SendThermoProdCycleData(object prodCycleData)
{
ProdCycleModel currProdCycle = prodCycleData as ProdCycleModel;
if (!LastProdCycleData.Equals(currProdCycle))
{
LastProdCycleData = currProdCycle;
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").prodCycleData(currProdCycle);
}
}
public static void SetGatewayRebootStatus(object status)
{
@@ -433,6 +457,10 @@ namespace Thermo.Active.Listeners.SignalR
group.recipeWarmersData(LastWarmersData);
// THERMO Gauges
group.gaugeData(LastGaugeData);
// THERMO prod info data
group.prodInfoData(LastProdInfoData);
// THERMO prod cycle data
group.prodCycleData(LastProdCycleData);
Debug.WriteLine(string.Format("{0} {1} Broadcast..completed", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), DateTime.Now.Millisecond));
Monitor.Exit(_broadcastlock);
@@ -33,6 +33,10 @@ namespace Thermo.Active.Listeners
public static List<DTOScadaModel> LastModulesData = new List<DTOScadaModel>();
public static List<DTOScadaModel> LastWarmersData = new List<DTOScadaModel>();
public static ThermoModels.GaugeModel LastGaugeData = new ThermoModels.GaugeModel();
public static ThermoModels.ProdCycleModel LastProdCycleData = new ThermoModels.ProdCycleModel();
public static ThermoModels.ProdInfoModel LastProdInfoData = new ThermoModels.ProdInfoModel();
public static bool LastIsNcConnected = false;
+1 -1
View File
@@ -31,4 +31,4 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("0.3.2")]
[assembly: AssemblyVersion("0.6.2")]
+2
View File
@@ -222,6 +222,8 @@
<Compile Include="Attributes\SignalRAuthorizeAttribute.cs" />
<Compile Include="Controllers\SignalR\NcHub.cs" />
<Compile Include="Controllers\WebApi\ApiAlarmController.cs" />
<Compile Include="Controllers\WebApi\ModulesController.cs" />
<Compile Include="Controllers\WebApi\WarmersController.cs" />
<Compile Include="Controllers\WebApi\RecipeController.cs" />
<Compile Include="Controllers\WebApi\AuthorizationController.cs" />
<Compile Include="Controllers\WebApi\CmsConnectController.cs" />
@@ -1,10 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.modal.estrazione-info {
width: 560px;
height: 411px;
}
@@ -8,495 +8,502 @@
@button-machine-color-to : #404040;
button:focus {
outline: none;
outline: none;
}
button {
cursor: pointer;
-webkit-tap-highlight-color: transparent;
cursor: pointer;
-webkit-tap-highlight-color: transparent;
}
button[disabled] {
cursor: not-allowed !important;
cursor: not-allowed !important;
* {
cursor: not-allowed !important;
}
* {
cursor: not-allowed !important;
}
}
button.btn[disabled] {
border-radius: 2px;
border-radius: 2px;
background-color: #dddddd;
background-image: none;
box-shadow: none;
color: @color-warm-grey;
border-radius: 2px;
border-radius: 2px;
background-color: #dddddd;
background-image: none;
box-shadow: none;
color: @color-warm-grey;
&:hover {
box-shadow: none !important;
}
&:hover {
box-shadow: none !important;
}
}
.btn-demo {
color: #fff;
font-size: 22px;
font-weight: bold;
color: #fff;
font-size: 22px;
font-weight: bold;
}
.button.btn {
max-height: 48px;
display: inline-flex;
padding: 12px 20px !important;
min-height: 48px;
max-height: 48px;
display: inline-flex;
padding: 12px 20px !important;
min-height: 48px;
}
button.btn,
.button.btn {
height: @button-height;
box-sizing: border-box;
border-radius: 2px;
margin: 0 8px;
text-align: center;
font-size: 18px;
font-weight: bold;
box-shadow: @button-shadow;
padding: 0 20px;
border: none;
background-image: linear-gradient(to bottom, @color-white2, @color-silver);
color: @color-darkish-blue;
height: @button-height;
box-sizing: border-box;
border-radius: 2px;
margin: 0 8px;
text-align: center;
font-size: 18px;
font-weight: bold;
box-shadow: @button-shadow;
padding: 0 20px;
border: none;
background-image: linear-gradient(to bottom, @color-white2, @color-silver);
color: @color-darkish-blue;
// display: inline-block;
// align-items: flex-start;
&:active:not([disabled]) {
background-image: linear-gradient(to bottom, @color-silver, @color-white2);
border: none !important;
box-shadow: inset @button-shadow !important;
}
// display: inline-block;
// align-items: flex-start;
&:active:not([disabled]) {
background-image: linear-gradient(to bottom, @color-silver, @color-white2);
border: none !important;
box-shadow: inset @button-shadow !important;
}
&:hover {
box-shadow: inset 0px 0px 0px 2px #8eb5e2;
}
&:hover {
box-shadow: inset 0px 0px 0px 2px #8eb5e2;
}
&.dark-blue {
background-color: @color-blue;
color: white;
}
&.btn-danger {
color: @color-scarlet;
}
&.dark-blue:active {
background-color: @color-darkish-blue-two !important;
}
&.pressed {
background-image: linear-gradient(to bottom, @color-silver, @color-white2);
border: none !important;
box-shadow: inset @button-shadow !important;
}
}
button.btn.btn-success {
background-image: linear-gradient(to bottom, @button-success-color-from, @button-success-color-to);
&.dark-blue {
background-color: @color-blue;
color: white;
border: #001e48 1px solid;
}
&:active {
background-image: linear-gradient(to bottom, @button-success-color-to, @button-success-color-from) !important;
box-shadow: inset @button-shadow;
border: #001e48 1px solid !important;
color: #8eb5e2
}
}
&.btn-danger {
color: @color-scarlet;
}
button.btn.btn-success[disabled] {
border-radius: 2px;
border-radius: 2px;
box-shadow: none;
color: @color-warm-grey;
border: none;
&.dark-blue:active {
background-color: @color-darkish-blue-two !important;
}
&:hover {
box-shadow: none !important;
background-image: linear-gradient(to bottom, @button-success-color-from, @button-success-color-to) !important;
}
}
&.pressed {
background-image: linear-gradient(to bottom, @color-silver, @color-white2);
border: none !important;
box-shadow: inset @button-shadow !important;
}
button.under {
width: 208px;
height: 45px;
object-fit: contain;
border-radius: 100px;
background-image: linear-gradient(to bottom, @button-machine-color-from, @button-machine-color-to);
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
border: none;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
img {
max-width: 178px;
max-height: 45px;
}
&.pressed:active,
&:active {
background-image: none;
background-color: @button-machine-color-to;
}
&.pressed {
background-image: linear-gradient(to bottom, @button-machine-color-to, @button-machine-color-from);
box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.4);
}
}
button.square {
// width: @button-height;
// height: @button-height;
border-radius: 2px !important; // background-color: #4b4b4b;
height: @button-height;
width: @button-height;
padding: 0;
margin: 0;
}
&:hover {
background-color: @button-success-color-to;
}
button.btn.btn-success {
background-image: linear-gradient(to bottom, @button-success-color-from, @button-success-color-to);
color: white;
border: #001e48 1px solid;
&:active {
background-image: linear-gradient(to bottom, @button-success-color-to, @button-success-color-from) !important;
box-shadow: inset @button-shadow;
border: #001e48 1px solid !important;
color: #8eb5e2
}
}
button.btn.btn-success[disabled] {
border-radius: 2px;
border-radius: 2px;
box-shadow: none;
color: @color-warm-grey;
border: none;
&:hover {
box-shadow: none !important;
background-image: linear-gradient(to bottom, @button-success-color-from, @button-success-color-to) !important;
}
}
button.under {
width: 208px;
height: 45px;
object-fit: contain;
border-radius: 100px;
background-image: linear-gradient(to bottom, @button-machine-color-from, @button-machine-color-to);
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
border: none;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
img {
max-width: 178px;
max-height: 45px;
}
&.pressed:active,
&:active {
background-image: none;
background-color: @button-machine-color-to;
}
&.pressed {
background-image: linear-gradient(to bottom, @button-machine-color-to, @button-machine-color-from);
box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.4);
}
}
button.square {
// width: @button-height;
// height: @button-height;
border-radius: 2px !important; // background-color: #4b4b4b;
&:hover {
background-color: @button-success-color-to;
}
}
.btn-spacer {
margin: 0 8px;
padding: 0 4px;
display: flex;
margin: 0 8px;
padding: 0 4px;
display: flex;
&.collapsed {
margin: 0;
padding: 0;
}
&.collapsed {
margin: 0;
padding: 0;
}
}
button.modal-close {
width: 28px;
height: 28px;
padding: none;
border-radius: 50%;
border: none;
background-color: #002680;
color: #fff;
width: 28px;
height: 28px;
padding: none;
border-radius: 50%;
border: none;
background-color: #002680;
color: #fff;
i {
font-size: 18px;
}
i {
font-size: 18px;
}
}
.btn-group {
margin: 0 8px;
padding: 0;
display: flex;
margin: 0 8px;
padding: 0;
display: flex;
button {
border-radius: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
button {
border-radius: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
&:first-child {
border-top-left-radius: 2px !important;
border-bottom-left-radius: 2px !important;
}
&:last-child {
border-top-right-radius: 2px !important;
border-bottom-right-radius: 2px !important;
}
&:first-child {
border-top-left-radius: 2px !important;
border-bottom-left-radius: 2px !important;
}
&:last-child {
border-top-right-radius: 2px !important;
border-bottom-right-radius: 2px !important;
}
}
}
button.soft {
width: 96px;
height: 48px;
margin: 4px;
background-image: linear-gradient(to bottom, #f1f1f1, @color-silver);
box-sizing: border-box;
border: none;
box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.5);
color: @color-darkish-blue;
font-size: 14px;
border-radius: 2px;
width: 96px;
height: 48px;
margin: 4px;
background-image: linear-gradient(to bottom, #f1f1f1, @color-silver);
box-sizing: border-box;
border: none;
box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.5);
color: @color-darkish-blue;
font-size: 14px;
border-radius: 2px;
&.icon {
display: flex;
padding: 1px 12px;
align-items: center;
text-align: left;
}
&.icon {
display: flex;
padding: 1px 12px;
align-items: center;
text-align: left;
}
&.axes {
width: 54px;
font-size: 1.8em;
display: block;
font-weight: 600;
padding: 0px;
text-align: center;
}
&.axes {
width: 54px;
font-size: 1.8em;
display: block;
font-weight: 600;
padding: 0px;
text-align: center;
}
img {
image-rendering: -webkit-optimize-contrast;
display: inline;
vertical-align: bottom;
margin-right: 6px;
}
&.active {
background-image: linear-gradient(to bottom, @color-cerulean, @color-clear-blue) !important;
color: white !important;
box-shadow: inset 0px 0px 3px 0px rgba(0, 0, 0, 0.5);
img {
width: 18px;
image-rendering: -webkit-optimize-contrast;
display: inline;
vertical-align: bottom;
margin-right: 6px;
filter: grayscale(100%) invert(100) saturate(200);
}
}
&.active {
background-image: linear-gradient(to bottom, @color-cerulean, @color-clear-blue) !important;
color: white !important;
box-shadow: inset 0px 0px 3px 0px rgba(0, 0, 0, 0.5);
&:active {
background-image: linear-gradient(to bottom, @color-silver, #f1f1f1);
box-shadow: inset 0px 0px 3px 0px rgba(0, 0, 0, 0.5);
}
img {
filter: grayscale(100%) invert(100) saturate(200);
}
&.spaced {
margin: 4px 8px;
}
&[disabled]:not(.readonly) {
background-color: #dddddd !important;
// background-image: none !important;
box-shadow: none !important;
color: @color-warm-grey;
img {
filter: grayscale(100%) invert(44%);
}
}
&:active {
background-image: linear-gradient(to bottom, @color-silver, #f1f1f1);
box-shadow: inset 0px 0px 3px 0px rgba(0, 0, 0, 0.5);
}
&.square {
width: 60px;
}
&.spaced {
margin: 4px 8px;
}
&.incremental {
padding: 0px 2px;
margin-right: 0px;
margin-left: 0px;
}
&[disabled]:not(.readonly) {
background-color: #dddddd !important;
// background-image: none !important;
box-shadow: none !important;
color: @color-warm-grey;
&.firstIncr {
margin-left: 4px;
border-radius: 2px 0px 0px 2px !important
}
img {
filter: grayscale(100%) invert(44%);
}
}
&.middleIncr {
border-radius: 0px !important
}
&.square {
width: 60px;
}
&.lastIncr {
border-radius: 0px 2px 2px 0px !important
}
&.incremental {
padding: 0px 2px;
margin-right: 0px;
margin-left: 0px;
}
i.fa {
font-size: 24px;
}
&.firstIncr {
margin-left: 4px;
border-radius: 2px 0px 0px 2px !important
}
&.readonly {
background: transparent;
box-shadow: none;
border: 3px solid #4e585e;
color: #ddd;
cursor: default;
}
&.middleIncr {
border-radius: 0px !important
}
&.lastIncr {
border-radius: 0px 2px 2px 0px !important
}
i.fa {
font-size: 24px;
}
&.readonly {
background: transparent;
box-shadow: none;
border: 3px solid #4e585e;
color: #ddd;
cursor: default;
}
&.inverter {
background: transparent;
box-shadow: none;
border: 3px solid #657178;
color: white
}
&.inverter {
background: transparent;
box-shadow: none;
border: 3px solid #657178;
color: white
}
}
.togglebutton {
vertical-align: middle;
-webkit-tap-highlight-color: transparent;
vertical-align: middle;
-webkit-tap-highlight-color: transparent;
}
.togglebutton,
.togglebutton label,
.togglebutton input,
.togglebutton .toggle {
user-select: none;
user-select: none;
}
.togglebutton label {
cursor: pointer;
color: rgba(0, 0, 0, 0.26);
cursor: pointer;
color: rgba(0, 0, 0, 0.26);
}
.form-group.is-focused .togglebutton label {
color: rgba(0, 0, 0, 0.26);
color: rgba(0, 0, 0, 0.26);
}
.form-group.is-focused .togglebutton label:hover,
.form-group.is-focused .togglebutton label:focus {
color: rgba(0, 0, 0, .54);
color: rgba(0, 0, 0, .54);
}
fieldset[disabled] .form-group.is-focused .togglebutton label {
color: rgba(0, 0, 0, 0.26);
color: rgba(0, 0, 0, 0.26);
}
.togglebutton label input[type=checkbox] {
opacity: 0;
width: 0;
height: 0;
opacity: 0;
width: 0;
height: 0;
display: none;
}
.togglebutton label .toggle {
text-align: left;
margin-left: 5px;
text-align: left;
margin-left: 5px;
}
.togglebutton label .toggle,
.togglebutton label input[type=checkbox][disabled]+.toggle {
content: "";
display: inline-block;
width: 70px;
height: 24px;
background-color: #ddd;
border-radius: 15px;
margin-right: 15px;
transition: background 0.3s ease;
vertical-align: middle;
position: relative;
box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.5);
line-height: 24px;
text-align: center;
color: #979797;
font-size: 10px;
text-transform: uppercase;
content: "";
display: inline-block;
width: 70px;
height: 24px;
background-color: #ddd;
border-radius: 15px;
margin-right: 15px;
transition: background 0.3s ease;
vertical-align: middle;
position: relative;
box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.5);
line-height: 24px;
text-align: center;
color: #979797;
font-size: 10px;
text-transform: uppercase;
}
.togglebutton label .toggle:after {
content: "";
display: inline-block;
width: 20px;
height: 20px;
background-image: linear-gradient(to bottom, #1756ad, #002680);
border-radius: 20px;
position: relative;
box-shadow: 0 1px 1px 0px rgba(0, 0, 0, 0.4);
left: 1px;
top: 2px;
position: absolute;
border: none;
transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease;
content: "";
display: inline-block;
width: 20px;
height: 20px;
background-image: linear-gradient(to bottom, #1756ad, #002680);
border-radius: 20px;
position: relative;
box-shadow: 0 1px 1px 0px rgba(0, 0, 0, 0.4);
left: 1px;
top: 2px;
position: absolute;
border: none;
transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease;
}
.togglebutton label input[type=checkbox][disabled]+.toggle:after,
.togglebutton label input[type=checkbox][disabled]:checked+.toggle:after {
background-color: #BDBDBD;
background-color: #BDBDBD;
}
.togglebutton label input[type=checkbox]+.toggle:active:after,
.togglebutton label input[type=checkbox][disabled]+.toggle:active:after {
box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.6), 0 0 0 20px rgba(0, 0, 0, 0.2);
box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.6), 0 0 0 20px rgba(0, 0, 0, 0.2);
}
.togglebutton label input[type=checkbox]:checked+.toggle:after {
left: 48px;
left: 48px;
}
.togglebutton label input[type=checkbox]:checked+.toggle {
content: "";
background-image: linear-gradient(to bottom, #3fa4ff, #1791ff);
color: #fff;
content: "";
background-image: linear-gradient(to bottom, #3fa4ff, #1791ff);
color: #fff;
}
.togglebutton.big {
span.toggle {
height: 40px;
width: 112px;
border-radius: 20px;
font-size: 17px;
line-height: 40px;
font-weight: bold;
span.toggle {
height: 40px;
width: 112px;
border-radius: 20px;
font-size: 17px;
line-height: 40px;
font-weight: bold;
&:after {
width: 36px;
height: 36px;
}
&:after {
width: 36px;
height: 36px;
}
}
input[type=checkbox]:checked+.toggle:after {
left: 74px;
}
input[type=checkbox]:checked+.toggle:after {
left: 74px;
}
}
.custom-checkbox {
width: 22px;
height: 22px;
display: flex;
// margin-left: 16px;
align-items: center;
position: relative;
width: 22px;
height: 22px;
display: flex;
// margin-left: 16px;
align-items: center;
position: relative;
}
.custom-checkbox label {
cursor: pointer;
position: absolute;
width: 22px;
height: 22px;
top: 0;
left: 0;
background-color: @color-white2;
box-shadow: inset 0 1px 3px @color-black-50;
border-radius: 2px;
cursor: pointer;
position: absolute;
width: 22px;
height: 22px;
top: 0;
left: 0;
background-color: @color-white2;
box-shadow: inset 0 1px 3px @color-black-50;
border-radius: 2px;
}
.custom-checkbox label:after {
opacity: 0;
content: '';
position: absolute;
width: 16px;
height: 9px;
background: transparent;
top: 3px;
left: 2px;
border: 5px solid #1791ff;
border-top: none;
border-right: none;
transform: rotate(-48deg);
opacity: 0;
content: '';
position: absolute;
width: 16px;
height: 9px;
background: transparent;
top: 3px;
left: 2px;
border: 5px solid #1791ff;
border-top: none;
border-right: none;
transform: rotate(-48deg);
}
.custom-checkbox input[type=checkbox]:checked+label {
cursor: pointer;
position: absolute;
width: 22px;
height: 22px;
top: 0;
left: 0;
background-color: @color-white2;
border: solid 1px @color-clear-blue;
border-radius: 2px;
cursor: pointer;
position: absolute;
width: 22px;
height: 22px;
top: 0;
left: 0;
background-color: @color-white2;
border: solid 1px @color-clear-blue;
border-radius: 2px;
}
.custom-checkbox input[type=checkbox]:checked+label:after {
opacity: 1;
opacity: 1;
}
.custom-checkbox-label {
display: flex;
margin-left: 8px;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
display: flex;
margin-left: 8px;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
}
// .togglebutton label input[type=checkbox]:checked+.toggle:after {
@@ -1,51 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.modal.ciclo-info {
section {
.specific {
padding: 0 10px;
.caricatore-buttons {
button {
margin-right: 15px;
margin-left: 5px;
width: 48px;
height: 48px;
object-fit: contain;
border-radius: 2px;
box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.5);
border: none;
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
&:last-of-type {
border: solid 1px #001e48;
background-image: linear-gradient(to bottom, #1756ad, #002680);
}
}
}
}
.box {
margin-bottom: 10px;
width: 500px;
.body {
padding: 5px 10px;
}
}
}
}
@@ -1,40 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.modal.controstamposetup-info {
section {
.controstampo-cycle {
margin-left: 37%;
}
.specific {
padding-left: 5px;
.box {
margin-bottom: 5px;
background-color: #e5f3ff;
&:first-of-type {
background-color: white;
}
&:last-of-type {
background-color: #b3dbff;
}
}
.input-area {
width: 480px;
}
}
}
}
@@ -1,27 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.modal.estrazione-info {
section.body {
section {
.specific {
justify-content: flex-end;
padding-left: 10px;
.box {
margin: 0;
background-color: #e5f3ff;
}
}
}
}
}
@@ -1,59 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.modal.formato-info {
section {
.tast {
margin-left: -300px;
}
}
.radio-buttons {
display: flex;
justify-content: flex-start;
align-items: center;
input {
width: 24px;
height: 24px;
object-fit: contain;
border-radius: 12px;
background-color: #f1f1f1;
}
label {
font-size: 18px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: 1.11;
letter-spacing: normal;
text-align: right;
color: #4b4b4b;
&:first-of-type {
font-size: 24px;
font-weight: 500;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
text-align: center;
color: @color-darkish-blue;
padding-right: 200px;
padding-left: 20px;
}
}
}
}
@@ -1,37 +1,54 @@
// out: false, sourceMap: false, main: ../style.less
@row: row;
@col: col;
.@{row} {
display: flex;
width: 100%;
flex-direction: row;
display: flex;
width: 100%;
flex-direction: row;
}
.@{col} {
display: flex;
flex-direction: column;
display: flex;
flex-direction: column;
}
.relative {
position: relative;
position: relative;
}
.absolute {
position: absolute;
position: absolute;
&.bottom {
bottom: 1rem;
}
&.left {
left: 1rem;
}
&.right {
right: 1rem;
}
&.top {
top: 1rem;
}
}
.full-height {
height: 100%;
height: 100%;
}
.full-width {
width: 100%;
width: 100%;
}
.pull-right {
float: right;
float: right;
}
.pull-left {
float: left;
}
float: left;
}
@@ -2,7 +2,7 @@
@import "colors.less";
@import "fonts.less";
@font-family: 'Work Sans',
sans-serif;
sans-serif;
@font-size: 18px;
@font-size-small: 14px;
@input-height: 48px;
@@ -10,97 +10,266 @@
.form-group {
display: block;
margin-bottom: 33px;
label {
display: block;
margin-bottom: 33px;
color: @color-label-grey;
font-size: @font-size;
line-height: 1;
font-family: @font-family;
text-align: left;
margin-bottom: 13px;
}
label {
display: block;
color: @color-label-grey;
font-size: @font-size;
line-height: 1;
font-family: @font-family;
text-align: left;
margin-bottom: 13px;
}
input,
select {
display: block;
border-radius: 2px;
border: solid 1px #dfdfdf;
height: @input-height;
line-height: 1.1;
font-family: @font-family;
color: @color-input-light;
font-size: @font-size;
background-color: @color-input-background;
margin: 0 0px;
padding-right: 0;
padding-left: 20px;
width: calc(~'100% - 20px');
}
input,
select {
display: block;
border-radius: 2px;
border: solid 1px #dfdfdf;
height: @input-height;
line-height: 1.1;
font-family: @font-family;
color: @color-input-light;
font-size: @font-size;
background-color: @color-input-background;
margin: 0 0px;
padding-right: 0;
padding-left: 20px;
width: calc(~'100% - 20px');
}
textarea {
box-sizing: border-box;
resize: none;
display: block;
border-radius: 2px;
border: solid 1px #dfdfdf;
height: 120px;
font-family: @font-family;
color: @color-input-light;
font-size: 16px;
background-color: @color-input-background;
margin: 0 0px;
padding-right: 0;
width: 100%;
padding: 10px 5px;
}
textarea {
box-sizing: border-box;
resize: none;
display: block;
border-radius: 2px;
border: solid 1px #dfdfdf;
height: 120px;
font-family: @font-family;
color: @color-input-light;
font-size: 16px;
background-color: @color-input-background;
margin: 0 0px;
padding-right: 0;
width: 100%;
padding: 10px 5px;
}
select {
padding: 0;
width: 100%;
}
select {
padding: 0;
width: 100%;
}
input.invalid:not([readonly]),
input[aria-invalid="true"]:not([readonly]) {
box-shadow: inset 0px 0px 0px 1px @color-scarlet !important;
}
input.invalid:not([readonly]),
input[aria-invalid="true"]:not([readonly]) {
box-shadow: inset 0px 0px 0px 1px @color-scarlet !important;
}
small.error {
text-align: left;
display: block;
color: @color-scarlet;
font-size: @font-size-small;
font-family: @font-family;
line-height: 1;
padding-left: 16px;
margin: 2px 0;
}
small.error {
text-align: left;
display: block;
color: @color-scarlet;
font-size: @font-size-small;
font-family: @font-family;
line-height: 1;
padding-left: 16px;
margin: 2px 0;
}
}
.text-center {
text-align: center;
text-align: center;
}
.block {
display: block;
display: block;
}
.block-center {
margin: auto !important;
margin: auto !important;
}
input.invalid:not([readonly]),
input[aria-invalid="true"]:not([readonly]) {
box-shadow: inset 0px 0px 0px 1px @color-scarlet !important;
box-shadow: inset 0px 0px 0px 1px @color-scarlet !important;
}
input:focus {
outline: 5px #1791ff auto;
outline: 5px #1791ff auto;
}
select:focus {
outline: 5px #1791ff auto;
outline: 5px #1791ff auto;
}
.radio-buttons {
display: flex;
justify-content: flex-start;
align-items: center;
input {
width: 24px;
height: 24px;
object-fit: contain;
border-radius: 12px;
background-color: #f1f1f1;
margin: 0 5px;
}
label {
font-size: 18px;
line-height: 1.11;
color: #4b4b4b;
&:first-of-type {
font-size: 24px;
font-weight: 500;
color: @color-darkish-blue;
flex: 1;
}
}
}
.input-area {
width: 100%;
display: flex;
flex-flow: row;
align-items: center;
justify-content: space-between;
&.grid {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: repeat(2, auto);
grid-column-gap: 1rem;
>button {
margin: 0;
}
&.grid-4 {
grid-template-columns: repeat(4, auto);
}
&.grid-5 {
grid-template-columns: repeat(5, auto);
}
&.grid-6 {
grid-template-columns: repeat(6, auto);
}
&.grid-7 {
grid-template-columns: repeat(7, auto);
}
&.grid-8 {
grid-template-columns: repeat(8, auto);
}
&.grid-9 {
grid-template-columns: repeat(9, auto);
}
&.grid-10 {
grid-template-columns: repeat(10, auto);
}
}
&.left {
justify-content: flex-start;
width: auto;
justify-self: left;
}
span.toggle {
margin-right: 0 !important;
}
&.col {
flex-flow: column;
align-items: flex-start;
height: auto;
}
h3 {
color: #002680;
margin: 18px 0;
}
.buttons {
width: 100%;
display: flex;
flex-flow: row;
margin-bottom: 18px;
&:last-child {
margin-bottom: 0;
}
}
label {
color: #002680;
font-size: 24px;
font-weight: 500;
flex: 1;
}
.numeric {
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
width: 100px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 0 4px;
align-items: center;
justify-content: stretch;
input {
border: none;
font-size: 16px;
text-align: right;
height: 100%;
width: 100%;
outline: none !important;
background-color: transparent;
&[type=number]::-webkit-inner-spin-button,
&[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
}
span {
padding: 0 3px;
font-size: 14px;
}
}
select {
min-width: 150px;
height: 48px;
background-color: #fff;
padding: 0 20px;
font-size: 1rem;
}
}
@@ -4,28 +4,18 @@
@import "modals.less";
@import "graph-dashboard.less";
@import "dashboard.less";
@import "pirometro.less";
@import "riscaldi.less";
@import "formato.less";
@import "slider.less";
@import "tastierino.less";
@import "preriscaldo-dashboard.less";
@import "circlegantt.less";
@import "paddle.less";
@import "arretramento-riscaldi.less";
@import "arch-interface.less";
@import "avvio-prod.less";
@import "ciclo.less";
@import "raffreddamento.less";
@import "processo.less";
@import "progrprerisc.less";
@import "controstamposetup.less";
@import "quote-velocita.less";
@import "opzioni.less";
@import "imbutitura.less";
@import "estrazione.less";
@import "scheda.less";
@import "vuoto.less";
@import "popups.less";
@import "grid-system.less";
@import "input.less";
@@ -275,4 +265,20 @@ body {
.smooth-dnd-no-user-select * {
cursor: move !important;
}
.mb-10 {
margin-bottom: 10px;
}
.mt-10 {
margin-top: 10px;
}
.mr-10 {
margin-right: 10px;
}
.ml-10 {
margin-left: 10px;
}
@@ -1,39 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
@import "setup.less";
.modal.pirometro-info {
section {
&.termo {
.tast {
margin-left: 400px;
}
}
.specific {
width: 470px;
}
.termospecific {
button {
margin-left: 5px;
width: 48px;
height: 48px;
object-fit: contain;
border-radius: 2px;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
border: solid 1px #001e48;
background-image: linear-gradient(to bottom, #1756ad, #002680);
}
}
}
}
@@ -1,42 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.modal.quote-velocita-info {
section {
&.cornice {
.tast {
margin-left: 125px;
}
}
aside {
.box {
.body {
padding: 4.5px;
.input-area {
margin: 5px auto;
}
}
}
}
.specific {
button {
position: absolute;
width: 48px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
border: solid 1px #001e48;
background-image: linear-gradient(to bottom, #1756ad, @color-darkish-blue);
bottom: 1rem;
left: 1rem;
}
}
}
}
@@ -1,20 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.modal.raffreddamento-info {
width: 626px;
height: 569px;
section {
.specific {
margin-left: 50px;
width: 480px;
}
}
}
@@ -4,65 +4,33 @@
@import "fonts.less";
.modal.riscaldi-info {
section.body {
.warmers {
position: relative;
section {
justify-content: center;
.sost-dec {
width: 471px;
}
}
}
.specific {
svg {
width: 100%;
margin-top: 10px;
margin-bottom: 10px;
height: 100%;
&:last-of-type {
margin: unset;
div {
display: flex;
justify-content: flex-end;
div {
display: flex;
flex-direction: column;
button {
width: 48px;
height: 48px;
}
}
}
rect {
fill: none;
stroke: 1px solid blue;
}
select {
width: 110px;
height: 48px;
}
.resistance {
width: calc(100% - 4px);
height: calc(100% - 4px);
background-color: #f40000;
margin: 2px;
border-radius: 4px;
.btn {
margin-top: 10px;
width: 201px;
display: flex;
align-items: center;
justify-content: center;
font-size: 32px;
font-weight: bold;
color: #fff;
}
button {
height: 48px;
}
label {
margin-bottom: 10px;
color: #002680;
font-size: 24px;
font-weight: 500;
}
}
}
@@ -1,19 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.scheda{
.body{
padding: 0px;
.input-area{
width: 480px;
margin: 4px;
margin-bottom: 0px;
}
}
}
@@ -4,7 +4,7 @@
@import "fonts.less";
.setup {
padding-top: 50px;
padding-top: 25px;
display: flex;
justify-content: flex-start;
align-items: center;
@@ -23,7 +23,7 @@
.modal {
width: 1820px;
height: 949px;
height: 980px;
section.body {
height: calc(~'100% - 66px');
@@ -63,13 +63,17 @@
}
.specific {
article {
display: flex;
flex-direction: column;
width: 100%;
align-items: center;
// align-items: center;
position: relative;
&.shrink {
flex-shrink: 2;
}
.slides {
width: 100%;
height: 160px;
@@ -100,6 +104,42 @@
width: 100%;
flex: 1;
.borded_label {
min-width: 100px;
height: 60px;
border-radius: 40px;
border: solid 4px #9b9b9b;
display: flex;
flex-direction: column;
justify-content: center;
padding: 0 1rem;
position: absolute;
background-color: white;
div {
display: grid;
grid-template-columns: auto 1f auto;
img {
grid-column: 1;
width: unset;
height: unset;
}
span {
grid-column: 2;
text-align: right;
}
small {
text-align: center;
grid-column: 3;
}
}
}
img {
width: 100%;
}
@@ -129,6 +169,13 @@
}
}
.divider {
width: 100%;
height: 20px;
}
.modal-footer-navigator {
position: absolute;
bottom: 0;
@@ -344,12 +391,34 @@
}
article {
.box .body {
border-width: 4px;
}
}
.box {
margin-bottom: 30px;
margin-bottom: 20px;
box-sizing: border-box;
clear: both;
&.transparent {
.body {
border: none;
}
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.box-500 {
width: 500px;
}
.header {
display: flex;
align-items: center;
@@ -363,11 +432,13 @@
}
.body {
padding: 20px;
display: flex;
padding: 1rem;
display: grid;
grid-row-gap: 1rem;
flex-flow: column;
justify-items: center;
padding-bottom: 10px;
padding-top: 5px;
border: 2px solid #979797;
}
@@ -401,94 +472,6 @@
.input-area {
margin: 10px auto;
display: flex;
flex-flow: row;
align-items: center;
justify-content: space-between;
width: 100%;
height: 48px;
&.col {
flex-flow: column;
align-items: flex-start;
height: auto;
}
h3 {
font-weight: normal;
color: #002680;
margin: 18px 0;
}
.buttons {
width: 100%;
display: flex;
flex-flow: row;
margin-bottom: 18px;
&:last-child {
margin-bottom: 0;
}
}
label {
color: #002680;
font-size: 24px;
font-weight: 500;
flex: 1;
}
.numeric {
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
width: 100px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 4px;
align-items: center;
justify-content: stretch;
input {
border: none;
font-size: 16px;
text-align: right;
height: 100%;
width: 100%;
outline: none !important;
background-color: transparent;
&[type=number]::-webkit-inner-spin-button,
&[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
}
span {
padding: 0 3px;
font-size: 14px;
}
}
select {
min-width: 150px;
height: 48px;
background-color: #fff;
padding: 0 20px;
font-size: 1rem;
}
}
.setup-play {
cursor: pointer;
@@ -4,13 +4,16 @@
@import "fonts.less";
.slider {
display: flex;
display: grid;
grid-template-columns: 48px 1fr 48px;
grid-column-gap: 1rem;
width: 100%;
flex-flow: row wrap;
justify-content: space-between;
align-items: center;
.control {
margin: 0 10px;
position: relative;
flex: 1;
@@ -101,6 +104,5 @@
border: none;
box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.5);
background-image: linear-gradient(to bottom, #fff 0%, #bbbcbc 98%);
margin: 16px;
}
}
@@ -9,6 +9,11 @@
background-color: @color-silver;
display: flex;
justify-content: center;
position: fixed;
top: 0;
left: 0;
z-index: 9000;
box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.5);
.mask {
display: grid;
@@ -20,17 +25,15 @@
button {
border: none;
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.5);
color: @color-darkish-blue;
font-size: 20px;
border-radius: 2px;
}
.zero {
grid-column: 1/span 2;
grid-row: 4/5;
border: none;
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
}
.submit {
@@ -38,17 +41,15 @@
grid-column-end: 5;
grid-row-start: 3;
grid-row-end: 5;
border: none;
background-size: 52px;
background-size: 54px;
background-position-x: -1px;
background-image: url(/assets/icons/png/submit.png);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
}
.bCanc {
grid-column: 4/5;
grid-row: 2/3;
background-size: 52px;
background-size: 54px;
background-image: url(/assets/icons/png/canc.png);
}
@@ -107,7 +108,5 @@
grid-column: 4/5;
grid-row: 1/2;
}
}
}
@@ -1,36 +0,0 @@
// out: false, sourceMap: false, main: ../style.less
@import "grid-system.less";
@import "colors.less";
@import "fonts.less";
.modal.vuoto-info {
section {
.specific {
padding-left: 5px;
.box {
margin-bottom: 5px;
background-color: #e5f3ff;
&:first-of-type {
background-color: white;
}
&:last-of-type {
background-color: #b3dbff;
}
}
.input-area {
width: 480px;
}
}
}
}
+257 -295
View File
@@ -2,7 +2,7 @@
@import url(../../libs/glyphicons/styles/glyphicons.css);
@import "iziToast.min.css";
.setup {
padding-top: 50px;
padding-top: 25px;
display: flex;
justify-content: flex-start;
align-items: center;
@@ -20,7 +20,7 @@
}
.setup .modal {
width: 1820px;
height: 949px;
height: 980px;
}
.setup .modal section.body {
height: calc(100% - 66px);
@@ -55,31 +55,33 @@
height: 2px;
margin-left: 0px;
}
.setup .modal section.body section .specific {
.setup .modal section.body section article {
display: flex;
flex-direction: column;
width: 100%;
align-items: center;
position: relative;
}
.setup .modal section.body section .specific .slides {
.setup .modal section.body section article.shrink {
flex-shrink: 2;
}
.setup .modal section.body section article .slides {
width: 100%;
height: 160px;
display: flex;
justify-content: space-evenly;
align-items: center;
}
.setup .modal section.body section .specific .slides img {
.setup .modal section.body section article .slides img {
flex-shrink: 0;
width: 215px;
height: 140px;
border: 1px solid #bbbcbc;
cursor: pointer;
}
.setup .modal section.body section .specific .slides .imgborder {
.setup .modal section.body section article .slides .imgborder {
border: 1px solid #002680;
}
.setup .modal section.body section .specific .svg-area {
.setup .modal section.body section article .svg-area {
display: flex;
justify-content: center;
position: relative;
@@ -87,7 +89,36 @@
width: 100%;
flex: 1;
}
.setup .modal section.body section .specific .svg-area img {
.setup .modal section.body section article .svg-area .borded_label {
min-width: 100px;
height: 60px;
border-radius: 40px;
border: solid 4px #9b9b9b;
display: flex;
flex-direction: column;
justify-content: center;
padding: 0 1rem;
position: absolute;
background-color: white;
}
.setup .modal section.body section article .svg-area .borded_label div {
display: grid;
grid-template-columns: auto 1f auto;
}
.setup .modal section.body section article .svg-area .borded_label div img {
grid-column: 1;
width: unset;
height: unset;
}
.setup .modal section.body section article .svg-area .borded_label div span {
grid-column: 2;
text-align: right;
}
.setup .modal section.body section article .svg-area .borded_label div small {
text-align: center;
grid-column: 3;
}
.setup .modal section.body section article .svg-area img {
width: 100%;
}
.setup .modal section.body footer {
@@ -108,6 +139,10 @@
justify-content: space-between;
align-items: stretch;
}
.setup .divider {
width: 100%;
height: 20px;
}
.setup .modal-footer-navigator {
position: absolute;
bottom: 0;
@@ -279,11 +314,24 @@
bottom: 0;
transform: skewX(-20deg);
}
article .box .body {
border-width: 4px;
}
.box {
margin-bottom: 30px;
margin-bottom: 20px;
box-sizing: border-box;
clear: both;
}
.box.transparent .body {
border: none;
}
.box.center {
margin-left: auto;
margin-right: auto;
}
.box.box-500 {
width: 500px;
}
.box .header {
display: flex;
align-items: center;
@@ -296,11 +344,13 @@
background-color: #979797;
}
.box .body {
padding: 20px;
display: flex;
padding: 1rem;
display: grid;
grid-row-gap: 1rem;
flex-flow: column;
justify-items: center;
padding-bottom: 10px;
padding-top: 5px;
border: 2px solid #979797;
}
.box .submit {
@@ -324,80 +374,6 @@
text-align: center;
color: #002680;
}
.input-area {
margin: 10px auto;
display: flex;
flex-flow: row;
align-items: center;
justify-content: space-between;
width: 100%;
height: 48px;
}
.input-area.col {
flex-flow: column;
align-items: flex-start;
height: auto;
}
.input-area h3 {
font-weight: normal;
color: #002680;
margin: 18px 0;
}
.input-area .buttons {
width: 100%;
display: flex;
flex-flow: row;
margin-bottom: 18px;
}
.input-area .buttons:last-child {
margin-bottom: 0;
}
.input-area label {
color: #002680;
font-size: 24px;
font-weight: 500;
flex: 1;
}
.input-area .numeric {
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
width: 100px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 4px;
align-items: center;
justify-content: stretch;
}
.input-area .numeric input {
border: none;
font-size: 16px;
text-align: right;
height: 100%;
width: 100%;
outline: none !important;
background-color: transparent;
}
.input-area .numeric input[type=number]::-webkit-inner-spin-button,
.input-area .numeric input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.input-area .numeric span {
padding: 0 3px;
font-size: 14px;
}
.input-area select {
min-width: 150px;
height: 48px;
background-color: #fff;
padding: 0 20px;
font-size: 1rem;
}
.setup-play {
cursor: pointer;
margin: auto;
@@ -4584,110 +4560,40 @@
height: 1px;
background-color: #676767;
}
.modal.pirometro-info section.termo .tast {
margin-left: 400px;
.warmers {
position: relative;
}
.modal.pirometro-info section .specific {
width: 470px;
}
.modal.pirometro-info section .termospecific button {
margin-left: 5px;
width: 48px;
height: 48px;
object-fit: contain;
border-radius: 2px;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
border: solid 1px #001e48;
background-image: linear-gradient(to bottom, #1756ad, #002680);
}
.modal.riscaldi-info section.body section {
justify-content: center;
}
.modal.riscaldi-info section.body section .sost-dec {
width: 471px;
}
.modal.riscaldi-info .specific {
.warmers svg {
width: 100%;
margin-top: 10px;
margin-bottom: 10px;
height: 100%;
}
.modal.riscaldi-info .specific:last-of-type {
margin: unset;
.warmers svg rect {
fill: none;
stroke: 1px solid blue;
}
.modal.riscaldi-info .specific:last-of-type div {
.warmers svg .resistance {
width: calc(100% - 4px);
height: calc(100% - 4px);
background-color: #f40000;
margin: 2px;
border-radius: 4px;
display: flex;
justify-content: flex-end;
}
.modal.riscaldi-info .specific:last-of-type div div {
display: flex;
flex-direction: column;
}
.modal.riscaldi-info .specific:last-of-type div div button {
width: 48px;
height: 48px;
}
.modal.riscaldi-info .specific select {
width: 110px;
height: 48px;
}
.modal.riscaldi-info .specific .btn {
margin-top: 10px;
width: 201px;
}
.modal.riscaldi-info .specific button {
height: 48px;
}
.modal.riscaldi-info .specific label {
margin-bottom: 10px;
color: #002680;
font-size: 24px;
font-weight: 500;
}
.modal.formato-info section .tast {
margin-left: -300px;
}
.modal.formato-info .radio-buttons {
display: flex;
justify-content: flex-start;
align-items: center;
}
.modal.formato-info .radio-buttons input {
width: 24px;
height: 24px;
object-fit: contain;
border-radius: 12px;
background-color: #f1f1f1;
}
.modal.formato-info .radio-buttons label {
font-size: 18px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: 1.11;
letter-spacing: normal;
text-align: right;
color: #4b4b4b;
}
.modal.formato-info .radio-buttons label:first-of-type {
font-size: 24px;
font-weight: 500;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
text-align: center;
color: #002680;
padding-right: 200px;
padding-left: 20px;
justify-content: center;
font-size: 32px;
font-weight: bold;
color: #fff;
}
.slider {
display: flex;
display: grid;
grid-template-columns: 48px 1fr 48px;
grid-column-gap: 1rem;
width: 100%;
flex-flow: row wrap;
justify-content: space-between;
align-items: center;
}
.slider .control {
margin: 0 10px;
position: relative;
flex: 1;
}
@@ -4765,7 +4671,6 @@
border: none;
box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.5);
background-image: linear-gradient(to bottom, #fff 0%, #bbbcbc 98%);
margin: 16px;
}
.keyboard {
height: 262px;
@@ -4773,6 +4678,11 @@
background-color: #bbbcbc;
display: flex;
justify-content: center;
position: fixed;
top: 0;
left: 0;
z-index: 9000;
box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.5);
}
.keyboard .mask {
display: grid;
@@ -4784,31 +4694,28 @@
.keyboard .mask button {
border: none;
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.5);
color: #002680;
font-size: 20px;
border-radius: 2px;
}
.keyboard .mask .zero {
grid-column: 1 / span 2;
grid-row: 0.8;
border: none;
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
}
.keyboard .mask .submit {
grid-column-start: 4;
grid-column-end: 5;
grid-row-start: 3;
grid-row-end: 5;
border: none;
background-size: 52px;
background-size: 54px;
background-position-x: -1px;
background-image: url(/assets/icons/png/submit.png);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
}
.keyboard .mask .bCanc {
grid-column: 0.8;
grid-row: 0.66666667;
background-size: 52px;
background-size: 54px;
background-image: url(/assets/icons/png/canc.png);
}
.keyboard .mask .b1 {
@@ -5175,10 +5082,6 @@ body {
width: 100%;
align-self: center;
}
.modal.estrazione-info {
width: 560px;
height: 411px;
}
.arch {
display: flex;
justify-content: flex-end;
@@ -5248,39 +5151,6 @@ body {
.modal.avvio-produzione-info section.body section .specific .tast {
margin-left: 25%;
}
.modal.ciclo-info section .specific {
padding: 0 10px;
}
.modal.ciclo-info section .specific .caricatore-buttons button {
margin-right: 15px;
margin-left: 5px;
width: 48px;
height: 48px;
object-fit: contain;
border-radius: 2px;
box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.5);
border: none;
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
}
.modal.ciclo-info section .specific .caricatore-buttons button:last-of-type {
border: solid 1px #001e48;
background-image: linear-gradient(to bottom, #1756ad, #002680);
}
.modal.ciclo-info section .box {
margin-bottom: 10px;
width: 500px;
}
.modal.ciclo-info section .box .body {
padding: 5px 10px;
}
.modal.raffreddamento-info {
width: 626px;
height: 569px;
}
.modal.raffreddamento-info section .specific {
margin-left: 50px;
width: 480px;
}
.modal.processo-info header {
font-size: 22px;
color: #4b4b4b;
@@ -5527,45 +5397,6 @@ body {
letter-spacing: normal;
color: #002680;
}
.modal.controstamposetup-info section .controstampo-cycle {
margin-left: 37%;
}
.modal.controstamposetup-info section .specific {
padding-left: 5px;
}
.modal.controstamposetup-info section .specific .box {
margin-bottom: 5px;
background-color: #e5f3ff;
}
.modal.controstamposetup-info section .specific .box:first-of-type {
background-color: white;
}
.modal.controstamposetup-info section .specific .box:last-of-type {
background-color: #b3dbff;
}
.modal.controstamposetup-info section .specific .input-area {
width: 480px;
}
.modal.quote-velocita-info section.cornice .tast {
margin-left: 125px;
}
.modal.quote-velocita-info section aside .box .body {
padding: 4.5px;
}
.modal.quote-velocita-info section aside .box .body .input-area {
margin: 5px auto;
}
.modal.quote-velocita-info section .specific button {
position: absolute;
width: 48px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
border: solid 1px #001e48;
background-image: linear-gradient(to bottom, #1756ad, #002680);
bottom: 1rem;
left: 1rem;
}
.modal.opzioni-info hr {
width: 2px;
height: 830px;
@@ -5630,38 +5461,6 @@ body {
margin-bottom: 5px;
background-color: #e5f3ff;
}
.modal.estrazione-info section.body section .specific {
justify-content: flex-end;
padding-left: 10px;
}
.modal.estrazione-info section.body section .specific .box {
margin: 0;
background-color: #e5f3ff;
}
.scheda .body {
padding: 0px;
}
.scheda .body .input-area {
width: 480px;
margin: 4px;
margin-bottom: 0px;
}
.modal.vuoto-info section .specific {
padding-left: 5px;
}
.modal.vuoto-info section .specific .box {
margin-bottom: 5px;
background-color: #e5f3ff;
}
.modal.vuoto-info section .specific .box:first-of-type {
background-color: white;
}
.modal.vuoto-info section .specific .box:last-of-type {
background-color: #b3dbff;
}
.modal.vuoto-info section .specific .input-area {
width: 480px;
}
.popup {
width: 288px;
height: 218px;
@@ -5741,6 +5540,18 @@ body {
.absolute {
position: absolute;
}
.absolute.bottom {
bottom: 1rem;
}
.absolute.left {
left: 1rem;
}
.absolute.right {
right: 1rem;
}
.absolute.top {
top: 1rem;
}
.full-height {
height: 100%;
}
@@ -5835,6 +5646,139 @@ input:focus {
select:focus {
outline: 5px #1791ff auto;
}
.radio-buttons {
display: flex;
justify-content: flex-start;
align-items: center;
}
.radio-buttons input {
width: 24px;
height: 24px;
object-fit: contain;
border-radius: 12px;
background-color: #f1f1f1;
margin: 0 5px;
}
.radio-buttons label {
font-size: 18px;
line-height: 1.11;
color: #4b4b4b;
}
.radio-buttons label:first-of-type {
font-size: 24px;
font-weight: 500;
color: #002680;
flex: 1;
}
.input-area {
width: 100%;
display: flex;
flex-flow: row;
align-items: center;
justify-content: space-between;
}
.input-area.grid {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: repeat(2, auto);
grid-column-gap: 1rem;
}
.input-area.grid > button {
margin: 0;
}
.input-area.grid.grid-4 {
grid-template-columns: repeat(4, auto);
}
.input-area.grid.grid-5 {
grid-template-columns: repeat(5, auto);
}
.input-area.grid.grid-6 {
grid-template-columns: repeat(6, auto);
}
.input-area.grid.grid-7 {
grid-template-columns: repeat(7, auto);
}
.input-area.grid.grid-8 {
grid-template-columns: repeat(8, auto);
}
.input-area.grid.grid-9 {
grid-template-columns: repeat(9, auto);
}
.input-area.grid.grid-10 {
grid-template-columns: repeat(10, auto);
}
.input-area.left {
justify-content: flex-start;
width: auto;
justify-self: left;
}
.input-area span.toggle {
margin-right: 0 !important;
}
.input-area.col {
flex-flow: column;
align-items: flex-start;
height: auto;
}
.input-area h3 {
color: #002680;
margin: 18px 0;
}
.input-area .buttons {
width: 100%;
display: flex;
flex-flow: row;
margin-bottom: 18px;
}
.input-area .buttons:last-child {
margin-bottom: 0;
}
.input-area label {
color: #002680;
font-size: 24px;
font-weight: 500;
flex: 1;
}
.input-area .numeric {
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
width: 100px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 0 4px;
align-items: center;
justify-content: stretch;
}
.input-area .numeric input {
border: none;
font-size: 16px;
text-align: right;
height: 100%;
width: 100%;
outline: none !important;
background-color: transparent;
}
.input-area .numeric input[type=number]::-webkit-inner-spin-button,
.input-area .numeric input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.input-area .numeric span {
padding: 0 3px;
font-size: 14px;
}
.input-area select {
min-width: 150px;
height: 48px;
background-color: #fff;
padding: 0 20px;
font-size: 1rem;
}
button:focus {
outline: none;
}
@@ -5913,6 +5857,12 @@ button.btn.pressed,
border: none !important;
box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.4) !important;
}
button.square {
height: 48px;
width: 48px;
padding: 0;
margin: 0;
}
button.btn.btn-success {
background-image: linear-gradient(to bottom, #1756ad, #002680);
color: white;
@@ -6032,7 +5982,6 @@ button.soft.axes {
text-align: center;
}
button.soft img {
width: 18px;
image-rendering: -webkit-optimize-contrast;
display: inline;
vertical-align: bottom;
@@ -6123,6 +6072,7 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
opacity: 0;
width: 0;
height: 0;
display: none;
}
.togglebutton label .toggle {
text-align: left;
@@ -24009,6 +23959,18 @@ body {
.smooth-dnd-no-user-select * {
cursor: move !important;
}
.mb-10 {
margin-bottom: 10px;
}
.mt-10 {
margin-top: 10px;
}
.mr-10 {
margin-right: 10px;
}
.ml-10 {
margin-left: 10px;
}
body {
font-family: 'Work Sans', sans-serif;
}
@@ -9,9 +9,9 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1186"
width="1292"
height="707"
viewBox="0 0 1186 707"
viewBox="0 0 1292 707"
version="1.1"
id="svg8"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
@@ -25,9 +25,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.26"
inkscape:cx="1903.0535"
inkscape:cy="1303.7306"
inkscape:zoom="2.08"
inkscape:cx="844.36256"
inkscape:cy="95.563833"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
@@ -281,13 +281,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="140.59659"
y="-269.10074"
id="text872-0"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1144">A2</tspan></text>
id="tspan1144"
x="140.59659"
y="-269.10074">A2</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -296,13 +298,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="207.31517"
y="-269.10071"
id="text872-0-5"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1146">A3</tspan></text>
id="tspan1146"
x="207.31517"
y="-269.10071">A3</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -311,13 +315,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="274.03372"
y="-269.10071"
id="text872-0-5-7"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1148">A4</tspan></text>
id="tspan1148"
x="274.03372"
y="-269.10071">A4</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -326,13 +332,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="340.75235"
y="-269.10068"
id="text872-0-5-3"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1150">A5</tspan></text>
id="tspan1150"
x="340.75235"
y="-269.10068">A5</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -341,13 +349,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="407.47095"
y="-269.10068"
id="text872-0-5-3-4"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1152">A6</tspan></text>
id="tspan1152"
x="407.47095"
y="-269.10068">A6</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -356,13 +366,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="474.18954"
y="-269.10071"
id="text872-0-5-3-4-9"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1154">A7</tspan></text>
id="tspan1154"
x="474.18954"
y="-269.10071">A7</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -371,13 +383,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="540.9082"
y="-269.10071"
id="text872-0-5-3-4-9-6"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1156">A8</tspan></text>
id="tspan1156"
x="540.9082"
y="-269.10071">A8</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -386,13 +400,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="607.62683"
y="-269.10071"
id="text872-0-5-3-4-9-6-8"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1158">A9</tspan></text>
id="tspan1158"
x="607.62683"
y="-269.10071">A9</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -504,13 +520,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="1003.379"
y="-269.10071"
id="text872-0-5-3-4-9-6-8-2-3-5-7-8-6"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1338">A15</tspan></text>
id="tspan1338"
x="1003.379"
y="-269.10071">A15</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -519,13 +537,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="1070.0977"
y="-269.10068"
id="text872-0-5-3-4-9-6-8-2-3-5-7-8-9"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1340">A16</tspan></text>
id="tspan1340"
x="1070.0977"
y="-269.10068">A16</tspan></text>
<circle
r="18.442383"
style="opacity:1;fill:#4b4b4b;fill-opacity:1;stroke:#000000;stroke-width:3.11523533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -534,13 +554,15 @@
cy="-304.69699" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009706px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872;"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.03009701px;line-height:1.25;font-family:Lato;-inkscape-font-specification:'Lato, 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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3042872"
x="1136.8162"
y="-269.10065"
id="text872-0-5-3-4-9-6-8-2-3-5-7-8-9-8"
transform="scale(0.89929967,1.1119764)"><tspan
sodipodi:role="line"
id="tspan1342">A17</tspan></text>
id="tspan1342"
x="1136.8162"
y="-269.10065">A17</tspan></text>
<rect
style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:1.26154959;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
id="rect912-2"
@@ -1451,32 +1473,94 @@
x="1136.8162"
y="141.87759">D17</tspan></text>
<rect
style="opacity:1;fill:#bbbcbc;fill-opacity:0.74509805;stroke:#979797;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
style="opacity:1;fill:#bbbcbc;fill-opacity:0.74509804;stroke:#979797;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect849-4-6"
width="1055.1869"
height="24.186996"
x="25.179001"
y="-316.08398" />
<rect
style="opacity:1;fill:#bbbcbc;fill-opacity:0.74509805;stroke:#979797;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
style="opacity:1;fill:#bbbcbc;fill-opacity:0.74509804;stroke:#979797;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect849-4-2-8"
width="1055.1869"
height="24.186996"
x="25.179001"
y="-137.636" />
<rect
style="opacity:1;fill:#bbbcbc;fill-opacity:0.74509805;stroke:#979797;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
style="opacity:1;fill:#bbbcbc;fill-opacity:0.74509804;stroke:#979797;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect849-4-4-7"
width="1055.1869"
height="24.186996"
x="25.179001"
y="-34.331997" />
<rect
style="opacity:1;fill:#bbbcbc;fill-opacity:0.74509805;stroke:#979797;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
style="opacity:1;fill:#bbbcbc;fill-opacity:0.74509804;stroke:#979797;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect849-4-7-8"
width="1055.1869"
height="24.186996"
x="25.179001"
y="139.914" />
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865"
width="86"
height="25"
x="1159.0815"
y="-206.39528" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.33333333px;line-height:1.25;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;text-anchor:start;fill:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.99999994;"
x="1167.4969"
y="-187.75352"
id="text869"><tspan
sodipodi:role="line"
id="tspan4167">610 mm</tspan></text>
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865-7"
width="86"
height="25"
x="1157.7295"
y="17.975136" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.33333333px;line-height:1.25;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;text-anchor:start;fill:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.99999994;"
x="1166.1448"
y="36.61689"
id="text869-1"><tspan
sodipodi:role="line"
id="tspan4169">610 mm</tspan></text>
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865-4"
width="97.53846"
height="25"
x="997.9389"
y="267.72534" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.33333397px;line-height:1.25;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:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.99999994"
x="1006.3546"
y="286.36713"
id="text869-8"><tspan
sodipodi:role="line"
id="tspan4171"
x="1006.3546"
y="286.36713">1360 mm</tspan></text>
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865-1"
width="134.07692"
height="25"
x="782.41119"
y="206.99022" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.33333333px;line-height:1.25;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;text-anchor:start;fill:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.99999994;"
x="790.82654"
y="225.63197"
id="text869-5"><tspan
sodipodi:role="line"
id="tspan4173">&lt;= 1030 mm</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 86 KiB

@@ -25,9 +25,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.125"
inkscape:cx="1119.1458"
inkscape:cy="2036.4307"
inkscape:zoom="0.5"
inkscape:cx="-79.558604"
inkscape:cy="84.479602"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
@@ -44,7 +44,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>
@@ -236,5 +236,39 @@
inkscape:transform-center-x="0.0055839671"
inkscape:transform-center-y="3.1811632"
transform="matrix(0.94139126,0.3373166,0.3373166,-0.94139126,390.09685,-690.78395)" />
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865"
width="79.260559"
height="22.521017"
x="560.28442"
y="-492.82922" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.16533258px;line-height:1.25;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;text-anchor:start;fill:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.87494218;"
x="580.72296"
y="-462.35043"
id="text869"
transform="scale(0.97125081,1.0296002)"><tspan
sodipodi:role="line"
id="tspan3048">1410 mm</tspan></text>
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865-8"
width="79.260559"
height="22.521017"
x="575.86975"
y="260.2395" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.16533279px;line-height:1.25;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:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.87494218"
x="611.16852"
y="269.06815"
id="text869-9"
transform="scale(0.97125079,1.0296002)"><tspan
sodipodi:role="line"
id="tspan3071"
x="611.16852"
y="269.06815">0 mm</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 13 KiB

@@ -7,7 +7,7 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0beta2 (2b71d25, 2019-12-03)"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="disegno-quote-velocita-stampo.svg"
id="svg8"
version="1.1"
@@ -18,15 +18,15 @@
inkscape:object-nodes="false"
inkscape:current-layer="layer1"
inkscape:window-maximized="1"
inkscape:window-y="23"
inkscape:window-x="1280"
inkscape:cy="394.22754"
inkscape:cx="520.21224"
inkscape:zoom="1.4623514"
inkscape:window-y="-9"
inkscape:window-x="-9"
inkscape:cy="161.66741"
inkscape:cx="130.79682"
inkscape:zoom="8.2723087"
showgrid="false"
id="namedview907"
inkscape:window-height="1311"
inkscape:window-width="2560"
inkscape:window-height="1001"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
@@ -325,8 +325,9 @@
style="fill:#979797;fill-opacity:1;stroke:#979797;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path965"
d="M 146.1459,0.54430501 Z"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
d="M 138.7719,177.76207 Z"
style="fill:none;stroke:#000000;stroke-width:0.26458299px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path967"
@@ -545,5 +546,41 @@
id="path32784-3-24"
d="m 31.481836,185.27239 -1.99023,-3.6186 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865"
width="23.260561"
height="6.021019"
x="122.85455"
y="14.358868" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.24800014px;line-height:1.25;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:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.24507663"
x="121.8107"
y="19.180067"
id="text869"
transform="scale(1.0175879,0.98271609)"><tspan
sodipodi:role="line"
id="tspan2434"
x="121.8107"
y="19.180067">1059 mm</tspan></text>
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865-8"
width="21.447283"
height="6.021019"
x="120.07418"
y="178.33969" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.24800014px;line-height:1.25;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:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.24507663"
x="122.61649"
y="186.04497"
id="text869-2"
transform="scale(1.0175879,0.98271609)"><tspan
sodipodi:role="line"
id="tspan2432"
x="122.61649"
y="186.04497">0 mm</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 23 KiB

@@ -25,9 +25,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.5325"
inkscape:cx="-212.68016"
inkscape:cy="598.57363"
inkscape:zoom="2.13"
inkscape:cx="472.77738"
inkscape:cy="49.172206"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
@@ -45,7 +45,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>
@@ -244,5 +244,40 @@
inkscape:transform-center-y="-0.48678734"
transform="matrix(0.92838376,0,0,-1.0738472,15.707629,417.51225)"
inkscape:transform-center-x="-2.0583999e-06" />
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865"
width="22.754166"
height="6.6145835"
x="126.58702"
y="93.443863" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;line-height:1.25;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:#ffffff;fill-opacity:0.97397768;stroke:none;stroke-width:0.26458332;"
x="128.81358"
y="98.37616"
id="text869"><tspan
sodipodi:role="line"
id="tspan867"
x="128.81358"
y="98.37616"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;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;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332;fill:#ffffff;fill-opacity:0.97397768;">810 mm</tspan></text>
<rect
style="opacity:1;fill:#979797;fill-opacity:1;stroke:#b3b3b3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect865-3"
width="22.754168"
height="6.6145835"
x="129.36137"
y="286.06741" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;line-height:1.25;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:#ffffff;fill-opacity:0.97397766;stroke:none;stroke-width:0.26458332"
x="133.70467"
y="290.99969"
id="text869-8"><tspan
sodipodi:role="line"
id="tspan892"
x="133.70467"
y="290.99969">0 mm</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 13 KiB

+90
View File
@@ -1427,6 +1427,12 @@
"@types/node": "*"
}
},
"@types/json-schema": {
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz",
"integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==",
"dev": true
},
"@types/minimatch": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
@@ -15740,6 +15746,85 @@
"integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
"dev": true
},
"style-loader": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz",
"integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==",
"dev": true,
"requires": {
"loader-utils": "^2.0.0",
"schema-utils": "^2.6.6"
},
"dependencies": {
"ajv": {
"version": "6.12.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
"integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ajv-keywords": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
"integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
"dev": true
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
},
"json5": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
"dev": true,
"requires": {
"minimist": "^1.2.5"
}
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"schema-utils": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
"integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.4",
"ajv": "^6.12.2",
"ajv-keywords": "^3.4.1"
}
}
}
},
"stylehacks": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
@@ -15821,6 +15906,11 @@
"resolved": "https://registry.npmjs.org/svg-gauge/-/svg-gauge-1.0.6.tgz",
"integrity": "sha512-gRkznVhtS18eOM/GMPDXAvrLZOpqzNVDg4bFAPAEjiDKd1tZHFIe8Bwt3G6TFg/H+pFboetPPI+zoV+bOL26QQ=="
},
"svg-pan-zoom": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz",
"integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g=="
},
"svg-tags": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+72 -71
View File
@@ -1,73 +1,74 @@
{
"name": "step",
"version": "1.0.0",
"description": "step",
"author": "Paolo Possanzini <paolo@teamdev.it>",
"private": true,
"scripts": {
"build": "webpack",
"buildprod": "webpack --progress --config webpack.config.js --env production",
"dev": "webpack --watch",
"serve": "webpack-dev-server --inline --progress --config webpack.config.js"
},
"dependencies": {
"axios": "0.19.2",
"brace": "0.11.1",
"chart.js": "^2.9.3",
"core-js": "^3.4.4",
"izitoast": "1.2.0",
"moment": "2.24.0",
"qrcode": "^1.4.4",
"raphael": "^2.3.0",
"sprintf-js": "1.1.2",
"svg-gauge": "^1.0.6",
"v-tooltip": "^2.0.3",
"vee-validate": "2.1.1",
"vue": "^2.6.11",
"vue-chartjs": "^3.5.0",
"vue-class-component": "7.2.3",
"vue-drag-drop": "1.1.4",
"vue-property-decorator": "8.4.0",
"vue-router": "^3.1.6",
"vue-smooth-dnd": "0.8.1",
"vue2-ace-editor": "0.0.15",
"vue2-datepicker": "3.4.1",
"vuex": "3.1.3",
"svg-gauge": "1.0.6"
},
"devDependencies": {
"@babel/plugin-proposal-export-default-from": "7.8.3",
"@types/es6-promise": "3.3.0",
"@vue/cli-plugin-babel": "^4.1.0",
"@vue/cli-plugin-eslint": "^4.1.0",
"@vue/cli-plugin-router": "^4.1.0",
"@vue/cli-plugin-typescript": "^4.1.0",
"@vue/cli-plugin-vuex": "^4.1.0",
"@vue/cli-service": "^4.2.3",
"autoprefixer": "^7.1.2",
"babel-loader": "8.0.6",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"eventsource-polyfill": "^0.9.6",
"file-loader": "^1.1.4",
"terser-webpack-plugin": "1.3.0",
"ts-loader": "6.2.1",
"typescript": "3.8.3",
"url-loader": "^3.0.0",
"vue-loader": "^15.9.0",
"vue-template-compiler": "^2.6.11",
"webpack": "^4.42.0",
"webpack-cli": "3.2.3",
"webpack-dev-server": "3.2.1"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
"name": "step",
"version": "1.0.0",
"description": "step",
"author": "Paolo Possanzini <paolo@teamdev.it>",
"private": true,
"scripts": {
"build": "webpack",
"buildprod": "webpack --progress --config webpack.config.js --env production",
"dev": "webpack --watch",
"serve": "webpack-dev-server --inline --progress --config webpack.config.js"
},
"dependencies": {
"axios": "0.19.2",
"brace": "0.11.1",
"chart.js": "^2.9.3",
"core-js": "^3.4.4",
"izitoast": "1.2.0",
"moment": "2.24.0",
"qrcode": "^1.4.4",
"raphael": "^2.3.0",
"sprintf-js": "1.1.2",
"svg-gauge": "^1.0.6",
"v-tooltip": "^2.0.3",
"vee-validate": "2.1.1",
"vue": "^2.6.11",
"vue-chartjs": "^3.5.0",
"vue-class-component": "7.2.3",
"vue-drag-drop": "1.1.4",
"vue-property-decorator": "8.4.0",
"vue-router": "^3.1.6",
"vue-smooth-dnd": "0.8.1",
"vue2-ace-editor": "0.0.15",
"vue2-datepicker": "3.4.1",
"vuex": "3.1.3",
"svg-pan-zoom": "3.6.1"
},
"devDependencies": {
"@babel/plugin-proposal-export-default-from": "7.8.3",
"@types/es6-promise": "3.3.0",
"@vue/cli-plugin-babel": "^4.1.0",
"@vue/cli-plugin-eslint": "^4.1.0",
"@vue/cli-plugin-router": "^4.1.0",
"@vue/cli-plugin-typescript": "^4.1.0",
"@vue/cli-plugin-vuex": "^4.1.0",
"@vue/cli-service": "^4.2.3",
"autoprefixer": "^7.1.2",
"babel-loader": "8.0.6",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"style-loader": "1.2.1",
"eventsource-polyfill": "^0.9.6",
"file-loader": "^1.1.4",
"terser-webpack-plugin": "1.3.0",
"ts-loader": "6.2.1",
"typescript": "3.8.3",
"url-loader": "^3.0.0",
"vue-loader": "^15.9.0",
"vue-template-compiler": "^2.6.11",
"webpack": "^4.42.0",
"webpack-cli": "3.2.3",
"webpack-dev-server": "3.2.1"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
+320 -327
View File
@@ -1,338 +1,331 @@
declare module Recipe {
interface IRange{
min:number,
max:number
interface IRange {
min: number,
max: number
}
interface IStatus{
visible:boolean,
enabled:boolean,
hasError:boolean
interface IStatus {
visible: boolean,
enabled: boolean,
hasError: boolean
}
interface IValue{
range:IRange,
status:IStatus,
unitMeasure:string,
valueAct:number
interface IValue {
range: IRange,
status: IStatus,
unitMeasure: string,
valueAct: number
}
interface IRecipe{
general_sizes_mould_dim_x?:IValue,
general_sizes_mould_dim_y?:IValue,
general_sizes_mould_max_height?:IValue,
general_sizes_mould_min_height?:IValue,
general_sizes_mould_base_height?:IValue,
general_sizes_sheet_material?:IValue,
general_sizes_sheet_dim_x?:IValue,
general_sizes_sheet_dim_y?:IValue,
general_sizes_sheet_thickness?:IValue,
general_sizes_plate_type?:IValue,
general_sizes_plate_dim_x?:IValue,
general_sizes_plate_dim_y?:IValue,
general_sizes_frame_traverses?:IValue,
general_sizes_frame_dim_x?:IValue,
general_sizes_frame_dim_y?:IValue,
general_sizes_upperplate_max_height?:IValue,
general_area_working_dxsx?:IValue,
positions_mould_lower_position?:IValue,
positions_mould_lower_speed?:IValue,
positions_mould_intermediate_position?:IValue,
positions_mould_upper_position?:IValue,
positions_mould_upper_speed?:IValue,
positions_mould_upperdeceleration_position?:IValue,
positions_mould_upperdeceleration_speed?:IValue,
positions_mould_lowerdeceleration_speed?:IValue,
positions_mould_lowerdeceleration_position?:IValue,
positions_frame_lower_position?:IValue,
positions_frame_lower_speed?:IValue,
positions_frame_upper_speed?:IValue,
positions_frame_upper_position?:IValue,
positions_frame_intermediate_position?:IValue,
positions_frame_intermediate_speed?:IValue,
positions_frame_unload_position?:IValue,
positions_upperplate_lower_position?:IValue,
positions_upperplate_lower_speed?:IValue,
positions_upperplate_upper_position?:IValue,
positions_upperplate_upper_speed?:IValue,
positions_upperplate_upperdeceleration_position?:IValue,
positions_upperplate_upperdeceleration_speed?:IValue,
positions_upperplate_lowerdeceleration_position?:IValue,
positions_upperplate_lowerdeceleration_speed?:IValue,
cycle_forming_type?:IValue,
cycle_forming_pause_cycle?:IValue,
cycle_forming_cooling_enabled?:IValue,
cycle_forming_blowingbox_enabled?:IValue,
cycle_acrylicframe_enabled?:IValue,
cycle_acrylicframe_time?:IValue,
cycle_upperoverheating_enabled?:IValue,
cycle_upperoverheating_time?:IValue,
cycle_crystallisation_type?:IValue,
cycle_crystallisation_enabled?:IValue,
cycle_crystallisation_time?:IValue,
cycle_loader_enable?:IValue,
cycle_loader_lifter_lowerposition_delay?:IValue,
cycle_loader_lifter_upperposition_delay?:IValue,
cycle_loader_split_sheet_time?:IValue,
cycle_loader_ejector_position?:IValue,
cycle_loader_pallet_height?:IValue
cycle_loader_center_x?:IValue,
cycle_loader_center_y?:IValue,
cycle_loader_checktichness_enabled?:IValue,
cycle_loader_suckers_vacuum?:IValue,
cycle_loader_ionizer_enabled?:IValue,
cycle_loader_manualunloading_enabled?:IValue,
heats_lowerheaters_max_time?:IValue,
heats_lowerheaters_movement_enabled?:IValue,
heats_lowerheaters_enabled?:IValue,
heats_lowerheaters_oscillation?:IValue,
heats_upperheaters_max_time?:IValue,
heats_upperheaters_movement_enabled?:IValue,
heats_upperheaters_enabled?:IValue,
heats_upperheaters_oscillation?:IValue,
heats_decomsustain_type?:IValue,
heats_decomsustain_decompression_flow?:IValue,
heats_decomsustain_min_blowing_time?:IValue,
heats_decomsustain_sustain_delay?:IValue,
heats_decomsustain_decompression_delay?:IValue,
heats_decomsustain_decompression_duration?:IValue,
heats_decomsustain_smoke_function_enabled?:IValue,
pyrometer_pyrometer_enabled?:IValue,
pyrometer_pyrometer_setpoint?:IValue,
pyrometer_pyrometer_delay?:IValue,
pyrometer_upperthermoregulator_start_adjustment?:IValue,
pyrometer_upperthermoregulator_end_adjustment?:IValue,
pyrometer_upperthermoregulator_min_percentage?:IValue,
pyrometer_upperthermoregulator_max_percentage?:IValue,
pyrometer_upperthermoregulator_sleep_enabled?:IValue,
pyrometer_upperthermoregulator_sleep_percentage?:IValue,
pyrometer_lowerthermoregulator_start_adjustment?:IValue,
pyrometer_lowerthermoregulator_end_adjustment?:IValue,
pyrometer_lowerthermoregulator_min_percentage?:IValue,
pyrometer_lowerthermoregulator_max_percentage?:IValue,
pyrometer_lowerthermoregulator_sleep_enabled?:IValue,
pyrometer_lowerthermoregulator_sleep_percentage?:IValue,
pyrometer_upperthermoregulator_sleep_temperature?:IValue,
pyrometer_upperthermoregulator_working_temperature?:IValue,
pyrometer_lowerthermoregulator_sleep_temperature?:IValue,
pyrometer_lowerthermoregulator_working_temperature?:IValue,
drawing_type?:IValue,
drawing_height?:IValue,
drawing_delay?:IValue,
drawing_1_chart_setpointx?:IValue,
drawing_1_chart_setpointy?:IValue,
drawing_photocell?:IValue,
drawing_mantaining_flow?:IValue,
drawing_manual?:IValue,
drawing_mould_up_delay?:IValue,
upperplate_cycle_type?:IValue,
upperplate_cycle_delay?:IValue,
upperplate_cycle_time?:IValue,
upperplate_air_enable?:IValue,
upperplate_air_delay?:IValue,
upperplate_air_max_time?:IValue,
upperplate_air_1_chart_setpointx?:IValue,
upperplate_air_1_chart_setpointy?:IValue,
upperplate_air_2_chart_setpointx?:IValue,
upperplate_air_2_chart_setpointy?:IValue,
upperplate_air_3_chart_setpointx?:IValue,
upperplate_air_3_chart_setpointy?:IValue,
upperplate_air_manual?:IValue,
upperplate_vacuum_enable?:IValue,
upperplate_vacuum_delay?:IValue,
upperplate_vacuum_max_time?:IValue,
upperplate_vacuum_1_chart_setpointx?:IValue,
upperplate_vacuum_1_chart_setpointy?:IValue,
upperplate_vacuum_2_chart_setpointx?:IValue,
upperplate_vacuum_2_chart_setpointy?:IValue,
upperplate_vacuum_3_chart_setpointx?:IValue,
upperplate_vacuum_3_chart_setpointy?:IValue,
upperplate_vacuum_manual?:IValue,
upperplate_extraction_enable?:IValue,
upperplate_extraction_delay?:IValue,
upperplate_extraction_1_chart_setpointx?:IValue,
upperplate_extraction_1_chart_setpointy?:IValue,
upperplate_extraction_manual?:IValue,
cooling_blowing_type?:IValue,
cooling_blowing_delay?:IValue,
cooling_blowing_time?:IValue,
cooling_pyrometer_enabled?:IValue,
cooling_pyrometer_setpoint?:IValue,
cooling_pyrometer_delay?:IValue,
cooling_nebulizer_type?:IValue,
cooling_nebulizer_delay?:IValue,
cooling_nebulizer_time?:IValue,
cooling_telescopic_enable?:IValue,
cooling_telescopic_position?:IValue,
cooling_telescopic_swing_enable?:IValue,
cooling_telescopic_swing_stroke?:IValue,
cooling_shutter_1_opening_perc?:IValue,
cooling_shutter_2_opening_perc?:IValue,
cooling_shutter_3_opening_perc?:IValue,
cooling_shutter_4_opening_perc?:IValue,
cooling_shutter_5_opening_perc?:IValue,
cooling_shutter_6_opening_perc?:IValue,
cooling_shutter_7_opening_perc?:IValue,
cooling_shutter_8_opening_perc?:IValue,
cooling_shutter_9_opening_perc?:IValue,
cooling_shutter_10_opening_perc?:IValue,
cooling_shutter_11_opening_perc?:IValue,
cooling_shutter_12_opening_perc?:IValue,
cooling_shutter_13_opening_perc?:IValue,
cooling_shutter_14_opening_perc?:IValue,
cooling_shutter_15_opening_perc?:IValue,
cooling_shutter_16_opening_perc?:IValue,
vacuum_main_start?:IValue,
vacuum_main_delay?:IValue,
vacuum_main_max_time?:IValue,
vacuum_main_1_chart_setpointx?:IValue,
vacuum_main_1_chart_setpointy?:IValue,
vacuum_main_2_chart_setpointx?:IValue,
vacuum_main_2_chart_setpointy?:IValue,
vacuum_main_3_chart_setpointx?:IValue,
vacuum_main_3_chart_setpointy?:IValue,
vacuum_main_manual?:IValue,
vacuum_direct_enabled?:IValue,
vacuum_direct_delay?:IValue,
vacuum_direct_time?:IValue,
vacuum_aux_enabled?:IValue,
vacuum_aux_delay?:IValue,
vacuum_aux_max_time?:IValue,
vacuum_aux_1_chart_setpointx?:IValue,
vacuum_aux_1_chart_setpointy?:IValue,
vacuum_aux_2_chart_setpointx?:IValue,
vacuum_aux_2_chart_setpointy?:IValue,
vacuum_aux_3_chart_setpointx?:IValue,
vacuum_aux_3_chart_setpointy?:IValue,
vacuum_aux_manual?:IValue,
vacuum_pre_enabled?:IValue,
vacuum_pre_delay?:IValue,
vacuum_pre_max_time?:IValue,
vacuum_pre_1_chart_setpointx?:IValue,
vacuum_pre_1_chart_setpointy?:IValue,
vacuum_pre_2_chart_setpointx?:IValue,
vacuum_pre_2_chart_setpointy?:IValue,
vacuum_pre_3_chart_setpointx?:IValue,
vacuum_pre_3_chart_setpointy?:IValue,
extraction_main_type?:IValue,
extraction_main_mould_dw_delay?:IValue,
extraction_main_delay?:IValue,
extraction_main_1_chart_setpointx?:IValue,
extraction_main_1_chart_setpointy?:IValue,
extraction_main_manual?:IValue,
extraction_aux_enabled?:IValue,
extraction_aux_delay?:IValue,
extraction_aux_1_chart_setpointx?:IValue,
extraction_aux_1_chart_setpointy?:IValue,
extraction_aux_manual?:IValue,
options_undercutmould_1_mode?:IValue,
options_undercutmould_1_position?:IValue,
options_undercutmould_1_delay_acti?:IValue,
options_undercutmould_1_delay_dis?:IValue,
options_undercutmould_2_mode?:IValue,
options_undercutmould_2_position?:IValue,
options_undercutmould_2_delay_acti?:IValue,
options_undercutmould_2_delay_dis?:IValue,
options_undercutmould_3_mode?:IValue,
options_undercutmould_3_position?:IValue,
options_undercutmould_3_delay_acti?:IValue,
options_undercutmould_3_delay_dis?:IValue,
options_undercutmould_4_mode?:IValue,
options_undercutmould_4_position?:IValue,
options_undercutmould_4_delay_acti?:IValue,
options_undercutmould_4_delay_dis?:IValue,
options_undercutmould_5_mode?:IValue,
options_undercutmould_5_position?:IValue,
options_undercutmould_5_delay_acti?:IValue,
options_undercutmould_5_delay_dis?:IValue,
options_undercutmould_6_mode?:IValue,
options_undercutmould_6_position?:IValue,
options_undercutmould_6_delay_acti?:IValue,
options_undercutmould_6_delay_dis?:IValue,
options_undercutmould_7_mode?:IValue,
options_undercutmould_7_position?:IValue,
options_undercutmould_7_delay_acti?:IValue,
options_undercutmould_7_delay_dis?:IValue,
options_undercutmould_8_mode?:IValue,
options_undercutmould_8_position?:IValue,
options_undercutmould_8_delay_acti?:IValue,
options_undercutmould_8_delay_dis?:IValue,
options_undercutmould_9_mode?:IValue,
options_undercutmould_9_position?:IValue,
options_undercutmould_9_delay_acti?:IValue,
options_undercutmould_9_delay_dis?:IValue,
options_undercutmould_10_mode?:IValue,
options_undercutmould_10_position?:IValue,
options_undercutmould_10_delay_acti?:IValue,
options_undercutmould_10_delay_dis?:IValue,
options_undercutupperplate_1_mode?:IValue,
options_undercutupperplate_1_position?:IValue,
options_undercutupperplate_1_delay_acti?:IValue,
options_undercutupperplate_1_delay_dis?:IValue,
options_undercutupperplate_2_mode?:IValue,
options_undercutupperplate_2_position?:IValue,
options_undercutupperplate_2_delay_acti?:IValue,
options_undercutupperplate_2_delay_dis?:IValue,
options_undercutupperplate_3_mode?:IValue,
options_undercutupperplate_3_position?:IValue,
options_undercutupperplate_3_delay_acti?:IValue,
options_undercutupperplate_3_delay_dis?:IValue,
options_undercutupperplate_4_mode?:IValue,
options_undercutupperplate_4_position?:IValue,
options_undercutupperplate_4_delay_acti?:IValue,
options_undercutupperplate_4_delay_dis?:IValue,
options_undercutupperplate_5_mode?:IValue,
options_undercutupperplate_5_position?:IValue,
options_undercutupperplate_5_delay_acti?:IValue,
options_undercutupperplate_5_delay_dis?:IValue,
options_undercutupperplate_6_mode?:IValue,
options_undercutupperplate_6_position?:IValue,
options_undercutupperplate_6_delay_acti?:IValue,
options_undercutupperplate_6_delay_dis?:IValue,
options_undercutupperplate_7_mode?:IValue,
options_undercutupperplate_7_position?:IValue,
options_undercutupperplate_7_delay_acti?:IValue,
options_undercutupperplate_7_delay_dis?:IValue,
options_undercutupperplate_8_mode?:IValue,
options_undercutupperplate_8_position?:IValue,
options_undercutupperplate_8_delay_acti?:IValue,
options_undercutupperplate_8_delay_dis?:IValue,
options_undercutupperplate_9_mode?:IValue,
options_undercutupperplate_9_position?:IValue,
options_undercutupperplate_9_delay_acti?:IValue,
options_undercutupperplate_9_delay_dis?:IValue,
options_undercutupperplate_10_mode?:IValue,
options_undercutupperplate_10_position?:IValue,
options_undercutupperplate_10_delay_acti?:IValue,
options_undercutupperplate_10_delay_dis?:IValue,
options_thermoregulator_1_enabled?:IValue,
options_thermoregulator_1_setpoint?:IValue,
options_thermoregulator_2_enabled?:IValue,
options_thermoregulator_2_setpoint?:IValue,
options_thermoregulator_3_enabled?:IValue,
options_thermoregulator_3_setpoint?:IValue,
options_thermoregulator_4_enabled?:IValue,
options_thermoregulator_4_setpoint?:IValue,
options_thermoregulator_5_enabled?:IValue,
options_thermoregulator_5_setpoint?:IValue,
options_thermoregulator_6_enabled?:IValue,
options_thermoregulator_6_setpoint?:IValue,
options_thermoregulator_7_enabled?:IValue,
options_thermoregulator_7_setpoint?:IValue,
options_thermoregulator_8_enabled?:IValue,
options_thermoregulator_8_setpoint?:IValue,
options_thermoregulator_9_enabled?:IValue,
options_thermoregulator_9_setpoint?:IValue,
options_thermoregulator_10_enabled?:IValue,
options_thermoregulator_10_setpoint?:IValue,
interface IRecipe {
general_sizes_mould_dim_x?: IValue,
general_sizes_mould_dim_y?: IValue,
general_sizes_mould_max_height?: IValue,
general_sizes_mould_min_height?: IValue,
general_sizes_mould_base_height?: IValue,
general_sizes_sheet_material?: IValue,
general_sizes_sheet_dim_x?: IValue,
general_sizes_sheet_dim_y?: IValue,
general_sizes_sheet_thickness?: IValue,
general_sizes_plate_type?: IValue,
general_sizes_plate_dim_x?: IValue,
general_sizes_plate_dim_y?: IValue,
general_sizes_frame_traverses?: IValue,
general_sizes_frame_dim_x?: IValue,
general_sizes_frame_dim_y?: IValue,
general_sizes_upperplate_max_height?: IValue,
general_area_working_dxsx?: IValue,
positions_mould_lower_position?: IValue,
positions_mould_lower_speed?: IValue,
positions_mould_intermediate_position?: IValue,
positions_mould_upper_position?: IValue,
positions_mould_upper_speed?: IValue,
positions_mould_upperdeceleration_position?: IValue,
positions_mould_upperdeceleration_speed?: IValue,
positions_mould_lowerdeceleration_speed?: IValue,
positions_mould_lowerdeceleration_position?: IValue,
positions_frame_lower_position?: IValue,
positions_frame_lower_speed?: IValue,
positions_frame_upper_speed?: IValue,
positions_frame_upper_position?: IValue,
positions_frame_intermediate_position?: IValue,
positions_frame_intermediate_speed?: IValue,
positions_frame_unload_position?: IValue,
positions_upperplate_lower_position?: IValue,
positions_upperplate_lower_speed?: IValue,
positions_upperplate_upper_position?: IValue,
positions_upperplate_upper_speed?: IValue,
positions_upperplate_upperdeceleration_position?: IValue,
positions_upperplate_upperdeceleration_speed?: IValue,
positions_upperplate_lowerdeceleration_position?: IValue,
positions_upperplate_lowerdeceleration_speed?: IValue,
cycle_forming_type?: IValue,
cycle_forming_pause_cycle?: IValue,
cycle_forming_cooling_enabled?: IValue,
cycle_forming_blowingbox_enabled?: IValue,
cycle_acrylicframe_enabled?: IValue,
cycle_acrylicframe_time?: IValue,
cycle_upperoverheating_enabled?: IValue,
cycle_upperoverheating_time?: IValue,
cycle_crystallisation_type?: IValue,
cycle_crystallisation_enabled?: IValue,
cycle_crystallisation_time?: IValue,
cycle_loader_enable?: IValue,
cycle_loader_lifter_lowerposition_delay?: IValue,
cycle_loader_lifter_upperposition_delay?: IValue,
cycle_loader_split_sheet_time?: IValue,
cycle_loader_ejector_position?: IValue,
cycle_loader_pallet_height?: IValue
cycle_loader_center_x?: IValue,
cycle_loader_center_y?: IValue,
cycle_loader_checktichness_enabled?: IValue,
cycle_loader_suckers_vacuum?: IValue,
cycle_loader_ionizer_enabled?: IValue,
cycle_loader_manualunloading_enabled?: IValue,
heats_lowerheaters_max_time?: IValue,
heats_lowerheaters_movement_enabled?: IValue,
heats_lowerheaters_enabled?: IValue,
heats_lowerheaters_oscillation?: IValue,
heats_upperheaters_max_time?: IValue,
heats_upperheaters_movement_enabled?: IValue,
heats_upperheaters_enabled?: IValue,
heats_upperheaters_oscillation?: IValue,
heats_decomsustain_type?: IValue,
heats_decomsustain_decompression_flow?: IValue,
heats_decomsustain_min_blowing_time?: IValue,
heats_decomsustain_sustain_delay?: IValue,
heats_decomsustain_decompression_delay?: IValue,
heats_decomsustain_decompression_duration?: IValue,
heats_decomsustain_smoke_function_enabled?: IValue,
pyrometer_pyrometer_enabled?: IValue,
pyrometer_pyrometer_setpoint?: IValue,
pyrometer_pyrometer_delay?: IValue,
pyrometer_upperthermoregulator_start_adjustment?: IValue,
pyrometer_upperthermoregulator_end_adjustment?: IValue,
pyrometer_upperthermoregulator_min_percentage?: IValue,
pyrometer_upperthermoregulator_max_percentage?: IValue,
pyrometer_upperthermoregulator_sleep_enabled?: IValue,
pyrometer_upperthermoregulator_sleep_percentage?: IValue,
pyrometer_lowerthermoregulator_start_adjustment?: IValue,
pyrometer_lowerthermoregulator_end_adjustment?: IValue,
pyrometer_lowerthermoregulator_min_percentage?: IValue,
pyrometer_lowerthermoregulator_max_percentage?: IValue,
pyrometer_lowerthermoregulator_sleep_enabled?: IValue,
pyrometer_lowerthermoregulator_sleep_percentage?: IValue,
pyrometer_upperthermoregulator_sleep_temperature?: IValue,
pyrometer_upperthermoregulator_working_temperature?: IValue,
pyrometer_lowerthermoregulator_sleep_temperature?: IValue,
pyrometer_lowerthermoregulator_working_temperature?: IValue,
drawing_type?: IValue,
drawing_height?: IValue,
drawing_delay?: IValue,
drawing_1_chart_setpointx?: IValue,
drawing_1_chart_setpointy?: IValue,
drawing_photocell?: IValue,
drawing_mantaining_flow?: IValue,
drawing_manual?: IValue,
drawing_mould_up_delay?: IValue,
upperplate_cycle_type?: IValue,
upperplate_cycle_delay?: IValue,
upperplate_cycle_time?: IValue,
upperplate_air_enable?: IValue,
upperplate_air_delay?: IValue,
upperplate_air_max_time?: IValue,
upperplate_air_1_chart_setpointx?: IValue,
upperplate_air_1_chart_setpointy?: IValue,
upperplate_air_2_chart_setpointx?: IValue,
upperplate_air_2_chart_setpointy?: IValue,
upperplate_air_3_chart_setpointx?: IValue,
upperplate_air_3_chart_setpointy?: IValue,
upperplate_air_manual?: IValue,
upperplate_vacuum_enable?: IValue,
upperplate_vacuum_delay?: IValue,
upperplate_vacuum_max_time?: IValue,
upperplate_vacuum_1_chart_setpointx?: IValue,
upperplate_vacuum_1_chart_setpointy?: IValue,
upperplate_vacuum_2_chart_setpointx?: IValue,
upperplate_vacuum_2_chart_setpointy?: IValue,
upperplate_vacuum_3_chart_setpointx?: IValue,
upperplate_vacuum_3_chart_setpointy?: IValue,
upperplate_vacuum_manual?: IValue,
upperplate_extraction_enable?: IValue,
upperplate_extraction_delay?: IValue,
upperplate_extraction_1_chart_setpointx?: IValue,
upperplate_extraction_1_chart_setpointy?: IValue,
upperplate_extraction_manual?: IValue,
cooling_blowing_type?: IValue,
cooling_blowing_delay?: IValue,
cooling_blowing_time?: IValue,
cooling_pyrometer_enabled?: IValue,
cooling_pyrometer_setpoint?: IValue,
cooling_pyrometer_delay?: IValue,
cooling_nebulizer_type?: IValue,
cooling_nebulizer_delay?: IValue,
cooling_nebulizer_time?: IValue,
cooling_telescopic_enable?: IValue,
cooling_telescopic_position?: IValue,
cooling_telescopic_swing_enable?: IValue,
cooling_telescopic_swing_stroke?: IValue,
cooling_shutter_1_opening_perc?: IValue,
cooling_shutter_2_opening_perc?: IValue,
cooling_shutter_3_opening_perc?: IValue,
cooling_shutter_4_opening_perc?: IValue,
cooling_shutter_5_opening_perc?: IValue,
cooling_shutter_6_opening_perc?: IValue,
cooling_shutter_7_opening_perc?: IValue,
cooling_shutter_8_opening_perc?: IValue,
cooling_shutter_9_opening_perc?: IValue,
cooling_shutter_10_opening_perc?: IValue,
cooling_shutter_11_opening_perc?: IValue,
cooling_shutter_12_opening_perc?: IValue,
cooling_shutter_13_opening_perc?: IValue,
cooling_shutter_14_opening_perc?: IValue,
cooling_shutter_15_opening_perc?: IValue,
cooling_shutter_16_opening_perc?: IValue,
vacuum_main_start?: IValue,
vacuum_main_delay?: IValue,
vacuum_main_max_time?: IValue,
vacuum_main_1_chart_setpointx?: IValue,
vacuum_main_1_chart_setpointy?: IValue,
vacuum_main_2_chart_setpointx?: IValue,
vacuum_main_2_chart_setpointy?: IValue,
vacuum_main_3_chart_setpointx?: IValue,
vacuum_main_3_chart_setpointy?: IValue,
vacuum_main_manual?: IValue,
vacuum_direct_enabled?: IValue,
vacuum_direct_delay?: IValue,
vacuum_direct_time?: IValue,
vacuum_aux_enabled?: IValue,
vacuum_aux_delay?: IValue,
vacuum_aux_max_time?: IValue,
vacuum_aux_1_chart_setpointx?: IValue,
vacuum_aux_1_chart_setpointy?: IValue,
vacuum_aux_2_chart_setpointx?: IValue,
vacuum_aux_2_chart_setpointy?: IValue,
vacuum_aux_3_chart_setpointx?: IValue,
vacuum_aux_3_chart_setpointy?: IValue,
vacuum_aux_manual?: IValue,
vacuum_pre_enabled?: IValue,
vacuum_pre_delay?: IValue,
vacuum_pre_max_time?: IValue,
vacuum_pre_1_chart_setpointx?: IValue,
vacuum_pre_1_chart_setpointy?: IValue,
vacuum_pre_2_chart_setpointx?: IValue,
vacuum_pre_2_chart_setpointy?: IValue,
vacuum_pre_3_chart_setpointx?: IValue,
vacuum_pre_3_chart_setpointy?: IValue,
extraction_main_type?: IValue,
extraction_main_mould_dw_delay?: IValue,
extraction_main_delay?: IValue,
extraction_main_1_chart_setpointx?: IValue,
extraction_main_1_chart_setpointy?: IValue,
extraction_main_manual?: IValue,
extraction_aux_enabled?: IValue,
extraction_aux_delay?: IValue,
extraction_aux_1_chart_setpointx?: IValue,
extraction_aux_1_chart_setpointy?: IValue,
extraction_aux_manual?: IValue,
options_undercutmould_1_mode?: IValue,
options_undercutmould_1_position?: IValue,
options_undercutmould_1_delay_acti?: IValue,
options_undercutmould_1_delay_dis?: IValue,
options_undercutmould_2_mode?: IValue,
options_undercutmould_2_position?: IValue,
options_undercutmould_2_delay_acti?: IValue,
options_undercutmould_2_delay_dis?: IValue,
options_undercutmould_3_mode?: IValue,
options_undercutmould_3_position?: IValue,
options_undercutmould_3_delay_acti?: IValue,
options_undercutmould_3_delay_dis?: IValue,
options_undercutmould_4_mode?: IValue,
options_undercutmould_4_position?: IValue,
options_undercutmould_4_delay_acti?: IValue,
options_undercutmould_4_delay_dis?: IValue,
options_undercutmould_5_mode?: IValue,
options_undercutmould_5_position?: IValue,
options_undercutmould_5_delay_acti?: IValue,
options_undercutmould_5_delay_dis?: IValue,
options_undercutmould_6_mode?: IValue,
options_undercutmould_6_position?: IValue,
options_undercutmould_6_delay_acti?: IValue,
options_undercutmould_6_delay_dis?: IValue,
options_undercutmould_7_mode?: IValue,
options_undercutmould_7_position?: IValue,
options_undercutmould_7_delay_acti?: IValue,
options_undercutmould_7_delay_dis?: IValue,
options_undercutmould_8_mode?: IValue,
options_undercutmould_8_position?: IValue,
options_undercutmould_8_delay_acti?: IValue,
options_undercutmould_8_delay_dis?: IValue,
options_undercutmould_9_mode?: IValue,
options_undercutmould_9_position?: IValue,
options_undercutmould_9_delay_acti?: IValue,
options_undercutmould_9_delay_dis?: IValue,
options_undercutmould_10_mode?: IValue,
options_undercutmould_10_position?: IValue,
options_undercutmould_10_delay_acti?: IValue,
options_undercutmould_10_delay_dis?: IValue,
options_undercutupperplate_1_mode?: IValue,
options_undercutupperplate_1_position?: IValue,
options_undercutupperplate_1_delay_acti?: IValue,
options_undercutupperplate_1_delay_dis?: IValue,
options_undercutupperplate_2_mode?: IValue,
options_undercutupperplate_2_position?: IValue,
options_undercutupperplate_2_delay_acti?: IValue,
options_undercutupperplate_2_delay_dis?: IValue,
options_undercutupperplate_3_mode?: IValue,
options_undercutupperplate_3_position?: IValue,
options_undercutupperplate_3_delay_acti?: IValue,
options_undercutupperplate_3_delay_dis?: IValue,
options_undercutupperplate_4_mode?: IValue,
options_undercutupperplate_4_position?: IValue,
options_undercutupperplate_4_delay_acti?: IValue,
options_undercutupperplate_4_delay_dis?: IValue,
options_undercutupperplate_5_mode?: IValue,
options_undercutupperplate_5_position?: IValue,
options_undercutupperplate_5_delay_acti?: IValue,
options_undercutupperplate_5_delay_dis?: IValue,
options_undercutupperplate_6_mode?: IValue,
options_undercutupperplate_6_position?: IValue,
options_undercutupperplate_6_delay_acti?: IValue,
options_undercutupperplate_6_delay_dis?: IValue,
options_undercutupperplate_7_mode?: IValue,
options_undercutupperplate_7_position?: IValue,
options_undercutupperplate_7_delay_acti?: IValue,
options_undercutupperplate_7_delay_dis?: IValue,
options_undercutupperplate_8_mode?: IValue,
options_undercutupperplate_8_position?: IValue,
options_undercutupperplate_8_delay_acti?: IValue,
options_undercutupperplate_8_delay_dis?: IValue,
options_undercutupperplate_9_mode?: IValue,
options_undercutupperplate_9_position?: IValue,
options_undercutupperplate_9_delay_acti?: IValue,
options_undercutupperplate_9_delay_dis?: IValue,
options_undercutupperplate_10_mode?: IValue,
options_undercutupperplate_10_position?: IValue,
options_undercutupperplate_10_delay_acti?: IValue,
options_undercutupperplate_10_delay_dis?: IValue,
options_thermoregulator_1_enabled?: IValue,
options_thermoregulator_1_setpoint?: IValue,
options_thermoregulator_2_enabled?: IValue,
options_thermoregulator_2_setpoint?: IValue,
options_thermoregulator_3_enabled?: IValue,
options_thermoregulator_3_setpoint?: IValue,
options_thermoregulator_4_enabled?: IValue,
options_thermoregulator_4_setpoint?: IValue,
options_thermoregulator_5_enabled?: IValue,
options_thermoregulator_5_setpoint?: IValue,
options_thermoregulator_6_enabled?: IValue,
options_thermoregulator_6_setpoint?: IValue,
options_thermoregulator_7_enabled?: IValue,
options_thermoregulator_7_setpoint?: IValue,
options_thermoregulator_8_enabled?: IValue,
options_thermoregulator_8_setpoint?: IValue,
options_thermoregulator_9_enabled?: IValue,
options_thermoregulator_9_setpoint?: IValue,
options_thermoregulator_10_enabled?: IValue,
options_thermoregulator_10_setpoint?: IValue,
}
}
+16
View File
@@ -0,0 +1,16 @@
declare module Warmers {
interface IChannel {
idChannel: number,
idReflector: number,
setpointRecipe: number,
setpointTermocam: number,
setpointPLC: number,
setpointHMI: number,
channelStatus: number,
actualCurrent: number,
actualPerc: number,
maxPower: number
}
}
@@ -0,0 +1,13 @@
declare module Warmers {
interface IResistance {
id: number,
idChannel: number,
column: number,
row: number,
dimension: number
}
}
+11 -12
View File
@@ -12,7 +12,6 @@ import { store, appModelActions, machineStatusActions } from "@/store";
import { underTheHood } from "@/app_modules/under-the-hood";
import SwitchButton from "@/app_modules_thermo/components/paddle/switch-button.vue";
import Sidebar from "@/app_modules_thermo/components/paddle/sidebar.vue";
import ToggleButton from "@/components/toggleButton.vue";
import Dashboard from "@/app_modules_thermo/dashboard/dashboard.vue";
import PreDashboard from "@/app_modules_thermo/preriscaldo-dashboard/preriscaldo-dashboard.vue";
@@ -38,7 +37,7 @@ declare var cmsClient;
switchButton: SwitchButton,
sidebar: Sidebar,
dashboard: Dashboard,
predashboard:PreDashboard,
predashboard: PreDashboard,
alarmList,
underTheHood,
}
@@ -46,13 +45,13 @@ declare var cmsClient;
export default class app extends Vue {
$route: any;
$router:any;
$router: any;
state = this.$store.state;
applyBlur = false;
showHeaderOnBlur = false;
applyBlurNc= false;
applyBlurNc = false;
applyBlurInternal = false;
showHMIinProduction = false;
showPRODinProduction = false;
@@ -163,11 +162,11 @@ export default class app extends Vue {
return this.$store.state.isMainViewLiftedUp;
}
get statusDashboard(){
get statusDashboard() {
return this.$store.state.isShowDashboard;
}
get statusPreDashboard(){
get statusPreDashboard() {
return this.$store.state.isShowPreDashboard;
}
@@ -195,11 +194,11 @@ export default class app extends Vue {
700
);
if (this.showPRODinProduction && this.$route.path.includes("production"))
messageService.publishToChannel(
"PROD-production-show",
700
);
messageService.publishToChannel(
"PROD-production-show",
700
);
}
}
@@ -247,7 +246,7 @@ export default class app extends Vue {
messageService.publishToChannel(name);
}
toogleDashboard(){
toogleDashboard() {
this.showDashboard = true;
}
+59 -34
View File
@@ -1,42 +1,67 @@
<template>
<div class="container">
<div id="app">
<app-header :class="{'blur':applyBlur}"></app-header>
<dashboard v-if="statusDashboard"></dashboard>
<predashboard v-if="statusPreDashboard"></predashboard>
<alarm-list :applyBlur="applyBlur"></alarm-list>
<div class="container">
<div id="app">
<app-header :class="{'blur':applyBlur}"></app-header>
<dashboard v-if="statusDashboard"></dashboard>
<predashboard v-if="statusPreDashboard"></predashboard>
<alarm-list :applyBlur="applyBlur"></alarm-list>
<under-the-hood :class="{'blur':(applyBlur || applyBlurNc)}"></under-the-hood>
<div id="main-view" ref="main-view" :class="{liftedUp : isMainViewLiftedUp,'blur':(applyBlur || applyBlurNc)}" >
<router-view :class="{'blur':applyBlurInternal}" />
<modal-container name="modal" container-name="modal-internal" :inform-hmi="false" ></modal-container>
</div>
<div id="main-view-handler" ref="main-view-handler" @click="toggleMainView()" :class="{liftedUp : isMainViewLiftedUp,liftedDw : !isMainViewLiftedUp,'blur':(applyBlur || applyBlurNc)}">
<under-the-hood :class="{'blur':(applyBlur || applyBlurNc)}"></under-the-hood>
<div
id="main-view"
ref="main-view"
:class="{liftedUp : isMainViewLiftedUp,'blur':(applyBlur || applyBlurNc)}"
>
<router-view :class="{'blur':applyBlurInternal}" />
<modal-container name="modal" container-name="modal-internal" :inform-hmi="false"></modal-container>
</div>
<div
id="main-view-handler"
ref="main-view-handler"
@click="toggleMainView()"
:class="{liftedUp : isMainViewLiftedUp,liftedDw : !isMainViewLiftedUp,'blur':(applyBlur || applyBlurNc)}"
>
<vue-gesture
:type="'swipedown'"
:call="toggleMainView"
:onmove="movepanel"
:onstart="onstartdrag"
:onstop="onstopdrag"
>
<div
class="handle"
:title="'header_tooltip_close_uth' | localize('Close under-the-hood area')"
>
<i class="fa fa-angle-double-down"></i>
</div>
</vue-gesture>
</div>
<vue-gesture :type="'swipedown'" :call="toggleMainView" :onmove="movepanel" :onstart="onstartdrag" :onstop="onstopdrag">
<div class="handle" :title="'header_tooltip_close_uth' | localize('Close under-the-hood area')" >
<i class="fa fa-angle-double-down"></i>
</div>
</vue-gesture>
</div>
<nav :class="{'blur':(applyBlur || applyBlurNc)}">
<switch-button></switch-button>
</nav>
<nav :class="{'blur':(applyBlur || applyBlurNc)}">
<switch-button></switch-button>
</nav>
<sidebar></sidebar>
<sidebar></sidebar>
<app-footer :class="{'blur':(applyBlur || applyBlurNc)}"></app-footer>
</div>
<modal-nc-container name="modal-nc" :class="{'blur':applyBlur}"></modal-nc-container>
<modal-container containerName="modal-login" name="modal-login" ></modal-container>
<modal-container name="modal" ></modal-container>
<div class="window-buttons">
<button class="gray square close" @click="sendMessage('hide')" :title="'header_tooltip_btn_minimize' | localize('Minimize the application')">-</button>
<button class="gray square close" @click="sendMessage('close')" :title="'header_tooltip_btn_close' | localize('Close the application')">&times;</button>
</div>
</div>
<app-footer :class="{'blur':(applyBlur || applyBlurNc)}"></app-footer>
</div>
<modal-nc-container name="modal-nc" :class="{'blur':applyBlur}"></modal-nc-container>
<modal-container containerName="modal-login" name="modal-login"></modal-container>
<keyboard></keyboard>
<modal-container name="modal"></modal-container>
<div class="window-buttons">
<button
class="gray square close"
@click="sendMessage('hide')"
:title="'header_tooltip_btn_minimize' | localize('Minimize the application')"
>-</button>
<button
class="gray square close"
@click="sendMessage('close')"
:title="'header_tooltip_btn_close' | localize('Close the application')"
>&times;</button>
</div>
</div>
</template>
<script src="./App.ts" lang="ts"></script>
@@ -0,0 +1,25 @@
export class KeyboardHelper {
static currentKeyboard: any = null;
static setCurrentKeyboard(element) {
KeyboardHelper.currentKeyboard = element;
}
static showKeyboard(x, y, value: Recipe.IValue) {
if (KeyboardHelper.currentKeyboard) {
KeyboardHelper.currentKeyboard.resetTo(value);
KeyboardHelper.currentKeyboard.positionX = x;
debugger
KeyboardHelper.currentKeyboard.positionY = y;
KeyboardHelper.currentKeyboard.visible = true;
}
}
static hideKeyboard() {
if (KeyboardHelper.currentKeyboard) {
KeyboardHelper.currentKeyboard.visible = false;
KeyboardHelper.currentKeyboard.resetTo(null);
}
}
}
@@ -1,9 +1,10 @@
import numeric from "./numeric.vue";
import keyboard from "./tastierino.vue";
import slider from "./slider.vue";
import Vue from "vue";
import keyboard from "./keyboard.vue";
export default {
numeric,
keyboard,
slider
slider,
keyboard
}
@@ -0,0 +1,63 @@
import Vue from 'vue';
import { Prop } from 'vue-property-decorator';
import Component from 'vue-class-component';
import { KeyboardHelper } from './KeyboardHelper';
@Component({})
export default class Keyboard extends Vue {
positionX: number = 0;
positionY: number = 0;
visible: boolean = false;
actualValue: Recipe.IValue;
point: string;
@Prop()
value: string;
del() {
this.actualValue.valueAct = 0;
}
canc() {
let temp = String(this.actualValue.valueAct);
this.actualValue.valueAct = Number(temp.slice(0, -1))
}
add(num: string) {
if (this.point) {
this.point += num;
this.actualValue.valueAct = Number(this.point)
} else {
let temp = String(this.actualValue.valueAct);
temp += num;
this.actualValue.valueAct = Number(temp)
}
}
addpoint() {
if (!this.point) {
this.point = String(this.actualValue.valueAct);
this.point += ".";
}
}
resetTo(value) {
this.actualValue = null;
this.point = null;
this.actualValue = value;
}
hide() {
KeyboardHelper.hideKeyboard();
}
mounted() {
KeyboardHelper.setCurrentKeyboard(this);
}
}
@@ -1,5 +1,5 @@
<template>
<div class="keyboard">
<div class="keyboard" v-if="visible" :style="{top: `${positionY}px`, left: `${positionX}px`}">
<div class="mask">
<button class="b7" @click="add('7')">
<label class="lab">7</label>
@@ -32,7 +32,7 @@
<button class="b3" @click="add('3')">
<label class="lab">3</label>
</button>
<button class="submit"></button>
<button class="submit" @click="hide()"></button>
<button class="zero" @click="add('0')">
<label class="lab">0</label>
</button>
@@ -43,4 +43,4 @@
</div>
</template>
<script lang="ts" src="./tastierino.ts"></script>
<script lang="ts" src="./keyboard.ts"></script>
@@ -1,6 +1,7 @@
import Vue from "vue";
import Component from "vue-class-component";
import { Prop } from "vue-property-decorator";
import { KeyboardHelper } from "./KeyboardHelper";
@Component({})
export default class Numeric extends Vue {
@@ -20,4 +21,29 @@ export default class Numeric extends Vue {
@Prop()
unitOfMeasure: string;
@Prop({ default: 'right' })
keyboardPosition: string;
onFocus() {
let rect = this.$el.getBoundingClientRect();
const keyboardsize = 262;
let x = rect.x + rect.width / 2 - keyboardsize / 2;
let y = rect.y + rect.height / 2 - keyboardsize / 2;
switch (this.keyboardPosition) {
case "top": y = y - rect.height - keyboardsize / 2; break;
case "bottom": y = y + rect.height + keyboardsize / 2; break;
case "left": x = x - rect.width - keyboardsize / 2; break;
case "right": x = x + rect.width + keyboardsize / 2; break;
}
KeyboardHelper.showKeyboard(x, y, this.value);
}
onBlur() {
// KeyboardHelper.hideKeyboard();
}
}
@@ -1,6 +1,6 @@
<template>
<div class="numeric">
<input type="number" v-model.number="value.valueAct" />
<input type="number" v-model.number="value.valueAct" @focus="onFocus" @blur="onBlur" />
<span v-if="value.unitMeasure">{{unitMeasure}}</span>
</div>
</template>
@@ -1,19 +1,18 @@
import Vue from "vue";
import Component from "vue-class-component";
import {paddleActions} from '@/store/paddle.store';
import ToggleButton from "@/components/toggleButton.vue";
import { paddleActions } from '@/store/paddle.store';
@Component({name: 'sidebar',components: { toggleButton:ToggleButton } })
export default class Sidebar extends Vue{
@Component({ name: 'sidebar' })
export default class Sidebar extends Vue {
azione1:boolean=false;
azione2:boolean=false;
azione1: boolean = false;
azione2: boolean = false;
isPanelOpen(){
return this.$store.state.paddle.isNavOpen;
}
isPanelOpen() {
return this.$store.state.paddle.isNavOpen;
}
closeSidebarPanel() {
paddleActions.Toggle(this.$store);
}
closeSidebarPanel() {
paddleActions.Toggle(this.$store);
}
}
@@ -11,5 +11,4 @@ export default class Scheda extends Vue{
@Prop({})
durata:Recipe.IValue;
}
@@ -3,14 +3,14 @@
<div class="body">
<div class="input-area">
<label>Portata</label>
<numeric v-model.number="portata" />
<numeric v-model="portata" />
</div>
<slider :min="portata.range.min" :max="portata.range.max" v-model.number="portata.valueAct"></slider>
<slider v-model="portata"></slider>
<div class="input-area">
<label class="Ritardo">Durata</label>
<numeric v-model.number="durata" />
<label>Durata</label>
<numeric v-model="durata" />
</div>
<slider :min="durata.range.min" :max="durata.range.max" v-model.number="durata.valueAct"></slider>
<slider v-model="durata"></slider>
</div>
</div>
</template>
@@ -5,17 +5,10 @@ import { Prop } from 'vue-property-decorator';
@Component({ name: "slider" })
export default class Slider extends Vue {
@Prop({ default: "" })
unitOfMeasure: string;
@Prop()
value: number;
value: Recipe.IValue;
@Prop()
min: number;
@Prop()
max: number;
@Prop({ default: 9 })
lines: number;
@@ -23,52 +16,41 @@ export default class Slider extends Vue {
@Prop({ default: 1 })
decimal: number;
get minLabel() {
return `${this.min} ${this.unitOfMeasure}`;
}
get averageLabel() {
return `${(this.max - this.min) / 2} ${this.unitOfMeasure}`;
}
get maxLabel() {
return `${this.max} ${this.unitOfMeasure}`;
}
get actualvalue() {
return this.value;
return this.value.valueAct;
}
set actualvalue(v: number) {
this.$emit('input', v);
this.value.valueAct = v;
}
get step() {
var s = ((this.max - this.min) / (this.lines + 1));
var s = ((this.value.range.max - this.value.range.min) / (this.lines + 1));
var m = Math.pow(10, this.decimal);
return Math.round(s * m) / m
};
increment() {
var v = this.value;
if (v < this.max) {
var v = this.value.valueAct;
if (v < this.value.range.max) {
v -= (-this.step);
}
if (v > this.max) {
v = this.max;
if (v > this.value.range.max) {
v = this.value.range.max;
}
this.$emit('input', v);
this.actualvalue = v;
};
decrement() {
var v = this.value;
if (v > this.min) {
var v = this.value.valueAct;
if (v > this.value.range.min) {
v -= this.step;
}
if (v < this.min) {
v = this.min;
if (v < this.value.range.min) {
v = this.value.range.min;
}
this.$emit('input', v);
this.actualvalue = v;
};
@@ -4,14 +4,19 @@
<img src="assets/icons/png/min.png" />
</button>
<div class="control">
<input :min="min" :max="max" v-model.number="actualvalue" type="range" />
<input
:min="this.value.range.min"
:max="this.value.range.max"
v-model.number="actualvalue"
type="range"
/>
<div class="lines">
<span v-for="iter in lines" :key="iter" class="line"></span>
</div>
<div class="labels">
<small>{{minLabel}}</small>
<small>{{averageLabel}}</small>
<small>{{maxLabel}}</small>
<small>{{`${this.value.range.min} ${this.value.unitMeasure}`}}</small>
<small>{{`${(this.value.range.max - this.value.range.min) / 2} ${this.value.unitMeasure}`}}</small>
<small>{{`${this.value.range.max} ${this.value.unitMeasure}`}}</small>
</div>
</div>
<button @click="increment()">
@@ -1,44 +0,0 @@
import Vue from 'vue';
import { Prop } from 'vue-property-decorator';
import Component from 'vue-class-component';
@Component({ name: "tastierino" })
export default class Tastierino extends Vue {
@Prop()
actualValue: Recipe.IValue;
temp: string;
point: string;
@Prop()
value: string;
del() {
this.actualValue.valueAct = 0;
}
canc() {
this.temp = String(this.actualValue.valueAct);
this.actualValue.valueAct = Number(this.temp.slice(0, -1))
}
add(num: string) {
if (this.point) {
this.point += num;
this.actualValue.valueAct = Number(this.point)
} else {
this.temp = String(this.actualValue.valueAct);
this.temp += num;
this.actualValue.valueAct = Number(this.temp)
}
}
addpoint() {
if (!this.point) {
this.point = String(this.actualValue.valueAct);
this.point += ".";
}
}
}
@@ -1,35 +1,34 @@
import Vue from 'vue';
import Component from 'vue-class-component';
import {Prop} from 'vue-property-decorator';
import { Prop } from 'vue-property-decorator';
import { messageService } from "@/_base/messageService";
import { Modal, ModalHelper } from "@/components/modals";
import ToggleButton from "@/components/toggleButton.vue";
import {appModelActions} from "@/store/app.store";
import { appModelActions } from "@/store/app.store";
@Component({
components: {
modal: Modal,
ToggleButton
}
components: {
modal: Modal,
}
})
export default class ProgrammazionePreriscaldo extends Vue{
enabling:boolean=true;
risc:boolean=true;
termo:boolean=true;
block:boolean=false;
active:string="";
meridian:string="--";
hours:string="00";
export default class ProgrammazionePreriscaldo extends Vue {
public sendMessage(name: string) {
messageService.publishToChannel(name);
}
enabling: boolean = true;
risc: boolean = true;
termo: boolean = true;
block: boolean = false;
showPreDashboard() {
appModelActions.ShowPreDashboard(this.$store);
}
active: string = "";
meridian: string = "--";
hours: string = "00";
public sendMessage(name: string) {
messageService.publishToChannel(name);
}
showPreDashboard() {
appModelActions.ShowPreDashboard(this.$store);
}
}
@@ -3,52 +3,50 @@ import { Modal, ModalHelper } from "@/components/modals";
import { Factory, messageService, awaiter } from "@/_base";
import Component from "vue-class-component";
import { Prop } from 'vue-property-decorator';
import ToggleButton from "@/components/toggleButton.vue";
import Tastierino from "@/app_modules_thermo/components/tastierino.vue";
import {appModelActions} from "@/store/app.store";
import { appModelActions } from "@/store/app.store";
@Component({
components: {
@Component({
components: {
modal: Modal,
ToggleButton,
tastierino:Tastierino
}
tastierino: Tastierino
}
})
export default class AvvioProduzione extends Vue {
enabling:boolean=true;
@Prop({})
pieces:number;
enabling: boolean = true;
@Prop({})
pieces: number;
mock_pieces:number=this.pieces;
mock_pieces: number = this.pieces;
annulla(){
ModalHelper.HideModal();
};
// conferma(){
// ModalHelper.HideModal();
// };
annulla() {
ModalHelper.HideModal();
};
// conferma(){
// ModalHelper.HideModal();
// };
showDashboard() {
ModalHelper.HideModal();
appModelActions.ShowDashboard(this.$store);
}
async beforeMount() {
// this.contactInfo = await awaiter(new machineService().getContactConfiguration());
messageService.subscribeToChannel("esc_pressed", args => {
this.close();
});
}
beforeDestroy() {
messageService.deleteChannel("esc_pressed");
}
close() {
messageService.deleteChannel("esc_pressed");
ModalHelper.HideModal();
}
showDashboard() {
ModalHelper.HideModal();
appModelActions.ShowDashboard(this.$store);
}
async beforeMount() {
// this.contactInfo = await awaiter(new machineService().getContactConfiguration());
messageService.subscribeToChannel("esc_pressed", args => {
this.close();
});
}
beforeDestroy() {
messageService.deleteChannel("esc_pressed");
}
close() {
messageService.deleteChannel("esc_pressed");
ModalHelper.HideModal();
}
}
@@ -9,13 +9,13 @@
<section>
<div class="specific">
<div class="input-area">
<label>Settaggio numero pezzi</label>
<label>{{'enabling'|localize('Settaggio numero pezzi')}}</label>
<toggle-button v-model="enabling"></toggle-button>
</div>
<img class="disabled" src="assets/icons/png/tast-disable.png" v-if="!enabling">
<div class="input-area" v-if="enabling">
<label>Numero pezzi</label>
<numeric v-model.number="mock_pieces"/>
<label>{{'mock_pieces'|localize('Numero pezzi')}}</label>
<numeric v-model="mock_pieces"/>
</div>
<tastierino v-if="enabling"></tastierino>
</div>
@@ -3,12 +3,11 @@ import Component from 'vue-class-component';
import { Prop } from 'vue-property-decorator';
import Slider from "@/app_modules_thermo/components/slider.vue";
import SVGCaricatore from "./SVG-Components/SVGcaricatore.vue";
import ToggleButton from "@/components/toggleButton.vue";
@Component({ components: { ToggleButton, slider: Slider, svgcaricatore: SVGCaricatore, } })
@Component({ components: { slider: Slider, svgcaricatore: SVGCaricatore, } })
export default class Caricatore extends Vue {
@Prop()
recipe:Recipe.IRecipe;
recipe: Recipe.IRecipe;
}
@@ -1,74 +1,77 @@
<template>
<section>
<aside class="scrollable">
<div class="input-area">
<label>Abilitazione</label>
<toggle-button v-model="recipe.cycle_loader_enable.status.enabled"></toggle-button>
<div class="box transparent">
<div class="body">
<div class="input-area">
<label>{{'cycle_loader_enable'|localize('Abilitazione')}}</label>
<toggle-button v-model="recipe.cycle_loader_enable.status.enabled"></toggle-button>
</div>
<hr />
<div class="input-area">
<label>{{'cycle_loader_lifter_lowerposition_delay'|localize('Ritardo discesa sollevatore')}}</label>
<numeric v-model="recipe.cycle_loader_lifter_lowerposition_delay" />
</div>
<slider v-model="recipe.cycle_loader_lifter_lowerposition_delay"></slider>
<div class="input-area">
<label>{{'cycle_loader_lifter_upperposition_delay'|localize('Ritardo salita sollevatore')}}</label>
<numeric v-model="recipe.cycle_loader_lifter_upperposition_delay" />
</div>
<slider v-model="recipe.cycle_loader_lifter_upperposition_delay"></slider>
<div class="input-area">
<label>{{'cycle_loader_split_sheet_time'|localize('Durata separazione lastra')}}</label>
<numeric v-model="recipe.cycle_loader_split_sheet_time" />
</div>
<slider v-model="recipe.cycle_loader_split_sheet_time"></slider>
<div class="input-area">
<label>{{'cycle_loader_ejector_position'|localize('Ritardo espulsore')}}</label>
<numeric v-model="recipe.cycle_loader_ejector_position" />
</div>
<slider v-model="recipe.cycle_loader_ejector_position"></slider>
<div class="input-area">
<label>{{'cycle_loader_pallet_height'|localize('Altezza bancale')}}</label>
<numeric v-model="recipe.cycle_loader_pallet_height" />
</div>
<slider v-model="recipe.cycle_loader_pallet_height"></slider>
<div class="input-area">
<label>{{'cycle_loader_center_x'|localize('Centratura X')}}</label>
<toggle-button v-model="recipe.cycle_loader_center_x.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>{{'cycle_loader_center_y'|localize('Centratura Y')}}</label>
<toggle-button v-model="recipe.cycle_loader_center_y.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>{{'cycle_loader_checktichness_enabled'|localize('Controllo spessore')}}</label>
<toggle-button v-model="recipe.cycle_loader_checktichness_enabled.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>{{'cycle_loader_suckers_vacuum'|localize('Vuoto ventose')}}</label>
<toggle-button v-model="recipe.cycle_loader_suckers_vacuum.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>{{'cycle_loader_ionizer_enabled'|localize('Abilitazione ionizzatore')}}</label>
<toggle-button v-model="recipe.cycle_loader_ionizer_enabled.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>{{'cycle_loader_manualunloading_enabled'|localize('Funzione scarico pezzo manuale')}}</label>
<toggle-button v-model="recipe.cycle_loader_manualunloading_enabled.status.enabled"></toggle-button>
</div>
</div>
</div>
<hr />
<div class="input-area">
<label>Ritardo discesa sollevatore</label>
<numeric v-model.number="recipe.cycle_loader_lifter_lowerposition_delay"/>
</div>
<slider
:min="recipe.cycle_loader_lifter_lowerposition_delay.range.min"
:max="recipe.cycle_loader_lifter_lowerposition_delay.range.max"
v-model.number="recipe.cycle_loader_lifter_lowerposition_delay.valueAct"
:unit-of-measure="'s'">
</slider>
<div class="input-area">
<label>Ritardo salita sollevatore</label>
<numeric v-model.number="recipe.cycle_loader_lifter_upperposition_delay"/>
</div>
<slider
:min="recipe.cycle_loader_lifter_upperposition_delay.range.min"
:max="recipe.cycle_loader_lifter_upperposition_delay.range.max"
v-model.number="recipe.cycle_loader_lifter_upperposition_delay.valueAct"
:unit-of-measure="'s'">
</slider>
<div class="input-area">
<label>Durata separazione lastra</label>
<numeric v-model.number="recipe.cycle_loader_split_sheet_time"/>
</div>
<slider
:min="recipe.cycle_loader_split_sheet_time.range.min"
:max="recipe.cycle_loader_split_sheet_time.range.max"
v-model.number="recipe.cycle_loader_split_sheet_time.valueAct"
:unit-of-measure="'s'">
</slider>
<div class="input-area">
<label>Ritardo espulsore</label>
<numeric v-model.number="recipe.cycle_loader_ejector_position"/>
</div>
<slider
:min="recipe.cycle_loader_ejector_position.range.min"
:max="recipe.cycle_loader_ejector_position.range.max"
v-model.number="recipe.cycle_loader_ejector_position.valueAct"
:unit-of-measure="'s'">
</slider>
<div class="input-area">
<label>Altezza bancale</label>
<numeric v-model.number="recipe.cycle_loader_pallet_height"/>
</div>
<slider
:min="recipe.cycle_loader_pallet_height.range.min"
:max="recipe.cycle_loader_pallet_height.range.max"
v-model.number="recipe.cycle_loader_pallet_height.valueAct"
:unit-of-measure="'mm'">
</slider>
</aside>
<hr>
<div class="specific">
<hr />
<article>
<svgcaricatore></svgcaricatore>
<div class="caricatore-buttons">
<button>
<div class="absolute bottom left">
<button class="btn btn-info square">
<img src="assets/icons/png/info.png" />
</button>
<button>
<button class="btn btn-success square">
<img src="assets/icons/png/play.png" />
</button>
</div>
</div>
</article>
</section>
</template>
@@ -4,18 +4,16 @@ import { Prop } from 'vue-property-decorator';
import acrilico from "./formatura-acrilico.vue";
import cristallizzazione from "./formatura-cristallizzazione.vue";
import riscaldo from "./formatura-riscaldo.vue";
import ToggleButton from "@/components/toggleButton.vue";
@Component({
name: "cicloformatura",
components: {
acrilico, cristallizzazione, riscaldo,
ToggleButton
acrilico, cristallizzazione, riscaldo
}
})
export default class CicloFormatura extends Vue {
@Prop()
recipe:Recipe.IRecipe;
recipe: Recipe.IRecipe;
}
@@ -1,31 +1,33 @@
<template>
<section>
<aside class="scrollable auto">
<div class="input-area">
<label>Tipo</label>
<select>
<option value="Termorivestito">Termorivestito</option>
</select>
</div>
<div class="input-area">
<label>Pausa ciclo</label>
<toggle-button v-model="recipe.cycle_forming_pause_cycle.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>Raffreddamento fine ciclo</label>
<toggle-button v-model="recipe.cycle_forming_cooling_enabled.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>Ventilazione cassone fine ciclo</label>
<toggle-button v-model="recipe.cycle_forming_blowingbox_enabled.status.enabled"></toggle-button>
<div class="box transparent">
<div class="body">
<div class="input-area">
<label>{{'cycle_forming_type'|localize('Tipo')}}</label>
<select class="form-control" v-model="recipe.cycle_forming_type"></select>
</div>
<div class="input-area">
<label>{{'cycle_forming_pause_cycle'|localize('Pausa ciclo')}}</label>
<toggle-button v-model="recipe.cycle_forming_pause_cycle.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>{{'cycle_forming_cooling_enabled'|localize('Raffreddamento fine ciclo')}}</label>
<toggle-button v-model="recipe.cycle_forming_cooling_enabled.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>{{'cycle_forming_blowingbox_enabled'|localize('Ventilazione cassone fine ciclo')}}</label>
<toggle-button v-model="recipe.cycle_forming_blowingbox_enabled.status.enabled"></toggle-button>
</div>
</div>
</div>
</aside>
<hr>
<div class="specific">
<hr />
<article class="ml-10">
<acrilico :recipe="recipe"></acrilico>
<riscaldo :recipe="recipe"></riscaldo>
<cristallizzazione :recipe="recipe"></cristallizzazione>
</div>
</article>
</section>
</template>
@@ -2,12 +2,11 @@ import Vue from 'vue';
import Component from 'vue-class-component';
import { Prop } from 'vue-property-decorator';
import Slider from "@/app_modules_thermo/components/slider.vue";
import ToggleButton from "@/components/toggleButton.vue";
@Component({ components: { slider: Slider, ToggleButton } })
@Component({ components: { slider: Slider } })
export default class MascheraAcrilico extends Vue {
@Prop()
recipe:Recipe.IRecipe;
recipe: Recipe.IRecipe;
}
@@ -1,22 +1,18 @@
<template>
<div class="box">
<div class="box box-500">
<div class="header">
<label>Cornice per acrilico</label>
</div>
<div class="body">
<div class="input-area">
<label>Abilitazione</label>
<label>{{'cycle_acrylicframe_enabled'|localize('Abilitazione')}}</label>
<toggle-button v-model="recipe.cycle_acrylicframe_enabled.status.enabled"></toggle-button>
</div>
<div class="input-area">
<label>Durata</label>
<numeric v-model.number="recipe.cycle_acrylicframe_time"/>
<label>{{'cycle_acrylicframe_time'|localize('Durata')}}</label>
<numeric v-model="recipe.cycle_acrylicframe_time" />
</div>
<slider
:min="recipe.cycle_acrylicframe_time.range.min"
:max="recipe.cycle_acrylicframe_time.range.max"
v-model.number="recipe.cycle_acrylicframe_time.valueAct">
</slider>
<slider v-model="recipe.cycle_acrylicframe_time"></slider>
</div>
</div>
</template>
@@ -2,12 +2,11 @@ import Vue from 'vue';
import Component from 'vue-class-component';
import { Prop } from 'vue-property-decorator';
import Slider from "@/app_modules_thermo/components/slider.vue";
import ToggleButton from "@/components/toggleButton.vue";
@Component({ components: { slider: Slider, ToggleButton } })
@Component({ components: { slider: Slider } })
export default class MascheraCristallizzazione extends Vue {
@Prop()
recipe:Recipe.IRecipe;
recipe: Recipe.IRecipe;
}
@@ -1,22 +1,18 @@
<template>
<div class="box">
<div class="box box-500">
<div class="header">
<label>Cristallizzazione (secondo riscaldo)</label>
</div>
<div class="body">
<div class="input-area">
<label>Abilitazione</label>
<toggle-button v-model="recipe.cycle_crystallisation_enabled.status.enabled"></toggle-button>
<label>{{'cycle_crystallisation_type'|localize('Tipo')}}</label>
<select class="form-control" v-model="recipe.cycle_crystallisation_type"></select>
</div>
<div class="input-area">
<label>Durata</label>
<numeric v-model.number="recipe.cycle_crystallisation_time" />
<label>{{'cycle_crystallisation_time'|localize('Durata')}}</label>
<numeric v-model="recipe.cycle_crystallisation_time" />
</div>
<slider
:min="recipe.cycle_crystallisation_time.range.min"
:max="recipe.cycle_crystallisation_time.range.max"
v-model.number="recipe.cycle_crystallisation_time.valueAct"
></slider>
<slider v-model="recipe.cycle_crystallisation_time"></slider>
</div>
</div>
</template>
@@ -7,6 +7,6 @@ import Slider from "@/app_modules_thermo/components/slider.vue";
export default class MascheraRiscaldo extends Vue {
@Prop()
recipe:Recipe.IRecipe;
recipe: Recipe.IRecipe;
}
@@ -1,18 +1,18 @@
<template>
<div class="box">
<div class="box box-500">
<div class="header">
<label>Riscaldo superiore supplementare</label>
</div>
<div class="body">
<div class="input-area">
<label>Durata</label>
<numeric v-model.number="recipe.cycle_upperoverheating_time"/>
<label>{{'cycle_upperoverheating_enabled'|localize('Abilitazione')}}</label>
<toggle-button v-model="recipe.cycle_upperoverheating_enabled.status.enabled"></toggle-button>
</div>
<slider
:min="recipe.cycle_upperoverheating_time.range.min"
:max="recipe.cycle_upperoverheating_time.range.max"
v-model.number="recipe.cycle_upperoverheating_time.valueAct"
></slider>
<div class="input-area">
<label>{{'cycle_upperoverheating_time'|localize('Durata')}}</label>
<numeric v-model="recipe.cycle_upperoverheating_time" />
</div>
<slider v-model="recipe.cycle_upperoverheating_time"></slider>
</div>
</div>
</template>
@@ -30,6 +30,12 @@ export default class ShowCicloInfo extends Vue {
this.deferred.resolve(1);
};
goTo(step) {
recipeActions.setCurrent(store, this.recipe);
ModalHelper.HideModal();
this.deferred.resolve(step);
}
async beforeMount() {
// this.contactInfo = await awaiter(new machineService().getContactConfiguration());
messageService.subscribeToChannel("esc_pressed", args => {
@@ -17,7 +17,7 @@
<button class="btn btn-success" @click="conferma()">Conferma</button>
</footer>
</modal>
<stepfooter :current="2"></stepfooter>
<stepfooter :current="2" @click="goTo"></stepfooter>
</div>
</template>
@@ -24,7 +24,7 @@
></setup-button>
<setup-button
@click="sshowModalAtStep(3);"
@click="showModalAtStep(3);"
:phase="4"
title="Riscaldi"
statusImage="fa fa-check-circle undone-step"
@@ -11,6 +11,6 @@ export default class StepFooter extends Vue {
current: number;
public showModalAtStep(step: number) {
messageService.publishToChannel('show-setup-modal', step);
this.$emit('click', step - this.current)
}
}
@@ -1,13 +1,13 @@
import Vue from 'vue';
import Component from 'vue-class-component';
import {Prop} from 'vue-property-decorator';
import { Prop } from 'vue-property-decorator';
import Slider from "@/app_modules_thermo/components/slider.vue";
import Scheda from "@/app_modules_thermo/components/scheda.vue";
@Component({name:"ariacontrostampo", components: { scheda:Scheda,slider:Slider}})
@Component({ name: "ariacontrostampo", components: { scheda: Scheda, slider: Slider } })
export default class AriaControstampo extends Vue {
@Prop()
recipe:Recipe.IRecipe;
@Prop()
recipe: Recipe.IRecipe;
}
@@ -1,45 +1,55 @@
<template>
<section>
<aside class="scrollable auto">
<div class="input-area">
<img src="assets/icons/png/clessidra.png" />
<label>Ritardo</label>
<numeric v-model.number="recipe.upperplate_air_delay" />
<div class="box transparent">
<div class="body">
<div class="input-area">
<label>{{'upperplate_air_enable'|localize('Abilitazione')}}</label>
<toggle-button v-model="recipe.upperplate_air_enable.status.enabled"></toggle-button>
</div>
<div class="input-area">
<img src="assets/icons/png/clessidra.png" />
<label>{{'upperplate_air_delay'|localize('Ritardo')}}</label>
<numeric v-model="recipe.upperplate_air_delay" />
</div>
<slider v-model="recipe.upperplate_air_delay"></slider>
<div class="input-area">
<label>{{'upperplate_air_manual'|localize('Portata manuale')}}</label>
<numeric v-model="recipe.upperplate_air_manual" />
</div>
<slider v-model="recipe.upperplate_air_delay"></slider>
</div>
</div>
<slider
:min="recipe.upperplate_air_delay.range.min"
:max="recipe.upperplate_air_delay.range.max"
v-model.number="recipe.upperplate_air_delay.valueAct"
:unit-of-measure="'s'"
></slider>
</aside>
<hr />
<div class="specific">
<article class="shrink ml-10">
<scheda
class="box-500 mb-10"
:portata="recipe.upperplate_air_1_chart_setpointx"
:durata="recipe.upperplate_air_1_chart_setpointy"
></scheda>
<scheda
class="box-500 mb-10"
:portata="recipe.upperplate_air_2_chart_setpointx"
:durata="recipe.upperplate_air_2_chart_setpointy"
></scheda>
<scheda
class="box-500 mb-10"
:portata="recipe.upperplate_air_3_chart_setpointx"
:durata="recipe.upperplate_air_3_chart_setpointy"
></scheda>
</div>
<div class="specific">
<div class="input-area">
<label>Durata massima</label>
<numeric v-model.number="recipe.upperplate_air_max_time" />
</article>
<article>
<div class="box transparent center box-500">
<div class="body">
<div class="input-area">
<label>{{'upperplate_air_max_time'|localize('Durata massima')}}</label>
<numeric v-model="recipe.upperplate_air_max_time" />
</div>
<slider v-model="recipe.upperplate_air_max_time"></slider>
</div>
</div>
<slider
:min="recipe.upperplate_air_max_time.range.min"
:max="recipe.upperplate_air_max_time.range.max"
v-model.number="recipe.upperplate_air_max_time.valueAct"
:unit-of-measure="'s'"
></slider>
</div>
</article>
</section>
</template>
@@ -1,21 +1,17 @@
import Vue from 'vue';
import Component from 'vue-class-component';
import {Prop} from 'vue-property-decorator';
import { Prop } from 'vue-property-decorator';
import Slider from "@/app_modules_thermo/components/slider.vue";
import ToggleButton from "@/components/toggleButton.vue";
@Component({
name:"ciclocontrostampo",
components: {
slider:Slider,
ToggleButton
name: "ciclocontrostampo",
components: {
slider: Slider
}
})
export default class CicloControstampo extends Vue {
@Prop()
recipe:Recipe.IRecipe;
abilit:boolean=false;
recipe: Recipe.IRecipe;
}
@@ -1,38 +1,26 @@
<template>
<section>
<div class="specific controstampo-cycle">
<div class="input-area">
<label>Abilitazione</label>
<toggle-button v-model="abilit"></toggle-button>
<article>
<div class="box transparent box-500 center">
<div class="body">
<div class="input-area">
<label>{{'upperplate_cycle_type'|localize('Tipo')}}</label>
<select class="form-control" v-model="recipe.upperplate_cycle_type"></select>
</div>
<div class="input-area">
<img src="assets/icons/png/clessidra.png" />
<label>{{'upperplate_cycle_delay'|localize('Ritardo')}}</label>
<numeric v-model="recipe.upperplate_cycle_delay" />
</div>
<slider v-model.number="recipe.upperplate_cycle_delay"></slider>
<div class="input-area">
<label>{{'upperplate_cycle_time'|localize('Durata')}}</label>
<numeric v-model="recipe.upperplate_cycle_time" />
</div>
<slider v-model="recipe.upperplate_cycle_time"></slider>
</div>
</div>
<div class="input-area">
<label>Partenza</label>
<select>
<option value="Label partenza">Label partenza</option>
</select>
</div>
<div class="input-area">
<img src="assets/icons/png/clessidra.png" />
<label>Ritardo</label>
<numeric v-model.number="recipe.upperplate_cycle_delay" />
</div>
<slider
:min="recipe.upperplate_cycle_delay.range.min"
:max="recipe.upperplate_cycle_delay.range.max"
v-model.number="recipe.upperplate_cycle_delay.valueAct"
:unit-of-measure="'s'"
></slider>
<div class="input-area">
<label>Durata</label>
<numeric v-model.number="recipe.upperplate_cycle_time" />
</div>
<slider
:min="recipe.upperplate_cycle_time.range.min"
:max="recipe.upperplate_cycle_time.range.max"
v-model.number="recipe.upperplate_cycle_time.valueAct"
:unit-of-measure="'s'"
></slider>
</div>
</article>
</section>
</template>
@@ -0,0 +1,13 @@
import Vue from 'vue';
import Component from 'vue-class-component';
import { Prop } from 'vue-property-decorator';
import Slider from "@/app_modules_thermo/components/slider.vue";
import Scheda from "@/app_modules_thermo/components/scheda.vue";
@Component({ name: "estrazionecontrostampo", components: { scheda: Scheda, slider: Slider } })
export default class EstrazioneControstampo extends Vue {
@Prop()
recipe: Recipe.IRecipe;
}

Some files were not shown because too many files have changed in this diff Show More