예제 #1
0
        private void AggiornaStoricoAllarmi()
        {
            int?formato = null;

            DateTime inizio = dtDataInizio.Value.Date;
            DateTime fine   = dtDataFine.Value.Date.AddDays(1);

            if (!(cmbFormati.SelectedValue == null || (int)cmbFormati.SelectedValue < 0))
            {
                formato = (int)cmbFormati.SelectedValue;
            }

            DBL.StatisticheManager dbm = new DBL.StatisticheManager(Properties.Settings.Default.ConnectionStringStatistiche);

            List <DigitalControl.DataType.StatisticheAllarme> allarmi = null;

            if (formato == null)
            {
                allarmi = dbm.ReadStoricoAllarmi(inizio, fine);
            }
            else
            {
                allarmi = dbm.ReadStoricoAllarmi(formato.Value, inizio, fine);
            }

            for (int i = 0; i < allarmi.Count; i++)
            {
                allarmi[i].DescrizioneAllarme = linguaMngr.GetTranslation(allarmi[i].DescrizioneAllarme);
            }

            statisticheAllarmeBindingSource.DataSource = allarmi;
        }
예제 #2
0
        private void timerAggiornaStatoPLC_Tick(object sender, EventArgs e)
        {
            if (plcMacchinaManager.SpegniTutto)
            {
                if (Properties.Settings.Default.SpegniPC_da_PLC)
                {
                    Process.Start("shutdown", "/f /s /t 10");
                }
                Application.Exit();
            }

            if (plcMacchinaManager.CodiceAllarme != Class.PlcMacchinaManager.Allarmi.NO_ALLARMI || allarmeLicenza)
            {
                DBL.StatisticheManager dbmStatistiche = new DBL.StatisticheManager(Properties.Settings.Default.ConnectionStringStatistiche);

                GestioneStoricoAllarmi(0, Class.PlcMacchinaManager.Allarmi.RAGGIUNTO_NUMERO_DI_SCARTI_CONSECUTIVI, dbmStatistiche);
                GestioneStoricoAllarmi(1, Class.PlcMacchinaManager.Allarmi.EMERGENZA_PREMUTA, dbmStatistiche);
                GestioneStoricoAllarmi(2, Class.PlcMacchinaManager.Allarmi.AVARIA_BATTERIE_UPS, dbmStatistiche);
                GestioneStoricoAllarmi(3, Class.PlcMacchinaManager.Allarmi.AVARIA_TENSIONE_UPS, dbmStatistiche);
                GestioneStoricoAllarmi(4, Class.PlcMacchinaManager.Allarmi.DISALLINEAMENTO, dbmStatistiche);

                PopolaSchermataErrore(this.plcMacchinaManager, this.linguaMngr);
            }
            else
            {
                timerAggiornaStatoPLC.Enabled = false;
                this.Close();
            }
        }
예제 #3
0
        private void GetProduzioneOraria(int?formato, DateTime inizio, DateTime fine, out List <SerieBaseProduzioneOraria> serie)
        {
            DBL.StatisticheManager dbm = new DBL.StatisticheManager(Properties.Settings.Default.ConnectionStringStatistiche);
            List <DigitalControl.DataType.StatisticheProduzione> produzioneList = null;

            if (formato == null)
            {
                produzioneList = dbm.ReadProduzioneGiornaliera(-1, inizio, fine);
            }
            else
            {
                produzioneList = dbm.ReadProduzioneGiornaliera(formato.Value, -1, inizio, fine);
            }

            serie = new List <SerieBaseProduzioneOraria>();

            if (produzioneList != null && produzioneList.Count > 0)
            {
                DateTime datatPrima = produzioneList[0].Data;

                for (int i = 0; i < produzioneList.Count; i++)
                {
                    DigitalControl.DataType.StatisticheProduzione prodObj = produzioneList[i];

                    if ((prodObj.Data - datatPrima).TotalSeconds > 10)
                    {
                        serie.Add(new SerieBaseProduzioneOraria(datatPrima.AddSeconds(5), 0));
                        serie.Add(new SerieBaseProduzioneOraria(prodObj.Data.AddSeconds(-5), 0));
                    }

                    datatPrima = prodObj.Data;

                    serie.Add(new SerieBaseProduzioneOraria(prodObj.Data, prodObj.ProdOraria));
                }
            }
        }
