RD_SYS_T YS_T " Leer Reloj TIA Portal 1200 " RD_S Ya habiamos visto como leer y escribir la hora en un PLC S7-200, en este caso vamos a verlo con su sucesor 1200, pero el objetivo es ejecutar periodicamente una acción a una hora determinada, para ello usaremos la función de leer la fecha y hora del sistema. Lo primero que vamos ha hacer una vez que estamos online con el PLC, va a ser Ajustar hora en el PLC, esta opción no estaba disponible en todos todos los 200, sin embargo aqui si que es posible, si observamos en online y diagnostico -> Funciones ->Ajustar Hora, por defecto tiene establecida 01-1-1970, como voy a sincronizarlo con el PC/PG, seleccionamos el controlBox y pulsamos aplicar, con ello ya tenemos el reloj del PLC ajustado
Una vez relaizado el primer paso, vamos a crear una nueva FB, donde donde los parametros de entrada van a ser la hora de inicio y los minutos al igual que la hora de finalización y los minutos, como va a ser una acción diaria, no nos hace falta saber el dia, en caso necesario habria que adaptar el código. Como parametro de salida tenemos Salida, valga la redundancia y Resultado_RDT, esta variable es el resultado de haber ejecutado la funcion RD_SYS_T, como se verá posteriormente. Como variable estaticas, declaramos una del tipo DTL que nos hace el trabajo de saber,año,mes,dia,hora,minutos,segundos En este caso tenemos las variables temporales, que su función va a ser pasar las horas a minutos y a su vez sumar los minutos correspondientes, esto nos va a facilitar hacer las comparaciones, ya que solo usaremos esa variable para saber si estamos dentro del rango (horario) que nos interesa. El código es el siguiente, donde se ha contemplado una observación realizada por parte de un compañero, que pasa si antes de ejecutarse se va la tensión y vuelve a los 5 minutos cuando ya ha pasado la hora de inicio, pues en el segundo ELSIF del código se contempla esta opción y en caso de que pasará, automaticamente se activaria si es el caso. Una vez compilada la función ya podemos insertarla en nuestro FC,OB, etc ... y así es como quedaria, y dado por supuesto que las horas y minutos se van ha introducir en su rango, es decir 00:00-23:59 A su vez, tambien podemos observar, el DB asociado al FB de instancia Una vez que se ejecuta en Online podemos observar la FB y los valores que se obtienen de las diferentes funciones
¿Cómo hay que realizar la declaración de los temporizadores y contadores en STEP 7 (TIA Portal) V12 para el S7-1500?
¿Qué funciones están disponibles en STEP 7 V5.5 y TIA Portal V11 para elaborar los tipos de datos DT y DTL?
En STEP 7 (TIA Portal) V11, ¿cómo se puede planificar un evento de programa para un S7-1200?
¿Cómo se puede introducir la fecha y hora en el STEP 7 (TIA Portal) V11 para los equipos S7300/400/1200, leerse y continuar editándola?
¿Por qué no se
actualiza el estado online del temporizador en el STEP 7 (TIA Portal) V11?
¿Cómo se implementa en el STEP 7 V11 un reloj semanal para el SIMATIC S7-1200?
¿Cómo se calcula en el STEP 7 V11 el tiempo de servicio de un equipo final (por ejemplo, una bomba)?
Mostrar referencias
En este artículo se describe el tema "Utilización de temporizadores en el programa" y se muestran los diferentes procedimientos con STEP 7 V5.x y STEP 7 (TIA Portal) V12.
Por motivos de compatibilidad con el STEP 5, en STEP 7 se dispone de la posibilidad de utilizar temporizadores y contadores S5. Estos temporizadores y contadores son globales y se direccionan a través de un número. Al arrancar el temporizador/contador y al llamar al modo "Rango de valores" y "Precisión", se define por ejemplo si el temporizador se comportará con retardo a la conexión o el contador debe contar de manera ascendente. Al llamarlos y parametrizarlos hay que tener en cuenta las siguientes propiedades del sistema:
Los programas dependen de la numeración de manera fija.
Los bloques con temporizadores / contadores S5 no se pueden utilizar varias veces.
El rango de valores del temporizador está limitado a 9990 segundos y el del contador a un máximo de 999.
Las bases de tiempo son las siguientes: 0.01 .. 9.99, 0.1 … 99.9, 1 … 999, 10 … 9990 segundos.
La precisión del temporizador depende de la base seleccionada.
Declare los temporizadores y contadores en el bloque en el que se llaman o se utilizan. Los temporizadores IEC tiene una estructura de tipo IEC-TIMER, IEC-LTIMER, TON_TIME, o TON_LTIME, la cual también se puede declarar como variable local dentro de un bloque.
Los bloques se pueden llamar varias veces con nuevos bloques de datos de instancia creados.
Los bloques disponen de un rango de contaje superior y la precisión del temporizador ya no depende de la base de tiempo.
Los temporizadores IEC tienen mejor rendimiento en comparación con los temporizadores S5.
La figura 01 muestra 2 ejemplos de este procedimiento: el temporizador IEC "SwitchDelay" se ha declarado como variable local de tipo "TON_TIME" y el contador IEC "CountDB" se ha declarado como variable local de tipo "CTU_INT".
Figura 01
Las funciones y soluciones descritas en este artículo se limitan principalmente a la implementación de la tarea de automatización. Por favor, tenga además en cuenta tomar las correspondientes medidas de protección respecto a la seguridad en Internet, al conectar su instalación con otras partes de la instalación, la red de la empresa o Internet. Información adicional al respecto está disponible en la página del Customer Support con número ID 50203404.
Las imágenes de este FAQ se han creado con el producto STEP 7 V12.
Mostrar referencias
Para extraer y elaborar los valores de año, mes, día y hora del tipo de datos "DATE_AND_TIME", se necesitan diferentes instrucciones y funciones en STEP 7 (TIA Portal) V11 y STEP 7 V5.5. Estas instrucciones están disponibles en la paleta "Instrucciones ampliadas" y "Fecha y hora" del STEP 7 V11. Para STEP 7 V5.5 se necesitan las funciones
estándar IEC contenidas en la "librería estándar" del STEP 7.
Figura 01 La figura 01 muestra las diferentes funciones que se necesitan para extraer los diferentes formatos de datos (TOD, DATE, INT, DINT y TIME) del tipo de datos DT o DTL. La siguiente tabla contiene un resumen de las funciones para cada una de las versiones de STEP 7 y para
las CPUs:
WR_SYS_T
WR_SYS_T
SFC 0 "SET_CLK" Ajuste de la fecha/hora
RD_SYS_T
RD_SYS_T
SFC 1
Lectura de la fecha/hora
"READ_CLK"
T_CONV
T_CONV
*
FC 6 DT_DATE
Conversión y extracción de los valores de tiempo
FC 7 DT_DAY
Conversión y extracción de los valores de tiempo
FC 8 DT_TOD
Conversión y extracción de los valores de tiempo
T_COMBINE T_COMBINE FC3 D_TOD_DT
Agrupación de los valores de tiempo
T_COMP
-
FC 9 "EQ_DT"
Comparación de los valores de tiempo
T_ADD
T_ADD
FC 1 "AD_DT_TM" Suma de valores de tiempo
T_SUB
T_SUB
FC 34
Resta de valores de tiempo
"SB_DT_DT"
FC35 "SB_DT_TM" Resta de valores de tiempo
T_DIFF
*
T_DIFF
-
Diferencia de valores de tiempo
En el S7-1200 se puede acceder de forma directa y simbólicamente a los componentes de la
estructura de la variables DTL.
Diferencia entre el tipo de datos DT y el tipo de datos DTL:
El tipo de datos "DT" guarda los datos de la fecha y hora en formato BCD, es decir, con una longitud de 8 bytes.
Una variable de tipo de datos "DTL" tiene una longitud de 12 bytes y guarda los datos de la fecha y hora en una estructura predefinida.
Si se declara una variable (por ejemplo, dentro de un bloque de datos) con tipo de datos DTL, se puede acceder a cada uno de los componentes de la estructura de las variables estructuradas.
Figura 02 Información detallada adicional sobre las funciones y la parametrización está disponible en la ayuda online de cada versión de STEP 7. Para obtener la ayuda, seleccione el bloque y haga clic sobre la tecla "F1".
Las imágenes de este FAQ se han comprobado con STEP 7 V11 + SP2.
Mostrar referencias
Esta entrada incluye la descarga "ClockAlarm_V11 SP2.zip" que se puede usar para planificar un evento de programa en el S7-1200. Hay que descargar y descomprimir el fichero en un directorio independiente del disco duro y abrir entonces la pestaña de tareas "Librerías" del
TIA Portal. Añadir lalibrería "ClockAlarm_V11 SP2" a la librería global. Con la instrucción "ClockAlarm" es posible planificar eventos una vez, o cada año, mes, día, hora, minuto o segundo. La instrucción "ClockAlarm" comprueba la hora del sistema frente a los parámetros configurados.
Usar la instrucción "ClockAlarm" para configurar un evento diario a las 4.30 p.m. hora local. En la tabla "parámetros de ClockAlarm" dada más abajo se ofrece información detallada sobre todos los parámetros.
Habilitar las entradas "Enable hour", "Enable minute" y "Local time" (poner estas entradas a "1").
Ajustar la entrada "Hour" a "16" y la entrada "Minute" a "30".
Deshabilitar todas las demás entradas (poner estos parámetros a "0").
Conectar la salida "OUT" con una variable de tipo de dato "Bool" a su elección (por ejemplo, la M2.0 "WakeUp").
Conectar la salida "Out_of_Range" con una variable de tipo de dato "Bool" a su elección (por ejemplo, la M2.1 "OutOfRange"). En consecuencia, esta salida digital está programada a las 4.30 p.m. hora local cada día.
Véase la figura 01 para obtener más detalles.
Fig. 01 La siguiente tabla proporciona información sobre los parámetros de la instrucción "ClockAlarm".
Entrada
Year
UInt
1970..2554
Entrada
Enable Year
Bool
"1" = Habilitar evaluación de año, "0" = Deshabilitar (no supervisado)
Entrada
Month
Entrada Enable Month
UInt
1...12
Bool
1" = Habilitar evaluación de mes, "0" = Deshabilitar (no supervisado)
Entrada
Day
USInt
0...31
Entrada
Enable Day
Bool
1" = Habilitar evaluación de día, "0" = Deshabilitar (no supervisado)
Entrada
Hour
USInt
0...23
Entrada
Enable hour
Bool
1" = Habilitar evaluación de hora, "0" = Deshabilitar (no supervisado)
Entrada
Minute
Entrada Enable minute
USInt
0...59
Bool
1" = Habilitar evaluación de minuto, "0" = Deshabilitar (no supervisado)
Entrada
Second
USInt
0...59
Entrada
Enable
Bool
1" = Habilitar evaluación de segundo, "0" = Deshabilitar
second
(no supervisado)
Entrada
Week
USInt
1...7; "-1" = día de la semana, "1" = Domingo
Entrada
Enable Week
Bool
1" = Habilitar evaluación de semana, "0" = Deshabilitar (no supervisado)
Entrada
Local time
Bool
"1" = Hora local; "0" = Hora del sistema
Salida
Out
Bool
La fecha y hora actuales se corresponden con los valores de consigna
Salida
Out_of_Range
Bool
Al menos hay una entrada no válida; si "Out_of_Range" = 1, la salida "ENO" se pone a "false" (cero).
ClockAlarm_V11_SP2.zip ( 695 KB )
S7-1200
Cable Ethernet
PG / PC
STEP 7 (TIA Portal) V11 + SP2
Mostrar referencias
Para poder ajustar o leer la fecha y hora de los relojes de las CPUs, se necesita el tipo de datos "DT" (DATA_AND_TIME) para el S7-300/400 y el tipo de datos "DTL" para el S7-1200. El tipo de datos "DT" guarda los datos de la fecha y hora en formato BCD, es decir, con una longitud de 8 bytes. Una variable de tipo "DTL" tiene una longitud de 12 bytes y guarda los datos para la fecha y hora en una estructura predefinida. Información adicional sobre os tipos de datos está disponible en la ayuda online del STEP 7 V11, bajo los conceptos "DT (DATE_AND_TIME)" y "DTL". La siguiente tabla es un resumen de las instrucciones necesarias para ajustar y leer la fecha y
hora en los S7-300/400 y con S7-1200:
WR_SYS_T Ajusta la fecha y hora del reloj de la CPU. La introducción de los datos se realiza en el formato de datos DT (DATA_AND_TIME) en la entrada IN de la instrucción.
RD_SYS_T
Lee la fecha y hora actual del reloj de la CPU. Los datos leídos se muestran en formato DT en la salida OUT de la instrucción.
T_CONV
Esta instrucción convierte el tipo de datos DT en los siguientes tipos de datos:
DATE: para la fecha actual,
INT: para el día de la semana,
TOD (TIME_OF_DAY): para la hora actual.
T_COMBINE Agrupa los formatos de datos DATE y TIME_OF_DAY (TOD) y los convierte al formato de datos DATE_AND_TIME (DT).
WR_SYS_T Ajusta la fecha y hora del reloj de la CPU. La introducción de los datos se realiza en el formato de datos DTL en la entrada IN de la instrucción.
RD_SYS_T
Lee la fecha y hora actual del reloj de la CPU. Los datos leídos se muestran en el formato de datos DTL en la salida OUT de la instrucción.
Tabla 01 Los datos para la fecha, día de la semana y hora se extraen del tipo de datos DT en el S7 300/400, con ayuda de la instrucción "T_CONV". Para ello, hay que llamar 3 veces a la instrucción. El parámetro "IN" se parametriza con variables del tipo de datos "DT" y el parámetro "OUT" se parametriza con las variables definidas del tipo de datos "DATE", "INT" y "TOD". 1.
Conversión de tipo "DT" a tipo "DATE" (para la fecha)
2.
Conversión de tipo "DT" a tipo "INT" (para el día de la semana)
3.
Conversión de tipo "DT" a tipo "TOD" (para la hora)
En el S7-1200 se puede acceder directamente de manera simbólica a los componentes de la estructura de las variables DTL, sin tener que direccionarlas de manera indirecta o sin tener que programarlas con direcciones absolutas. Recomendamos guardar los datos en un bloque de datos global. Declare sus variables en este bloque de datos, por ejemplo nombre "DateTime" con el tipo de datos "DTL", y tras realizar la entrada haga clic sobre el símbolo de la flecha junto a la variable. Los componentes de la estructura (YEAR, MONTH, DAY, ...) se muestran a continuación con sus tipos de datos debajo de las variables DTL.
Figura 01 El proyecto "STEP7_TIA_Portal_V11_DataTime" contiene una estación S7-300 (CPU 3172PN/DP) y una estación S7-1200 (CPU 1214 DCDCDC).
La función FC20 contiene la llamada a la instrucción "RD_SYS_T" en el primer segmen to, para leer la fecha y hora del reloj de la CPU. En el segundo segmento se realiza la extracción de los tipos de datos "DATE", "INT" y "TOD" del formato "DT", con ayuda de la instrucción "T_CONV". Con ayuda del programa en la función FC21, se ajusta la f echa y hora para el reloj de la CPU por medio de la instrucción "WR_SYS_T". Pero para ello, antes hay que agrupar los formatos "DATE" y "Time_of_Day" en el formato "Date_and_Time", con ayuda de la instrucción "T_COMBINE". Los parámetros se parametrizan con ayuda de las variables de los bloques de datos "Read_DT" (para leer los datos) y Write_DT (para escribir los datos).
Con ayuda de las instrucciones "RD_SYS_T" (llamada en el FC1) y "WR_SYS_T" (llamada en el OB1) se ajusta y se lee el reloj de la CPU 1214 DCDCDC. La variable "DB_Set.DateTime" del DB de entrada (para escribir los datos) y la variable "DBStore1.DateTime" del DB de
salida (para leer los datos) son de tipo de datos "DTL". En el programa ejemplo, se han programado 5 variables DTL como tiempos de conexión en 5 días de la semana. De lunes a viernes, la variable "Access_On" (A0.0) tiene el valor "True" de 9:00 a 9:15 horas. El tiempo restante de la semana tiene el valor "False".
DBStore1.DateTime.WEEKDAY Lectura del día de la semana, por ejemplo "2" para el lunes
DBStore1.DateTime.HOUR
Lectura de la hora, por ejemplo "14" para las 14 horas
DBStore1.DateTime.MINUTE
Lectura de los minutos, por ejemplo "24" para el minuto 24
Tabla 02 Accediendo a los componentes de la estructura (por ejemplo, día de la semana, hora o minutos), se pueden programar las tareas de automatización necesarias junto con las funciones de comparación y de salto del STEP 7. 1.
En el segmento 1 de la función FC1 "DTL_Access" se lee la fecha y hora actual con ayuda de la función "RD_SYS_T".
2.
Los segmentos 2 a 4 contienen las operaciones "IN_RANGE" y los comparadores "CMP", con los que se consultan los datos dentro de rangos definidos. En este ejemplo estos rangos son los días entre el 2 y el 6, las horas entre las 9 y las 10, y los minutos entre 0 y 15.
3.
Si se cumplen todas las condiciones programadas y se cumple también la liberación con la variable "Release", la variable "Access_On" en el segmento 5 recibe la señal "True".
4.
Si no se cumple alguna de las condiciones, la señal de la variable "Access_On" se mantiene en "False" (segmento 6) o se resetea.
la descarga adjunta contiene el proyecto de STEP 7 V11 con las funciones arriba descritas. Copie el archivo "STEP7_TIA_Portal_V11_DataTime.zip" en un directorio aparte y a continuación arranque el archivo haciendo doble clic sobre él. Con ello se descomprime automáticamente el proyecto con todos sus subdirectorios. A continuación ya se puede abrir y elaborar el proyecto descomprimido con ayuda del STEP 7 V11. El programa contiene
comentarios en alemán e inglés.
STEP7_TIA_Portal_V11_DataTime.zip ( 3186 KB )
Las imágenes y descargas de este FAQ se han comprobado con el STEP 7 V11 + SP2.
Mostrar referencias
Cuando un temporizador no está completamente conectado, no se actualiza el valor de su estado Online.
Para que se actualice el estado Online del temporizador utilizado, se tiene que conectar un contacto a la salida Q del temporizador, una variable del PLC en ET o a concatenar ambos.
Figura 01
S7-1200, temporizador
Mostrar referencias
Con ayuda de la librería global "S7-1200_WeeklyTimer" aquí suministrada, se puede implementar la función de un reloj semanal en el STEP 7 V11.
La librería global "S7-1200_WeeklyTimer" consta de 3 plantillas:
Program
Cams_data
blocks
Módulo de datos con las variables necesarias para la asignación al FB "WeeklyTimer"
WeeklyTimer Módulo de función para el control de una salida binaria, dependiendo de un tiempo semanal de conexión y desconexión parametrizable.
PLC data
Cam
types
Tipo de datos para asignar un tiempo semanal de conexión y desconexión parametrizables (levas)
Time
Tipo de datos para asignar un tiempo semanal parametrizable (hora de conexión o desconexión)
Watch
Watch
Tabla se supervisión para la visualización y parametrización del
table
table_1
módulo de datos "Cams_data"
El módulo de función "WeeklyTimer" se llama cíclicamente en el STEP 7 V11.
Figura 01 El módulo de función "WeeklyTimer" consta de las siguientes interfases:
Input
Cam
"Cam"
Asignación de la fecha/hora de conexión y desconexión semanal (levas)
Output
DTL
DTL
Asignación del formato de fecha/hora actual en formato DTL
OUT
Bool
Salida binaria que se controla en función del tiempo semanal de conexión y desconexión (Cam)
Los tipos de datos constan de los siguientes estructuras de datos:
Cam
Time
On Time
"Time"
Instante semanal de conexión de levas
Off Time
"Time"
Instante semanal de desconexión de levas
Weekday
Array
Selección del día de la semana (la selección múltiple es
[1..7] de
posible; si no esta seleccionado ningún día de la
Bool
semana, se desactivan los puntos del tiemepo de conexión o desconexión)
Hour
USInt
Asignación de la hora de conexión o desconexión (rango de valores: 0 a 23)
Minute
USInt
Asignación del minuto de conexión o desconexión (rango de valores: 0 a 59)
El reloj semanal "S7-1200_WeeklyTimer" está implementado en forma de módulo de función. Consta de una leva de conexión "Cam", a través de la cual se puede parametrizar una ventana temporal. A través de las levas se indican los puntos de conexión "On Time" y los puntos de desconexión "Off Time", indicado en forma del día de la semana deseado (1 = domingo... 7 = sábado), de la hora (0...23) y del minuto (0...59). Asigne los ajustes de las levas a tr avés de la entrada "Cam". Seleccione como preajuste el tipo de datos "Cam" de un módulo de datos global, con la parametrización a través de los valores de inicio. Asigne en la entrada "DTL" la fecha/hora actual con la que se deben comparar los ajustes de las levas. Para su lectura, seleccione las instrucciones de fecha y hora ampliadas "RD_SYS_T" o "RD_LOC_T". En el instante de conexión, el reloj semanal conecta (activa) la salida "OUT" en caso de que todavía no este conectada. El reloj semanal resetea la salida en el instante de desconexión.
Es posible la selección múltiple de días de la semana. La duración mínima de conexión es de 1 minuto. Si no se ha seleccionado ningún día de la semana para el instante de conexión o desconexión, la fecha/hora parametrizada es irrelevante. Si los instantes de conexión y desconexión son idénticos (día de la semana y hora), tiene preferencia el reseteo de la salida. Si se necesitan varias levas, llame de nuevo al FB "S7-1200_WeeklyTimer" y conecte las salidas a través de una asi gnación OR.
La descarga "S7-1200_WeeklyTimer_project.zip" contiene un proyecto ejemplo con las asignaciones de levas: Leva 1:
Lunes de las 08:00 horas hasta el martes 04:15 horas
Leva 2:
Sábado y domingo de las 16:30 hasta las 23:10
Figura 02: Ejemplo para la parametrización de la leva 1
Librería "S7-1200_WeeklyTimer" para STEP 7 S7-1200_WeeklyTimer.zip ( 602 KB
V11 )
Proyecto ejemplo "S71200_WeeklyTimer_project" para STEP 7 V11
S7-1200_WeeklyTimer_project.zip ( 1652 KB )
El Service Pack 1 para el STEP 7 V11 se puede descarar desde la página del Customer Support con número ID 51696778.
S7-1200 (a partir del Firmware V2.0)
Cable Ethernet
STEP 7 (Professional o Basic) V11 + SP1
Mostrar referencias
Para calcular el tiempo de servicio de un equipo, lea 2 veces consecutivas la fecha y la hora actual de la CPU utilizando para ello la instrucción ampliada "RD_SYS_T". El tiempo calculado es la diferencia de ambos datos leídos, indicados en formato DTL. La figura 01 muestra un ejemplo para el cálculo del tiempo de servicio.
Figura 01 1º caso: Ambos operandos ("StartTime" y "StopTime") tienen el valor "0".
Ambas instrucciones "RD_SYS_T" leen simultáneamente la fecha y hora actual de la CPU. Por eso, la diferencia calculada de ambos tiempos con la instrucción "T_DIFF" es cero.
El valor de la variable de salida "Time" en la instrucción "T_DIFF" se resetea a cero.
2º caso: Comienzo de la medida de tiempo. El operando "StartTime" tiene el valor "1" y el operando "StopTime" tiene el valor "0".
El contacto de apertura "StartTime" es abierto y se interrumpe la lectura de la fecha/hora de la CPU con la instrucción "RD_SYS_T" conectada en serie. El último valor leído en la fecha/hora de la CPU se guarda en la variable temporal "TimeBase".
La segunda instrucción "RD_SYS_T" sigue activa y los datos se guardan en la variable temporal "TimeEnd".
El cálculo de la diferencia entre los valores temporales de ambas variables, "TimeBase" y "TimeEnd", se realiza con ayuda de la instrucción "T_DIFF" y la salida de los tiempos se suma en la variable de salida "Time".
Figura 02 3º caso: Final de la medida de tiempo. Los operandos "StartTime" y "StopTime" tienen el valor "1".
Ambos contactos de apertura, "StartTime" y "StopTime", están abiertos y por tanto se interrumpe la lectura de la fecha/hora de la CPU con ambas instrucciones "RD_SYS_T".
El último valor leído en la fecha/hora de la CPU se guarda en la variable temporal "TiemEnd".
El cálculo de la diferencia entre los últimos valores temporales de ambas variables, "TimeBase" y "TimeEnd", se realiza con ayuda de la instrucción "T_DIFF" y el resultado se transfiere como tiempo de ejecución a la variable de salida "Time".
Información adicional sobre las instrucciones ampliadas está disponible en la ayuda Online del STEP 7 V11, para ello marque primero la instrucción y luego pulse la tecla "F1".
Las imágenes de este FAQ se han creado con el STEP 7 V11.0.