diff --git a/MTC_Sim/.vs/MTC_Sim/v14/.suo b/MTC_Sim/.vs/MTC_Sim/v14/.suo index 98c81f7..6780cbc 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/AdapterDemo.cs b/MTC_Sim/MTC_Sim/AdapterDemo.cs index 4f9481f..31df5e3 100644 --- a/MTC_Sim/MTC_Sim/AdapterDemo.cs +++ b/MTC_Sim/MTC_Sim/AdapterDemo.cs @@ -27,9 +27,9 @@ namespace MTC_Sim mProgRowNum.Value = parentForm.datiProd.ProgrRow; mPartId.Value = parentForm.datiProd.PartId; - mPz_Tot.Value = parentForm.datiProd.pzTot; - mPz_Ok.Value = parentForm.datiProd.pzOk; - mPz_Ko.Value = parentForm.datiProd.pzKo; + //mPz_Tot.Value = parentForm.datiProd.pzTot; + //mPz_Ok.Value = parentForm.datiProd.pzOk; + //mPz_Ko.Value = parentForm.datiProd.pzKo; mOperator.Value = parentForm.datiProd.Operator; } @@ -98,5 +98,25 @@ namespace MTC_Sim mxLoad.Value = parentForm.datiProd.xLoad; mcLoad.Value = parentForm.datiProd.cLoad; } + /// + /// Recupero dati da form... + /// + public override int getNumPzKo + { + get + { + return parentForm.datiProd.pzKo; + } + } + /// + /// Recupero dati da form... + /// + public override int getNumPzOk + { + get + { + return parentForm.datiProd.pzOk; + } + } } } diff --git a/MTC_Sim/MTC_Sim/AdapterGeneric.cs b/MTC_Sim/MTC_Sim/AdapterGeneric.cs index 7005a0d..0152fe0 100644 --- a/MTC_Sim/MTC_Sim/AdapterGeneric.cs +++ b/MTC_Sim/MTC_Sim/AdapterGeneric.cs @@ -275,6 +275,8 @@ namespace MTC_Sim // fix codici M/S/T getCodMST(); + getProduzione(); + // fix dati x ulteriori (allarmi, modalità RUN/EXEC, ...) getCurrMode(); @@ -288,6 +290,12 @@ namespace MTC_Sim mAdapter.SendChanged(); } + private void getProduzione() + { + // SE presente recupero dati produzione + checkProd(); + } + /// /// recupero dati ASSI /// @@ -343,11 +351,55 @@ namespace MTC_Sim { // da gestire su ogni adapter... } - + #endregion #region area metodi comunicazione con PLC/CNC + + public void checkProd() + { + if (utils.IsSetAny(STROBE_PLC, Strobe.PZ_OK | Strobe.PZ_KO)) + { + // leggo i valori pezzi OK / KO e li salvo (insieme a tot...) + mPz_Ok.Value = getNumPzOk; + mPz_Ko.Value = getNumPzKo; + mPz_Tot.Value = getNumPzOk + getNumPzKo; + // alzo flag lettura... + if (utils.IsSetAll(STROBE_PLC, Strobe.PZ_OK)) STROBE_ADP = STROBE_ADP | Strobe.PZ_OK; + if (utils.IsSetAll(STROBE_PLC, Strobe.PZ_KO)) STROBE_ADP = STROBE_ADP | Strobe.PZ_KO; + + } + else + { + // 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; + } + } + /// + /// recupera pezzi OK (fare override!) + /// + public virtual int getNumPzOk + { + get + { + int answ = 0; + return answ; + } + } + /// + /// recupera pezzi KO (fare override!) + /// + public virtual int getNumPzKo + { + get + { + int answ = 0; + return answ; + } + } + public void checkCodM() { if (utils.IsSetAll(STROBE_PLC, Strobe.M_CODE)) diff --git a/MTC_Sim/MTC_Sim/CMS_MachineSim.Designer.cs b/MTC_Sim/MTC_Sim/CMS_MachineSim.Designer.cs index 9da43c3..773931e 100644 --- a/MTC_Sim/MTC_Sim/CMS_MachineSim.Designer.cs +++ b/MTC_Sim/MTC_Sim/CMS_MachineSim.Designer.cs @@ -324,11 +324,13 @@ // this.functionalMode.FormattingEnabled = true; this.functionalMode.Items.AddRange(new object[] { - "PRODUCTION", + "MACCHINA_DISPONIBILE", + "MANUTENZIONE", + "PRODUZIONE", + "PULIZIA", + "REGOLAZIONI", "SETUP", - "TEARDOWN", - "MAINTENANCE", - "PROCESS_DEVELOPMENT"}); + "TEARDOWN"}); this.functionalMode.Location = new System.Drawing.Point(252, 71); this.functionalMode.Name = "functionalMode"; this.functionalMode.Size = new System.Drawing.Size(121, 21); diff --git a/MTC_Sim/MTC_Sim/CMS_MachineSim.cs b/MTC_Sim/MTC_Sim/CMS_MachineSim.cs index 0e1ffc8..760ff9d 100644 --- a/MTC_Sim/MTC_Sim/CMS_MachineSim.cs +++ b/MTC_Sim/MTC_Sim/CMS_MachineSim.cs @@ -179,9 +179,9 @@ namespace MTC_Sim answ.MessageText = messageText.Text; // pezzi - answ.pzTot = pzTot; + answ.pzOk = pzOk; answ.pzKo = pzKo; - answ.pzOk = pzTot - pzKo; + answ.pzTot = pzOk + pzKo; // load... answ.xLoad = xLoad.Value; @@ -260,24 +260,18 @@ namespace MTC_Sim private void pzKo_TextChanged(object sender, EventArgs e) { - // SE ho un valore diverso da zero invio... - if (pzKo > 0) - { - agObj.mPz_Ko.Value = pzKo; - agObj.mPz_Tot.Value = pzOk; - agObj.mPz_Ok.Value = pzOk - pzKo; - agObj.mAdapter.SendChanged(); - } + agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.PZ_KO; + txtPzTot.Text = pzTot.ToString(); } - protected int pzTot + protected int pzOk { get { int answ = 0; try { - answ = Convert.ToInt32(txtPzTot.Text.Trim()); + answ = Convert.ToInt32(txtPzOk.Text.Trim()); } catch { } @@ -285,7 +279,8 @@ namespace MTC_Sim } set { - txtPzTot.Text = value.ToString(); + txtPzOk.Text = value.ToString(); + txtPzTot.Text = pzTot.ToString(); } } protected int pzKo @@ -302,11 +297,11 @@ namespace MTC_Sim return answ; } } - protected int pzOk + protected int pzTot { get { - return pzTot - pzKo; + return pzOk + pzKo; } } @@ -346,13 +341,33 @@ namespace MTC_Sim if (agObj.codaS.Count > 0) agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.S_CODE; if (agObj.codaT.Count > 0) agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.T_CODE; - // aggiungo 1 pz al totale nel 20% dei casi (-->TC circa 5 x tick)... - if (rnd.Next(1, 100) > 80) + // aggiungo 1 pz al totale nel 33% dei casi (-->TC circa 3 x tick)... + if (rnd.Next(0, 100) > 67) { - pzTot++; + pzOk++; + agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.PZ_OK; } // controllo se ci sia il flag di lettura di un evento M/S/T nel qual caso lo abbasso... - if (agObj.STROBE_ADP > 0) agObj.STROBE_PLC -= agObj.STROBE_ADP; + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.M_CODE)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.M_CODE)) agObj.STROBE_PLC -= Strobe.M_CODE; + } + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.S_CODE)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.S_CODE)) agObj.STROBE_PLC -= Strobe.S_CODE; + } + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.T_CODE)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.T_CODE)) agObj.STROBE_PLC -= Strobe.T_CODE; + } + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.PZ_OK)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.PZ_OK)) agObj.STROBE_PLC -= Strobe.PZ_OK; + } + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.PZ_KO)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.PZ_KO)) agObj.STROBE_PLC -= Strobe.PZ_KO; + } // aggiorno visualizzazione strobe! STATUS_PLC_ADP.Text = utils.binaryForm((int)agObj.STROBE_PLC); diff --git a/MTC_Sim/MTC_Sim/utils.cs b/MTC_Sim/MTC_Sim/utils.cs index f2837c8..6d620af 100644 --- a/MTC_Sim/MTC_Sim/utils.cs +++ b/MTC_Sim/MTC_Sim/utils.cs @@ -130,9 +130,7 @@ namespace MTC_Sim public bool err_05; public bool err_06; } - - //public struct runningData - + /// /// Strobe: contiene il set di strobe di comunicazione /// @@ -145,8 +143,8 @@ namespace MTC_Sim M_CODE = 1 << 0, S_CODE = 1 << 1, T_CODE = 1 << 2, - SP04 = 1 << 3, - SP05 = 1 << 4, + PZ_OK = 1 << 3, + PZ_KO = 1 << 4, SP06 = 1 << 5, SP07 = 1 << 6, SP08 = 1 << 8,