Descripción
La instrucción "Contador ascendente - descendente" incrementa y decrementa el valor de contaje del parámetro CV. Cuando el estado lógico del parámetro CU cambia de "0" a "1" (flanco de señal ascendente), el valor de contaje actual del parámetro CV se incrementa en uno. Cuando el estado lógico del parámetro CD cambia de "0" a "1" (flanco de señal ascendente), el valor de contaje del parámetro CV se decrementa en uno. Si en un ciclo del programa se detecta un flanco de señal ascendente en las entradas CU y CD, el valor de contaje actual no cambia en el parámetro CV.
El valor de contaje se puede seguir incrementando hasta alcanzar el valor límite superior del tipo de datos indicado (INT). Una vez alcanzado el valor límite superior, el valor de contaje ya no se incrementa al detectarse un flanco de señal ascendente. Cuando se alcanza el valor límite inferior del tipo de datos indicado (INT), ya no se decrementa el valor de contaje.
Cuando el estado lógico del parámetro LD cambia a "1", el valor de contaje del parámetro CV se pone al valor del parámetro PV. Mientras el parámetro LD tenga el estado lógico "1", el estado lógico de los parámetros CU y CD no tendrá efecto alguno en la instrucción.
El valor de contaje 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", un cambio del estado lógico de los parámetros CU, CD y LD no tendrá efecto alguno en la instrucción "Contador ascendente - descendente".
El estado del contador ascendente se puede consultar en el parámetro QU. Si el valor de contaje actual es mayor o igual al valor del parámetro PV, el parámetro QU adopta el estado lógico "1". En los restantes casos, el estado lógico del parámetro QU es "0". En el parámetro PV también se puede indicar una constante.
El estado del contador descendente se puede consultar en el parámetro QD. Si el valor de contaje actual es menor o igual a cero, el parámetro QD adopta el estado lógico "1". En los restantes casos, el estado lógico del parámetro QD es "0".
|
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 - 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 CTUD (p. ej., "CTUD_DB")
-
Declaración como variable local del tipo CTUD en la sección "Static" de un bloque (p. ej., #MyCTUD_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 - descendente" cuando se realiza un arranque en frío. Si deben inicializarse instancias tras un rearranque completo (en caliente), las instancias por inicializar deben llamarse en un OB de arranque con los siguientes valores de parámetros:
-
Si se utiliza como contador ascendente, el valor del parámetro R debe ponerse a "1".
-
Si se utiliza como contador descendente, el valor del parámetro LD debe ponerse a "1". En el parámetro PV debe indicarse en este caso el valor inicial deseado del parámetro CV.
Si un bloque diferente contiene instancias de la instrucción "Contador ascendente - 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>.CTUD();
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 |
|---|---|---|---|---|
|
CU |
Input |
BOOL |
I, Q, M, D, L |
Entrada de contaje ascendente |
|
CD |
Input |
BOOL |
I, Q, M, D, L |
Entrada de contaje descendente |
|
R |
Input |
BOOL |
I, Q, M, D, L, P |
Entrada de reset |
|
LD |
Input |
BOOL |
I, Q, M, D, L, P |
Entrada de carga |
|
PV |
Input |
INT |
I, Q, M, D, L, P |
Valor con el que se activa la salida QU. / Valor al que se pone la salida CV cuando LD = 1. |
|
QU |
Output |
BOOL |
I, Q, M, D, L |
Estado del contador ascendente |
|
QD |
Output |
BOOL |
I, Q, M, D, L |
Estado del contador descendente |
|
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:
|
"CTUD_DB".CTUD(CU := "Tag_Start1", CD := "Tag_Start2", LD := "Tag_Load", R := "Tag_Reset", PV := "Tag_PresetValue", QU => "Tag_CU_Status", QD => "Tag_CD_Status", CV => "Tag_CounterValue"); |
Cuando se detecta un flanco de señal ascendente en el estado lógico del operando "Tag_Start1", el valor actual del contador se incrementa en uno y se deposita en el operando "Tag_CounterValue". Cuando se detecta un flanco de señal ascendente en el estado lógico del operando "Tag_Start2", el valor del contador se decrementa en uno y se deposita también en el operando "Tag_CounterValue". Cuando se detecta un flanco de señal ascendente en el parámetro CU el valor del contador va incrementando hasta alcanzar el valor límite superior hasta alcanzar el valor límite de 32 767. Cuando se detecta un flanco de señal ascendente en el parámetro CD el valor de contaje se sigue decrementando hasta alcanzar el valor límite inferior de INT = -32 768.
El operando "Tag_CU_Status" devuelve el estado lógico "1" mientras el valor de contaje actual sea mayor o igual al valor del operando "Tag_PresetValue". En todos los demás casos, la salida "Tag_CU_Status" devuelve el estado lógico "0".
El operando "Tag_CD_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_CD_Status" devuelve el estado lógico "0".