Merge remote-tracking branch 'CMS/develop' into develop

This commit is contained in:
=
2020-07-15 09:35:03 +02:00
14 changed files with 560 additions and 473 deletions
+357 -356
View File
@@ -1,367 +1,368 @@
<?xml version="1.0" encoding="utf-8" ?>
<userSoftKeys>
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>1</plcId>
<localizedNames>
<lang langKey="en">Reset</lang>
<lang langKey="it">Reset</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>2</plcId>
<localizedNames>
<lang langKey="en">Refresh alarms</lang>
<lang langKey="it">Refresh allarmi</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>3</plcId>
<localizedNames>
<lang langKey="en">Termoregulator</lang>
<lang langKey="it">Termoregolatori</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>4</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>4</plcId>
<localizedNames>
<lang langKey="en">Front gate</lang>
<lang langKey="it">Portellone frontale</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_toggle>
<active>false</active>
<category>5</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>5</plcId>
<localizedNames>
<lang langKey="en">Pause cycle</lang>
<lang langKey="it">Pausa ciclo</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>1</plcId>
<localizedNames>
<lang langKey="en">Reset</lang>
<lang langKey="it">Reset</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>2</plcId>
<localizedNames>
<lang langKey="en">Refresh alarms</lang>
<lang langKey="it">Refresh allarmi</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>3</plcId>
<localizedNames>
<lang langKey="en">Termoregulator</lang>
<lang langKey="it">Termoregolatori</lang>
</localizedNames>
<visible>true</visible>
<starred>true</starred>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>4</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>4</plcId>
<localizedNames>
<lang langKey="en">Front gate</lang>
<lang langKey="it">Portellone frontale</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_toggle>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>7</plcId>
<localizedNames>
<lang langKey="en">Heaters</lang>
<lang langKey="it">Riflettori</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_toggle>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>9</plcId>
<localizedNames>
<lang langKey="en">Vacuum pumps</lang>
<lang langKey="it">Pompe vuoto</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>12</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 1</lang>
<lang langKey="it">Reset contaore pompa 1</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<active>false</active>
<category>5</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>5</plcId>
<localizedNames>
<lang langKey="en">Pause cycle</lang>
<lang langKey="it">Pausa ciclo</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>13</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 2</lang>
<lang langKey="it">Reset contaore pompa 2</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_toggle>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>7</plcId>
<localizedNames>
<lang langKey="en">Heaters</lang>
<lang langKey="it">Riflettori</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_toggle>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>14</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 3</lang>
<lang langKey="it">Reset contaore pompa 3</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_toggle>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>15</plcId>
<localizedNames>
<lang langKey="en">Extra 10s upper heater</lang>
<lang langKey="it">Extra 10s riscaldo superiore</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_toggle>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>16</plcId>
<localizedNames>
<lang langKey="en">Extra 10s lower heater</lang>
<lang langKey="it">Extra 10s riscaldo inferiore</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>4</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>17</plcId>
<localizedNames>
<lang langKey="en">Open/Close pliers</lang>
<lang langKey="it">Apertura/chiusura pinze</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>4</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>18</plcId>
<localizedNames>
<lang langKey="en">Loader forward</lang>
<lang langKey="it">Carrello avanti</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_toggle>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>9</plcId>
<localizedNames>
<lang langKey="en">Vacuum pumps</lang>
<lang langKey="it">Pompe vuoto</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>19</plcId>
<localizedNames>
<lang langKey="en">Loader backward</lang>
<lang langKey="it">Carrello indietro</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>20</plcId>
<localizedNames>
<lang langKey="en">Suckers up</lang>
<lang langKey="it">Ventose su</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>21</plcId>
<localizedNames>
<lang langKey="en">Suckers down</lang>
<lang langKey="it">Ventose giu</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>22</plcId>
<localizedNames>
<lang langKey="en">Suckers setup</lang>
<lang langKey="it">Ventose setup</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>23</plcId>
<localizedNames>
<lang langKey="en">Suckers park</lang>
<lang langKey="it">Ventose parcheggio</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>24</plcId>
<localizedNames>
<lang langKey="en">Ejection</lang>
<lang langKey="it">Espulsione</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>25</plcId>
<localizedNames>
<lang langKey="en">Suckers lock/unlock</lang>
<lang langKey="it">Blocco/sblocco telaio ventose</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>26</plcId>
<localizedNames>
<lang langKey="en">Suckers vacuum</lang>
<lang langKey="it">Vuoto ventose</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>27</plcId>
<localizedNames>
<lang langKey="en">Suckers air</lang>
<lang langKey="it">Aria ventose</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>28</plcId>
<localizedNames>
<lang langKey="en">Mould unload</lang>
<lang langKey="it">Scarico stampo</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>29</plcId>
<localizedNames>
<lang langKey="en">Upperplate lock/unlock</lang>
<lang langKey="it">Blocco/sblocco controstampo</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>30</plcId>
<localizedNames>
<lang langKey="en">Frame X</lang>
<lang langKey="it">Apertura cornice</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>31</plcId>
<localizedNames>
<lang langKey="en">Frame Y</lang>
<lang langKey="it">Profondità cornice</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>32</plcId>
<localizedNames>
<lang langKey="en">Windowplate X</lang>
<lang langKey="it">Larghezza piastrafinestra</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>33</plcId>
<localizedNames>
<lang langKey="en">Windowplate Y</lang>
<lang langKey="it">Profondità piastrafinestra</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>34</plcId>
<localizedNames>
<lang langKey="en">Preheating cycles</lang>
<lang langKey="it">Cicli di preriscaldo</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>12</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 1</lang>
<lang langKey="it">Reset contaore pompa 1</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<!--
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>13</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 2</lang>
<lang langKey="it">Reset contaore pompa 2</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_toggle>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>14</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 3</lang>
<lang langKey="it">Reset contaore pompa 3</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_toggle>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>15</plcId>
<localizedNames>
<lang langKey="en">Extra 10s upper heater</lang>
<lang langKey="it">Extra 10s riscaldo superiore</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_toggle>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>16</plcId>
<localizedNames>
<lang langKey="en">Extra 10s lower heater</lang>
<lang langKey="it">Extra 10s riscaldo inferiore</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>4</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>17</plcId>
<localizedNames>
<lang langKey="en">Open/Close pliers</lang>
<lang langKey="it">Apertura/chiusura pinze</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>4</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>18</plcId>
<localizedNames>
<lang langKey="en">Loader forward</lang>
<lang langKey="it">Carrello avanti</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>19</plcId>
<localizedNames>
<lang langKey="en">Loader backward</lang>
<lang langKey="it">Carrello indietro</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>20</plcId>
<localizedNames>
<lang langKey="en">Suckers up</lang>
<lang langKey="it">Ventose su</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>21</plcId>
<localizedNames>
<lang langKey="en">Suckers down</lang>
<lang langKey="it">Ventose giu</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>22</plcId>
<localizedNames>
<lang langKey="en">Suckers setup</lang>
<lang langKey="it">Ventose setup</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>23</plcId>
<localizedNames>
<lang langKey="en">Suckers park</lang>
<lang langKey="it">Ventose parcheggio</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>24</plcId>
<localizedNames>
<lang langKey="en">Ejection</lang>
<lang langKey="it">Espulsione</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>25</plcId>
<localizedNames>
<lang langKey="en">Suckers lock/unlock</lang>
<lang langKey="it">Blocco/sblocco telaio ventose</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>26</plcId>
<localizedNames>
<lang langKey="en">Suckers vacuum</lang>
<lang langKey="it">Vuoto ventose</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>27</plcId>
<localizedNames>
<lang langKey="en">Suckers air</lang>
<lang langKey="it">Aria ventose</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>28</plcId>
<localizedNames>
<lang langKey="en">Mould unload</lang>
<lang langKey="it">Scarico stampo</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>29</plcId>
<localizedNames>
<lang langKey="en">Upperplate lock/unlock</lang>
<lang langKey="it">Blocco/sblocco controstampo</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>30</plcId>
<localizedNames>
<lang langKey="en">Frame X</lang>
<lang langKey="it">Apertura cornice</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>31</plcId>
<localizedNames>
<lang langKey="en">Frame Y</lang>
<lang langKey="it">Profondità cornice</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>32</plcId>
<localizedNames>
<lang langKey="en">Windowplate X</lang>
<lang langKey="it">Larghezza piastrafinestra</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>33</plcId>
<localizedNames>
<lang langKey="en">Windowplate Y</lang>
<lang langKey="it">Profondità piastrafinestra</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>34</plcId>
<localizedNames>
<lang langKey="en">Preheating cycles</lang>
<lang langKey="it">Cicli di preriscaldo</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<!--
<softKey_group>
<active>true</active>
<category>3</category>
@@ -378,5 +379,5 @@
</softKey_group>
-->
</userSoftKeys>
@@ -1,99 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="userSoftKeys">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="softKey_group" type="groupType" minOccurs="0" maxOccurs="unbounded"></xs:element>
<xs:element name="softKey_toggle" type="softKeyType" minOccurs="0" maxOccurs="unbounded"></xs:element>
<xs:element name="softKey_procedure" type="procedureType" minOccurs="0" maxOccurs="unbounded"></xs:element>
</xs:choice>
<xs:element name="userSoftKeys">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="softKey_group" type="groupType" minOccurs="0" maxOccurs="unbounded"></xs:element>
<xs:element name="softKey_toggle" type="softKeyType" minOccurs="0" maxOccurs="unbounded"></xs:element>
<xs:element name="softKey_procedure" type="procedureType" minOccurs="0" maxOccurs="unbounded"></xs:element>
</xs:choice>
</xs:complexType>
<!-- Unique id constraint -->
<xs:unique name="uniqueId">
<xs:selector xpath=".//root" />
<xs:field xpath="@plcId" />
</xs:unique>
</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>
<!-- Unique id constraint -->
<xs:unique name="uniqueId">
<xs:selector xpath=".//root" />
<xs:field xpath="@plcId" />
</xs:unique>
</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>
<!-- Group of softkey type-->
<xs:complexType name="groupType">
<xs:all>
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
<xs:complexType>
<xs:sequence>
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
<!-- Group of softkey type-->
<xs:complexType name="groupType">
<xs:all>
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
<xs:complexType>
<xs:sequence>
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="subKeys">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="6">
<xs:element name="subKey">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="plcId" use="required" type="xs:integer" />
<xs:attribute name="active" use="required" type="xs:boolean"></xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="subKeys">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="6">
<xs:element name="subKey">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="plcId" use="required" type="xs:integer" />
<xs:attribute name="active" use="required" type="xs:boolean"></xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
<!-- Single soft key-->
<xs:complexType name="softKeyType">
<xs:all>
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
<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="plcId"></xs:element>
</xs:all>
</xs:complexType>
</xs:all>
</xs:complexType>
<!-- Procedure type -->
<xs:complexType name="procedureType">
<xs:all>
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
<xs:complexType>
<xs:sequence>
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
<!-- Single soft key-->
<xs:complexType name="softKeyType">
<xs:all>
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
<xs:complexType>
<xs:sequence>
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="plcId"></xs:element>
</xs:all>
</xs:complexType>
<xs:element name="plcId"></xs:element>
</xs:all>
</xs:complexType>
<!-- Procedure type -->
<xs:complexType name="procedureType">
<xs:all>
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="starred" type="xs:boolean" minOccurs="0"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
<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="plcId"></xs:element>
</xs:all>
</xs:complexType>
</xs:schema>
@@ -517,6 +517,7 @@ namespace Thermo.Active.Config
PlcId = Convert.ToInt32(x.Element("plcId")?.Value), // If exists
IsActive = Convert.ToBoolean(x.Element("active").Value),
IsVisible = Convert.ToBoolean(x.Element("visible").Value),
IsStarred = x.Element("starred") != null ? Convert.ToBoolean(x.Element("starred").Value) : false,
Category = Convert.ToInt32(x.Element("category").Value),
LocalizedNames = x.Element("localizedNames").Elements().ToDictionary( // Read localized names and convert into a dictionary
y => y.Attribute("langKey").Value, y => y.Value
-19
View File
@@ -210,7 +210,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadAlarms()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -254,7 +253,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadPowerOnData()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -296,7 +294,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadProcessesPPStatus()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -350,7 +347,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadEnabledFunctionality()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -394,7 +390,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadExpiredMaintenances()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -450,7 +445,6 @@ public static class ThreadsFunctions
}
}
public static void ReadUserSoftKeysData()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -494,7 +488,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadAxesNamesData()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -538,7 +531,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadAxesPositionsData()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -582,7 +574,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadScadaData()
{
NcAdapter ncAdapter = new NcAdapter();
@@ -1256,7 +1247,6 @@ public static class ThreadsFunctions
reconnectionIsRunning = false;
}
}
public static void RestoreConnection()
{
if (reconnectionIsRunning == false)
@@ -1271,13 +1261,11 @@ public static class ThreadsFunctions
ConnThread.Start();
}
}
public static void AbortNcConnection()
{
if (ConnThread != null && ConnThread.IsAlive)
ConnThread.Abort();
}
public static void ManageLibraryError(CmsError libraryError)
{
switch (libraryError.errorCode)
@@ -1309,7 +1297,6 @@ public static class ThreadsFunctions
break;
}
}
internal static void UpdateStat(string functionName, long timer)
{
if (!Timers.ContainsKey(functionName))
@@ -1323,7 +1310,6 @@ public static class ThreadsFunctions
else
Counter[functionName]++;
}
internal static void StatThread()
{
while (true)
@@ -1343,7 +1329,6 @@ public static class ThreadsFunctions
Thread.Sleep(2000);
}
}
private static void StatReset()
{
foreach (var value in Counter)
@@ -1352,7 +1337,6 @@ public static class ThreadsFunctions
Counter[value.Key] = 0;
}
}
private static int CalcSleepTime(int maxSleep, int execTime)
{
int sleep = 0;
@@ -1378,7 +1362,6 @@ public static class ThreadsFunctions
ThreadsHandler.StartClient.Start();
}
}
private static void clientProcess()
{
string CMSClientPath = "";
@@ -1399,7 +1382,6 @@ public static class ThreadsFunctions
}
}
}
private static bool ClientIsRunning()
{
Process[] p = Process.GetProcessesByName(CLIENT_EXE_NAME_NOEXT);
@@ -1414,7 +1396,6 @@ public static class ThreadsFunctions
}
return false;
}
private static Dictionary<string, string> GetPlcAlarmsTranslations(string language)
{
using (NcAdapter ncAdapter = new NcAdapter())
@@ -53,7 +53,8 @@ namespace Thermo.Active.Database.Migrations
new FunctionAccessModel() { Name = "scadaArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 },
new FunctionAccessModel() { Name = "usersArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 30, ReadLevelMin = 1, PlcId = 0 },
new FunctionAccessModel() { Name = "jobeditorArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 20, ReadLevelMin = 1, PlcId = 0 },
new FunctionAccessModel() { Name = "utilitiesArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 }
new FunctionAccessModel() { Name = "utilitiesArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 },
new FunctionAccessModel() { Name = RECIPE_MANAGER, Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 }
);
context.SaveChanges();
@@ -10,6 +10,7 @@ namespace Thermo.Active.Model.ConfigModels
public int Category { get; set; }
public bool IsActive { get; set; }
public bool IsVisible { get; set; }
public bool IsStarred { get; set; } = false;
public bool OperatorConfirmationNeeded { get; set; }
public List<SubKeysModel> SubKeys { get; set; }
public int PlcId { get; set; }
+1
View File
@@ -347,6 +347,7 @@ namespace Thermo.Active.Model
public const string AXES_SELECTION = "axesSoftkeys";
public const string THERMO_MANAGER = "thermoManager";
public const string RISC_MANAGER = "riscManager";
public const string RECIPE_MANAGER = "thermoRecipeManager";
}
public static class API_ERROR_KEYS
@@ -18,6 +18,7 @@ namespace Thermo.Active.Model.DTOModels
public int Category { get; set; }
public bool Active { get; set; }
public bool Visible { get; set; }
public bool Starred { get; set; } = false;
public bool Value { get; set; }
public override bool Equals(object obj)
+33
View File
@@ -1009,6 +1009,7 @@ namespace Thermo.Active.NC
{
Id = subkey.Id,
Active = plcSoftKey.Active,
Starred = softKey.IsStarred,
Category = softKey.Category,
Value = plcSoftKey.Value
});
@@ -1029,6 +1030,38 @@ namespace Thermo.Active.NC
{
Id = softKey.Id,
Active = plcSoftKey.Active,
Starred = softKey.IsStarred,
Category = softKey.Category,
Visible = softKey.IsVisible,
Value = plcSoftKey.Value
});
}
}
return libraryError;
}
public CmsError GetStarredUserSoftKeys(out List<DTOUserSoftKeyModel> softKeys)
{
softKeys = new List<DTOUserSoftKeyModel>();
List<SoftKeysModel> plcSoftKeys = new List<SoftKeysModel>();
// Get softkeys data from PLC
CmsError libraryError = numericalControl.PLC_RUserSoftKeys(ref plcSoftKeys);
if (libraryError.IsError() || plcSoftKeys.Count == 0)
return libraryError;
foreach (var softKey in SoftKeysConfig)
{
// Find the plc matching data
var plcSoftKey = plcSoftKeys.Find(x => x.Id == softKey.PlcId);
if (softKey.IsStarred)
{
softKeys.Add(new DTOUserSoftKeyModel()
{
Id = softKey.Id,
Active = plcSoftKey.Active,
Starred = softKey.IsStarred,
Category = softKey.Category,
Visible = softKey.IsVisible,
Value = plcSoftKey.Value
@@ -50,5 +50,6 @@ namespace Thermo.Active.Controllers.WebApi
return Ok(favorite);
}
}
}
}
@@ -314,24 +314,21 @@ namespace Thermo.Active.Controllers.WebApi
/// </summary>
/// <returns></returns>
[Route("save"), HttpPut]
//[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.USER_FUNCTIONS, Action = ACTIONS.READ)]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
public IHttpActionResult Save()
{
#if false
// recupero dati utente loggato
var identity = User.Identity as ClaimsIdentity;
// Find user id from the bearer token
var userId = identity.Claims.FirstOrDefault(c => c.Type == USER_ID_KEY);
if (userId == null)
return Unauthorized();
// salvo utente!
using (UsersController usersController = new UsersController())
{
var userData = usersController.GetUserInfo(Convert.ToInt32(userId.Value));
NcFileAdapter.RecipeLiveData.UserSave = userData.Id.ToString();
}
#endif
// recupero i dati LIVE dei parametri HMI della ricetta...
CmsError libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
@@ -355,8 +352,22 @@ namespace Thermo.Active.Controllers.WebApi
/// </summary>
/// <returns></returns>
[Route("saveAs"), HttpPut]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
public IHttpActionResult SaveAs(string newName)
{
// recupero dati utente loggato
var identity = User.Identity as ClaimsIdentity;
// Find user id from the bearer token
var userId = identity.Claims.FirstOrDefault(c => c.Type == USER_ID_KEY);
if (userId == null)
return Unauthorized();
// salvo utente!
using (UsersController usersController = new UsersController())
{
var userData = usersController.GetUserInfo(Convert.ToInt32(userId.Value));
NcFileAdapter.RecipeLiveData.UserSave = userData.Id.ToString();
}
// recupero i dati LIVE dei parametri HMI della ricetta...
CmsError libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
if (libraryError.IsError())
@@ -458,8 +469,22 @@ namespace Thermo.Active.Controllers.WebApi
[Route("saveAll"), HttpPost]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
public async Task<IHttpActionResult> SaveAll(string newName, double estimTimeSec)
{
// recupero dati utente loggato
var identity = User.Identity as ClaimsIdentity;
// Find user id from the bearer token
var userId = identity.Claims.FirstOrDefault(c => c.Type == USER_ID_KEY);
if (userId == null)
return Unauthorized();
// salvo utente!
using (UsersController usersController = new UsersController())
{
var userData = usersController.GetUserInfo(Convert.ToInt32(userId.Value));
NcFileAdapter.RecipeLiveData.UserSave = userData.Id.ToString();
}
bool imageUploaded = false;
if (!Request.Content.IsMimeMultipartContent())
@@ -510,7 +535,6 @@ namespace Thermo.Active.Controllers.WebApi
return Ok();
}
/// <summary>
/// Do actual recipe parameters FileSave
/// </summary>
@@ -0,0 +1,39 @@
using CMS_CORE_Library.Models;
using System.Collections.Generic;
using System.Web.Http;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.NC;
using Thermo.Active.Utils;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/starred_softkey")]
public class StarredUserSoftKeyController : ApiController
{
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
[Route("get"), HttpGet]
public IHttpActionResult GetStarredUserSoftkey()
{
// // Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"ncAdapter Not connected! | GetOverview | {libraryError.exception}");
}
libraryError = ncAdapter.GetStarredUserSoftKeys(out List <DTOUserSoftKeyModel> softKeys);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"GetStarredUserSoftkey error | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
return Ok(softKeys);
}
}
}
+1 -1
View File
@@ -30,4 +30,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.9.38")]
[assembly: AssemblyVersion("0.9.39")]
+1
View File
@@ -224,6 +224,7 @@
<Compile Include="Controllers\WebApi\ApiAlarmController.cs" />
<Compile Include="Controllers\WebApi\ModulesController.cs" />
<Compile Include="Controllers\WebApi\ProdController.cs" />
<Compile Include="Controllers\WebApi\StarredUserSoftKeyController.cs" />
<Compile Include="Controllers\WebApi\WarmersController.cs" />
<Compile Include="Controllers\WebApi\RecipeController.cs" />
<Compile Include="Controllers\WebApi\AuthorizationController.cs" />