Pues seguimos con el PDA, en esta ocasión realizado mediante PLC. Se supone que tenemos una sonda de presión en baja y otra en la bomba de aceite del compresor.
El programa:
Declaramos las variables globales de las entradas analógicas:
Compresor AT %Q*:BOOL; (*la salida para el compresor*)
Declaración de variables en Programa MAIN.
PROGRAM MAIN
VAR
esEscalarPb: Escalar;
Pbaja: INT;
esEscalarPOil: Escalar;
POil: INT;
PDifOil: INT;
TimerPOil: TON;
AlarmaPDA: BOOL;
Rst: BOOL;
END_VAR
(*Lo primero que tenemos que hacer es convertir los puntos de la entrada analógica en unidades físicas, en este caso presión en bar * 100. Y lo hacemos a través de un FB escalar, como vimos en la anterior entrada.*)
esEscalarPb(
Puntos:= PuntosPbaja,
mA4:=-50 ,
mA20:=800 ,
NoPuntos:=32767 ,
OffSet:=0 ,
Out=>Pbaja );
esEscalarPOil(
Puntos:=PuntosPOil ,
mA4:=-50 ,
mA20:=800 ,
NoPuntos:=32767 ,
OffSet:=0 ,
Out=> POil);
(*Calculamos la presión diferencial*)
PDifOil := POil – Pbaja;
(*Temporizamos en caso de que el compresor esté en marcha y la presión diferencial de aceite sea menos de 200 ( 2,00 Kg/cm2).*)
TimerPOil (IN:= Compresor AND PDifOil < 200, PT:= T#30s);
(*Si han pasado 30 seg. con el compresor en marcha y sin presión de aceite se activa el temporizador y hace un Set a la variable Alarma.*)
IF TimerPOil.Q THEN AlarmaPDA := TRUE;END_IF;
(*La alarma permanece activa hasta que activamos Rst para hacer un Reset sobre Alarma.*)
IF Rst THEN AlarmaPDA:=FALSE;END_IF;



