Capitulo 07 Instrucciones Basicas

7 Instrucciones básicas 7.1 Instrucciones lógicas con bits 7.1.1 Contactos y bobinas en instrucciones lógicas con bi

Views 61 Downloads 1 File size 849KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

7

Instrucciones básicas 7.1

Instrucciones lógicas con bits

7.1.1

Contactos y bobinas en instrucciones lógicas con bits KOP y FUP resultan muy efectivos para procesar lógica booleana. Por otro lado, aunque SCL resulta especialmente efectivo para la computación matemática compleja y para estructuras de control de proyectos, se puede utilizar para la lógica booleana.

Contactos KOP Tabla 7- 1 KOP

Tabla 7- 2

Contactos normalmente abiertos y normalmente cerrados SCL IF in THEN Statement; ELSE Statement; END_IF; IF NOT (in) THEN Statement; ELSE Statement; END_IF;

Descripción Contactos normalmente abiertos y normalmente cerrados: Los contactos se pueden conectar a otros contactos, creando así una lógica combinacional propia. Si el bit de entrada indicado utiliza el identificador de memoria I (entrada) o Q (salida), el valor de bit se lee de la memoria imagen de proceso. Las señales de los contactos físicos del proceso controlado se cablean con los bornes de entrada del PLC. La CPU consulta las señales de entrada cableadas y actualiza continuamente los valores de estado correspondientes en la memoria imagen de proceso de las entradas. La lectura inmediata de una entrada física se indica introduciendo ":P" después del offset I (p. ej. "%I3.4:P"). En una lectura inmediata, los valores de datos de bit se leen directamente de la entrada física y no de la memoria imagen de proceso. La lectura inmediata no actualiza la memoria imagen de proceso.

Tipos de datos para los parámetros

Parámetro

Tipo de datos

Descripción

IN

Bool

Bit asignado

● El contacto normalmente abierto se cierra (ON) cuando el valor de bit asignado es igual a 1. ● El contacto normalmente cerrado se cierra (ON) cuando el valor de bit asignado es igual a 0. ● Los contactos conectados en serie crean segmentos lógicos Y. ● Los contactos conectados en paralelo crean segmentos lógicos O.

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

173

100BInstrucciones básicas 7.1 Instrucciones lógicas con bits

Cuadros Y, O y O-exclusiva en FUP En la programación FUP, los segmentos de los contactos KOP se transforman en segmentos de cuadros Y (&), O (>=1) y O-exclusiva OR (x), en los que pueden indicarse valores de bit para las entradas y salidas de los cuadros. También es posible interconectar cuadros lógicos y crear combinaciones lógicas propias. Tras colocar un cuadro en el segmento, es posible arrastrar la función "Insertar entrada" desde la barra de herramientas "Favoritos" o desde el árbol de instrucciones y soltarla en el lado de entrada del cuadro para agregar entradas adicionales. También se puede hacer clic con el botón derecho del ratón en el conector de entrada del cuadro y seleccionar "Insertar entrada". Es posible conectar las entradas y salidas de los cuadros con un cuadro lógico diferente, o bien introducir una dirección de bit o un nombre simbólico de bit para una entrada no conectada. Cuando se ejecuta el cuadro, los estados actuales de las entradas se aplican a la lógica del cuadro binario y, si se cumplen, la salida del cuadro será verdadera. Tabla 7- 3 FUP

1

Cuadros Y, O y O-exclusiva Descripción

SCL1 out := in1 AND in2;

Todas las entradas de un cuadro Y tienen que cumplirse para que la salida sea TRUE (verdadera).

out := in1 OR in2;

Una entrada cualquiera de un cuadro O tiene que cumplirse para que la salida sea TRUE (verdadera).

out := in1 XOR in2;

Un número impar de entradas de un cuadro O-exclusiva tiene que cumplirse para que la salida sea TRUE (verdadera).

En SCL: El resultado de la operación debe asignarse a una variable para que pueda usarse en otra instrucción.

Tabla 7- 4

Tipos de datos para los parámetros

Parámetro

Tipo de datos

Descripción

IN1, IN2

Bool

Bit de entrada

Controlador programable S7-1200

174

Manual de sistema, 11/2011, A5E02486683-05

100BInstrucciones básicas 7.1 Instrucciones lógicas con bits

Invertir resultado lógico (NOT) Tabla 7- 5 KOP

Invertir resultado lógico (NOT) FUP

SCL NOT

Descripción En la programación FUP es posible arrastrar la función "Negar valor binario" desde la barra de herramientas "Favoritos" o desde el árbol de instrucciones y soltarla en una entrada o salida para crear un inversor lógico en ese conector del cuadro. El contacto NOT KOP invierte el estado lógico de la entrada de flujo de corriente. 

Si no fluye corriente al contacto NOT, hay flujo de corriente en la salida.



Si fluye corriente al contacto NOT, no hay flujo de corriente en la salida.

