I've a problem with the timer in the following code;
it only runs the first time, then the set of the bit it's instantaneous.
Anyone see the problem please?
Code: Select all
L "Datos Subida Escalon".Caudal_Total_Instalacion
L "Datos Subida Escalon".Caudal_Escalon_1
<R
SPB uno
L P#240.0 // Apuntamos al caudal del escalon 38, que es el primero que puede ser inferior al de destino, para comprobar la 1ª condicion
T "Datos Subida Escalon".Puntero_8
L P#244.0 // Apuntamos al caudal del escalon 39, que es el primero al que se puede bajar para comprobar la segunda condicion
T "Datos Subida Escalon".Puntero_9
L P#256.7 // Apuntamos al bit del escalon mas alto para comprobar la tercera condicion
T "Datos Subida Escalon".Puntero_10
L P#256.6 // Puntero para activar el bit de escalon correspondiente, empieza en el escalon 39
T "Datos Subida Escalon".Puntero_11
L P#256.7 // Puntero para activar el bit de escalon correspondiente, empieza en el escalon 40
T "Datos Subida Escalon".Puntero_13
L P#256.7 // Apuntamos al bit del escalon mas alto para comprobar la tercera condicion si estamos en el escalon 2
T "Datos Subida Escalon".Puntero_12
L 38 // Ciclos necesarios para poder descender las 39 veces posibles
_004: T "Datos Subida Escalon".Ciclos_Puntero_5
L DBD [DBD 28] // Pasamos el valor del caudal del escalon inferior al de destino
T "Datos Subida Escalon".Caudal_Escalon_Inf_Dest
L DBD [DBD 32] // Pasamos el valor del caudal del escalon de destino
T "Datos Subida Escalon".Caudal_Escalon_Destino
SPA cond
// CONDICIONES SI QUEREMOS BAJAR A 1
uno: L 0.000000e+000
T "Datos Subida Escalon".Caudal_Escalon_Inf_Dest
L "Datos Subida Escalon".Caudal_Escalon_1
T "Datos Subida Escalon".Caudal_Escalon_Destino
L 0
T "Datos Subida Escalon".Ciclos_Puntero_5
L P#252.0
T "Datos Subida Escalon".Puntero_11
// CONDICIONES SI QUEREMOS BAJAR A 1
cond: U(
L "Datos Subida Escalon".Caudal_Total_Instalacion // Primera condicion
L "Datos Subida Escalon".Caudal_Escalon_Inf_Dest
>R
)
SPBNB _003
U(
L "Datos Subida Escalon".Caudal_Total_Instalacion // Segunda condicion
L "Datos Subida Escalon".Caudal_Escalon_Destino
<R
)
L 39
L "Datos Subida Escalon".Ciclos_Puntero_5
-I
_006: T "Datos Subida Escalon".Ciclos_Puntero_6 // Numero de Bit que tenemos que comprobar para la tercera condicion
U DBX [DBD 36] // Tercera condicion
SPBN _005
L S5T#5S // Temporizador de Bajada de Escalon
SE T 40
U DBX [DBD 40]
R T 40
U T 40
S DBX [DBD 40] // Activamos el escalon correspondiente
L "Datos Subida Escalon".Puntero_11
T "Datos Subida Escalon".Valor_Anterior
L 39
L "Datos Subida Escalon".Ciclos_Puntero_5
-I
res: T "Datos Subida Escalon".Ciclos_Puntero_7
R DBX [DBD 48] // Reseteamos los escalones por encima del de destino
L "Datos Subida Escalon".Puntero_13
L P#0.1
-D
T "Datos Subida Escalon".Puntero_13
L "Datos Subida Escalon".Ciclos_Puntero_7
LOOP res
SPA fin
_005: L "Datos Subida Escalon".Puntero_10
L P#0.1
-D
T "Datos Subida Escalon".Puntero_10 //Descendemos un escalon para la tercera condicion
L "Datos Subida Escalon".Ciclos_Puntero_6
LOOP _006 // Volvemos a probar si se cumple la tercera condicion
SPA fin
_003: L "Datos Subida Escalon".Puntero_8
L P#4.0
-D
T "Datos Subida Escalon".Puntero_8 // Descendemos un escalon para la primera condicion
L "Datos Subida Escalon".Puntero_9
L P#4.0
-D
T "Datos Subida Escalon".Puntero_9 // Descendemos un escalon para la segunda condicion
L "Datos Subida Escalon".Puntero_11
L P#0.1
-D
T "Datos Subida Escalon".Puntero_11 // Descendemos un escalon en el bit que debemos activar
L "Datos Subida Escalon".Ciclos_Puntero_5
LOOP _004 // Volvemos a probar si se cumplen las condiciones 1 y 2
fin: NOP 0
Thanks