Uno de los motivos por los que los internautas acaban visitando el blog es porque buscan información sobre los temporizadores en Step7.
Te recuerdo que este tema ya lo tocamos con anterioridad en la entrada Temporizadores Operaciones en Step7 (II) .
Pero la forma de contar el tiempo en nuestro autómata puede ser muy diversa como veremos a continuación:
- Uso de los temporizadores S5 (lo ya comentado)
- Uso de temporizadores IEC en los FB
- Creación de temporizadores
Temporizadores en Step7 - Temporizadores S5
Los temporizadores de S5 son una reminiscencia del anterior Step5 y tienen como características principales:
- Son temporizadores Hardware, esto implica en sí mismo que por cada CPU hay un número finito de ellos (dependiendo de la CPU habrá más o menos)
- La ejecución y disparo no depende del ciclo de scan.
- Hay una mayor variedad que los que podemos encontrar en los temporizadores IEC
¿La ejecución no depende del ciclo de scan? ¿Qué significa esto?
Para que lo entiendas mejor, imagina un temporizador impulso prolongado S_VIMP. Este temporizador arranca con un flanco y la salida está a 1 durante un periodo T independiente de si el pulso que lo generó está a true o a false.
Bien. Pues el temporizador caerá independientemente de en qué fase de del OB1 estemos, esto es: si hacemos una lectura de este temporizador al principio del OB1 y otra al final, el temporizador cambiará de estado en cualquier momento de la ejecución del OB1 (cuando se agote el tiempo lógicamente). Esto implica que dichas lecturas pueden ser diferentes al principio y al final, dependiendo de en qué momento el temporizador cambie de estado.
Digo esto porque como bien sabes las imágenes de entradas y de las salidas se refrescan al principio del OB1 y se mantienen en su estado durante todo el ciclo OB1.
El temporizador S5 no. Es hardware. Corre en paralelo al OB1. Cuando acaba el tiempo se acabó, y cambia el estado allí donde pille.
En principio esto no es ningún problema, pero podría llegar a serlo dependiendo de las circunstancias y la aplicación. Simplemente tenlo en cuenta.
La explicación de todos los que hay y cómo se usan, lo tienes en la entrada ya comentada.
Temporizadores en Step7 - Temporizadores IEC
Los temporizadores IEC tienen unas características diferentes a los S5:
- Son temporizadores Software. Esto hace que no haya un límite definido en su cantidad más allá de la memoria disponible.
- Por ser software sí dependen del ciclo de ejecución (está controlado cuándo pueden cambiar de estado).
- Tenemos una menor variedad debido principalmente a que siguen los estándares IEC centrándose básicamente en los TON y TOF.
Si son software... ¿Cómo se llaman?
Pues mediante unos SFB existentes en las bibiotecas estándar.
- SFB4 para el TON (Retardo a la conexión)
- SFB5 para el TOF (Retardo a la desconexión)
Apreciarás que es un SFB, esto implica en sí mismo la necesidad de un DB.
En el caso de un FC, necesitarás obligatoriamente un DB, pero la ventaja de usarlos en los FB es incluirlo como variable STAT haciendo una multiinstancia no teniendo que declarar el DB ya que la memoria necesaria será reservada en el propio DB del FB en el que se usa.
Luego lo veremos con más detenimiento en el vídeo.
Temporizadores en Step7 - Creando tus propios temporizadores
Hay multitud de ocasiones en que no te van a convencer los temporizadores existentes y vas a necesitar tus propios contadores de tiempo. Así podrás hacerlos de diversas maneras:
- Usando un OB cíclico para contar tiempo
- Usando el tiempo de ciclo del OB1 para contar tiempo.
- Usando la marca de ciclo.
- Usando TIME_TCK para contar
Como ves hay muchas opciones.
OB cíclico para contar tiempo
La idea es simple: Poner una marca o contador en el OB35 por ejemplo que se incremente en 1 cada vez que se ejecuta. Si está programado cada 100ms tendrás una resolución de décimas de segundo que para muchos casos será más que suficiente.
Luego dicho contador o marca podrás tratarlo en el propio OB35 o en cualquier otro punto del programa para su lectura y/o puesta a cero.
Tiempo de ciclo del OB1
Una de las variables temporales que tiene por defecto el OB1 es los milisegundos que ha tardado en ejecutarse el ciclo anterior. Para contar tiempo no tendremos más que sumar los tiempos de los ciclos teniendo el tiempo transcurrido hasta que lo pongamos a cero.
La precisión la dará el ciclo de scan, que en general será de unos pocos milisegundos haciendo que esta sea suficiente para la mayoría de los casos.
También puedes hacer una cuenta atrás. Eso ya a gusto del consumidor.
Marca de ciclo
Como bien sabrás en la CPU puedes programar la marca de ciclo.
Por tanto puedes usar los flancos de la marca de ciclo para sumar o restar tiempo. La precisión te la dará qué bit de la marca uses para contar el tiempo.
TIME_TCK
En este punto no voy a inventar. La ayuda online de Siemens lo explica muy bien, aunque aquí lo copio y pego como resumen:
Para implementar este tipo de temporizadores en S7 se puede utilizar la función del sistema SFC64 "TIME_TCK" y el módulo de función FB103 "IMPULS". El temporizador creado funciona como un impulso prolongado. Se pueden utilizar todos los temporizadores que se quieran sin consumir recursos de "TIMER" en la "CPU".
El principio para crear estos temporizadores es muy simple. Si se debe empezar a contar un tiempo, se lee el valor actual con ayuda del módulo "TIME_TCK" desde la "CPU" y se guarda su valor.
Si, pasado un tiempo, hay que consultar el valor contado hasta entonces, la función FC111 "GET_TIME" recoge este valor desde que se ha comenzado a contar.
La base para crear el temporizador es el registro "TIMETICK" de la "CPU". Para los temporizadores con exactitud de ciclo es suficiente con leer el "TIMETICK" una vez por ciclo, archivar su valor y hacerlo accesible al resto de aplicaciones (FB, FC). Una lectura cíclica y central ahorra tiempo de ciclo. Con ello, el "SFC64" no tiene porqué llamarse para cada temporizador en cada ciclo. Si se necesita un temporizador más exacto, hay que realizar la lectura directa del tiempo del sistema antes de llamar al temporizador.
Como ves, no podrás decir que no hay formas de controlar el tiempo. ¡Ya hubieran querido los hombres grises de Momo tener esta tecnogía!
Para finalizar, y como siempre, te dejo con un vídeo explicativo de todo lo comentado.



