Inizia gestione primo path su OSAI
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user