예제 #4
0
        private void GetProduzionePerFormato(int?formato, DateTime inizio, DateTime fine, out List <SerieBaseProduzionePerFormato> serie)
        {
            DBL.StatisticheManager dbmStatistiche = new DBL.StatisticheManager(Properties.Settings.Default.ConnectionStringStatistiche);
            DBL.FormatoManager     dbmFormati     = new DBL.FormatoManager(Properties.Settings.Default.ConnectionStringFormati);

            List <DigitalControl.DataType.StatisticheProduzione> produzioneList = null;

            if (formato == null)
            {
                produzioneList = dbmStatistiche.ReadProduzionePerFormato(-1, inizio, fine);
            }
            else
            {
                produzioneList = dbmStatistiche.ReadProduzionePerFormato(formato.Value, -1, inizio, fine);
            }

            serie = new List <SerieBaseProduzionePerFormato>();

            if (produzioneList != null && produzioneList.Count > 0)
            {
                DigitalControl.DataType.StatisticheProduzione prodObj = produzioneList[0];

                int prevPzBuoni  = prodObj.PzBuoni;
                int pzBuoni      = prevPzBuoni;
                int prevPzScarto = prodObj.Scarto;
                int pzScarto     = prevPzScarto;

                int prevFormato = prodObj.IdFormato;
                int currFormato = prodObj.IdFormato;

                DateTime prevdata = prodObj.Data;
                DateTime currdata = prodObj.Data;

                string formatoDescr = string.Empty;

                for (int i = 1; i < produzioneList.Count; i++)
                {
                    prodObj = produzioneList[i];

                    // calcola il delta dei pezzi prodotti
                    int currPzBuoni  = prodObj.PzBuoni;
                    int currPzScarto = prodObj.Scarto;

                    currFormato = prodObj.IdFormato;
                    currdata    = prodObj.Data;

                    if (prevdata.Date != currdata.Date)
                    {
                        prevdata = currdata;
                    }

                    if (currFormato > prevFormato)
                    {
                        formatoDescr = dbmFormati.GetDescrizioneFormato(prevFormato);
                        serie.Add(new SerieBaseProduzionePerFormato(formatoDescr, pzBuoni, pzScarto));

                        if (currPzBuoni >= prevPzBuoni)
                        {
                            pzBuoni = currPzBuoni - prevPzBuoni;
                        }
                        else
                        {
                            pzBuoni = currPzBuoni;
                        }

                        if (currPzScarto >= prevPzScarto)
                        {
                            pzScarto = currPzScarto - prevPzScarto;
                        }
                        else
                        {
                            pzScarto = currPzScarto;
                        }
                    }
                    else
                    {
                        if (currPzBuoni >= prevPzBuoni)
                        {
                            pzBuoni += currPzBuoni - prevPzBuoni;
                        }
                        else
                        {
                            pzBuoni += currPzBuoni;
                        }

                        if (currPzScarto >= prevPzScarto)
                        {
                            pzScarto += currPzScarto - prevPzScarto;
                        }
                        else
                        {
                            pzScarto += currPzScarto;
                        }
                    }

                    prevPzBuoni  = currPzBuoni;
                    prevPzScarto = currPzScarto;
                    prevFormato  = currFormato;
                    prevdata     = currdata;
                }

                formatoDescr = dbmFormati.GetDescrizioneFormato(currFormato);
                serie.Add(new SerieBaseProduzionePerFormato(formatoDescr, pzBuoni, pzScarto));
            }
        }
