Compare commits

...

29 Commits

Author SHA1 Message Date
Samuele Locatelli d21efcb78f Merge branch 'feature/add/prodData' into feature/add/risk 2020-06-09 19:14:29 +02:00
Samuele Locatelli 6d52ccdc9c Continuing warmers & recipe fix & config 2020-06-09 19:13:57 +02:00
Samuele Locatelli bdc0ce1aa5 Added method for Prod Info & Cycle data read 2020-06-08 22:30:37 +02:00
Samuele Locatelli 31519c303b Added signal-r prod data push 2020-06-08 22:07:37 +02:00
Samuele Locatelli 0cfbbe069a Fix Filesystem IO 4 recipe 2020-06-08 21:22:14 +02:00
Samuele E. Locatelli 04f9a8155e Update vers number 2020-06-08 19:46:04 +02:00
Samuele Locatelli de8daee8f9 Merge branch 'feature/add/risk' into develop 2020-06-08 19:41:22 +02:00
Samuele Locatelli 8ccd5fc06b Added load save update methods 2020-06-08 19:41:02 +02:00
Samuele Locatelli 698fd47177 Added file method for template/current/load/save 2020-06-08 15:44:59 +02:00
Samuele Locatelli f48ee73ede Merge branch 'feature/add/risk' into develop 2020-06-08 11:14:39 +02:00
Samuele Locatelli 3dedafd43f update load/save call from WebApi 2020-06-08 11:02:18 +02:00
Samuele Locatelli 020d8304a5 DRAFT: Recipe local persistence file 2020-06-05 23:13:46 +02:00
Samuele Locatelli 2a66160e84 Added warmers resistances output 2020-06-05 21:28:25 +02:00
Samuele Locatelli a52d76bb5b Abbozzata gestione esterna x warmers 2020-06-05 19:54:38 +02:00
Samuele Locatelli 112f6ed697 refresh state machine status 2020-06-05 19:47:17 +02:00
Samuele Locatelli 9798b5a993 Added overview real calculation 2020-06-05 19:38:30 +02:00
Samuele Locatelli c28c77bec9 Merge branch 'feature/add/risk' into develop 2020-06-05 18:51:35 +02:00
Samuele Locatelli 9232597888 UPdate methods for recipe edit confirm/cancel 2020-06-05 18:51:15 +02:00
Samuele Locatelli db7a6c39c3 Merge branch 'feature/add/moduleBlock' into develop 2020-06-05 12:07:11 +02:00
Samuele Locatelli 3b3b6c424e Completed RISK config decoding 2020-06-05 12:06:11 +02:00
Samuele Locatelli 90ef09785c update decoding objects 2020-06-04 19:03:28 +02:00
Samuele Locatelli eba5920137 Update risk naming 2020-06-04 19:03:13 +02:00
Samuele Locatelli 3d16c4d682 Fix moduleBLock config 2020-06-04 19:02:56 +02:00
Samuele Locatelli d6ea0e7f9a Update ENUM uppercase 2020-06-04 15:52:00 +02:00
Samuele Locatelli 8bd8144294 Started config setup for new objects 2020-06-04 15:21:15 +02:00
Samuele Locatelli e5daf52bb4 Add xml/xsd for ModBlock and Risk 2020-06-04 15:21:00 +02:00
Samuele Locatelli 3120746f60 Draft DTO a classess for warmers & modules 2020-06-01 19:03:32 +02:00
Samuele Locatelli 642026eadc update x nuovi metodi CORE library 2020-06-01 18:23:37 +02:00
Samuele Locatelli e3fb330264 Preliminary models added to test 2020-05-29 19:17:59 +02:00
35 changed files with 3306 additions and 124 deletions
File diff suppressed because one or more lines are too long
@@ -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, double> ChannelSetpoints;
}
}
@@ -0,0 +1 @@

