FATTO TEST LETTURA STATI: OK!

This commit is contained in:
Samuele E. Locatelli
2019-04-26 12:28:47 +02:00
parent ad99777c23
commit ce3ded6d11
2 changed files with 42 additions and 80 deletions
+6 -6
View File
@@ -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]
+36 -74
View File
@@ -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
/// <summary>
/// Enum degli stati macchina (B0)
/// </summary>
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
}
/// <summary>
/// Posizione sequenza ciclo standard punzonatrice
/// </summary>
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)
/// <summary>
@@ -139,18 +85,23 @@ namespace IOB_WIN
}
/// <summary>
/// Recupero dati override in formato dictionary
/// Recupero dati dinamici in formato dictionary
/// </summary>
/// <returns></returns>
public override Dictionary<string, string> getDynData()
{
Dictionary<string, string> outVal = new Dictionary<string, string>();
/* ----------------------------------------------------------
* 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