Bobina de relé y cuadro de asignación La instrucción "Bobina de salida, relé" escribe un valor en un bit de salida. Si el bit de salida indicado utiliza el identificador de memoria Q, la CPU activa o desactiva el bit de salida en la memoria imagen de proceso, poniendo el bit especificado al correspondiente estado de flujo de corriente. Las señales de salida de los actuadores de control se cablean con los terminales Q de la CPU. En el modo RUN, el sistema de la CPU explora las señales de entrada continuamente, procesa los estados de entrada acorde con la lógica del programa de usuario, y a continuación reacciona aplicando nuevos estados lógicos de salida en la memoria imagen de proceso de las salidas. Tras cada ciclo del programa, la CPU transfiere el nuevo estado de las salidas almacenado en la memoria imagen de proceso a los bornes de salida cableados. Tabla 7- 6 KOP

Bobina de relé (KOP) y cuadro de asignación de salida (FUP) FUP

SCL out := ;

out := NOT ;

Descripción En la programación FUP, las bobinas KOP se transforman en cuadros de asignación (= y /=), en los que se indica una dirección de bit para la salida del cuadro. Es posible conectar las entradas y salidas del cuadro con otros cuadros lógicos, o bien introducir una dirección de bit. La escritura inmediata en una salida física se indica introduciendo ":P" después del offset Q (p. ej. "%Q3.4:P"). En una escritura inmediata, los valores de datos de bit se escriben en la memoria imagen de proceso de las salidas y directamente en la salida física.

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

175

100BInstrucciones básicas 7.1 Instrucciones lógicas con bits Tabla 7- 7

Tipos de datos para los parámetros

Parámetro

Tipo de datos

Descripción

OUT

Bool

Bit asignado

● Si fluye corriente a través de una bobina de salida o se habilita un cuadro FUP "=", el bit de salida se pone a 1. ● Si no fluye corriente a través de una bobina de salida o no se habilita un cuadro de asignación FUP "=", el bit de salida se pone a 0. ● Si fluye corriente a través de una bobina de salida invertida o se habilita un cuadro FUP "/=", el bit de salida se pone a 0. ● Si no fluye corriente a través de una bobina de salida invertida o no se habilita un cuadro FUP "/=", el bit de salida se pone a 1.

7.1.2

Instrucciones "Activar salida" y "Desactivar salida"

Activar y desactivar 1 bit Tabla 7- 8 KOP

Instrucciones S y R FUP

SCL

Descripción

No disponible

Si se activa S (Set) el valor de datos de la dirección OUT se pone a 1. Si S no es está activado, OUT no cambia.

No disponible

Si se activa R (Reset), el valor de datos de la dirección de salida OUT se pone a 0. Si no se activa R, no se modifica OUT.

1

En KOP y FUP: Estas instrucciones pueden disponerse en cualquier posición del segmento.

2

En SCL: Es necesario escribir código para duplicar esta función en la aplicación.

Tabla 7- 9

Tipos de datos para los parámetros

Parámetro

Tipo de datos

Descripción

IN (o conectar a contacto/lógica de puerta)

Bool

Dirección de bit que debe vigilarse

OUT

Bool

Dirección de bit que se debe activar o desactivar

Controlador programable S7-1200

176

Manual de sistema, 11/2011, A5E02486683-05

100BInstrucciones básicas 7.1 Instrucciones lógicas con bits

Activar y desactivar mapa de bits Tabla 7- 10 KOP1

Instrucciones SET_BF y RESET_BF FUP

SCL

Descripción

No disponible

Cuando se activa SET_BF, el valor de datos 1 se asigna a "n" bits, comenzando en la dirección OUT. Si SET_BF no se activa, OUT no cambia.

No disponible

RESET_BF escribe el valor de datos 0 en "n" bits, comenzando en la dirección OUT. Si RESET_BF no se activa, OUT no cambia.

1

En KOP y FUP: Estas instrucciones sólo se pueden disponer en el extremo derecho de una rama.

2

En SCL: Es necesario escribir código para duplicar esta función en la aplicación.

Tabla 7- 11

Tipos de datos para los parámetros

Parámetro

Tipo de datos

Descripción

OUT

Bool

