Inizia gestione primo path su OSAI

This commit is contained in:
Samuele E. Locatelli
2017-03-24 18:27:36 +01:00
parent c8a0255960
commit 8ff8482047
3 changed files with 221 additions and 117 deletions
+1 -9
View File
@@ -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))
+215 -108
View File
@@ -817,9 +817,6 @@ namespace MTC_Adapter
/// </summary>
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();
}
}
/// <summary>
/// Processa status del path 01...
/// </summary>
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());
}
/// <summary>
/// Processa status del path 02...
/// </summary>
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());
}
/// <summary>
/// Salva i valori per il path indicato SE variati...
/// </summary>
/// <param name="idxPath"></param>
/// <param name="pathType"></param>
/// <param name="pathRunMode"></param>
/// <param name="pathExeMode"></param>
/// <param name="pathSubMode"></param>
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;
}
}
@@ -10,3 +10,8 @@ help: --> c:\program filesOSAI\WinNBI\UserLibrary\Document\*
01)
...bit-shift?!?
https://www.dotnetperls.com/shift