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); } }
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); } }
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); }