Elemento inicial de un mapa de bits que se debe activar o desactivar (ejemplo: #MyArray[3])

n

Constante (UInt)

Número de bits que deben escribirse

Flipflop de activación/desactivación y flipflop de desactivación/activación Tabla 7- 12 KOP / FUP

Instrucciones RS y SR SCL

Descripción

No disponible

RS es un flipflop en el que domina la activación. Si las señales de activación (S1) y desactivación (R) son verdaderas, la dirección de salida OUT se pone a 1.

No disponible

SR es un flipflop en el que domina la desactivación. Si las señales de activación (S) y desactivación (R1) son verdaderas, la dirección de salida OUT se pone a 0.

1

En KOP y FUP: Estas instrucciones sólo se pueden disponer en el extremo derecho de una rama.

2

En SCL: Es necesario escribir código para duplicar esta función en la aplicación.

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

177

100BInstrucciones básicas 7.1 Instrucciones lógicas con bits Tabla 7- 13

Tipos de datos para los parámetros

Parámetro

Tipo de datos

Descripción

S, S1

Bool

Activar entrada; 1 indica dominancia

R, R1

Bool

Desactivar entrada; 1 indica dominancia

OUT

Bool

Salida de bit asignada "OUT"

Q

Bool

Corresponde al estado del bit "OUT"

El parámetro OUT indica la dirección de bit que se activa o desactiva. La salida opcional OUT Q refleja el estado lógico de la dirección "OUT". Instrucción RS

SR

7.1.3

Tabla 7- 14 KOP

S1

R

Bit "OUT"

0

0

Estado anterior

0

1

0

1

0

1

1

1

1

S

R1

0

0

Estado anterior

0

1

0

1

0

1

1

1

0

Instrucciones "Consultar flanco de señal ascendente de un operando" y "Consultar flanco de señal descendente de un operando" Detección de flanco ascendente y descendente FUP

SCL

Descripción

No disponible

KOP: El estado de este contacto es TRUE cuando se detecta un flanco ascendente (OFF a ON) en el bit "IN" asignado. El estado lógico del contacto se combina entonces con el estado de entrada del flujo de corriente para activar el estado de salida del flujo de corriente. El contacto P puede disponerse en cualquier posición del segmento, excepto al final de una rama. FUP: El estado lógico de la salida es TRUE (verdadero) cuando se detecta un flanco ascendente (OFF a ON) en el bit de entrada asignado. El cuadro P sólo se puede disponer al comienzo de una rama.

No disponible

KOP: El estado de este contacto es TRUE (verdadero) cuando se detecta un flanco descendente (ON a OFF) en el bit de entrada asignado. El estado lógico del contacto se combina entonces con el estado de entrada del flujo de corriente para activar el estado de salida del flujo de corriente. El contacto N puede disponerse en cualquier posición del segmento, excepto al final de una rama. FUP: El estado lógico de la salida es TRUE (verdadero) cuando se detecta un flanco descendente (ON a OFF) en el bit de entrada asignado. El cuadro N sólo se puede disponer al comienzo de una rama.

Controlador programable S7-1200

178

Manual de sistema, 11/2011, A5E02486683-05

100BInstrucciones básicas 7.1 Instrucciones lógicas con bits

KOP

FUP

SCL

Descripción

No disponible

KOP: El bit asignado "OUT" es TRUE (verdadero) cuando se detecta un flanco ascendente (OFF a ON) en el flujo de corriente que entra a la bobina. El estado de entrada del flujo de corriente atraviesa la bobina como el estado de salida del flujo de corriente. La bobina P puede disponerse en cualquier posición del segmento. FUP: El bit asignado "OUT" es TRUE (verdadero) cuando se detecta un flanco ascendente (OFF a ON) en el estado lógico de la conexión de entrada del cuadro, o bien en la asignación del bit de entrada si el cuadro está ubicado al comienzo de una rama. El estado lógico de la entrada atraviesa el cuadro como el estado lógico de la salida. El cuadro P= puede disponerse en cualquier posición de la rama.

No disponible

KOP: El bit asignado "OUT" es TRUE (verdadero) cuando se detecta un flanco descendente (ON a OFF) en el flujo de corriente que entra a la bobina. El estado de entrada del flujo de corriente atraviesa la bobina como el estado de salida del flujo de corriente. La bobina N puede disponerse en cualquier posición del segmento. FUP: El bit asignado "OUT" es TRUE cuando se detecta un flanco descendente (ON a OFF) en el estado lógico de la conexión de entrada del cuadro, o bien en la asignación del bit de entrada si el cuadro está ubicado al comienzo de una rama. El estado lógico de la entrada atraviesa el cuadro como el estado lógico de la salida. El cuadro N= puede disponerse en cualquier posición de la rama.

En SCL: Es necesario escribir código para duplicar esta función en la aplicación.

1

Tabla 7- 15 KOP / FUP

Instrucciones P_TRIG y N_TRIG SCL

Descripción

No disponible

El flujo de corriente o estado lógico de la salida Q es TRUE cuando se detecta un flanco ascendente (OFF a ON) en el estado lógico de CLK (en FUP) o en el flujo de corriente de CLK (en KOP). En KOP, la instrucción P_TRIG no se puede disponer ni al comienzo ni al final de un segmento. En FUP, la instrucción P_TRIG puede disponerse en cualquier posición de la rama, excepto al final.

No disponible

El flujo de corriente o estado lógico de la salida Q es TRUE cuando se detecta un flanco descendente (ON a OFF) en el estado lógico de CLK (en FUP) o en el flujo de corriente de CLK (en KOP). En KOP, la instrucción N_TRIG no se puede disponer ni al comienzo ni al final de un segmento. En FUP, la instrucción N_TRIG puede disponerse en cualquier posición de la rama, excepto al final.

En SCL: Es necesario escribir código para duplicar esta función en la aplicación.

1

Tabla 7- 16

Tipos de datos para los parámetros (P y N contactos/bobinas, P=, N=, P_TRIG y N_TRIG)

Parámetro

Tipo de datos

Descripción

M_BIT

Bool

Marca en la que se almacena el estado anterior de la entrada

IN

Bool

Bit de entrada cuyo flanco debe detectarse

OUT

Bool

Bit de salida que indica que se ha detectado un flanco

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

179

100BInstrucciones básicas 7.2 Temporizadores

Parámetro

Tipo de datos

Descripción

CLK

Bool

Flujo de corriente o bit de entrada cuyo flanco debe detectarse

Q

Bool

Salida que indica que se ha detectado un flanco

Todas las instrucciones de detección de flancos utilizan una marca (M_BIT) para almacenar el estado anterior de la señal de entrada que se está vigilando. Un flanco se detecta comparando el estado de la entrada con el estado de la marca. Si los estados indican un cambio de la entrada en el sentido deseado, se notifica un flanco activando la salida (TRUE). De lo contrario, se desactivará la salida (FALSE). Nota Las instrucciones de detección de flancos evalúan los valores de la entrada y de la marca cada vez que se ejecutan, incluyendo la primera ejecución. Los estados iniciales de la entrada y de la marca deben considerarse al diseñar el programa, con objeto de permitir o impedir la detección de flancos en el primer ciclo. Puesto que la marca debe conservarse desde una ejecución hasta la siguiente, es preciso utilizar un bit unívoco para cada instrucción de detección de flancos. Este bit no se puede utilizar en ninguna otra ubicación del programa. También se debe evitar la memoria temporal y la memoria que pueda ser modificada por otras funciones de sistema, p. ej. una actualización de E/S. Utilice sólo el área de marcas (M), DB global o memoria estática (en un DB de instancia) para las asignaciones de memoria de M_BIT.

7.2

Temporizadores Las instrucciones con temporizadores se utilizan para crear retardos programados. El número de temporizadores que pueden utilizarse en el programa de usuario está limitado sólo por la cantidad de memoria disponible en la CPU. Cada temporizador utiliza una estructura de DB del tipo de datos IEC_Timer de 16 bytes para guardar la información del temporizador especificada encima de la instrucción de cuadro o bobina. STEP 7 crea automáticamente el DB al introducir la instrucción.

Tabla 7- 17

Instrucciones con temporizadores

Cuadros KOP / FUP

Bobinas KOP

SCL

Descripción

"IEC_Timer_0_DB".TP( IN:=_bool_in_, PT:=_time_in_, Q=>_bool_out_, ET=>_time_out_);

El temporizador TP genera un impulso con una duración predeterminada.

"IEC_Timer_0_DB".TON ( IN:=_bool_in_, PT:=_time_in_, Q=>_bool_out_, ET=>_time_out_);

El temporizador TON pone la salida Q a ON tras un tiempo de retardo predeterminado.

Controlador programable S7-1200

180

Manual de sistema, 11/2011, A5E02486683-05

100BInstrucciones básicas 7.2 Temporizadores

Cuadros KOP / FUP

Bobinas KOP

SCL

Descripción

"IEC_Timer_0_DB".TOF ( IN:=_bool_in_, PT:=_time_in_, Q=>_bool_out_, ET=>_time_out_);

El temporizador TOF pone la salida Q a OFF tras un tiempo de retardo predeterminado.

"IEC_Timer_0_DB".TONR ( IN:=_bool_in_, R:=_bool_in_ PT:=_time_in_, Q=>_bool_out_, ET=>_time_out_);

El temporizador TONR pone la salida Q a ON tras un tiempo de retardo predeterminado. El tiempo transcurrido se acumula a lo largo de varios periodos de temporización hasta que la entrada R inicializa el tiempo transcurrido.

Sólo FUP:

(Sin equivalencia en SCL)

La bobina PT (Cargar temporizador) carga un nuevo valor de tiempo PRESET (predeterminado) en el IEC_Timer especificado.

Sólo FUP:

(Sin equivalencia en SCL)

La bobina RT (Inicializar temporizador) inicializa el IEC_Timer especificado.

1

STEP 7 crea el DB automáticamente al insertar la instrucción.

2

En los ejemplos SCL, "IEC_Timer_0_DB" es el nombre del DB de instancia.

Tabla 7- 18

Tipos de datos para los parámetros

Parámetro

Tipo de datos

Descripción

Cuadro: IN Bobina: Flujo de corriente

Bool

TP, TON, y TONR: cuadro: 0=deshabilitar temporizador, 1=habilitar temporizador Bobina: Sin flujo de corriente=deshabilitar temporizador, flujo de corriente=habilitar temporizador TOF: Cuadro: 0=habilitar temporizador, 1=deshabilitar temporizador Bobina: Sin flujo de corriente=habilitar temporizador, flujo de corriente=deshabilitar temporizador

R

Bool

Cuadro: PT Time Bobina: "PRESET_variable"

Sólo cuadro TONR: 0=Sin inicialización 1= Inicializar el tiempo transcurrido y el bit Q a 0 Cuadro o bobina de temporizador: Entrada de tiempo predeterminado

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

181

100BInstrucciones básicas 7.2 Temporizadores

Parámetro

Tipo de datos

Descripción

Cuadro: Q Bobina: DBdata.Q

Bool

Cuadro de temporizador: salida de cuadro Q o bit Q en los datos del DB de temporizador Bobina de temporizador: sólo se puede direccionar el bit Q en los datos del DB de temporizador

Cuadro: ET Bobina: DBdata.ET

Time

Cuadro de temporizador: salida de cuadro ET (tiempo transcurrido) o valor de tiempo ET en los datos del DB de temporizador Bobina de temporizador: sólo se puede direccionar el valor de tiempo ET en los datos del DB de temporizador.

Tabla 7- 19

Efecto de los cambios de valores en los parámetros PT e IN

Temporizador TP TON

TOF TONR

Cambios en los parámetros de cuadro PT e IN y en los parámetros de bobina correspondientes 

Un cambio de PT no tiene efecto alguno durante el funcionamiento del temporizador.



Un cambio de IN no tiene efecto alguno durante el funcionamiento del temporizador.



Un cambio de PT no tiene efecto alguno durante el funcionamiento del temporizador.



Si IN cambia a FALSE durante el funcionamiento del temporizador, éste se inicializará y se detendrá.



Un cambio de PT no tiene efecto alguno durante el funcionamiento del temporizador.



Si IN cambia a TRUE durante el funcionamiento del temporizador, éste se inicializará y se detendrá.



Un cambio de PT no tiene efecto alguno durante el funcionamiento del temporizador, pero sí cuando reanuda el contaje.



Si IN cambia a FALSE durante el funcionamiento del temporizador, éste se detendrá pero no se inicializará. Si IN vuelve a cambiar a TRUE, el temporizador comenzará a contar desde el valor de tiempo acumulado.

Los valores PT (tiempo predeterminado) y ET (tiempo transcurrido) se almacenan en los datos de DB IEC_TIMER como enteros dobles con signo que representan milisegundos. Los datos TIME utilizan el identificador T# y pueden introducirse como unidad de tiempo simple ("T#200ms ó 200) y como unidades de tiempo compuestas "T#2s_200ms". Tabla 7- 20 Tipo de datos TIME

1

Tamaño y rango del tipo de datos TIME Tamaño

Rangos válidos1

32 bits, T#-24d_20h_31m_23s_648ms hastaT#24d_20h_31m_23s_647ms almacenados Almacenado como -2.147.483.648 ms hasta +2.147.483.647 ms como datos DInt

El rango negativo del tipo de datos TIME indicado arriba no puede utilizarse con las instrucciones de temporizador. Los valores PT (tiempo predeterminado) negativos se ponen a cero cuando se ejecuta la instrucción de temporización. ET (tiempo transcurrido) es siempre un valor positivo.

Controlador programable S7-1200

182

Manual de sistema, 11/2011, A5E02486683-05

100BInstrucciones básicas 7.2 Temporizadores

Ejemplo de bobina de temporizador Las bobinas de temporizador -(TP)-, -(TON)-, -(TOF)- y -(TONR)- deben ser la última instrucción de un segmento KOP. Como se indica en el ejemplo de temporizador, una instrucción de contacto de un segmento posterior evalúa el bit Q en los datos de DB IEC_Timer de una bobina de temporizador. Del mismo modo, hay que direccionar el elemento ELAPSED en los datos de DB IEC_timer si se desea emplear el valor de tiempo transcurrido en el programa.

El temporizador como impulso arranca en una transición de 0 a 1 del valor de bit Tag_Input. El temporizador se ejecuta durante el tiempo especificado por el valor de tiempo Tag_Time.

Mientras el temporizador se ejecute, el estado de DB1.MyIEC_Timer.Q es 1 y el valor de Tag_Output es 1. Una vez que el valor de Tag_Time ha transcurrido, DB1.MyIEC_Timer.Q es 0 y el valor de Tag_Output es 0.

Bobinas Inicializar temporizador -(RT)- y predeterminar temporizador -(PT)Estas instrucciones de bobina pueden utilizarse con temporizadores de cuadro o bobina y pueden colocarse en una posición central. El estado del flujo de salida de la bobina siempre es el mismo que el estado de entrada de la bobina. Cuando la bobina -(RT)- se activa, el elemento de tiempo ELAPSED de los datos de DB IEC_Timer especificado se reinicia a 0. Cuando la bobina -(PT)- se activa, el elemento de tiempo PRESET de los datos de DB IEC_Timer especificado se reinicia a 0. Nota Si se insertan instrucciones de temporizador en un FB, se puede seleccionar la opción "Bloque de datos multiinstancia". Los nombres de estructura de temporizador pueden ser diferentes con diferentes estructuras de datos, pero los datos del temporizador están contenidos como un bloque de datos único y no requiere un bloque de datos separado para cada temporizador. Esto reduce el tiempo de procesamiento y la memoria de datos necesaria para gestionar los temporizadores. No hay interacción entre las estructuras de datos de los temporizadores en el DB multiinstancia compartido.

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

183

100BInstrucciones básicas 7.2 Temporizadores

Manejo de temporizadores Tabla 7- 21

Tipos de temporizadores IEC

Temporizador

Cronograma

TP: Temporizador como impulso

,1

El temporizador TP genera un impulso con una duración predeterminada.

(7 37

4 37

TON: Temporizador como retardo a la conexión El temporizador TON pone la salida Q a ON tras un tiempo de retardo predeterminado.

37

37

,1

(7 37

4

TOF: Temporizador como retardo a la desconexión El temporizador TOF pone la salida Q a OFF tras un tiempo de retardo predeterminado.

37

37

,1

(7 37

4

TONR: Temporizador como retado a la conexión

37

37

,1

El temporizador TONR pone la salida Q a ON tras un tiempo de retardo predeterminado. El tiempo transcurrido se acumula a lo largo de varios periodos de (7 temporización hasta que la entrada R inicializa el tiempo transcurrido.

37

4

5

Controlador programable S7-1200

184

Manual de sistema, 11/2011, A5E02486683-05

100BInstrucciones básicas 7.2 Temporizadores

Nota En la CPU no se asigna ningún recurso dedicado a ninguna instrucción de temporizador específica. En lugar de eso, cada temporizador utiliza su estructura de temporizador propia en la memoria de DB y un temporizador de funcionamiento continuo interno de la CPU para la temporización. Cuando se arranca un temporizador debido a un flanco en la entrada de una instrucción TP, TON, TOF o TONR, el valor del temporizador de funcionamiento continuo interno de la CPU se copia en el miembro START de la estructura del DB asignado a esta instrucción de temporizador. Este valor de arranque permanece inalterado mientras el temporizador continúa funcionando, y se vuelve a utilizar cada vez que el temporizador se actualiza. Cada vez que el temporizador arranca se carga un nuevo valor en la estructura de temporizador del temporizador interno de la CPU. Cuando se actualiza un temporizador, el valor de arranque arriba descrito se resta del valor actual del temporizador interno de la CPU para determinar el tiempo transcurrido. El tiempo transcurrido se compara entonces con el predeterminado para determinar el estado del bit Q del temporizador. Los miembros ELAPSED y Q se actualizan en la estructura de DB asignada a este temporizador. Recuerde que el tiempo transcurrido se detiene en el valor predeterminado (el temporizador no continúa acumulando tiempo transcurrido una vez que se ha alcanzado el valor predeterminado). Una actualización de temporizador se realiza única y exclusivamente cuando: ● Se ejecuta una instrucción de temporizador (TP, TON, TOF o TONR) ● El miembro "ELAPSED" de la estructura del DB se referencia directamente con una instrucción ● El miembro "Q" de la estructura de temporizador del DB se referencia directamente con una instrucción

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

185

100BInstrucciones básicas 7.2 Temporizadores

Programación de temporizadores A la hora de planificar y crear el programa de usuario deben considerarse las siguientes consecuencias del manejo de temporizadores: ● Pueden producirse múltiples actualizaciones de un temporizador en el mismo ciclo. El temporizador se actualiza cada vez que la instrucción de temporizador (TP, TON, TOF, TONR) se ejecuta y cada vez que el miembro ELAPSED o Q de la estructura de temporizador se utiliza como parámetro para otra instrucción ejecutada. Esto es una ventaja si se desea tener el último dato de tiempo (en esencia, una lectura inmediata del temporizador). No obstante, si desea disponer de valores coherentes durante un ciclo del programa, inserte la instrucción de temporizador antes de todas las instrucciones restantes que requieran estos valores, y utilice las variables de las salidas Q y ET de la instrucción de temporizador en lugar de los miembros ELAPSED y Q de la estructura de DB de temporizador. ● Pueden producirse ciclos durante los cuales no se actualice ningún temporizador. Es posible arrancar el temporizador en una función y dejar de llamar la función durante uno o más ciclos. Si no se ejecuta ninguna otra instrucción que referencie los miembros ELAPSED o Q de la estructura de temporizador, el temporizador no se actualizará. No se produce una nueva actualización hasta que la instrucción de temporizador se ejecuta de nuevo o se ejecuta alguna otra instrucción utilizando ELAPSED o Q de la estructura del temporizador como un parámetro. ● Aunque no es común, se puede asignar la misma estructura de DB de temporizador a varias instrucciones de temporizador. En general, para evitar una interacción inesperada, debería utilizarse sólo una instrucción de temporizador (TP, TON, TOF, TONR) por estructura de temporizador de DB. ● Las inicializaciones propias de los temporizadores resultan útiles para lanzar acciones que deben producirse periódicamente. Generalmente, los temporizadores autoinicializables se crean colocando un contacto normalmente cerrado que referencie el bit de temporizador situado frente a la instrucción de temporizador. Este segmento de temporizador se suele colocar sobre uno o más segmentos dependientes, que utilizan el bit del temporizador para lanzar acciones. Cuando el temporizador finaliza (el tiempo transcurrido llega al valor predeterminado), el bit de temporizador permanece en ON durante un ciclo, permitiendo que se ejecute la lógica de segmento dependiente controlada por el bit de temporizador. Con la siguiente ejecución del segmento de temporizador, el contacto normalmente cerrado está en desconexión, con lo que el temporizador se reinicia y el bit de temporizador se desactiva. En el siguiente ciclo, el contacto normalmente cerrado está en conexión, de modo que el contacto se inicializa. Cuando cree temporizadores autoinicializables de este manera, no utilice el miembro "Q" de la estructura de DB de temporizador, ya que el parámetro para el contacto normalmente cerrado está delante de la instrucción de temporizador. En lugar de ello, utilice la variable asociada a la salida "Q" de la instrucción de temporizador. La razón de evitar el acceso al miembro Q de la estructura de DB de temporizador es que ello provoca una actualización del temporizador, y si éste se actualiza debido al contacto normalmente cerrado, éste inicializará la instrucción de temporizador inmediatamente. La salida Q de la instrucción de temporizador no estará ON para el ciclo en cuestión, y los segmentos dependientes no se ejecutarán.

Controlador programable S7-1200

186

Manual de sistema, 11/2011, A5E02486683-05

100BInstrucciones básicas 7.2 Temporizadores

Retención de los datos de tiempo tras una transición RUN-STOP-RUN o una desconexión y nueva conexión de la CPU Si una sesión en modo RUN finaliza con el modo STOP o una desconexión y nueva conexión de la CPU y se inicia una nueva sesión en modo RUN, los datos de temporizador guardados en la sesión anterior se pierden, a no ser que la estructura de datos se haya definido como remanente (temporizadores TP, TON, TOF y TONR). Si se aceptan los ajustes predeterminados del diálogo de opciones de llamada una vez insertada la instrucción en el editor de programas, automáticamente se asignará un DB de instancia que no puede definirse como remanente. Para que los datos de temporizador puedan ser remanentes, hay que usar un DB global o un DB multiinstancia.

Asignar un DB global para guardar los datos de temporizador como datos remanentes Esta opción funciona independientemente de dónde se encuentre el temporizador (OB, FC o FB). 1. Crear un DB global: – Haga doble clic en "Agregar nuevo bloque" en el árbol del proyecto – Haga clic en el icono del bloque de datos (DB) – Elija DB global como tipo – Si desea poder definir elementos de datos individuales en este DB como remanentes, asegúrese de que está activada la casilla "Optimizado". La otra opción para el tipo de DB "Estándar - compatible con S7-300/400" sólo permite definir todos los elementos del DB como remanentes o no remanentes. – Haga clic en "Aceptar". 2. Agregar estructura(s) de temporizador al DB: – En el nuevo DB global, agregue una nueva variable estática utilizando el tipo de datos IEC_Timer. – En la columna "Remanencia" compruebe la casilla correspondiente para que la estructura sea remanente. – Repita este procedimiento para crear estructuras para todos los temporizadores que desee guardar en ese DB. Es posible insertar cada estructura de temporizador en un DB global único, o insertar múltiples estructuras de temporizador en el mismo DB global. También es posible asignar al DB global otras variables estáticas aparte de los temporizadores. La colocación de múltiples estructuras de temporizador en el mismo DB global permite reducir el número general de bloques. – Cambie el nombre de las estructuras de temporizador si lo desea. 3. Abra el bloque de programa para editar la posición en la que desea colocar el temporizador remanente (OB, FC o FB). 4. Sitúe la instrucción de temporizador en la posición deseada. 5. Cuando aparezca el diálogo de opciones de llamada, haga clic en el botón Cancelar. 6. En la parte superior de la nueva instrucción de temporizador escriba el nombre (no utilice la función de ayuda para examinar) del DB global y de la estructura de temporizador que ha creado antes (ejemplo: "Bloque_datos_3.Estático_1").

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

187

100BInstrucciones básicas 7.2 Temporizadores

Asignar un DB multiinstancia para guardar los datos de temporizador como datos remanentes Esta opción sólo funciona si el temporizador se coloca en un FB Esta opción depende de si el FB se creó con acceso a bloques "Optimizado" (sólo permite el direccionamiento simbólico). Una vez que el FB se ha creado ya no se puede cambiar la casilla de verificación de "Optimizado"; hay que seleccionarla correctamente en el momento de la creación del FB, en la primera pantalla que aparece tras seleccionar "Agregar nuevo bloque" del árbol. Para comprobar cómo está configurado el atributo de acceso para un FB existente, haga clic con el botón derecho sobre el FB en el árbol del proyecto, seleccione Propiedades y a continuación Atributos. Si el FB se creó con la casilla "Optimizado" seleccionada (sólo permite el direccionamiento simbólico): 1. Abra el FB para editarlo. 2. Sitúe la instrucción de temporizador en la posición deseada dentro del FB. 3. Cuando aparezca el diálogo de opciones de llamada, haga clic en el botón de multiinstancia. La opción de multiinstancia sólo está disponible si la instrucción se está colocando en un FB. 4. En el diálogo de opciones de llamada, cambie el nombre del temporizador si lo desea. 5. Haga clic en "Aceptar". La instrucción de temporizador aparece en el editor, y la estructura IEC_TIMER aparece en la interfaz de FB, bajo Estático. 6. En caso necesario, abra el editor de interfaz de FB (puede ser necesario hacer clic en la flecha pequeña para expandir la vista). 7. En Estático, localice la estructura de temporizador que se acaba de crear. 8. En la columna Remanencia correspondiente a dicha estructura, cambie la selección a "Remanencia". Cada vez que este FB se llame posteriormente desde otro bloque de programa se creará un DB de instancia con esta definición de interfaz, que contiene la estructura de temporizador marcada como remanente. Si el FB se creó con la casilla "Estándar - Compatible con S7-300/400" seleccionada (permite el direccionamiento simbólico y directo): 1. Abra el FB para editarlo. 2. Sitúe la instrucción de temporizador en la posición deseada dentro del FB. 3. Cuando aparezca el diálogo de opciones de llamada, haga clic en el botón de multiinstancia. La opción de multiinstancia sólo está disponible si la instrucción se está colocando en un FB. 4. En el diálogo de opciones de llamada, cambie el nombre del temporizador si lo desea. 5. Haga clic en "Aceptar". La instrucción de temporizador aparece en el editor, y la estructura IEC_TIMER aparece en la interfaz de FB, bajo Estático. 6. Abra el bloque que usará este FB. 7. Sitúe el FB en la posición deseada. De este modo se crea un bloque de datos de instancia para este FB.

Controlador programable S7-1200

188

Manual de sistema, 11/2011, A5E02486683-05

100BInstrucciones básicas 7.3 Contadores 8. Abra el bloque de datos de instancia creado al colocar el FB en el editor. 9. En Estático, coloque la estructura de temporizador en cuestión. En la columna Remanencia correspondiente a dicha estructura, cambie la casilla de verificación de modo que la estructura sea remanente.

7.3 Tabla 7- 22

Contadores Instrucciones con contadores

KOP / FUP

SCL "IEC_Counter_0_DB".CTU( CU:=_bool_in, R:=_bool_in, PV:=_int_in, Q=>_bool_out, CV=>_int_out); "IEC_Counter_0_DB".CTD( CD:=_bool_in, LD:=_bool_in, PV:=_int_in, Q=>_bool_out, CV=>_int_out); "IEC_Counter_0_DB".CTUD( CU:=_bool_in, CD:=_bool_in, R:=_bool_in, LD:=_bool_in, PV:=_int_in, QU=>_bool_out, QD=>_bool_out, CV=>_int_out);

Descripción Las instrucciones con contadores se utilizan para contar eventos del programa internos y eventos del proceso externos. Todo contador utiliza una estructura almacenada en un bloque de datos para conservar sus datos. El bloque de datos se asigna al colocar la instrucción de contaje en el editor. 

CTU es un contador ascendente



CTD es un contador descendente



CTUD es un contador ascendente/descendente

1

En KOP y FUP: Seleccione el tipo de datos del valor de contaje en la lista desplegable situada debajo del nombre de la instrucción.

2

STEP 7 crea el DB automáticamente al insertar la instrucción.

3

En los ejemplos SCL, "IEC_Counter_0_DB" es el nombre del DB de instancia.

Tabla 7- 23

Tipos de datos para los parámetros

Parámetro

Tipo de datos1

Descripción

CU, CD

Bool

Contaje ascendente o descendente, en incrementos de uno

R (CTU, CTUD)

Bool

Poner a cero el valor del contador

LD (CTD, CTUD)

Bool

Control de carga del valor predeterminado

PV

SInt, Int, DInt, USInt, UInt, UDInt

Valor de contaje predeterminado

Q, QU

Bool

Es verdadero si CV >= PV

Controlador programable S7-1200 Manual de sistema, 11/2011, A5E02486683-05

189

100BInstrucciones básicas 7.3 Contadores

Parámetro

Tipo de datos1

Descripción

QD

Bool

Es verdadero si CV