fix complessivo x gestione PersistData: rilettura a ritroso sino a maxNumDD (app.config) giorni prima x cercare file valido...

This commit is contained in:
Samuele E. Locatelli
2017-03-24 00:29:44 +01:00
parent 3f9491de75
commit af8b4c83fb
7 changed files with 39 additions and 15 deletions
-4
View File
@@ -1,9 +1,5 @@
using MTConnect;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MTC_Adapter
{
+1
View File
@@ -58,6 +58,7 @@
<add key="AlarmList" value="AlarmList.map"/>
<add key="defaultConfFile" value="Adapter_ItemList.xml"/>
<add key="defaultPersLayerFile" value="PersistData.dat"/>
<add key="maxNumDD" value="30"/>
<add key="defaultEsaFile" value="EsaKvara.ini"/>
<add key="CounterListFilePath" value="CounterList.map"/>
<add key="StatusListFilePath" value="StatusList.map"/>
@@ -1,8 +1,8 @@
<?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>ADAPTER_OSAI</NomeAdapt>
<TipoAdapt>OSAI</TipoAdapt>
<NomeAdapt>ADAPTER_FANUC</NomeAdapt>
<TipoAdapt>FANUC</TipoAdapt>
<ContOreMaccOn>0</ContOreMaccOn>
<ContOreMaccLav>0</ContOreMaccLav>
<VacuumPump>
@@ -377,7 +377,7 @@
000376|PLC|FAULT|[COD 002107] - 530 PULSANTIERA ESTERNA ABILITATA
000377|PLC|FAULT|[COD 002108] - 504 CAMBIO UTENSILE INTERROTTO
000378|PLC|FAULT|[COD 002109] - 363 MONTANTE CENTRALE ALTO
000379|PLC|FAULT|[COD 002110] - =--- PREALLARME TERMICO TORQUE A
000379|PLC|FAULT|[COD 002110] - --- PREALLARME TERMICO TORQUE A
000380|PLC|FAULT|[COD 002111] - 498 CARICO MASSIMO SUL MANDRINO SUPERATO SOGLIA S1
000381|PLC|FAULT|[COD 002112] - --- PREALLARME TERMICO TORQUE C
000382|PLC|FAULT|[COD 002113] - 432 UTENSILE NON SGANCIATO
@@ -431,7 +431,7 @@
000430|PLC|FAULT|[COD 002161] - 289 ATTREZZAGGIO CAMBIO UTENSILE 2 IN CORSO
000431|PLC|FAULT|[COD 002162] - 584 PORTA DI SICUREZZA MAGAZZINO DISCO 2 NON CHIUSA
000432|PLC|FAULT|[COD 002163] - 514 PROTEZIONE MAGAZZINO DISCO 2 NON IN POSIZIONE
000433|PLC|FAULT|[COD 002164] -
000433|PLC|FAULT|[COD 002164] - ...
000434|PLC|FAULT|[COD 002165] - 550 GRUPPO DI FORATURA NON IN POSIZIONE
000435|PLC|FAULT|[COD 002166] - ...
000436|PLC|FAULT|[COD 002167] - ...
Binary file not shown.
+4 -4
View File
@@ -97,10 +97,6 @@
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="DotNetAdapterSDK, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>ExtLib\DotNetAdapterSDK.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.4.4\lib\net45\NLog.dll</HintPath>
<Private>True</Private>
@@ -298,6 +294,10 @@
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\GitHub\MTConnect\dot_net_sdk\DotNetAdapterSDK.csproj">
<Project>{d8d08dbe-b511-4de0-b5a9-563ebfc60c4f}</Project>
<Name>DotNetAdapterSDK</Name>
</ProjectReference>
<ProjectReference Include="..\CMSCncLib\CMSCncLib.vbproj">
<Project>{2d769ffd-1122-4276-a115-29246e6d23c5}</Project>
<Name>CMSCncLib</Name>
+30 -3
View File
@@ -149,7 +149,7 @@ namespace MTC_Adapter
var sentinalRule = new LoggingRule("*", LogLevel.Trace, sentinalTarget);
LogManager.Configuration.AddTarget("sentinal", sentinalTarget);
LogManager.Configuration.LoggingRules.Add(sentinalRule);
#endif
LogManager.ReconfigExistingLoggers();
@@ -633,6 +633,15 @@ namespace MTC_Adapter
}
}
/// <summary>
/// file persistenza generale data attuale ANTICIPATA di xx giorni
/// </summary>
/// <param name="numDD">num DD di anticipo</param>
/// <returns></returns>
public string prevPersLayerFile(int numDD)
{
return string.Format(@"{0}\{1:yyyy}\{1:yyyy-MM-dd}.mtc", utils.dataDatDir, DateTime.Now.AddDays(-numDD));
}
/// <summary>
/// salva i valori attuali del file di conf sia in file corrente che in cartella valori storici
/// </summary>
public void persistData()
@@ -653,7 +662,7 @@ namespace MTC_Adapter
private void checkNormTask()
{
// decremento...
normCount--;
// se il counter è a zero eseguo...
@@ -1195,6 +1204,24 @@ namespace MTC_Adapter
// inizializzo prima di leggere...
agObj.persistenceLayer = new Dictionary<string, string>();
agObj.persistenceLayer = utils.ReadPlain(filePath);
// 2017.03.23 check problema files corrotti...
if (agObj.persistenceLayer.Count == 0)
{
// se avesse letto un valore NON coerente (senza righe) PROVA a leggere a ritroso vecchi files... da histPersLayerFile e precedenti...
int numDD = 0;
int maxNumDD = utils.CRI("maxNumDD");
Dictionary<string, string> lastRead = new Dictionary<string, string>();
// continuo fino a che non leggo almeno 1 riga valida e non ho raggiunto maxDD
while (numDD < maxNumDD && lastRead.Count == 0)
{
// leggo il file storico alla data anticipata...
lastRead = utils.ReadPlain(prevPersLayerFile(numDD));
numDD++;
}
// se sono uscito PROVO a passare il file storico letto buono (oppure vuoto...)
agObj.persistenceLayer = lastRead;
}
}
#endregion
@@ -1615,6 +1642,6 @@ namespace MTC_Adapter
agObj.tryDisconnect();
}
}
}
}