Prima vers da testare x Aprochim

This commit is contained in:
Samuele E. Locatelli
2019-04-26 15:12:26 +02:00
parent ce3ded6d11
commit c98ebf9e6d
2 changed files with 44 additions and 151 deletions
+43 -150
View File
@@ -45,17 +45,18 @@ namespace IOB_WIN
for (int i = 0; i < 10; i++)
{
Byte[] memByteRead = currPLC.ReadBytes(DataType.DataBlock, 60, 0, 18);
var pressCamFilt = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(6).Take(4).ToArray());
var pressLinUt = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(10).Take(4).ToArray());
var tempH2O = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(14).Take(4).ToArray());
double pressCamFilt = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(6).Take(4).ToArray());
double pressLinUt = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(10).Take(4).ToArray());
double tempH2O = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(14).Take(4).ToArray());
byte status = S7.Net.Types.Byte.FromByteArray(memByteRead.Skip(3).Take(1).ToArray());
byte statusByte = S7.Net.Types.Byte.FromByteArray(memByteRead.Skip(3).Take(1).ToArray());
//// scrivo 1 byte
//byte[] test = new byte[1];
//test[0] = 64;
//currPLC.WriteBytes(DataType.DataBlock, 550, 1, test);
// log!
lgInfo($"pressCamFilt: {pressCamFilt:N6}");
lgInfo($"pressLinUt: {pressLinUt:N6}");
lgInfo($"tempH2O: {tempH2O:N3}");
lgInfo($"statusByte: {statusByte}");
/* ----------------------------------------------------------
* DB60.DBD6: pressione camera filtrante (salvataggio del MAX ogni minuto) | var testVal = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(0).Take(4).ToArray());
@@ -96,16 +97,15 @@ namespace IOB_WIN
* DB60.DBD10: pressione linea utenze (salvataggio del MAX ogni minuto)
* DB60.DBD14: temperatura acqua pulita (salvataggio del MAX ogni minuto)
* */
#if false
ushort valStatus = S7.Net.Types.Word.FromByteArray(RawInput.Skip(0).Take(2).ToArray());
ushort valPosit = S7.Net.Types.Word.FromByteArray(RawInput.Skip(2).Take(2).ToArray());
outVal.Add("CURR_STATO", ((statoMacchina)valStatus).ToString());
outVal.Add("CURR_POSIT", ((posizioneSequenza)valPosit).ToString());
#endif
outVal.Add("CURR_B0", RawInput.Skip(0).Take(1).ToArray().ToString());
outVal.Add("CURR_B1", RawInput.Skip(1).Take(1).ToArray().ToString());
outVal.Add("CURR_B2", RawInput.Skip(2).Take(1).ToArray().ToString());
outVal.Add("CURR_B3", RawInput.Skip(3).Take(1).ToArray().ToString());
Byte[] memByteRead = currPLC.ReadBytes(DataType.DataBlock, 60, 0, 18);
double pressCamFilt = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(6).Take(4).ToArray());
double pressLinUt = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(10).Take(4).ToArray());
double tempH2O = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(14).Take(4).ToArray());
outVal.Add("pressCamFilt", pressCamFilt.ToString("{0:N6}"));
outVal.Add("pressLinUt", pressCamFilt.ToString("{0:N6}"));
outVal.Add("tempH2O", tempH2O.ToString("{0:N3}"));
return outVal;
}
@@ -116,7 +116,7 @@ namespace IOB_WIN
{
// init a zero...
B_input = 0;
//Byte[] memByteRead = currPLC.ReadBytes(DataType.DataBlock, 60, 0, 5);
//var testVal = S7.Net.Types.Word.FromByteArray(memByteRead.Skip(0).Take(2).ToArray());
@@ -126,17 +126,16 @@ namespace IOB_WIN
* DB60.DBD14: temperatura acqua pulita (salvataggio del MAX ogni minuto)
*
* DB60.DBX3.0: AUSILIARI INSERITI = NO EMERGENZA
* DB60.DBX3.1: Filtro (macchina) in LAVORAZIONE
* DB60.DBX3.1: MACCHINA (Filtro) in LAVORAZIONE
* DB60.DBX3.2: Selettore in AUTOMATICO (sennò GIALLO)
* DB60.DBX3.3: WARNING MIN LIV VASCA (arancio)
* DB60.DBX3.4: WARNING MIN LIV CELLULOSA (blu)
* DB60.DBX3.5: LAMPADA ROSSA (allarmi almeno 1 attivo)
*
* */
/* -----------------------------------------------------
* bitmap MAPO
* bitmap MAPO STANDARD
* B0: POWER_ON
* B1: RUN
* B2: pzCount
@@ -145,145 +144,39 @@ namespace IOB_WIN
* B5: emergenza
----------------------------------------------------- */
/* -----------------------------------------------------
* bitmap MAPO FILTRO Aprochim
* B0: POWER_ON
* B1: NOT emergenza
* B2: RUN
* B3: Automatico
* B4: WARN_MIN_VASCA
* B5: WARN_MIN_CELL
* B6: ALARM
----------------------------------------------------- */
// bit 0 (poweron) imposto a 1 SE connected...
B_input = currPLC.IsConnected ? 1 : 0;
// controllo bit preliminare...
int byteSem = RawInput[0];
// azzero powerOn...
byteSem &= ~(1 << 0);
// bit 0 (powerOn) imposto a 1 SE connected...
// recupero byte segnali...
int byteSignals = RawInput[3];
// faccio uno shift a sx di 1...
byteSignals = byteSignals << 1;
// bit 0 (poweron) imposto a 1 SE connected...
if (currPLC.IsConnected)
{
byteSem += (1 << 0);
}
byteSignals += (1 << 0);
}
// salvo!
B_input = byteSignals;
// salvo infine variabile bit x invio
B_input = byteSem;
#if false
// controllo stato macchina x impostare altri bit...
switch (_stMacch)
{
case statoMacchina.EMERGENZA_INSERITA:
B_input += (1 << 5);
break;
case statoMacchina.AVARIA_ARIA:
case statoMacchina.AVARIA_PRESSIONE_OLIO:
case statoMacchina.AVARIA_LIVELLO_OLIO:
case statoMacchina.AVARIA_TEMPERATURA_OLIO:
B_input += (1 << 3);
B_input += (1 << 6);
break;
case statoMacchina.AVARIA_MOTORE_POMPA_IDRAULICA:
case statoMacchina.AVARIA_MOTORE_RAFFREDDO_IDRAULICA:
case statoMacchina.COMUNICAZIONE_ASSENTE:
case statoMacchina.AVARIA_SINCRONISMO_PORTE:
case statoMacchina.AVARIA_LIBERA:
case statoMacchina.ATTIVAZIONE_IN_CORSO:
B_input += (1 << 3);
break;
case statoMacchina.MODO_MANUALE_ATTREZZAGGIO:
B_input += (1 << 4);
break;
case statoMacchina.CICLO_IN_CORSO:
B_input += (1 << 1);
break;
case statoMacchina.MODO_AUTOMATICO_LOCALE:
case statoMacchina.MODO_AUTOMATICO_ROBOT:
B_input += (1 << 7);
break;
case statoMacchina.LIBERO:
default:
break;
}
#endif
#if false
string currODL = "";
try
{
currODL = utils.callUrl(urlGetCurrODL);
// solo SE HO un ODL...
if (currODL == "" || currODL == "0")
{
if (periodicLog)
{
lgInfo(string.Format("SiemensFape | Lettura ODL andata a vuoto: currODL: {0}", currODL));
}
}
else
{
// se variato o scaduto timeout log...
if (periodicLog || (currIdxODL.ToString() != currODL))
{
lgInfo(string.Format("SiemensFape | Lettura ODL, currODL: {0} --> currIdxODL prec: {1}", currODL, currIdxODL));
}
// provo a salvare nuovo ODL
int.TryParse(currODL, out currIdxODL);
}
}
catch (Exception exc)
{
if (DateTime.Now.Subtract(lastWarnODL).TotalSeconds > 15)
{
lgError(exc, "Errore in fase di chiamata URL x ODL corrente | URL chiamato: {0}", urlGetCurrODL);
lastWarnODL = DateTime.Now;
}
}
#endif
#if false
if (currODL != null && currODL != "" && currODL != "0")
{
// ora processo il contapezzi...
// controllo se è passato intervallo minimo tra 2 controlli/elaborazioni x distanziare invio e ridurre letture
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
{
// se sono differenti MOSTRO...
if (lastCountCNC != contapezzi)
{
// registro contapezzi
lgInfo(string.Format("Differenza Contapezzi: READ: {0} | Interno {1}", lastCountCNC, contapezzi));
}
// verifico se variato contapezzi... e se passato ritardo minimo...
if (lastCountCNC > contapezzi)
{
// salvo nuovo contapezzi (incremento di 1...)
contapezzi++;
// salvo in semaforo!
B_input += (1 << 2);
// registro contapezzi
lgInfo(string.Format("Contapezzi SIEMENS: {0} | Contapezzi interno {1}", lastCountCNC, contapezzi));
}
// invio a server contapezzi (aggiornato)
string retVal = utils.callUrl(urlSetPzCount + contapezzi.ToString());
// verifica se tutto OK
if (retVal != "OK")
{
// errore salvataggio contapezzi
lgInfo(string.Format("Errore salvataggio Contapezzi SIEMENS {0} | Contapezzi interno {1} | Errore salvataggio: {2}", lastCountCNC, contapezzi, retVal));
}
// resetto timer...
lastPzCountSend = DateTime.Now;
}
}
else
{
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
{
lgInfo(string.Format("Attenzione: mancanza ODL non procedo con gestione contapezzi. Contapezzi SIEMENS {0} | Contapezzi interno {1}", lastCountCNC, contapezzi));
// resetto timer...
lastPzCountSend = DateTime.Now;
}
}
#endif
// log opzionale!
if (verboseLog)
{
lgInfo(string.Format("Trasformazione B_input: {0}", B_input));
lgInfo(string.Format($"Trasformazione dati: RawInput:{RawInput[3]} --> B_input: {B_input}"));
}
}
Vendored
+1 -1
View File
@@ -16,7 +16,7 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
withEnv(['NEXT_BUILD_NUMBER=387']) {
withEnv(['NEXT_BUILD_NUMBER=388']) {
// env.versionNumber = VersionNumber(versionNumberString : '2.3.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '2.3.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'MAPO-IOB-WIN'