Direccionamiento Indirecto en una FB Function Block (Lenguage ST)
Introducción:
En ejemplo muestra como realizar un direccionamiento indirecto dentro de una FB (Function Block) programada en Texto Estructurado (ST)
Programación de FB
- Lo primero es crear una FB en Texto Estructurado (ST): Insertar - Bloque de Función - Texto Estructurado
- A esta FB la llamaremos "DirecIndirecto"
- En la FB declaramos las siguiente variables:
- ENTRADA: Valor / Indice
ENTRADA / SALIDA : Matriz ( Declaramos una Matriz de 20 canales)
- Para asignar el valor de la Matriz, en la pantalla de "Editar Variable" pulsar sobre Avanzado ...
- Aparecerá una nueva pantalla de "Ajustes Avanzados" donde seleccionaremos "Variable de Matriz" y le asignaremos un valor a dicha matriz ( en nuestro caso 20) pero puede ser cualquier otro.
- Una vez asignadas las variables que van a formar la FB pasamos a la programación de la misma.
- La programación consta de una sola línea de programa:
Matriz[indice]:= Valor;
- Se le asginará el valor de entrada Valor a el canal de la Matriz que este apuntando el Puntero, es decir si el valor del puntero es = 10 se escribirá el valor de Valor en el canal 10 de la Matriz
Insertar la FB en el programa
- Una vez creada la FB se va a insertar en el programa para asignar una direccion a las variables y probar su funcionamiento.
- Desde Cx-programmer: Insertar - Llamada de bloque de función
- Seleccionar la FB, en nuestro caso "DirecIndirecto" y le asignamos un nombre, por ejemplo DirecIndirecto_infoPLC
- Asignamos las variables: Valor = D0 // Puntero = D1 // Matriz = D100 (D100 ... D119)
- En el ejemplo moveremos el valor de D0 que es +25 por direccionamiento indirecto al canal de la Matriz que marcael Puntero D1 que en el ejemplo es +6, como la Matriz esta asignada a D100 (de D100 a D119) moveremos el valor de D0 a D106