Estructuras específicas de programación de robots.

 

 

1. Posición de origen.

Para que un robot se dirija a su posición de origen no es necesario posicionarlo mediante mediante el bloque posición, únicamente hay que dirigirle en dirección al final de carrera que marca dicha posición y dejarle avanzar hasta que la alcance.

La estructura es la siguiente.

 

 

 2. Inicialización de la variable contador de impulsos.

Cuando se lleva la articulación de un robot a una posición determinada, dicha posición se guarda en la variable contador correspondiente (por ejemplo en Z2). Si a continuación esa articulación se lleva a su origen hay que inicializar (poner a cero) dicha variable, ya que sino el sistema se piensa que el robot sigue en su posición anterior.

Esta circunstancia se produce con frecuencia cuando se realiza un ciclo, ya que aunque el robot parte del reposo, en algún momento del programa se posiciona y retorna de nuevo al reposo .

En el caso excepcional de que la secuencia del programa sea lineal y solo se pase por el origen al inicio del programa no es necesario inicializar las variables contador, ya que al iniciar el programa todas las variables se ponen a cero.

Para evitar complicaciones en la mayoría de los casos la inicialización de la variable contador se introduce dentro del subprograma origen.

 

 

3. Contadores.

En ciertas ocasiones es necesario ejecutar un proceso un número definido de veces. Una solución sería repetir el proceso ese número de veces, pero además de agrandar el programa en ciertas ocasiones no sería viable. Otra solución más inteligente es utilizar una variable contador en una estructura iterativa "hasta que" como la que se expone.

El proceso representado por un bloque se quiere repetir 10 veces. Primero se inicializa la variable contador, se ejecuta el proceso A una vez y la variable contador toma el valor 1, se comprueba si es igual a 10 y como no es así se repite de nuevo el ciclo hasta que se haya ejecutado 10 veces y la variable contador VAR1 sea 10.

 

 

4. Programación orientada al estado.

Cada vez que se inserta un bloque de subprograma en un programa principal, los bloques funcionales contenidos en los mismos se insertan internamente en el programa. Cuando se realiza un programación secuencial con gran número de subprogramas repetidos se puede llegar al límite del sistema o se puede sobrecargar el procesador. Este caso se  corresponde con un programa como el siguiente:

Para evitar esto se utiliza la denominada programación orientada al estado. Cada subprograma será insertado una vez y será llamado cuando corresponda  en  función del valor de una variable que determina el estado del sistema en cada instante. Por ejemplo un programa que ejecuta cíclicamente varios procesos repetitivos: A, B, C. Los estados pueden ser: Estado 0: Proceso A; Estado 1: Proceso B(10) ; Estado 2: Proceso A; Estado 3: Proceso C, Estado 4:Proceso B(20); Estado 5: Proceso B(20); Estado 6: Proceso C. El programa tendrá la siguiente estructura:

 

 

 

5. Secuencias simultaneas en subprogramas.

En ocasiones es necesario crear un subprograma que contenga varias secuencias que se ejecutarán simultáneamente, por ejemplo un subprograma que posicione las articulaciones de un robot a la vez. En estos casos el subprograma tendrá una secuencia principal, con entrada y salida al subprograma, que controlará el  inicio y el fin del resto de secuencias (secundarias).

Control de inicio:

Para iniciar todas las secuencias se establece  una condición mediante una variable de control, en la secuencia principal, que deben cumplir el resto de secuencias. La mejor manera de entenderlo es ver la estructura del subprograma.

 

Control de fin:

La secuencia principal no puede debe salir del subprograma hasta que no se hayan ejecutado completamente el resto de las secuencias. En este caso el control se hace en sentido inverso, la condición la fijan las secuencias secundarias y las deben cumplir la secuencia principal.

 

Si el subprograma es para posicionar, la salida se puede hacer comprobando que  cada motor  no gira ni a derecha ni a izquierda. Para ello se utilizan las variables E31- E38 y E41 - E48.

volver a Inicio