CTU: Contador ascendente (S7-300, S7-400) - STEP 7

SCL (S7-300, S7-400)

ft:publication_title
SCL (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
es-ES
CTU: Contador ascendente

Descripción

La instrucción "Contador ascendente" incrementa el valor del parámetro CV. Cuando el estado lógico del parámetro CU cambia de "0" a "1" (flanco de señal ascendente), se ejecuta la instrucción y el valor de contaje actual del parámetro CV se incrementa en uno. El valor de contaje se incrementa cada vez que se detecta un flanco de señal ascendente, hasta alcanzar el valor límite superior del tipo de datos (INT). Cuando se alcanza el valor límite superior, el estado lógico del parámetro CU deja de tener efecto en la instrucción.

El estado del contador se puede consultar en el parámetro Q. El estado lógico del parámetro Q es determinado por el parámetro PV. Si el valor de contaje actual es mayor o igual al valor del parámetro PV, el parámetro Q adopta el estado lógico "1". En los restantes casos, el estado lógico del parámetro Q es "0". En el parámetro PV también se puede indicar una constante.

El valor del parámetro CV se pone a cero cuando el estado lógico del parámetro R cambia a "1". Mientras el parámetro R tenga el estado lógico "1", el estado lógico del parámetro CU no tendrá efecto alguno en la instrucción.

Nota

Utilice el contador en una sola posición del programa para evitar fallos de contaje.

A cada llamada de la instrucción "Contador ascendente" debe asignársele un contador CEI, en el que se guarden los datos de la instrucción. Un contador CEI se declara del siguiente modo:

  • Declaración de un bloque de datos del tipo CTU (p. ej., "CTU_DB")

  • Declaración como variable local del tipo CTU en la sección "Static" de un bloque (p. ej., #MyCTU_COUNTER)

Al insertar la instrucción en el programa, el cuadro de diálogo "Opciones de llamada" se abre automáticamente; en él se puede determinar si el contador CEI se deposita en un bloque de datos propio (instancia individual), o bien como variable local (multiinstancia) en la interfaz del bloque. Si crea un bloque de datos propio, lo encontrará en el árbol del proyecto, en "Bloques de programa > Bloques de sistema", carpeta "Recursos de programa", . Encontrará más información al respecto en "Consulte también".

El sistema operativo inicializa las instancias de la instrucción "Contador ascendente" cuando se realiza un arranque en frío. Si deben inicializarse instancias de la instrucción tras un rearranque completo (en caliente), las instancias por inicializar deben llamarse en un OB de arranque con el valor "1" en el parámetro R de la instrucción. Si un bloque diferente contiene instancias de la instrucción "Contador ascendente", estas pueden resetearse p. ej. inicializando el bloque de nivel superior.

Contador CEI como bloque de datos del tipo de datos de sistema IEC_<Nombre_del_contador> (Shared DB)

Un contador CEI se puede declarar como bloque de datos del modo siguiente:

<IEC_contador_DB>.CTU();

Contador CEI como variable local de la interfaz del bloque (multiinstancia)

El contador CEI se puede declarar como variable local del modo siguiente:

#myLocal_Counter();

Sintaxis

La tabla siguiente muestra los parámetros de la instrucción:

Parámetro

Declaración

Tipo de datos

Área de memoria

Descripción

CU

Input

BOOL

I, Q, M, D, L

Entrada de contaje

R

Input

BOOL

I, Q, M, D, L, P

Entrada de reset

PV

Input

INT

I, Q, M, D, L, P

Valor con el que se activa la salida Q.

Q

Output

BOOL

I, Q, M, D, L

Estado del contador

CV

Output

INT

I, Q, M, D, L, P

Valor de contaje actual

Encontrará más información sobre los tipos de datos válidos en "Consulte también".

Ejemplo

El siguiente ejemplo muestra el funcionamiento de la instrucción:

SCL Copia el código de programa siguiente en el portapapeles.

"CTU_DB".CTU(CU := "Tag_Start",

             R := "Tag_Reset",

             PV := "Tag_PresetValue",

             Q => "Tag_Status",

             CV => "Tag_CounterValue");

Cuando el estado lógico del operando "Tag_Start" cambia de "0" a "1", se ejecuta la instrucción "Contador ascendente" y el valor de contaje actual del operando "Tag_CounterValue" se incrementa en uno. Con cada flanco de señal ascendente posterior, el valor de contaje irá incrementando hasta alcanzar el valor límite superior del tipo de datos (INT = 32767).

La salida "Tag_Status" devuelve el estado lógico "1" mientras el valor de contaje actual sea mayor o igual que el valor del operando "Tag_PresetValue". En todos los demás casos, la salida "Tag_Status" devuelve el estado lógico "0". El valor de contaje actual se guarda en el operando "Tag_CounterValue".