diff --git a/MTC_Sim/.vs/MTC_Sim/v14/.suo b/MTC_Sim/.vs/MTC_Sim/v14/.suo index d663181..acdb068 100644 Binary files a/MTC_Sim/.vs/MTC_Sim/v14/.suo and b/MTC_Sim/.vs/MTC_Sim/v14/.suo differ diff --git a/MTC_Sim/MTC_Sim/AdapterFanuc.cs b/MTC_Sim/MTC_Sim/AdapterFanuc.cs index 30d62c7..a3be696 100644 --- a/MTC_Sim/MTC_Sim/AdapterFanuc.cs +++ b/MTC_Sim/MTC_Sim/AdapterFanuc.cs @@ -11,7 +11,7 @@ namespace MTC_Sim { protected FANUC FANUC_ref; - protected StatusFlag CurrStatus; + protected StatusBitMap CurrStatus; protected StFlag8 Status8; protected StFlag32 Status32; diff --git a/MTC_Sim/MTC_Sim/AdapterGeneric.cs b/MTC_Sim/MTC_Sim/AdapterGeneric.cs index 2a62627..d891cb3 100644 --- a/MTC_Sim/MTC_Sim/AdapterGeneric.cs +++ b/MTC_Sim/MTC_Sim/AdapterGeneric.cs @@ -500,7 +500,7 @@ namespace MTC_Sim /// /// Status flag /// - public StatusFlag STATUS_FLAG = 0; + public StatusBitMap STATUS_FLAG = 0; /// /// Variabili stato macchina principali /// diff --git a/MTC_Sim/MTC_Sim/CMS_MachineSim.cs b/MTC_Sim/MTC_Sim/CMS_MachineSim.cs index e0c86ac..6e0fad2 100644 --- a/MTC_Sim/MTC_Sim/CMS_MachineSim.cs +++ b/MTC_Sim/MTC_Sim/CMS_MachineSim.cs @@ -400,7 +400,7 @@ namespace MTC_Sim SysErr_03.Checked = !SysErr_03.Checked; break; } - agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.AL01; + agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL01; } // toggle 1 allarme PLC nello 0.4% dei casi if (rnd.Next(0, 1000) > 996) @@ -418,7 +418,7 @@ namespace MTC_Sim PlcErr_03.Checked = !PlcErr_03.Checked; break; } - agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.AL02; + agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL02; } // toggle 1 allarme CNC nello 0.3% dei casi if (rnd.Next(0, 1000) > 997) @@ -436,7 +436,7 @@ namespace MTC_Sim CncErr_03.Checked = !CncErr_03.Checked; break; } - agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.AL03; + agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL03; } @@ -685,51 +685,33 @@ namespace MTC_Sim { prodData answ = new prodData(); // carico da form - answ.ProgramName = program.Text; - answ.ProgrRow = PROG_ROW_NUM.Text; - answ.PartId = partID.Text; answ.Operator = OPERATOR_ID.Text; // variabili lette da + controlli answ.Status = stop.Enabled; answ.Power = Power; answ.AccTime = AccTime; - answ.EmrStop = estop.Checked; - if (automatic.Checked) answ.RunMode = "AUTOMATIC"; - else if (mdi.Checked) answ.RunMode = "MANUAL_DATA_INPUT"; - else if (edit.Checked) answ.RunMode = "EDIT"; - else answ.RunMode = "MANUAL"; - - if (running.Checked) answ.ExeMode = "ACTIVE"; - else if (feedhold.Checked) answ.ExeMode = "FEED_HOLD"; - else if (stopped.Checked) answ.ExeMode = "STOPPED"; - else if (ready.Checked) answ.ExeMode = "READY"; - + answ.EmrStop = estop.Checked; answ.FuncMode = ((KeyValuePair)functionalMode.SelectedItem).Key; answ.MessageCode = messageCode.Text; answ.MessageText = messageText.Text; - // pezzi - answ.pzOk = pzOk; - answ.pzKo = pzKo; - answ.pzTot = pzOk + pzKo; - - // parto vuoto con statusFlag... + // parto vuoto con StatusBitMap... agObj.STATUS_FLAG = 0; // aggiorno status flag in base a valori... - if (answ.EmrStop) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.ESTOP; - if (automatic.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.RM_AUTO; - else if (mdi.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.RM_MDI; - else if (edit.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.RM_EDIT; - else agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.RM_MANUAL; + if (answ.EmrStop) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.ESTOP; + if (automatic.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_AUTO; + else if (mdi.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_MDI; + else if (edit.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_EDIT; + else agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_MANUAL; - if (running.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.EM_RUN; - else if (feedhold.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.EM_FEEDHOLD; - else if (stopped.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.EM_STOP; - else if (ready.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.EM_READY; - if(answ.FuncMode!= "1") agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusFlag.HM; + if (running.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_RUN; + else if (feedhold.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_FEEDHOLD; + else if (stopped.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_STOP; + else if (ready.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_READY; + if(answ.FuncMode!= "1") agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.HM; // ritorno oggetto! return answ; @@ -851,6 +833,26 @@ namespace MTC_Sim { PathData answ = new PathData(); + // modifiche dati portati da macchina a path... + answ.ProgramName = program.Text; + answ.ProgrRow = PROG_ROW_NUM.Text; + answ.PartId = partID.Text; + answ.PathType = "LAVORO"; + // pezzi + answ.pzTot = pzOk + pzKo; + + if (automatic.Checked) answ.RunMode = "AUTOMATIC"; + else if (mdi.Checked) answ.RunMode = "MANUAL_DATA_INPUT"; + else if (edit.Checked) answ.RunMode = "EDIT"; + else answ.RunMode = "MANUAL"; + + if (running.Checked) answ.ExeMode = "ACTIVE"; + else if (feedhold.Checked) answ.ExeMode = "FEED_HOLD"; + else if (stopped.Checked) answ.ExeMode = "STOPPED"; + else if (ready.Checked) answ.ExeMode = "READY"; + + + answ.PathSel = cbPathSel.SelectedIndex; // FEED/SPEED answ.PathFeedrate = hsPathFeed.Value; diff --git a/MTC_Sim/MTC_Sim/utils.cs b/MTC_Sim/MTC_Sim/utils.cs index e5ccf00..537051b 100644 --- a/MTC_Sim/MTC_Sim/utils.cs +++ b/MTC_Sim/MTC_Sim/utils.cs @@ -69,7 +69,7 @@ namespace MTC_Sim /// valore da testare /// valore cercato, può essere un singolo valore o un insieme in modalità AND /// - public static bool IsSetAll(StatusFlag value, StatusFlag flag) + public static bool IsSetAll(StatusBitMap value, StatusBitMap flag) { return ((value & flag) == flag); } @@ -79,7 +79,7 @@ namespace MTC_Sim /// valore da testare /// valore cercato, può essere un singolo valore o un insieme in modalità OR /// - public static bool IsSetAny(StatusFlag value, StatusFlag flag) + public static bool IsSetAny(StatusBitMap value, StatusBitMap flag) { return ((value & flag) != 0); } @@ -186,8 +186,6 @@ namespace MTC_Sim public string RunMode; public string ExeMode; public int pzTot; - public int pzOk; - public int pzKo; public string ProgramName; public string ProgrRow; public string PartId; @@ -351,10 +349,10 @@ namespace MTC_Sim B31 = 1 << 31 } /// - /// StatusFlag: contiene il set di semafori/flag x status + allarmi (x classi) + /// StatusBitMap: contiene il set di semafori/flag x status + allarmi (x classi) /// [Flags] - public enum StatusFlag : int + public enum StatusBitMap : int { NONE = 0, ESTOP = 1 << 0,