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:
|
"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".