[?]: Problem With a Timer

SIMATIC S7-200/300/400, Step7, PCS7, CFC, SFC, PDM, PLCSIM,
SCL, Graph, SPS-VISU S5/S7, IBHsoftec, LOGO ...
ChapterD
Posts: 5
Joined: Tue Feb 19, 2008 5:34 pm
Location: Europe

[?]: Problem With a Timer

Post by ChapterD »

Hi.

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