cambiocontapezzi x CMZ

This commit is contained in:
Samuele E. Locatelli
2018-04-13 14:31:57 +02:00
parent 84ebc21fc3
commit 7d9b58fa3e
4 changed files with 114 additions and 89 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ AREAY_SIZE=8
; Red: Y3.7 | Yellow: Y3.6 | Green Y3.5 | All DoorsClosed: Y4.0 (X5.1) | ..........WrkZone Y8.7
;BIT0=CONN
BIT1=Y3.5
;BIT2=PAR6711
BIT2=PZCOUNT
BIT3=Y3.7
BIT4=Y3.6
+109 -86
View File
@@ -387,79 +387,119 @@ namespace IOB_WIN
{
// recupero nome variabile...
bVal = signLUT[bKey];
area = bVal[0];
memArea = bVal.Substring(1, bVal.Length - 1);
memIdx = memArea.Split('.');
// calcolo bit e byte number...
int.TryParse(memIdx[0], out byteNum);
if (memIdx.Length > 1)
// se l'area è PZCOUNT... processo PUNTUALMENTE il CONTAPEZZI...
if (bVal == "PZCOUNT")
{
int.TryParse(memIdx[1], out bitNum);
// controllo se è passato intervallo minimo pre invio
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
{
if (utils.CRB("enableContapezzi"))
{
try
{
// verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con indicazione area)
if (currIobConf.optPar.Count > 0 && currIobConf.optPar["PZCOUNT_MODE"] != "")
{
if (currIobConf.optPar["PZCOUNT_MODE"] == "STD")
{
object output = new object();
// processo parametro contapezzi (lavorati) !!!FARE!!! sposatre su ciclo + HF
stopwatch.Restart();
FANUC_ref.F_RW_Param_Integer(false, 6711, 3, ref output);
if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PAR", 2), stopwatch.ElapsedTicks);
lg.Info(string.Format("Contapezzi Lavorati 6711: {0}", output));
// salvo ultimo conteggio rilevato
Int32.TryParse(output.ToString(), out lastCount);
// 6711: pezzi lavorati
// 6712: pezzi lavorati totali
// 6713: pezzi richiesti
// output!
stopwatch.Stop();
}
else if (currIobConf.optPar["PZCOUNT_MODE"] == "BIT")
{
// posizioni DWord
//1602:543809: NUM PEZZI x ciclo (6408..6411)
//1603:5300: NUM PEZZI RICHIESTI (6412..6415)
//1604:5007: NUM PEZZI FATTI (6416..6419)
//1605:543809: NUM PEZZI TOTALI (6420..6423)
//[OPTPAR]
//ENDCYCLE_MADDR=X7.1
//PZ_CAD_MADDR=1602
//PZ_REQ_MADDR=1603
//PZ_DONE_MADDR=1604
//PZ_GTOT_MADDR=1605
// LEGGO le memorie DW dei vari contatori
// salvo in area locale e confronto con precedenti, dove cambiato INVIO come dato aggiuntivo
}
}
}
catch (Exception exc)
{
lg.Error(exc, "Errore in contapezzi FANUC");
connectionOk = false;
}
}
// verifico se variato contapezzi in area STD PAR6711... e se passato ritardo minimo...
if (lastCount > contapezzi)
{
// salvo nuovo contapezzi (incremento di 1...)
contapezzi++;
// salvo in semaforo!
B_input += 1 << 2;
// registro contapezzi
lg.Info(string.Format("Contapezzi FANUC: {0} | Contapezzi interno {1}", lastCount, contapezzi));
lastPzCountSend = DateTime.Now;
}
else if (contapezzi > lastCount) // in questo caso resetto
{
contapezzi = lastCount;
}
}
}
// in base al nome cerco in una delle aree.. e prendo solo solo quel bit di quel byte...
switch (area)
else // area "normale" byte.bit
{
case 'G':
byte2check = MemBlockG[byteNum];
break;
case 'X':
byte2check = MemBlockX[byteNum];
break;
case 'Y':
byte2check = MemBlockY[byteNum];
break;
default:
break;
}
// controllo se il bit sia attivo...
if ((byte2check & (1 << bitNum)) == (1 << bitNum))
{
B_input += 1 << i;
area = bVal[0];
// altrimenti decodifico area...
memArea = bVal.Substring(1, bVal.Length - 1);
memIdx = memArea.Split('.');
// calcolo bit e byte number...
int.TryParse(memIdx[0], out byteNum);
if (memIdx.Length > 1)
{
int.TryParse(memIdx[1], out bitNum);
}
// in base al nome cerco in una delle aree.. e prendo solo solo quel bit di quel byte...
switch (area)
{
case 'G':
byte2check = MemBlockG[byteNum];
break;
case 'X':
byte2check = MemBlockX[byteNum];
break;
case 'Y':
byte2check = MemBlockY[byteNum];
break;
default:
break;
}
// controllo se il bit sia attivo...
if ((byte2check & (1 << bitNum)) == (1 << bitNum))
{
B_input += 1 << i;
}
}
}
}
// verifico se variato contapezzi in 6711... e se passato ritardo minimo...
if (lastCount > contapezzi)
{
// controllo se è passato intervallo minimo pre invio
if (lastPzCountSend.AddMilliseconds(pzCountDelay) < DateTime.Now)
{
// salvo nuovo contapezzi (incremento di 1...)
contapezzi++;
// salvo in semaforo!
B_input += 1 << 2;
// registro contapezzi
lg.Info(string.Format("Contapezzi FANUC: {0} | Contapezzi interno {1}", lastCount, contapezzi));
}
}
else if (contapezzi > lastCount) // in questo caso resetto
{
contapezzi = lastCount;
}
#if false
// B1: verde! Y3.5 (era Y8.6)
if ((byteSem & 32) > 0)
{
B_input += 1 << 1;
}
// B3: Rosso! Y3.7 (era Y8.4)
if ((byteSem & 128) > 0)
{
B_input += 1 << 3;
}
// B4: giallo! Y3.6 (era Y8.5)
if ((byteSem & 64) > 0)
{
B_input += 1 << 4;
}
#endif
}
// log opzionale!
if (verboseLog) lg.Info(string.Format("Trasformazione B_input: {0}", B_input));
}
@@ -527,7 +567,7 @@ namespace IOB_WIN
/// </summary>
public override void processContapezzi()
{
Dictionary<string, string> outVal = new Dictionary<string, string>();
#if false
if (utils.CRB("enableContapezzi"))
{
try
@@ -545,27 +585,9 @@ namespace IOB_WIN
FANUC_ref.F_RW_Param_Integer(false, 6711, 3, ref output);
if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PAR", 2), stopwatch.ElapsedTicks);
lg.Info(string.Format("Contapezzi Lavorati 6711: {0}", output));
outVal.Add("6711_PzLavorati", output.ToString());
// salvo ultimo conteggio rilevato
Int32.TryParse(output.ToString(), out lastCount);
// commento x ridurre carico e vedere come si comporta...
#if false
// processo pz lavorati totali
inizio = DateTime.Now;
FANUC_ref.F_RW_Param_Integer(false, 6712, 3, ref output);
if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PAR", 2), DateTime.Now.Subtract(inizio).Ticks);
lg.Info(string.Format("Contapezzi Lav Tot 6712: {0}", output));
outVal.Add("6712_PzLavTotali", output.ToString());
// processo pz richiesti
inizio = DateTime.Now;
FANUC_ref.F_RW_Param_Integer(false, 6713, 3, ref output);
if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PAR", 2), DateTime.Now.Subtract(inizio).Ticks);
lg.Info(string.Format("Pz Richiesti 6713: {0}", output));
outVal.Add("6713_PzRichiesti", output.ToString());
#endif
// 6711: pezzi lavorati
// 6712: pezzi lavorati totali
// 6713: pezzi richiesti
@@ -601,7 +623,8 @@ namespace IOB_WIN
lg.Error(exc, "Errore in contapezzi FANUC");
connectionOk = false;
}
}
}
#endif
}
/// <summary>
/// Esegue processing MODE (e nel contempo recupera altri dati dell'area G)
+3 -1
View File
@@ -455,7 +455,9 @@ namespace IOB_WIN
}
else if (ciclo == gatherCycle.LF)
{
processContapezzi();
#if false
processContapezzi();
#endif
processProgram();
}
else if (ciclo == gatherCycle.VLF)
Vendored
+1 -1
View File
@@ -14,7 +14,7 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
withEnv(['NEXT_BUILD_NUMBER=222']) {
withEnv(['NEXT_BUILD_NUMBER=223']) {
// env.versionNumber = VersionNumber(versionNumberString : '1.17.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '1.17.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'MAPO-IOB-WIN'