+12 -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,15 @@ 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 LiveData RecipeLiveData;
}
}
+348 -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,143 @@ 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)
})
.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 currRow = 0;
RiskChannelConfig = new List<RiskChannelModel>();
RiskResistConfig = new List<RiskResistModel>();
// ciclo x calcolare i canali
foreach (var riflettore in Riflettori)
{
// ciclo sulle resistente
foreach (var resistenza in riflettore.Resistenze)
{
// cerco se ho già il canale
var found = RiskChannelConfig.Find(item => item.IdChannel == resistenza.Canale);
if (found == 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
});
}
}
}
}
// 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 +767,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 +791,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>
+84
View File
@@ -694,6 +694,90 @@ public static class ThreadsFunctions
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()
{
NcAdapter ncAdapter = new NcAdapter();
+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,40 @@
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 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 MinCurrent;
}
}
+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
}
@@ -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 SetpointRecipe { 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 (SetpointRecipe != item.SetpointRecipe)
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" />
+258 -27
View File
@@ -1063,6 +1063,20 @@ namespace Thermo.Active.NC
return cmsError;
}
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>
@@ -1079,18 +1093,20 @@ namespace Thermo.Active.NC
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
Dictionary<int, DataStructures.RecipeParam> currPlcRecipe = new Dictionary<int, DataStructures.RecipeParam>();
Dictionary<int, ThermoModels.RecipeParam> currPlcRecipe = new Dictionary<int, ThermoModels.RecipeParam>();
CmsError cmsError = NO_ERROR;
if (useLastRead)
{
cmsError = numericalControl.PLC_RRecipeLastParamList(ref currPlcRecipe);
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()
@@ -1110,7 +1126,7 @@ namespace Thermo.Active.NC
if (currPlcRecipe.ContainsKey(item.Id))
{
// recupero da mem PLC
DataStructures.RecipeParam paramPLC = currPlcRecipe[item.Id];
ThermoModels.RecipeParam paramPLC = currPlcRecipe[item.Id];
currRange = new RPRange()
{
Min = paramPLC.ValMin,
@@ -1168,21 +1184,21 @@ namespace Thermo.Active.NC
return NO_ERROR;
}
/// <summary>
/// SCrittura memoria (SOLO SetpointHMI invero)
/// Recipe Parameters write to PLC (only SetpointHMI)
/// </summary>
/// <param name="updtRecipe"></param>
/// <returns></returns>
public CmsError WriteRecipeData(Dictionary<string, DTORecipeParam> updtRecipe)
public CmsError WriteRecipeParametersToPLC(Dictionary<string, DTORecipeParam> updtRecipe)
{
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// ciclo x ogni valore della ricetta aggiornata ricevuto
DataStructures.RecipeParam currParam;
ThermoModels.RecipeParam currParam;
foreach (var item in updtRecipe)
{
// salvo SOLO il setpoint HMI...
currParam = new DataStructures.RecipeParam()
currParam = new ThermoModels.RecipeParam()
{
Id = (short)item.Value.Id,
SetpointHMI = item.Value.SetpointHMI
@@ -1201,6 +1217,109 @@ namespace Thermo.Active.NC
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,
SetpointRecipe = 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>
/// Recipe Parameters write to PLC (only SetpointHMI)
/// </summary>
/// <param name="updtRecipe"></param>
/// <returns></returns>
public CmsError WriteRecipeWarmersToPLC(Dictionary<string, DTORecipeParam> 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;
}
public CmsError ReadNcScada(ScadaSchemaModel scadaSchema, out DTOScadaModel scadaValue)
@@ -1575,7 +1694,6 @@ namespace Thermo.Active.NC
return cmsError;
}
/// <summary>
/// Scrive tutti i parametri della ricetta indicati
/// </summary>
@@ -1583,7 +1701,7 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError WriteRecipeParams(Dictionary<string, DTORecipeParam> updtRecipe)
{
CmsError cmsError = WriteRecipeData(updtRecipe);
CmsError cmsError = WriteRecipeParametersToPLC(updtRecipe);
return cmsError;
}
@@ -1598,15 +1716,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()
@@ -1622,40 +1736,157 @@ 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 config
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
foreach (var item in RiskChannelConfig)
{
currVal = new DTOWarmers()
{
IdChannel = item.IdChannel,
IdReflector = item.IdReflector,
SetpointRecipe = 80, // leggere da NUOVA area PLC?
SetpointTermocam = 0, // per ora a zero
SetpointPLC = 0, // leggere da PLC!
ChannelStatus = 0, // leggere da PLC
ActualCurrent = 0, // leggere da PLC
ActualPerc = 0, // leggere da PLC
MaxPower = item.MaxPower
};
currWarmers.Add(item.IdChannel, currVal);
}
}
// 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="updtRecipe">Oggetto parametri da aggiornare (from HMI)</param>
/// <returns></returns>
public CmsError WriteRecipeWarmers(Dictionary<string, DTORecipeParam> updtRecipe)
{
CmsError cmsError = WriteRecipeWarmersToPLC(updtRecipe);
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
{
@@ -54,8 +55,6 @@ namespace Thermo.Active.Controllers.WebApi
}
}
[Route("update"), HttpPut]
public IHttpActionResult WriteParameters(Dictionary<string, double> parametersList)
{
@@ -63,7 +62,10 @@ namespace Thermo.Active.Controllers.WebApi
{
// 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);
@@ -94,5 +96,319 @@ namespace Thermo.Active.Controllers.WebApi
}
}
/// <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, double>();
foreach (var item in currWarmers)
{
currChSet.Add(item.Key, item.Value.SetpointRecipe);
}
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);
// FIXME TODO warmers to be completed!!!
#if false
// reading warmers data...
cmsError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> prevWarmers);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
// save warmers to PLC
foreach (var item in RecipeLiveData.ChannelSetpoints)
{
//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();
//}
}
// write to PLC
ncAdapter.WriteRecipeWarmers(updtRecipe);
#endif
}
return checkError;
}
}
}
@@ -0,0 +1,157 @@
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/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, double> channelsList)
{
// scrive su CHp da ricetta oppure da override x parametri utente...
using (NcAdapter ncAdapter = new NcAdapter())
{
#if false
// 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);
#endif
// ritorno solo fatto!
return Ok();
}
}
/// <summary>
/// Confirm recipe modification (parameters: HMI --> PLC)
/// </summary>
/// <returns></returns>
[Route("confirm"), HttpPut]
public IHttpActionResult ConfirmEdit()
{
using (NcAdapter ncAdapter = new NcAdapter())
{
#if false
// 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);
#endif
// 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())
{
#if false
// 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);
#endif
// ritorno solo fatto!
return Ok();
}
}
}
}
+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.5.4")]
+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" />