diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs
index 4063a6a..38526c8 100644
--- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs
+++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs
@@ -2021,6 +2021,120 @@ namespace MTC_Adapter
///
public virtual void getGlobalData()
{
+ // svuoto...
+ parentForm.dataMonitor_1 = "";
+ parentForm.dataMonitor_2 = "";
+ parentForm.dataMonitor_3 = "";
+
+ // accodo dati path in DataMonitor......
+ StringBuilder sb1 = new StringBuilder();
+ StringBuilder sb2 = new StringBuilder();
+
+ // dati base...
+ sb1.AppendLine(string.Format("POWER {0}: | EmStop:{1:N3} | ProcSel: {2}", mPower.Value, mEStop.Value, mProcSel.Value));
+
+ // leggo dati globali...
+ readGlobalData();
+
+ // legge overrides...
+ readOverrides(ref sb1);
+ procCncAlarm();
+
+ // accodo dati base!
+ parentForm.dataMonitor_1 += sb1.ToString();
+ // accodo dati UT...
+ for (int i = 0; i < currAdpConf.nUnOp; i++)
+ {
+ sb2.AppendLine(string.Format("UT: ToolId {0} | VitaRes {1} | TipoVita {2} ", vettUnOp[i].mUnOpToolId.Value, vettUnOp[i].mUnOpVitaRes.Value, vettUnOp[i].mUnOpVitaResType.Value));
+ }
+ parentForm.dataMonitor_2 = sb2.ToString();
+
+ // gestisco lettura dati manutenzione da PLC...
+ getMtzDataFromPlc();
+ // gestisco lettura dati analogici da PLC...
+ getAnalogDataFromPlc();
+ // gestisco lettura dati status da PLC...
+ getStatusDataFromPlc();
+ }
+ ///
+ /// Legge dati globali...
+ ///
+ public virtual void readGlobalData()
+ {
+ }
+ ///
+ /// legge dati override...
+ ///
+ ///
+ ///
+ public virtual bool readOverrides(ref StringBuilder sb1)
+ {
+ bool fatto = false;
+ return fatto;
+ }
+ ///
+ /// processa allarmi CNC...
+ ///
+ public virtual bool procCncAlarm()
+ {
+ bool fatto = false;
+ return fatto;
+ }
+ ///
+ /// Gestione lettura dati manutenzione
+ ///
+ public virtual bool getMtzDataFromPlc()
+ {
+ bool fatto = false;
+ return fatto;
+ }
+ ///
+ /// Gestione lettura dati analogici
+ ///
+ public virtual bool getAnalogDataFromPlc()
+ {
+ bool fatto = false;
+ return fatto;
+ }
+ ///
+ /// Gestione lettura dati status da PLC
+ ///
+ public virtual bool getStatusDataFromPlc()
+ {
+ bool fatto = false;
+ return fatto;
+ }
+
+ ///
+ /// Processa i dati di override di un path
+ ///
+ /// idx path (zero based)
+ /// vettore 7 valori dei dati (valori int16 jog/feed/rapid/spindle[1..4])
+ /// StringBuilder da aggiornare
+ public bool procPathOverride(int currIdx, ushort[] dataVector, ref StringBuilder sb)
+ {
+ bool fatto = false;
+ try
+ {
+ // prendo quella GLOBALE...
+ vettPath[currIdx].mPathFeed.Value = FeedRate;
+ // leggo da vettore... CABLATO DIVISO PER 100!!!
+ vettPath[currIdx].mPathJogOver.Value = dataVector[0] / 100;
+ vettPath[currIdx].mPathFeedOver.Value = dataVector[1] / 100;
+ vettPath[currIdx].mPathRapidOver.Value = dataVector[2] / 100;
+ vettPath[currIdx].mPathSpindleOver_01.Value = dataVector[3] / 100;
+ vettPath[currIdx].mPathSpindleOver_02.Value = dataVector[4] / 100;
+ vettPath[currIdx].mPathSpindleOver_03.Value = dataVector[5] / 100;
+ vettPath[currIdx].mPathSpindleOver_04.Value = dataVector[6] / 100;
+
+ // salvo stringa!
+ sb.AppendLine(string.Format("P{0} - Override % Jog | Feed | Rapid: {1} | {2} | {3}", currIdx + 1, dataVector[0] / 100, dataVector[1] / 100, dataVector[2] / 100));
+ sb.AppendLine(string.Format("P{0} - Override % Spindle 1 | 2 | 3 | 4: {1} | {2} | {3} | {4}", currIdx + 1, dataVector[3] / 100, dataVector[4] / 100, dataVector[5] / 100, dataVector[6] / 100));
+ fatto = true;
+ }
+ catch
+ { }
+ return fatto;
}
///
diff --git a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs
index c366e8b..6c78309 100644
--- a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs
+++ b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs
@@ -466,70 +466,14 @@ namespace MTC_Adapter
int memIndex = 19036;
return OsaiMemRW_DWord(R, OSAI.MemTypeWord.MW_CODE, memIndex + blockIndex * 2, ref MemBlock);
}
- ///
- /// Gestione lettura dati manutenzione
- ///
- private void getMtzDataFromPlc()
- {
- // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
- int memIndex = 1000;
- uint[] tabDatiMtz = new uint[maintData.Length];
- inizio = DateTime.Now;
- OsaiMemRW_DWord(R, OSAI.MemTypeWord.GW_CODE, memIndex, ref tabDatiMtz);
- if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtz.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
- // decodifico aree memoria secondo tab configurazione
- processMaintData(tabDatiMtz, maintData);
- // verifica se debba salvare e mostrare dati
- checkSavePersDataLayer();
- }
- ///
- /// Gestione lettura dati analogici
- ///
- private void getAnalogDataFromPlc()
- {
- // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
- int memIndex = 19434;
- uint[] tabDatiAnalog = new uint[analogData.Length];
- inizio = DateTime.Now;
- OsaiMemRW_DWord(R, OSAI.MemTypeWord.MW_CODE, memIndex, ref tabDatiAnalog);
- if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiAnalog", tabDatiAnalog.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
- // decodifico aree memoria secondo tab configurazione
- processAnalogData(tabDatiAnalog, analogData);
- }
+
+ #region implementazione processing GlobalData
///
- /// Gestione lettura dati status da PLC
+ /// Legge dati globali...
///
- private void getStatusDataFromPlc()
+ public override void readGlobalData()
{
- // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
- int memIndex = 19426;
- int numByte = 1 + (statusData.Length / 8);
- byte[] tabDatiStatus = new byte[numByte];
- inizio = DateTime.Now;
- OsaiMemRW_Byte(R, OSAI.MemTypeWord.MW_CODE, memIndex, 0, ref tabDatiStatus);
- if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiStatus", tabDatiStatus.Length), DateTime.Now.Subtract(inizio).Ticks);
- // decodifico aree memoria secondo tab configurazione
- processStatusData(tabDatiStatus, statusData);
- }
- ///
- /// Leggo dati globali comuni (x path, assi...)
- ///
- public override void getGlobalData()
- {
- base.getGlobalData();
- // svuoto...
- parentForm.dataMonitor_1 = "";
- parentForm.dataMonitor_2 = "";
- parentForm.dataMonitor_3 = "";
-
- // accodo dati path in DataMonitor......
- StringBuilder sb1 = new StringBuilder();
- StringBuilder sb2 = new StringBuilder();
-
- // dati base...
- sb1.AppendLine(string.Format("POWER {0}: | EmStop:{1:N3} | ProcSel: {2}", mPower.Value, mEStop.Value, mProcSel.Value));
-
// leggo dati globali...
parentForm.commPlcActive = true;
inizio = DateTime.Now;
@@ -540,45 +484,69 @@ namespace MTC_Adapter
// recupero speed e feed...
FeedRate = Convert.ToInt32(allNcData.realfeed);
SpeedRate = Convert.ToInt32(allNcData.realspeed);
-
- // area path1/2: 7 WORD x ogni path...
- int memIndex = 19151;
- ushort[] PathData_mem = new ushort[14];
- inizio = DateTime.Now;
- OsaiMemRW_Word(R, OSAI.MemTypeWord.MW_CODE, memIndex, ref PathData_mem);
- if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PathData", PathData_mem.Length * 2), DateTime.Now.Subtract(inizio).Ticks);
-
- // inizio indicando feed...
- sb1.AppendLine(string.Format("FeedRate: {0} mm/min", FeedRate));
- sb1.AppendLine(string.Format("SpeedRate: {0} mm/min", SpeedRate));
-
- // 2017.04.20: recupero OVER per Jog/Feed/Rapid/Spindle x i path multipli (qui cablati 1-2)
- ushort[] currPathData = new ushort[7];
- // processo ora i dai dei path... di sicuro il primo
- Array.Copy(PathData_mem, 0, currPathData, 0, 7);
- procPathOverride(0, currPathData, ref sb1);
- //...e se c'è pure il secondo...
- if (currAdpConf.nPath > 1)
- {
- Array.Copy(PathData_mem, 7, currPathData, 0, 7);
- // anche il secondo!
- procPathOverride(1, currPathData, ref sb1);
- }
-
- // se ho allarmi li accodo...
- if (allNcData.lastncerror != 0)
+ }
+ ///
+ /// legge dati override...
+ ///
+ ///
+ ///
+ public override bool readOverrides(ref StringBuilder sb1)
+ {
+ bool fatto = false;
+ try
{
- if (utils.CRI("loglevel") > 5)
+ // area path1/2: 7 WORD x ogni path...
+ int memIndex = 19151;
+ ushort[] PathData_mem = new ushort[14];
+ inizio = DateTime.Now;
+ OsaiMemRW_Word(R, OSAI.MemTypeWord.MW_CODE, memIndex, ref PathData_mem);
+ if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PathData", PathData_mem.Length * 2), DateTime.Now.Subtract(inizio).Ticks);
+
+ // inizio indicando feed...
+ sb1.AppendLine(string.Format("FeedRate: {0} mm/min", FeedRate));
+ sb1.AppendLine(string.Format("SpeedRate: {0} mm/min", SpeedRate));
+
+ // 2017.04.20: recupero OVER per Jog/Feed/Rapid/Spindle x i path multipli (qui cablati 1-2)
+ ushort[] currPathData = new ushort[7];
+ // processo ora i dai dei path... di sicuro il primo
+ Array.Copy(PathData_mem, 0, currPathData, 0, 7);
+ procPathOverride(0, currPathData, ref sb1);
+ //...e se c'è pure il secondo...
+ if (currAdpConf.nPath > 1)
{
- lg.Info(string.Format("Allarmi CNC: {0} ", allNcData.lastncerror));
+ Array.Copy(PathData_mem, 7, currPathData, 0, 7);
+ // anche il secondo!
+ procPathOverride(1, currPathData, ref sb1);
}
- string alarmText = string.Format("CNC Alarm - Cod: {0}", allNcData.lastncerror);
+ fatto = true;
+ }
+ catch
+ { }
+ return fatto;
+ }
+ ///
+ /// processa allarmi CNC...
+ ///
+ public override bool procCncAlarm()
+ {
+ bool fatto = false;
+ try
+ {
+ // se ho allarmi li accodo...
+ if (allNcData.lastncerror != 0)
+ {
- // tolgo eventuali allarmi CNC...
- allarmiCNC.Clear();
- allarmiCNC.Add(allNcData.lastncerror.ToString(), alarmText);
- // 2017.05.09 gestione allarmi commentata
+ if (utils.CRI("loglevel") > 5)
+ {
+ lg.Info(string.Format("Allarmi CNC: {0} ", allNcData.lastncerror));
+ }
+ string alarmText = string.Format("CNC Alarm - Cod: {0}", allNcData.lastncerror);
+
+ // tolgo eventuali allarmi CNC...
+ allarmiCNC.Clear();
+ allarmiCNC.Add(allNcData.lastncerror.ToString(), alarmText);
+ // 2017.05.09 gestione allarmi commentata
#if false
mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, alarmText, allNcData.lastncerror.ToString(), "", "");
// mostro in form!
@@ -586,7 +554,7 @@ namespace MTC_Adapter
parentForm.dataMonitor_1 += sb1.ToString();
#endif
- // 2017.05.09 gestione allarmi commentata
+ // 2017.05.09 gestione allarmi commentata
#if false
// il codice è corretto (manca prima aprte codice + traduzione), se cerco di trovare oggett completo NON c'è, verificare con Andrea...
sb1.AppendLine(string.Format("Allarmi CNC: {0}", allNcData.lastncerror));
@@ -603,54 +571,100 @@ namespace MTC_Adapter
CMSCncLib.OPENcontrol.MSGANOMALY anomCNC = new CMSCncLib.OPENcontrol.MSGANOMALY();
OSAI_ref.O_ReadCurrentAnomalyMsg(ref anomCNC);
#endif
+ }
+ else
+ {
+ allarmiCNC.Clear();
+ allarmiCNC = new Dictionary();
+ // 2017.05.09 gestione allarmi commentata
+ //allarmiCNC = new CMSCncLib.OPENcontrol.MSGERROR();
+ }
+ fatto = true;
}
- else
- {
- allarmiCNC.Clear();
- allarmiCNC = new Dictionary();
- // 2017.05.09 gestione allarmi commentata
- //allarmiCNC = new CMSCncLib.OPENcontrol.MSGERROR();
- }
-
- // accodo dati base!
- parentForm.dataMonitor_1 += sb1.ToString();
- // accodo dati UT...
- for (int i = 0; i < currAdpConf.nUnOp; i++)
- {
- sb2.AppendLine(string.Format("UT: ToolId {0} | VitaRes {1} | TipoVita {2} ", vettUnOp[i].mUnOpToolId.Value, vettUnOp[i].mUnOpVitaRes.Value, vettUnOp[i].mUnOpVitaResType.Value));
- }
- parentForm.dataMonitor_2 = sb2.ToString();
-
- // gestisco lettura dati manutenzione da PLC...
- getMtzDataFromPlc();
- // gestisco lettura dati analogici da PLC...
- getAnalogDataFromPlc();
- // gestisco lettura dati status da PLC...
- getStatusDataFromPlc();
+ catch
+ { }
+ return fatto;
}
///
- /// Processa i dati di override di un path
+ /// Gestione lettura dati manutenzione
///
- /// idx path (zero based)
- /// vettore 7 valori dei dati (valori int16 jog/feed/rapid/spindle[1..4])
- /// StringBuilder da aggiornare
- private void procPathOverride(int currIdx, ushort[] dataVector, ref StringBuilder sb)
+ public override bool getMtzDataFromPlc()
{
- // prendo quella GLOBALE...
- vettPath[currIdx].mPathFeed.Value = FeedRate;
- // leggo da vettore... CABLATO DIVISO PER 100!!!
- vettPath[currIdx].mPathJogOver.Value = dataVector[0] / 100;
- vettPath[currIdx].mPathFeedOver.Value = dataVector[1] / 100;
- vettPath[currIdx].mPathRapidOver.Value = dataVector[2] / 100;
- vettPath[currIdx].mPathSpindleOver_01.Value = dataVector[3] / 100;
- vettPath[currIdx].mPathSpindleOver_02.Value = dataVector[4] / 100;
- vettPath[currIdx].mPathSpindleOver_03.Value = dataVector[5] / 100;
- vettPath[currIdx].mPathSpindleOver_04.Value = dataVector[6] / 100;
-
- // salvo stringa!
- sb.AppendLine(string.Format("P{0} - Override % Jog | Feed | Rapid: {1} | {2} | {3}", currIdx + 1, dataVector[0] / 100, dataVector[1] / 100, dataVector[2] / 100));
- sb.AppendLine(string.Format("P{0} - Override % Spindle 1 | 2 | 3 | 4: {1} | {2} | {3} | {4}", currIdx + 1, dataVector[3] / 100, dataVector[4] / 100, dataVector[5] / 100, dataVector[6] / 100));
+ bool fatto = false;
+ try
+ {
+ if (maintData.Length > 0)
+ {
+ // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
+ int memIndex = 1000;
+ uint[] tabDatiMtz = new uint[maintData.Length];
+ inizio = DateTime.Now;
+ OsaiMemRW_DWord(R, OSAI.MemTypeWord.GW_CODE, memIndex, ref tabDatiMtz);
+ if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtz.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
+ // decodifico aree memoria secondo tab configurazione
+ processMaintData(tabDatiMtz, maintData);
+ // verifica se debba salvare e mostrare dati
+ checkSavePersDataLayer();
+ }
+ fatto = true;
+ }
+ catch
+ { }
+ return fatto;
}
+ ///
+ /// Gestione lettura dati analogici
+ ///
+ public override bool getAnalogDataFromPlc()
+ {
+ bool fatto = false;
+ try
+ {
+ if (analogData.Length > 0)
+ {
+ // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
+ int memIndex = 19434;
+ uint[] tabDatiAnalog = new uint[analogData.Length];
+ inizio = DateTime.Now;
+ OsaiMemRW_DWord(R, OSAI.MemTypeWord.MW_CODE, memIndex, ref tabDatiAnalog);
+ if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiAnalog", tabDatiAnalog.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
+ // decodifico aree memoria secondo tab configurazione
+ processAnalogData(tabDatiAnalog, analogData);
+ }
+ fatto = true;
+ }
+ catch
+ { }
+ return fatto;
+ }
+ ///
+ /// Gestione lettura dati status da PLC
+ ///
+ public override bool getStatusDataFromPlc()
+ {
+ bool fatto = false;
+ try
+ {
+ if (statusData.Length > 0)
+ {
+ // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
+ int memIndex = 19426;
+ int numByte = 1 + (statusData.Length / 8);
+ byte[] tabDatiStatus = new byte[numByte];
+ inizio = DateTime.Now;
+ OsaiMemRW_Byte(R, OSAI.MemTypeWord.MW_CODE, memIndex, 0, ref tabDatiStatus);
+ if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiStatus", tabDatiStatus.Length), DateTime.Now.Subtract(inizio).Ticks);
+ // decodifico aree memoria secondo tab configurazione
+ processStatusData(tabDatiStatus, statusData);
+ }
+ fatto = true;
+ }
+ catch
+ { }
+ return fatto;
+ }
+
+ #endregion
///
/// Carico file conf dati CMS
diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs
index 3a1c634..b08203d 100644
--- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs
+++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs
@@ -27,7 +27,7 @@ namespace MTC_Adapter
/// Area di memoria base x dati TESTE (DB254)
///
protected int baseMemUO = 254;
-
+
///
/// wrapper chiamata lettura/scrittura SINGOLO BYTE...
///
@@ -127,7 +127,7 @@ namespace MTC_Adapter
parentForm.commPlcActive = true;
answ = SIEMENS_ref.S_RW_DWord(bWrite, MemType, memIndex, ref Value);
}
- catch(Exception exc)
+ catch (Exception exc)
{
lg.Error(string.Format("Eccezione in SIEMENSMemRW_DWord: {0}{1}", Environment.NewLine, exc));
}
@@ -331,7 +331,7 @@ namespace MTC_Adapter
try
{
inizio = DateTime.Now;
- SIEMENSMemRW_Byte(W, baseMemDb, memIndexAck, ref currACK_DW);
+ SIEMENSMemRW_Byte(W, baseMemDb, memIndexAck, ref currACK_DW);
if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-ACK_DW0", currACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks);
fatto = true;
}
@@ -373,7 +373,7 @@ namespace MTC_Adapter
public override bool writeWatchDog(ref byte[] retACK_DW)
{
int memIndex = 8;
- return SIEMENSMemRW_Byte(W, baseMemDb, memIndex, ref retACK_DW);
+ return SIEMENSMemRW_Byte(W, baseMemDb, memIndex, ref retACK_DW);
}
///
/// Effettua lettura dati TESTING
@@ -408,7 +408,7 @@ namespace MTC_Adapter
{
// DB1499.DBX0.0
int memIndexAck = 0;
- return SIEMENSMemRW_Byte(W, baseMemDb, memIndexAck, ref retACK_DW0);
+ return SIEMENSMemRW_Byte(W, baseMemDb, memIndexAck, ref retACK_DW0);
}
///
@@ -434,137 +434,203 @@ namespace MTC_Adapter
int memIndex = 36;
return SIEMENSMemRW_DWord(R, baseMemDb, memIndex + blockIndex * 4, ref MemBlock);
}
+
+ #region implementazione processing GlobalData
+
+ ///
+ /// Legge dati globali...
+ ///
+ public override void readGlobalData()
+ {
+ // cercare funzione!!!
+#if false
+ // leggo dati globali...
+ parentForm.commPlcActive = true;
+ inizio = DateTime.Now;
+ OSAI_ref.O_GetNcInfo1(ref allNcData);
+ if (utils.CRB("recTime")) TimingData.addResult("R-NcInfo", DateTime.Now.Subtract(inizio).Ticks);
+ parentForm.commPlcActive = false;
+
+ // recupero speed e feed...
+ FeedRate = Convert.ToInt32(allNcData.realfeed);
+ SpeedRate = Convert.ToInt32(allNcData.realspeed);
+#endif
+ }
+ ///
+ /// legge dati override...
+ ///
+ ///
+ ///
+ public override bool readOverrides(ref StringBuilder sb1)
+ {
+ bool fatto = false;
+ try
+ {
+
+ // area path1/2: 7 WORD x ogni path...
+ int memIndex = 508;
+ ushort[] PathData_mem = new ushort[14];
+ parentForm.commPlcActive = true;
+ inizio = DateTime.Now;
+ SIEMENSMemRW_Word(R, baseMemDb, memIndex, ref PathData_mem);
+ if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PathData", PathData_mem.Length * 2), DateTime.Now.Subtract(inizio).Ticks);
+ parentForm.commPlcActive = false;
+
+ // inizio indicando feed...
+ sb1.AppendLine(string.Format("FeedRate: {0} mm/min", FeedRate));
+ sb1.AppendLine(string.Format("SpeedRate: {0} mm/min", SpeedRate));
+
+ // 2017.04.20: recupero OVER per Jog/Feed/Rapid/Spindle x i path multipli (qui cablati 1-2)
+ ushort[] currPathData = new ushort[7];
+ // processo ora i dai dei path... di sicuro il primo
+ Array.Copy(PathData_mem, 0, currPathData, 0, 7);
+ procPathOverride(0, currPathData, ref sb1);
+ //...e se c'è pure il secondo...
+ if (currAdpConf.nPath > 1)
+ {
+ Array.Copy(PathData_mem, 7, currPathData, 0, 7);
+ // anche il secondo!
+ procPathOverride(1, currPathData, ref sb1);
+ }
+ fatto = true;
+ }
+ catch
+ { }
+ return fatto;
+ }
+ ///
+ /// processa allarmi CNC...
+ ///
+ public override bool procCncAlarm()
+ {
+ bool fatto = false;
+ try
+ {
+#if false
+ // se ho allarmi li accodo...
+ if (allNcData.lastncerror != 0)
+ {
+
+ if (utils.CRI("loglevel") > 5)
+ {
+ lg.Info(string.Format("Allarmi CNC: {0} ", allNcData.lastncerror));
+ }
+ string alarmText = string.Format("CNC Alarm - Cod: {0}", allNcData.lastncerror);
+
+ // tolgo eventuali allarmi CNC...
+ allarmiCNC.Clear();
+ allarmiCNC.Add(allNcData.lastncerror.ToString(), alarmText);
+
+ //// 2017.05.09 gestione allarmi commentata
+ //mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, alarmText, allNcData.lastncerror.ToString(), "", "");
+ //// mostro in form!
+ //sb1.AppendLine(alarmText);
+ //parentForm.dataMonitor_1 += sb1.ToString();
+
+ //// 2017.05.09 gestione allarmi commentata
+ //// il codice è corretto (manca prima aprte codice + traduzione), se cerco di trovare oggett completo NON c'è, verificare con Andrea...
+ //sb1.AppendLine(string.Format("Allarmi CNC: {0}", allNcData.lastncerror));
+
+ //inizio = DateTime.Now;
+ //OSAI_ref.O_ReadCurrentErrorMsg(ref allarmiCNC);
+ //if (utils.CRB("recTime")) TimingData.addResult("R-CNC-ERROR-MSG", DateTime.Now.Subtract(inizio).Ticks);
+ //checkCNCAlarms();
+ }
+ else
+ {
+ allarmiCNC.Clear();
+ allarmiCNC = new Dictionary();
+ // 2017.05.09 gestione allarmi commentata
+ //allarmiCNC = new CMSCncLib.OPENcontrol.MSGERROR();
+ }
+ fatto = true;
+#endif
+ }
+ catch
+ { }
+ return fatto;
+ }
///
/// Gestione lettura dati manutenzione
///
- private void getMtzDataFromPlc()
+ public override bool getMtzDataFromPlc()
{
- if (maintData.Length > 0)
+ bool fatto = false;
+ try
{
- // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
- int memIndex = 524;
- uint[] tabDatiMtz = new uint[maintData.Length];
- inizio = DateTime.Now;
- SIEMENSMemRW_DWord(R, baseMemDb, memIndex, ref tabDatiMtz);
- if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtz.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
- // decodifico aree memoria secondo tab configurazione
- processMaintData(tabDatiMtz, maintData);
- // verifica se debba salvare e mostrare dati
- checkSavePersDataLayer();
- }
- }
- ///
- /// Gestione lettura dati status da PLC
- ///
- private void getStatusDataFromPlc()
- {
- if (statusData.Length > 0)
- {
- // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
- int memIndex = 1036;
- int numByte = 1 + (statusData.Length / 8);
- byte[] tabDatiStatus = new byte[numByte];
- inizio = DateTime.Now;
- SIEMENSMemRW_Byte(R, baseMemDb, memIndex, ref tabDatiStatus);
- if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiStatus", tabDatiStatus.Length), DateTime.Now.Subtract(inizio).Ticks);
- // decodifico aree memoria secondo tab configurazione
- processStatusData(tabDatiStatus, statusData);
+ if (maintData.Length > 0)
+ {
+ // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
+ int memIndex = 524;
+ uint[] tabDatiMtz = new uint[maintData.Length];
+ inizio = DateTime.Now;
+ SIEMENSMemRW_DWord(R, baseMemDb, memIndex, ref tabDatiMtz);
+ if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtz.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
+ // decodifico aree memoria secondo tab configurazione
+ processMaintData(tabDatiMtz, maintData);
+ // verifica se debba salvare e mostrare dati
+ checkSavePersDataLayer();
+ }
+ fatto = true;
}
+ catch
+ { }
+ return fatto;
}
///
/// Gestione lettura dati analogici
///
- private void getAnalogDataFromPlc()
+ public override bool getAnalogDataFromPlc()
{
- if (analogData.Length > 0)
+ bool fatto = false;
+ try
{
- // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
- int memIndex = 1052;
- uint[] tabDatiAnalog = new uint[analogData.Length];
- inizio = DateTime.Now;
- SIEMENSMemRW_DWord(R, baseMemDb, memIndex, ref tabDatiAnalog);
- if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiAnalog", tabDatiAnalog.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
- // decodifico aree memoria secondo tab configurazione
- processAnalogData(tabDatiAnalog, analogData);
+ if (analogData.Length > 0)
+ {
+ // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
+ int memIndex = 1052;
+ uint[] tabDatiAnalog = new uint[analogData.Length];
+ inizio = DateTime.Now;
+ SIEMENSMemRW_DWord(R, baseMemDb, memIndex, ref tabDatiAnalog);
+ if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiAnalog", tabDatiAnalog.Length * 4), DateTime.Now.Subtract(inizio).Ticks);
+ // decodifico aree memoria secondo tab configurazione
+ processAnalogData(tabDatiAnalog, analogData);
+ }
+ fatto = true;
}
+ catch
+ { }
+ return fatto;
}
///
- /// Leggo dati globali comuni (x path, assi...)
+ /// Gestione lettura dati status da PLC
///
- public override void getGlobalData()
+ public override bool getStatusDataFromPlc()
{
- base.getGlobalData();
- // svuoto...
- parentForm.dataMonitor_1 = "";
- parentForm.dataMonitor_2 = "";
- parentForm.dataMonitor_3 = "";
-
- // accodo dati path in DataMonitor......
- StringBuilder sb1 = new StringBuilder();
- StringBuilder sb2 = new StringBuilder();
-
- // dati base...
- sb1.AppendLine(string.Format("POWER {0}: | EmStop:{1:N3} | ProcSel: {2}", mPower.Value, mEStop.Value, mProcSel.Value));
-
-#if false
- // leggo dati globali...
- inizio = DateTime.Now;
- allDynData = SIEMENS_ref.getAllDynData();
- if (utils.CRB("recTime")) TimingData.addResult("R-ALL-DYN-DATA", DateTime.Now.Subtract(inizio).Ticks);
-
- FeedRate = allDynData.actf;
-
- int memIndex = 12000;
- byte[] PathData_mem = new byte[4];
- inizio = DateTime.Now;
- SIEMENSMemRW(R, baseMemDb, memIndex, ref PathData_mem);
- if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PathData", PathData_mem.Length), DateTime.Now.Subtract(inizio).Ticks);
-
- // 2016.07.19 mod con Fabio
- //JogRateOver = PathData_mem[0];
- FeedRateOver = PathData_mem[1];
- RapidOver = PathData_mem[2];
- SpeedRateOver = PathData_mem[3];
-#endif
-
- sb1.AppendLine(string.Format("FeedRate: {0} mm/min", FeedRate));
- sb1.AppendLine(string.Format("FeedRateOver: {0} %", FeedRateOver));
- sb1.AppendLine(string.Format("RapidOver: {0} %", RapidOver));
- sb1.AppendLine(string.Format("SpeedRateOver: {0} %", SpeedRateOver));
-
- // se ho allarmi li accodo...
- if (allDynData.alarm != 0)
+ bool fatto = false;
+ try
{
- sb1.AppendLine(string.Format("Allarmi CNC: {0}", allDynData.alarm));
-
-#if false
- inizio = DateTime.Now;
- allarmiCNC = SIEMENS_ref.getCncAlarm();
- if (utils.CRB("recTime")) TimingData.addResult("R-CNC-ALARMS", DateTime.Now.Subtract(inizio).Ticks);
-#endif
- checkCNCAlarms();
+ if (statusData.Length > 0)
+ {
+ // recupero i dati di manutenzione dall'area di memoria IN BLOCCO
+ int memIndex = 1036;
+ int numByte = 1 + (statusData.Length / 8);
+ byte[] tabDatiStatus = new byte[numByte];
+ inizio = DateTime.Now;
+ SIEMENSMemRW_Byte(R, baseMemDb, memIndex, ref tabDatiStatus);
+ if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiStatus", tabDatiStatus.Length), DateTime.Now.Subtract(inizio).Ticks);
+ // decodifico aree memoria secondo tab configurazione
+ processStatusData(tabDatiStatus, statusData);
+ }
+ fatto = true;
}
- else
- {
- allarmiCNC = new CMSCncLib.Focas1.ODBALMMSG2();
- }
-
- // accodo dati base!
- parentForm.dataMonitor_1 = sb1.ToString();
- // accodo dati UT...
- for (int i = 0; i < currAdpConf.nUnOp; i++)
- {
- sb2.AppendLine(string.Format("UT: ToolId {0} | VitaRes {1} | TipoVita {2} ", vettUnOp[i].mUnOpToolId.Value, vettUnOp[i].mUnOpVitaRes.Value, vettUnOp[i].mUnOpVitaResType.Value));
- }
- parentForm.dataMonitor_2 = sb2.ToString();
-
- // gestisco lettura dati manutenzione da PLC...
- getMtzDataFromPlc();
- // gestisco lettura dati analogici da PLC...
- getAnalogDataFromPlc();
- // gestisco lettura dati status da PLC...
- getStatusDataFromPlc();
+ catch
+ { }
+ return fatto;
}
+
+ #endregion
+
///
/// Carico file conf dati CMS
///