Passa al contenuto principale

ImballaggioService

La funziona Principale è: SalvaPesoAsync

  • Se NON c'è un epc/RFID segue la procedura KoNoRFID
  • Se C'E' l'epc/RFID abbinato alla pesata salva la lettura nella tabella: LettureRockwellTb
  • Se l'appConfig ha impostato a true l'avvio del flusso logico, inizia la procedura logica 

await controllaCampione(customLetturaBilancia);

    • Cerco nella tabella Pesi_Campione se esiste un pallet con l'epc/RFID letto dalla bilancia
    •  Se E' un CAMPIONE
      • await KoNoCampione(pesoCampione);

      • await Salva_Pallet_Tabella_5_A_Terra

    • Se NON è un CAMPIONE
      • await CercaNelleTabelleSTAIN(customLetturaBilancia);

          • Cerca in Tabella3:

            response = await _dbContext.Set<QryTabella3>().OrderByDescending(x=>x.Ncolata)
            .FirstOrDefaultAsync(x =>
                                                      x.IdPallet == codiceEpc 
                                               && x.Bollettino != 0
                                               && x.RigaBollettino != 0
                                               && x.Destinatario.Length > 0
                                               && x.CodiceApaspedizione.Length > 0
                                               && x.Stanza.Length > 0
                                               && x.Corsia != 0
                                               && x.StatoPacco == 3
                                               && x.FormatoPacco != "0"
                                               && x.LunghPani != 0);   

                               
          • Cerca in Tabella4:



          • response = await _dbContext.Set<QryTabella4>().OrderByDescending(x => x.Idrecord)
            .FirstOrDefaultAsync(x =>
                                                      x.AnnoBollettino == responseTabella3.AnnoBollettino
                                               && x.Bollettino == responseTabella3.Bollettino
                                               && x.RigaBollettino == responseTabella3.RigaBollettino
                                               && x.Stanza.Length > 0
                                               && x.Corsia != 0);        

        •  
          • Chiede all'OPCUA il numero di colata

          • Cerca in Tabella5FineLavoro:
          • response = await _dbContext.Tabella5FineLavoro
            .FirstOrDefaultAsync(x => x.IdPallet == codiceEpc && x.Ncolata == ncolata);   

    •  
      • Gestione CASI:
        • CASO 1:
          Pallet presente in tabella 3, in tabella 4, non in tabella 5 fine lavoro e il numero di colata del pallet è lo stesso di quello della colata attuale oppure è bypassata la gestione numero colata (num colata == 0)
                                                                                                      
          Ricerca in tabella 4:

          response = await _dbContext.Set<QryTabella4>().OrderByDescending(x => x.Idrecord)
          .FirstOrDefaultAsync(x =>
                                                    x.AnnoBollettino == responseTabella3.AnnoBollettino
                                             && x.Bollettino == responseTabella3.Bollettino
                                             && x.RigaBollettino == responseTabella3.RigaBollettino
                                             && x.Stanza.Length > 0
                                             && x.Corsia != 0);                                                          


          Ricerca in tabella 5 fine lavoro:

          response = await _dbContext.Tabella5FineLavoro
          .FirstOrDefaultAsync(x => x.IdPallet == codiceEpc && x.Ncolata == ncolata);                                     

                                                                                                    
        • CASO 2: Pallet presente in tabella 3, in tabella 4, non in tabella 5 fine lavoro, ma il numero colata del pallet è diverso da quello della colata impostata sulla bilancia --> PACCO A TERRA

        • CASO 3: Pallet non presente nel DB --> forzare bit di bypass PC nel PLC

CASO 1:

CASO 2:

  • Inizializzo variabili OPCUA "KOCaso2" e le invia alla Bilancia
  • SalvaPalletTab5_aTerra

CASO 3:

  • Se il numero di colata è == 0: Inizializzo variabili OPCUA "KOCaso3Colata" e le invia alla Bilancia
  • Se il numero di colata è != 0: Inizializzo variabili OPCUA "KOCaso3" e le invia alla Bilancia