예제 #5
0
        private void GetProduzioneGiornaliera(int?formato, DateTime inizio, DateTime fine, out List <SerieBaseProduzioneGiornaliera> serie)
        {
            DBL.StatisticheManager dbm = new DBL.StatisticheManager(Properties.Settings.Default.ConnectionStringStatistiche);
            List <DigitalControl.DataType.StatisticheProduzione> produzioneList = null;

            if (formato == null)
            {
                produzioneList = dbm.ReadProduzioneGiornaliera(-1, inizio, fine);
            }
            else
            {
                produzioneList = dbm.ReadProduzioneGiornaliera(formato.Value, -1, inizio, fine);
            }

            serie = new List <SerieBaseProduzioneGiornaliera>();

            //if (produzioneList != null && produzioneList.Count > 0)
            if (produzioneList != null) // |MP 23-1-19
            {
                // |MP 23-1-19 modificate x far vedere la pg con qualcosa anche se non c'è scritto nulla
                int      prevPzBuoni  = 0;
                int      pzBuoni      = 0;
                int      prevPzScarto = 0;
                int      pzScarto     = 0;
                DateTime prevData     = System.DateTime.Now;

                if (produzioneList.Count > 0)   // |MP 23-1-19
                {
                    DigitalControl.DataType.StatisticheProduzione prodObj = produzioneList[0];

                    prevPzBuoni  = prodObj.PzBuoni;
                    pzBuoni      = prevPzBuoni;
                    prevPzScarto = prodObj.Scarto;
                    pzScarto     = prevPzScarto;

                    DateTime currData = prodObj.Data.Date;
                    prevData = prodObj.Data.Date;

                    for (int i = 1; i < produzioneList.Count; i++)
                    {
                        prodObj = produzioneList[i];

                        int currPzBuoni  = prodObj.PzBuoni;
                        int currPzScarto = prodObj.Scarto;

                        currData = prodObj.Data.Date;

                        if (currData > prevData)
                        {
                            serie.Add(new SerieBaseProduzioneGiornaliera(prevData, pzBuoni, pzScarto));

                            if (currPzBuoni >= prevPzBuoni)
                            {
                                pzBuoni = (currPzBuoni - prevPzBuoni);
                            }
                            else
                            {
                                pzBuoni = currPzBuoni;
                            }

                            if (currPzScarto >= prevPzScarto)
                            {
                                pzScarto = (currPzScarto - prevPzScarto);
                            }
                            else
                            {
                                pzScarto = currPzScarto;
                            }
                        }
                        else
                        {
                            if (currPzBuoni >= prevPzBuoni)
                            {
                                pzBuoni += (currPzBuoni - prevPzBuoni);
                            }
                            else
                            {
                                pzBuoni += currPzBuoni;
                            }

                            if (currPzScarto >= prevPzScarto)
                            {
                                pzScarto += (currPzScarto - prevPzScarto);
                            }
                            else
                            {
                                pzScarto += currPzScarto;
                            }
                        }

                        prevPzBuoni  = currPzBuoni;
                        prevPzScarto = currPzScarto;
                        prevData     = currData;
                    }
                }
                serie.Add(new SerieBaseProduzioneGiornaliera(prevData, pzBuoni, pzScarto));
            }
        }
예제 #6
0
        private void GestioneStoricoAllarmi(int indiceErrore, Class.PlcMacchinaManager.Allarmi flagAllarme, DBL.StatisticheManager dbmStatistiche)
        {
            if (errori[indiceErrore] == false && plcMacchinaManager.CodiceAllarme.HasFlag(flagAllarme))
            {
                errori[indiceErrore] = true;

                DigitalControl.DataType.StatisticheAllarme allarme = new DigitalControl.DataType.StatisticheAllarme();

                allarme.Nodo      = 0;
                allarme.IdAllarme = indiceErrore;
                allarme.Data      = DateTime.Now;

                dbmStatistiche.WriteStoricoAllarmi(allarme);
            }
            else if (errori[indiceErrore] == true && !plcMacchinaManager.CodiceAllarme.HasFlag(flagAllarme))
            {
                errori[indiceErrore] = false;
            }
        }