Início / Descargas / Omron / Ejemplos / Direccionamiento Indirecto. Registro de una pila de datos mediante un puntero

Direccionamiento Indirecto. Registro de una pila de datos mediante un puntero

  • Publicado: 19 Marzo 2011
  • Omron
  • Leído Visto: 8097 veces

Introducción:

En este ejemplo se muestra como realizar un direccionamiento indirecto para registrar datos en una pila.

En este caso simularemos que registramos el peso de unos paquetes que van pasando por una cinta.

Funcionamiento

Este es el diagrama de funcionamiento:

- Pila de registro: 50 Canales D1 ... D50

- Puntero: D0

- Bit de reset: W0.0

- Canal fuente del peso a registrar: W200

- Bit de registro (Fotocélula Ft1): 0.0

796_01

Los paquetes vienen de uno en uno por unas cintas, la cinta intermedia tiene un sistema de pesaje dinámico, cada vez que una paquete pasa por encima es detectado por la fotocélula Ft1 y es pesad0. En este ejemplo no se profundiza en como funciona el sistema de pesaje ni como se comunica con el PLC, damos por hecho que el valor del peso de cada paquete que pasa lo tenemos en el area de memoria W200 del PLC.

Cada paquete que pasa se irá registrando su peso e introduciendolo en nuestra tabla de registro. Supongamos que nuestra tabla de registro es para 50 paquetes, entonces elregistro será de D0001 a D0050.

Programación:

Para realizar el direccionamiento indirecto utilizaremos la instrucción MOV (Mover) pero con el indicador *. Es decir cada vez que detectemos una botella con la fotocélula Ft1 movemos el valor de W0200 (peso de paquete) a la posición que nos diga el puntero D0 dentro de nuestro registro e incrementaremos el puntero.

Si en el punero tenemos el valor D0=2 al ejecutar la instrucción MOV moveremos el valor de W200 a D2 e incrementamos el puntero a D0=3 por lo que al volver a ejecutar la instrucción MOV moveremos el valor de W200 a D3.

796_02

796_03

Además se introduce en el programa un bit de reset que hace las siguientes funciones:

- Pone el valor de puntero a 1 listo para que el primer registro lo haga en D1

- Borra los valores registrados en nuestro registro poniendo a cero el valor de los canales de D1 a D50 utilizando la instrucción BSET (Rellena con cero los canales de D1 a D50)

796_04