private void TimerLimiteCaja_Tick(object sender, EventArgs e)
        {
            try
            {
                if ((this.Maquina.Modo == Entidades.Enum.ModoMaquina.Normal &&
                     this.Maquina.CantidadCaja <= this.Maquina.CantidadCajaRealizada && !inactiva))
                {
                    PonerColorError();
                    //Store.TCPCliente.EnviarMensaje(new MensajeTCPErrorPrensa { NombrePrensa = Maquina.Nombre, ParesFabricados = this.Maquina.CantidadCajaRealizada, ParesFabricar = this.Maquina.CantidadCaja });

                    //ClienteMqtt.Publicar(string.Format("/{0}/pantalla/{1}/sobrepasado", Maquina.Tipo, ClienteMqtt.clientIp), string.Format("{0};{1}/{2};", Maquina.Nombre,this.Maquina.CantidadCajaRealizada, this.Maquina.CantidadCaja), 2);
                }
                else
                {
                    //Store.TCPCliente.EnviarMensaje(new MensajeTCPOkPrensa { NombrePrensa = Maquina.Nombre});
                }

                if (this.Maquina.CantidadCaja <= this.Maquina.CantidadCajaRealizada)
                {
                    ClienteMqtt.Publicar(string.Format("/{0}/pantalla/{1}/sobrepasado", Maquina.Tipo, ClienteMqtt.clientIp), string.Format("2;{0};{1}/{2}", Maquina.Nombre, this.Maquina.CantidadCajaRealizada, this.Maquina.CantidadCaja), 1);

                    //Store.TCPCliente.EnviarMensaje(new MensajeTCPErrorPrensa { NombrePrensa = Maquina.Nombre, ParesFabricados = this.Maquina.CantidadCajaRealizada, ParesFabricar = this.Maquina.CantidadCaja });
                }
                else
                {
                    ClienteMqtt.Publicar(string.Format("/{0}/pantalla/{1}/desobrepasado", Maquina.Tipo, ClienteMqtt.clientIp), string.Format("3;{0};{1}/{2}", Maquina.Nombre, this.Maquina.CantidadCajaRealizada, this.Maquina.CantidadCaja), 1);

                    //Store.TCPCliente.EnviarMensaje(new MensajeTCPOkPrensa { NombrePrensa = Maquina.Nombre });
                }
            }
            catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
Beispiel #2
0
        private void SuscribirTopicLecturaPDA()
        {
            try
            {
                /*Store.TCPServidor.OnMensajeRecibido += (s, ev) =>
                 * {
                 *  MensajeTCP mensaje = AnalizadorMensajes.ObtenerMensaje(ev.Mensaje);
                 *  if(mensaje != null)
                 *  {
                 *      switch (mensaje.Tipo)
                 *      {
                 *          case Entidades.Enum.TipoMensajeTCP.cambiarIpPda:
                 *              {
                 *                  Store.TCPCliente.Conectar((mensaje as MensajeTCPCambioIpPda).Ip);
                 *                  break;
                 *              }
                 *
                 *          case Entidades.Enum.TipoMensajeTCP.fichaje:
                 *              {
                 *                  MensajeTCPFichaje mensajeFichaje = mensaje as MensajeTCPFichaje;
                 *                  FichajeAgente.EtiquetaFichada(mensajeFichaje.CodigoMaquina);
                 *                  FichajeAgente.EtiquetaFichada(mensajeFichaje.CodigoBarquilla);
                 *                  break;
                 *              }
                 *          default: { break; }
                 *      }
                 *  }
                 *
                 * };*/

                Entidades.Util.Topic topicLectura = new Entidades.Util.Topic("/moldeado/pantalla/" + ClienteMqtt.clientIp + "/lectura", (byte)1);
                topicLectura.OnMensajeRecibido += (se, ev) =>
                {
                    /* LecturaPDA lectura = JsonConvert.DeserializeObject<LecturaPDA>(ev.Cuerpo);
                     * FichajeAgente.EtiquetaFichada(lectura.CodigoMaquina);
                     * FichajeAgente.EtiquetaFichada(lectura.CodigoBarquilla);*/
                    string[] partes = ev.Cuerpo.Split(';');
                    if (partes.Length == 3)
                    {
                        FichajeAgente.EtiquetaFichada(partes[1].Trim());
                        FichajeAgente.EtiquetaFichada(partes[2].Trim());
                    }
                };

                Entidades.Util.Topic topicHojaProduccion = new Entidades.Util.Topic("/moldeado/pantalla/" + ClienteMqtt.clientIp + "/hojaProduccion", (byte)1);
                topicHojaProduccion.OnMensajeRecibido += (se, ev) =>
                {
                    if (Store.Operario != null)
                    {
                        ClienteMqtt.Publicar(string.Format("/operario/imprimir/moldeado/hojaProduccion"), "{\"IdOperario\": " + Store.Operario.Id + "}", 2);
                    }
                };
                ClienteMqtt.Suscribir(topicLectura);
                ClienteMqtt.Suscribir(topicHojaProduccion);
            }
            catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
        private void MqttAsociarBarquilla(List <SP_BarquillaBuscarInformacionEnSeccion_Result> prepaquete, Maquinas maquina, bool asociacion = true)
        {
            try
            {
                string nombreCliente = prepaquete.First().NOMBRECLI ?? "ARNEPLANT S.L.";
                nombreCliente = new Regex("[^A-Za-z0-9 ]").Replace(nombreCliente, " ");
                if (nombreCliente.Length > 25)
                {
                    nombreCliente = nombreCliente.Substring(0, 24);
                }

                string mensaje = string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};{10};{11};{12};{13};",
                                               maquina.Posicion
                                               , prepaquete.First().IdTarea.ToString().PadLeft(10, '0')
                                               , prepaquete.First().CantidadFabricar.ToString().PadLeft(10, '0')
                                               , prepaquete.First().Codigo.PadLeft(13)
                                               , prepaquete.First().CodUtillaje.PadLeft(25)
                                               , prepaquete.First().IdUtillajeTalla.PadLeft(10)
                                               , prepaquete.First().Talla.PadLeft(10)
                                               , prepaquete.First().CodigoEtiqueta.PadLeft(13)
                                               , prepaquete.First().IdOrden.ToString().PadLeft(10, '0')
                                               , prepaquete.First().IdOperacion.ToString().PadLeft(10, '0')
                                               , nombreCliente.PadLeft(25)
                                               , prepaquete.First().CodigoArticulo.PadLeft(20)
                                               , prepaquete.First().Productividad.ToString().PadLeft(3)
                                               , maquina.OperarioACargo.Id.ToString().PadLeft(5));

                ClienteMqtt.Publicar(string.Format("/{0}/plc/{1}/asociarTarea", maquina.Tipo, maquina.IpAutomata.PadLeft(3)), mensaje, 1);


                maquina.CargarInformacion(new AsociacionTarea
                {
                    Cliente        = prepaquete.First().NOMBRECLI,
                    CodigoArticulo = prepaquete.First().CodigoArticulo,
                    CodigoOrden    = prepaquete.First().Codigo,
                    IdOperacion    = prepaquete.First().IdOperacion,
                    IdOrden        = prepaquete.First().IdOrden,
                    Utillaje       = prepaquete.First().CodUtillaje,
                    TallaUtillaje  = prepaquete.First().IdUtillajeTalla,
                    TallasArticulo = prepaquete.First().Tallas,
                    IdTarea        = prepaquete.First().IdTarea ?? 0,
                    Pares          = prepaquete.First().CantidadFabricar.HasValue ? (int)prepaquete.First().CantidadFabricar : 0,
                    CodigoEtiqueta = prepaquete.First().CodigoEtiqueta,
                    IdOperario     = maquina.OperarioACargo.Id,
                    ParesUtillaje  = (int)prepaquete.First().Productividad,
                    Prensa         = maquina.Posicion,
                    CantidadCaja   = prepaquete.Sum(x => x.Cantidad),
                });
            }
            catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
Beispiel #4
0
 private void MqttInformarUbicacion(CambioUbicacion cambio)
 {
     try
     {
         ClienteMqtt.Publicar("/ubicacion", JsonConvert.SerializeObject(cambio), 1);
     }
     catch (Exception ex)
     {
         new Log().Escribir(ex);
     }
 }
 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     try
     {
         ClienteMqtt.Cerrar();
         // Store.TCPCliente.Desconectar();
         // Store.TCPServidor.Desconectar();
     }
     catch (Exception ex)
     {
         new Log().Escribir(ex);
     }
 }
 public void Desuscribir()
 {
     try
     {
         ClienteMqtt.Desuscribir(this.topicNormal);
         ClienteMqtt.Desuscribir(this.topicCalentar);
         ClienteMqtt.Desuscribir(this.topicAsociarTarea);
         this.topicNormal.OnMensajeRecibido       -= TopicNormal_OnMensajeRecibido;
         this.topicCalentar.OnMensajeRecibido     -= TopicCalentar_OnMensajeRecibido;
         this.topicAsociarTarea.OnMensajeRecibido -= TopicAsociarTarea_OnMensajeRecibido;
     }
     catch (Exception ex)
     {
         new Log().Escribir(ex);
     }
 }
        public PrensaGenericaControl(Maquinas maquina, Operarios op)
        {
            InitializeComponent();
            this.DataContext            = this;
            this.Maquina                = maquina;
            this.Maquina.OperarioACargo = op;
            this.MinHeight              = 30;
            Grid.SetRow(this, (int)maquina.Top);
            Grid.SetColumn(this, (int)maquina.Left);
            Maquina.OnParesConsumidos          += Maquina_OnParesConsumidos;
            Maquina.OnInfoEjecucionActualizada += Maquina_OnInfoEjecucionActualizada;
            Maquina.OnModoCambiado             += Maquina_OnModoCambiado;
            Maquina.OnFichajeMaquina           += Maquina_OnFichajeMaquina;
            this.PreviewMouseUp += PrensaLayout_PreviewMouseUp;

            this.timerCalentamiento          = new DispatcherTimer();
            this.timerCalentamiento.Interval = new TimeSpan(0, 0, 0, 0, 400);
            this.timerCalentamiento.Tick    += TimerCalentamiento_Tick;;
            this.timerInactividad            = new DispatcherTimer();
            this.timerInactividad.Interval   = new TimeSpan(0, 10, 0);
            this.timerInactividad.Tick      += TimerInactividad_Tick;
            this.timerLimiteCaja             = new DispatcherTimer();
            this.timerLimiteCaja.Interval    = new TimeSpan(0, 0, 30);
            this.timerLimiteCaja.Tick       += TimerLimiteCaja_Tick;

            this.timerLimiteCaja.Start();
            this.timerInactividad.Start();

            this.PreviewMouseDown += PrensaGenericaControl_PreviewMouseUp;


            try
            {
                BackgroundWorker            bwActualizarCola = new BackgroundWorker();
                List <MaquinasColasTrabajo> cola             = new List <MaquinasColasTrabajo>();
                Maquinas maquinaDb = null;
                List <MaquinasRegistrosDatos> paquetesHistorico = new List <MaquinasRegistrosDatos>();
                DateTime ahora = DateTime.Now;
                Turno    turno = HorarioTurnos.CalcularTurnoAFecha(ahora);
                DateTime fechaInicio;
                DateTime fechaFin;
                HorarioTurnos.CalcularHorarioTurno(turno, ahora, out fechaInicio, out fechaFin);

                maquina.Pulsos.Clear();

                bwActualizarCola.DoWork += (se, ev) =>
                {
                    maquinaDb         = daoPuesto.ObtenerMaquinaConColaTrabajo(maquina.ID);
                    paquetesHistorico = daoTarea.ObtenerHistoricoParesOperario(op.Id, maquina.IpAutomata, maquina.Posicion, fechaInicio, fechaFin);
                };
                bwActualizarCola.RunWorkerCompleted += (se, ev) =>
                {
                    cola = maquinaDb.MaquinasColasTrabajo.ToList();
                    this.Maquina.IpAutomata     = maquinaDb.IpAutomata;
                    this.Maquina.Posicion       = maquinaDb.Posicion;
                    this.Maquina.PosicionGlobal = maquinaDb.PosicionGlobal;

                    this.topicNormal                          = new Topic(string.Format("/{0}/plc/{1}/normal", maquina.Tipo, maquina.IpAutomata), (byte)2, this.Maquina.Nombre);
                    this.topicCalentar                        = new Topic(string.Format("/{0}/plc/{1}/calentar", maquina.Tipo, maquina.IpAutomata), (byte)1, this.Maquina.Nombre);
                    this.topicAsociarTarea                    = new Topic(string.Format("/{0}/plc/{1}/asociarTarea", maquina.Tipo, maquina.IpAutomata), (byte)1, this.Maquina.Nombre);
                    this.topicNormal.OnMensajeRecibido       += TopicNormal_OnMensajeRecibido;
                    this.topicCalentar.OnMensajeRecibido     += TopicCalentar_OnMensajeRecibido;
                    this.topicAsociarTarea.OnMensajeRecibido += TopicAsociarTarea_OnMensajeRecibido;

                    maquina.AsignarColaTrabajo(cola);

                    ClienteMqtt.Suscribir(this.topicNormal);
                    ClienteMqtt.Suscribir(this.topicCalentar);
                    ClienteMqtt.Suscribir(this.topicAsociarTarea);

                    foreach (var paquete in paquetesHistorico.Where(x => x.PiezaIntroducida))
                    {
                        Maquina.Pulsos.Add(new PulsoMaquina
                        {
                            CodigoEtiqueta = paquete.CodigoEtiqueta,
                            Control        = daoTarea.BuscarControlGuardado(paquete.IdOperacion, Maquina.IdTipo ?? 0),
                            Ciclo          = paquete.Ciclo,
                            Fecha          = paquete.FechaCreacion,
                            Pares          = paquete.Pares,
                            PosicionGlobal = Maquina.PosicionGlobal ?? 0,
                            IdOperario     = paquete.IdOperario,
                        });
                    }
                    Notifica("Maquina");
                    Loader.Visibility         = Visibility.Collapsed;
                    PanelPrincipal.Visibility = Visibility.Visible;
                };

                bwActualizarCola.RunWorkerAsync();
            }
            catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
        private void TopicNormal_OnMensajeRecibido(object sender, Entidades.Eventos.MqttMensajeRecibidoEventArgs e)
        {
            timerCalentamiento.Stop();
            try
            {
                ConsumoPrensa consumo = JsonConvert.DeserializeObject <ConsumoPrensa>(e.Cuerpo);
                if (consumo == null)
                {
                    new Log().Escribir("consumo nulo");
                }

                if (consumo.Prensa != this.Maquina.Posicion)
                {
                    return;
                }

                if (this.Maquina.Modo != Entidades.Enum.ModoMaquina.Normal)
                {
                    this.Maquina.CambiarModo(Entidades.Enum.ModoMaquina.Normal);
                }

                this.Maquina.CargarInformacion(consumo);

                if (this.Maquina.TrabajoEjecucion != null)
                {
                    this.Maquina.Pulsos.Add(new PulsoMaquina
                    {
                        PiezaIntroducida = consumo.PiezaIntroducida == 1,
                        CodigoEtiqueta   = this.Maquina.TrabajoEjecucion.CodigoEtiquetaFichada,
                        Control          = new OperacionesControles
                        {
                            IdTipoMaquina           = 1,
                            TiempoBaseEjecucion     = 0.01,
                            TiempoCambioBarquilla   = 0.3,
                            TiempoInicio            = 0,
                            TiempoUtillajeEjecucion = 0.1,
                        },
                        Ciclo          = consumo.SgCiclo,
                        Fecha          = DateTime.Now,
                        IdOperario     = Maquina.OperarioACargo.Id,
                        PosicionGlobal = Maquina.PosicionGlobal ?? 0,
                        Pares          = (consumo.ParesUtillaje == 0?1:consumo.ParesUtillaje) * consumo.NumMoldes,
                    });

                    if (consumo.PiezaIntroducida == 1)
                    {
                        this.Maquina.InsertarPares(this.Maquina.TrabajoEjecucion, consumo.NumMoldes * (consumo.ParesUtillaje == 0 ? 1 : consumo.ParesUtillaje));
                    }

                    Notifica("Maquina");
                }
                else
                {
                    BackgroundWorker            bw          = new BackgroundWorker();
                    List <MaquinasColasTrabajo> colaTrabajo = new List <MaquinasColasTrabajo>();
                    bw.DoWork += (se, ev) =>
                    {
                        colaTrabajo = daoPuesto.ObtenerColaTrabajoMaquina(this.Maquina.ID);
                    };
                    bw.RunWorkerCompleted += (se, ev) =>
                    {
                        if (colaTrabajo.Count == 0)
                        {
                            ClienteMqtt.Publicar(string.Format("/{0}/fallo/{1}", Maquina.Tipo, this.Maquina.IpAutomata.PadLeft(3)),
                                                 string.Format("El automata {0} con maquina {1} no tiene cola de trabajo", Maquina.IpAutomata, Maquina.Posicion), 1);
                        }
                        Maquina.AsignarColaTrabajo(colaTrabajo);
                    };
                    bw.RunWorkerAsync();
                }
            }catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
 private void Maquina_OnFichajeMaquina(object sender, Entidades.Eventos.FichajeAsociacionEventArgs e)
 {
     ClienteMqtt.Publicar(string.Format("/{0}/pantalla/{1}/desobrepasado", Maquina.Tipo, ClienteMqtt.clientIp), string.Format("{0};{1}/{2};", Maquina.Nombre, this.Maquina.CantidadCaja, this.Maquina.CantidadCajaRealizada), 2);
 }