diff --git a/IOB-WIN/IobSiemensAprochim.cs b/IOB-WIN/IobSiemensAprochim.cs index f0051296..90c2e759 100644 --- a/IOB-WIN/IobSiemensAprochim.cs +++ b/IOB-WIN/IobSiemensAprochim.cs @@ -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}")); } } diff --git a/Jenkinsfile b/Jenkinsfile index b1b730f7..bec1f29b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -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'