diff --git a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs
index 2c3653b..bafbcab 100644
--- a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs
+++ b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs
@@ -752,15 +752,7 @@ namespace MTC_Adapter
{
vettPath[idxPath].mPathRunMode.Value = runMode;
}
-
- //EsecuzioneRUN-- > "ACTIVE"
- //EsecuzioneREADY-- > "READY"
- //EsecuzioneSTOP-- > "STOPPED"
- //EsecuzioneFEEDHOLD-- > "FEED_HOLD"
- //EsecuzioneOSTOP-- > "OPTIONAL_STOP"
- //EsecuzionePSTOP-- > "PROGRAM_STOPPED"
- //EsecuzionePCOMP-- > "PROGRAM_COMPLETED"
-
+
// switch su EXE mode...
string exeMode = "";
if (STRB_DW2.HasFlag(StFlag32.B09))
diff --git a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs
index aeec240..50013a9 100644
--- a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs
+++ b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs
@@ -817,9 +817,6 @@ namespace MTC_Adapter
///
public override void processStatus()
{
-
- // rifare con bit-shift...
- // https://www.dotnetperls.com/shift
// update status da DW2/ DW3
// EMstop: verifico BIT e di conseguenza imposto
@@ -832,94 +829,8 @@ namespace MTC_Adapter
mEStop.Value = "ARMED";
}
- // HARD CODE: forzo path 1 (indice 0...)
- int idxPath = 0;
-
- // DEFINIZIONI MODI....
- //ModoAUTO-- > "AUTOMATIC"
- //ModoEDIT-- > "EDIT"
- //ModoMDI-- > "MANUAL_DATA_INPUT"
- //ModoMAN-- > "MANUAL"
- //ModoSEMI-- > "SEMI_AUTO"
- //EsecuzioneRUN-- > "ACTIVE"
- //EsecuzioneREADY-- > "READY"
- //EsecuzioneSTOP-- > "STOPPED"
- //EsecuzioneFEEDHOLD-- > "FEED_HOLD"
- //EsecuzioneOSTOP-- > "OPTIONAL_STOP"
- //EsecuzionePSTOP-- > "PROGRAM_STOPPED"
- //EsecuzionePCOMP-- > "PROGRAM_COMPLETED"
-
- // switch su run mode...
- if (STRB_DW2.HasFlag(StFlag32.B01))
- {
- vettPath[idxPath].mPathRunMode.Value = "AUTOMATIC";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B02))
- {
- vettPath[idxPath].mPathRunMode.Value = "EDIT";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B03))
- {
- vettPath[idxPath].mPathRunMode.Value = "MANUAL_DATA_INPUT";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B04))
- {
- vettPath[idxPath].mPathRunMode.Value = "MANUAL";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B05))
- {
- vettPath[idxPath].mPathRunMode.Value = "MANUAL"; // "JOG";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B06))
- {
- vettPath[idxPath].mPathRunMode.Value = "MANUAL"; //"JOGINC";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B07))
- {
- vettPath[idxPath].mPathRunMode.Value = "MANUAL"; //"HANDLE";
- }
-
- // switch su EXE mode...
- string exeMode = "";
- if (STRB_DW2.HasFlag(StFlag32.B08))
- {
- exeMode = "ACTIVE";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B09))
- {
- exeMode = "READY";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B10))
- {
- exeMode = "STOPPED"; // "HOLD";
- }
- else if (STRB_DW2.HasFlag(StFlag32.B11))
- {
- exeMode = "FEED_HOLD"; // "FEEDHOLD";
- }
- //// appunto: modi da creare
- //INTERRUPTED(da creare)
- //OPTIONAL_STOP(da creare)
- //PROGRAM_STOPPED(da creare)
- //PROGRAM_COMPLETED(da creare)
-
- if (vettPath[idxPath].mPathExeMode.Value.ToString() != exeMode)
- {
- vettPath[idxPath].mPathExeMode.Value = exeMode;
- }
-
- // verifico tipo path...
- if (STRB_DW2.HasFlag(StFlag32.B12))
- {
- vettPath[idxPath].mPathType.Value = "LAVORO";
- }
- else
- {
- vettPath[idxPath].mPathType.Value = "ASSERV";
- }
-
// verifico POWER ON...
- if (STRB_DW2.HasFlag(StFlag32.B13))
+ if (STRB_DW2.HasFlag(StFlag32.B01))
{
mPower.Value = "ON";
}
@@ -928,23 +839,101 @@ namespace MTC_Adapter
mPower.Value = "OFF";
}
- // processo eventuali altri bit status non noti...
- string UnkStatus = "";
- // cerco i bit alzati --> aggiungo in stringa!
- for (int i = 14; i < 32; i++)
+ // Processo selezionato 0=P1, 1=P2
+ if (STRB_DW2.HasFlag(StFlag32.B02))
{
- // converto! e aggiungo allarmi sollevati al corretto controller allarmi...
- if (STRB_DW2.HasFlag((StFlag32)Math.Pow(2, i)))
- {
- UnkStatus += string.Format(" [STATUS_{0:00}] ", i);
- }
+ mPower.Value = "P2";
+ }
+ else
+ {
+ mPower.Value = "P1";
+ }
+
+ // processo ora i dai dei path... di sicuro il primo
+ procPath01_Status();
+ //...e se c'รจ pure il secondo...
+ if (currAdpConf.nPath > 1)
+ {
+ // anche il secondo!
+ procPath02_Status();
+ }
+
+ }
+ ///
+ /// Processa status del path 01...
+ ///
+ private void procPath01_Status()
+ {
+ // HARD CODE: forzo path 1 (indice 0...) x iniziare...
+ int idxPath = 0;
+ string pathType = "";
+ // verifico tipo processo path...
+ if (STRB_DW2.HasFlag(StFlag32.B03))
+ {
+ vettPath[idxPath].mPathType.Value = "LAVORO";
+ }
+ else
+ {
+ vettPath[idxPath].mPathType.Value = "ASSERV";
+ }
+
+ // switch su RUN mode...
+ string runMode = "";
+ if (STRB_DW2.HasFlag(StFlag32.B04))
+ {
+ runMode = "AUTOMATIC";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B05))
+ {
+ runMode = "EDIT";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B06))
+ {
+ runMode = "MANUAL_DATA_INPUT";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B07))
+ {
+ runMode = "MANUAL";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B08))
+ {
+ runMode = "SEMI_AUTO";
+ }
+
+ // switch su EXE mode...
+ string exeMode = "";
+ if (STRB_DW2.HasFlag(StFlag32.B09))
+ {
+ exeMode = "ACTIVE";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B10))
+ {
+ exeMode = "READY";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B11))
+ {
+ exeMode = "STOPPED";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B12))
+ {
+ exeMode = "FEED_HOLD";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B13))
+ {
+ exeMode = "OPTIONAL_STOP";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B14))
+ {
+ exeMode = "PROGRAM_STOPPED";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B15))
+ {
+ exeMode = "PROGRAM_COMPLETED";
}
- // invio comunque...
- mUnkStatus.Value = UnkStatus.Trim();
// inizializzo SEMPRE a vuoto...
string SubMode = "";
- // verifico sulla STRB_DW3 i submode che POTREBBERO essere tutti sovrapposti...
+ // verifico sulla STRB_DW3 i submode che POTREBBERO tutti sovrapposti...
if (STRB_DW3 != StFlag32.NONE)
{
// cerco i bit alzati --> aggiungo relativo submode!
@@ -953,16 +942,134 @@ namespace MTC_Adapter
// converto! e aggiungo allarmi sollevati al corretto controller allarmi...
if (STRB_DW3.HasFlag((StFlag32)Math.Pow(2, i)))
{
- SubMode += string.Format(" [{0}]", elencoSubMode[i.ToString()]);
+ SubMode += string.Format(" [P01_{0}]", elencoSubMode[i.ToString()]);
}
}
-
}
- // 2017.01.16 INVIO SOLO SE CAMBIA:..
- if (vettPath[idxPath].mPathSubMode.Value.ToString() != SubMode.Trim())
+
+ // salvo in blocco le info ricostruite x path!
+ savePathData(idxPath, pathType, runMode, exeMode, SubMode.Trim());
+ }
+ ///
+ /// Processa status del path 02...
+ ///
+ private void procPath02_Status()
+ {
+ // HARD CODE: forzo path 2 (indice 1)...
+ int idxPath = 1;
+ string pathType = "";
+ // verifico tipo processo path...
+ if (STRB_DW2.HasFlag(StFlag32.B03))
{
- // INVIO SEMPRE (x prendere il reset/fronte discesa)...
- vettPath[idxPath].mPathSubMode.Value = SubMode.Trim();
+ vettPath[idxPath].mPathType.Value = "LAVORO";
+ }
+ else
+ {
+ vettPath[idxPath].mPathType.Value = "ASSERV";
+ }
+
+ // switch su RUN mode...
+ string runMode = "";
+ if (STRB_DW2.HasFlag(StFlag32.B04))
+ {
+ runMode = "AUTOMATIC";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B05))
+ {
+ runMode = "EDIT";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B06))
+ {
+ runMode = "MANUAL_DATA_INPUT";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B07))
+ {
+ runMode = "MANUAL";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B08))
+ {
+ runMode = "SEMI_AUTO";
+ }
+
+ // switch su EXE mode...
+ string exeMode = "";
+ if (STRB_DW2.HasFlag(StFlag32.B09))
+ {
+ exeMode = "ACTIVE";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B10))
+ {
+ exeMode = "READY";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B11))
+ {
+ exeMode = "STOPPED";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B12))
+ {
+ exeMode = "FEED_HOLD";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B13))
+ {
+ exeMode = "OPTIONAL_STOP";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B14))
+ {
+ exeMode = "PROGRAM_STOPPED";
+ }
+ else if (STRB_DW2.HasFlag(StFlag32.B15))
+ {
+ exeMode = "PROGRAM_COMPLETED";
+ }
+
+ // inizializzo SEMPRE a vuoto...
+ string SubMode = "";
+ // verifico sulla STRB_DW3 i submode che POTREBBERO tutti sovrapposti...
+ if (STRB_DW3 != StFlag32.NONE)
+ {
+ // cerco i bit alzati --> aggiungo relativo submode!
+ for (int i = 0; i < 32; i++)
+ {
+ // converto! e aggiungo allarmi sollevati al corretto controller allarmi...
+ if (STRB_DW3.HasFlag((StFlag32)Math.Pow(2, i)))
+ {
+ SubMode += string.Format(" [P01_{0}]", elencoSubMode[i.ToString()]);
+ }
+ }
+ }
+
+ // salvo in blocco le info ricostruite x path!
+ savePathData(idxPath, pathType, runMode, exeMode, SubMode.Trim());
+ }
+ ///
+ /// Salva i valori per il path indicato SE variati...
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected void savePathData(int idxPath, string pathType, string pathRunMode, string pathExeMode, string pathSubMode)
+ {
+ // salvo type
+ if (vettPath[idxPath].mPathType.Value.ToString() != pathType)
+ {
+ vettPath[idxPath].mPathType.Value = pathType;
+ }
+ // salvo RUN mode
+ if (vettPath[idxPath].mPathRunMode.Value.ToString() != pathRunMode)
+ {
+ vettPath[idxPath].mPathRunMode.Value = pathRunMode;
+ }
+ // salvo EXE mode
+ if (vettPath[idxPath].mPathExeMode.Value.ToString() != pathExeMode)
+ {
+ vettPath[idxPath].mPathExeMode.Value = pathExeMode;
+ }
+ // salvo i submode..
+ if (vettPath[idxPath].mPathSubMode.Value.ToString() != pathSubMode)
+ {
+ vettPath[idxPath].mPathSubMode.Value = pathSubMode;
}
}
diff --git a/MTC_Adapter/MTC_Adapter/Resources/CMS/Appunti CMS OSAI.txt b/MTC_Adapter/MTC_Adapter/Resources/CMS/Appunti CMS OSAI.txt
index b1e5307..bb48fff 100644
--- a/MTC_Adapter/MTC_Adapter/Resources/CMS/Appunti CMS OSAI.txt
+++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/Appunti CMS OSAI.txt
@@ -10,3 +10,8 @@ help: --> c:\program filesOSAI\WinNBI\UserLibrary\Document\*
01)
+
+...bit-shift?!?
+https://www.dotnetperls.com/shift
+
+