Portato metodi decodifica aree memoria manutenzione in AdapterGeneric
This commit is contained in:
Binary file not shown.
@@ -862,10 +862,20 @@ namespace MTC_Adapter
|
||||
bool needSave = false;
|
||||
// recupero i dati di manutenzione dall'area di memoria IN BLOCCO
|
||||
int memIndex = 14000;
|
||||
byte[] tabDatiMtz = new byte[4 * maintData.Length];
|
||||
byte[] tabDatiMtzByte = new byte[4 * maintData.Length];
|
||||
uint[] tabDatiMtz = new uint[maintData.Length];
|
||||
inizio = DateTime.Now;
|
||||
FanucMemRW(R, FANUC.MemType.R, memIndex, ref tabDatiMtz);
|
||||
if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtz.Length), DateTime.Now.Subtract(inizio).Ticks);
|
||||
FanucMemRW(R, FANUC.MemType.R, memIndex, ref tabDatiMtzByte);
|
||||
if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtzByte.Length), DateTime.Now.Subtract(inizio).Ticks);
|
||||
// copio byte --> word!
|
||||
Buffer.BlockCopy(tabDatiMtzByte, 0, tabDatiMtz, 0, tabDatiMtzByte.Length);
|
||||
// decodifico aree memoria secondo tab configurazione
|
||||
processMaintData(tabDatiMtz, maintData);
|
||||
// verifica se debba salvare e mostrare dati
|
||||
checkSavePersDataLayer();
|
||||
|
||||
// vecchia gestione con shift & co, ora gestito come OSAI con metodo da AdapterGeneric...
|
||||
#if false
|
||||
// uno ad uno vado a inserirli nella mappa dei dati dell'adapter...
|
||||
int shift = 4; // 32bit
|
||||
int numero = 0;
|
||||
@@ -879,11 +889,11 @@ namespace MTC_Adapter
|
||||
|
||||
if (maintData[i].varName == "ACC_TIME")
|
||||
{
|
||||
istOreMaccOn = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
istOreMaccOn = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
else if (maintData[i].varName == "ACC_TIME_WORK")
|
||||
{
|
||||
istOreMaccLav = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
istOreMaccLav = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("Path_"))
|
||||
{
|
||||
@@ -898,7 +908,7 @@ namespace MTC_Adapter
|
||||
}
|
||||
if (numero > 0)
|
||||
{
|
||||
vettPath[numero - 1].mPathPartCount.Value = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
vettPath[numero - 1].mPathPartCount.Value = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -914,7 +924,7 @@ namespace MTC_Adapter
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istDistMovAssi[numero - 1] = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
istDistMovAssi[numero - 1] = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.EndsWith("_Invers"))
|
||||
@@ -930,7 +940,7 @@ namespace MTC_Adapter
|
||||
// 2016.07.06 debug di valori che potrebbero essere nulli...
|
||||
try
|
||||
{
|
||||
valRead = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
valRead = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
@@ -953,7 +963,7 @@ namespace MTC_Adapter
|
||||
// 2016.07.06 debug di valori che potrebbero essere nulli...
|
||||
try
|
||||
{
|
||||
valRead = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
valRead = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
@@ -976,7 +986,7 @@ namespace MTC_Adapter
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istGiriElettrom[numero - 1] = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
istGiriElettrom[numero - 1] = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.EndsWith("_NumCambiUT"))
|
||||
@@ -989,7 +999,7 @@ namespace MTC_Adapter
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istNumCambiUt[numero - 1] = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
istNumCambiUt[numero - 1] = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1005,7 +1015,7 @@ namespace MTC_Adapter
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istVacPumpWrkTime[numero - 1] = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
istVacPumpWrkTime[numero - 1] = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1021,7 +1031,7 @@ namespace MTC_Adapter
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istVacActCount[numero - 1] = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
istVacActCount[numero - 1] = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1037,7 +1047,7 @@ namespace MTC_Adapter
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istLubroCount[numero - 1] = BitConverter.ToUInt32(tabDatiMtz, shift * i);
|
||||
istLubroCount[numero - 1] = BitConverter.ToUInt32(tabDatiMtzByte, shift * i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1063,8 +1073,8 @@ namespace MTC_Adapter
|
||||
// salvo se necessario!
|
||||
if (needSave) parentForm.persistData();
|
||||
// -------------------------------------------
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1954,6 +1954,214 @@ namespace MTC_Adapter
|
||||
{
|
||||
// da gestire su ogni adapter... legge tutto array STROBE!!!
|
||||
}
|
||||
/// <summary>
|
||||
/// Processa la tabella di memoria dei dati di manutenzione
|
||||
/// </summary>
|
||||
/// <param name="tabDatiMtz"></param>
|
||||
public void processMaintData(uint[] tabDatiMtz, otherData[] maintData)
|
||||
{
|
||||
// uno ad uno vado a inserirli nella mappa dei dati dell'adapter...
|
||||
int numero = 0;
|
||||
uint valRead = 0;
|
||||
for (int i = 0; i < maintData.Length; i++)
|
||||
{
|
||||
numero = 0;
|
||||
valRead = 0;
|
||||
|
||||
if (maintData[i].varName == "ACC_TIME")
|
||||
{
|
||||
istOreMaccOn = tabDatiMtz[i];
|
||||
}
|
||||
else if (maintData[i].varName == "ACC_TIME_WORK")
|
||||
{
|
||||
istOreMaccLav = tabDatiMtz[i];
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("Path_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_PZ_TOT"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Path_", "").Replace("_PZ_TOT", ""));
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
if (numero > 0)
|
||||
{
|
||||
vettPath[numero - 1].mPathPartCount.Value = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("Axis_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_DistDone"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Axis_", "").Replace("_DistDone", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istDistMovAssi[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.EndsWith("_Invers"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Axis_", "").Replace("_Invers", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
// 2016.07.06 debug di valori che potrebbero essere nulli...
|
||||
try
|
||||
{
|
||||
valRead = tabDatiMtz[i];
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
valRead = 0;
|
||||
lg.Error(string.Format("Errore in recupero num inversioni:{0}parametro: {1}{0}i: {2}{0}Exc: {3}", Environment.NewLine, maintData[i].varName, i, exc));
|
||||
}
|
||||
istNumInvAssi[numero - 1] = valRead;
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.EndsWith("_AccTime"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Axis_", "").Replace("_AccTime", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
// 2016.07.06 debug di valori che potrebbero essere nulli...
|
||||
try
|
||||
{
|
||||
valRead = tabDatiMtz[i];
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
valRead = 0;
|
||||
lg.Error(string.Format("Errore in recupero num inversioni:{0}parametro: {1}{0}i: {2}{0}Exc: {3}", Environment.NewLine, maintData[i].varName, i, exc));
|
||||
}
|
||||
istAccTimeAssi[numero - 1] = valRead;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("UnOp_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_AccTime"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("UnOp_", "").Replace("_AccTime", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istGiriElettrom[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.EndsWith("_NumCambiUT"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("UnOp_", "").Replace("_NumCambiUT", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istNumCambiUt[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("VacPump_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_WrkTime"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("VacPump_", "").Replace("_WrkTime", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istVacPumpWrkTime[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("VacAct_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_Count"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("VacAct_", "").Replace("_Count", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istVacActCount[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("Lubro_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_Num"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Lubro_", "").Replace("_Num", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istLubroCount[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// processa dataLayer e se necessario salva/mostra
|
||||
/// </summary>
|
||||
public void checkSavePersDataLayer()
|
||||
{
|
||||
if (persistenceLayer != null)
|
||||
{
|
||||
bool needSave = false;
|
||||
// verifica se si debba aggiornare XML (e salva in adapter dati vari)
|
||||
needSave = procOreMaccOn(needSave);
|
||||
needSave = procOreMaccLav(needSave);
|
||||
needSave = procProgrName(needSave);
|
||||
needSave = procPartId(needSave);
|
||||
needSave = procPzProd(needSave);
|
||||
needSave = procGiriTotUnOp(needSave);
|
||||
needSave = procNumCU(needSave);
|
||||
needSave = procMovTotAssi(needSave);
|
||||
needSave = procAccTimeAssi(needSave);
|
||||
needSave = procNumInvAssi(needSave);
|
||||
needSave = procVacPump(needSave);
|
||||
needSave = procVacAct(needSave);
|
||||
needSave = procLubro(needSave);
|
||||
|
||||
// salvo se necessario!
|
||||
if (needSave) parentForm.persistData();
|
||||
// -------------------------------------------
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1108,210 +1108,19 @@ namespace MTC_Adapter
|
||||
/// </summary>
|
||||
private void getMtzDataFromPlc()
|
||||
{
|
||||
bool needSave = false;
|
||||
// recupero i dati di manutenzione dall'area di memoria IN BLOCCO
|
||||
int memIndex = 19166;
|
||||
uint[] tabDatiMtz = new uint[maintData.Length];
|
||||
inizio = DateTime.Now;
|
||||
OsaiMemRW_DWord(R, OSAI.MemTypeWord.MW_CODE, memIndex, ref tabDatiMtz);
|
||||
if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtz.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
|
||||
// uno ad uno vado a inserirli nella mappa dei dati dell'adapter...
|
||||
int numero = 0;
|
||||
uint valRead = 0;
|
||||
for (int i = 0; i < maintData.Length; i++)
|
||||
{
|
||||
numero = 0;
|
||||
valRead = 0;
|
||||
|
||||
if (maintData[i].varName == "ACC_TIME")
|
||||
{
|
||||
istOreMaccOn = tabDatiMtz[i];
|
||||
}
|
||||
else if (maintData[i].varName == "ACC_TIME_WORK")
|
||||
{
|
||||
istOreMaccLav = tabDatiMtz[i];
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("Path_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_PZ_TOT"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Path_", "").Replace("_PZ_TOT", ""));
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
if (numero > 0)
|
||||
{
|
||||
vettPath[numero - 1].mPathPartCount.Value = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("Axis_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_DistDone"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Axis_", "").Replace("_DistDone", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istDistMovAssi[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.EndsWith("_Invers"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Axis_", "").Replace("_Invers", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
// 2016.07.06 debug di valori che potrebbero essere nulli...
|
||||
try
|
||||
{
|
||||
valRead = tabDatiMtz[i];
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
valRead = 0;
|
||||
lg.Error(string.Format("Errore in recupero num inversioni:{0}parametro: {1}{0}i: {2}{0}Exc: {3}", Environment.NewLine, maintData[i].varName, i, exc));
|
||||
}
|
||||
istNumInvAssi[numero - 1] = valRead;
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.EndsWith("_AccTime"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Axis_", "").Replace("_AccTime", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
// 2016.07.06 debug di valori che potrebbero essere nulli...
|
||||
try
|
||||
{
|
||||
valRead = tabDatiMtz[i];
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
valRead = 0;
|
||||
lg.Error(string.Format("Errore in recupero num inversioni:{0}parametro: {1}{0}i: {2}{0}Exc: {3}", Environment.NewLine, maintData[i].varName, i, exc));
|
||||
}
|
||||
istAccTimeAssi[numero - 1] = valRead;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("UnOp_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_AccTime"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("UnOp_", "").Replace("_AccTime", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istGiriElettrom[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.EndsWith("_NumCambiUT"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("UnOp_", "").Replace("_NumCambiUT", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istNumCambiUt[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("VacPump_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_WrkTime"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("VacPump_", "").Replace("_WrkTime", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istVacPumpWrkTime[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("VacAct_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_Count"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("VacAct_", "").Replace("_Count", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istVacActCount[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (maintData[i].varName.StartsWith("Lubro_"))
|
||||
{
|
||||
if (maintData[i].varName.EndsWith("_Num"))
|
||||
{
|
||||
try
|
||||
{
|
||||
numero = Convert.ToInt32(maintData[i].varName.Replace("Lubro_", "").Replace("_Num", ""));
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (numero > 0)
|
||||
{
|
||||
istLubroCount[numero - 1] = tabDatiMtz[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (persistenceLayer != null)
|
||||
{
|
||||
// verifica se si debba aggiornare XML (e salva in adapter dati vari)
|
||||
needSave = procOreMaccOn(needSave);
|
||||
needSave = procOreMaccLav(needSave);
|
||||
needSave = procProgrName(needSave);
|
||||
needSave = procPartId(needSave);
|
||||
needSave = procPzProd(needSave);
|
||||
needSave = procGiriTotUnOp(needSave);
|
||||
needSave = procNumCU(needSave);
|
||||
needSave = procMovTotAssi(needSave);
|
||||
needSave = procAccTimeAssi(needSave);
|
||||
needSave = procNumInvAssi(needSave);
|
||||
needSave = procVacPump(needSave);
|
||||
needSave = procVacAct(needSave);
|
||||
needSave = procLubro(needSave);
|
||||
|
||||
// salvo se necessario!
|
||||
if (needSave) parentForm.persistData();
|
||||
// -------------------------------------------
|
||||
}
|
||||
|
||||
// decodifico aree memoria secondo tab configurazione
|
||||
processMaintData(tabDatiMtz, maintData);
|
||||
// verifica se debba salvare e mostrare dati
|
||||
checkSavePersDataLayer();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gestione lettura dati status da PLC
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user