imbastito check status completo (allo stato attuale)
This commit is contained in:
@@ -114,31 +114,6 @@
|
||||
<DataItem category="CONDITION" id="Xsystem" type="SYSTEM"/>-->
|
||||
</DataItems>
|
||||
</Linear>
|
||||
<DataItems>
|
||||
<DataItem category="SAMPLE" id="Axis_04_PosAct" name="Pos asse I (4) actual" nativeUnits="DEGREE" subType="ACTUAL" type="ANGLE" units="DEGREE"/>
|
||||
<DataItem category="SAMPLE" id="Axis_04_PosTgt" name="Pos asse I (4) target" nativeUnits="DEGREE" subType="COMMANDED" type="ANGLE" units="DEGREE"/>
|
||||
<DataItem category="SAMPLE" id="Axis_04_Load" name="Load asse I (4)" nativeUnits="PERCENT" type="LOAD" units="PERCENT"/>
|
||||
<DataItem category="EVENT" id="Axis_04_MainProc" type="MESSAGE"/>
|
||||
<DataItem category="EVENT" id="Axis_04_IsMast" type="MESSAGE"/>
|
||||
<DataItem category="EVENT" id="Axis_04_MastId" type="MESSAGE"/>
|
||||
<DataItem category="EVENT" id="Axis_04_Dir" type="DIRECTION"/>
|
||||
<DataItem category="SAMPLE" id="Axis_04_FeedAct" name="ROT SPEED Asse I (4)" subType="ACTUAL" type="ROTARY_VELOCITY" units="REVOLUTION/MINUTE"/>
|
||||
<DataItem category="SAMPLE" id="Axis_04_FeedOver" name="ROT SPEED OVERRIDE Asse I (4)" subType="OVERRIDE" type="ROTARY_VELOCITY" nativeUnits="PERCENT" units="PERCENT"/>
|
||||
<DataItem category="SAMPLE" id="Axis_04_AccelAct" name="Accelerazione angolare asse I (4)" nativeUnits="DEGREE/SECOND^2" type="ANGULAR_ACCELERATION" units="DEGREE/SECOND^2"/>
|
||||
<DataItem category="SAMPLE" id="Axis_04_AccTime" name="Tempo impiego cumulato asse I (4)" nativeUnits="SECOND" type="ACCUMULATED_TIME" units="SECOND"/>
|
||||
<DataItem category="SAMPLE" id="Axis_04_Battery" name="Valore batteria asse I (4)" nativeUnits="VOLT" type="VOLTAGE" units="VOLT"/>
|
||||
|
||||
<!--<DataItem category="EVENT" id="cm" name="Cmode" type="ROTARY_MODE">
|
||||
<Constraints>
|
||||
<Value>SPINDLE</Value>
|
||||
<Value>INDEX</Value>
|
||||
</Constraints>
|
||||
</DataItem>
|
||||
<DataItem category="CONDITION" id="Cloadc" type="LOAD"/>
|
||||
<DataItem category="CONDITION" id="Csystem" type="SYSTEM"/>
|
||||
<DataItem category="SAMPLE" id="cl3" name="Cload" nativeUnits="PERCENT" type="LOAD" units="PERCENT"/>-->
|
||||
</DataItems>
|
||||
</Rotary>
|
||||
<Rotary id="Axis_04" name="Asse B">
|
||||
<DataItems>
|
||||
<DataItem category="SAMPLE" id="Axis_04_PosAct" name="Pos asse J (4) actual" nativeUnits="DEGREE" subType="ACTUAL" type="ANGLE" units="DEGREE"/>
|
||||
@@ -191,15 +166,6 @@
|
||||
<DataItem category="SAMPLE" id="cl3" name="Cload" nativeUnits="PERCENT" type="LOAD" units="PERCENT"/>-->
|
||||
</DataItems>
|
||||
</Rotary>
|
||||
<!--<Linear id="z1" name="Z">
|
||||
<DataItems>
|
||||
<DataItem category="SAMPLE" id="z2" name="Zact" nativeUnits="MILLIMETER" subType="ACTUAL" type="POSITION" units="MILLIMETER"/>
|
||||
<DataItem category="SAMPLE" id="z3" name="Zcom" nativeUnits="MILLIMETER" subType="COMMANDED" type="POSITION" units="MILLIMETER"/>
|
||||
<DataItem category="SAMPLE" id="z4" name="Zload" nativeUnits="PERCENT" type="LOAD" units="PERCENT"/>
|
||||
<DataItem category="CONDITION" id="Zloadc" type="LOAD"/>
|
||||
<DataItem category="CONDITION" id="Zsystem" type="SYSTEM"/>
|
||||
</DataItems>
|
||||
</Linear>-->
|
||||
</Components>
|
||||
</Axes>
|
||||
<Controller id="cn1" name="controller">
|
||||
|
||||
Binary file not shown.
@@ -43,11 +43,6 @@ namespace MTC_Sim
|
||||
// serve?!?
|
||||
base.getCurrProgramData();
|
||||
|
||||
// recupero programma da FORM!!!
|
||||
mProgram.Value = parentForm.datiProd.ProgramName;
|
||||
mProgRowNum.Value = parentForm.datiProd.ProgrRow;
|
||||
mPartId.Value = parentForm.datiProd.PartId;
|
||||
|
||||
mOperator.Value = parentForm.datiProd.Operator;
|
||||
|
||||
// recupero SEMPRE dati ulteriori: status ON/OFF, clock, ...
|
||||
@@ -57,9 +52,9 @@ namespace MTC_Sim
|
||||
mPower.Value = parentForm.datiProd.Power;
|
||||
}
|
||||
|
||||
public override void getCurrMode()
|
||||
public override void getStrobeStatus()
|
||||
{
|
||||
base.getCurrMode();
|
||||
base.getStrobeStatus();
|
||||
|
||||
// controllo bool allarmi...
|
||||
if (parentForm.datiProd.EmrStop)
|
||||
@@ -70,13 +65,7 @@ namespace MTC_Sim
|
||||
{
|
||||
mEStop.Value = "ARMED";
|
||||
}
|
||||
|
||||
// imposto RUN mode
|
||||
mMode.Value = parentForm.datiProd.RunMode;
|
||||
|
||||
// imposto EXE mode
|
||||
mExec.Value = parentForm.datiProd.ExeMode;
|
||||
|
||||
|
||||
// imposto func mode...
|
||||
mFunctionalMode.Value = parentForm.datiProd.FuncMode;
|
||||
|
||||
@@ -106,9 +95,9 @@ namespace MTC_Sim
|
||||
mAlarmGeneral.Add(Condition.Level.FAULT, string.Format("ERR_{0:###}: Errore {1}", allarme.Key, allarme.Value), string.Format("ERR_{0:###}_{1}", allarme.Key, allarme.Value));
|
||||
}
|
||||
|
||||
public override void getAlarms()
|
||||
public override void processStrobe()
|
||||
{
|
||||
base.getAlarms();
|
||||
base.processStrobe();
|
||||
|
||||
if (parentForm.systemAlarm.Count > 0)
|
||||
{
|
||||
@@ -156,6 +145,23 @@ namespace MTC_Sim
|
||||
vettPath[PtData.PathSel].mPathPosActI.Value = PtData.PathPosAct.i;
|
||||
vettPath[PtData.PathSel].mPathPosActJ.Value = PtData.PathPosAct.j;
|
||||
vettPath[PtData.PathSel].mPathPosActK.Value = PtData.PathPosAct.k;
|
||||
|
||||
|
||||
|
||||
// aggiunta x revisione 2016.05.05
|
||||
vettPath[PtData.PathSel].mPathType.Value = PtData.PathType;
|
||||
vettPath[PtData.PathSel].mPathPartId.Value = PtData.PartId;
|
||||
vettPath[PtData.PathSel].mPathPartCount.Value = PtData.pzTot;
|
||||
#if false
|
||||
vettPath[PtData.PathSel].mPathCodM.Value = PtData.co;
|
||||
vettPath[PtData.PathSel].mPathCodS.Value = PtData.PathType;
|
||||
vettPath[PtData.PathSel].mPathCodT.Value = PtData.PathType;
|
||||
#endif
|
||||
vettPath[PtData.PathSel].mPathRunMode.Value = PtData.RunMode;
|
||||
vettPath[PtData.PathSel].mPathExeMode.Value = PtData.ExeMode;
|
||||
vettPath[PtData.PathSel].mPathCurrProg.Value = PtData.ProgramName;
|
||||
vettPath[PtData.PathSel].mPathCurrProgRowNum.Value = PtData.ProgrRow;
|
||||
vettPath[PtData.PathSel].mPathActiveAxes.Value = PtData.ActiveAxes;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,26 +204,6 @@ namespace MTC_Sim
|
||||
vettAxis[AxData.AxisSel].mAxBattery.Value = AxData.AxisBattery;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupero dati da form...
|
||||
/// </summary>
|
||||
public override int getNumPzKo
|
||||
{
|
||||
get
|
||||
{
|
||||
return parentForm.datiProd.pzKo;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Recupero dati da form...
|
||||
/// </summary>
|
||||
public override int getNumPzOk
|
||||
{
|
||||
get
|
||||
{
|
||||
return parentForm.datiProd.pzOk;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,11 +28,130 @@ namespace MTC_Sim
|
||||
|
||||
string szStatusConnection = "";
|
||||
FANUC_ref.Connect(ref szStatusConnection);
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Effettuo lettura dei 16 byte di strobe/status
|
||||
/// </summary>
|
||||
public override void getStrobeStatus()
|
||||
{
|
||||
base.getStrobeStatus();
|
||||
|
||||
// se non sono connesso esco
|
||||
if (!FANUC_ref.Connected) return;
|
||||
|
||||
//CMSCncLib.App.Runtime.CreateRuntime();
|
||||
// hard coded: leggo 16 word R10516--> R10532
|
||||
FANUC_ref.F_RW_Byte(R, FANUC.MemType.R, 10516, ref Strobes);
|
||||
}
|
||||
/// <summary>
|
||||
/// processing strobe!
|
||||
/// </summary>
|
||||
public override void processStrobe()
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// processing strobe degli allarmi
|
||||
/// </summary>
|
||||
public override void processAlarm()
|
||||
{
|
||||
base.processAlarm();
|
||||
// controllo TUTTI i flag: se ce ne sono di alzati DEVO processare...
|
||||
}
|
||||
/// <summary>
|
||||
/// processing!
|
||||
/// </summary>
|
||||
public override void processStatus()
|
||||
{
|
||||
base.processStrobe();
|
||||
|
||||
//Runtime.NC.Initialize();
|
||||
//Config.Settings.Settings.TypeNC = CNC.NcType.FANUC;
|
||||
// update status da DW3
|
||||
|
||||
// EMstop: verifico BIT e di conseguenza imposto
|
||||
if(STRB_DW3.HasFlag(StFlag32.B00))
|
||||
{
|
||||
mEStop.Value = "TRIGGERED";
|
||||
}
|
||||
else
|
||||
{
|
||||
mEStop.Value = "ARMED";
|
||||
}
|
||||
|
||||
// HARD CODE: forzo path 1 (indice 0...)
|
||||
int idxPath = 0;
|
||||
// switch su run mode...
|
||||
switch (STRB_DW3)
|
||||
{
|
||||
case StFlag32.B01:
|
||||
vettPath[idxPath].mPathRunMode.Value = "AUTO";
|
||||
break;
|
||||
case StFlag32.B02:
|
||||
vettPath[idxPath].mPathRunMode.Value = "EDIT";
|
||||
break;
|
||||
case StFlag32.B03:
|
||||
vettPath[idxPath].mPathRunMode.Value = "MDI";
|
||||
break;
|
||||
case StFlag32.B04:
|
||||
vettPath[idxPath].mPathRunMode.Value = "REF";
|
||||
break;
|
||||
case StFlag32.B05:
|
||||
vettPath[idxPath].mPathRunMode.Value = "JOG";
|
||||
break;
|
||||
case StFlag32.B06:
|
||||
vettPath[idxPath].mPathRunMode.Value = "JOGINC";
|
||||
break;
|
||||
case StFlag32.B07:
|
||||
vettPath[idxPath].mPathRunMode.Value = "HANDLE";
|
||||
break;
|
||||
}
|
||||
// switch su EXE mode...
|
||||
switch (STRB_DW3)
|
||||
{
|
||||
case StFlag32.B08:
|
||||
vettPath[idxPath].mPathExeMode.Value = "RUN";
|
||||
break;
|
||||
case StFlag32.B09:
|
||||
vettPath[idxPath].mPathExeMode.Value = "READY";
|
||||
break;
|
||||
case StFlag32.B10:
|
||||
vettPath[idxPath].mPathExeMode.Value = "HOLD";
|
||||
break;
|
||||
case StFlag32.B11:
|
||||
vettPath[idxPath].mPathExeMode.Value = "FEEDHOLD";
|
||||
break;
|
||||
}
|
||||
|
||||
// verifico tipo path...
|
||||
if (STRB_DW3.HasFlag(StFlag32.B12))
|
||||
{
|
||||
vettPath[idxPath].mPathType.Value = "LAVORO";
|
||||
}
|
||||
else
|
||||
{
|
||||
vettPath[idxPath].mPathType.Value = "ASSERV";
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if false
|
||||
|
||||
// IPOTESI DA VERIFICARE!!!
|
||||
// leggo primo byte, i cui bit indicano run mode (3450.0 --> 3450.7)
|
||||
RunStatus = (StFlag8)status[0];
|
||||
// leggo primo byte, i cui bit indicano run mode (3451.0 --> 3451.7)
|
||||
ExeStatus = (StFlag8)status[1];
|
||||
|
||||
// se devo prendere sotto insiemi di byte --> BitConverter
|
||||
//BitConverter.ToUInt32
|
||||
|
||||
// check bit 0... SE è presente
|
||||
Status8.Has(StFlag8.B0);
|
||||
|
||||
// check bit 0... SE è SOLO QUELLO
|
||||
Status8.Is(StFlag8.B0);
|
||||
|
||||
// check bit 18...
|
||||
Status8.Has(StFlag32.B18);
|
||||
#endif
|
||||
}
|
||||
|
||||
public override void getCurrProgramData()
|
||||
|
||||
+173
-109
@@ -479,6 +479,7 @@ namespace MTC_Sim
|
||||
public bool R = false;
|
||||
public bool W = true;
|
||||
|
||||
protected bool adpRunning;
|
||||
|
||||
/// <summary>
|
||||
/// adapter globale
|
||||
@@ -489,6 +490,95 @@ namespace MTC_Sim
|
||||
|
||||
#region altri oggetti
|
||||
|
||||
// 16 bit di strobe (4 word da 32 bit di flags...)
|
||||
public byte[] Strobes = new byte[16];
|
||||
// 16 bit di strobe in risposta (4 word da 32 bit di flags...)
|
||||
public byte[] Acknowl = new byte[16];
|
||||
|
||||
/// <summary>
|
||||
/// Prima word di strobe da array flag completo
|
||||
/// </summary>
|
||||
public StFlag32 STRB_DW0
|
||||
{
|
||||
get
|
||||
{
|
||||
//byte[] answ = new byte[4];
|
||||
//answ = (byte[])Strobes.Skip(0).Take(4);
|
||||
return (StFlag32)BitConverter.ToUInt32(Strobes, 0);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Seconda word di strobe da array flag completo
|
||||
/// </summary>
|
||||
public StFlag32 STRB_DW1
|
||||
{
|
||||
get
|
||||
{
|
||||
return (StFlag32)BitConverter.ToUInt32(Strobes, 4);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Terza word di strobe da array flag completo
|
||||
/// </summary>
|
||||
public StFlag32 STRB_DW2
|
||||
{
|
||||
get
|
||||
{
|
||||
return (StFlag32)BitConverter.ToUInt32(Strobes, 8);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Quarta word di strobe da array flag completo
|
||||
/// </summary>
|
||||
public StFlag32 STRB_DW3
|
||||
{
|
||||
get
|
||||
{
|
||||
return (StFlag32)BitConverter.ToUInt32(Strobes, 12);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Prima word di ACKnowledgment da array flag completo
|
||||
/// </summary>
|
||||
public StFlag32 ACK_DW0
|
||||
{
|
||||
get
|
||||
{
|
||||
return (StFlag32)BitConverter.ToUInt32(Acknowl, 0);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Seconda word di ACKnowledgment da array flag completo
|
||||
/// </summary>
|
||||
public StFlag32 ACK_DW1
|
||||
{
|
||||
get
|
||||
{
|
||||
return (StFlag32)BitConverter.ToUInt32(Acknowl, 4);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Terza word di ACKnowledgment da array flag completo
|
||||
/// </summary>
|
||||
public StFlag32 ACK_DW2
|
||||
{
|
||||
get
|
||||
{
|
||||
return (StFlag32)BitConverter.ToUInt32(Acknowl, 8);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Quarta word di ACKnowledgment da array flag completo
|
||||
/// </summary>
|
||||
public StFlag32 ACK_DW3
|
||||
{
|
||||
get
|
||||
{
|
||||
return (StFlag32)BitConverter.ToUInt32(Acknowl, 12);
|
||||
}
|
||||
}
|
||||
|
||||
#if true
|
||||
/// <summary>
|
||||
/// Strobe mask PLC
|
||||
/// </summary>
|
||||
@@ -504,7 +594,8 @@ namespace MTC_Sim
|
||||
/// <summary>
|
||||
/// Variabili stato macchina principali
|
||||
/// </summary>
|
||||
public StFlag8 ST_MACCH = 0;
|
||||
public StFlag8 ST_MACCH = 0;
|
||||
#endif
|
||||
|
||||
|
||||
public List<string> codaM = new List<string>();
|
||||
@@ -544,58 +635,6 @@ namespace MTC_Sim
|
||||
/// </summary>
|
||||
public Event mOperator = new Event("OperatorId");
|
||||
|
||||
#if true
|
||||
|
||||
/// <summary>
|
||||
/// CURR_PROG - programma in esecuzione
|
||||
/// </summary>
|
||||
public Event mProgram = new Event("CurrProg");
|
||||
/// <summary>
|
||||
/// CURR_PROG_ROWNUM - programma in esecuzione
|
||||
/// </summary>
|
||||
public Event mProgRowNum = new Event("CurrProg_RowNum");
|
||||
/// <summary>
|
||||
/// PartId - particolare prodotto
|
||||
/// </summary>
|
||||
public Event mPartId = new Event("PartID");
|
||||
|
||||
/// <summary>
|
||||
/// D.D1.P1.RUN_MODE - modalità esecuzione
|
||||
/// </summary>
|
||||
public Event mMode = new Event("RUN_MODE");
|
||||
/// <summary>
|
||||
/// D.D1.P1.PATH_STATUS - status macchina
|
||||
/// </summary>
|
||||
public Event mExec = new Event("EXECUTION");
|
||||
|
||||
/// <summary>
|
||||
/// M_CODE
|
||||
/// </summary>
|
||||
public Event mCod_M = new Event("Cod_M");
|
||||
/// <summary>
|
||||
/// S_CODE
|
||||
/// </summary>
|
||||
public Event mCod_S = new Event("Cod_S");
|
||||
/// <summary>
|
||||
/// T_CODE
|
||||
/// </summary>
|
||||
public Event mCod_T = new Event("Cod_T");
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Pezzi totali
|
||||
/// </summary>
|
||||
public Event mPz_Tot = new Event("PZ_TOT");
|
||||
/// <summary>
|
||||
/// Pezzi OK
|
||||
/// </summary>
|
||||
public Event mPz_Ok = new Event("PZ_OK");
|
||||
/// <summary>
|
||||
/// Pezzi KO
|
||||
/// </summary>
|
||||
public Event mPz_Ko = new Event("PZ_KO");
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// modalità funzionale
|
||||
/// </summary>
|
||||
@@ -660,22 +699,9 @@ namespace MTC_Sim
|
||||
mAdapter.AddDataItem(mEStop);
|
||||
|
||||
// programma e produzione
|
||||
mAdapter.AddDataItem(mProgram);
|
||||
mAdapter.AddDataItem(mProgRowNum);
|
||||
mAdapter.AddDataItem(mPartId);
|
||||
mAdapter.AddDataItem(mPz_Tot);
|
||||
mAdapter.AddDataItem(mPz_Ok);
|
||||
mAdapter.AddDataItem(mPz_Ko);
|
||||
mAdapter.AddDataItem(mOperator);
|
||||
|
||||
// codici speciali M/S/T
|
||||
mAdapter.AddDataItem(mCod_M);
|
||||
mAdapter.AddDataItem(mCod_S);
|
||||
mAdapter.AddDataItem(mCod_T);
|
||||
|
||||
// modalità esecutiva e funzionale
|
||||
mAdapter.AddDataItem(mMode);
|
||||
mAdapter.AddDataItem(mExec);
|
||||
mAdapter.AddDataItem(mFunctionalMode);
|
||||
|
||||
// Pompe vuoto
|
||||
@@ -731,7 +757,6 @@ namespace MTC_Sim
|
||||
for (int i = 0; i < adpConf.nPath; i++)
|
||||
{
|
||||
vettPath[i] = new Path(adpConf.Path[i]);
|
||||
//mAdapter.AddDataItem(vettPath[i].mPathAlias);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathFeed);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathFeedOver);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathRapidOver);
|
||||
@@ -741,6 +766,18 @@ namespace MTC_Sim
|
||||
mAdapter.AddDataItem(vettPath[i].mPathPosActI);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathPosActJ);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathPosActK);
|
||||
// aggiunta x revisione 2016.05.05
|
||||
mAdapter.AddDataItem(vettPath[i].mPathType);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathPartId);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathPartCount);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathCodM);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathCodS);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathCodT);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathRunMode);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathExeMode);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathCurrProg);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathCurrProgRowNum);
|
||||
mAdapter.AddDataItem(vettPath[i].mPathActiveAxes);
|
||||
}
|
||||
// UnOp
|
||||
vettUnOp = new UnOp[adpConf.nUnOp];
|
||||
@@ -803,6 +840,8 @@ namespace MTC_Sim
|
||||
mAdapter.Port = port;
|
||||
mAdapter.Start();
|
||||
|
||||
// resetto running flag...
|
||||
adpRunning = false;
|
||||
|
||||
mAlarmSystem.Normal();
|
||||
mAlarmCNC.Normal();
|
||||
@@ -826,47 +865,55 @@ namespace MTC_Sim
|
||||
/// <param name="ciclo"></param>
|
||||
public void gaterAndSend(gatherCycle ciclo)
|
||||
{
|
||||
// avvio fase raccolta dati
|
||||
mAdapter.Begin();
|
||||
|
||||
// parte che eseguo SEMPRE: strobe/status
|
||||
// dati stato macchina (allarmi, modalità RUN/EXEC, ...)
|
||||
getCurrMode();
|
||||
|
||||
// gestione allarmi
|
||||
getAlarms();
|
||||
|
||||
if (ciclo == gatherCycle.HF)
|
||||
// controllo non sia già in esecuzione...
|
||||
if (!adpRunning)
|
||||
{
|
||||
adpRunning = true;
|
||||
|
||||
// gestisco strobe...
|
||||
// avvio fase raccolta dati
|
||||
mAdapter.Begin();
|
||||
|
||||
// di conseguenza leggo valori variati
|
||||
// parte che eseguo SEMPRE: RECUPERO stato di tutti gli strobe/status
|
||||
getStrobeStatus();
|
||||
|
||||
// fix codici M/S/T
|
||||
getCodMST();
|
||||
// acquisizione degli status
|
||||
processStatus();
|
||||
// processing degli strobes di allarme
|
||||
processAlarm();
|
||||
|
||||
// processing condizionale x parti non sempre valutate, 3 cicli a frequenza decrescente (HF/MF/LF)
|
||||
if (ciclo == gatherCycle.HF)
|
||||
{
|
||||
// processo strobe restanti (non allarmi)
|
||||
processStrobe();
|
||||
// fix codici M/S/T
|
||||
getCodMST();
|
||||
}
|
||||
else if (ciclo == gatherCycle.MF)
|
||||
{
|
||||
// leggo parametri a media freq (path, assi)
|
||||
getPath();
|
||||
|
||||
getUnOp();
|
||||
|
||||
getAxis();
|
||||
}
|
||||
else
|
||||
{
|
||||
// leggo parametri da config file
|
||||
getConfigParam();
|
||||
// bassa freq leggo altri valori...
|
||||
getProduzione();
|
||||
///acquisisco dati su programma in esecuzione e dati generali (stato, orologio, power...)
|
||||
getCurrProgramData();
|
||||
}
|
||||
|
||||
// INVIO dati variati!
|
||||
mAdapter.SendChanged();
|
||||
|
||||
// tolgo flag running
|
||||
adpRunning = false;
|
||||
}
|
||||
else if (ciclo == gatherCycle.MF)
|
||||
{
|
||||
// leggo parametri a media freq (path, assi)
|
||||
getPath();
|
||||
|
||||
getUnOp();
|
||||
|
||||
getAxis();
|
||||
}
|
||||
else
|
||||
{
|
||||
// leggo parametri da config file
|
||||
getConfigParam();
|
||||
// bassa freq leggo altri valori...
|
||||
getProduzione();
|
||||
///acquisisco dati su programma in esecuzione e dati generali (stato, orologio, power...)
|
||||
getCurrProgramData();
|
||||
}
|
||||
|
||||
// INVIO dati variati!
|
||||
mAdapter.SendChanged();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -899,9 +946,23 @@ namespace MTC_Sim
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// recupero allarmi
|
||||
/// verifica gli status attivi
|
||||
/// </summary>
|
||||
public virtual void getAlarms()
|
||||
public virtual void processStatus()
|
||||
{
|
||||
// da gestire su ogni adapter...
|
||||
}
|
||||
/// <summary>
|
||||
/// processo tutti gli strobe attivi
|
||||
/// </summary>
|
||||
public virtual void processStrobe()
|
||||
{
|
||||
// da gestire su ogni adapter...
|
||||
}
|
||||
/// <summary>
|
||||
/// processo gli strobe degli allarmi
|
||||
/// </summary>
|
||||
public virtual void processAlarm()
|
||||
{
|
||||
// da gestire su ogni adapter...
|
||||
}
|
||||
@@ -932,11 +993,11 @@ namespace MTC_Sim
|
||||
// da gestire su ogni adapter...
|
||||
}
|
||||
/// <summary>
|
||||
/// dati relativi al RUN mode
|
||||
/// recupero iniziale di TUTTI gli strobes/status attivi
|
||||
/// </summary>
|
||||
public virtual void getCurrMode()
|
||||
public virtual void getStrobeStatus()
|
||||
{
|
||||
// da gestire su ogni adapter...
|
||||
// da gestire su ogni adapter... legge tutto array STROBE!!!
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -1034,6 +1095,8 @@ namespace MTC_Sim
|
||||
|
||||
public void checkProd()
|
||||
{
|
||||
// non usiamo strobe x produzione...b
|
||||
#if false
|
||||
if (utils.IsSetAny(STROBE_PLC, Strobe.PZ_OK | Strobe.PZ_KO))
|
||||
{
|
||||
// leggo i valori pezzi OK / KO e li salvo (insieme a tot...)
|
||||
@@ -1050,7 +1113,8 @@ namespace MTC_Sim
|
||||
// resetto eventuali flag di lettura...
|
||||
if (utils.IsSetAll(STROBE_ADP, Strobe.PZ_OK)) STROBE_ADP -= Strobe.PZ_OK;
|
||||
if (utils.IsSetAll(STROBE_ADP, Strobe.PZ_KO)) STROBE_ADP -= Strobe.PZ_KO;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
/// <summary>
|
||||
/// recupera pezzi OK (fare override!)
|
||||
|
||||
@@ -851,7 +851,7 @@ namespace MTC_Sim
|
||||
else if (stopped.Checked) answ.ExeMode = "STOPPED";
|
||||
else if (ready.Checked) answ.ExeMode = "READY";
|
||||
|
||||
|
||||
answ.ActiveAxes = "1 2 3 4 5 6"; // lascio sempre tutti attivi...
|
||||
|
||||
answ.PathSel = cbPathSel.SelectedIndex;
|
||||
// FEED/SPEED
|
||||
|
||||
@@ -189,6 +189,7 @@ namespace MTC_Sim
|
||||
public string ProgramName;
|
||||
public string ProgrRow;
|
||||
public string PartId;
|
||||
public string ActiveAxes;
|
||||
|
||||
public int PathFeedrate;
|
||||
public int PathFeedrateOver;
|
||||
|
||||
Reference in New Issue
Block a user