completata gestione flag x contapezzi

This commit is contained in:
Samuele E. Locatelli
2016-04-04 17:16:09 +02:00
parent b8fbe0af25
commit 78e840fdb2
6 changed files with 119 additions and 32 deletions
Binary file not shown.
+23 -3
View File
@@ -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;
}
/// <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;
}
}
}
}
+53 -1
View File
@@ -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();
}
/// <summary>
/// recupero dati ASSI
/// </summary>
@@ -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;
}
}
/// <summary>
/// recupera pezzi OK (fare override!)
/// </summary>
public virtual int getNumPzOk
{
get
{
int answ = 0;
return answ;
}
}
/// <summary>
/// recupera pezzi KO (fare override!)
/// </summary>
public virtual int getNumPzKo
{
get
{
int answ = 0;
return answ;
}
}
public void checkCodM()
{
if (utils.IsSetAll(STROBE_PLC, Strobe.M_CODE))
+6 -4
View File
@@ -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);
+34 -19
View File
@@ -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);
+3 -5
View File
@@ -130,9 +130,7 @@ namespace MTC_Sim
public bool err_05;
public bool err_06;
}
//public struct runningData
/// <summary>
/// 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,