Uso
de temporizadores en programación SCL.
He creado un pequeño programa que creo que ayudara a
aprender como usar las temporizaciones en programación SCL. Este
programa lo que hace es uso de las tres temporizaciones mas
usuales, TON, TOF y TP, su funcionamiento es el siguiente, en la
entrada I0.0 tenemos un interruptor, cuando este es cerrado la
entrada de disparo IN del temporizador TP pasa a nivel alto lo cual
provoca el disparo de de la temporización pasando a nivel alto la
salida Q de TP y permanecerá así hasta que termine el tiempo fijado
en la entrada PT.
La temporización TOF se inicia o arranca cuando
cuando la salida Q de TP pasa a nivel bajo, después del tiempo
fijado en la entrada PT de TOF su salida pasara a nivel bajo también.
Por si no queda claro, cabe indicar que la salida Q de TOF desde el
primer momento que arranca el programa la salida Q de TOF a estado a
nivel alto y que una vez pasa a nivel bajo la salida Q de TP es
cuando se inicia la temporización, por eso se llama retardo a la
des-conexión.
La temporización TON es arrancada cuando el
interruptor de la entrada I0.0 es cerrado, pasando a nivel alto la
entrada IN de TON y trascurrido el tiempo fijado en PT de TON la
salida Q de TON pasara a nivel alto, quedándose así hasta que se
reinicia la temporización mediante una instrucción
RESET_TIMER, si no hacemos uso de esta instrucción, las
temporizaciones no vuelven a arrancar a un que abramos y volvamos a
cerrar el interruptor de la entrada I0.0.
No se si os habéis dado cuenta de una cosa, sobretodo
cuando he explicado el funcionamiento de TON, pero existe una
diferencia de funcionamiento cuando se usa la temporización TON en
lenguaje de programación SCL a KOP, sobretodo si el tiempo fijado
en PT es de forma directa (T#2s), en programación KOP, cuando la
entrada IN cambia de estado de alto a bajo y volvemos a alto la
temporización TON se ha reiniciado sola. Si el tiempo en PT es
fijado de forma indirecta mediante una variable funciona igual que en
SCL.
Cosas
a tener en cuenta a la hora de trabajar con las temporizaciones.
Como podéis observar en la imagen de bloques del
programa el estado de la entrada I0.0 es la que dispara las
temporizaciones TP y TON, a un que esto se vera mejor leyendo el
programa del bloque, si la entrada esta a nivel bajo, retorna del
bloque sin hacer nada. Si la entrada esta a nivel alto, dispara las
temporalizaciones, estando estas temporalizaciones activas volvemos a
poner la entrada a nivel bajo durante un breve instante sin que
llegue a superar el tiempo de PT, volvemos a poner la entrada a nivel
alto no ocurrirá nada. Pero si una vez activadas las
temporalizaciones dejamos en nivel bajo la entrada I0.0, por tiempo
superior al de PT o indefinido las salidas Q de las temporalizaciones
podríamos decir que se quedan “congeladas”, es decir si las
salidas las teníamos activas a nivel alto así se quedan de forma
permanente aunque halla trascurrido el tiempo de PT. Solo se
actualizaran los estados de las salidas cuando la entrada I0.0 vuelva
a estado alto entonces se actualizaran.
Esto es importante a tener en cuenta, por que si se nos
ocurre poner una temporalización dentro de una sentencia WHILE_DO o
como en el programa una IF esta tendrá que mantener la condición,
hasta que la temporalización halla acabado por que de lo contrario
ya sabemos que la salida Q de la temporalización se puede quedar
congelada.
Si quieres puedes descargarte el programa en el siguiente enlace:
https://drive.google.com/folderview?id=0B_H6mOzK5877fkhVZHlzY1ZIQUlTMzN6MnluaGhOaWsxZExHR2tTU0dIWGI2clYxZkQxaDg&usp=sharing