Descripción
La instrucción "Contador descendente" decrementa el valor del parámetro CV. Cuando el estado lógico del parámetro CD 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 decrementa en uno. Cada vez que se detecta un flanco de señal ascendente, el valor de contaje se decrementa hasta alcanzar el valor límite inferior del tipo de datos (INT) indicado. Cuando se alcanza el valor límite inferior, el estado lógico del parámetro CD deja de tener efecto en la instrucción.
El estado del contador se puede consultar en el parámetro Q. Si el valor de contaje actual es menor o igual a cero, el parámetro Q adopta el estado lógico "1". En los restantes casos, el estado lógico del parámetro Q es "0".
El valor del parámetro CV se pone al valor del parámetro PV cuando el estado lógico del parámetro LD cambia a "1". Mientras el parámetro LD tenga el estado lógico "1", el estado lógico del parámetro CD 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 descendente" 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 CTD (p. ej., "CTD_DB")
-
Declaración como variable local del tipo CTD en la sección "Static" de un bloque (p. ej., #MyCTD_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 descendente" 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 LD de la instrucción. En el parámetro PV se indica en este caso el valor inicial deseado para el parámetro CV. Si un bloque diferente contiene instancias de la instrucción "Contador descendente", 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_Nombre_del_contador_DB>.CTD();
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();
Parámetros
La tabla siguiente muestra los parámetros de la instrucción:
|
Parámetro |
Declaración |
Tipo de datos |
Área de memoria |
Descripción |
|---|---|---|---|---|
|
CD |
Input |
BOOL |
I, Q, M, D, L |
Entrada de contaje |
|
LD |
Input |
BOOL |
I, Q, M, D, L, P |
Entrada de carga |
|
PV |
Input |
INT |
I, Q, M, D, L, P |
Valor al que se pone la salida CV cuando LD = 1. |
|
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:
|
"CTD_DB".CTD(CD := "Tag_Start", LD := "Tag_Load", PV := "Tag_PresetValue", Q => "Tag_Status", CV => "Tag_CounterValue"); |
Cuando el estado lógico del operando "Tag_Start" cambia de "0" a "1", la instrucción "Contador descendente" se ejecuta y el valor del operando "Tag_CounterValue" se decrementa en uno. Con cada flanco de señal ascendente posterior, el valor de contaje irá decrementando hasta alcanzar el valor límite inferior del tipo de datos (INT = -32768).
El operando "Tag_Status" devuelve el estado lógico "1" mientras el valor del contador actual sea menor o igual a cero. 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".