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,