Camino:  Equipo (Dispositivos) > PLC300 > Ladder > Hardware >

READENC2

Lector de Pulsos de Encoder en una Vuelta

Previous pageReturn to chapter overviewNext page

Bloque que lee el valor de pulsos de un encoder, de acuerdo con un tipo de lectura escogido, interpretándolo como fracción de vueltas.

 

Representación Ladder

 

READENC2_block

 

Estructura del Bloque

 

Tipo de Variable

Nombre

Tipo de Dato

Descripción

VAR_INPUT

EN

BOOL

Habilitación del bloque

Source#

BYTE

Fuente de conteo

Pulses

DWORD UDINT

Número de pulsos máximo, relativo al fin de vuelta

VAR_OUTPUT

ENO

BOOL

Habilitación de salida

Value

DINT DWORD UDINT

Valor de conteo

VAR

READENC2_INST_0

READENC2

Instancia de acceso a la estructura del bloque

 

Operación

 

Este bloque, cuando tiene un valor TRUE en EN, obtiene el número de pulsos contados en el encoder, conforme es seleccionado en Source#, y los transfiere a Value. A cada flanco de subida, Value es reinicializado en cero. Cuando Value se incrementa y alcanza el valor de Pulses, recibe cero. Cuando Value disminuye y tiende a alcanzar el valor de -1, recibe el valor en Pulses. De esa forma, Value siempre presenta el resultado en fracción de vueltas.

 

Cuando EN tiene valor FALSE, Value permanece inalterado.

 

El valor de ENO pasa al próximo bloque Ladder el valor de EN, luego de finalizada la operación.

 

Diagrama de Flujo del Bloque

 

READENC2_flowchart

 

Ejemplo en Ladder

 

READENC2_example01

 

El ejemplo de arriba, al identificar un flanco de subida en DI1, comienza a contar el número de pulsos en el encoder conectado en conformación de cuadratura AB. PULSES_IN_TURN es el valor de pulsos para completar una vuelta. En caso de que el valor leído sea superior, retornará al conteo a partir de cero. En caso de que el valor leído sea negativo, retornará el conteo a partir de PULSES_IN_TURN. El valor resultante será almacenado en VALUE. El bloque finalizará exitosamente y será activada la salida ENO.

 

Ejemplo en ST

 

 El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.

 

 

VAR

   PULSES_IN_TURN : DINT;

   VALUE : UDINT;

   READENC2_INST_0 : FB_READENC2;

END_VAR

 

READENC2_INST_0.EN := DI1;

READENC2_INST_0(Source:=0, Pulses:=PULSES_IN_TURN);

VALUE := READENC2_INST_0.Value;

DO1 := READENC2_INST_0.ENO;