Flancos
 
Fabricantes SCADA Buses Software Hardware

 

Principal
Contenido

Indice de fabricantesForos de automatasSeccion de novedadesSeccion de busqueda Menu
 

Aritmeticas
Booleanas
Logicas
Bloques
Comparador
Varios
Notas
Version 4.0
Flancos
Software

 

 

 Durante todo el año recibimos muchos mail, pidiéndonos información para realizar trabajos sobre autómatas. Así que ahora es el momento para recordaros que necesitamos de vuestra colaboración enviándonos los que ya habéis presentado.

      

  

 

Funcionamiento de los flancos en PL7 (Micro y Junior)
Consideraciones previas:
Cada bit interno %M , entrada %I y salida %Q tiene asociado un registro de 3 bits donde se guarda
 el histórico de estados del bit :
Forz = Estado de forzado del bit.
Ant = Estado anterior del bit.
Act = Estado actual del bit.
                                                                        %M ò %Q
Cada vez que el PLC ejecuta una instrucción  ----(  )    o cualquier otra inst. de asignación sobre el bit , se
efectua el desplazamiento del valor Act al valor Ant de tal forma que al ejecutar una instrucción del tipo
------| P |------  se hace una comparación entre los bits Ant y Act determinando así si hay flanco. Como por
lo general las asignaciones solo se programan una vez , el flanco dura 1 scan .

!!OJO!!  Los SET / RESET , %Mx:=.... NO se ejecutan si no se cumple la condición . Las ----(  )  siempre
se ejecutan .
                                                                                                  %M0
A modo de ejemplo si se programa lo siguiente :   ---------------| P |--------------------- INC %MW0
y se activa el bit %M0 externamente al programa (desde un XBT, un PC etc)  , o sea no se ejecuta ninguna
instrucción de asignación sobre %M0 , el registro histórico no desplaza el estado Act al Ant , con lo cual
ambos bits son siempre diferentes (Ant=0 y Act=1) . Esto implica que siempre se  produce el flanco y
en este caso la palabra  %MW0 se incrementa continuamente  (funcionamiento indeseado).  
     Esta situación NO es un defecto de funcionamiento , sino que se trata simplemente de una forma de tratar
los bits. Esto permite ahorrar tiempo de proceso ya que solo se actualiza el histórico de los bits que estan
programados y no de todos los bits configurados .
En el caso de los bits de entrada %I que esten configurados , su registro históricose actualiza durante el
refresco de las entradas (antes de ejecutar programa ) . 
Soluciones:
  En el caso de tener que detectar el flanco de un bit que se activa externamente desde un terminal exterior ,
hay varias soluciones :
1.- Pasar por un bit intermedio .
    %M0                           %M1
 ---------------|   |--------------------- (   )
    %M1
 ---------------| P |--------------------- INC %MW0
2.- Asignar al final del programa , el bit a sí mismo:
Esto obliga a actualizar el
registro histórico del bit.
    %M0
 ---------------| P |--------------------- INC %MW0
Resto del programa
    %M0                           %M0
 ---------------|   |--------------------- (   )
Ejemplo 1 :
El objetivo de los siguientes ejemplos es únicamente familiarizarse con el uso de flancos.
    %I1.0                           %M0
 ---------------|   |--------------------- (   )
Si se activa %I1.0, activación de %M0.Actualización de
histórico: Bit Ant=0, Bit Act=1.
    %M0
 ---------------| P |--------------------- INC %MW0
Se detecta flanco . Se Incrementa %MW0 una sola vez
por cada paso de 0 a 1 de la entrada.
    %M0                           %M0
 ---------------|   |--------------------- (   )
Se vuelve a actualizar el histórico de %M0 . Bit Ant=1,
 Bit Act =1 por tanto no hay flanco .
    %M0
 ---------------| P |--------------------- INC %MW1
No hay incremento.
En este ejemplo , el funcionamiento es diferente al esperado ya que se han programado 2 asignaciónes
sobre el mismo bit %M0 . 
Ejemplo 2:
    %I1.0                           %M0
 ---------------|   |--------------------- (   )
Si se activa %I1.0, activación de %M0.Actualización de
histórico: Bit Ant=0, Bit Act=1 (siempre que %M20=0 ).
    %M0
 ---------------| P |--------------------- INC %MW0
Se detecta flanco . Se Incrementa %MW0
    %M20                           %M0
 ---------------|   |--------------------- (   )
Se vuelve a actualizar el histórico de %M0 .En función del
 estado de %M20 ocurre que  si M20=0  Bit Ant=1,
 Bit Act =0 por tanto  hay flanco descendente.
Si M20=1 Bit Ant=1, Bit Act =1 por tanto no hay flanco.
    %M0
 ---------------| P |--------------------- INC %MW1
No hay incremento en ningun caso
    %M0
 ---------------| N |--------------------- INC %MW2
Si %M20=0 se incrementa MW2 continuamente a cada
scan .Si %M20=1 no hay incremento.
En este ejemplo , el funcionamiento es diferente al esperado ya que se han programado 2 asignaciónes
sobre el mismo bit %M0 . 
Ejemplo 3:
    %I1.0                           %M0
 ---------------|   |--------------------- ( SET  )
Si se activa %I1.0, activación de %M0.Actualización de
histórico: Bit Ant=0, Bit Act=1 . Hay flanco ascendente.
    %I1.1                           %M0
 ---------------|   |--------------------- (  RESET )
Suponiendo desactivada %I1.1 , la instrucción Reset no se
ejecuta , pero se actualiza el registro historico . Por tanto:
Bit Ant=1, Bit Act=1 .Se pierde el flanco que había .
Si %I1.1 está activada , se detecta flanco descendente.
    %M0
 ---------------| P |--------------------- INC %MW0
No se detecta el flanco.No incrementa en ningun caso.
    %M0
 ---------------| N |--------------------- INC %MW0
Hay incremento a cada scan si I1.0=1 y I1.1=1
En este ejemplo , el funcionamiento es diferente al esperado ya que se han programado 2 asignaciónes
sobre el mismo bit %M0 . 
Ejemplo 4:
    %I1.0                           %M0
 ---------------|   |--------------------- (   )
Si se activa %I1.0, activación de %M0.Actualización de
histórico: Bit Ant=0, Bit Act=1 (Si %M20=0).
    %M0
 ---------------| P |--------------------- INC %MW0
Se detecta flanco . Se Incrementa %MW0
    %M20                           %M0
 ---------------|   |--------------------- (  SET )
Se vuelve a actualizar el histórico de %M0 .En función del
estado de %M20 ocurre que  si M20=0  Bit Ant=1,
Bit Act =1 ya que no ejecuta SET , por tanto NO hay flanco .
Si M20=1 Bit Ant=1, Bit Act =1 por tanto no hay flanco si
%I1.0=1.Si %I1.0=0 se produce flanco ascendente.
    %M0
 ---------------| P |--------------------- INC %MW1
Hay incremento a cada scan si I1.0=0 y M20=1
    %M0
 ---------------| N |--------------------- INC %MW2
No hay incremento en ningun caso
En este ejemplo , el funcionamiento es diferente al esperado ya que se han programado 2 asignaciónes
sobre el mismo bit %M0 . 

 

 

 

 

 

 
Recomendamos

 

¿Te gustaría ver aqui tu publicidad?

publicidad@automatas.org

 

 

 

 

Todos los nombres comerciales que se utilizan en esta web están o pueden estar registrados por sus respectivos fabricantes.

Principal ] Arriba ]

        2000, 2006            Última modificación: 02/03/2006