diff --git a/IOB-WIN/DATA/CONF/3017.ini b/IOB-WIN/DATA/CONF/3017.ini index 29c646c9..d77846b1 100644 --- a/IOB-WIN/DATA/CONF/3017.ini +++ b/IOB-WIN/DATA/CONF/3017.ini @@ -26,14 +26,14 @@ CMDREBO=/sendReboot.aspx?idxMacchina= [MEMORY] ADDR_READ=DB60.DBB0 -ADDR_WRITE=DB550.DBB1 -SIZE_READ=4 -SIZE_WRITE=1 +ADDR_WRITE=DB60.DBB18 +SIZE_READ=18 +SIZE_WRITE=0 ;BIT0=CONN -BIT1=DB550.DBB1 +BIT1=DB60.DBB1 ;BIT2=PZCOUNT.STD.DB700.DBW22 -BIT3=DB550.DBB3 -BIT4=DB550.DBB4 +BIT3=DB60.DBB3 +BIT4=DB60.DBB4 [BLINK] diff --git a/IOB-WIN/IobSiemensAprochim.cs b/IOB-WIN/IobSiemensAprochim.cs index 5627e669..f0051296 100644 --- a/IOB-WIN/IobSiemensAprochim.cs +++ b/IOB-WIN/IobSiemensAprochim.cs @@ -42,11 +42,14 @@ namespace IOB_WIN lgInfo("NEW IOB SIEMENS versione APROCHIM"); // leggo 1 byte - while (true) + 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()); - Byte[] memByteRead = currPLC.ReadBytes(DataType.DataBlock, 60, 0, 5); - var testVal = S7.Net.Types.Word.FromByteArray(memByteRead.Skip(0).Take(2).ToArray()); + byte status = S7.Net.Types.Byte.FromByteArray(memByteRead.Skip(3).Take(1).ToArray()); //// scrivo 1 byte //byte[] test = new byte[1]; @@ -55,7 +58,7 @@ namespace IOB_WIN /* ---------------------------------------------------------- - * DB60.DBD6: pressione camera filtrante (salvataggio del MAX ogni minuto) + * DB60.DBD6: pressione camera filtrante (salvataggio del MAX ogni minuto) | var testVal = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(0).Take(4).ToArray()); * DB60.DBD10: pressione linea utenze (salvataggio del MAX ogni minuto) * DB60.DBD14: temperatura acqua pulita (salvataggio del MAX ogni minuto) * @@ -72,63 +75,6 @@ namespace IOB_WIN } - #region area principale adapter - - /// - /// Enum degli stati macchina (B0) - /// - public enum statoMacchina - { - COMUNICAZIONE_ASSENTE = 0, - EMERGENZA_INSERITA = 1, - AVARIA_ARIA = 2, - AVARIA_PRESSIONE_OLIO = 3, - AVARIA_LIVELLO_OLIO = 4, - AVARIA_TEMPERATURA_OLIO = 5, - AVARIA_MOTORE_POMPA_IDRAULICA = 6, - AVARIA_MOTORE_RAFFREDDO_IDRAULICA = 7, - AVARIA_SINCRONISMO_PORTE = 8, - AVARIA_LIBERA = 9, - ATTIVAZIONE_IN_CORSO = 10, - MODO_MANUALE_ATTREZZAGGIO = 11, - MODO_AUTOMATICO_LOCALE = 12, - MODO_AUTOMATICO_ROBOT = 13, - CICLO_IN_CORSO = 14, - LIBERO = 15 - } - /// - /// Posizione sequenza ciclo standard punzonatrice - /// - public enum posizioneSequenza - { - CICLO_AUTOMATICO_FERMO = 0, - CONTROLLO_MODO_OPERATIVO = 5, - MODO_ATTIVO_CON_ROBOT = 8, - SBLOCCAGGIO_PEZZO = 10, - APERTURA_PORTELLO_ROBOT = 11, - CONSENSO_ACCESSO_AL_ROBOT = 12, - CARICO_ROBOT_IN_CORSO = 14, - CARICO_ROBOT_CONCLUSO = 16, - CHIUSURA_PORTELLO_ROBOT = 18, - VERIFICA_POSIZIONE_CARRI = 20, - BLOCCAGGIO_PEZZO = 22, - ATTESA_CARRO_A_DESTRA = 24, - DISCESA_RAPIDO_BROCCIATURA = 25, - CICLO_DI_BROCCIATURA = 26, - RITORNO_BROCCIATRICE = 28, - COMANDO_CARRO_A_SINISTRA = 30, - CICLO_DI_ALESATURA = 32, - RITORNO_CARRO_ALESATURA = 34, - COMANDO_CARRO_A_DESTRA = 36, - INCREMENTO_CONTAPEZZI = 38, - CONTROLLO_TIME_OUT_CICLO = 40, - RILANCIO_CICLO_F42 = 42, - ATTESA_FINE_CICLO = 45 - } - - - #endregion - #region Metodi specifici (da verificare/completare in implementazione) /// @@ -139,18 +85,23 @@ namespace IOB_WIN } /// - /// Recupero dati override in formato dictionary + /// Recupero dati dinamici in formato dictionary /// /// public override Dictionary getDynData() { Dictionary outVal = new Dictionary(); + /* ---------------------------------------------------------- + * DB60.DBD6: pressione camera filtrante (salvataggio del MAX ogni minuto) | var testVal = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(0).Take(4).ToArray()); + * 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 + 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()); @@ -165,13 +116,24 @@ namespace IOB_WIN { // init a zero... B_input = 0; -#if false - // FAPE: leggo i primi 2 WORD x decodifica stato e posizione... - 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()); - statoMacchina _stMacch = ((statoMacchina)valStatus); - posizioneSequenza _posSeq = ((posizioneSequenza)valPosit); -#endif + + //Byte[] memByteRead = currPLC.ReadBytes(DataType.DataBlock, 60, 0, 5); + //var testVal = S7.Net.Types.Word.FromByteArray(memByteRead.Skip(0).Take(2).ToArray()); + + /* ---------------------------------------------------------- + * DB60.DBD6: pressione camera filtrante (salvataggio del MAX ogni minuto) | var testVal = S7.Net.Types.Double.FromByteArray(memByteRead.Skip(0).Take(4).ToArray()); + * DB60.DBD10: pressione linea utenze (salvataggio del MAX ogni minuto) + * 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.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