TYPE "UDT_ZC_PRO_PROCESO"
TITLE = UDT_ZC_PRO_PROCESO
VERSION : 0.1
//Tipo de datos proceso
   STRUCT
      ID : Int := 0;   // Identificador Proceso
      EtapaActual : Int := 0;   // Etapa Actual
      EtapaSiguiente : Int := 0;   // Etapa Siguiente
      TipoProceso : Int := 1;   // 0=DESHABILITADO / 1= PRODUCCION / 2 = CIP / 3= SIP / 4= STANDBY
      Estado : Struct   // Estado Proceso
         Arrancando : Bool;   // Arrancando
         EnMarcha : Bool;   // En Marcha
         MarchaPausa : Bool;   // En Marcha o Pausa
         Pausando : Bool;   // Pausando
         Pausado : Bool;   // Pausado
         Reanudando : Bool;   // Reanudando
         Finalizando : Bool;   // Finalizando
         Finalizado : Bool;   // Finalizado
         EnError : Bool;   // En Error
         Enclavado : Bool;   // Enclavado
         AlgunError : Bool;   // Algun Error
         AlgunErrorSistema : Bool;   // Algun Error de sistema
         AlgunAviso : Bool;   // AlgunAviso
         EntidadesCapturadas : Bool;   // Entidades capturadas
         CodEstado : UInt;   // Estado del proceso
      END_STRUCT;
      BitMarcha { S7_SetPoint := 'False'} : "UDT_ZC_MARCHA_PARO_SEC";   // Bit de marcha retardados
      Entidad : Array[1.."N_MAX_ENTIDAD_PROCESO"] of Struct   // Entidades del proceso
         ID : Int;   // Numero de entidad
         Producto : Int;   // Codigo de producto
         Tipo : Bool;   // 0= Captura desde arranque / 1= Captura Usuario
         EstadoDisponible : Bool;   // Entidad disponible
         EstadoCapturada : Bool;   // Entidad capturada por proceso
         OrdenLiberar : Bool;   // Liberar entidad
         OrdenCapturar : Bool;   // Capturar entidad
         OrdenConProducto : Bool;   // Entidad con producto
         OrdenConAgua : Bool;   // Entidad con agua
         OrdenVacia : Bool;   // Entidad vacia
      END_STRUCT;
      Ordenes : Struct   // Ordenes desde PLC
         Marcha : Bool;   // Orden de Marcha
         Paro : Bool;   // Orden de Paro
         Pausa : Bool;   // Orden de Pausa
         Reanudar : Bool;   // Orden  Reanudar
         ResetErrores : Bool;   // Orden Reset Errores
         SaltarEtapa : Bool;   // Orden Saltar Etapa
      END_STRUCT;
      Pulsadores : Struct
         Marcha { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR";   // Pulsador Marcha
         Paro { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR";   // Pulsador Paro
         Pausa { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR";   // Pulsador Pausa
         Reanudar { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR";   // Pulsador Reanudar
         ResetErrores { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR";   // Pulsador Reset Errores
         SaltoEtapa { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR";   // Pulsador Salto Etapa
      END_STRUCT;
      SaltoEtapa : Struct
         NuevaEtapa : Int;   // Nueva etapa introducida desde HMI
         CambioPosible : Bool;   // 1= es posible realizar el cambio
      END_STRUCT;
      Enclavamiento : Struct   // ENCLAVAMIENTOS
         Codigo : Int;   // Codigo
         Sistema : Array[1..8] of Bool;   // ENCLAVAMIENTOS SISTEMA
         Usuario : Array[1..8] of Bool;   // ENCLAVAMIENTOS USUARIO
      END_STRUCT;
      Aviso : Struct
         Codigo : Int;   // Codigo
         Sistema : Array[1..8] of Bool;   // AVISOS SISTEMA
         Usuario : Array[1..8] of Bool;   // AVISOS USUARIO
      END_STRUCT;
      Error : Struct
         Codigo : Int;   // Codigo
         CodigoAux1 : Int;   // Codigo de error auxiliar 1
         CodigoAux2 : Int;   // Codigo de error auxiliar 2
         Sistema : Array[1..8] of Bool;   // ERROR SISTEMA
         Usuario : Array[1..8] of Bool;   // ERROR USUARIO
      END_STRUCT;
      VentanaAviso : Struct
         Mostrar : Bool;   // Mostrar emergente
         Aceptar { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR";
         Cancelar { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR";
         Tipo : Int;   // 0= Aceptar-Cancelar // 1= Solo Aceptar // 2=Solo Cancelar
         CodigoTexto1 : Int;   // Texto Ventana
         CodigoTexto2 : Int;   // Texto Ventana
         CodigoTextoAceptar : Int;   // Texto aceptar
         CodigoTextoCancelar : Int;   // Texto cancelar
      END_STRUCT;
      TiempoEtapa { S7_SetPoint := 'False'} : "UDT_ZC_PRO_TIEMPO_ETAPA";
      LitrosEtapa { S7_SetPoint := 'False'} : "UDT_ZC_PRO_LITROS_ETAPA";
      TON { S7_SetPoint := 'False'} : Array[1..2] of "UDT_ZC_DISP_TON";   // .
      TONR { S7_SetPoint := 'False'} : "UDT_ZC_DISP_TONR";   // TONR Interno
      Aux : Struct
         oldPrimerArranque : Bool;   // Estado anterior primer arranque
         ParoOperador : Bool;   // Memoria de paro operador
         ErroresComprobados : Bool;   // Errores comprobados
         EntidadesDisponibles : Bool;   // Etindades Disponibles
         EntidadesCargadas : Bool;   // Entidades cargadas
         ProArrancadoOK : Bool;   // Proceso arrancado OK
         ProParadoOK : Bool;   // Proceso parado OK
         ProFinalizadoOK : Bool;   // Proceso finalizado OK
         TiempoResetParoOp : USInt;   // Tiempo reset paro operador para quitar el mensaje
         oldEtapa : Int;   // Estado anterior etapa
         oldCodigoEstado : UInt;   // Estado anterior codigo de estado
         SecuenciaArranque : UInt;   // Etapa secuencia de arranque
      END_STRUCT;
      Flanco { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
         F_Arrancando { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco Arrancando
         F_EnMarcha { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco En Marcha
         F_Pausando { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco Pausando
         F_Pausado { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco Pausado
         F_Reanudando { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco Reanudando
         F_Finalizando { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco Finalizando
         F_Finalizado { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco Finalizado
         F_EnError { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco En Error
         F_InformeInicio { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco Inicio Informe
         F_InformeFin { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco Informe Fin
         F_CambioEtapa { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;   // Flanco cambio de etapa
      END_STRUCT;
   END_STRUCT;

END_TYPE

