Modifiche x gestione allarmi con flag SOLO al cambio fronte + intercept valori da simulatore
Fix errore getBit (sostituito con HasFlag)
This commit is contained in:
@@ -150,6 +150,8 @@
|
||||
<DataItems>
|
||||
<DataItem category="EVENT" id="Path_01_Type" type="MESSAGE"/>
|
||||
<DataItem category="EVENT" id="Path_01_ActiveAxes" type="ACTIVE_AXES"/>
|
||||
<DataItem category="EVENT" id="Path_01_CodG_Act" type="MESSAGE"/>
|
||||
<DataItem category="EVENT" id="Path_01_SubMode" type="MESSAGE"/>
|
||||
<DataItem category="EVENT" id="Path_01_PartId" type="PART_ID"/>
|
||||
<DataItem category="EVENT" id="Path_01_PZ_TOT" type="PART_COUNT"/>
|
||||
<DataItem category="EVENT" id="Path_01_Cod_M" type="MESSAGE"/>
|
||||
|
||||
Binary file not shown.
@@ -233,6 +233,14 @@
|
||||
<Key>Path_01_ActiveAxes</Key>
|
||||
<Value>STROBE#R10520.3</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_CodG_Act</Key>
|
||||
<Value>STROBE#R10520.3</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_SubMode</Key>
|
||||
<Value>STROBE#R10520.3</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</Path>
|
||||
|
||||
@@ -1,632 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<AdapterConf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<Version>1</Version>
|
||||
<NomeAdapt>CMS_ADAPTER_00</NomeAdapt>
|
||||
<TipoAdapt>FANUC</TipoAdapt>
|
||||
<VacuumPump>
|
||||
<element>
|
||||
<ident>VacPump_01</ident>
|
||||
<alias>Pompa 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>VacPump_01_Status</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>VacPump_02</ident>
|
||||
<alias>Pompa 2</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>VacPump_02_Status</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</VacuumPump>
|
||||
<VacuumAct>
|
||||
<element>
|
||||
<ident>VacAct_01</ident>
|
||||
<alias>Attuatore vuoto 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>VacAct_01_Count</Key>
|
||||
<Value>0#15</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>VacAct_02</ident>
|
||||
<alias>Attuatore vuoto 2</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>VacAct_02_Count</Key>
|
||||
<Value>0#15</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</VacuumAct>
|
||||
<Lubro>
|
||||
<element>
|
||||
<ident>Lubro_01</ident>
|
||||
<alias>Lubrorefrigerante 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Lubro_01_Num</Key>
|
||||
<Value>0#15</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Lubro_02</ident>
|
||||
<alias>Lubrorefrigerante 2</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Lubro_02_Num</Key>
|
||||
<Value>0#15</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</Lubro>
|
||||
<Cooler>
|
||||
<element>
|
||||
<ident>Cooler_01</ident>
|
||||
<alias>Cooler 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Cooler_01_Status</Key>
|
||||
<Value>0#3</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Cooler_02</ident>
|
||||
<alias>Cooler 2</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Cooler_02_Status</Key>
|
||||
<Value>0#3</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</Cooler>
|
||||
<Press>
|
||||
<element>
|
||||
<ident>Press_01</ident>
|
||||
<alias>Pressostato 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Press_01_Value</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Press_02</ident>
|
||||
<alias>Pressostato 2</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Press_02_Value</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</Press>
|
||||
<Temp>
|
||||
<element>
|
||||
<ident>Temp_01</ident>
|
||||
<alias>Sonda Temperatura 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Temp_01_Value</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Temp_02</ident>
|
||||
<alias>Sonda Temperatura 2</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Temp_02_Value</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</Temp>
|
||||
<Path>
|
||||
<element>
|
||||
<ident>Path_01</ident>
|
||||
<alias>Path num 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Path_01_FeedRate</Key>
|
||||
<Value>INT#D8888.0</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_FeedOverr</Key>
|
||||
<Value>INT#D8888.0</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_RapidOverr</Key>
|
||||
<Value>INT#D8888.0</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_PosActX</Key>
|
||||
<Value>FLOAT#D7777.0</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_PosActY</Key>
|
||||
<Value>FLOAT#D7777.1</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_PosActZ</Key>
|
||||
<Value>FLOAT#D7777.2</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_PosActI</Key>
|
||||
<Value>FLOAT#D7777.3</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_PosActJ</Key>
|
||||
<Value>FLOAT#D7777.4</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_PosActK</Key>
|
||||
<Value>FLOAT#D7777.5</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_Type</Key>
|
||||
<Value>FLAG#R10528.12</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_PartId</Key>
|
||||
<Value>INT#D9999</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_PZ_TOT</Key>
|
||||
<Value>INT#D9999</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_Cod_M</Key>
|
||||
<Value>STROBE#R10520.0</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_Cod_S</Key>
|
||||
<Value>STROBE#R10520.1</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_Cod_T</Key>
|
||||
<Value>STROBE#R10520.2</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_RUN_MODE</Key>
|
||||
<Value>FLAG#R10528.1:R10528.7</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_EXE_MODE</Key>
|
||||
<Value>FLAG#R10528.8:R10528.11</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_CurrProg</Key>
|
||||
<Value>STRING#D0000</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_CurrProg_RowNum</Key>
|
||||
<Value>INT#D0001.0</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Path_01_ActiveAxes</Key>
|
||||
<Value>STROBE#R10520.3</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</Path>
|
||||
<UnOp>
|
||||
<element>
|
||||
<ident>UnOp_01</ident>
|
||||
<alias>Unita Op num 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>UnOp_01_ToolId</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>UnOp_01_NumCU</Key>
|
||||
<Value>8#15</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>UnOp_01_Status</Key>
|
||||
<Value>16#23</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>UnOp_01_VitaRes</Key>
|
||||
<Value>24#31</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>UnOp_01_Speed</Key>
|
||||
<Value>32#39</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>UnOp_01_Load</Key>
|
||||
<Value>40#47</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>UnOp_01_AccTime</Key>
|
||||
<Value>48#55</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</UnOp>
|
||||
<Axis>
|
||||
<element>
|
||||
<ident>Axis_01</ident>
|
||||
<alias>Asse num 1</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Axis_01_MainProc</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_IsMast</Key>
|
||||
<Value>8#15</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_MastId</Key>
|
||||
<Value>16#23</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_Type</Key>
|
||||
<Value>24#31</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_Dir</Key>
|
||||
<Value>32#39</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_Load</Key>
|
||||
<Value>40#47</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_PosAct</Key>
|
||||
<Value>48#55</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_PosTgt</Key>
|
||||
<Value>56#63</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_FeedAct</Key>
|
||||
<Value>64#71</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_FeedOver</Key>
|
||||
<Value>72#79</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_AccelAct</Key>
|
||||
<Value>80#87</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_AccTime</Key>
|
||||
<Value>88#95</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_01_Battery</Key>
|
||||
<Value>96#103</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Axis_02</ident>
|
||||
<alias>Asse num 2</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Axis_02_MainProc</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_IsMast</Key>
|
||||
<Value>8#15</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_MastId</Key>
|
||||
<Value>16#23</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_Type</Key>
|
||||
<Value>24#31</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_Dir</Key>
|
||||
<Value>32#39</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_Load</Key>
|
||||
<Value>40#47</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_PosAct</Key>
|
||||
<Value>48#55</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_PosTgt</Key>
|
||||
<Value>56#63</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_FeedAct</Key>
|
||||
<Value>64#71</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_FeedOver</Key>
|
||||
<Value>72#79</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_AccelAct</Key>
|
||||
<Value>80#87</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_AccTime</Key>
|
||||
<Value>88#95</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_02_Battery</Key>
|
||||
<Value>96#103</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Axis_03</ident>
|
||||
<alias>Asse num 3</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Axis_03_MainProc</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_IsMast</Key>
|
||||
<Value>8#15</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_MastId</Key>
|
||||
<Value>16#23</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_Type</Key>
|
||||
<Value>24#31</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_Dir</Key>
|
||||
<Value>32#39</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_Load</Key>
|
||||
<Value>40#47</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_PosAct</Key>
|
||||
<Value>48#55</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_PosTgt</Key>
|
||||
<Value>56#63</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_FeedAct</Key>
|
||||
<Value>64#71</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_FeedOver</Key>
|
||||
<Value>72#79</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_AccelAct</Key>
|
||||
<Value>80#87</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_AccTime</Key>
|
||||
<Value>88#95</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_03_Battery</Key>
|
||||
<Value>96#103</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Axis_04</ident>
|
||||
<alias>Asse num 4</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Axis_04_MainProc</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_IsMast</Key>
|
||||
<Value>8#15</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_MastId</Key>
|
||||
<Value>16#23</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_Type</Key>
|
||||
<Value>24#31</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_Dir</Key>
|
||||
<Value>32#39</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_Load</Key>
|
||||
<Value>40#47</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_PosAct</Key>
|
||||
<Value>48#55</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_PosTgt</Key>
|
||||
<Value>56#63</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_FeedAct</Key>
|
||||
<Value>64#71</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_FeedOver</Key>
|
||||
<Value>72#79</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_AccelAct</Key>
|
||||
<Value>80#87</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_AccTime</Key>
|
||||
<Value>88#95</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_04_Battery</Key>
|
||||
<Value>96#103</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Axis_05</ident>
|
||||
<alias>Asse num 5</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Axis_05_MainProc</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_IsMast</Key>
|
||||
<Value>8#15</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_MastId</Key>
|
||||
<Value>16#23</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_Type</Key>
|
||||
<Value>24#31</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_Dir</Key>
|
||||
<Value>32#39</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_Load</Key>
|
||||
<Value>40#47</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_PosAct</Key>
|
||||
<Value>48#55</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_PosTgt</Key>
|
||||
<Value>56#63</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_FeedAct</Key>
|
||||
<Value>64#71</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_FeedOver</Key>
|
||||
<Value>72#79</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_AccelAct</Key>
|
||||
<Value>80#87</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_AccTime</Key>
|
||||
<Value>88#95</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_05_Battery</Key>
|
||||
<Value>96#103</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
<element>
|
||||
<ident>Axis_06</ident>
|
||||
<alias>Asse num 6</alias>
|
||||
<fonte>Random</fonte>
|
||||
<dataRefList>
|
||||
<dataRef>
|
||||
<Key>Axis_06_MainProc</Key>
|
||||
<Value>0#7</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_IsMast</Key>
|
||||
<Value>8#15</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_MastId</Key>
|
||||
<Value>16#23</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_Type</Key>
|
||||
<Value>24#31</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_Dir</Key>
|
||||
<Value>32#39</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_Load</Key>
|
||||
<Value>40#47</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_PosAct</Key>
|
||||
<Value>48#55</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_PosTgt</Key>
|
||||
<Value>56#63</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_FeedAct</Key>
|
||||
<Value>64#71</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_FeedOver</Key>
|
||||
<Value>72#79</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_AccelAct</Key>
|
||||
<Value>80#87</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_AccTime</Key>
|
||||
<Value>88#95</Value>
|
||||
</dataRef>
|
||||
<dataRef>
|
||||
<Key>Axis_06_Battery</Key>
|
||||
<Value>96#103</Value>
|
||||
</dataRef>
|
||||
</dataRefList>
|
||||
</element>
|
||||
</Axis>
|
||||
</AdapterConf>
|
||||
@@ -11,12 +11,6 @@ namespace MTC_Sim
|
||||
{
|
||||
protected FANUC FANUC_ref;
|
||||
|
||||
#if false
|
||||
protected StatusBitMap CurrStatus;
|
||||
protected StFlag8 Status8;
|
||||
protected StFlag32 Status32;
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// estende l'init della classe base...
|
||||
/// </summary>
|
||||
@@ -83,7 +77,8 @@ namespace MTC_Sim
|
||||
// 2016.05.09 ci sono solo 4 bit x ora da controllare...
|
||||
// check COD_M
|
||||
bitNum = 0;
|
||||
if (STRB_DW1.getBit<StFlag32>(bitNum))
|
||||
//if (STRB_DW1.getBit<StFlag32>(bitNum))
|
||||
if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum)))
|
||||
{
|
||||
memIndex = 10660;
|
||||
// recupero tutti i 16+16 bit del blocco
|
||||
@@ -103,7 +98,8 @@ namespace MTC_Sim
|
||||
|
||||
// check COD_S
|
||||
bitNum = 1;
|
||||
if (STRB_DW1.getBit<StFlag32>(1))
|
||||
//if (STRB_DW1.getBit<StFlag32>(bitNum))
|
||||
if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum)))
|
||||
{
|
||||
memIndex = 10682;
|
||||
// recupero tutti i 16+16 bit del blocco
|
||||
@@ -123,7 +119,8 @@ namespace MTC_Sim
|
||||
|
||||
// check COD_T
|
||||
bitNum = 2;
|
||||
if (STRB_DW1.getBit<StFlag32>(2))
|
||||
//if (STRB_DW1.getBit<StFlag32>(bitNum))
|
||||
if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum)))
|
||||
{
|
||||
memIndex = 10694;
|
||||
// recupero tutti i 16+16 bit del blocco
|
||||
@@ -143,7 +140,8 @@ namespace MTC_Sim
|
||||
|
||||
// check assi assegnati al path 01...
|
||||
bitNum = 3;
|
||||
if (STRB_DW1.getBit<StFlag32>(3))
|
||||
//if (STRB_DW1.getBit<StFlag32>(bitNum))
|
||||
if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum)))
|
||||
{
|
||||
// mi basta un solo byte...
|
||||
MemBlock = new byte[1];
|
||||
@@ -156,7 +154,8 @@ namespace MTC_Sim
|
||||
// spazzo i bit, dove è 1 metto nella stringa degli assi attivi...
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
if (StrobeBlock.getBit<StFlag8>(i))
|
||||
//if (StrobeBlock.getBit<StFlag8>(i))
|
||||
if (StrobeBlock.HasFlag((StFlag8)Math.Pow(2, i)))
|
||||
{
|
||||
AssiAttivi += string.Format(" {0}", i);
|
||||
}
|
||||
@@ -183,6 +182,52 @@ namespace MTC_Sim
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// recupera allarmi ed agiorna strobe (privato) degli allarmi
|
||||
/// </summary>
|
||||
/// <param name="Alarm2Refresh">32bit mask degli allarmi da aggiornare</param>
|
||||
/// <param name="giveAck">boolean: se si debba tornare ACK</param>
|
||||
public override void refreshAlarmState(StFlag32 Alarm2Refresh, bool giveAck)
|
||||
{
|
||||
base.refreshAlarmState(Alarm2Refresh, giveAck);
|
||||
|
||||
// byte di acknowledge...
|
||||
byte[] retACK_DW0 = new byte[4];
|
||||
|
||||
if (Alarm2Refresh != StFlag32.NONE)
|
||||
{
|
||||
// blocco memoria x lettura dati
|
||||
byte[] MemBlock = new byte[4];
|
||||
// primo blocco memoria allarmi
|
||||
int memIndex = 10532;
|
||||
// verifico gli allarmi di tutti i bit alzati...
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
if (Alarm2Refresh.HasFlag((StFlag32)Math.Pow(2, i)))
|
||||
{
|
||||
// recupero tutti i 32 bit del blocco
|
||||
FANUC_ref.F_RW_Byte(R, FANUC.MemType.R, memIndex + i * 4, ref MemBlock);
|
||||
// aggiorno nel vettore allarmi i byte interessati
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
AlarmFlags[i * 4 + j] = MemBlock[j];
|
||||
}
|
||||
//AlarmFlags.SetValue(MemBlock, i * 4);
|
||||
|
||||
// segnalo allarme letto! memorizzo allarme nel vettore ack....
|
||||
retACK_DW0 = utils.setBitOnStFlag(retACK_DW0, 1, i);
|
||||
|
||||
}
|
||||
}
|
||||
if (giveAck)
|
||||
{
|
||||
// mi preparo a scrivere ACK
|
||||
memIndex = 10500;
|
||||
// scrivo update ad ack!!!
|
||||
FANUC_ref.F_RW_Byte(W, FANUC.MemType.R, memIndex, ref retACK_DW0);
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// processing strobe degli allarmi
|
||||
/// </summary>
|
||||
public override void processAlarm()
|
||||
@@ -191,72 +236,43 @@ namespace MTC_Sim
|
||||
// se non sono connesso esco
|
||||
if (!FANUC_ref.Connected) return;
|
||||
|
||||
// procedo!
|
||||
int memIndex = 0;
|
||||
// byte di acknowledge...
|
||||
byte[] retACK_DW0 = new byte[4];
|
||||
// controllo TUTTI i flag: se ce ne sono di alzati DEVO processare...
|
||||
if (STRB_DW0 != StFlag32.NONE)
|
||||
|
||||
// faccio refresh degli allarmi segnalati
|
||||
refreshAlarmState(STRB_DW0, true);
|
||||
|
||||
// variabili helper
|
||||
StFlag32 AlarmBlock = 0;
|
||||
allarme currAllarm;
|
||||
// controllo TUTTI i bit della variabile COMPLETA degli status allarmi: se ce ne sono di alzati DEVO processare...
|
||||
for (int i = 0; i < AlarmFlags.Length / 4; i++)
|
||||
{
|
||||
// blocco memoria x lettura dati
|
||||
byte[] MemBlock = new byte[4];
|
||||
StFlag32 AlarmBlock = 0;
|
||||
allarme currAllarm;
|
||||
// primo blocco memoria allarmi
|
||||
memIndex = 10532;
|
||||
// verifico gli allarmi di tutti i bit alzati...
|
||||
for (int i = 0; i < 32; i++)
|
||||
// leggo 32bit alla volta...
|
||||
AlarmBlock = (StFlag32)BitConverter.ToUInt32(AlarmFlags, i * 4);
|
||||
|
||||
for (int j = 0; j < 32; j++)
|
||||
{
|
||||
if (STRB_DW0.getBit<StFlag32>(i))
|
||||
// converto! e aggiungo allarmi sollevati al corretto controller allarmi...
|
||||
//if (AlarmBlock.getBit<StFlag32>(j))
|
||||
if (AlarmBlock.HasFlag((StFlag32)Math.Pow(2, j)))
|
||||
{
|
||||
// recupero tutti i 32 bit del blocco
|
||||
FANUC_ref.F_RW_Byte(R, FANUC.MemType.R, memIndex + i * 4, ref MemBlock);
|
||||
AlarmBlock = (StFlag32)BitConverter.ToUInt32(MemBlock, 0);
|
||||
for (int j = 0; j < 32; j++)
|
||||
// recupero allarme da oggetto in memoria...
|
||||
currAllarm = elencoAllarmi[i * 32 + j];
|
||||
// in base al gruppo decido dove assegnare come CONDITION...
|
||||
switch (currAllarm.gruppo)
|
||||
{
|
||||
// converto!
|
||||
// e aggiungo allarmi sollevati al corretto controller allarmi...
|
||||
if (AlarmBlock.getBit<StFlag32>(j))
|
||||
{
|
||||
// recupero allarme da oggetto in memoria...
|
||||
currAllarm = elencoAllarmi[i * 32 + j];
|
||||
// in base al gruppo decido dove assegnare come CONDITION...
|
||||
switch (currAllarm.gruppo)
|
||||
{
|
||||
case "PLC":
|
||||
mAlarmPLC.Add(MTConnect.Condition.Level.FAULT, currAllarm.descrizione, currAllarm.codNum, "", "");
|
||||
break;
|
||||
case "CNC":
|
||||
default:
|
||||
mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, currAllarm.descrizione, currAllarm.codNum, "", "");
|
||||
break;
|
||||
}
|
||||
}
|
||||
case "PLC":
|
||||
mAlarmPLC.Add(MTConnect.Condition.Level.FAULT, currAllarm.descrizione, currAllarm.codNum, "", "");
|
||||
break;
|
||||
case "CNC":
|
||||
default:
|
||||
mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, currAllarm.descrizione, currAllarm.codNum, "", "");
|
||||
break;
|
||||
}
|
||||
// memorizzo allarme nel vettore ack....
|
||||
retACK_DW0 = utils.setBitOnStFlag(retACK_DW0, 1, i);
|
||||
}
|
||||
#if false
|
||||
else
|
||||
{
|
||||
// abbasso eventuali flag di ack se non ne ho + dall'altro caso...
|
||||
retACK_DW0 = utils.setBitOnStFlag(retACK_DW0, 0, i);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// se mi sono rimasti degli strobe di lettura allarmi alzati li abbasso
|
||||
if (ACK_DW0 != StFlag32.NONE)
|
||||
{
|
||||
// inizializzo 4 byte a zero!!!
|
||||
retACK_DW0 = new byte[4];
|
||||
}
|
||||
}
|
||||
memIndex = 10500;
|
||||
// scrivo update ad ack!!!
|
||||
FANUC_ref.F_RW_Byte(W, FANUC.MemType.R, memIndex, ref retACK_DW0);
|
||||
}
|
||||
/// <summary>
|
||||
/// processing!
|
||||
@@ -366,7 +382,7 @@ namespace MTC_Sim
|
||||
|
||||
// !!!FARE!!! recuperare davvero dai dati del CNC e sostituire NA
|
||||
mOperator.Value = "NA";
|
||||
|
||||
|
||||
// recupero SEMPRE dati ulteriori: status ON/OFF, clock, ...
|
||||
mStatus.Value = "NA";
|
||||
mAccTime.Value = "NA";
|
||||
@@ -382,7 +398,7 @@ namespace MTC_Sim
|
||||
public override void getPath()
|
||||
{
|
||||
base.getPath();
|
||||
|
||||
|
||||
|
||||
#if false
|
||||
// byte x lettura memoria... 8byte --> 64 bit!
|
||||
|
||||
@@ -285,6 +285,14 @@ namespace MTC_Sim
|
||||
/// </summary>
|
||||
public Sample mPathPosActK;
|
||||
/// <summary>
|
||||
/// Stato dei codici G attivi
|
||||
/// </summary>
|
||||
public Event mPathCodG_Act;
|
||||
/// <summary>
|
||||
/// Stato dei SubMode attivi
|
||||
/// </summary>
|
||||
public Event mPathSubMode;
|
||||
/// <summary>
|
||||
/// Allarmi CNC del PATH
|
||||
/// </summary>
|
||||
public Condition mPathAlarmCNC;
|
||||
@@ -327,6 +335,8 @@ namespace MTC_Sim
|
||||
mPathCurrProg = new Event(dataRefList[17].Key);
|
||||
mPathCurrProgRowNum = new Event(dataRefList[18].Key);
|
||||
mPathActiveAxes = new Event(dataRefList[19].Key);
|
||||
mPathCodG_Act = new Event(dataRefList[20].Key);
|
||||
mPathSubMode = new Event(dataRefList[21].Key);
|
||||
mPathAlarmCNC = new Condition(string.Format("{0}_AlarmCNC", ident));
|
||||
mPathAlarmPLC = new Condition(string.Format("{0}_AlarmPLC", ident));
|
||||
}
|
||||
@@ -518,6 +528,15 @@ namespace MTC_Sim
|
||||
// 16 bit di strobe in risposta (4 word da 32 bit di flags...)
|
||||
public byte[] Acknowl = new byte[16];
|
||||
|
||||
// 1024 bit di strobe degli allarmi attivi (32 word da 4byte/32 bit di flags...)
|
||||
public byte[] AlarmFlags;
|
||||
|
||||
/// <summary>
|
||||
/// Oggetto elenco allarmi
|
||||
/// </summary>
|
||||
public allarme[] elencoAllarmi;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Prima word di strobe da array flag completo
|
||||
/// </summary>
|
||||
@@ -600,10 +619,6 @@ namespace MTC_Sim
|
||||
return (StFlag32)BitConverter.ToUInt32(Acknowl, 12);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Oggetto elenco allarmi
|
||||
/// </summary>
|
||||
public allarme[] elencoAllarmi;
|
||||
|
||||
|
||||
#if true
|
||||
@@ -622,7 +637,7 @@ namespace MTC_Sim
|
||||
/// <summary>
|
||||
/// Variabili stato macchina principali
|
||||
/// </summary>
|
||||
public StFlag8 ST_MACCH = 0;
|
||||
public StFlag8 ST_MACCH = 0;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -714,8 +729,6 @@ namespace MTC_Sim
|
||||
// salvo al form chiamante
|
||||
parentForm = caller;
|
||||
|
||||
loadAllarmi();
|
||||
|
||||
// item disponibilità
|
||||
mAdapter.AddDataItem(mAvail);
|
||||
mAvail.Value = "AVAILABLE";
|
||||
@@ -886,6 +899,11 @@ namespace MTC_Sim
|
||||
file.Close();
|
||||
// ora trimmo vettore al solo numero VERO degli allarmi caricati...
|
||||
Array.Resize<allarme>(ref elencoAllarmi, rumRiga);
|
||||
|
||||
// inizializzo a zero il vettore allarmi...
|
||||
int numByte = (int)Math.Ceiling(Convert.ToDecimal(rumRiga) / 8);
|
||||
AlarmFlags = new byte[numByte];
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Decodifica file allarme
|
||||
@@ -907,6 +925,13 @@ namespace MTC_Sim
|
||||
/// <param name="port"></param>
|
||||
public virtual void startAdapter(int port)
|
||||
{
|
||||
// inizializzo vettori di utility..
|
||||
loadAllarmi();
|
||||
|
||||
// carico status allarmi (completo)
|
||||
StFlag32 forceAlarm = (StFlag32)unchecked((int)UInt32.MaxValue);
|
||||
refreshAlarmState(forceAlarm, false);
|
||||
|
||||
// Start the adapter lib with the port number in the text box
|
||||
mAdapter.Port = port;
|
||||
mAdapter.Start();
|
||||
@@ -920,6 +945,15 @@ namespace MTC_Sim
|
||||
mAlarmCNC.Normal();
|
||||
mAlarmGeneral.Normal();
|
||||
}
|
||||
/// <summary>
|
||||
/// Effettua refresh del vettore privato degli allarmi attivi
|
||||
/// </summary>
|
||||
/// <param name="Alarm2Refresh">flag mask degli allarmi da aggiornare</param>
|
||||
/// <param name="giveAck">boolean: se si debba tornare ACK</param>
|
||||
public virtual void refreshAlarmState(StFlag32 Alarm2Refresh, bool giveAck)
|
||||
{
|
||||
// carco lo stato di tutti gli allarmi... forzo a 1 il flag degli allarmi
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ferma l'adapter...
|
||||
@@ -1005,7 +1039,7 @@ namespace MTC_Sim
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// verifica gli status attivi
|
||||
@@ -1150,7 +1184,7 @@ namespace MTC_Sim
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// recupera pezzi OK (fare override!)
|
||||
/// </summary>
|
||||
|
||||
@@ -6,3 +6,13 @@
|
||||
|
||||
ATTENZIONE: aggiungere pos memoria x status e strobe x path
|
||||
Aggiungere condition (1) x ogni path e x ogni asse
|
||||
|
||||
|
||||
- chiusura app --> FANUC_ref.disconnect
|
||||
|
||||
1) rivedere GetBit (cambiare!!!)
|
||||
2) strobe allarmi --> su cambio fronte --> serve vettore stato COMPLETO allarmi
|
||||
3) lo strobe allarmi va inizializzato all'avvio (carica TUTTI i bit...)
|
||||
4) da strobe allarmi --> vettore allarmi
|
||||
5) CodS 5 cifre
|
||||
6) CodM/CodT 3 cifre
|
||||
|
||||
@@ -357,6 +357,8 @@ namespace MTC_Sim
|
||||
listaDR.Add(new DataRefItem<string, string>(string.Format("Path_{0:00}_CurrProg", i + 1), "STRING#D0000"));
|
||||
listaDR.Add(new DataRefItem<string, string>(string.Format("Path_{0:00}_CurrProg_RowNum", i + 1), "INT#D0001.0"));
|
||||
listaDR.Add(new DataRefItem<string, string>(string.Format("Path_{0:00}_ActiveAxes", i + 1), "STROBE#R10520.3"));
|
||||
listaDR.Add(new DataRefItem<string, string>(string.Format("Path_{0:00}_CodG_Act", i + 1), "STROBE#xxx"));
|
||||
listaDR.Add(new DataRefItem<string, string>(string.Format("Path_{0:00}_SubMode", i + 1), "STROBE#xxx"));
|
||||
|
||||
Path[i] = new element(string.Format("Path_{0:00}", i + 1), string.Format("Path num {0}", i + 1), fonteDati.Random, listaDR);
|
||||
}
|
||||
|
||||
@@ -228,6 +228,8 @@ namespace MTC_Sim
|
||||
public string ProgrRow;
|
||||
public string PartId;
|
||||
public string ActiveAxes;
|
||||
public string CodG_Act;
|
||||
public string SubMode;
|
||||
|
||||
public int PathFeedrate;
|
||||
public int PathFeedrateOver;
|
||||
|
||||
Reference in New Issue
Block a user