· festo gdcp-cmxr-sw-es es 1205c 3 edición...

276
Controlador Descripción Instrucciones de programación CMXR FTL elemental Descripción 560317 es 1205c [761539]

Upload: lydat

Post on 16-Oct-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Recortar: Arriba: 61,5 mm Abajo: 61,5 mm Izquierda: 43,5 mm Derecha: 43,5 mm

Controlador

Descripción Instrucciones de programación CMXR FTL elemental

Descripción560317 es 1205c [761539]

Festo GDCP-CMXR-SW-ES es 1205c 3

Edición ______________________________________________________ 1205c

Denominación _____________________________________ GDCP-CMXR-SW-ES

Nº de art. ___________________________________________________ 560317

Festo AG & Co KG., D-73734 Esslingen, 2012

Internet: http://www.festo.com

E-mail: [email protected]

Sin nuestra expresa autorización, queda terminantemente prohibida la reproducción total o parcial de este documento, así como su uso indebido y/o su exhibición o comunicación a terceros. El incumplimiento de lo anterior obliga a pagar indemnización por daños y perjuicios. Quedan reservados todos los derechos inherentes, en especial los de patentes, de modelos registrados y estéticos.

4 Festo GDCP-CMXR-SW-ES es 1205c

Lista de revisiones

Autor:

Manual: GDCP-CMXR-SW-ES

Nombre del archivo:

Lugar de almacenamiento del

archivo:

Nº de art. Descripción Indicador de

revisión

Fecha de modificación

001 Redacción 0805NH 25.06.2008

002 Adaptación a CMXR-C1 Versión 1.20 0909a 25.08.2009

003 Adaptación a CMXR-C2 Versión 1.0 1002b 24.03.2010

004 Adaptación a CMXR-C2 Versión 1.1 1205c 04/04/2012

ÍNDICE

Festo GDCP-CMXR-SW-ES es 1205c 5

ÍNDICE

1. Introducción ........................................................................................................ 14

1.1 Validez .............................................................................................................. 14

2. Medidas de seguridad......................................................................................... 15

2.1 Uso de la documentación................................................................................... 15

2.2 Condiciones de utilización conforme a lo previsto .............................................. 15

2.3 Personal cualificado .......................................................................................... 16

2.4 Medidas de seguridad de los productos ............................................................ 16

2.5 Medidas de seguridad de este manual ............................................................... 16

2.6 Medidas de seguridad para el producto descrito ............................................... 17

3. Edición de programas.......................................................................................... 18

3.1 Información general ........................................................................................... 18

3.2 Intérprete .......................................................................................................... 18

3.3 Inicio del programa ............................................................................................ 18

3.4 Avance de proceso............................................................................................. 18

3.5 Estructura de programa ..................................................................................... 20

3.6 Proyectos FTL .................................................................................................... 20

3.6.1 Proyecto FTL global ............................................................................ 21

3.7 Programas FTL ................................................................................................... 21

3.7.1 Programas compartidos de proyecto .................................................. 21

3.8 Archivo de datos FTL “<nombre>.tid” .................................................................. 22

3.8.1 Datos de programa local .................................................................... 22

3.8.2 Datos compartidos de proyecto .......................................................... 22

3.8.3 Datos compartidos de sistema ........................................................... 23

3.8.4 Creación de instancias de variables .................................................... 24

4. Estructura del lenguaje ....................................................................................... 26

4.1 Formateado ....................................................................................................... 26

4.2 Identificadores .................................................................................................. 26

4.3 Palabras clave ................................................................................................... 26

4.4 Constantes numéricas ....................................................................................... 27

4.5 Cadenas de caracteres ....................................................................................... 27

4.6 Operadores y caracteres de delimitación ........................................................... 27

4.6.1 Operadores aritméticos ...................................................................... 28

4.6.2 Operadores lógicos ............................................................................ 28

4.6.3 Operadores comparativos .................................................................. 28

ÍNDICE

6 Festo GDCP-CMXR-SW-ES es 1205c

4.6.4 Otros operadores ............................................................................... 29

4.6.5 Caracteres de delimitación ................................................................. 29

5. Tipos de datos básicos ........................................................................................ 30

5.1 Tipo de datos booleano (BOOL) ......................................................................... 31

5.2 Tipos de número entero, tipo de datos REAL, tipos de patrón de bits ................ 32

5.3 Paréntesis ......................................................................................................... 32

5.4 Cadenas de caracteres (STRING) ........................................................................ 33

5.5 Tipos de datos estructurados ............................................................................ 33

5.6 Matrices ............................................................................................................ 33

5.6.1 Inicialización de matrices ................................................................... 35

5.6.2 Cómo determinar los límites de la matriz con LOW y HIGH .................. 35

5.7 Variables de referencia (mapeado) .................................................................... 37

5.7.1 Declaración de variables de referencia, <MAPTO> ................................ 38

5.7.2 Vinculación de variables de referencia, <MAP> .................................... 38

5.7.3 Comprobación de variables de referencia, <IS_MAPPED> .................... 38

6. Declaración de variables ..................................................................................... 40

6.1 Inicialización ...................................................................................................... 40

7. Expresiones ........................................................................................................ 41

7.1 Secuencia de ejecución para expresiones .......................................................... 41

8. Control de programa ........................................................................................... 42

8.1 Instrucciones ..................................................................................................... 42

8.2 Asignación de valor <:=> ..................................................................................... 42

8.3 Condiciones ....................................................................................................... 42

8.4 Bifurcación <IF…THEN> ....................................................................................... 43

8.5 Instrucciones de salto ........................................................................................ 44

8.5.1 Marca de salto <LABEL> ....................................................................... 45

8.5.2 Salto condicional <IF…GOTO> .............................................................. 45

8.5.3 Salto absoluto <GOTO> ....................................................................... 46

8.6 Bucles ............................................................................................................... 46

8.6.1 Instrucción WHILE <WHILE> ................................................................. 46

8.6.2 Instrucción LOOP <LOOP> .................................................................... 47

8.7 Subprogramas ................................................................................................... 48

8.7.1 Llamada de subprograma <CALL> ........................................................ 49

8.7.2 Retorno al programa <RETURN> ........................................................... 50

8.8 Programas paralelos .......................................................................................... 51

8.8.1 Ejecución del programa paralelo <RUN> .............................................. 52

8.8.2 Finalización del programa paralelo <KILL> ........................................... 52

ÍNDICE

Festo GDCP-CMXR-SW-ES es 1205c 7

8.9 Influencia del avance de proceso ....................................................................... 53

8.9.1 WAIT – Instrucción con tiempo <WaitTime> .......................................... 53

8.9.2 Instrucción condicional WAIT <WAIT>................................................... 54

8.9.3 WaitOnPath – Instrucción con tiempo <WaitOnPath> ........................... 56

8.9.4 WaitOnPos – Instrucción con tiempo <WaitOnPos> .............................. 57

8.9.5 WaitOnMainRun – Esperar a la ejecución principal <WaitOnMainRun> ............................................................................... 58

8.10 Instrucción DO ................................................................................................... 59

8.11 Insertar comentarios <//> ................................................................................... 61

8.12 Desactivar línea de programa <##> ..................................................................... 61

9. Instrucciones de movimiento .............................................................................. 63

9.1 Descripción de la posición ................................................................................. 63

9.1.1 Posición de eje ................................................................................... 64

9.1.2 Posición cartesiana ............................................................................ 66

9.1.3 Programación tipo teach-in de variable de posición ............................ 68

9.2 Movimiento punto a punto <Ptp> ........................................................................ 68

9.2.1 Programación tipo teach-in del movimiento Ptp ................................. 71

9.3 Movimiento punto a punto relativo <PtpRel> ....................................................... 71

9.4 Movimiento de un eje, <MoveAxisPtp>, <MoveAxisCart> ..................................... 73

9.4.1 Programación tipo teach-in de la posición con MoveAxisPtp y MoveAxisCart ..................................................................................... 75

9.5 Movimiento lineal <Lin> ...................................................................................... 77

9.5.1 Programación tipo teach-in del movimiento Lin .................................. 79

9.6 Movimiento lineal relativo <LinRel> ..................................................................... 79

9.7 Movimiento circular con punto de apoyo ........................................................... 81

9.7.1 Funcionamiento ................................................................................. 81

9.7.2 Definición de planos ........................................................................... 82

9.7.3 Instrucción circular con punto de apoyo <CircIp> ................................. 84

9.7.4 Instrucción circular con punto de apoyo, aproximación PTP <PtpToCircIp> ...................................................................................... 86

9.7.5 Instrucción circular con punto de apoyo, avance lineal <LinToCircIp> ....................................................................................... 88

9.7.6 Programación tipo teach-in de las instrucciones circulares ................. 89

9.8 Detención del movimiento <StopMove> .............................................................. 90

9.9 Detención del programa <StopProgram> ............................................................. 91

10. Instrucciones de dinámica................................................................................... 92

10.1 Limitación automática de la dinámica, limitador de la dinámica ...................... 93

10.2 Velocidades <Vel> ............................................................................................... 94

10.3 Aceleración <Acc> .............................................................................................. 95

ÍNDICE

8 Festo GDCP-CMXR-SW-ES es 1205c

10.4 Sacudida <Jerk> .................................................................................................. 96

10.5 Override ............................................................................................................ 98

10.5.1 Override en la unidad de mando manual <Ovr> .................................... 98

10.5.2 Override dinámico <DynOvr> ............................................................. 100

10.6 Rampas de aceleración .................................................................................... 101

10.6.1 Ajuste de formas de rampa <Ramp> ................................................... 102

10.7 Conexión de la velocidad de trayectoria constante <VconstOn> ........................ 103

10.8 Desconexión de la velocidad de trayectoria constante <VconstOff> ................ 105

11. Instrucciones de avance aproximado ................................................................ 106

11.1 Segmentos cero ............................................................................................... 107

11.2 Área extrema ................................................................................................... 108

11.3 Avance aproximado por velocidad ................................................................... 109

11.3.1 Con factor porcentual <OvlVel> .......................................................... 109

11.4 Avance aproximado por geometría .................................................................. 111

11.4.1 Avance aproximado de los ejes X, Y y Z <OvlCart> .............................. 111

12. Sistemas de referencia (desplazamiento del punto cero) ................................. 113

12.1 Relación del sistema de referencia ................................................................... 113

12.2 Datos del sistema de referencia ....................................................................... 114

12.3 Sistema de referencia con valores directos <SetRefSys> ................................ 115

12.4 Sistema de referencia con tres puntos <SetRefSys3P> .................................... 116

12.4.1 Programación tipo teach-in del sistema de referencia SetRefSys3P ..................................................................................... 117

12.5 Sistema de referencia universal <SetRefSysWorld> ........................................... 119

12.6 Sistema de referencia dinámico <SetRefSysDyn> .............................................. 119

12.7 Ejemplo ........................................................................................................... 120

13. Referenciación de una cinemática ..................................................................... 122

13.1 Recorrido de referencia <RefAxis> ..................................................................... 122

13.2 Recorrido de referencia asíncrono <RefAxisAsync> ............................................ 125

13.3 Espera al final del recorrido de referencia <WaitRefFinished> ........................ 126

13.4 Interrogación del estado de un eje <IsAxisReferenced> .................................. 127

14. Herramientas .................................................................................................... 128

14.1 Datos de herramienta ...................................................................................... 128

14.1.1 Datos del vector TCP ........................................................................ 128

14.2 Activación de datos de herramienta <Tool> ....................................................... 131

14.2.1 Efecto de los datos TCP .................................................................... 131

ÍNDICE

Festo GDCP-CMXR-SW-ES es 1205c 9

15. Modo de la cinemática ...................................................................................... 136

15.1 Clasificación de los modos de cinemática, variables ........................................ 137

15.2 Ajuste del modo de la cinemática <SetRobotMode> .......................................... 138

15.3 Lectura del modo de la cinemática <GetRobotMode> ........................................ 139

15.4 Cambio del modo de la cinemática................................................................... 140

16. Interface PROFIBUS .......................................................................................... 142

16.1 Entradas y salidas booleanas, plc_InBool, plc_OutBool.................................. 143

16.2 Variables enteras de 32 bits, plc_Dint .............................................................. 144

16.3 Posiciones, plc_AxisPos, plc_CartPos .............................................................. 145

16.4 Sistemas de referencia, plcRefSys ................................................................... 146

16.5 Pausa programada <ProgHold> ......................................................................... 147

17. Interface FTL con PLC interno (sólo para controlador multieje con CoDeSys) .................................................. 149

17.1 Variables del sistema FTL................................................................................. 149

17.1.1 Ejemplo con variables del sistema .................................................... 150

17.1.2 Ejemplo con variables de sistema e instrucción MAP ........................ 151

18. Sistema de comunicación .................................................................................. 152

18.1 Textos de mensaje ........................................................................................... 152

18.2 Información <SetInfo> ....................................................................................... 154

18.3 Advertencia <SetWarning> ................................................................................ 155

18.4 Mensaje de error <SetError> ............................................................................. 156

19. Funciones .......................................................................................................... 158

19.1 Lectura de la posición actual <ReadActualPos> ................................................. 158

19.2 Lectura de la posición de destino <ReadTargetPos> .......................................... 159

19.3 Memorización del valor de posición de manera permanente <SavePosition> ................................................................................................. 160

19.4 Lectura de la fecha y hora del sistema <Time> ................................................... 160

19.5 Conversión de un valor de fecha y hora en texto <TimeToStr> ......................... 161

19.6 Seno <SIN>, <ASIN> ........................................................................................... 162

19.7 Coseno <COS>, <ACOS> ..................................................................................... 163

19.8 Tangente <TAN>, <ATAN> ................................................................................... 165

19.9 Cotangente <COT>, <ACOT> ................................................................................ 166

19.10 Tangente 2 <ATAN2> ......................................................................................... 167

19.11 Logaritmo <LN> ................................................................................................. 167

19.12 Exponente <EXP> .............................................................................................. 167

19.13 Valor absoluto <ABS> ....................................................................................... 168

ÍNDICE

10 Festo GDCP-CMXR-SW-ES es 1205c

19.14 Raíz cuadrada <SQRT> ...................................................................................... 168

19.15 Desplazamiento de bits <SHR>, <SHL> ............................................................... 169

19.16 Rotación de bits <ROR>, <ROL> .......................................................................... 170

19.17 Conversión de un valor en una cadena <STR>.................................................... 171

19.18 Conversión de un valor ASCII en un carácter <CHR> ....................................... 171

19.19 Conversión de un carácter en un valor ASCII <ORD> ....................................... 171

19.20 Establecer el bit en una variable WORD <SetBit> ............................................... 172

19.21 Borrar el bit en una variable WORD <ResetBit> .................................................. 173

19.22 Comprobar el bit en una variable WORD <CheckBit> ...................................... 174

20. Módulos ............................................................................................................ 175

20.1 Funciones ........................................................................................................ 176

20.2 Variable ........................................................................................................... 176

20.3 Comportamiento del tiempo de operación ....................................................... 177

20.3.1 Parámetro ovlEnable ........................................................................ 177

20.4 Módulo de entrada digital DIN ......................................................................... 178

20.4.1 Instanciación .................................................................................... 178

20.4.2 Métodos ........................................................................................... 180

20.4.3 Espera a estado, métodos Wait/WaitN ............................................. 181

20.4.4 Método Read para lectura de estado ................................................ 181

20.4.5 Método RisingEdge para flanco de subida ........................................ 181

20.4.6 Método ResetRisingEdge para borrar flancos ................................... 182

20.5 Módulo de salida digital DOUT......................................................................... 182

20.5.1 Instanciación .................................................................................... 182

20.5.2 Variable............................................................................................ 184

20.5.3 Métodos ........................................................................................... 185

20.5.4 Espera a estado, métodos Wait/WaitN ............................................. 186

20.5.5 Método Read para lectura de estado ................................................ 186

20.5.6 Flanco de subida, método RisingEdge .............................................. 186

20.5.7 Borrado de flancos, ResetRisingEdge ............................................... 187

20.5.8 Activación y borrado, métodos Set/Reset ......................................... 187

20.5.9 Activación de la salida, método Write ............................................... 188

20.5.10 Activación de la salida con una duración determinada, método Pulse ................................................................................... 188

20.6 Módulo de entrada analógica AIN .................................................................... 189

20.6.1 Instanciación .................................................................................... 189

20.6.2 Variable............................................................................................ 191

20.6.3 Métodos ........................................................................................... 191

20.6.4 Espera a que el valor sea menor/mayor, métodos WaitLss, WaitGrt ............................................................................... 192

ÍNDICE

Festo GDCP-CMXR-SW-ES es 1205c 11

20.6.5 Espera a que el valor entre/salga de un margen, métodos WaitIns, WaitOuts ............................................................ 193

20.6.6 Interrogación del valor, método Read ............................................... 193

20.7 Módulo de salida analógica AOUT .................................................................... 194

20.7.1 Instanciación .................................................................................... 194

20.7.2 Variable............................................................................................ 195

20.7.3 Métodos ........................................................................................... 196

20.7.4 Escritura del valor de salida, método Write ....................................... 197

20.7.5 Espera a que el valor sea mayor/menor, métodos WaitLss, WaitGrt ............................................................................... 197

20.7.6 Espera a que el valor entre/salga de un margen, métodos WaitIns, WaitOuts ............................................................................ 198

20.7.7 Lectura del valor de salida, método Read ......................................... 198

20.8 Módulo de reloj CLOCK .................................................................................... 199

20.8.1 Instanciación .................................................................................... 199

20.8.2 Métodos ........................................................................................... 200

20.8.3 Puesta en marcha del reloj, método Start ......................................... 201

20.8.4 Parada del reloj, método Stop .......................................................... 201

20.8.5 Borrado del reloj, método Reset ....................................................... 201

20.8.6 Lectura del reloj, método Read ......................................................... 201

20.8.7 Convertir el valor de fecha y hora en una cadena de caracteres, método ToStr ................................................................................... 202

20.9 Módulo de encoder ENCODER .......................................................................... 203

20.9.1 Instanciación .................................................................................... 203

20.9.2 Variable............................................................................................ 205

20.9.3 Métodos ........................................................................................... 205

20.9.4 Ajuste del encoder, método Set ........................................................ 205

20.9.5 Lectura del encoder, método Read ................................................... 206

20.10 Módulo CANopen COPDEVICE .......................................................................... 207

20.10.1 Instanciación .................................................................................... 207

20.10.2 Métodos ........................................................................................... 208

20.10.3 Escritura de SDO, método WriteSDO ................................................ 208

20.10.4 Lectura de SDO, método ReadSDOSigned ........................................ 209

20.10.5 Lectura de SDO, método ReadSDOUnsigned .................................... 210

21. Señales de periféricos ....................................................................................... 211

21.1 Empleo de las entradas y salidas digitales ....................................................... 211

21.2 Empleo de las entradas y salidas analógicas .................................................... 211

22. Programación de eventos .................................................................................. 213

22.1 Eventos soportados ......................................................................................... 213

22.2 Utilización del registro de instrucciones FTL ..................................................... 214

22.3 Control temporal ............................................................................................. 215

ÍNDICE

12 Festo GDCP-CMXR-SW-ES es 1205c

22.4 Evento arranque del control, <onstartup> ......................................................... 215

22.5 Eventos del control de programa ..................................................................... 215

22.5.1 Comportamiento del tiempo de ejecución durante el funcionamiento ............................................................................ 216

22.5.2 Solapamiento de eventos de programa ............................................ 217

22.5.3 Utilización de diferentes proyectos/programas ................................ 217

22.5.4 Ejemplo: Activación de un aplicador al encolar ................................. 218

22.6 Eventos para las teclas F1 y F2 ......................................................................... 220

22.7 Instrucciones FTL especiales para su aplicación con eventos ......................... 222

22.7.1 Consulta del modo de funcionamiento activo, <GetAutoModeActive, GetManualModeActive> .................................. 222

22.7.2 Cargar programa FTL, <LoadProgram> ............................................... 223

22.8 Mensajes de los programas de eventos ........................................................... 224

23. Puntos de conmutación simples ........................................................................ 226

23.1 Punto de conmutación simple con instrucción de movimiento, <DO> .............. 226

23.2 Punto de conmutación simple, <OnPosition> .................................................... 227

23.3 Comportamiento en el área de avance aproximado .......................................... 227

23.4 Comportamiento del tiempo de ejecución de la instrucción DO ..................... 228

24. Puntos de conmutación de la trayectoria .......................................................... 229

24.1 Segmento de la trayectoria .............................................................................. 229

24.2 Comportamiento en el área de avance aproximado .......................................... 230

24.3 Punto de conmutación con desplazamiento porcentual, <OnParameter> ............................................................................................................ 231

24.4 Punto de conmutación en cualquier lugar de la trayectoria, <OnDistance> .............................................................................................................. 232

24.5 Punto de conmutación en un plano de conmutación, <OnPlane> ..................... 235

24.5.1 Programación tipo teach-in de la posición respecto al plano de conmutación .................................................................................... 237

24.6 Offset de tiempo opcional ................................................................................ 238

24.6.1 Reacción del sistema en caso de valor temporal no permitido .......... 239

24.7 Condiciones generales ..................................................................................... 240

24.7.1 Funcionamiento paso a paso ............................................................ 240

24.7.2 Instrucciones de espera que influyen en la ejecución principal ......... 240

24.7.3 Fijación del indicador de frase .......................................................... 240

24.7.4 Influencia del override ...................................................................... 241

24.7.5 Trabajar en modo manual con velocidad reducida ............................ 242

24.7.6 Interrupción del programa ................................................................ 242

24.8 Puntos de conmutación no ejecutados ............................................................ 243

ÍNDICE

Festo GDCP-CMXR-SW-ES es 1205c 13

25. Ejemplos ........................................................................................................... 244

25.1 Detención de movimientos .............................................................................. 244

25.2 Empleo de los módulos de entrada y salida ..................................................... 247

25.3 Control del avance de proceso ......................................................................... 248

25.4 Empleo de pinzas ............................................................................................ 249

25.4.1 Pinzas por vacío ............................................................................... 250

25.4.2 Pinzas paralelas neumáticas ............................................................ 253

25.4.3 Unidad giratoria con pinzas neumáticas ........................................... 256

25.5 Empleo de la interface PLC ............................................................................... 260

25.5.1 Tarea ................................................................................................ 260

25.5.2 Interface PLC .................................................................................... 260

25.5.3 Programa secuencial ........................................................................ 261

A. Lista de instrucciones FTL ................................................................................. 263

B. Árbol de menús de las instrucciones FTL........................................................... 268

C. Términos utilizados ........................................................................................... 273

D. Índice ................................................................................................................ 274

1. Introducción

14 Festo GDCP-CMXR-SW-ES es 1205c

1. Introducción En este documento se describe el juego de instrucciones FTL (Festo Teach Language) del

control multieje CMXR de Festo. La programación del control CMXR se realiza con el editor FTL en el plugin correspondiente de Festo Configuration Tool (FCT) o con la unidad de mando manual CDSA-D1-VX.

Control CMXR-C1 Control CMXR-C2

Plugin FCT con editor FTL Unidad de mando manual CDSA-D1-VX

FTL es un lenguaje de programación con un juego de instrucciones concebido para la creación de programas por parte del usuario de la máquina. Este lenguaje de gran

simplicidad permite crear ciclos de máquina sencillos sin necesidad de amplios conocimientos de programación.

1.1 Validez

Condicionados por las diferentes capacidades de procesamiento de los controles CMXR, los registros de instrucciones de los controles CMXR varían entre sí.

El manual contiene el estado válido de las instrucciones FTL en el momento de la realización. No obstante, se pueden producir discrepancias debido a versiones diferentes. El apéndice 0 incluye un resumen de todas las instrucciones con la versión correspondiente y las plataformas de control.

2. Medidas de seguridad

Festo GDCP-CMXR-SW-ES es 1205c 15

2. Medidas de seguridad

2.1 Uso de la documentación

Este documento está concebido para los usuarios y programadores de robots que funcio-nan con el sistema CMXR de Festo. Existe una introducción al manejo y a la programación. La formación correspondiente del personal es condición previa indispensable.

2.2 Condiciones de utilización conforme a lo previsto

Advertencia

El sistema CMXR de Festo no está diseñado para tareas de control relacionadas con la seguridad (p. ej., parada en caso de emer-gencia o monitorización de velocidades reducidas).

Conforme a EN-13849-1, el sistema CMXR de Festo es sólo de categoría B y, por tanto, no es suficiente para realizar funciones de seguridad de protección del personal.

Para problemas de control relativos a la seguridad o para la seguri-dad de las personas deberán aplicarse medidas de protección externas que garanticen un estado operativo seguro del sistema completo, incluso en caso de fallo.

En caso de producirse daños como consecuencia de la inobservancia de este manual de

instrucciones, Festo no asume ninguna responsabilidad.

Nota

Lea en su totalidad los capítulos Medidas de seguridad 2.3 y ss. antes de la puesta en marcha.

Si la documentación en el idioma presentado no se entiende a la perfección, diríjase al proveedor y notifíqueselo.

El funcionamiento perfecto y seguro del sistema de mando requiere un transporte, almacenamiento, montaje e instalación en condiciones adecuadas y profesionales, así

como un esmerado manejo y mantenimiento.

2. Medidas de seguridad

16 Festo GDCP-CMXR-SW-ES es 1205c

2.3 Personal cualificado

Nota

Los trabajos en los equipos eléctricos únicamente pueden ser llevados a cabo por personal debidamente formado y cualificado.

2.4 Medidas de seguridad de los productos

Advertencia

¡PELIGRO!

Observe las disposiciones en materia de eliminación de residuos especiales al eliminar las baterías gastadas.

Aunque las baterías son de baja tensión, en caso de cortocircuito pueden liberar suficiente corriente como para hacer arder materiales inflamables. Por tanto, no deben eliminarse junto con materiales conductores (como, p. ej., virutas de hierro, lana de acero sucia de aceite, etc.).

ESD

Elementos sensibles a las descargas electrostáticas: Estos componentes pueden dañarse si no se manejan correctamente.

Advertencia

¡PELIGRO!

¡Movimientos peligrosos!

Peligro de muerte, lesiones graves y daños materiales por movi-miento accidental de los ejes.

2.5 Medidas de seguridad de este manual

Advertencia

¡PELIGRO!

La inobservancia puede tener como consecuencia daños materiales y lesiones físicas graves.

Atención

La inobservancia puede tener como consecuencia daños materiales graves.

2. Medidas de seguridad

Festo GDCP-CMXR-SW-ES es 1205c 17

2.6 Medidas de seguridad para el producto descrito

Advertencia

¡PELIGRO!

Peligro de muerte por equipos de PARADA DE EMERGENCIA deficientes.

Los equipos de PARADA DE EMERGENCIA deben mantener su efi-cacia y estar siempre al alcance en todos los modos de funciona-miento de la instalación. El d0esbloqueo del equipo de PARADA DE EMERGENCIA no debe provocar ningún arranque incontrolado.

Antes de conectar debe comprobarse primero la cadena de PARADA DE EMERGENCIA.

Advertencia

¡PELIGRO!

Peligro para el personal y el material.

Pruebe todos los programas nuevos antes de poner en marcha la instalación.

Advertencia

¡PELIGRO!

La instalación posterior de componentes y las modificaciones del sistema pueden reducir la seguridad.

Ello puede provocar lesiones físicas y daños materiales o ambien-tales graves. Por tanto, para la instalación posterior de compo-nentes o las modificaciones de la instalación con accesorios de equipo de otros fabricantes debe contarse con la autorización de Festo.

Advertencia

¡PELIGRO!

Peligro por alta tensión.

Los trabajos de mantenimiento deben efectuarse siempre, si no se indica lo contrario, con la instalación desconectada. Para ello, la instalación debe asegurarse contra la reconexión no autorizada o involuntaria.

Si es necesario realizar trabajos de medición o de comprobación en la instalación, deberán ser efectuados por un electricista.

Atención

Sólo deben utilizarse repuestos autorizados por Festo.

3. Edición de programas

18 Festo GDCP-CMXR-SW-ES es 1205c

3. Edición de programas

3.1 Información general

FTL es la sigla que se obtiene de Festo Teach Language. FTL es un lenguaje de programa-

ción y sirve para programar los controles CMXR.

FTL es un lenguaje de programación para robótica y sistemas de manipulación muy com-pleto pero fácil de aprender y dominar. Con él, el usuario puede programar de manera orientada a su aplicación. Las instrucciones de este lenguaje se basan en el idioma inglés.

3.2 Intérprete

Los programas FTL no son compilados sino convertidos por un intérprete. Dicho intérprete lee, al inicio, los programas estructurados en la memoria para procesarlos de manera óptima. Este proceso requiere un breve tiempo de respuesta dependiendo de la longitud del programa. Por esta razón es recomendable cargar el programa antes del inicio para poder arrancar el programa con rapidez.

3.3 Inicio del programa

Para iniciar un programa es necesario cargarlo primero en el proyecto correspondiente. La carga puede efectuarse mediante la unidad de mando manual o a través de un control externo mediante una interface de control.

Nota

Sólo puede cargarse un único proyecto de usuario. Además, el proyecto de sistema global está siempre cargado.

La ejecución del programa comienza tras la señal de arranque en la posición actual del contador de programa.

Si el contador de programa se encuentra en la última línea del programa secuencial, el programa termina pero permanece cargado. Si durante la secuencia deben arrancarse programas paralelos, el programa principal permanece activo hasta que éstos terminan.

3.4 Avance de proceso

Para conseguir un procesamiento rápido del programa, el intérprete calcula un número de instrucciones de movimientos por adelantado. El cálculo por adelantado se realiza en marcha al mismo tiempo que se ejecuta el programa y se trata en el sistema. La magnitud del avance de proceso, es decir, el número de instrucciones de movimiento calculado por adelantado, se guarda en el sistema.

3. Edición de programas

Festo GDCP-CMXR-SW-ES es 1205c 19

Nota

El avance de proceso hace referencia a las instrucciones de movi-miento. Otras instrucciones situadas entre las instrucciones de movimiento como, p. ej., la modificación de valores dinámicos o la modificación de variables, no se ven afectadas.

En este avance de proceso se descodifican las instrucciones de FTL y se preparan para los cálculos posteriores. Además, también se planifica la trayectoria del movimiento, calcu-lada a partir de los valores dinámicos ajustados.

Con algunas instrucciones FTL es posible influir en el avance de proceso, es decir, éste puede detenerse en determinadas circunstancias. Ello puede darse, p. ej., en caso de la bifurcación de un programa donde se decide por señales de entrada de los periféricos.

Si el avance de proceso se detiene, el conjunto de instrucciones calculado por adelantado se procesa y la cinemática detiene el movimiento. Después se calcula la decisión de la bifurcación del programa y se ejecutan las instrucciones de movimiento siguientes.

Nota

La detención del avance de proceso mediante la instrucción correspondiente puede provocar, en ocasiones, paradas indeseadas en la trayectoria. Con este tipo de instrucciones no es posible el avance aproximado de los movimientos.

La figura muestra un extracto de un programa FTL. La flecha superior indica la instrucción actual que se está ejecutando. La flecha inferior marca la instrucción activa del cálculo por adelantado de proceso. La distancia entre las dos flechas es el avance de proceso.

Más información y ejemplos sobre el avance de proceso se describen en el capítulo 25.3 Control del avance de proceso.

Lin(Pos1)

Lin(Pos2)

Lin(Pos3)

Lin(Pos4)

Lin(Pos5)

Lin(Pos6)

Lin(Pos7)

Lin(Pos8)

Lin(Pos9)

Proceso principal

Avance de proceso

3. Edición de programas

20 Festo GDCP-CMXR-SW-ES es 1205c

3.5 Estructura de programa

Todos los programas FTL están guardados en la tarjeta de memoria (Compact Flash Card) del control multieje CMXR en el directorio “application\control\teachcontrol” (en adelante denominado “directorio de aplicación”). Los programas se disponen en una estructura de carpetas. Un proyecto contiene los programas de movimientos asignados. El número de proyectos y programas está limitado por el tamaño de la tarjeta de memoria.

Estructuras de programa:

3.6 Proyectos FTL

Un proyecto FTL se guarda como subdirectorio en el directorio de aplicación. El nombre de directorio es el título del proyecto y tiene la extensión “tt”.

Ejemplos de títulos de proyecto:

Proyecto “_global“"

Proyecto “cube"

Proyecto “PickPlace”

3. Edición de programas

Festo GDCP-CMXR-SW-ES es 1205c 21

En un proyecto se reúnen todos los programas FTL. Por tanto, todos los programas son

elementos de un proyecto. No está permitido crear más subdirectorios dentro de un directorio de proyecto.

Nota

La estructura y administración de proyecto se generan y gestionan automáticamente mediante el software gráfico de la unidad de mando manual y el editor del software FCT.

3.6.1 Proyecto FTL global

Además de todos los proyectos FTL, existe un proyecto FTL global que recibe el nombre “_global”. Este nombre es fijo y no se puede modificar. Este proyecto sirve para todos los

proyectos. Todos los datos y programas guardados en él son accesibles desde el resto de los proyectos. Si es necesario utilizar datos o programas en varios proyectos, éstos se guardan en el proyecto global. De ese modo se garantiza la coherencia de los datos.

El proyecto global “_global” se carga y activa automáticamente al arrancar el CMXR.

3.7 Programas FTL

Todos los programas FTL que pertenecen a un proyecto se guardan en el directorio de proyecto asignado. Un programa se compone del código de programa y de los datos correspondientes. Éstos se guardan en archivos diferentes con el mismo nombre pero con una extensión diferente (file extension):

<nombre>.tip Nombre de archivo para código de programa

<nombre>.tid Nombre de archivo para datos de programa

Ejemplo:

Para un programa con el nombre “Load” se crea el archivo “Load.tip”. El nombre del archivo de los datos locales de programa es “Load.tid”.

Si el programa se guarda mediante la unidad de mando manual CDSA o mediante el editor FTL de Festo (en Festo Configuration Tool), el archivo de datos locales de programa se genera automáticamente. Si la generación de programa se efectúa con otro software, debe observar que se guarde el archivo de datos correspondiente para cada programa.

3.7.1 Programas compartidos de proyecto

El proyecto compartido de sistema “_global” puede contener programas además de datos. Dichos programas pueden ser utilizados por todos los programas en todos los proyectos.

Estos programas globales destacan por su gran comodidad de uso. Así, los programas que dependen de la cinemática utilizada pueden definirse y guardarse independientemente de los proyectos de aplicación. Si una cinemática no posee posiciones fijas, como, p. ej., una posición de seguridad, el desplazamiento a esta posición puede guardarse una vez en el proyecto global.

3. Edición de programas

22 Festo GDCP-CMXR-SW-ES es 1205c

3.8 Archivo de datos FTL “<nombre>.tid” En el sistema de mando CMXR, los datos sirven como variable y para la comunicación. La estructura de proyecto permite guardar los datos de una manera clara y limitar el acceso a ellos. Un archivo de datos se reconoce por la extensión de archivo “tid” y, como el archivo de programa, está basado en texto. En el sistema puede haber:

Datos locales de programa dentro de los programas individuales

Datos compartidos de proyecto para cada proyecto

Datos compartidos de sistema para todos los proyectos

Esta distribución permite seleccionar quién tiene acceso a los datos. La comunicación entre los programas o los proyectos se puede controlar también de este modo. Con datos compartidos de proyecto puede establecerse una comunicación entre los programas y, con

datos compartidos de sistema, entre los proyectos.

3.8.1 Datos de programa local

Los datos de programa local son conocidos únicamente dentro del programa. Otros pro-gramas o proyectos no tienen acceso a estos datos.

Nota

Los datos de programa local son conocidos y válidos únicamente dentro del programa asignado. Otros programas o proyectos no tienen acceso a estos datos.

En la figura siguiente se muestran los programas “Fill” y “Sort”. Cada uno de estos programas posee datos locales y datos de programa guardados en los archivos correspondientes.

3.8.2 Datos compartidos de proyecto

Los datos compartidos de proyecto sirven para la comunicación entre cada uno de los programas dentro de un proyecto. Otros programas fuera del proyecto correspondiente no tienen acceso a estos datos.

Los datos compartidos de proyecto se guardan en un archivo propio con el nombre “_globalvars.tid”. Si un proyecto se guarda mediante la unidad de mando manual CDSA o con el editor de programación FTL, este archivo de datos compartidos de proyecto se crea automáticamente. Si la generación de programa se efectúa con otro software, p. ej., con software de programación del cliente, debe observar que se cree este archivo de datos.

3. Edición de programas

Festo GDCP-CMXR-SW-ES es 1205c 23

Nota

Si el programa se genera mediante un software de otra marca debe observarse que se cree el archivo “_globalvars.tid” en el directorio de proyecto.

En la figura siguiente se muestran los proyectos “FillPalett” y “FeedParts”. Cada uno de estos proyectos dispone de datos compartidos de proyecto guardados en el archivo “_globalvars.tid” y en el directorio de proyecto.

3.8.3 Datos compartidos de sistema

Los datos compartidos de sistema son conocidos en todo el sistema, en todos los

programas de todos los proyectos. Estos datos compartidos de sistema están asignados al proyecto global “_global” y guardados dentro de él en el archivo de datos “_globalvars.tid”.

Nota

Como todos los programas tienen acceso a los datos compartidos de sistema, estos datos deben utilizarse con cuidado. El acceso simultáneo de varios programas a estos datos debe organizarse cuidadosamente. Si es necesario, bloquéelos con las medidas necesarias en la aplicación.

En la figura siguiente se muestra el proyecto global “_global” enlazado con datos

compartidos de proyecto y locales. Además, en el área de objetos compartidos de sistema también se muestran programas compartidos de sistema.

3. Edición de programas

24 Festo GDCP-CMXR-SW-ES es 1205c

3.8.4 Creación de instancias de variables

Las variables se declaran de la manera siguiente dentro del archivo de datos “<nombre>.tid”:

Sintaxis

<nombre de variable> : <tipo de variable> := <valor>

El nombre de las variables se puede asignar libremente teniendo en cuenta las reglas del capítulo 4.3 Palabras clave. En todo caso, sólo es posible crear una variable por línea.

Ejemplo:

cpos1 : CARTPOS := (100, 50, 100, 0, 0, 0)

cpos2 : CARTPOS := (600, 550, 100, 180, 0, 0)

index : DINT := 17

Los tipos de variables posibles se describen en los capítulos siguientes.

Atención

Los valores de variables que se modifican en el programa durante el tiempo de ejecución no se escriben en el archivo de datos de la tarjeta de memoria y sólo se mantienen mientras que el proyecto/ programa está cargado. Al descargar el proyecto/ programa o en caso de caída de tensión de alimentación se pierden los datos modificados en el programa.

3. Edición de programas

Festo GDCP-CMXR-SW-ES es 1205c 25

Nota

Para guardar de manera permanente los valores de posición en la tarjeta de memoria puede utilizarse la instrucción FTL “SavePosition”.

4. Estructura del lenguaje

26 Festo GDCP-CMXR-SW-ES es 1205c

4. Estructura del lenguaje

4.1 Formateado

Los archivos FTL son archivos de texto legibles. Las instrucciones o declaraciones se separan por retornos de carro. Por lo general se diferencia entre mayúsculas y minúsculas.

4.2 Identificadores

Los identificadores sirven para identificar proyectos, programas, módulos, variables, constantes y tipos. Un identificador es una secuencia de letras, cifras y el símbolo “_”.

Nota

Los caracteres permitidos son a…z, A…Z, 0…9 y _ (guión bajo). Todos los demás caracteres son inadmisibles.

Los identificadores distinguen entre mayúsculas y minúsculas, es decir, las variables deben escribirse siempre igual (con las mismas mayúsculas o minúsculas).

Ejemplo:

Una variable con el identificador “Index” no es la misma que las variables con el identificador “INDEX”. En este caso se trata de dos variables distintas.

Nota

A diferencia de los identificadores, los nombres de programa y los títulos de proyecto no distinguen entre mayúsculas y minúsculas.

4.3 Palabras clave

Las palabras clave forman parte del lenguaje FTL. Todas las palabras clave de FTL se escriben en mayúsculas y no deben utilizarse como nombres de programa, variables ni tipos.

Lista de todas las palabras clave:

CALL IF THEN END_IF ELSIF ELSE

GOTO LABEL WHILE DO END_WHILE LOOP

END_LOOP RETURN RUN KILL OR XOR

MOD AND NOT MAP MAPTO WAIT

BOOL DINT DWORD REAL STRING ARRAY

El resto de tipos de datos creados a partir de estas claves también son palabras clave.

4. Estructura del lenguaje

Festo GDCP-CMXR-SW-ES es 1205c 27

Lista de todas las funciones:

SIN COS TAN COT LN ABS

SQRT EXP ASIN ACOS ATAN ATAN2

ACOT SHR SHL ROR ROL STR

CHR ORD LOW HIGH

También son válidas las restricciones mencionadas para todos los nombres de instrucción, por ejemplo Lin, Vel, SetError, etc.

4.4 Constantes numéricas

Se diferencia entre números enteros y reales. Los enteros pueden escribirse en

representación decimal, binaria o hexadecimal.

Ejemplos de números enteros válidos:

Notación decimal 100 -100

Notación binaria 2#1010 -2#1010

Notación hexadecimal 16#1ABF -16#1ABF

Los números reales (valores en coma flotante) pueden representarse con coma decimal o con notación exponencial. Los valores con coma decimal deben poseer como mínimo una

posición tras la coma.

Ejemplos de números reales válidos:

Notación decimal: 1.01 178.473

Notación exponencial: 1.99E4 1.99e+8 1e-8

4.5 Cadenas de caracteres

Las cadenas de caracteres, los denominados strings, se abren y cierran con el carácter". Pueden incluir todos los caracteres imprimibles. La longitud de una cadena está limitada a 255 caracteres. Son válidos todos los caracteres ASCII.

Ejemplo de una cadena de caracteres válida:

"Control multieje CMXR-C1"

4.6 Operadores y caracteres de delimitación

Los operadores se utilizan en expresiones y describen cómo conectar los valores de variables y las constantes numéricas.

4. Estructura del lenguaje

28 Festo GDCP-CMXR-SW-ES es 1205c

4.6.1 Operadores aritméticos

Operador Significado

+ Adición

- Sustracción

* Multiplicación

/ División

MOD Módulo operación

Tabla 4.1 Operadores aritméticos

4.6.2 Operadores lógicos

Estos operadores pueden utilizarse en valores de verdad y en números enteros. Con los números enteros funcionan en bits.

Operador Significado

AND Operación Y

OR Operación O

XOR Operación O

NOT Negación

Tabla 4.2 Operadores lógicos

4.6.3 Operadores comparativos

Operador Significado

< Menor que

<= Menor o igual que

= Igual a

<> No igual a

>= Mayor o igual que

> Mayor que

Tabla 4.3 Operadores comparativos

4. Estructura del lenguaje

Festo GDCP-CMXR-SW-ES es 1205c 29

4.6.4 Otros operadores

Operador Significado

. Operador punto para acceder a los elementos de la

estructura

[ ] Operadores corchetes para acceder a matrices

( ) Paréntesis para, p. ej., listas de parámetros y para la

estructuración de la ejecución en expresiones

Tabla 4.4 Otros operadores

4.6.5 Caracteres de delimitación

Operador Significado

:= Asignación de valor para variables

: Carácter de separación para crear instancias de

variables

, Carácter de enumeración en listas de parámetros para

acceder a funciones o instrucciones FTL

Tabla 4.5 Caracteres de delimitación

5. Tipos de datos básicos

30 Festo GDCP-CMXR-SW-ES es 1205c

5. Tipos de datos básicos FTL soporta cinco tipos de datos: Datos booleanos Números enteros Patrón de bits Números variables de coma flotante Cadenas de caracteres

Dentro de estos cinco tipos de datos se derivan tipos de datos elementales en FTL. En fun-ción del significado del tipo de datos se realiza una asignación para un margen de valores determinado y las operaciones correspondientes.

Tipo de datos

Interpretación Capacidad de memoria

Margen de valores

BOOL Bit 8 bits TRUE o FALSE

DINT Número entero 32 bits -2.147.483.648 … +2.147.483.647

DWORD Patrón de bits 32 bits 32 bits

REAL Número variable

de coma flotante

32 bits Conforme a IEEE

STRING Cadena de

caracteres

Máx. 255 bytes Máx. 255 caracteres

Tabla 5.1 Tipos de datos básicos

Según el tipo de datos es posible efectuar operaciones distintas.

Tipo de datos

Operaciones

BOOL Operaciones lógicas AND, OR, XOR, NOT

DINT Operaciones aritméticas, operaciones de comparación

DWORD Operaciones de bits AND, OR, XOR, NOT, SHL, SHR, ROL, ROR, =, <>

REAL Operaciones aritméticas, operaciones de comparación

STRING Operaciones de comparación, +

Tabla 5.2 Operaciones posibles

5. Tipos de datos básicos

Festo GDCP-CMXR-SW-ES es 1205c 31

En principio, para asignar valores, los tipos de datos deben ser equivalentes. Sin embargo,

FTL soporta también parcialmente la asignación de tipos de datos diferentes. En este caso se realiza una conversión de tipo automática. Con determinados tipos de datos, para la asignación se deben utilizar las funciones integradas STR, CHR y ORD.

De\a BOOL Números enteros

Patrón de bits REAL STRING

BOOL Sí --- --- --- STR

Números

enteros

--- Sí Sí Sí STR, CHR

Patrón de bits --- Sí Sí --- STR, CHR

REAL --- Sí --- Sí STR

STRING --- ORD ORD --- Sí

Tabla 5.3 Conversiones posibles

Dependiendo del tipo de datos, se pueden realizar las siguientes conversiones:

Función Operación

STR Convierte cualquier tipo de datos en una cadena de caracteres.

CHR Convierte un valor ASCII en un único carácter.

ORD Convierte un único carácter en un valor ASCII.

Tabla 5.4 Funciones integradas

5.1 Tipo de datos booleano (BOOL)

El tipo de datos booleano tiene el valor TRUE o FALSE. Se utiliza sobre todo para operaciones lógicas y también en combinación con señales de periféricos, p. ej., entradas de sensores y salidas de actuadores.

Ejemplo:

Variables:

pos1 : BOOL

pos2 : BOOL

pos3 : BOOL

min1PosValid : BOOL

allPosValid : BOOL

Código de programa:

allPosValid := NOT pos1 AND NOT pos2 AND NOT pos3

min1PosValid := pos1 XOR pos2 XOR pos3

5. Tipos de datos básicos

32 Festo GDCP-CMXR-SW-ES es 1205c

5.2 Tipos de número entero, tipo de datos REAL, tipos de patrón de bits

El lenguaje de programación FTL soporta enteros, tipos de datos de números variables de coma flotante y de patrones de bits. Según el caso pueden asignarse entre sí estos tipos de datos (véase el capítulo 5 Tipos de datos básicos en la página 30). Con este modelo de asignación, el sistema convierte internamente los tipos de manera automática.

Según la clase de conversión de tipos, puede perderse en precisión, p. ej., para convertir de REAL a DINT, el sistema elimina las posiciones decimales.

Ejemplos de conversiones de tipos:

Variables:

pressure : REAL

index : DINT

Código de programa:

pressure := 1.53

index := pressure // conversión REAL->DINT

La variable “index” recibe el valor “1” después de la conversión.

Nota

Las conversiones de tipos sólo deben utilizarse cuando la consecuencia está perfectamente clara (véase el ejemplo más arriba).

5.3 Paréntesis

Los paréntesis se utilizan para agrupar cálculos de acuerdo con el orden de procesamiento. Los paréntesis son procesados de dentro a fuera.

Ejemplo:

:

IF (Index < 10) AND (Index > 5) THEN

:

END_IF

:

Distance := (xRow + 10) * Index

:

5. Tipos de datos básicos

Festo GDCP-CMXR-SW-ES es 1205c 33

5.4 Cadenas de caracteres (STRING)

Las cadenas de caracteres se describen con el tipo de datos STRING. La longitud de una cadena está limitada a 255 caracteres. Las cadenas de caracteres, también denominadas strings, pueden asignarse entre sí y conectarse fácilmente con ayuda del operador +.

Ejemplo:

Variable:

message : STRING

part : STRING

Código de programa:

message := “cylinder “

part := “DNC “

message := message + part + “is extended“

5.5 Tipos de datos estructurados

Por tipos de datos estructurados se entiende una agrupación fija de tipos de datos básicos en un tipo de datos nuevo.

Los tipos de datos estructurados no pueden crearse a nivel de usuario. Éstos (sólo) se utilizan como tipos de datos en instrucciones FTL. Una aplicación es, p. ej., la representación de posiciones. Con el tipo de datos “AXISPOS” se describe una posición de

eje compuesta por seis variables del tipo de datos básicos REAL en una secuencia determinada. Véase el capítulo 9.1 Descripción de la posición en la página 63.

5.6 Matrices

Las matrices se utilizan para agrupar tipos de datos iguales en una unidad ordenada. El acceso a cada uno de los elementos de la matriz se realiza con un índice. Los límites de la matriz están sometidos a control. Si se realiza una operación que rebasa el tamaño de la matriz, aparece un aviso.

Declaración de matrices:

Sintaxis

VAR

<nombre> : ARRAY [ <tamaño de la matriz> ] OF <tipo de datos> := ( <inicialización>)

END_VAR

5. Tipos de datos básicos

34 Festo GDCP-CMXR-SW-ES es 1205c

En el parámetro “tamaño de la matriz” se especifica:

El tamaño de la matriz

El índice de rango de la matriz

Las dimensiones de la matriz

Tamaño de la matriz

El tamaño de la matriz se indica por medio de una constante (número entero). El tamaño de la matriz no se puede indicar con una variable.

// Matriz con 10 elementos

Matrix1 : ARRAY [10] OF DINT

// Matriz con 12 elementos

Matrix2 : ARRAY [12] OF CARTPOS

Índice de rango

El índice de rango de la matriz comienza normalmente por 0 y termina por el tamaño de matriz definido menos 1. Si, por ejemplo, se define una matriz de 10 elementos, el índice de la matriz irá de 0 a 9. Mediante el índice de la matriz se accede al elemento individual de la matriz.

Si se requiere un índice de matriz especial, puede especificarse en la declaración de la matriz.

Sintaxis

VAR

<nombre> : ARRAY [<comienzo del índice> ... <final del índice> ] OF

<tipo de datos> := ( <inicialización>)

END_VAR

El siguiente ejemplo muestra una matriz de 10 elementos cuyo índice va de 3 a 12:

Matrix3 : ARRAY [3...12] OF DINT

Dimensiones

Toda matriz tiene, por lo menos, una dimensión, pero también puede tener varias dimen-siones. Las matrices multidimensionales se indican especificando sus dimensiones entre corchetes y separadas por comas.

5. Tipos de datos básicos

Festo GDCP-CMXR-SW-ES es 1205c 35

Sintaxis

VAR

<nombre> : ARRAY [<tamaño 1> , <tamaño 2>, <tamaño 3>, ... ] OF

<tipo de datos> := ( <inicialización>)

END_VAR

Los siguientes ejemplos muestran la declaración de matrices multidimensionales:

// Matriz de 2 dimensiones con 3 elementos cada una = 9

elementos

Matrix1 : ARRAY [3, 3] OF DINT

// Matriz de 3 dimensiones con 3 elementos o 2 elementos = 18

elementos

Matrix2 : ARRAY [3, 3, 2] OF DINT

Si es necesario, en las matrices multidimensionales también se puede indicar un índice de rango. El siguiente ejemplo muestra una matriz de 3 x 3 elementos, cada uno con un índice de rango distinto:

Matrix3 : ARRAY [1..3, 5..7, 0..2] OF DINT

5.6.1 Inicialización de matrices

El sistema inicializa las matrices con el valor 0. Si se desea una inicialización distinta, puede indicarse entre paréntesis después del tipo de matriz.

Ejemplo:

Matrix1 : ARRAY [7] OF DINT := (0, 1, 2, 3, , , )

Matrix2 : ARRAY [3, 3] OF DINT := ((1, , 9), (3, , 7), (, , 6))

Cada campo de la matriz se introduce con una coma. Si no se desea inicializar este campo, no debe indicarse. No obstante, la coma es imprescindible para que los demás elementos se inicialicen correctamente.

5.6.2 Cómo determinar los límites de la matriz con LOW y HIGH

Con la palabra clave LOW se puede averiguar el índice de rango más bajo de una matriz y con la palabra clave HIGH, el índice de rango más alto.

Sintaxis

<variable : DINT> := LOW( <variable de matriz> )

<variable : DINT> := HIGH( <variable de matriz> )

5. Tipos de datos básicos

36 Festo GDCP-CMXR-SW-ES es 1205c

A las funciones LOW y HIGH se les transfiere una variable de matriz. Si es preciso averiguar

los límites de una matriz unidimensional, solamente se transfiere el nombre de la matriz. En el caso de las matrices multidimensionales, se debe indicar siempre la dimensión desde la cual se deben transmitir los límites.

Matrix : ARRAY [5, 19, 10..34] OF REAL

Los límites de rango de la matriz son:

De 0 a 4 para la primera dimensión

o Abrir LOW da como resultado 0

o Abrir HIGH da como resultado 4

De 0 a 18 para la segunda dimensión

o Abrir LOW da como resultado 0

o Abrir HIGH da como resultado 18

De 10 a 34 para la tercera dimensión

o Abrir LOW da como resultado 10

o Abrir HIGH da como resultado 34

Nota

Si se transmite a LOW o a HIGH una variable que no es una matriz, aparece un mensaje de error.

Ejemplos:

Matrix1 : ARRAY [1..4] OF DINT

Matrix2 : ARRAY [3,8] OF DINT

Index : DINT

// El índice tiene el valor 1

Index := LOW(Matrix1)

// El índice tiene el valor 4

Index := HIGH(Matrix1)

// El índice tiene el valor 0

Index := LOW(Matrix2)

// El índice tiene el valor 2

Index := HIGH(Matrix2)

// El índice tiene el valor 0

Index := LOW(Matrix2[0])

// El índice tiene el valor 7

Index := HIGH(Matrix2[0])

5. Tipos de datos básicos

Festo GDCP-CMXR-SW-ES es 1205c 37

5.7 Variables de referencia (mapeado)

El mecanismo de mapeado permite definir variables como referencias a un determinado tipo. Estas variables se pueden vincular posteriormente con objetos de ese tipo.

De esas variables de referencia se dice que están “mapeadas” a un objeto o que ese objeto está asignado a las variables de referencia. Un uso directo de las variables de referencia equivale por tanto a utilizar el objeto que ha sido asignado a ellas a través del mecanismo de mapeado.

Si se utiliza directamente una variable de referencia que no tiene asignado ningún objeto, se produce un error.

Las variables de referencia solamente utilizan la memoria estrictamente necesaria para establecer un enlace con el objeto asignado. La memoria utilizada es independiente del

tipo de objeto asignado.

La siguiente gráfica muestra el mecanismo de mapeado:

Si en el programa se utiliza la variable de referencia Ref_Index, esta variable funcionará con la zona de memoria y el contenido propios de la variable Index_C.

Ejemplo: La instrucción Ref_Index := 10 describe la variable Index_C con el valor 10.

Nota

Al leer una variable mapeada, se lee la variable asignada. De igual modo, al escribir en una variable mapeada, se escribe en la variable asignada.

Variable de referencia Index_A

Index_B

Index_C

Ref_Index

Mapeado de Ref_Index a Index_C

Variables de programa

5. Tipos de datos básicos

38 Festo GDCP-CMXR-SW-ES es 1205c

5.7.1 Declaración de variables de referencia, <MAPTO>

La declaración de una variable de referencia se puede realizar con cualquier tipo de datos, por ejemplo DINT o REAL. La declaración se lleva a cabo anteponiendo la palabra clave MAPTO al tipo de datos propiamente dicho. Las variables de referencia no se pueden inicializar.

Sintaxis

<variable> : MAPTO <tipo de datos>

Ejemplo:

Index : MAPTO DINT

Level : MAPTO REAL

Home : MAPTO CARTPOS

En este ejemplo se han declarado 3 variables de referencia que tienen asignados distintos tipos de datos.

5.7.2 Vinculación de variables de referencia, <MAP>

Para vincular las variables de referencia a otras variables se utiliza la palabra clave MAP. A

la hora de efectuar esta operación, debe recordarse que sólo es posible vincular variables que tengan el mismo tipo de datos que las variables de referencia.

Sintaxis

<variable> : = MAP( <variable> )

Ejemplo:

MyIndex := MAP(Index)

5.7.3 Comprobación de variables de referencia, <IS_MAPPED>

Con la función IS_MAPPED se puede comprobar si una variable de referencia está vinculada a una variable. Si en el programa se utiliza una variable de referencia que no está vinculada, se producirá un error.

Sintaxis

IS_MAPPED (<variable de referencia>) : BOOL

5. Tipos de datos básicos

Festo GDCP-CMXR-SW-ES es 1205c 39

Valores devueltos:

TRUE La variable de referencia está vinculada

FALSE La variable de referencia no está vinculada

Esta función se utiliza, por ejemplo, al emplear variables de referencia en un subprograma, en cuyo caso la vinculación de variables se realiza fuera de dicho subprograma.

Ejemplo:

IF IS_MAPPED(Level) THEN

:

:

ELSIF

SetError(“Not mapped”)

END_IF

6. Declaración de variables

40 Festo GDCP-CMXR-SW-ES es 1205c

6. Declaración de variables La declaración de variables se efectúa en los archivos correspondientes con la extensión “tid”. En ellos se fija el nombre de la variable y el tipo de datos. El nombre y el tipo de datos se separan entre sí con dos puntos.

Sintaxis

<nombre> : <tipo>

Ejemplos de declaraciones de variable válidas:

offset : REAL

flag : BOOL

index : DINT

name : STRING

6.1 Inicialización

Todas las variables FTL se inicializan automáticamente. Las variables de números enteros y las variables reales se inicializan con 0, las cadenas de caracteres (strings) con una cadena vacía “ ” y la variable booleana con FALSE.

Además de la inicialización automática también es posible inicializar variables con un valor

determinado. Ello también se denomina inicialización explícita. El valor inicial se introduce según la indicación de tipo en forma de asignación en el archivo de datos. Las variables reales también pueden inicializarse con valores enteros.

Ejemplo de inicializaciones válidas:

index : DINT := 1

pi : REAL := 3.1415

radius : REAL := 10

flag : BOOL := TRUE

message : STRING := “Hello"

7. Expresiones

Festo GDCP-CMXR-SW-ES es 1205c 41

7. Expresiones Una expresión describe un valor asignado a un tipo de datos determinado. Una expresión puede contener variables y funciones. Las partes integrantes de una expresión se conectan con operadores.

valor := SQRT(a) – 2*a*b + SQRT(b)

7.1 Secuencia de ejecución para expresiones

Los operadores de una expresión se procesan en una secuencia determinada:

1. ( ) (Paréntesis)

2. [] (Índice de matriz)

3. NOT (Negación)

4. * / MOD AND (Multiplicación, división, módulo, Y lógico)

5. + - OR XOR (Adición, sustracción, O/EXOR lógicos)

6. < <= = <> >= > (Operaciones de comparación)

8. Control de programa

42 Festo GDCP-CMXR-SW-ES es 1205c

8. Control de programa

8.1 Instrucciones

Los programas FTL se componen de una sucesión de instrucciones separadas por retornos de carro. Instrucciones reconocidas por FTL:

1. Asignación de valor

2. Bifurcaciones: IF, IF .. GOTO, GOTO .. LABEL, RETURN

3. Bucles: WHILE, LOOP

4. Ejecución de rutinas: CALL, llamada a instrucción, RUN, KILL

5. Instrucción de sincronización: WAIT

8.2 Asignación de valor <:=>

La asignación de valor se compone de un carácter de variable a la izquierda del operador, el propio operador de asignación := y una expresión a la derecha del operador. El tipo de

datos de la expresión debe poder asignarse al tipo de datos de la variable.

Sintaxis

<variable > := <expresión>

Ejemplos:

i := 1

x := a + b * 2

8.3 Condiciones

Dentro de instrucciones, bifurcaciones o bucles es posible formular condiciones. Éstas pueden contener operandos booleanos (p. ej., AND, OR) o un operando comparativo (p. ej., >, <=,=). El enlace de varias comparaciones se estructura mediante los correspondientes niveles entre paréntesis.

Para los ejemplos siguientes se utilizan las variables indicadas a continuación:

Marker : BOOL

Flag1 : BOOL

Flag2 : BOOL

Flag3 : BOOL

Index : DINT

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 43

Ejemplos de condiciones:

Marker := Index < 10

Marker := Flag1 AND Flag2 OR Flag3

IF Index < 10 THEN

:

END_IF

WHILE Index < 5 DO

:

END_WHILE

WHILE NOT Flag1 AND Flag3 OR Flag2 DO

:

END_WHILE

Ejemplos de condiciones con paréntesis:

Marker := (Index < 10) AND (Index < 0)

Marker := Flag1 AND (Index < 7)

IF (Index < 10) AND (Index > 5) THEN

:

END_IF

8.4 Bifurcación <IF…THEN>

La instrucción IF permite realizar bifurcaciones dependientes de condiciones en la ejecución del programa. La condición debe ser del tipo de datos BOOL y puede estar compuesta por varios operandos. Con la instrucción ELSIF pueden formularse varias condiciones. Con la instrucción ELSE es posible definir instrucciones que pueden saltarse si las condiciones no son pertinentes. La instrucción IF se cierra con la instrucción END_IF.

8. Control de programa

44 Festo GDCP-CMXR-SW-ES es 1205c

Sintaxis

IF <condición> THEN

<instrucciones>

ELSIF <condición> THEN

<instrucciones>

ELSE

<instrucciones>

END_IF

La instrucción ELSEIF puede aparecer varias veces.

Ejemplo:

Un equipo de medición emite dos señales que admiten evaluación de calidad.

partOk Señal de pieza buena

partBad Señal de pieza desechable

En el ejemplo de FTL siguiente se introduce una bifurcación al detectar una pieza buena o una pieza desechable. Si las señales no están definidas, es decir, las dos señales tienen el estado TRUE o FALSE, se avanza a la posición PosStart.

IF partOk AND NOT partBad THEN // pieza buena Lin(pos12) Lin(pos13) ELSIF NOT partOk AND partBad THEN // pieza desechable Lin(pos3) Lin(pos4) ELSE Lin(posStart) // ninguna señal definida END_IF

8.5 Instrucciones de salto

En los programas FTL es necesario efectuar saltos con frecuencia. Estos saltos pueden ser condicionales o incondicionales. Para realizar un salto, se requiere un punto inicial y un destino.

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 45

Nota

El destino del salto debe situarse dentro del programa activo. No está permitido realizar un salto dentro de un bloque de instruc-ciones con IF..THEN, WHILE o LOOP. Sin embargo, sí es posible saltar desde un bloque de instrucciones semejante.

8.5.1 Marca de salto <LABEL>

Una marca de salto debe declararse como destino de un salto. Una marca de salto se

compone de un nombre que puede elegir libremente usuario. La marca de salto es inequívoca y sólo debe aparecer una vez dentro de un programa. Para que el sistema detecte una marca de salto, la palabra clave LABEL se coloca delante.

Sintaxis

LABEL <marca de salto>

Con las instrucciones de salto descritas a continuación puede saltarse a la marca de salto.

Nota

Si la programación se efectúa con el CDSA, primero debe definirse el destino del salto (LABEL). Sólo entonces puede programarse la instrucción GOTO.

8.5.2 Salto condicional <IF…GOTO>

Con la instrucción IF…GOTO se ejecutan saltos condicionales. Esta instrucción requiere, como la bifurcación del programa IF…THEN, una condición que debe cumplir el tipo de datos BOOL.

:

Lin(pos15)

Lin(pos16)

Lin(pos5)

Lin(pos6)

:

IF teilOk GOTO lblHome

LABEL lblHome

Condición de salto

Destino del salto

8. Control de programa

46 Festo GDCP-CMXR-SW-ES es 1205c

Sintaxis

IF <condición> GOTO <marca de salto>

Si la condición se cumple, es decir, si el resultado es TRUE, se ejecuta el salto. Si la condi-ción no se cumple, es decir, si el resultado es FALSE, se ejecutan las instrucciones de las siguientes líneas de programa.

8.5.3 Salto absoluto <GOTO>

A diferencia de la instrucción de salto condicional IF…GOTO, la instrucción GOTO es abso-luta. Ello significa que no hay instrucción condicional.

Sintaxis

GOTO <marca de salto>

Con la instrucción GOTO pueden saltarse partes del programa con gran facilidad. Ésta es apropiada para saltar desde bucles de programa.

Nota

Si la programación se efectúa con el CDSA, primero debe definirse el destino del salto (LABEL). Sólo entonces puede programarse la instrucción GOTO.

8.6 Bucles

Los bucles son instrucciones del programa que repiten una parte definida del mismo de manera condicional o incondicional. Con ellos es posible abreviar considerablemente los programas dependiendo de la tarea, p. ej., extracción de piezas de una paleta cuyas posiciones pueden calcularse partiendo de la disposición conocida.

Atención

La programación de bucles sin fin puede reducir el comportamiento de operación del control CMXR. Los bucles sin fin deben poseer instrucciones como Wait o WaitTime para no bloquear el control CMXR.

8.6.1 Instrucción WHILE <WHILE>

La instrucción WHILE sirve para repetir una secuencia de instrucciones si se cumple una condición. El resultado de la condición del bucle debe ser del tipo de datos BOOL. El bucle puede contener un número ilimitado de instrucciones. La instrucción WHILE se cierra con la palabra clave END_WHILE.

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 47

Nota

Si un bucle va a pasar con mucha frecuencia y no contiene instruc-ciones WAIT, puede entorpecer la ejecución de otros programas FTL. En un caso así, por lo general el control está configurado para activar una advertencia y detener brevemente el programa no cooperativo.

Sintaxis

WHILE <condición> DO

<instrucciones>

END_WHILE

Ejemplo:

WHILE index < 5 DO

Lin(pos1)

Lin(pos2)

Lin(pos3)

index := index + 1

END_WHILE

8.6.2 Instrucción LOOP <LOOP>

La instrucción LOOP sirve para repetir una secuencia de instrucciones. El usuario puede introducir directamente el número de repeticiones de las instrucciones. Para cada instruc-ción LOOP se crea automáticamente una variable de bucle interna que se inicializa a 1 al ejecutar el bucle. El bucle se ejecuta hasta que el valor de las variables de bucle internas supera el valor final. Si el valor final es inferior a 1, el bucle no se ejecuta sino que se salta. Después de cada ciclo, el valor de las variables de bucle suma uno y el valor final se calcula de nuevo.

El bucle puede contener un número ilimitado de instrucciones.

Sintaxis

LOOP <número> DO

<instrucciones>

END_LOOP

8. Control de programa

48 Festo GDCP-CMXR-SW-ES es 1205c

Ejemplos:

LOOP 10 DO // 10 ciclos

index := index + 13

END_LOOP

j := 0

...

LOOP j DO // se salta, ya que j = 0

index := index + 13

END_LOOP

:

8.7 Subprogramas

En un programa es posible llamar a otros programas. Estos programas deben encontrarse en el mismo proyecto que el programa activo o en el proyecto global (_global, véase el capítulo 3.6.1 Proyecto FTL global en la página 21). Los programas llamados se denominan subprogramas.

Nota

Un subprograma no requiere ningún identificador especial, se crea de la misma manera que cualquier otro programa y se guarda en un proyecto. La diferencia entre programa y subprograma radica en que este último se activa desde un programa y no directamente desde el proyecto.

Proceso:

Mientras se procesa el subprograma, el programa que lo ha llamado espera a que acabe. Al finalizar el subprograma se retorna automáticamente al programa superior, que se reanuda.

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 49

Esquema de secuencias:

En este ejemplo, el programa “feed” llama al subprograma “movehome”. Si el programa “movehome” ha finalizado el proceso, el programa “feed” reanuda su operación.

Ventajas:

La creación de programas con subprogramas permite programar de una manera clara y eficiente. El código de programa para tareas parciales se guarda por separado y puede ser

utilizado por varios programas. Ello mejora el mantenimiento y la coherencia de los programas.

8.7.1 Llamada de subprograma <CALL>

El subprograma se llama con la instrucción CALL. No es posible transferir parámetros de programa al subprograma. Si es necesario transferir datos, esto deberá efectuarse a través de las variables globales. Antes de la llamada, estas variables reciben los valores corres-pondientes y se procesan dentro del subprograma.

No es posible realizar llamadas recursivas de programas. Por tanto, un programa no se puede llamar a sí mismo. Además, tampoco es posible llamar al programa que está llamando.

Sintaxis

CALL <nombre del programa> ( )

Programa principal

Sprungziel

Subprograma

8. Control de programa

50 Festo GDCP-CMXR-SW-ES es 1205c

Ejemplo:

:

variant := 17 // Variable para el programa Pegar

directionRight := TRUE // Variable para el programa Pegar

directionLeft := FALSE // Variable para el programa Pegar

CALL Glueing() // Subprograma Pegar

CALL MoveStart() // Subprograma Moverse hasta la

posición inicial

:

8.7.2 Retorno al programa <RETURN>

En principio, un subprograma termina con la última instrucción. La instrucción RETURN sirve para terminar un subprograma antes de la última instrucción. Con ella se termina el subprograma antes de tiempo y se retorna al programa que ha efectuado la llamada para su reanudación.

Sintaxis

RETURN

No es posible devolver los valores al programa de nivel superior. Si fuera necesario, se

pueden utilizar las variables globales correspondientes.

Nota

Si la instrucción RETURN se ejecuta en el programa principal, éste se detiene y termina.

Al llamar a RETURN en un programa paralelo o en un subprograma, éstos terminan. El programa principal se reanuda.

Ejemplo:

:

CALL CheckPart() // Llamar al subprograma CheckPart

IF NOT partOk THEN

partStatus := 10 // Variable global para el valor de retorno

RETURN // Adelanto del fin de programa

END_IF

Lin(pos3)

:

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 51

8.8 Programas paralelos

Un programa del proyecto activo o del proyecto global también puede iniciarse como proceso paralelo. El sistema operativo del CMXR se encarga del proceso en paralelo de estos programas gracias al sistema interno multitarea.

Nota

Las instrucciones de desplazamiento en una cinemática sólo son posibles en un programa paralelo si un programa principal no ha dado una instrucción de desplazamiento. Si la instrucción de desplazamiento se realiza desde un programa principal o paralelo, el sistema genera un error.

Aplicación:

Los programas paralelos permiten crear procesos asíncronos o de sincronía parcial con el programa principal. Un ejemplo es el control de una unidad de alimentación de piezas o de expulsión controlada con entradas/salidas. En este caso, la secuencia puede describirse con instrucciones lógicas y el procesamiento de las entradas/salidas. Según el requeri-miento, una sincronización con el programa principal puede realizarse mediante variables globales.

Esquema de secuencias:

En este ejemplo, el programa “feed” llama al programa paralelo “calculate”. El programa “calculate” espera primero a una señal e incrementa el contador. Mientras tanto, el programa principal “feed” sigue procesando.

Programa paralelo

Programa principal

Sprungziel

8. Control de programa

52 Festo GDCP-CMXR-SW-ES es 1205c

Nota

Si se programa un bucle sin fin en un programa paralelo, debe garantizarse que ello no bloquee la ejecución de los otros programas. El reparto de la capacidad de procesamiento con otros programas se garantiza con una instrucción Wait o WaitTime.

8.8.1 Ejecución del programa paralelo <RUN>

Un programa paralelo se ejecuta con la instrucción RUN. No es posible transferir parámetros al programa que se va a ejecutar. Para transferir datos pueden utilizarse las variables globales.

Sintaxis

RUN <nombre del programa>

Un programa activo no puede ejecutarse simultáneamente como programa paralelo.

8.8.2 Finalización del programa paralelo <KILL>

Un programa paralelo activo puede terminarse con la instrucción “KILL” emitida desde el programa que lo ha llamado. Primero se detienen el programa y la cinemática, luego el programa finaliza.

Sintaxis

KILL <nombre del programa>

La instrucción RETURN en programas paralelos también provoca su terminación.

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 53

8.9 Influencia del avance de proceso

Para recorrer los movimientos de forma eficiente y detectar situaciones críticas como, por ejemplo, la superación de la dinámica máx. de accionamiento, la trayectoria debe calcularse por adelantado. No obstante, en algunas situaciones es necesario que el cálculo por adelantado del programa se sincronice con la ejecución. Con esta finalidad, en la programación FTL se ofrecen diferentes instrucciones que detienen el cálculo por adelantado y, por consiguiente, generan una parada del movimiento o esperan el momento óptimo para la ejecución del programa para no influir en la dinámica del movimiento. En las páginas siguientes se describen estas instrucciones.

8.9.1 WAIT – Instrucción con tiempo <WaitTime>

La instrucción WAIT con indicación de tiempo permite programar un tiempo de espera. Este tiempo de espera repercute en el comportamiento de movimiento y fuerza la detención del cálculo por adelantado de proceso, que a su vez para el movimiento. El tiempo de espera empieza a contar una vez ejecutada la instrucción anterior. Transcurrido este tiempo se reanuda el programa.

Sintaxis

WaitTime (<timeMS >: DINT)

El tiempo se indica en milisegundos mediante un valor o una variable.

Nota

Para sincronizar el avance de proceso con el proceso principal, utilice la instrucción WaitTime 0.

Ejemplo:

Un sistema de manipulación equipado con una pinza extrae piezas de una paleta. Para agarrar las piezas con seguridad debe esperarse un tiempo determinado.

Extracto del programa de movimientos:

:

Lin(pos1) // Avanzar sobre posición de sujeción

Lin(pos2) // Avanzar a posición de la pinza

Gripper.Set() // Cerrar pinza

WaitTime(70) // Esperar 70 ms de tiempo de sujeción

Lin(pos1) // Avanzar sobre posición de sujeción

:

8. Control de programa

54 Festo GDCP-CMXR-SW-ES es 1205c

Desarrollo del movimiento:

8.9.2 Instrucción condicional WAIT <WAIT>

La instrucción WAIT condicional permite interrogar estados binarios. Este estado puede estar compuesto por una única variable booleana, una combinación de interrogaciones o una sola interrogación.

El procesamiento de la instrucción WAIT se efectúa en el avance de proceso, es decir cuando el control CMXR calcula por adelantado. Si la condición no se cumple, el avance de proceso (cálculo por adelantado) se detiene hasta que se cumpla la condición de la instrucción WAIT.

Si el retardo temporal es tan grande que incluso la ejecución principal del programa de movimientos alcanza la instrucción WAIT, ésta también se detiene y provoca la parada del movimiento. El proceso y el cálculo por adelantado no se reanudarán hasta que cumpla la condición de la instrucción WAIT.

Tiempo de espera 70 ms

Tiempo

Velocidad de trayectoria

pos1

pos1

pos2

Lin(pos1)

Lin(pos2)

Lin(pos3)

Lin(pos4)

Lin(pos5)

Wait sensor

Lin(pos6)

Lin(pos7)

Lin(pos8)

Lin(pos9)

Proceso principal

Avance de

proceso

Lin(pos1)

Lin(pos2)

Lin(pos3)

Lin(pos4)

Lin(pos5)

Wait sensor

Lin(pos6)

Lin(pos7)

Lin(pos8)

Lin(pos9)

Proceso principal

Avance de proceso

Condición para WAIT cumplida, se reanuda el cálculo del avance de proceso.

Si la condición para WAIT no se cumple, el avance de proceso se detiene hasta que se cumple la condición.

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 55

Nota

Como la interrogación de la condición en el avance de proceso se realiza con éxito, la modificación efectuada por dicho avance des-pués del procesamiento ya no se registra. Para realizar el registro puede forzarse una sincronización con el proceso principal ajustando previamente la instrucción WaitTime (véase el capítulo 8.9.1 WAIT – Instrucción con tiempo en la página 53).

En la condición de la instrucción WAIT pueden utilizarse los tipos de datos básicos BOOL, REAL y DINT con operadores lógicos y operadores comparativos. No es posible utilizar los operadores aritméticos ni de bits.

Sintaxis

WAIT <condición>

Ejemplo:

Se van a alimentar piezas en un plano inclinado a un sistema de manipulación. Un sensor digital detecta la presencia de una pieza y el sistema de manipulación puede recogerla a continuación.

El sensor detecta si hay una pieza sobre la bandeja. Si hay una pieza preparada, el sistema de manipulación la recoge.

Sensor

X

Z

Pinza por vacío

Pieza

Bandeja

Pos2

Pos1

Pos3

Pos4

8. Control de programa

56 Festo GDCP-CMXR-SW-ES es 1205c

Extracto del programa de movimientos:

:

Lin(pos2) // Avanzar sobre pieza

Vacuum.Set() // Vacío conectado

WAIT sensor // Esperar a que haya una pieza

Lin(pos1) // Avanzar hasta pieza

Lin(pos2) // Avanzar sobre pieza

Lin(pos3) // Avanzar sobre bandeja

Lin(pos4) // Posar pieza

WaitTime(0) // Esperar a proceso principal

Vacuum.Reset() // Vacío desconectado

Lin(pos3) // Avanzar sobre bandeja

:

Si no hay ninguna pieza sobre la bandeja, el sistema de manipulación espera a la pieza y el movimiento se detiene. Cuando el sensor indica “Presencia de pieza", el programa se reanuda. Si al arrancar ya hay una pieza, el sistema de manipulación avanza inmediatamente hasta ella sin interrumpir el movimiento.

8.9.3 WaitOnPath – Instrucción con tiempo <WaitOnPath>

La instrucción FTL WaitOnPath genera un tiempo de espera que solamente repercute sobre el movimiento. Este tiempo de espera se incorpora directamente a la planificación de la trayectoria y los ejes se frenan con la dinámica programada. Una vez transcurrido ese tiempo, se continúa con la siguiente trayectoria. El avance de proceso del programa FTL no se detiene.

Nota

La instrucción WaitOnPath no es apropiada para sincronizar instrucciones (por ejemplo la conmutación de una salida o la descripción de una variable) con la ejecución principal del programa.

Sintaxis

WaitOnPath ( <timeMS> : DINT )

Parámetro Significado Unidad

time Tiempo de espera ms

Tabla 8.1 Parámetro de la instrucción WaitOnPath

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 57

Ejemplo:

Con un troquel se estampa una marca sobre una pieza. Una vez alcanzada la posición de estampado, para que se transfiera el color debe aguardarse un tiempo de espera de 150 ms. Sin embargo, el avance de proceso no se debe detener.

:

Lin(pos1) // Avanzar a seguridad

Lin(printPos) // Avanzar a posición de estampado

WaitOnPath(150) // Esperar 150 ms

Lin(pos1) // Avanzar a seguridad

:

8.9.4 WaitOnPos – Instrucción con tiempo <WaitOnPos>

La instrucción FTL WaitOnPos detiene el avance de proceso hasta que se ejecuta el porcentaje indicado del segmento actual. A continuación, el programa continúa ejecutándose.

Sintaxis

WaitOnPos ( OPT <pos> : REAL )

Parámetro Significado Unidad

Pos Valor porcentual de longitud del

segmento de trayectoria

Porcentaje

Tabla 8.2 Parámetro de la instrucción WaitOnPos

Si está activado un avance aproximado y la distancia hasta el punto de destino del avance aproximado es lo bastante grande, el avance se ejecuta. El parámetro de la parte porcentual es opcional. Si no se especifica, tendrá un valor de 100%. Esto tendrá como consecuencia una parada en la trayectoria.

Tiempo de espera 150 ms

Tiempo

Velocidad de trayectoria

pos1

pos1

printPos

8. Control de programa

58 Festo GDCP-CMXR-SW-ES es 1205c

En el siguiente ejemplo se alcanzan posiciones y el avance de proceso se detiene hasta que se recorre el 80% del segmento de la trayectoria. A continuación, en el ejemplo, la variable Index adquiere el valor 10.

Lin(Pos1)

Lin(Pos2)

WaitOnPos(80)

Index := 10

8.9.5 WaitOnMainRun – Esperar a la ejecución principal <WaitOnMainRun>

La instrucción FTL WaitOnMainRun detiene el avance de proceso hasta que la ejecución principal lo haya alcanzado. No obstante, esto no afecta a la dinámica de la trayectoria.

Esto significa que no repercute en un avance aproximado a una posición siguiente.

Sintaxis

WaitOnMainRun ( )

Esta instrucción permite una descripción lo más tardía posible o una evaluación de las señales sin que ello afecte al movimiento. No se alcanza con exactitud una posición previa programada debido al avance aproximado al segmento siguiente.

Ejemplo:

En la siguiente secuencia de movimientos, poco antes de alcanzarse la posición pos2, se ejecuta la instrucción WaitOnMainRun y, a continuación, se describe la variable plc_InBool[3], que va al PLC.

:

Lin(pos1) // Ir a pos1

Lin(pos2) // Ir a pos2

WaitOnMainRun() // Esperar a la ejecución principal

plc_InBool[3] := TRUE // Señal a PLC

Pos2

Pos1

80%

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 59

Lin(pos3) // Ir a pos3

:

El diagrama siguiente muestra la representación temporal de la ejecución de WaitOnMainRun:

8.10 Instrucción DO

Con la instrucción DO se puede forzar la ejecución de determinadas instrucciones FTL durante la ejecución principal del programa. Esta instrucción tiene la siguiente sintaxis:

Sintaxis

<instrucción FTL> DO <instrucción FTL>

La instrucción FTL tras DO se ejecuta durante la ejecución principal del programa. La instrucción DO no influye en el cálculo por adelantado del programa.

Tras una instrucción DO se puede utilizar un número limitado de instrucciones FTL. No se permiten las instrucciones referidas a una cinemática, por ejemplo, una indicación de dinámica o un recorrido de posicionado.

Nota

La instrucción DO se ejecuta después de que se ha ejecutado, en la ejecución principal, la instrucción FTL situada antes de ella. La eje-cución se realiza incondicionalmente. La línea de programa sólo debe contener una instrucción DO, detrás de la cual puede haber exactamente una instrucción FTL.

Tiempo

Velocidad de trayectoria

pos3

pos1

pos2

Ejecución de WaitOnMainRun antes

de alcanzar la posición pos2

Ejecución principal

Avance

8. Control de programa

60 Festo GDCP-CMXR-SW-ES es 1205c

Con la instrucción DO se pueden, por ejemplo, describir variables o establecer salidas en la ejecución principal del programa FTL. La instrucción DO se puede utilizar combinada con todas las instrucciones de movimiento, por ejemplo Ptp o Lin.

Ejemplo de establecimiento de una salida:

Al alcanzarse la pos2 se establece la salida del módulo “Vacuum” (vacío).

:

Lin(pos1)

Lin(pos2) DO Vacuum.Set()

Lin(pos3)

:

Ejemplo de descripción de variables en el PLC:

:

Lin(pos1)

SetVel(dynCart, 1000)) DO plc_Dint[3] := 5

Lin(pos2)

:

8. Control de programa

Festo GDCP-CMXR-SW-ES es 1205c 61

8.11 Insertar comentarios <//>

Un comentario se abre con la secuencia de caracteres “//”. Ésta puede colocarse sola a partir del comienzo de línea o después de una instrucción FTL y cerrar al final de línea.

Sintaxis

// <cualquier texto>

Una instrucción FTL puede comentarse con el carácter de comentario. Esta instrucción no afecta de ningún modo al proceso del programa.

En la figura siguiente se muestra la máscara del programa de la unidad de mando manual con un comentario y una instrucción del programa con aclaración:

8.12 Desactivar línea de programa <##>

Con la secuencia de caracteres “##” se desactivan las líneas de programa para el proceso del programa pero se conserva la verificación de la sintaxis.

Nota

## <instrucción de programa>

Ello implica:

Una instrucción FTL no se procesa en el programa, es decir, el contenido no afecta de ningún modo.

El contenido de la instrucción de programa se somete a la verificación de sintaxis del compilador. Si, p. ej., se borra una variable utilizada, se emite un error al arrancar el programa.

8. Control de programa

62 Festo GDCP-CMXR-SW-ES es 1205c

Nota

En el caso de las instrucciones de programa compuestas por varias líneas, como, p. ej., IF..THEN…ELSE, deben desactivarse todas las líneas de programa correspondientes.

En la figura siguiente se muestra la máscara del programa de la unidad de mando manual con instrucciones del programa desactivas entre las líneas 8 y 10:

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 63

9. Instrucciones de movimiento Los movimientos de una cinemática se activan con instrucciones de movimiento. Dichas instrucciones describen el movimiento desde la posición actual al punto de destino indicado. Para el movimiento se tienen en cuenta valores ajustados previamente como, p. ej., la velocidad, la aceleración o la orientación.

Existen diferentes tipos de movimientos, como los movimientos con interpolación de ejes (movimiento punto a punto) y los movimientos en un espacio cartesiano. Los movimientos cartesianos utilizan una transformación interna de la cinemática.

9.1 Descripción de la posición

Todas las posiciones se guardan en las denominadas variables de posición. Estas variables de posición son necesarias para indicar las posiciones a las instrucciones de movimiento. No es posible la indicación directa con constantes. Todas las variables de posición se guardan en el archivo de datos correspondiente (véase el capítulo 3.8 Archivo de datos FTL en la página 22).

Una posición puede introducirse en el sistema de coordenadas de ejes o en un sistema de coordenadas cartesianas. Dado que estas indicaciones de posición tienen orígenes diferentes, existen 2 tipos de datos:

1. AXISPOS para la indicación en el sistema de coordenadas de ejes.

2. CARTPOS para la indicación en el sistema de coordenadas cartesianas.

El número de ejes en CMXR está limitado a seis. Estos ejes pueden distribuirse en ejes

cinemáticos y auxiliares. Las posiciones de todos los ejes se guardan en variables de posición.

Así, el tipo de datos AXISPOS nueve contiene valores de coordenadas. Con un límite de seis grados de libertad de movimiento como máximo, el tipo de datos CARTPOS contiene asimismo nueve valores de coordenadas divididos en tres indicaciones de posición, tres indicaciones de orientación y tres ejes auxiliares.

El número de valores de coordenadas en el entorno de programación del plugin FCT está limitado al número de los ejes planificados, el resto está bloqueado.

Nota

Los dos tipos de datos, AXISPOS y CARTPOS, pueden utilizarse para instrucciones de movimiento. El control CMXR ejecuta conversiones automáticas si es necesario (transformaciones de coordenadas). Para más información consulte la descripción de instrucciones.

Los tipos de datos AXISPOS y CARTPOS son de tipo estructurado (véase el capítulo 5.5 Tipos de datos estructurados en la página 33).

9. Instrucciones de movimiento

64 Festo GDCP-CMXR-SW-ES es 1205c

9.1.1 Posición de eje Una posición de eje se describe con el tipo de datos estructurados AXISPOS (véase el capítulo 5.5 Tipos de datos estructurados de la página 33). Este tipo contiene nueve posiciones de nueve ejes distintos cuyo valor de posición se introduce con el tipo de datos REAL. En función del modelo cinemático seleccionado, los ejes seleccionados pueden ser lineales, rotativos o una combinación de los dos. La posición se indica en mm o en grados.

Estructura:

El número máximo de ejes de una cinemática es de nueve. Por tanto, el tipo de datos contiene nueve posiciones de ejes. Estos valores individuales de posición están guardados en nueve variables REAL.

Tipo de datos AXISPOS:

a1 : REAL Posición del eje cinemático 1

a2 : REAL Posición del eje cinemático 2

a3 : REAL Posición del eje cinemático 3

a4 : REAL Posición del eje cinemático 4

a5 : REAL Posición del eje cinemático 5

a6 : REAL Posición del eje cinemático 6

a7 : REAL Posición del eje auxiliar 1

a8 : REAL Posición del eje auxiliar 2

a9 : REAL Posición del eje auxiliar 3

El tipo de datos AXISPOS describe el alcance máximo posible de una posición de eje. Si no

hay ejes, la indicación de la posición de estos ejes es irrelevante. Por lo general, el valor de posición indicado para estos ejes es 0. En el editor FCT se bloquean los campos de estos ejes.

El nombre de cada posición permite acceder a cada uno de los valores de posición del tipo AXISPOS.

Ejemplo:

Variable:

startPos : AXISPOS := (100, 50, 30, 0, 0, 0, 0, 0, 0)

posA1 : REAL

posA2 : REAL

Programa:

:

Lin(startPos) // Avanzar a startPos

posA1 := startPos.a1 // Guardar en otra ubicación el valor

de eje 1

posA2 := startPos.a2 // Guardar en otra ubicación el valor

de eje 2

:

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 65

La asignación de ejes individuales a la estructura de datos de posición AXISPOS se efectúa

mediante una numeración. Esta numeración ya se ha realizado en la configuración de los ejes cinemáticos. De manera análoga a esta numeración se asignan las indicaciones de posición del tipo de datos AXISPOS a cada uno de los ejes.

Ejemplo:

Pórtico cartesiano con tres ejes lineales y un eje de rotación (giro de la pinza). En la configuración se realizaron los ajustes siguientes:

Eje 1 = Eje X

Eje 2 = Eje Y

Eje 3 = Eje Z

Eje 4 = Eje de rotación de la pinza

Los ejes 5 y 6 no existen, no hay ejes auxiliares.

La asignación en el tipo de datos AXISPOS se realiza de manera análoga a esta numera-ción:

a1 : REAL Posición eje 1 = Eje X

a2 : REAL Posición eje 2 = Eje Y

a3 : REAL Posición eje 3 = Eje Z

a4 : REAL Posición eje 4 = Eje de rotación de pinza

a5 : REAL Posición eje 5, no existe

a6 : REAL Posición eje 6, no existe

a7 : REAL Posición eje auxiliar 1, no existe

a8 : REAL Posición eje auxiliar 2, no existe

a9 : REAL Posición eje auxiliar 3, no existe

9. Instrucciones de movimiento

66 Festo GDCP-CMXR-SW-ES es 1205c

9.1.2 Posición cartesiana

A diferencia de la posición de eje del tipo de datos AXISPOS, el tipo de posición cartesiano CARTPOS describe una posición en un sistema de coordenadas cartesiano.

Un cuerpo posee un máximo de seis grados de libertad de movimiento. Con ayuda de estos valores puede definirse la posición y la orientación del cuerpo en el espacio. Estos seis grados de libertad de movimiento se describen con seis indicaciones en el tipo de datos CARTPOS. Además, se indica la posición de los tres ejes auxiliares, aunque dicha indicación es una posición de ejes, ya que con los ejes auxiliares no pueden realizarse desplazamientos cartesianos. Los ejes auxiliares se interpolan junto con los ejes cinemáticos en la posición de destino, pero los primeros ejecutan una interpolación punto a punto (Ptp).

Estructura:

Tipo de datos CARTPOS

x : REAL Desplazamiento a lo largo del eje X

y : REAL Desplazamiento a lo largo del eje Y

z : REAL Desplazamiento a lo largo del eje Z

a : REAL Indicación de orientación, rotación alrededor del eje Z

b : REAL Indicación de orientación, rotación alrededor del eje Y rotado

c : REAL Indicación de orientación, rotación alrededor del eje Z rotado

aux1 : REAL Posición del eje auxiliar 1

aux2 : REAL Posición del eje auxiliar 2

aux3 : REAL Posición del eje auxiliar 3

No es posible realizar algunas indicaciones en una posición cartesiana debido a la cinemática seleccionada o a su grado de libertad de movimiento. Las indicaciones de posición individuales en el tipo de datos CARTPOS no están unidas a los ejes físicos de la cinemática, sino a su grado de libertad de movimiento.

La posición cartesiana contiene las indicaciones para un máximo de seis grados de libertad de movimiento. X, Y, Z son las posiciones de traslación, A, B y C describen la orientación de la posición. La orientación se indica, como en todo el sistema, conforme al método de Euler ZYZ.

Un tipo de datos CARTPOS está estructurado como el tipo de datos AXISPOS (véase el

capítulo 5.5 Tipos de datos estructurados de la página 33). El nombre de cada uno de los valores del tipo de datos permite acceder a los valores de posición individuales.

Ejemplo:

Variable:

startPos : CARTPOS := (1050, 130, 30, 0, 0, 0, 0, 0, 0)

newPos : CARTPOS := (0, 0, 0, 0, 0, 0, 0, 0, 0)

posX : REAL

posY : REAL

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 67

Programa:

:

Lin(startPos) // Avanzar a StartPos

newPos := startPos // Copiar StartPos

newPos.x := newPos.x + 10 // Calcular X

newPos.x := newPos.x + 35.7 // Calcular Y

Lin(newPos) // Avanzar a posición calculada

:

El efecto de las indicaciones de posición y orientación cartesianas depende de los grados

de libertad de movimiento de la cinemática.

Ejemplo:

Tenemos un manipulador de cinemática paralela (trípode) con tres ejes principales, sin ejes manuales. Con los tres ejes principales se cubren los tres grados de libertad de

movimiento de traslación X, Y y Z. Como no hay ejes manuales, no es posible orientar la herramienta. La programación de las variables a, b, c, aux1, aux2 o aux3 en la indicación de posición del tipo de datos CARTPOS no tiene efecto alguno.

9. Instrucciones de movimiento

68 Festo GDCP-CMXR-SW-ES es 1205c

9.1.3 Programación tipo teach-in de variable de posición

Las diferentes variables de posición del tipo AXISPOS y CARTPOS se pueden programar por teach-in con la ayuda de la unidad de mando manual o del software de emulación en el monitor de variables.

Para programar por teach-in una variable de posición es necesario que el control multieje CMXR esté situado en el modo de funcionamiento MANUAL y que la variable a programar por teach-in esté marcada.

Pulsando la tecla de pantalla se guarda la posición actual en la variable indicada. En

el caso de una variable del tipo CARTPOS, se guarda el valor cartesiano, mientras que en una variable del tipo AXISPOS se guarda la posición del eje. La programación tipo teach-in se realiza siempre en una variable de posición.

Nota

En la programación tipo teach-in de una posición cartesiana del tipo CARTPOS, el valor siempre se programa por teach-in en el sistema de referencia actualmente seleccionado. Éste se muestra en el cuadro de selección en la página de posición. En la programación tipo teach-in de una posición de eje del tipo AXISPOS, el sistema de referencia seleccionado carece de importancia.

9.2 Movimiento punto a punto <Ptp>

El movimiento punto a punto (PTP) es la opción más rápida para desplazar el extremo de

herramienta (TCP) a la posición deseada. El movimiento PTP es una instrucción de desplazamiento síncrono punto a punto con posición de destino. Con esta instrucción se arrancan simultáneamente todos los ejes y llegan a la posición de destino programada al mismo tiempo. Para el movimiento se utilizan los valores dinámicos activos en ese momento, p. ej., la velocidad y la aceleración. La dinámica efectiva se obtiene de la combinación de las dinámicas de todos los ejes participantes. El eje más lento determina la dinámica. El movimiento del TCP se obtiene en este caso de la combinación del movimiento de ejes individuales. El movimiento en el TCP no está definido.

1. Hacer clic en la variable

y se mostrará de color azul

2. Se activa la tecla de pantalla de programación

tipo teach-in

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 69

Atención

Como el movimiento PTP no está restringido a una trayectoria, sino que los ejes sólo se interpolan al destino, pueden pro-ducirse aceleraciones o velocidades inesperadas en la herra-mienta (TCP). Por tanto, los movimientos deben comprobarse por si se producen pérdidas o daños en las piezas y/o en la herramienta.

Debido a la interpolación axial, durante un movimiento PTP no puede tenerse en cuenta ningún dato de herramienta. Por ello es importante prestar siempre atención a las herramientas para protegerlas contra daños.

Para minimizar el peligro de colisión, todos los movimientos PTP deberían probarse con una velocidad reducida. Para ello se puede utilizar p. ej. el override.

Sintaxis

Ptp ( <Pos> : AXISPOS o CARTPOS)

Parámetro Significado Unidad

Pos Posición de destino AXISPOS o CARTPOS

Tabla 9.1 Parámetro de la instrucción PTP

La indicación de posición puede ser cartesiana o en el sistema de coordenadas de ejes (en relación con cada eje). El control multieje CMXR transforma las posiciones como corresponde.

Ejemplo:

Debe posicionarse un pórtico cartesiano con tres ejes X, Y, Z y un eje de rotación con pinza.

1 Eje Y

2 Eje Z

3 Eje de rotación

con pinza

4 Eje X

2

1

4

3

9. Instrucciones de movimiento

70 Festo GDCP-CMXR-SW-ES es 1205c

Variable:

pos1 : CARTPOS := (100, 50, 100, 0, 0, 0, 0, 0, 0)

pos2 : CARTPOS := (600, 550, 100, 180, 0, 0, 0, 0, 0)

Programa:

:

Ptp(pos1)

Ptp(pos2)

:

En el ejemplo se muestra la trayectoria del eje Z y del extremo de herramienta (TCP). Debido a la colocación vertical de la cinemática cartesiana, la trayectoria en el eje Z es una recta. Como la herramienta posee una asimetría con el eje Z, esta trayectoria se comporta de un modo inesperado ya que, con la interpolación síncrona, todos los ejes se desplazan juntos a su punto de destino sin tener en cuenta la trayectoria descrita.

X

Y

Eje de rotación

0 grados

Eje de rotación 90 grados

Trayectoria aproximada en el TCP

Trayectoria en el eje Z

Eje de rotación 180 grados

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 71

9.2.1 Programación tipo teach-in del movimiento Ptp

La instrucción FTL Ptp posee la posición de destino como parámetro, que se puede programar por teach-in con la ayuda de la unidad de mando manual o del software de emulación.

En el modo de funcionamiento MANUAL, se abre la máscara de parámetros de la instrucción al crear la instrucción o mediante la tecla de pantalla Modificar. Al marcar la línea Posición, se activa la tecla de pantalla y se puede utilizar.

Pulsando la tecla de pantalla se guarda la posición actual en la variable indicada. La programación tipo teach-in se realiza siempre en una variable de posición.

Nota

En la programación tipo teach-in de una posición cartesiana del tipo CARTPOS, el valor siempre se programa por teach-in en el sistema de referencia actualmente seleccionado. Éste se muestra en el cuadro de selección en la página de posición. En la programación tipo teach-in de una posición de eje del tipo AXISPOS, el sistema de referencia seleccionado carece de importancia.

9.3 Movimiento punto a punto relativo <PtpRel>

La instrucción PTP funciona de manera análoga a la instrucción PTP relativa, con la diferencia de que la posición indicada es relativa a la posición inicial. La indicación de posición se suma a la posición inicial.

Una aplicación posible es, p. ej., el posicionamiento relativo dentro de una retícula, como con una paleta.

Sintaxis

PtpRel ( <Dist> : AXISDIST o CARTDIST)

Parámetro Significado Unidad

Dist Distancia relativa que debe recorrerse AXISDIST o CARTDIST

Tabla 9.2 Parámetro de la instrucción PtpRel

1. Hacer clic en el campo de

parámetros y se mostrará

de color azul

2. Se activa la tecla de pantalla de

programación tipo teach-in

9. Instrucciones de movimiento

72 Festo GDCP-CMXR-SW-ES es 1205c

La indicación de distancia puede ser cartesiana o relativa a cada eje. El control multieje

CMXR transforma las posiciones como corresponde.

Ejemplo:

En una aplicación de manipulación, la pieza se desplaza a cuatro posiciones, cada una a una unidad de medición.

Variable:

:

pos1 : CARTPOS := (100, 0, 300, 0, 0, 0, 0, 0, 0)

pos2 : CARTPOS := (207, 0, 225, 0, 0, 0, 0, 0, 0)

pos3 : CARTPOS := (850, 0, 300, 0, 0, 0, 0, 0, 0)

distX : CARTDIST := (110, 0, 0, 0, 0, 0, 0, 0, 0)

distZpos : CARTDIST := (0, 0, 150, 0, 0, 0, 0, 0, 0)

distZneg : CARTDIST := (0, 0, -150, 0, 0, 0, 0, 0, 0)

:

Programa:

:

Ptp(pos1)

Ptp(pos2)

LOOP 3 DO

PtpRel(distZneg)

CALL Check() // Llamada de ciclo de comprobación

pos2

Eje X

Eje Z

300

850

207

100

pos3

pos1

150

110

225

1

2

3

4

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 73

PtpRel(distZpos)

PtpRel(distX)

END_LOOP

PtpRel(distZneg)

CALL Check() // Llamada de ciclo de comprobación

PtpRel(distZpos)

PtpRel(distX)

Ptp(pos3)

:

El ciclo de medición de la pieza, así como su evaluación, se procesan en el subprograma “verificar”. El contenido del subprograma no se representa para una mayor simplificación.

Atención

¡Riesgo de colisión!

Si durante el movimiento relativo se detiene e inicia de nuevo el movimiento, se recorre en su totalidad la distancia de movimiento programada.

9.4 Movimiento de un eje, <MoveAxisPtp>, <MoveAxisCart>

Con las instrucciones MoveAxisPtp y MoveAxisCart se posiciona un eje de la cinemática

con un movimiento PTP o un movimiento cartesiano. Se indica la posición de destino absoluta del eje.

Sintaxis

MoveAxisPtp ( <Axis> : AXIS, <Pos> : REAL)

MoveAxisCart ( <CartComp> : CARTCOMP, <Pos> : REAL)

Parámetros Significado Unidad

Axis Eje físico seleccionado que

debe desplazarse

Enumeración con los valores A1

a A9 para los ejes 1 a 9

Pos Posición de destino absoluta Unidad de los ejes definidos

Tabla 9.3 Parámetros de la instrucción MoveAxisPtp

9. Instrucciones de movimiento

74 Festo GDCP-CMXR-SW-ES es 1205c

Parámetros Significado Unidad

CartComp Eje cartesiano seleccionado que

debe desplazarse

Enumeración con los

valores X Y Z ; A B C

Pos Posición de destino cartesiana

absoluta

Unidad de los ejes definidos

Tabla 9.4 Parámetros de la instrucción MoveAxisCart

Como aquí se trata de un eje individual, el movimiento se efectúa teniendo en cuenta posibles limitaciones, p. ej., override, con dinámica máxima de ejes.

Ejemplo:

Una cinemática cartesiana se compone de cuatro ejes:

Eje 1 = Eje X. Eje 2 = Eje Y. Eje 3 = Eje Z. Eje 4 = Eje de rotación de la herramienta.

En el ejemplo debe recogerse una pieza en una posición y posarse en otra. Para ello, el eje de rotación debe estar posicionado como corresponde.

Variable:

:

pos1 : CARTPOS := (300, 0, 250, 0, 0, 0, 0, 0, 0)

takeAbove : CARTPOS := (350, 0, 145, 0, 0, 0, 0, 0, 0)

pos2 : CARTPOS := (575, 0, 250, 0, 0, 0, 0, 0, 0)

takePos : REAL := 96.5

:

pos2

Eje X

Eje Z

50

575

450

145

pos1

Recogida arriba

Recogida abajo

Posado arriba

Posado abajo

250

350

300

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 75

Programa con movimientos PTP:

:

Ptp(pos1) // Arrancar

Ptp(takeAbove) // Recogida arriba

MoveAxisPtp(A4, takePos) // Girar pinza

MoveAxisPtp(A3, 50) // Hacia abajo

Gripper.Set() // Cerrar pinza

MoveAxisPtp(A3, 145) // Hacia arriba

MoveAxisPtp(A1, 450) // Posado arriba

MoveAxisPtp(A4, 180) // Girar sobre bandeja

MoveAxisPtp(A3, 50) // Posado abajo

Gripper.Reset() // Abrir pinza

MoveAxisPtp(A3, 145) // Posado arriba

Ptp(pos2) // Arrancar

:

9.4.1 Programación tipo teach-in de la posición con MoveAxisPtp y MoveAxisCart

La posición de la instrucción MoveAxisPtp y MoveAxisCart se puede programar por teach-in con la ayuda de la unidad de mando manual o del software de emulación.

En el modo de funcionamiento MANUAL, se abre la máscara de parámetros de la instrucción al crear la instrucción o mediante la tecla de pantalla Modificar. Al marcar la línea Posición, se activa la tecla de pantalla y se puede utilizar.

Antes de cada programación tipo teach-in, se debe seleccionar el eje deseado del parámetro CartComp (instrucción MoveAxisCart) o el eje (instrucción MoveAxisPtp). En base a esta selección se determina la posición mediante la programación tipo teach-in y se escribe en el parámetro Pos. Si se ha asignado una variable REAL al parámetro Pos, se escribe el valor en esta variable.

1. Hacer clic en el campo

de parámetros y se

mostrará de color azul

2. Se activa la tecla de

pantalla de programación

tipo teach-in

9. Instrucciones de movimiento

76 Festo GDCP-CMXR-SW-ES es 1205c

Nota

En la programación tipo teach-in de la posición cartesiana de la instrucción MoveAxisCart, el valor siempre se programa por teach-in en el sistema de referencia actualmente seleccionado. Éste se muestra en el cuadro de selección en la página de posición. En la programación por teach-in de la posición de eje de la instrucción MoveAxisPtp, el sistema de referencia seleccionado carece de importancia.

Cuadro de selección de los diferentes ejes con

la macro MoveAxisPtp. Sólo se muestran

aquellos ejes que están disponibles

en la configuración

Cuadro de selección de los ejes cartesianos

con la macro MoveAxisCart

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 77

9.5 Movimiento lineal <Lin>

Con un movimiento lineal, el control multieje CMXR calcula una recta que lleva de la posición actual (posición inicial) a la posición programada (posición de destino). Este movimiento se calcula y ejecuta teniendo en cuenta los valores de trayectoria ajustados, como, p. ej., la aceleración y la velocidad de trayectoria, la orientación y los datos de herramienta. Si en la indicación de posición de destino se indica una modificación de la orientación, el desplazamiento por esta trayectoria es continuo desde la orientación del punto inicial hasta la orientación final.

El movimiento lineal es un movimiento cartesiano, es decir, éste se calcula con ayuda de la función interna de transformación de coordenadas para la cinemática existente. La posición se programa siempre en el extremo de la herramienta (TCP). Del mismo modo, todos los valores dinámicos, como la aceleración y la velocidad de trayectoria, se alcanzan

directamente en el TCP. La ventaja radica en que los valores dinámicos en la herramienta son limitados y conocidos. Por tanto, en la pinza actúan fuerzas repetibles.

Sintaxis

Lin ( <Pos> : AXISPOS o CARTPOS)

Parámetro Significado Unidad

Pos Posición de destino

absoluta

AXISPOS o CARTPOS

Tabla 9.5 Parámetro de la instrucción Lin

La indicación de posición puede ser cartesiana o relativa a cada eje. El control multieje CMXR transforma las posiciones como corresponde.

Ejemplo:

Debe posicionarse un pórtico cartesiano con tres ejes X, Y, Z y un eje de rotación en la pinza. El extremo de herramienta (TCP) está definido con un vector en el punto central de la pinza (véase el capítulo 14 Herramientas en la página 128).

Eje X

Eje Y

Eje Z

Eje de rotación con pinza

Vector en el TCP

9. Instrucciones de movimiento

78 Festo GDCP-CMXR-SW-ES es 1205c

Variable:

:

pos1 : CARTPOS := (100, 50, 100, 0, 0, 0, 0, 0, 0)

pos2 : CARTPOS := (600, 550, 100, 180, 0, 0, 0, 0, 0)

gripper : TCPTOOL := (-100, 0, 97, 0, 0, 0,)

:

Programa:

:

Tool(gripper)

Lin(pos1)

Lin(pos2)

:

Como se muestra en la figura, el TCP (extremo de herramienta) describe la trayectoria con un movimiento lineal. Todas las indicaciones de velocidad se refieren siempre al TCP, definiéndose así la trayectoria. Sin embargo, no está previsto que la brida de herramienta discurra por la trayectoria en el plano X-Y. Esta trayectoria se obtiene de la combinación de la cinemática y del vector del TCP, y se calcula mediante la transformación interna de coordenadas.

X

Y

Eje de

rotación 0 grados

Eje de rotación 90 grados

Eje de rotación 180 grados

Trayectoria en el TCP

Trayectoria aproximada en el eje Z

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 79

9.5.1 Programación tipo teach-in del movimiento Lin

La instrucción Lin posee la posición de destino como parámetro, que se puede programar por teach-in con la ayuda de la unidad de mando manual o del software de emulación.

En el modo de funcionamiento MANUAL, se abre la máscara de parámetros de la instrucción al crear la instrucción o mediante la tecla de pantalla Modificar. Al marcar la línea Posición, se activa la tecla de pantalla y se puede utilizar.

Pulsando la tecla de pantalla se guarda la posición actual en la variable indicada. La programación tipo teach-in se realiza siempre en una variable de posición.

Nota

En la programación tipo teach-in de una posición cartesiana del tipo CARTPOS, el valor siempre se programa por teach-in en el sistema de referencia actualmente seleccionado. Éste se muestra en el cuadro de selección en la página de posición. En la programación tipo teach-in de una posición de eje del tipo AXISPOS, el sistema de referencia seleccionado carece de importancia.

9.6 Movimiento lineal relativo <LinRel>

La instrucción Lin relativa funciona de manera análoga a la instrucción Lin. La indicación de posición se suma a la posición inicial.

Una aplicación posible es, p. ej., el posicionamiento relativo dentro de una retícula, como con una paleta.

Sintaxis

LinRel (<Dist> : AXISDIST o CARTDIST)

Parámetro Significado Unidad

Dist Posición de destino relativa AXISDIST o CARTDIST

Tabla 9.6 Parámetro de la instrucción LinRel

1. Hacer clic en el campo de

parámetros y se mostrará

de color azul

2. Se activa la tecla de pantalla

de programación tipo teach-in

9. Instrucciones de movimiento

80 Festo GDCP-CMXR-SW-ES es 1205c

La indicación de distancia puede ser cartesiana o relativa a cada eje. El control multieje

CMXR transforma las posiciones como corresponde.

Ejemplo:

Un contorno contiene tramos repetibles. Estos tramos pueden describirse de manera relativa. Este tipo de aplicación se resuelve con comodidad utilizando una programación de bucles.

Variable:

:

pos1 : CARTPOS := (98,5, 100, 0, 0, 0, 0, 0, 0, 0)

pos2 : CARTPOS := (387, 100, 0, 0, 0, 0, 0, 0, 0)

distX : CARTDIST := (57, 0, 0, 0, 0, 0, 0, 0, 0)

distYpos : CARTDIST := (0, 112, 0, 0, 0, 0, 0, 0, 0)

distYneg : CARTDIST := (0, -112, 0, 0, 0, 0, 0, 0, 0)

pos3 : CARTPOS := (1050, 45, 0, 0, 0, 0, 0, 0, 0)

direction : BOOL

:

Programa:

:

Lin(pos1)

Lin(pos2)

direction := TRUE

LOOP 5 DO

IF direction = TRUE THEN

LinRel(distYpos)

pos2

Eje X

Eje Y

100

1050

387

98.5

45

pos3

pos1

57

112

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 81

ELSE

LinRel(distYneg)

END_IF

LinRel(distX)

direction := NOT direction

END_LOOP

LinRel(distYneg)

Lin(pos3)

:

Con la variable “direction” se define el sentido del movimiento relativo del eje Y. De este modo puede programarse el movimiento con un bucle.

Atención

¡Riesgo de colisión!

Si durante el movimiento relativo se detiene e inicia de nuevo el movimiento, se recorre en su totalidad la distancia de movimiento programada.

9.7 Movimiento circular con punto de apoyo

La interpolación circular se diferencia de la interpolación lineal no sólo por la forma geométrica, sino también porque, además de los puntos inicial y final, debe indicarse un punto de apoyo para definir el círculo de manera inequívoca.

9.7.1 Funcionamiento

El círculo se define a partir de un punto de apoyo, que debe encontrarse dentro de la trayectoria circular, y del punto final de la trayectoria circular. En la trayectoria circular se avanza primero hasta el punto de apoyo y después al punto final. El radio de la trayectoria circular se obtiene a partir de un cálculo interno con punto inicial, punto de apoyo y punto final de la trayectoria circular.

9. Instrucciones de movimiento

82 Festo GDCP-CMXR-SW-ES es 1205c

En la figura siguiente se muestra un movimiento circular utilizando un punto de apoyo:

El círculo se mueve de manera que el TCP se desplaza desde el punto inicial pasando por el punto de apoyo hasta el punto final. El punto de apoyo se encuentra siempre, por definición, entre los puntos inicial y final.

Limitaciones:

Se recibe un mensaje de error si por lo menos dos posiciones que definen el círculo tienen la misma posición, o si todos los puntos se encuentran sobre una recta. En estos casos no es posible calcular la trayectoria circular matemáticamente.

Con este método no se puede describir un círculo completo (360°). Para describir un círculo completo deben unirse dos semicírculos.

La orientación del punto de apoyo no se tiene en cuenta para interpolar el arco. La

interpolación se efectúa exclusivamente entre los puntos inicial y final. Si es necesario cambiar orientaciones dentro de un arco, es posible segmentar el arco en varias partes para ajustar las orientaciones en los puntos inicial y final.

9.7.2 Definición de planos

La trayectoria circular se efectúa en un plano definido a partir de los tres puntos: punto inicial, punto de apoyo y punto final. Con esta definición se extiende el plano en el espacio

donde se va a describir la trayectoria circular.

Punto de apoyo

Punto de apoyo

Punto inicial

Punto inicial

Punto final

Punto final

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 83

En la figura se muestra una trayectoria circular con sus tres puntos de apoyo, que definen un plano en el espacio donde se encuentra la trayectoria circular.

Nota

La trayectoria circular siempre está en un plano. No es posible realizar una interpolación helicoidal con una interpolación adicional perpendicular al plano.

Punto inicial

Punto de apoyo

Punto final

Plano formado por tres puntos

9. Instrucciones de movimiento

84 Festo GDCP-CMXR-SW-ES es 1205c

9.7.3 Instrucción circular con punto de apoyo <CircIp>

La instrucción circular con punto de apoyo tiene la sintaxis de programa siguiente:

Sintaxis

CircIp ( <IpPos> : AXISPOS o CARTPOS,

<Pos> : AXISPOS o CARTPOS)

Parámetros Significado Unidad

IpPos Punto de apoyo en el círculo AXISPOS o CARTPOS

Pos Posición final del arco AXISPOS o CARTPOS

Tabla 9.7 Parámetros de la instrucción CircIp

La indicación de posiciones puede ser cartesiana o relativa a cada eje. El control multieje CMXR transforma las posiciones como corresponde.

Advertencia

La instrucción círculo requiere la indicación del punto de apoyo y el final. El punto inicial se corresponde con el punto final del movimiento anterior. Si este punto se desplaza, la trayectoria circular sufre una modificación. Ésta puede ser incontrolada y provocar una colisión. La modificación del punto inicial no genera necesariamente un mensaje de error, ya que el resultado del cálculo es correcto.

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 85

Ejemplo:

Se debe recorrer el contorno siguiente con una cinemática:

El eje Z permanece en la coordenada 0. La aproximación al punto inicial del arco se efectúa mediante una instrucción de desplazamiento aparte, p. ej. Ptp o Lin.

Variables:

:

pos1 : CARTPOS := (950, 500, 0, 0, 0, 0, 0, 0, 0)

pos2 : CARTPOS := (455, 300, 0, 0, 0, 0, 0, 0, 0)

IpPos : CARTPOS := (1050, 400, 0, 0, 0, 0, 0, 0, 0)

EndPos : CARTPOS := (950, 300, 0, 0, 0, 0, 0, 0, 0)

:

Programa:

:

Lin(pos1) // Aproximar a punto inicial

CircIp(IpPos, EndPos) // Movimiento circular en punto

final

Lin(pos2) // Retirada

:

Posición pos1

Punto de apoyo IpPos

Punto final EndPos

Posición pos2

Eje X

Eje Y

300

400

500

1050

950

455

9. Instrucciones de movimiento

86 Festo GDCP-CMXR-SW-ES es 1205c

9.7.4 Instrucción circular con punto de apoyo, aproximación PTP <PtpToCircIp>

A diferencia de la instrucción circular CircIp, esta instrucción tiene el punto inicial del arco

en la lista de parámetros. Ello tiene la ventaja de que el arco se describe de manera coherente. La aproximación al punto inicial del arco se efectúa con una instrucción PTP. Por lo demás, el comportamiento es igual que el de la instrucción CircIp.

Como la aproximación al punto inicial es un movimiento PTP y la interpolación circular es un movimiento cartesiano, no es posible ni un avance aproximado geométrico ni una velocidad de trayectoria constante. El avance aproximado se efectúa en función de las posibilidades que ofrece un movimiento PTP.

Sintaxis

PtpToCircIp ( <StartPos> : AXISPOS o CARTPOS,

<IpPos> : AXISPOS o CARTPOS,

<Pos> : AXISPOS o CARTPOS)

Parámetros Significado Unidad

StartPos Punto inicial del arco AXISPOS o CARTPOS

IpPos Punto de apoyo del arco AXISPOS o CARTPOS

Pos Punto final del arco AXISPOS o CARTPOS

Tabla 9.8 Parámetros de la instrucción PtpToCircIp

La indicación de posiciones puede ser cartesiana o relativa a cada eje. El control multieje CMXR transforma las posiciones como corresponde.

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 87

Ejemplo:

Se debe recorrer el contorno siguiente con una cinemática:

El movimiento tiene lugar en el plano XY, el valor del eje Z es 0. La aproximación al punto inicial del arco se realiza con un movimiento PTP (punto a punto). El punto inicial se transmite con la instrucción PtpToCircIp.

Variables:

:

StartPos : CARTPOS := (950, 500, 0, 0, 0, 0, 0, 0, 0)

IpPos : CARTPOS := (1050, 400, 0, 0, 0, 0, 0, 0, 0)

EndPos : CARTPOS := (950, 300, 0, 0, 0, 0, 0, 0, 0)

Pos1 : CARTPOS := (455, 300, 0, 0, 0, 0, 0, 0, 0)

:

Programa:

:

// Aproximación PTP, movimiento circular cartesiano

PtpToCircIp(StartPos, IpPos, EndPos)

Lin(Pos1) // Retirada

:

Startposition StartPos

Punto de apoyo IpPos

Punto final EndPos

Posición pos1

Eje X

Eje Y

300

400

500

1050

950

455

9. Instrucciones de movimiento

88 Festo GDCP-CMXR-SW-ES es 1205c

9.7.5 Instrucción circular con punto de apoyo, avance lineal <LinToCircIp>

Como la instrucción PtpToCircIp, la instrucción LinToCircIp contiene el punto inicial de la

trayectoria circular. El recorrido de la trayectoria circular sólo puede ser cartesiano. Ello significa que el movimiento en el punto inicial y la trayectoria circular en caso de avance aproximado puede ser geométrico. También es posible una velocidad de trayectoria constante.

Sintaxis

LinToCircIp (<StartPos> : AXISPOS o CARTPOS,

<IpPos> : AXISPOS o CARTPOS,

<Pos> : AXISPOS o CARTPOS)

Parámetros Significado Unidad

StartPos Punto inicial del arco AXISPOS o CARTPOS

IpPos Punto de apoyo del arco AXISPOS o CARTPOS

Pos Punto final del arco AXISPOS o CARTPOS

Tabla 9.9 Parámetros de la instrucción LinToCircIP

La indicación de posiciones puede ser cartesiana o relativa a cada eje. El control multieje CMXR transforma las posiciones como corresponde.

Ejemplo:

Se debe recorrer el contorno siguiente con una cinemática:

El movimiento tiene lugar en el plano XY, el valor del eje Z es 0. La aproximación al punto inicial del arco se realiza con un movimiento lineal. El punto inicial se transmite con la instrucción LinToCirc.

Posición inicial StartPos

Punto final EndPos

Posición Pos1

Eje X

Eje Y

300

400

500

1050

950

455

Punto de apoyo IpPos

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 89

Variables:

:

StartPos : CARTPOS := (950, 500, 0, 0, 0, 0, 0, 0, 0)

IpPos : CARTPOS := (1050, 400, 0, 0, 0, 0, 0, 0, 0)

EndPos : CARTPOS := (950, 300, 0, 0, 0, 0, 0, 0, 0)

Pos1 : CARTPOS := (455, 300, 0, 0, 0, 0, 0, 0, 0)

:

Programa:

:

// Aproximación lineal, movimiento circular cartesiano

LinToCircIp(StartPos, IpPos, EndPos)

Lin(Pos1) // Retirada

:

9.7.6 Programación tipo teach-in de las instrucciones circulares

Las instrucciones circulares incluyen según el tipo 2 o bien 3 parámetros. Dichos pará-metros se pueden programar por teach-in con la ayuda de la unidad de mando manual o del software de emulación.

En el modo de funcionamiento MANUAL, se abre la máscara de parámetros de la instrucción al crear la instrucción o mediante la tecla de pantalla Modificar. Al marcar la línea Posición, se activa la tecla de pantalla y se puede utilizar.

Pulsando la tecla de pantalla se guarda la posición actual en la variable indicada. La

programación tipo teach-in se realiza siempre en una variable de posición. Para la programación tipo teach-in de otras posiciones, debe hacerse clic en la posición correspondiente para marcarla.

1. Hacer clic en el campo de

parámetros y se mostrará

de color azul

2. Se activa la tecla de pantalla

de programación tipo teach-in

9. Instrucciones de movimiento

90 Festo GDCP-CMXR-SW-ES es 1205c

Nota

En la programación tipo teach-in de una posición cartesiana del tipo CARTPOS, el valor siempre se programa por teach-in en el sistema de referencia actualmente seleccionado. Éste se muestra en el cuadro de selección en la página de posición. En la programación tipo teach-in de una posición de eje del tipo AXISPOS, el sistema de referencia seleccionado carece de importancia.

9.8 Detención del movimiento <StopMove>

Con la instrucción StopMove se detiene la cinemática y se descartan todos los datos de

trayectoria ya calculados. La instrucción influye en el avance de proceso.

La cinemática se detiene con la máxima rampa de frenado definida para detener la cinemática. La reducción de la dinámica por un override no afecta a la detención.

Sintaxis

StopMove()

Una aplicación de esta parada es, p. ej., el desplazamiento hasta un obstáculo detectado por un sensor. Una vez detectado el estado, la instrucción StopMove detiene el

movimiento. En el capítulo 25.1 Detención de movimientos de la página 244 se da un ejemplo de utilización de la instrucción StopMove.

9. Instrucciones de movimiento

Festo GDCP-CMXR-SW-ES es 1205c 91

9.9 Detención del programa <StopProgram>

La instrucción StopProgram detiene el programa, que a su vez pasa al estado de parada. Esta instrucción corresponde a la tecla de parada de la unidad de mando manual. Para continuar es necesario un nuevo inicio, p. ej., a través de la unidad de mando manual o externamente a través de un control PLC.

La instrucción está activa en la ejecución principal, lo que significa que no se ejecuta a través del avance de proceso. La ejecución de las instrucciones anteriores, calculadas a través del avance de proceso, está garantizada.

La cinemática se detiene con la máxima rampa de frenado definida para detener la cinemática. La reducción de la dinámica por un override no afecta a la detención.

Sintaxis

StopProgram()

Ejemplo:

:

Vel(dynCart, 1000)

Lin(pos1)

Lin(pos2)

SetInfo(“insert workpiece and press start”)

StopProgram()

Lin(pos3)

CALL Conture1

:

10. Instrucciones de dinámica

92 Festo GDCP-CMXR-SW-ES es 1205c

10. Instrucciones de dinámica Con las instrucciones de dinámica es posible programar la velocidad, la aceleración y la sacudida para los movimientos de la cinemática. La dinámica de los movimientos punto a punto (PTP) y los movimientos cartesianos puede ajustarse por separado.

Los valores dinámicos pueden modificarse en cualquiera de las líneas de programa.

Nota

En la configuración (Festo Configuration Tool) se indican los valores iniciales de la dinámica. Estos valores se activan como valores iniciales cuando se inicia un programa. Si en el programa no se programa ninguna dinámica, se utilizan estos valores iniciales. Dentro del programa, los valores pueden ser sustituidos en cualquier momento por las siguientes instrucciones de dinámica.

Gráfica de ajustes previos de los valores dinámicos en Festo Configuration Tool:

Cartesiano:

Sacudida

Sacudida

Aceleración

Aceleración

Velocidad

Velocidad

Unidad Pulsación: Reposicionamiento:

Punto a punto:

Valores estándares

Estándar

10. Instrucciones de dinámica

Festo GDCP-CMXR-SW-ES es 1205c 93

10.1 Limitación automática de la dinámica, limitador de la dinámica

Para mantenerse fiel a la trayectoria, es necesario comparar los valores dinámicos nominales con los valores dinámicos físicos posibles. Eso evitará que se rebasen los valores máximos posibles de cada uno de los ejes. Estos valores son: velocidad, aceleración y sacudida. Estos valores máximos están guardados en la configuración de los diferentes ejes.

El control CMXR cuenta con un limitador de los valores dinámicos que recibe el nombre de “limitador de la dinámica”. Este limitador opera en el cálculo por adelantado del programa FTL y compara constantemente los valores dinámicos que se deben recorrer con la máxima dinámica posible de cada eje.

Nota

El limitador de dinámica está continuamente activado. No es necesario activarlo.

El que el limitador de dinámica intervenga depende de los siguientes factores:

- Tamaño de la dinámica programada

- Configuración de la trayectoria de movimiento de la cual se derivan los valores dinámicos de los diferentes ejes.

Si se sobrepasa el máximo de por lo menos un eje debido a la dinámica programada o a la modificación de la trayectoria de movimiento, la dinámica de dicha trayectoria se reducirá de manera que el eje afectado se desplace hasta sus límites. La trayectoria no se

abandona. Una vez que la cinemática abandone las trayectorias de movimiento críticas y sea posible una dinámica más alta, el sistema lo detectará y acelerará hasta el valor programado.

En el siguiente ejemplo se alcanza el límite de un eje y eso hace que se reduzca automáticamente la velocidad de la trayectoria para garantizar la fidelidad a dicha trayectoria. Una vez que el eje ha abandonado el rango crítico, se produce una aceleración hasta alcanzar el valor programado.

Velocidad de trayectoria

Límite del eje

Reducción de la velocidad de la trayectoria

Límite del eje individual alcanzado

10. Instrucciones de dinámica

94 Festo GDCP-CMXR-SW-ES es 1205c

10.2 Velocidades <Vel>

Con la instrucción Vel puede indicarse la velocidad para un movimiento cartesiano o PTP.

El control reduce los valores indicados a las velocidades máximas permitidas de cada uno de los ejes participantes. Si la velocidad máxima permitida da lugar a alguna limitación, se emite un mensaje.

Sintaxis

Vel ( <Mode> : DYNAMICTYPE, <Value> : REAL)

Parámetros Significado Unidad

Mode Tipo de velocidad Enumeración: dynPtp, dynCart

Value Valor de velocidad En función del modo elegido

Tabla 10.1 Parámetros de la instrucción Vel

Parámetros de enumeración Mode

Tipo de movimiento Unidad

dynPtp Punto a punto %

dynCart Cartesiano mm/s

Tabla 10.2 Unidades del parámetro Value

Ejemplo:

Variable:

:

axis0 : AXISPOS := (-60, -60, 0, 0, 0, 0, 0, 0, 0)

axis1 : AXISPOS := (60, 60, 0, 0, 0, 0, 0, 0, 0)

axis2 : AXISPOS := (100, 60, 0, 0, 0, 0, 0, 0, 0)

:

Programa:

:

Vel(dynPtp, 30) // Velocidad para PTP al 30 %

Ptp(axis0)

Vel(dynCart, 500) // Velocidad de trayectoria a 500 mm/s

Lin(axis1)

speed := 85

Vel(dynPtp, speed) // Velocidad para PTP al 85%

Ptp(axis3)

:

10. Instrucciones de dinámica

Festo GDCP-CMXR-SW-ES es 1205c 95

10.3 Aceleración <Acc>

Ajuste de la aceleración y la deceleración para movimientos PTP y cartesianos de los ejes manuales. Las instrucciones siguientes se reducen al valor indicado. El control reduce automáticamente la aceleración o la deceleración al sobrepasar el valor límite de eje.

Sintaxis

Acc ( <Mode> : DYNAMICTYPE, <Acc> : REAL, OPT <Dec> : REAL)

Parámetros Significado Unidad

Mode Tipo de aceleración Enumeración: dynPtp, dynCart

Acc Valor de aceleración En función del modo seleccionado

Dec Valor de deceleración, indicación opcional En función del modo seleccionado

Tabla 10.3 Parámetros de la instrucción Acc

Parámetros de enumeración Mode

Tipo de movimiento Unidad

dynPtp Punto a punto %

dynCart Cartesiano mm/s²

Tabla 10.4 Unidades de los parámetros ValueAcc, ValueDec

Nota

Si no se indica el parámetro opcional ValueDec (para la rampa de frenado), el valor del parámetro ValueAcc (para la aceleración) se utilizará para la rampa de frenado. En ese caso, el perfil es simétrico.

Ejemplo:

Variable:

:

pos0 : AXISPOS := (-60, -60, 0, 0, 0, 0, 0, 0, 0)

pos1 : AXISPOS := (60, 60, 0, 0, 0, 0, 0, 0, 0)

pos2 : AXISPOS := (100, 60, 0, 0, 0, 0, 0, 0, 0)

:

Programa:

:

Ptp(pos0)

Acc(dynPtp, 30, 30) // Aceleración para PTP al 30%

Ptp(pos1)

10. Instrucciones de dinámica

96 Festo GDCP-CMXR-SW-ES es 1205c

Acc(dynCart, 100) // Aceleración de trayectoria a

100 mm/s²

Lin(pos2)

:

10.4 Sacudida <Jerk> Ajuste de la sacudida para movimientos PTP y cartesianos. Las instrucciones siguientes se reducen al valor indicado. El control reduce automáticamente la sacudida al sobrepasarse el valor límite de eje.

Sintaxis

Jerk ( <Mode> : DYNAMICTYPE, <Value> : REAL)

Parámetros Significado Unidad

Mode Tipo de movimiento Enumeración: dynPtp, dynCart

Value Tipo de sacudida En función del modo elegido

Tabla 10.5 Parámetros de la instrucción Jerk

Parámetros de enumeración Mode

Tipo de movimiento Unidad

dynPtp Punto a punto %

dynCart Cartesiano mm/s³

Tabla 10.6 Unidades del parámetro Value

Ejemplo:

Variable:

:

pos0 : AXISPOS := (-60, -60, 0, 0, 0 ,0, 0, 0, 0)

pos1 : AXISPOS := (60, 60, 0, 0, 0, 0, 0, 0, 0)

pos2 : AXISPOS := (100, 60, 0, 0, 0, 0, 0, 0, 0)

:

10. Instrucciones de dinámica

Festo GDCP-CMXR-SW-ES es 1205c 97

Programa:

:

Ptp(pos0)

Jerk(dynPtp, 50) // Sacudida para PTP al 50%

Ptp(pos1)

Jerk(dynCart, 5000) // Sacudida en la trayectoria a 5000 mm/s³

Lin(pos2)

:

10. Instrucciones de dinámica

98 Festo GDCP-CMXR-SW-ES es 1205c

10.5 Override

Con un override pueden ajustarse todos los valores dinámicos en porcentajes. Ello permite influir fácilmente en los valores de aceleración, velocidad y sacudida. La trayectoria programada no se modifica.

Nota

Para reducir únicamente la velocidad, debe modificarse directa-mente la indicación del valor de velocidad. Si la reducción se efectúa mediante el override, influye también en la aceleración y en la sacudida. Ello reduce el aprovechamiento de la dinámica del eje y ralentiza el movimiento en la suma.

Hay dos tipos de override diferentes: Override dinámico: influye en los valores ajustados de velocidad, aceleración y

sacudida. Override en la unidad de mando manual.

Funcionamiento del override

Dinámica = dinámica programada * override dinámico

10.5.1 Override en la unidad de mando manual <Ovr>

El override coincide con el ajuste efectuado en la unidad de mando manual CDSA-D1-VX mediante las teclas V+, V-. El override se indica en porcentajes siendo 100% la dinámica máxima programada. Una reducción del override ralentiza la dinámica pero no modifica la trayectoria.

En la figura se muestran las teclas V- y V+ utilizadas para ajustar el override en la unidad de mando manual CDSA-D1-VX.

El override es muy útil para la puesta a punto. Sin embargo, en modo automático debe estar al 100% para poder aprovechar al máximo la dinámica. Las adaptaciones correspon-dientes de dinámica deben efectuarse directamente con las instrucciones de velocidad y aceleración.

Con la instrucción Ovr puede ajustarse directamente un valor de override en el programa.

Éste tiene el mismo efecto que una modificación efectuada con las teclas de la unidad de mando manual.

10. Instrucciones de dinámica

Festo GDCP-CMXR-SW-ES es 1205c 99

Sintaxis

Ovr ( <Value> : REAL)

Parámetro Significado Unidad

Value Valor de override Porcentaje

Tabla 10.7 Parámetro de la instrucción Ovr

Nota

Para aprovechar la dinámica máxima de la cinemática, el valor del override en modo automático debe estar siempre al 100%. Las adaptaciones de dinámica deben efectuarse directamente con las instrucciones correspondientes.

Funcionamiento:

Cualquier modificación del override en la unidad de mando manual repercute inmediata-mente sobre el movimiento. Debido al cálculo por adelantado del programa, el override no se puede modificar de forma inmediata a través de la instrucción Ovr. El uso de Ovr detiene por tanto el cálculo por adelantado, lo que a su vez provoca una parada en la

trayectoria. No es posible un avance aproximado hasta el siguiente segmento de la

trayectoria.

Ejemplo:

// Ajuste del override al 100%

Ovr(100)

Lin(pos1)

Lin(pos2)

// Ajuste del override al 60%

Ovr(60)

Lin(pos3)

Lin(pos4)

10. Instrucciones de dinámica

100 Festo GDCP-CMXR-SW-ES es 1205c

10.5.2 Override dinámico <DynOvr>

Con la instrucción DynOvr se influye en los valores dinámicos ajustados o programados

adoptando el override ajustado en la unidad de mando manual.

Sintaxis

DynOvr ( <Value> : REAL)

Parámetro Significado Unidad

Value Valor del override dinámico Porcentaje

Tabla 10.8 Parámetro de la instrucción DynOvr

Nota

El override no modifica la trayectoria descrita. El valor programado no repercute sobre el cálculo por adelantado del programa.

La modificación del override con Ovr detiene el movimiento

Velocidad de trayectoria

pos4

pos3

pos2

pos1

60%

100%

Tiempo

10. Instrucciones de dinámica

Festo GDCP-CMXR-SW-ES es 1205c 101

10.6 Rampas de aceleración

Con la instrucción Ramp puede ajustarse una forma de rampa para la aceleración o la

deceleración. El usuario puede elegir entre cuatro formas de rampa. Al arrancar se activa la rampa de seno al cuadrado.

Figura con las cuatro formas de rampa:

Rampa trapezoidal

Con la rampa trapezoidal, la trayectoria de aceleración describe una forma trapezoidal. Por tanto, la sacudida describe una forma rectangular. Con la rampa trapezoidal se obtienen los tiempos de ejecución de la trayectoria más cortos.

Con un parámetro opcional puede influirse en la forma de rampa. Éste puede ser > 0 y <= 0,5. Con un valor 0,5 se obtiene un triángulo de aceleración. Si el valor es, p. ej., 0,1, la rampa adopta casi un perfil rectangular.

Si no se indica el parámetro opcional, éste se ajusta automáticamente al factor 0,5 y se obtiene el triángulo de aceleración.

Forma de rampa trapezoidal con un factor aproximado de 0,1

Forma de rampa trapezoidal con el factor 0,5

Tiempo

Aceleración

0

0,2

0,4

0,6

0,8

1

1,2

0,000 0,333 0,667 1,000

Besch

leu

nig

un

g

Zeit

TrapezTrapecio Seno

Minjerk Seno al cuadrado

Ace

lera

ció

n

Ace

lera

ció

n

Ace

lera

ció

n

Ace

lera

ció

n

Tiempo

Tiempo Tiempo

Tiempo

10. Instrucciones de dinámica

102 Festo GDCP-CMXR-SW-ES es 1205c

Rampa sinusoidal

La rampa sinusoidal tiene la ventaja de que no sólo la trayectoria de aceleración es sinusoidal, sino también la de sacudida. Así, la trayectoria de aceleración es más suave que la de la rampa trapezoidal. Sin embargo, el tiempo de ejecución para alcanzar la velocidad es ligeramente superior.

Rampa de seno al cuadrado

La rampa de seno al cuadrado describe la trayectoria más suave de todas, pero también es la que más tiempo de ejecución requiere.

Rampa de sacudida mínima

La rampa de sacudida mínima es una forma de rampa especial en la que se obtiene un

término medio entre tiempo de ejecución y suavidad del movimiento. La trayectoria descrita por la aceleración es semejante a un perfil sinusoidal, pero la trayectoria de sacudida no es sinusoidal sino en forma de diente de sierra. Ello permite realizar un movimiento suave con un tiempo corto de ejecución.

Nota

La utilización de un tipo de rampa depende de la cinemática empleada y de la aplicación. Tras seleccionar la forma de rampa, debe probarse en el movimiento. Como valor inicial se ha establecido la rampa de seno cuadrado.

10.6.1 Ajuste de formas de rampa <Ramp>

Con la instrucción Ramp puede seleccionarse una forma de rampa. Ésta se utilizará para

todos los movimientos de todas las instrucciones de movimiento que se realicen a continuación.

Sintaxis

Ramp( <Ramptype> : RAMPTYPE, OPT <Param> : REAL)

Parámetros Significado Unidad

Ramptype Tipo de rampa, selecciona la forma de

rampa

Enumeración:

TRAPEZOID

SINE

SINESQUARE

MINJERK

Param Parámetro para rampas trapezoidales -----

Tabla 10.9 Parámetros de la instrucción Ramp

10. Instrucciones de dinámica

Festo GDCP-CMXR-SW-ES es 1205c 103

Ejemplo:

:

Ramp(TRAPEZOID) // Selección de la rampa trapezoidal

Lin(pos1)

Lin(pos2)

WaitTime(1000)

Ramp(SINE) // Selección de la rampa sinusoidal

Lin(pos3)

Lin(pos4)

:

10.7 Conexión de la velocidad de trayectoria constante <VconstOn>

Con esta instrucción se conecta la monitorización de la velocidad de trayectoria constante. Ésta sólo afecta a instrucciones cartesianas como, p. ej., LIN y CIRC. Dicha instrucción no

afecta de ningún modo a los movimientos PTP.

Sintaxis

VconstOn (<Tolerance> : REAL, <StopOnViolation> : BOOL)

Parámetros Significado Unidad

Tolerance Valor porcentual del bajón permitido de la velocidad de

trayectoria

Valor porcentual del 0% al

100%

StopOnViolation Si es TRUE, se emite un error por incumplimiento de la

tolerancia

Interruptor: TRUE o FALSE

Tabla 10.10 Parámetros de la instrucción Vconst

Nota

Si se requiere una velocidad de trayectoria constante, debe tenerse en cuenta que para el área de avance aproximado se haya ajustado un avance aproximado geométrico (véase el capítulo 11.4 Avance aproximado por geometría en la página 111). Un avance aproximado basado en la velocidad porcentual provoca la modificación de la velocidad de trayectoria en el área de avance aproximado.

El control multieje CMXR calcula la velocidad posible de trayectoria basándose en la trayectoria y en los valores dinámicos máximos de la mecánica. El límite de la velocidad posible de trayectoria lo determina la dinámica de la mecánica. Si es necesario programar segmentos de trayectoria que, debido a los límites de dinámica, no se pueden recorrer a

10. Instrucciones de dinámica

104 Festo GDCP-CMXR-SW-ES es 1205c

una velocidad de trayectoria constante, en estos puntos se producen bajones de la

velocidad de trayectoria.

Con el parámetro Tolerance puede indicarse un valor porcentual para obtener bajones

permitidos de la velocidad de trayectoria. Si el valor de tolerancia indicado es el 100%, la monitorización se desconecta.

Nota

La monitorización de velocidad de la trayectoria no tiene en cuenta el override ajustado en la unidad de mando manual. Esto significa que si la cinemática no alcanza toda su velocidad porque un override la limita, se activará dicha monitorización y se producirá un error.

Ejemplo:

Programa:

:

Lin(pos1)

VconstOn(25, TRUE)

Lin(pos2)

Lin(pos3)

VconstOff ( )

:

10. Instrucciones de dinámica

Festo GDCP-CMXR-SW-ES es 1205c 105

10.8 Desconexión de la velocidad de trayectoria constante <VconstOff>

Con esta instrucción se desconecta una velocidad de trayectoria constante.

Sintaxis

VconstOff ( )

Nota

La interrupción del programa de usuario no provoca la desconexión automática de la monitorización de la velocidad de trayectoria. Al volver a arrancar el programa de usuario debe desconectarse siempre primero la monitorización.

11. Instrucciones de avance aproximado

106 Festo GDCP-CMXR-SW-ES es 1205c

11. Instrucciones de avance aproximado Como avance aproximado se entiende la aceleración de los ejes para aproximarse a la posición siguiente aunque aún no se hubiese alcanzado la posición anterior. A menudo no es necesario alcanzar con precisión una posición, sino realizar el movimiento de manera rápida y suave, es decir, con el menor esfuerzo posible de la mecánica. La función de avance aproximado permite ajustar la precisión de alcance de un punto y la dureza del movimiento.

En la figura siguiente se muestra el funcionamiento del avance aproximado.

El programa de movimiento contiene un posicionamiento en la posición 1 y luego en la posición 2. Mediante la función de avance aproximado, que se ajusta por medio de una instrucción de programa, las distintas posiciones no se alcanzan con exactitud. Los perfiles

dinámicos para aproximarse a cada una de las posiciones se pasan a las áreas de avance aproximado, lo que aumenta la dinámica.

Nota

Al cargar un programa no hay ningún avance aproximado activo, es decir, el equipo se aproxima a las posiciones exactas. El avance aproximado debe activarse con las funciones correspondientes.

El avance aproximado se efectúa de dos maneras:

1. Avance aproximado por velocidad basado en la velocidad.

2. Avance aproximado por posición basado en una distancia predefinida.

En las páginas siguientes se describen estos tipos.

Áreas de avance aproximado, curvas de

polinomio

Posición 1 Posición 2

Trayectoria de la cinemática

11. Instrucciones de avance aproximado

Festo GDCP-CMXR-SW-ES es 1205c 107

Nota

En el área de avance aproximado, la trayectoria viene dada por una curva de polinomio resultante de unos cálculos matemáticos. Esta curva da lugar a un aumento continuo de la dinámica y, por consiguiente, a un comportamiento no perjudicial para el sistema mecánico. Este comportamiento no se puede lograr con un redondeo por medio del radio. Por consiguiente, el avance aproximado no permite redondear los segmentos de trayectoria.

11.1 Segmentos cero

Si se programa un segmento cero, es decir, el nuevo posicionamiento sobre la posición ya alcanzada, no es posible el avance aproximado. Esto provoca un frenado seguido de una aceleración sobre la trayectoria.

Ejemplo:

Lin(pos1)

Lin(pos2)

// Nuevo posicionamiento en pos2 = no es posible el avance

aproximado

Lin(pos2)

Lin(pos3)

Puesto que la posición pos2 se ha programado más de una vez, en este punto del programa se produce una parada en la trayectoria.

11. Instrucciones de avance aproximado

108 Festo GDCP-CMXR-SW-ES es 1205c

11.2 Área extrema

Si la distancia entre dos puntos es menor que la necesaria para avanzar entre la trayectoria de avance aproximado parametrizada, el control reduce automáticamente el área de avance aproximado entre los puntos para describir el mejor valor de avance aproximado posible.

En la figura se muestran en línea discontinua los círculos del área de avance aproximado obtenida a partir de la parametrización. Los círculos se solapan porque la distancia entre las posiciones A y B no es suficiente para recorrer este perfil. El control calcula automáticamente el área de avance aproximado máximo posible, representado por los círculos grises.

Nota

El avance aproximado está limitado al 50% de la longitud del segmento de trayectoria. Si el área de avance aproximado es mayor que el límite máximo permitido, el control multieje CMXR la reduce automáticamente al 50% de la longitud del segmento de trayec-toria.

Nota

Si la longitud del segmento de trayectoria es demasiado corta, se pueden producir bajones de dinámica incontrolados si se redujo el área de avance aproximado definida. Para evitarlo debe adaptarse la trayectoria o el área de avance aproximado.

Trayectoria recorrida

Área de avance aproximado generada por el control

Área de avance aproximado programada

Área de avance aproximado

que se solapa

11. Instrucciones de avance aproximado

Festo GDCP-CMXR-SW-ES es 1205c 109

11.3 Avance aproximado por velocidad

Para el avance aproximado por velocidad se solapan los perfiles dinámicos de la trayectoria. Con ello se obtiene un movimiento a la posición siguiente dentro del área de avance aproximado.

11.3.1 Con factor porcentual <OvlVel>

Para el avance aproximado por velocidad se define previamente un grado de avance aproximado con un valor porcentual. El margen de valores va del 0% al 200%.

Sintaxis

OvlVel (<Value> : REAL)

Parámetro Significado Unidad

Value Valor de avance

aproximado

Porcentaje

Tabla 11.1 Parámetro de la instrucción OvlVel

Parámetros:

Porcentaje Parámetros de avance aproximado en %

0% Sin avance aproximado

100% Aprovechamiento máximo de las aceleraciones de ejes

100..200% Sin pérdida de tiempo, movimiento más suave con un área de avance aproximado más grande

Los valores menores que 100 % provocan desviaciones de la posición pero requieren más tiempo de movimiento ya que la velocidad debe reducirse. Con un valor del 100 %, se aprovechan al máximo las reservas de aceleración de los ejes teniendo en cuenta una desviación lo más pequeña posible de la posición. Si se indican valores entre 100 % y 200 %, las desviaciones de la posición aumentan y las aceleraciones de los ejes se reducen, al contrario que con un ajuste del 100 %.

La siguiente figura muestra los perfiles de velocidad de un desplazamiento hasta las posiciones 1 y 2. Para el área de avance aproximado se han definido distintos valores.

11. Instrucciones de avance aproximado

110 Festo GDCP-CMXR-SW-ES es 1205c

La gráfica 1 muestra un perfil de velocidad donde no se ha producido solapamiento. Los ejes frenan dentro de la trayectoria; de este modo se alcanzan las posiciones 1 y 2 con

precisión. La gráfica central representa un solapamiento parcial. La gráfica inferior muestra un solapamiento total (100%) de los perfiles de velocidad.

Nota

En el área de avance aproximado se trabaja con la dinámica de ejes máxima. Ello significa que el tramo que se encuentra dentro del área de avance aproximado no es un radio, sino una curva de polinomio que se deriva de los valores dinámicos actuales de los ejes.

Ejemplo:

:

OvlVel(100) // Avance aproximado al 100 %

Lin(pos1)

Lin(pos2)

OvlVel(75) // Avance aproximado al 75%

Lin(pos3)

:

Tiempos de ciclo

Área de avance aproximado

3) Solapamiento completo

2) Solapamiento parcial

Sentido X

Tiempos de ciclo

Tiempos de ciclo

Sentido Y

1) Sin solapamiento

0%

50%

100%

11. Instrucciones de avance aproximado

Festo GDCP-CMXR-SW-ES es 1205c 111

11.4 Avance aproximado por geometría

En el avance aproximado por geometría se fijan las desviaciones de la posición final programada. A diferencia del avance aproximado por velocidad, la asimetría es geométrica, es decir, se indica en unidades de longitud o de ángulos.

En el avance aproximado por geometría se diferencia entre el avance aproximado de los ejes cartesianos X, Y y Z y el de los ejes de orientación.

Nota

El avance aproximado por geometría sólo puede utilizarse con movimientos cartesianos. Los movimientos PTP no se pueden efectuar con este tipo de avance aproximado.

No es adecuado para redondear esquinas, ya que la forma geométrica en el área de avance aproximado no es un radio, sino una curva de polinomio. Los radios no son adecuados para el avance aproximado, ya que provocan un aumento brusco de la aceleración.

11.4.1 Avance aproximado de los ejes X, Y y Z <OvlCart>

El avance aproximado de movimientos cartesianos con fijación geométrica se define indicando una distancia del TCP en la trayectoria hasta el punto de destino.

El movimiento de avance aproximado se inicia al entrar en la esfera y finaliza en el punto donde la esfera vuelve a cortarse con el tramo de trayectoria siguiente. Esta curva es tangencial con respecto a los 2 tramos de trayectoria en cuestión. El límite del área de avance aproximado forma la mitad del más corto de los segmentos de trayectoria implicados.

La trayectoria en el área de avance aproximado no es un radio, sino un polinomio de quinto grado. Este polinomio genera la trayectoria suave máxima posible, lo que no puede hacerse con un arco de círculo.

Sintaxis

OvlCart (<Distance> : REAL)

Esfera con área de avance

aproximado

11. Instrucciones de avance aproximado

112 Festo GDCP-CMXR-SW-ES es 1205c

Parámetro Significado Unidad

Distance Área de avance aproximado, distancia hasta

el punto final

Unidad de longitud ajustada

Tabla 11.2 Parámetro de la instrucción OvlCart

Nota

El avance aproximado se necesita muy a menudo en combinación con una velocidad de trayectoria constante. Ésta se ajusta con la instrucción VconstOn (véase el capítulo 10.7 Conexión de la velocidad de trayectoria constante en la página 103).

Ejemplo:

Un contorno debe recorrerse a una velocidad de trayectoria constante y con un área de avance aproximado de 5 mm.

Vel(dynCart, 300) // Velocidad de trayectoria a 300 mm/s

VconstOn(25, TRUE) // Conectar vel. trayectoria const.

OvlCart(5) // Ajustar área de avance aproximado

Lin(p1)

Lin(p2)

Lin(p3)

Lin(p4)

Lin(p5)

Lin(p6)

p6

p1 p2

p3 p4

p5

Área de avance

aproximado

12. Sistemas de referencia (desplazamiento del punto cero)

Festo GDCP-CMXR-SW-ES es 1205c 113

12. Sistemas de referencia (desplazamiento del punto cero)

Los sistemas de referencia son sistemas de coordenadas cartesianas con tres grados de libertad de movimiento de traslación y tres de rotación. La orientación se define a partir del método de Euler ZYZ.

Nota

Como los sistemas de referencia son de tipo cartesiano, no afectan al punto cero de los ejes individuales del sistema de coordenadas de ejes. Éstos sólo afectan al sistema de coordenadas cartesianas.

Al inicio de un programa está activado el sistema de coordenadas universales.

12.1 Relación del sistema de referencia

Un sistema de referencia toma como referencia el punto cero cartesiano de un sistema de coordenadas ya definido. Los valores definidos del sistema de referencia nuevo provocan un desplazamiento en los seis grados de libertad de movimiento.

Como se aprecia en la figura, es posible definir varios sistemas de referencia en el punto cero cartesiano de otro sistema de referencia, pero sólo una referencia puede estar activa.

Nota

El encadenado de sistemas de referencia debe efectuarse con precaución. En ocasiones este mecanismo es útil para una programación eficiente aunque dificulta la lectura del programa y el anidamiento descuidado puede provocar colisiones.

X

Y

Z X

Y

Z

X

Y

Z

Punto cero del sistema de coordenadas universales

Desplazamiento 1

Desplazamiento 2

X

Y

Z

Desplazamiento aditivo al desplazamiento 2

12. Sistemas de referencia (desplazamiento del punto cero)

114 Festo GDCP-CMXR-SW-ES es 1205c

Nota

El desplazamiento del sistema de referencia consiste en una traslación y una rotación (orientación). Durante la ejecución se realiza primero el desplazamiento y después la rotación.

12.2 Datos del sistema de referencia

Los datos de un sistema de referencia se componen de una traslación tridimensional y de una indicación de orientación tridimensional. La orientación se define a partir del método de Euler ZYZ.

Estos datos se guardan en una variable de tipo de dato estructurado. El usuario puede elegir el nombre del sistema de referencia.

Existen diferentes posibilidades para definir los datos de un sistema de referencia:

1. Indicación directa de los valores.

2. Indicación a través de tres puntos cartesianos

Además de los valores del sistema de referencia también es posible establecer una referencia en otro sistema de referencia. Además, en cada uno de los tipos de datos estructurados es posible establecer una relación con otro sistema de referencia con el parámetro RefSys. Con el parámetro RefSys puede indicarse cualquier tipo de datos.

A continuación se describen las instrucciones para activar un sistema de referencia.

12. Sistemas de referencia (desplazamiento del punto cero)

Festo GDCP-CMXR-SW-ES es 1205c 115

12.3 Sistema de referencia con valores directos <SetRefSys>

La instrucción SetRefSys activa un sistema de referencia cuyos datos absolutos están

registrados en la estructura de los datos de la variable transferida.

Sintaxis

SetRefSys(<refSys> : REFSYSDATA)

Parámetro Significado Unidad

refSys Sistema de referencia definido por los valores de

desplazamiento

Unidades de longitud y de

ángulo

Tabla 12.1 Parámetro de la instrucción SetRefSys

Con la indicación directa del valor se revelan los valores directamente con la variable transferida. Los datos ya transferidos sólo pueden modificarse realizando de nuevo la llamada.

Estructura del tipo de datos REFSYSDATA:

baseRs : REFSYS Referencia a otro sistema de referencia

x : REAL Desplazamiento a lo largo del eje X

y : REAL Desplazamiento a lo largo del eje Y

z : REAL Desplazamiento a lo largo del eje Z

a : REAL Orientación según método de Euler, rotación alrededor del eje Z

b : REAL Orientación según método de Euler, rotación alrededor del eje Y rotado

c : REAL Orientación según método de Euler, rotación alrededor del eje Z rotado

Con el parámetro baseRs puede indicarse otra referencia, la cual tiene efecto aditivo en el

sistema de referencia. Para relacionar la cinemática con el sistema de coordenadas universales, se debe establecer una referencia con la variable de sistema world.

Ejemplo:

Datos:

refsysdata0 : REFSYSDATA := (MAP(world), 100, 150, 0, 0, 0, 0)

Programa:

SetRefSys(refsysdata0)

12. Sistemas de referencia (desplazamiento del punto cero)

116 Festo GDCP-CMXR-SW-ES es 1205c

12.4 Sistema de referencia con tres puntos <SetRefSys3P>

Con la instrucción siguiente, SetRefSys3P, se activa un sistema de referencia cuyos datos

se determinan mediante tres posiciones en el espacio.

Sintaxis

SetRefSys3P(<refSys> : REFSYS3P)

Parámetro Significado Unidad

refSys Sistema de referencia determinado por tres posiciones Longitud (mm)

Tabla 12.2 Parámetro de la instrucción SetRefSys3P

Aplicación:

Este tipo de descripción de un sistema de referencia permite realizar la programación tipo teach-in mediante tres posiciones. Estas tres posiciones son de tipo cartesiano y tienen seis grados de libertad de movimiento.

Significado de las posiciones:

La primera posición determina el origen del sistema de referencia.

La segunda posición determina un punto por el que discurre el eje X positivo

cartesiano del sistema de referencia.

La tercera posición determina un punto en el plano XY.

Nota

La orientación de las posiciones es irrelevante. Para los cálculos se necesitan sólo las posiciones cartesianas.

Estructura del tipo de datos REFSYS3P:

baseRs : REFSYS Referencia a otro sistema de referencia

p0 : CARTPOS Origen del sistema de referencia que se va a definir

px : CARTPOS Posición a lo largo del eje X

pxy : CARTPOS Posición en el plano X-Y

Con el parámetro baseRs puede indicarse otra referencia, la cual tiene efecto aditivo en el

sistema de referencia. Para relacionar la cinemática con el sistema de coordenadas universales, se debe establecer una referencia con la variable de sistema world.

12. Sistemas de referencia (desplazamiento del punto cero)

Festo GDCP-CMXR-SW-ES es 1205c 117

Ejemplo:

Datos:

refsys3p0 : REFSYS3P := (MAP(world),

(100.0, 100.0, 0.0),

(200.0, 100.0, 0.0),

(200.0, 200.0, 0.0))

Programa:

SetRefSys3P(refsys3p0)

12.4.1 Programación tipo teach-in del sistema de referencia SetRefSys3P

La programación tipo teach-in del sistema de referencia SetRefSys3P supone ventajas decisivas en la aplicación. Con este sistema se programa por teach-in directamente el punto cero, p. ej., de una paleta. De este modo se compensa la posible imprecisión, p. ej., debido al montaje o a la propia cinemática. Además, no es necesaria una laboriosa determinación del punto cero, p. ej., mediante medición y cálculo en el espacio.

No obstante, para la programación tipo teach-in del sistema de referencia SetRefSys3P se debe seguir un orden:

Atención

El tercer punto determina el plano XY positivo. El tercer punto puede, dependiendo de su posición longitudinal, provocar un giro del sistema de coordenadas, por ejemplo, un giro de 180 grados del eje Z.

Estos tres parámetros se pueden programar por teach-in con la ayuda de la unidad de mando manual o del software de emulación.

Segundo punto = eje X positivo

Primer punto = origen

Tercer punto = plano XY positivo

Tercer punto = plano XY positivo

12. Sistemas de referencia (desplazamiento del punto cero)

118 Festo GDCP-CMXR-SW-ES es 1205c

En el modo de funcionamiento MANUAL, se abre la máscara de parámetros de la instrucción al crear la instrucción o mediante la tecla de pantalla Modificar. Al marcar la línea Posición, se activa la tecla de pantalla y se puede utilizar.

No obstante, antes de la programación tipo teach-in de las posiciones se debe comprobar

que se haya seleccionado una referencia válida al sistema de referencia deseado mediante el parámetro baseRs. En este sistema de referencia se programarán por teach-in las posiciones siguientes. Si el sistema de referencia deseado aún no existe, deberá crearse antes.

Pulsando la tecla de pantalla se guarda la posición cartesiana actual en la variable indicada. La programación tipo teach-in se realiza siempre en una variable de posición. Para la programación tipo teach-in de otra posición, deberá marcarse haciendo clic en ella.

Nota

El sistema de referencia seleccionado en la página de posición carece de importancia con la instrucción SetRefSys3P. La referencia al sistema de referencia se establece mediante el parámetro baseRs.

2. Hacer clic en el campo de

parámetros y se mostrará de

color azul

3. Se activa la tecla de pantalla

de programación tipo teach-in

1. Selección del sistema de referencia donde

se realizará la programación tipo teach-in

12. Sistemas de referencia (desplazamiento del punto cero)

Festo GDCP-CMXR-SW-ES es 1205c 119

12.5 Sistema de referencia universal <SetRefSysWorld>

Con esta instrucción se activa el sistema de referencia universal cuyo origen está guardado en la configuración de la cinemática.

Sintaxis

SetRefSysWorld()

Si un sistema de referencia se activa con la instrucción SetRefSys o SetRefSys3P y se

desea desactivar dicho sistema en un punto determinado del programa, se utiliza la instrucción SetRefSysWorld.

12.6 Sistema de referencia dinámico <SetRefSysDyn>

Como complemento a los sistemas de referencia estáticos, existe la instrucción SetRefSysDyn para definir un sistema de referencia dinámico (móvil). Este sistema de referencia móvil se necesita para la realización de la función de seguimiento.

Sintaxis

SetRefSysDyn(<refSys> : CARTREFSYSVAR)

Parámetro Significado Unidad

refSys Sistema de referencia que obtiene los valores a través del

PLC interno

Unidades de longitud y de

ángulo

Tabla 12.3 Parámetro de la instrucción SetRefSysDyn

Nota

Esta instrucción sólo funciona en combinación con el PLC integrado. Se puede encontrar más información sobre la instrucción y la función de seguimiento a ella asociada en la documentación especial “Programación FTL - Seguimiento”.

12. Sistemas de referencia (desplazamiento del punto cero)

120 Festo GDCP-CMXR-SW-ES es 1205c

12.7 Ejemplo

En el ejemplo siguiente deben vaciarse dos paletas y alimentar las piezas en una máquina.

Las dos paletas tienen el mismo contenido y las mismas dimensiones. Para no complicar la programación, se activa un sistema de referencia para cada paleta y el programa de las paletas se formula en un subprograma.

Para el sistema de referencia de la paleta 1 se utiliza la variable RefPal1 y RefPal2 para la

paleta 2.

Datos:

:

refPal1 : REFSYSDATA := (MAP(world), 0, 0, 0, 0, 0, 0)

refPal2 : REFSYSDATA := (MAP(world), 0, 0, 0, 0, 0, 0)

pos1 : CARTPOS := (100, 80, 70, 0, 0, 0, 0, 0, 0)

:

Programa:

:

refPal1.x := 300 // Desplazamiento de paleta 1 en X

refPal1.y := 300 // Desplazamiento de paleta 1 en Y

refPal2.x := 1500 // Desplazamiento de paleta 2 en X

refPal2.y := 300 // Desplazamiento de paleta 2 en Y

Lin(pos1) // Avance a seguridad en el sistema

universal

SetRefSys(refPal1) // Activar desplazamiento de paleta 1

Alimentación de la máquina

X

Y

Paleta 1 Paleta 2

Sensor para detección de espacio libre

300

300 1500

12. Sistemas de referencia (desplazamiento del punto cero)

Festo GDCP-CMXR-SW-ES es 1205c 121

CALL Feed() // Llamar subprograma de alimentación

de piezas

SetRefSys(refPal2) // Activar desplazamiento de paleta 2

CALL Feed() // Llamar subprograma de alimentación

de piezas

SetRefSysWorld() // Activar sistema universal

Lin(pos1)

:

13. Referenciación de una cinemática

122 Festo GDCP-CMXR-SW-ES es 1205c

13. Referenciación de una cinemática

13.1 Recorrido de referencia <RefAxis>

La instrucción RefAxis permite referenciar ejes. El recorrido de referencia se ejecuta

siempre con un único eje.

Sintaxis

RefAxis(<axis>:AXIS, OPT <refData>:REFDATA, OPT <timeout>:REAL)

Parámetros Significado Unidad

Axis Eje seleccionado que se va a referenciar Enumeración A1, A2, hasta

A9

refData Conjunto de datos del recorrido de referencia, p. ej., cómo se va

a referenciar

Ninguna

timeout Tiempo para el desarrollo de la operación (después se emite un

mensaje de error, la referenciación se interrumpe)

Segundos

Tabla 13.1 Parámetros de la instrucción RefAxis

Durante el recorrido de referencia debe observarse que los ejes participantes pueden moverse con libertad. El movimiento ejecutado es axial. Según el tipo de cinemática, la disposición de los ejes en la herramienta puede provocar movimientos incontrolados.

Nota

Los parámetros refData y timeout son opcionales. Si no se indican, la posición real actual se toma como posición de referencia (DS 402 - método 35).

Atención

Durante el recorrido de referencia debe observarse que los ejes participantes pueden moverse con libertad. Además, deben seleccionarse los valores dinámicos apropiados para estos movimientos de modo que el recorrido de referencia sea razonable. En este caso, unos valores dinámicos elevados no son razonables.

13. Referenciación de una cinemática

Festo GDCP-CMXR-SW-ES es 1205c 123

La referenciación requiere algunos datos para su ejecución. Estos datos se indican en un conjunto de datos de referencia del tipo REFDATA.

Parámetros Tipo Significado

method DINT Método de recorrido de referencia conforme a CANopen

DS 402

offset REAL Offset de la posición de referencia [mm]

velSwitch REAL Velocidad de referenciación (aproximación al interruptor)

velZero REAL Velocidad de avance lento (búsqueda del flanco)

acc REAL Aceleración del recorrido de referencia

saveOffsetToEncoder BOOL Memorización del referenciado en el codificador del

motor

Tabla 13.2 Estructura del tipo de datos REFDATA

Nota

Si se especifica el método de recorrido de referencia 99, se utilizarán los parámetros de recorrido de referencia tal como fueron guardados en el accionamiento mediante Festo Configuration Tool (FCT). En ese caso, el recorrido de referencia se realiza igual que durante la puesta en funcionamiento de los diferentes ejes. Todos los demás parámetros, tales como offset, velSwitch, zeroSwitch y acc serán irrelevantes.

Nota

Con la función “saveOffsetToEncoder” es posible guardar de forma fija el referenciado del eje correspondiente en el codificador del motor. Así, este se conserva al reiniciar el control. Para disponer de esta función se deben utilizar motores con codificadores MultiTurn.

Método del recorrido de referencia

El método del recorrido de referencia puede realizarse de varias maneras, p. ej., a un detector de final de carrera negativo con evaluación de impulso de puesta a cero, a un detector de final de carrera positivo con evaluación de impulso de puesta a cero o un recorrido de referencia a un detector de final de carrera. Todos estos métodos se encuentran en la correspondiente documentación del CANopen de cada regulador de

accionamiento.

La tabla siguiente muestra los métodos de referenciación para equipos CANopen conforme a DS 402.

Valor Sentido Destino Punto de referencia para cero

-18 Positiva Tope Tope

-17 Negativa Tope Tope

-2 Positiva Tope Impulso cero

-1 Negativa Tope Impulso cero

13. Referenciación de una cinemática

124 Festo GDCP-CMXR-SW-ES es 1205c

Valor Sentido Destino Punto de referencia para cero

1 Negativa Detector de final de

carrera Impulso cero

2 Positiva Detector de final de

carrera Impulso cero

7 Positiva Interruptor de

referencia Impulso cero

11 Negativa Interruptor de

referencia Impulso cero

17 Negativa Detector de final de

carrera Detector de final de carrera

18 Positiva Detector de final de

carrera Detector de final de carrera

23 Positiva Interruptor de

referencia Interruptor de referencia

27 Negativa Interruptor de

referencia Interruptor de referencia

33 Negativa Impulso cero Impulso cero

34 Positiva Impulso cero Impulso cero

35 - Ningún recorrido Posición real actual

99 - - Ejecución definida como en el

proyecto FCT del controlador del

motor

Tabla 13.3 Métodos del recorrido de referencia

Desplazamiento de la posición de referencia

Con el parámetro offset puede definirse un desplazamiento del punto cero en relación a la posición de referencia. Después de la referenciación se suma este valor de offset al punto cero de referencia. La indicación del valor real del eje afectado se actualiza como corresponde.

Velocidad de referenciación, velocidad de avance lento, aceleración

Con la velocidad de referenciación y la aceleración se ajusta la dinámica de los ejes para la referenciación. Ésta es relevante desde el inicio del recorrido de referencia hasta

alcanzar el flanco del interruptor correspondiente. Cuando se detecta el flanco, se conmuta a velocidad de avance lento y se finaliza el recorrido de referencia conforme al método seleccionado.

13. Referenciación de una cinemática

Festo GDCP-CMXR-SW-ES es 1205c 125

13.2 Recorrido de referencia asíncrono <RefAxisAsync>

Con esta instrucción es posible referenciar varios ejes de robot al mismo tiempo. La instrucción no espera a que el recorrido de referencia finalice, sino que la ejecución del programa se reanuda una vez iniciada la instrucción de referenciación. Para determinar si la referenciación ha acabado o para leer su estado se utilizan las instrucciones WaitRefFinished e IsAxisReferenced.

Sintaxis

RefAxisAsync(<axis>:AXIS, OPT <refData>:REFDATA, OPT <timeout>:REAL)

Parámetros Significado Unidad

Axis Eje seleccionado que se va a referenciar Enumeración A1, A2, hasta

A9

refData Conjunto de datos del recorrido de referencia, p. ej., cómo se va

a referenciar

Ninguna

timeout Tiempo para el desarrollo de la operación (después se emite un

mensaje de error, la referenciación se interrumpe)

Segundos

Tabla 13.4 Parámetros de la instrucción RefAxisAsync

Durante el recorrido de referencia debe observarse que los ejes participantes pueden moverse con libertad. El movimiento ejecutado es axial. Según el tipo de cinemática, la

disposición de ejes en la herramienta puede provocar movimientos incontrolados.

Nota

Los parámetros refData y timeout son opcionales. Si no se indican, la posición real actual se toma como posición de referencia (DS 402 - método 35).

Atención

Durante el recorrido de referencia debe observarse que todos los ejes pueden moverse con libertad. Además, deben seleccionarse los valores dinámicos apropiados para estos movimientos de modo que el recorrido de referencia sea razonable. En este caso, unos valores dinámicos elevados no son razonables.

Los parámetros y su funcionamiento se corresponden con la instrucción RefAxis.

13. Referenciación de una cinemática

126 Festo GDCP-CMXR-SW-ES es 1205c

Nota

Si se especifica el método de recorrido de referencia 99, se utilizarán los parámetros de recorrido de referencia tal como fueron guardados en el accionamiento mediante Festo Configuration Tool (FCT). En ese caso, el recorrido de referencia se realiza igual que durante la puesta en funcionamiento de los diferentes ejes. Todos los demás parámetros, tales como offset, velSwitch, zeroSwitch y acc serán irrelevantes.

13.3 Espera al final del recorrido de referencia <WaitRefFinished>

Con esta instrucción se espera a que finalicen todos los recorridos de referencia asíncronos iniciados.

Sintaxis

WaitRefFinished( ) : BOOL

La instrucción espera a que finalicen los recorridos de referencia asíncronos (se espera a la ejecución principal) o a que aparezca un error en un recorrido de referencia.

Si no aparece ningún error en el recorrido de referencia se emite TRUE, de lo contrario, FALSE.

Programa:

: RefAxisAsync(A1, refdata0)

RefAxisAsync(A2, refdata0)

RefAxisAsync(A3, refdata0)

RefAxisAsync(A4)

boolReference := WaitRefFinished()

IF NOT boolReference THEN

SetError("Error homing”)

END_IF

Atención

A la hora de ejecutar la instrucción RefAxisAsync, es obligatorio utilizar la instrucción WaitRefFinished para garantizar la ejecución subsiguiente del programa. Si no se aguarda al final del recorrido de referencia, el cálculo por adelantado del programa puede dar lugar a instrucciones que provoquen errores.

13. Referenciación de una cinemática

Festo GDCP-CMXR-SW-ES es 1205c 127

13.4 Interrogación del estado de un eje <IsAxisReferenced>

Con esta instrucción se interroga si un eje está referenciado.

Sintaxis

IsAxisReferenced(axis : AXIS ) : BOOL

Parámetro Significado Unidad

Axis Eje seleccionado objeto de la interrogación Enumeración A1,

A2, hasta A9

Tabla 13.5 Parámetro de la instrucción IsAxisReferenced

Si el eje indicado está referenciado se emite TRUE, de lo contrario, FALSE.

14. Herramientas

128 Festo GDCP-CMXR-SW-ES es 1205c

14. Herramientas El control multieje CMXR permite definir los datos de longitud de una herramienta. Estos datos se describen en forma de un vector de seis dimensiones. De ese modo puede asignarse una orientación a la herramienta, además de las dimensiones. La orientación se define a partir del método de Euler ZYZ. El origen del vector es el punto cero en la brida de la herramienta. El extremo de la herramienta, denominado TCP (Tool Center Point), fija el

punto final. Con los datos de herramienta se determina el sistema de coordenadas de herramienta.

14.1 Datos de herramienta

14.1.1 Datos del vector TCP

Los datos de herramienta están guardados en el tipo de datos estructurados TCPTOOL. Éste contiene los datos de los seis grados de libertad de movimiento.

Estructura:

Tipo de datos TCPTOOL

x : REAL Desplazamiento a lo largo del eje X

y : REAL Desplazamiento a lo largo del eje Y

z : REAL Desplazamiento a lo largo del eje Z

a : REAL Indicación de orientación, rotación alrededor del eje Z

b : REAL Indicación de orientación, rotación alrededor del eje Y rotado

c : REAL Indicación de orientación, rotación alrededor del eje Z rotado

Z

X Y

Brida de herramienta

Sistema de coordenadas de vector de seis dimensiones con origen en la brida

14. Herramientas

Festo GDCP-CMXR-SW-ES es 1205c 129

Los tres valores de traslación X, Y y Z definen el TCP en el espacio estando todos los ejes

en posición inicial. De este modo se desplaza el sistema de coordenadas de la herramienta al TCP. Éste también puede girarse indicando su orientación (parámetros A, B y C) en el espacio.

Ejemplo de datos TCP:

Un pórtico cartesiano tiene un eje giratorio neumático en el extremo del eje Z con una pinza por vacío. La herramienta está montada en sentido del eje Z. La orientación del TCP no cambia respecto al sistema original de coordenadas del sistema.

Se obtienen los siguientes datos TCP:

X = 0

Y = 0

Z = Longitud de herramienta

A = 0

B = 0

C = 0

Ahora la herramienta, que dispone de un eje giratorio neumático, se ha inclinado 30 grados en el espacio. El TCP se calcula con el ángulo del movimiento giratorio.

Se obtienen los siguientes datos:

X = Longitud de herramienta x sin(30°)

Y = 0

Z = Longitud de herramienta x cos(30°)

A = 0

B = 0

C = 0

La orientación del sistema de coordenadas de herramienta no cambia. Si es necesario, deberá ajustarse con los parámetros A, B y C.

Longitud de herramienta

Z

X

Y

Eje Z

Eje X

Asimetría en Z

Z

X

Y

Eje Z

Eje X

Asimetría en X

Ángulo de 30°

14. Herramientas

130 Festo GDCP-CMXR-SW-ES es 1205c

Además, la orientación del sistema de coordenadas de herramienta debe apuntar en el sentido de la herramienta rotada. Para rotar se emplea el método de Euler ZYZ.

Se obtienen los siguientes datos:

X = Longitud de herramienta x sin(30°)

Y = 0

Z = Longitud de herramienta x cos(30°)

A = 0

B = 30

C = 0

Estas descripciones de herramienta se guardan en variables. Para una herramienta pueden definirse un número ilimitado de variables TCP, pero sólo puede estar activado un con-junto de datos. Las diferentes descripciones se utilizan cuando una herramienta tiene diferentes puntos de referencia que deben intercambiarse durante el funcionamiento

dependiendo de la tarea.

Como los datos de herramienta están guardados como variable en la memoria, su número está limitado por la capacidad de la memoria.

El programador debe asegurarse de asignar correctamente los datos TCP a la herramienta.

El control multieje CMXR no conoce ninguna referencia de los datos de herramienta en relación a la herramienta física.

Atención

Si los datos TCP son inadecuados o incorrectos hay peligro de colisión.

Asimetría en Z

Z

X

Y

Eje Z

Eje X

Asimetría en X

Ángulo

14. Herramientas

Festo GDCP-CMXR-SW-ES es 1205c 131

14.2 Activación de datos de herramienta <Tool>

Con la instrucción siguiente pueden activarse los datos de un Tool Center Point (TCP) dentro de un programa FTL. Esta instrucción Tool activa datos TCP nuevos para la cine-mática. De este modo se modifica el punto de trabajo de la cinemática.

Sintaxis

Tool (<ToolData> : TCPTOOL)

Los datos para el TCP se encuentran en la variable a transferir. Estos datos se leen en el

avance de proceso del intérprete FTL y se introducen a partir de este punto en la plani-ficación de la trayectoria del movimiento. Estos datos TCP se tienen en cuenta en todas las instrucciones siguientes.

Parámetro Significado Unidad

ToolData Datos de herramienta TCPTOOL

Tabla 14.1 Parámetro de la instrucción Tool

La llamada de la instrucción Tool no provoca ningún movimiento de posicionado, sino que

sólo da a conocer los datos TCP ahora activos. En la próxima instrucción de desplaza-miento cartesiano se incluyen estos datos en el cálculo y se tienen en cuenta en la ejecución del movimiento.

Si se salta una instrucción Tool en el programa FTL, en la unidad de mando manual o el indicador de frase para ejecución del programa está posicionado de manera que no se puede ejecutar dicha instrucción, pueden provocarse lesiones físicas o daños en la máquina. La orientación siguiente de herramienta podría no ser adecuada para el

movimiento, con lo que se corre peligro de colisión.

Advertencia

Al modificar la instrucción Tool se efectúa un salto en la trayectoria cartesiana del TCP. Si el contador de programa de la unidad de mando manual está posicionado de manera que puede saltar una instrucción Tool, ello puede provocar reacciones incontroladas durante el movimiento cartesiano.

14.2.1 Efecto de los datos TCP

Los datos TCP se activan con una instrucción en el programa FTL y se leen en el avance de proceso del intérprete. Estos datos TCP actuales se incluyen en el cálculo de la planifi-cación de trayectoria de las instrucciones de movimiento siguientes. A continuación se presenta un ejemplo en el que se describe el comportamiento de los datos de herramienta aplicados a un eje giratorio neumático.

14. Herramientas

132 Festo GDCP-CMXR-SW-ES es 1205c

Ejemplo:

Un sistema de manipulación tiene un eje giratorio neumático en la brida de herramienta. Con ayuda de este eje puede girarse la herramienta a una posición fija. Este movimiento giratorio modifica la orientación de la herramienta. Para que el control multieje CMXR pueda calcular un movimiento cartesiano en el espacio teniendo en cuenta la posición del TCP debe indicarse la orientación nueva después del movimiento giratorio.

Las dos orientaciones posibles de la herramienta limitan los TCP a dos y, por tanto, a dos conjuntos de datos: tool1 y tool2.

Orientación 1, herramienta vertical:

La longitud de la herramienta vertical discurre a lo largo del eje Z del sistema de

coordenadas de herramienta. De este modo, el TCP sólo dispone de una traslación en sentido del eje Z, las indicaciones de orientación son 0.

Datos de herramienta para tool1:

X = 0 Desplazamiento a lo largo del eje X

Y = 0 Desplazamiento a lo largo del eje Y

Z = Longitud de herramienta Desplazamiento a lo largo del eje Z

A = 0 Orientación según método de Euler, rotación alrededor del eje Z

B = 0 Orientación según método de Euler, rotación alrededor del eje Y rotado

C = 0 Orientación según método de Euler, rotación alrededor del eje Z rotado

X

Z

Pinza por vacío

Y

Eje de rotación Longitud de herramienta

TCP

14. Herramientas

Festo GDCP-CMXR-SW-ES es 1205c 133

Orientación 2, herramienta girada:

Con el movimiento giratorio, el TCP se desplaza hacia un lado. La orientación de la herramienta se ha modificado.

La cinemática de la figura es de sistema cartesiano. En éste, la posición del sistema de coordenadas cartesiano de los ejes de base X, Y y Z coinciden con el sistema de coordenadas de herramienta cartesianas. Si se aplica la regla de la mano derecha para determinar la orientación, la herramienta gira alrededor del eje Y en dirección positiva.

Datos de herramienta para tool2:

X = Longitud x sin(30°) Desplazamiento a lo largo del eje X

Y = 0 Desplazamiento a lo largo del eje Y

Z = Longitud x cos(30°) Desplazamiento a lo largo del eje Z

A = 0 Orientación según método de Euler, rotación alrededor del eje Z

B = 30 Orientación según método de Euler, rotación alrededor del eje Y rotado

C = 0 Orientación según método de Euler, rotación alrededor del eje Z rotado

Ejemplo de programa:

Nuestra cinemática cartesiana debe desplazarse con la herramienta vertical de una posición 1 a otra 2. A continuación, el eje giratorio gira la herramienta. Ahora, la herramienta girada debe desplazarse a la posición 2.

Desplazamiento de pos1 a pos2:

Tool(tool1)

Lin(pos1)

Lin(pos2)

X

Z

Pinza por vacío

Y

Longitud de herramienta

Eje de rotación

TCP

14. Herramientas

134 Festo GDCP-CMXR-SW-ES es 1205c

En el caso de las instrucciones de desplazamiento cartesiano de pos1 a pos2, el control tiene en cuenta automáticamente los datos activos de herramienta tool1.

Giro del eje giratorio:

:

Tool(tool1)

Lin(pos1)

Lin(pos2)

CALL Rotate() // Llamar subprograma

:

El movimiento giratorio provoca que el Tool Center Point (TCP) se desplace hacia arriba. Debido al eje neumático, el control no puede efectuar automáticamente movimientos de compensación. Para aproximarse a la posición 2 debe definirse la orientación nueva de la herramienta.

X

Z Y

Pieza pos1 pos2

Z

X

Y

Pieza pos1

pos2

Z

14. Herramientas

Festo GDCP-CMXR-SW-ES es 1205c 135

Nuevo desplazamiento desde pos2 con tool2:

:

Tool(tool1)

Lin(pos1)

Lin(pos2)

CALL Rotate() // Llamar subprograma

Tool(tool2)

Lin(pos2)

:

La segunda vez que se efectúa el desplazamiento desde la posición 2 se orienta el TCP a la

posición 2 con sus datos nuevos. Según el caso, puede realizarse un movimiento de compensación con todos los ejes como máximo.

Nota

Si se utiliza un eje giratorio eléctrico procesado como grado de libertad de movimiento en la cinemática cartesiana, no es necesario modificar la orientación de herramienta al contrario que si se utiliza el eje giratorio neumático.

Con el eje giratorio eléctrico se programa la orientación deseada dentro de una instrucción de desplazamiento.

A continuación, el control CMXR calcula automáticamente la posición de los ejes teniendo en cuenta la orientación programada.

X

Y

Pieza

pos2

Z Z

Movimiento de compensación

15. Modo de la cinemática

136 Festo GDCP-CMXR-SW-ES es 1205c

15. Modo de la cinemática

Debido a la construcción mecánica de las cinemáticas se dan posiciones en las que solo se puede alcanzar una parte de la zona de trabajo. En caso de este tipo de posición se habla de modo de la cinemática. Estas posiciones o modos pueden solaparse y se puede avanzar hasta algunas de ellas también desde diferentes modos.

Nota

Si una cinemática dispone de un solo modo, este está activo automáticamente. El ajuste y consideración de los modos en el programa FTL no es relevante para estas cinemáticas.

Si una cinemática dipone de varios modos, estos deben indicarse durante la programación. Esto es necesario para que el control pueda calcular una posición inequívoca de la cinemática.

Ejemplo con una cinemática Scara:

En función de la definición del modo de la cinemática “ElbowRight” o “ElbowLeft” cambia el espacio operativo de la cinemática. El control desplaza la cinemática automáticamente

dentro de la posición definida. Todos los puntos cero se mantienen siempre.

La indicación del modo se realiza con el macro SetRobotMode en el programa FTL. Todas las posiciones cartesianas se refieren a esta indicación.

El modo de la cinemática es solo para movimientos de interpolación cartesianos como p. ej. movimientos lineales o circulares. Para movimientos punto a punto el modo es irrelevante.

Atención

La modificación del modo de la cinemática debe realizarse mediante un movimiento PTP (punto a punto). Una interpolación cartesiana, p. ej. lineal, no es posible. Atención: durante un movimiento PTP pueden generarse trayectorias y valores dinámicos inesperados en la herramienta.

Modo de la cinemática “ElbowRight”

Modo de la cinemática “ElbowLeft”

15. Modo de la cinemática

Festo GDCP-CMXR-SW-ES es 1205c 137

15.1 Clasificación de los modos de cinemática, variables

El modo de la cinemática se determina con 3 parámetros para cada articulación de la cinemática:

Muñeca (Wrist),

codo (Elbow) y

hombro (Shoulder)

Para leer o guardar el modo de la cinemática en el programa se utilizan 3 tipos de variables. Las variables son enumeraciones que puede describirse con nombres fijos.

Cada articulación de la cinemática ofrece diferentes posibilidades de ajuste que están representadas en la siguiente tabla:

Articulación Significado Tipo de variable Enumeración,

posibilidades

Wrist Posición de la muñeca WRISTMODE WristNotSet,

WristFlip

WristNoFlip

Elbow Posición del codo ELBOWMODE ElbowNotSet,

ElbowLeft,

ElbowRight

Hombro Posición del hombro SHOULDERMODE ShoulderNotSet,

ShoulderLeft,

ShoulderRight

Tabla 15.1 Clasificación de los modos

Las opciones ajustables dependen de la cinemática empleada.

15. Modo de la cinemática

138 Festo GDCP-CMXR-SW-ES es 1205c

15.2 Ajuste del modo de la cinemática <SetRobotMode>

Con el macro SetRobotMode se define el modo de la cinemática para las instrucciones de movimiento cartesianas que siguen en el programa FTL.

Sintaxis

SetRobotMode (<Wrist> : WRISTMODE, <Elbow> : ELBOWMODE, <Shoulder> : SHOULDERMODE)

Parámetros Significado Unidad

Wrist Modo de los ejes manuales Enumeración WRISTMODE

Elbow Modo del codo Enumeración ELBOWMODE

Hombro Modo del hombro Enumeración SHOULDERMODE

Tabla 15.2 Parámetros de la instrucción SetRobotMode

Las opciones de ajuste de los parámetros se encuentran en el capítulo 15.1 Clasificación de los modos de cinemática, variable de la página 137.

Ejemplo:

:

// activar el modo del codo derecha

SetRobotMode(WristNoMode, ElbowRight, ShoulderNoMode)

// Movimiento PTP en la zona de trabajo del modo ElbowRight

Ptp(StartPosModeRight)

// movimientos cartesianos dentro del modo

Lin(pos1)

Lin(pos2)

:

15. Modo de la cinemática

Festo GDCP-CMXR-SW-ES es 1205c 139

15.3 Lectura del modo de la cinemática <GetRobotMode>

El modo de la cinemática se determina en el programa FTL con el macro GetRobotMode. Con este macro se lee la posición de las articulaciones de la mano, del codo y del hombro. Los valores leídos se emiten las variables transferidas.

Sintaxis

GetRobotMode (OPT <Wrist> : WRISTMODE,

OPT <Elbow> : ELBOWMODE,

OPT <Shoulder> : SHOULDERMODE)

Parámetros Significado Unidad

Wrist Modo de los ejes manuales Enumeración WRISTMODE

Elbow Modo del codo Enumeración ELBOWMODE

Hombro Modo del hombro Enumeración SHOULDERMODE

Tabla 15.3 Parámetros de la instrucción GetRobotMode

Las opciones de ajuste de los parámetros se encuentran en el capítulo 15.1 Clasificación de los modos de cinemática, variable de la página 137.

En base a las informaciones leídas es posible, por ejemplo, tomar medidas para posicionar

la cinemática en un modo especial.

El siguiente ejemplo determina el modo del codo en un robot Scara. A causa de los obstáculos en el espacio operativo se requiere el modo ElbowRight.

Ejemplo:

:

// lectura del modo del codo, otros parámetros son opcionales

GetRobotMode(, modeElbow)

IF modeElbow = ElbowLeft THEN

// desplazar el eje Z hacia arriba

MoveAxisCart(Z, 0)

// activar el modo del codo derecha

SetRobotMode(WristNoMode, ElbowRight, ShoulderNoMode)

// Movimiento PTP en la zona de trabajo del modo ElbowRight

Ptp(StartPosModeRight)

END_IF

15. Modo de la cinemática

140 Festo GDCP-CMXR-SW-ES es 1205c

// inicio de los movimientos cartesianos en el nuevo modo

Lin(pos1)

Lin(pos2)

:

15.4 Cambio del modo de la cinemática

Para que el control pueda calcular una posición cartesiana en necesaria la información del modo. Las instrucciones de desplazamiento cartesianas, como interpolaciones lineales o circulares, solo son posibles dentro del modo activo. El cambio entre los modos es posible

únicamente con un macro punto a punto. Antes de cada instrucción de desplazamiento cartesiano se compara el modo actual, en el que se encuentra la cinemática, con el modo activado por macro. Si los modos no coinciden, se emite un mensaje de error.

Ejemplo:

En el espacio operativo de un robot SCARA se encuentran 2 piezas sobre las que se debe aplicar pegamento. Sin embargo, en un modo el SCARA solo puede alcanzar una pieza. Para llegar a la segunda se debe llevar a cambio un cambio de modo. Para este cambio de modo se define una posición en el espacio operativo del modo correspondiente, que avanzará hasta el cambio de modo.

:

// activar el modo del codo derecha

SetRobotMode(WristNoMode, ElbowRight, ShoulderNoMode)

// Movimiento PTP en la zona de trabajo del modo ElbowRight

Ptp(PosModeRight)

// aplicar objeto 1

SetRefSys(Object1)

CALL ApplyGlue

Modo de la cinemática “ElbowRight”

Modo de la cinemática “ElbowLeft”

PosModeRight PosModeLeft

15. Modo de la cinemática

Festo GDCP-CMXR-SW-ES es 1205c 141

Lin(SafePosObject1)

// activar el modo del codo izquierda

SetRobotMode(WristNoMode, ElbowLeft, ShoulderNoMode)

// Movimiento PTP en la zona de trabajo del modo ElbowLeft

Ptp(PosModeLeft)

// aplicar objeto 2

SetRefSys(Object2)

CALL ApplyGlue

Lin(SafePosObject2)

:

16. Interface PROFIBUS

142 Festo GDCP-CMXR-SW-ES es 1205c

16. Interface PROFIBUS El CMXR puede ser controlado por una unidad de control de nivel superior (PLC/IPC) mediante la interface PROFIBUS. Además, a través de ella pueden escribirse y leerse datos en forma de variables. Todos estos datos son datos compartidos de sistema y están a disposición de todos los programas FTL. La comunicación con la unidad de control de nivel superior se efectúa cíclicamente en el ciclo de actualización de PROFIBUS.

Con el nuevo arranque del sistema se ajustan todos los valores a cero. La unidad de control de nivel superior debe enviar los datos necesarios para procesar los programas antes de arrancar el programa.

Nota

Si en un programa se necesitan datos coherentes, es importante copiarlos como datos locales antes de su procesamiento.

Nota

Los datos de interface no se guardan en el buffer y todos tienen el valor cero cuando se arranca el sistema de nuevo. Los datos necesarios para el procesamiento deben escribirse antes de arrancar.

16. Interface PROFIBUS

Festo GDCP-CMXR-SW-ES es 1205c 143

Indicaciones sobre el procesamiento de señales

Las variables FTL de la interface PLC tratadas en los siguientes capítulos se calculan, como otras variables, siempre en el cálculo por adelantado (avance de proceso) del programa FTL. Si es necesario ejecutar variables durante la ejecución de la línea de programa activa (ejecución principal), debe tomarse una serie de medidas adicionales. Una posibilidad consiste en utilizar la instrucción DO.

La siguiente gráfica explica las diferencias que existen en el procesamiento de señales:

16.1 Entradas y salidas booleanas, plc_InBool, plc_OutBool

La interface dispone de 16 señales de entrada y salida digitales que en adelante se verán siempre desde la perspectiva del CMXR. Las señales están disponibles en forma de

variable booleana en el control. Estas señales booleanas se intercambian cíclicamente con la unidad de control de nivel superior.

Nota

Las variables booleanas se transmiten automáticamente a la unidad de control de nivel superior o son leídas por dicha unidad a través del ciclo de PROFIBUS.

Las variables booleanas están guardadas en una matriz a la que se accede a través de los índices 0 a 15.

Lin(pos1)

Lin(pos2)

Lin(pos3)

Lin(pos4)

Lin(pos5)

plc_Dint[1] := 2

Lin(pos6)

Lin(pos7)

Lin(pos8)

Lin(pos9)

Ejecución principal

Avance

Lin(pos1)

Lin(pos2)

Lin(pos3)

Lin(pos4)

Lin(pos5) DO plc_Dint[1] := 1

Lin(pos6)

Lin(pos7) DO plc_DInt[3] := 2

Lin(pos8)

Lin(pos9)

Lin(pos10)

Ejecución principal

Avance

La variable se ejecuta en el avance de proceso

Uso de la instrucción DO, la variable se procesa en la ejecución principal

16. Interface PROFIBUS

144 Festo GDCP-CMXR-SW-ES es 1205c

Sintaxis

plc_InBool [ <Arrayindex> ] : BOOL

plc_OutBool [ <Arrayindex> ] : BOOL

En las variables de matriz plc_InBool están guardadas todas las señales de entrada. La variable de matriz plc_OutBool contiene todos los datos de salida.

Ejemplo:

:

plc_OutBool[9] := FALSE // Bit 9 a PLC en FALSE

IF plc_InBool[5] THEN // Comprobar bit 5 de PLC

Lin(pos1)

Lin(pos2)

END_IF

plc_OutBool[9] := TRUE // Bit 9 a PLC en TRUE

:

16.2 Variables enteras de 32 bits, plc_Dint

La interface dispone de 256 variables enteras del tipo DINT, que comprende 32 bits. Estas variables no se someten a un intercambio de datos cíclico y el control externo puede escribirlas o leerlas según sea necesario.

Nota

Las variables enteras no son leídas por la unidad de control de nivel superior ni se envían a dicha unidad automáticamente. Si es necesario deberán ser enviadas a la unidad de control de nivel superior o ser leídas por ésta.

Las variables enteras están guardadas en una matriz a la que se accede a través de los índices 0 a 255.

Sintaxis

plc_Dint [ <Arrayindex> ] : DINT

16. Interface PROFIBUS

Festo GDCP-CMXR-SW-ES es 1205c 145

Ejemplo:

:

IF plc_Dint[3] = 13 THEN

:

:

END_IF

16.3 Posiciones, plc_AxisPos, plc_CartPos

La interface soporta dos tipos de datos de posición. Desde el control externo es posible enviar posiciones de eje y posiciones cartesianas al control multieje CMXR. El número máximo es de 256 posiciones de eje y 256 posiciones cartesianas. Estas variables no se someten a un intercambio de datos cíclico y el control externo puede escribirlas o leerlas según sea necesario.

Nota

Las variables de posición no son leídas por la unidad de control de nivel superior ni se envían a dicha unidad automáticamente. Si es necesario deberán ser enviadas por el control externo o ser leídas por éste.

Las variables de posición están guardadas en matrices. El acceso a ellas se realiza a través de los índices 0 a 255.

Nota

plc_AxisPos [ <Arrayindex> ] : AXISPOS

plc_CartPos [ <Arrayindex> ] : CARTPOS

La variable de interface plc_AxisPos contiene 256 posiciones del tipo de datos AXISPOS; la variable plc_CartPos contiene 256 posiciones del tipo de datos CARTPOS.

Ejemplo:

:

Ptp(plc_AxisPos[17])

Lin(plc_AxisPos[18])

Lin(plc_AxisPos[19])

Lin(plc_CartPos[1])

:

16. Interface PROFIBUS

146 Festo GDCP-CMXR-SW-ES es 1205c

16.4 Sistemas de referencia, plcRefSys

A través de la interface externa puede definirse un máximo de 16 sistemas de referencia. Estas variables son del tipo REFSYSDATA y pueden utilizarse con la instrucción SetRefSys.

Estas variables no se someten a un intercambio de datos cíclico y el control externo puede escribirlas o leerlas según sea necesario.

Nota

Los sistemas de referencia no son leídos por la unidad de control de nivel superior ni se envían a dicha unidad automáticamente. Si es necesario deberán ser enviadas por el control externo o ser leídas por éste.

Los sistemas de referencia están guardados en una matriz a la que se accede a través de los índices 0 a 15.

Sintaxis

plc_RefSys [ <Arrayindex> ] : REFSYSDATA

El tipo de datos REFSYSDATA permite relacionar un sistema de referencia con otro de forma aditiva. La interface permite esta operación, pero sólo dentro de la propia interface, es decir, no se puede activar ninguna referencia a los sistemas de referencia ya existentes

en el sistema. La referencia a otro sistema de referencia se basa en una asignación numérica predefinida de 0 a 15 efectuada por el control externo. Si el valor establecido es -1, se activa la referencia respecto al sistema de coordenadas universales de la cinemática.

Nota

Los sistemas de referencia que se establecen a través de la interface externa sólo pueden enlazarse dentro de los sistemas de referencia de la interface. No es posible referenciar a un sistema de referencia definido fuera de la interface.

Ejemplo:

:

Lin(pos2)

SetRefSys(plc_RefSys[3])

Lin(pos3)

Lin(pos4)

:

16. Interface PROFIBUS

Festo GDCP-CMXR-SW-ES es 1205c 147

16.5 Pausa programada <ProgHold>

Esta instrucción opera en combinación con la señal HALTENA de la interface PLC. Es ade-cuada para fines de prueba o puesta en funcionamiento y se puede agregar a cualquier línea de programa para detenerse en ella a petición del programa.

Si la señal HALTENA está activada en la interface, es decir, si tiene el estado TRUE, el programa de movimientos se detiene al llamar la instrucción ProgHold. Solamente se detendrá el programa en el que se encuentra la instrucción ProgHold. Los demás programas, como los programas paralelos, continuarán ejecutándose. Si el PLC asigna a la señal HALTENA el valor de estado FALSE, el programa detenido continuará ejecutándose.

Nota

Si con la instrucción ProgHold se detienen varios programas (p. ej. programas paralelos), el estado de señal FALSE hará que todos ellos vuelvan a ponerse en marcha en conjunto. No es posible poner en marcha programas específicos seleccionados de entre aquellos que se han detenido.

Sintaxis

ProgHold ( )

Para llamar a la instrucción no se requiere ningún parámetro.

Ejemplo:

:

OvlVel(100) // Avance aproximado completo

Lin(pos1)

Lin(pos2)

ProgHold() // Pausa programada

Lin(pos3)

Lin(pos4)

ProgHold() // Pausa programada

Lin(pos5)

:

El programa del ejemplo se aproxima a diferentes posiciones estando ajustado un avance aproximado por velocidad del 100%. Si la señal de la pausa programada está activada, el programa se para en este punto. Con ello se obtiene el siguiente desarrollo de velocidad:

16. Interface PROFIBUS

148 Festo GDCP-CMXR-SW-ES es 1205c

Desarrollo con pausa programada:

Desarrollo sin pausa programada:

pos2 pos1 pos3 pos4 pos5

Velocidad

Tiempo

Tiempo entre la parada y la reanudación de la marcha

pos2 pos1 pos3 pos4 pos5

Velocidad

Tiempo

17. Interface FTL con PLC interno (sólo para controlador multieje con CoDeSys)

Festo GDCP-CMXR-SW-ES es 1205c 149

17. Interface FTL con PLC interno (sólo para controlador multieje con CoDeSys)

Para poder crear también procesos individuales en paralelo a los programas de movi-mientos, el control CMXR posee un PLC CoDeSys integrado, que permite una programación según IEC 61131-3. La descripción de rendimiento que figura en el manual del sistema del correspondiente control CMXR detalla en qué medida se admite esta función.

Este capítulo describe la interface entre el control de movimientos y procesos desde el punto de vista de la programación FTL. Esta interface está caracterizada por variables FTL, que pueden ser descritas y leídas por el PLC CoDeSys.

17.1 Variables del sistema FTL

Todas las variables FTL necesarias para la interface ya están almacenadas como variable del sistema y están disponibles de inmediato. Las variables existen como tipo de datos básicos BOOL, DWORD, DINT y REAL, así como variable de posición de los tipos AXISPOS y CARTPOS.

Todas las variables están caracterizadas como ARRAY con un tamaño de 256 elementos. Para facilitar el uso de los datos, para cada tipo de datos existe una matriz de entrada y otra de salida. Desde el punto de vista de la programación FTL, esta denominación es:

- Los datos de entrada son datos descritos por el PLC (complemento de nombre In).

- Los datos de salida son datos leídos por el PLC (complemento de nombre Out).

Nota

Los datos que espera el PLC deben extraerse de los datos de en-trada. Los datos que se envían al PLC deben escribirse siempre en los datos de salida. Si se confunden las áreas de datos, se produ-cirán estados de programa erróneos.

La siguiente tabla muestra la extensión de las variables de interfaz FTL disponibles:

Tipo de datos Datos de entrada Datos de salida

BOOL plc_InBool : ARRAY[256] OF BOOL plc_OutBool : ARRAY[256] OF BOOL

DINT plc_InDint : ARRAY[256] OF DINT plc_OutDint : ARRAY[256] OF DINT

REAL plc_InReal : ARRAY[256] OF REAL plc_OutReal : ARRAY[256] OF REAL

DWORD plc_InDword : ARRAY[256] OF DWORD plc_OutDword : ARRAY[256] OF DWORD

AXISPOS plc_InAxisPos : ARRAY[256] OF AXISPOS plc_OutAxisPos : ARRAY[256] OF AXISPOS

CARTPOS plc_InCartPos : ARRAY[256] OF CARTPOS plc_OutCartPos : ARRAY[256] OF CARTPOS

Tabla 17.1 Variables de sistema FTL interfaz a PLC

17. Interface FTL con PLC interno (sólo para controlador multieje con CoDeSys)

150 Festo GDCP-CMXR-SW-ES es 1205c

17.1.1 Ejemplo con variables del sistema

Un programa FTL puede procesar un tipo A y B. Estos son seleccionados mediante una especificación a través del PLC. Al terminar, el programa FTL envía un acuse de recibo al PLC. Además las variables de interfaz FTL se clasifican de la siguiente manera:

- plc_OutBool[0] Mensaje de respuesta cuando el programa termina

- plc_InBool[0] Señal de inicio para ejecución del programa

- plc_InBool[1] Selección del tipo de pieza A

- plc_InBool[2] Selección del tipo de pieza B

Para que la ejecución del programa funcione de manera segura, el PLC debe garantizar que antes de la señal de inicio se haya realizado correctamente la selección de las piezas

mediante las dos señales plc_InBool[1] y plc_InBool[2].

:

OvlVel(100) // Avance aproximado completo

Lin(Home)

plc_OutBool[0] := FALSE // Confirmación de tareas resueltas

= FALSE

WAIT plc_InBool[0] // Esperar a señal de inicio

IF plc_InBool[1] THEN // Procesar pieza A

CALL PartTypeA

ELSIF plc_InBool[2] THEN // Procesar pieza B

CALL PartTypeB

END_IF

plc_OutBool[0] := TRUE // Confirmación de tareas resueltas

= TRUE

Lin(Home)

:

La instrucción WAIT detiene el cálculo por adelantado del programa hasta que la señal plc_InBool[0] presenta el estado TRUE.

Nota

El programa FTL siempre se calcula por adelantado. Esto también es aplicable a todas las variables de interface programadas. Por este motivo, desde el PLC debe procurarse que todos los datos necesarios estén a disposición del programa FTL en el momento adecuado. De ser necesario, deben implementarse medidas como, p. ej., esperar a datos especiales y, de este modo, detener el cálculo por adelantado.

17. Interface FTL con PLC interno (sólo para controlador multieje con CoDeSys)

Festo GDCP-CMXR-SW-ES es 1205c 151

17.1.2 Ejemplo con variables de sistema e instrucción MAP

Las variables de sistema poseen nombres establecidos. Para asignar nombres convenientes a las señales de interfaz, definidos libremente, se utiliza la instrucción MAP. Con la instrucción MAP se crean referencias que se vinculan entonces a las variables propiamente dichas.

De forma análoga al ejemplo anterior:

Variable FTL:

// Declaración y vinculación de las señales a cada variable

CycleFinished : MAPTO BOOL := MAP(plc_OutBool[0])

StartFromPlc : MAPTO BOOL := MAP(plc_InBool[0])

JobPartA : MAPTO BOOL := MAP(plc_InBool[1])

JobPartB : MAPTO BOOL := MAP(plc_InBool[2])

Programa FTL:

:

OvlVel(100) // Avance aproximado completo

Lin(Home)

CycleFinished := FALSE // Confirmación de tareas resueltas

= FALSE

WAIT StartFromPlc // Esperar a señal de inicio

IF JobPartA THEN // Procesar pieza A

CALL PartTypeA

ELSIF JobPartB THEN // Procesar pieza B

CALL PartTypeB

END_IF

CycleFinished := TRUE // Confirmación de tareas resueltas

= TRUE

Lin(Home)

:

Nota

Gracias al uso de variables de referencia y de la instrucción se mejora la lectura de los programas.

18. Sistema de comunicación

152 Festo GDCP-CMXR-SW-ES es 1205c

18. Sistema de comunicación Desde el programa de movimientos pueden generarse mensajes. Se distinguen los siguientes tipos de mensaje:

- Información

- Advertencia

- Error

Estos mensajes se introducen en la memoria de mensajes del control y se archivan como corresponde. Los mensajes se borran acusando recibo de ellos en la unidad de mando manual o a través de un control externo.

Figura de la memoria de mensajes en la unidad de mando manual:

18.1 Textos de mensaje

La programación en FTL (Festo Teach Language) permite generar mensajes de información, advertencia y error desde el programa de movimientos. El propio usuario define libre-mente los textos de mensaje como cadena de caracteres (STRING). Esta cadena de caracteres también puede contener entradas variables en forma de dos parámetros como máximo (p. ej., DINT, REAL, STRING, BOOL). Los dos parámetros opcionales se colocan introduciendo un símbolo de porcentaje y un número en el texto de mensaje.

%1 equivale al primer parámetro opcional

%2 equivale al segundo parámetro opcional

18. Sistema de comunicación

Festo GDCP-CMXR-SW-ES es 1205c 153

Si se indican tipos, como posiciones de eje, sólo se inserta el nombre de variable en la

cadena de caracteres. Los tipos de datos estructurados no pueden representarse en un texto de mensaje.

Nota

El contenido de las variables se inserta en el texto de mensaje al transferir los tipos de variable DINT, REAL y STRING. El tipo de variable BOOL se inserta en el texto de mensaje dependiendo de si el estado es TRUE o FALSE.

Ejemplo:

En un programa se crean dos variables con valores asignados. Estos valores se emiten con la instrucción SetInfo.

Variables:

param1 : DINT := 7

param2 : REAL := 3.48

Código de programa:

SetInfo(“Sensor %1, pressure %2 bar“, param1, param2)

Se visualiza el siguiente texto informativo: “Sensor 7, pressure 3,48 bar”.

18. Sistema de comunicación

154 Festo GDCP-CMXR-SW-ES es 1205c

18.2 Información <SetInfo>

La instrucción SetInfo coloca un mensaje de información en el sistema de comunicación.

Sintaxis

SetInfo( <text> : STRING,

OPT <param1> : ANY,

OPT <param2> : ANY)

Parámetros Significado Unidad

text Texto del mensaje de información STRING

param1 1. parámetro posible ANY

Param2 2. parámetro posible ANY

Tabla 18.1 Parámetros de la instrucción SetInfo

La composición del texto de mensaje se describe en el capítulo 18.1 Textos de mensaj de la página 152.

Un mensaje de información se marca con el símbolo en la memoria de errores del control multieje CMXR.

Nota

Un mensaje de información no influye en el movimiento de ningún modo. Sólo sirve para informar.

Ejemplo:

pressure := Sensor.Read(); // Leer un valor de presión

cycle := cycle + 1 // Contar ciclo

SetInfo ("Cycle %1 finished, Value %2", cycle, pressure)

Indicación en la unidad de mando manual:

18. Sistema de comunicación

Festo GDCP-CMXR-SW-ES es 1205c 155

18.3 Advertencia <SetWarning>

La instrucción SetWarning coloca un mensaje de advertencia en el sistema de

comunicación.

Sintaxis

SetWarning( <text> : STRING,

OPT <param1> : ANY,

OPT <param2> : ANY)

Parámetros Significado Unidad

text Texto del mensaje de advertencia STRING

param1 1. parámetro posible ANY

Param2 2. parámetro posible ANY

Tabla 18.2 Parámetros de la instrucción SetWarning

La composición del texto de mensaje se describe en el capítulo 18.1 Textos de mensaj de la página 152.

Un mensaje de advertencia se marca con el símbolo en la memoria de errores del

control multieje CMXR.

Nota

Un mensaje de advertencia no influye en el movimiento de ningún modo. Sólo sirve para informar.

Ejemplo:

pressure := Sensor.Read(); // Leer un valor de presión

cycle := cycle + 1 // Contar ciclo

SetWarning("Cycle %1 finished, Value %2",cycle, pressure)

Indicación en la unidad de mando manual:

18. Sistema de comunicación

156 Festo GDCP-CMXR-SW-ES es 1205c

18.4 Mensaje de error <SetError>

La instrucción SetError coloca un mensaje de error en el sistema de comunicación. Esta

instrucción influye en el procesamiento del programa, parándolo. Los movimientos que se estén efectuando se detienen. Acusando recibo del mensaje de error se puede reanudar el programa. Para ello se deben habilitar los controladores del motor y se debe iniciar nuevamente el programa.

Sintaxis

SetError( <text> : STRING,

OPT <param1> : ANY,

OPT <param2> : ANY)

Parámetros Significado Unidad

Text Texto del mensaje de error STRING

param1 1. parámetro posible ANY

Param2 2. parámetro posible ANY

Tabla 18.3 Parámetros de la instrucción SetError

Un mensaje de error se marca con el símbolo en la memoria de errores del control

multieje CMXR.

Nota

La edición de un mensaje de error provoca la detención del movimiento. La cinemática no puede continuar el recorrido hasta que se acuse recibo del mensaje de error.

Ejemplo:

pressure := Sensor.Read(); // Leer un valor de presión

cycle := cycle + 1 // Contar ciclo

SetError("Cycle %1 error, pressure %2", cycle, pressure)

Indicación en la unidad de mando manual:

18. Sistema de comunicación

Festo GDCP-CMXR-SW-ES es 1205c 157

Si aparece un mensaje de error, el texto de error se visualiza también en la cabecera de la unidad de mando manual. Además, el LED de error de la unidad de mando manual se ilumina en rojo.

19. Funciones

158 Festo GDCP-CMXR-SW-ES es 1205c

19. Funciones

19.1 Lectura de la posición actual <ReadActualPos>

Lectura de la posición actual de la cinemática.

Sintaxis

ReadActualPos (<Pos> : POSITION)

La posición actual del robot se escribe en la variable transferida. Si la variable transferida

es del tipo CARTPOS, la posición se guarda como valor cartesiano. Si se transfiere una variable del tipo AXISPOS, la posición se guarda en coordinadas de ejes.

Parámetro Significado Unidad

Pos Variable de destino de la posición

leída

AXISPOS o CARTPOS

Tabla 19.1 Parámetro de la instrucción ReadActualPos

Atención

Un valor de posición guardado en una variable sólo se conserva mientras el programa o el proyecto está cargado. Los valores de variable no se guardan en el archivo de datos de la tarjeta de memoria. Los valores se pierden cuando se deselecciona el programa/proyecto. Para guardar la posición puede utilizarse la instrucción SavePosition.

Ejemplo:

El programa del ejemplo lee la posición actual, recorre los movimientos programados en las instrucciones y, al final, regresa a la posición leída.

Variable:

startPos : AXISPOS := (0, 0, 0, 0, 0, 0, 0, 0, 0)

axis0 : AXISPOS := (0, 0, 0, 0, 0, 0, 0, 0, 0)

axis1 : AXISPOS := (60, -120, 0, 0, 0, 0, 0, 0, 0)

axis2 : AXISPOS := (-120, -120, -250, 0, 0, 0, 0, 0, 0)

19. Funciones

Festo GDCP-CMXR-SW-ES es 1205c 159

Programa:

ReadActualPos(startPos)

PTP(axis0)

PTP(axis1)

PTP(axis2)

PTP(startPos)

19.2 Lectura de la posición de destino <ReadTargetPos>

Lectura de la posición de destino programada de la cinemática.

Sintaxis

ReadTargetPos (<Pos> : POSITION)

La posición de destino actual programada del robot se escribe en la variable transferida. Si la variable transferida es del tipo CARTPOS, la posición se guarda como valor cartesiano. Si se transfiere una variable del tipo AXISPOS, la posición se guarda en coordinadas de ejes.

Parámetro Significado Unidad

Pos Variable de destino de la posición

leída

AXISPOS o CARTPOS

Tabla 19.2 Parámetro de la instrucción ReadTargetPos

Atención

Un valor de posición guardado en una variable sólo se conserva mientras el programa o el proyecto está cargado. Los valores no se guardan en el archivo de datos de la tarjeta de memoria. Los valores se pierden cuando se deselecciona el programa o proyecto. Para guardar la posición puede utilizarse la instrucción SavePosition.

19. Funciones

160 Festo GDCP-CMXR-SW-ES es 1205c

19.3 Memorización del valor de posición de manera permanente <SavePosition>

La instrucción FTL guarda un valor de posición de manera permanente en la tarjeta de memoria.

Sintaxis

SavePosition (<Pos> : POSITION)

Con la instrucción SavePosition se guardan los valores de la variable <Pos> en el archivo de

datos de la tarjeta de memoria. De este modo, la posición puede restablecerse al volver a arrancar el control.

Parámetro Significado Unidad

Pos Posición que se desea guardar AXISPOS o CARTPOS

Tabla 19.3 Parámetro de la instrucción SavePosition

Atención

La vida útil de la tarjeta de memoria se reduce si se utiliza con frecuencia para escribir posiciones. La instrucción SavePosition no debe llamarse cíclicamente en ningún caso y puede utilizarse para realizar ajustes ocasionales de la aplicación.

19.4 Lectura de la fecha y hora del sistema <Time>

Lectura de la fecha y hora del sistema en segundos desde las 00:00 horas del 01.01.1970.

Sintaxis

(<valor de fecha y hora> : DINT) := Time ( )

Esta instrucción lee la fecha y hora del sistema del control y lo devuelve como valor DINT.

Ejemplo:

value := Time() // Leer la hora y la fecha actuales

del sistema

19. Funciones

Festo GDCP-CMXR-SW-ES es 1205c 161

19.5 Conversión de un valor de fecha y hora en texto <TimeToStr>

Conversión de un valor de fecha y hora en texto.

Sintaxis

(<cadena de fecha y hora> : STRING) := TimeToStr (OPT sysTime :

DINT)

Esta instrucción puede convertir la fecha y la hora (parámetro sysTime) en un texto con el

formato “DDD mon dd hh:mm:ss yyyy”. Sin el parámetro sysTime, la fecha y hora actuales del sistema se devuelven formateadas.

El parámetro sysTime indica la fecha y hora en segundos desde las 00:00 del 01.01.1970.

Parámetros:

Parámetro Significado Unidad

sysTime Indicación opcional, valor de fecha y

hora que debe convertirse

Segundos

Tabla 19.4 Parámetro de la función TimeStr

Ejemplo:

str_Time := TimeToStr() // Leer la hora y la fecha actuales

del sistema

Devolución:

str_Time = “Mon Feb 13 11:23:44 2006“

19. Funciones

162 Festo GDCP-CMXR-SW-ES es 1205c

19.6 Seno <SIN>, <ASIN>

La función seno establece la razón matemática entre un ángulo y los lados de un triángulo rectángulo.

Fórmula de seno:

sin(alfa) = cateto opuesto / hipotenusa

sin(alfa) = a / c

La indicación del ángulo se realiza en grados.

Sintaxis

(<valor de seno> : REAL) := SIN(<ángulo> : REAL)

Aplicación:

La función seno sirve para calcular tramos desconocidos en un triángulo rectángulo. El tra-mo desconocido se calcula conociéndose el ángulo y el cateto opuesto o la hipotenusa.

Si no se conoce el ángulo, el CMXR prepara la función arco seno. Esta función calcula el ángulo contenido, p. ej., alfa, a partir del cateto opuesto y de la hipotenusa.

Sintaxis

(<ángulo en grados> : REAL) := ASIN(<valor de seno>)

La indicación del ángulo se realiza en grados.

19. Funciones

Festo GDCP-CMXR-SW-ES es 1205c 163

Ejemplo:

a := 30 // Cateto opuesto

alpha := 23.5 // Ángulo alfa

c := a / SIN(alpha) // Cálculo de la hipotenusa

a : = 45.89 // Cateto opuesto

c := 145.67 // Hipotenusa

value := a / c

alpha := ASIN(value) // Cálculo del ángulo

19.7 Coseno <COS>, <ACOS>

La función coseno establece la razón matemática entre un ángulo y los lados de un triángulo rectángulo.

Fórmula de coseno:

cos(alfa) = cateto adyacente / hipotenusa

cos(alfa) = b / c

La indicación del ángulo se realiza en grados.

Sintaxis

(<valor de coseno> : REAL) := COS( <ángulo>)

Aplicación:

La función coseno sirve para calcular tramos desconocidos en un triángulo rectángulo. El tramo desconocido se calcula conociéndose el ángulo y el cateto adyacente o la hipotenusa.

Si no se conoce el ángulo, el CMXR prepara la función arco coseno. Esta función calcula el ángulo contenido, p. ej., alfa, a partir del cateto adyacente y de la hipotenusa.

19. Funciones

164 Festo GDCP-CMXR-SW-ES es 1205c

Sintaxis

(<ángulo en grados> : REAL) := ACOS(<valor de coseno>)

La indicación del ángulo se realiza en grados.

Ejemplo:

b := 30 // Cateto adyacente

alpha := 23.5 // Ángulo alfa

c := b / COS(alpha) // Cálculo de la hipotenusa

b := 45.89 // Cateto adyacente

c := 145.67 // Hipotenusa

value := b / c

alpha := ACOS(value) // Cálculo del ángulo

19. Funciones

Festo GDCP-CMXR-SW-ES es 1205c 165

19.8 Tangente <TAN>, <ATAN>

La función tangente establece la razón matemática entre un ángulo y los lados de un triángulo rectángulo.

Fórmula de tangente:

tan(alfa) = cateto opuesto / cateto adyacente

tan(alfa) = a / b

La indicación del ángulo se realiza en grados.

Sintaxis

(<valor de tangente> : REAL) := TAN( <ángulo>)

Aplicación:

La función tangente sirve para calcular tramos desconocidos en un triángulo rectángulo. El tramo desconocido se calcula conociéndose el ángulo y el cateto adyacente o el cateto opuesto.

Si no se conoce el ángulo, el CMXR prepara la función arco tangente. Esta función calcula el ángulo contenido, p. ej., alfa, a partir del cateto adyacente y del cateto opuesto.

Sintaxis

(<ángulo en grados> : REAL) := ATAN(<valor de tangente>)

La indicación del ángulo se realiza en grados.

19. Funciones

166 Festo GDCP-CMXR-SW-ES es 1205c

Ejemplo:

a := 30 // Cateto opuesto

alpha := 23.5 // Ángulo alfa

b := a / TAN(alpha) // Cálculo del cateto adyacente

a := 45.89 // Cateto opuesto

b := 145.67 // Cateto adyacente

value := a / b

alpha := ATAN(value) // Cálculo del ángulo contenido

19.9 Cotangente <COT>, <ACOT>

La función cotangente establece la razón matemática entre un ángulo y los lados de un triángulo rectángulo.

Fórmula de cotangente:

Cotan(alfa) = cateto adyacente / cateto opuesto

cotan(alfa) = b / a

La indicación del ángulo se realiza en grados.

Sintaxis

(<valor de cotangente> : REAL) := COT(<ángulo>)

Aplicación:

La función cotangente sirve para calcular tramos desconocidos en un triángulo rectángulo. El tramo desconocido se calcula conociéndose el ángulo y el cateto adyacente o el cateto opuesto.

Si no se conoce el ángulo, el CMXR prepara la función arco cotangente. Esta función calcula el ángulo contenido, p. ej., alfa, a partir del cateto adyacente y del cateto opuesto.

Sintaxis

(<ángulo en grados> : REAL) := ACOT(<valor de cotangente>)

La indicación del ángulo se realiza en grados.

19. Funciones

Festo GDCP-CMXR-SW-ES es 1205c 167

Ejemplo:

a := 30 // Cateto opuesto

alpha := 23.5 // Ángulo alfa

b := a * COT(alpha) // Cálculo del cateto adyacente

a := 45.89 // Cateto opuesto

b := 145.67 // Cateto adyacente

value := b / a

alpha := ACOT(value) // Cálculo del ángulo contenido

19.10 Tangente 2 <ATAN2>

Calcula el arco tangente con rango de + π a –π.

Sintaxis

(<argumento> : REAL) := ATAN2 (<y> : REAL, <x> : REAL)

19.11 Logaritmo <LN>

La función logaritmo calcula el logaritmo natural del argumento transferido.

Sintaxis

(<logaritmo natural> : REAL) := LN (<valor> : REAL)

19.12 Exponente <EXP>

La función exponencial calcula el valor e(x).

Sintaxis

(<resultado> : REAL) := EXP (<valor>:REAL)

19. Funciones

168 Festo GDCP-CMXR-SW-ES es 1205c

19.13 Valor absoluto <ABS>

La función valor absoluto devuelve el valor absoluto del valor REAL transferido. El valor devuelto es siempre positivo. Los números negativos se devuelven como valor absoluto (con signo positivo).

Sintaxis

(<valor absoluto> : REAL) := ABS (<valor> : REAL)

Ejemplo:

Level := 452.98

Level := ABS(Level) // Level tiene el valor absoluto 452.98

Level := -1056.61

Level := ABS(Level) // Level tiene el valor absoluto 1056.61

19.14 Raíz cuadrada <SQRT>

La función raíz halla el valor de la raíz cuadrada de una expresión.

Sintaxis

(<valor de raíz> : REAL) := SQRT (<valor> : REAL)

Ejemplo:

Cálculo de la longitud c en un triángulo rectángulo.

Teorema de Pitágoras:

C² = A² + B² o C = √(A² + B²)

Ejemplo de programa:

a := 152.67 // Longitud del cateto A

b := 63.12 // Longitud del cateto B

value := a * a + b * b

c := SQRT(value) // Cálculo de la hipotenusa

19. Funciones

Festo GDCP-CMXR-SW-ES es 1205c 169

19.15 Desplazamiento de bits <SHR>, <SHL>

Con las funciones SHR y SHL es posible desplazar bits de datos del tipo DWORD a la derecha (función SHR) y a la izquierda (función SHL). Los bits “sobrantes” desplazados a

un lado de la variable se descartan. Los bits del otro lado se rellenan con el valor “0”.

Sintaxis

(<variable> :DWORD) := SHR (<valor : DWORD>, <count> : DINT)

(<variable> :DWORD) := SHL (<valor : DWORD>, <count> : DINT)

Ejemplo:

Con la instrucción

Mask := SHL(Mask, 3)

el contenido de la variable Mask se desplaza 3 bits a la izquierda. Por la derecha se insertan 3 bits con el valor “0”.

Contenido de la variable:

1001 1111 0000 1100 1111 1111 1001 1100

Se obtiene el patrón de bits:

1111 1000 0110 0111 1111 1100 1110 0000

Con la instrucción

Mask := SHR(Mask, 3)

el contenido de la variable Mask se desplaza 3 bits a la derecha. Por la izquierda se insertan 3 bits con el valor “0”.

Contenido de la variable:

1001 1111 0000 1100 1111 1111 1001 1100

Se obtiene el patrón de bits:

0001 0011 1110 0001 1001 1111 1111 0011

19. Funciones

170 Festo GDCP-CMXR-SW-ES es 1205c

19.16 Rotación de bits <ROR>, <ROL>

Con las funciones ROR y ROL es posible rotar bits de datos del tipo DWORD a la derecha (función ROR) y a la izquierda (función ROL). Al rotar el patrón de bits, el bit que se pierde

se vuelve a insertar en el otro lado.

Sintaxis

(<variable> : DWORD) := ROR (<valor : DWORD>, <count> : DINT)

(<variable> : DWORD) := ROL (<valor : DWORD>, <count> : DINT)

Ejemplo:

Con la instrucción

Mask := ROL(Mask, 4)

el contenido de la variable Mask gira 4 bits a la izquierda. En el lado derecho se insertan de nuevo los 4 bits.

Contenido de la variable:

1011 1111 0110 1001 0011 000 1001 1010

Se obtiene el patrón de bits:

1111 0110 1001 0011 000 1001 1010 1011

Con la instrucción

Mask := ROR(Mask, 4)

el contenido de la variable Mask gira 4 bits a la derecha. En el lado izquierdo se insertan de nuevo los 4 bits.

Contenido de la variable:

1011 1111 0110 1001 0011 000 1001 1010

Se obtiene el patrón de bits:

1010 1011 1111 0110 1001 0011 000 1001

19. Funciones

Festo GDCP-CMXR-SW-ES es 1205c 171

19.17 Conversión de un valor en una cadena <STR>

Convierte cualquier tipo de datos en una cadena de caracteres.

Sintaxis

(<variable> : STRING) := STR (<valor> : ANY)

Ejemplo:

Con la instrucción STR se convierte el valor de la variable Real1 en una cadena.

Real1 := 25.5

String1 := STR(Real1)

String1 tiene ahora el valor “25.500000”.

19.18 Conversión de un valor ASCII en un carácter <CHR>

Convierte un valor ASCII en un único carácter.

Sintaxis

(<variable> : STRING) := CHR (<valor> : DINT / DWORD)

Ejemplo:

Con la siguiente instrucción se asigna a la variable String1 el valor “a”.

String1 := CHR(97)

19.19 Conversión de un carácter en un valor ASCII <ORD>

Convierte un único carácter en un valor ASCII.

Sintaxis

(<variable> : DINT / DWORD) := ORD (<valor> : STRING)

Ejemplo:

Con la siguiente instrucción se asigna a la variable Dint1 el valor 65.

Dint1 := ORD(“A”)

19. Funciones

172 Festo GDCP-CMXR-SW-ES es 1205c

19.20 Establecer el bit en una variable WORD <SetBit>

La función SetBit establece un bit seleccionado en el valor TRUE dentro de una variable DWORD. Si el bit ya posee un valor TRUE, el proceso no tendrá más consecuencias. El valor modificado está disponible en el valor de retorno para su posterior procesamiento.

Sintaxis

SetBit ( <val> : DWORD, <bitNr> : DINT): DWORD

Métodos Descripción

val Valor que se debe modificar

bitNr Número de bit en el parámetro Val que se establece

Tabla 19.5 Función variable SetBit

El número de bit se indica mediante el parámetro bitNr. El margen de valores permitido es de 0 a 31 para referenciar los bits de la variable WORD (32 bits). El bit más bajo (LSB) se activa con el número de bit = 0.

Valor de retorno

Salida del patrón de bits procesado de la variable Val.

Tratamiento de errores

Si se transmite un valor no permitido en el parámetro bitNr, se emite un error.

Ejemplo:

// Ajustar la variable a 0

mask := 16#0000

// Ajustar el tercer bit en TRUE

mask := SetBit(mask, 2)

// Mask posee el valor 2#0000 0100

19. Funciones

Festo GDCP-CMXR-SW-ES es 1205c 173

19.21 Borrar el bit en una variable WORD <ResetBit>

La función ResetBit establece un bit seleccionado en el valor FALSE dentro de una variable DWORD. Si el bit ya posee un valor FALSE, el proceso no tendrá más consecuencias. El valor modificado está disponible en el valor de retorno para su posterior procesamiento.

Sintaxis

ResetBit ( <val> : DWORD, <bitNr> : DINT): DWORD

Métodos Descripción

val Valor que se debe modificar

bitNr Número de bit en el parámetro Val que se restablece

Tabla 19.6 Función variable ResetBit

El número de bit se indica mediante el parámetro bitNr. El margen de valores permitido es de 0 a 31 para referenciar los bits de la variable WORD (32 bits). El bit más bajo (LSB) se activa con el número de bit = 0.

Valor de retorno

Salida del patrón de bits procesado de la variable Val.

Tratamiento de errores

Si se transmite un valor no permitido en el parámetro bitNr, se emite un error.

Ejemplo:

// Ajustar la variable a 2#0000 1111

mask := 16#000F

// Ajustar el primer bit en FALSE

mask := ResetBit(mask, 0)

// Mask posee el valor 2#0000 1110

19. Funciones

174 Festo GDCP-CMXR-SW-ES es 1205c

19.22 Comprobar el bit en una variable WORD <CheckBit>

La función CheckBit comprueba el bit indicado en el número de bit y devuelve su valor en el valor de retorno.

Sintaxis

CheckBit ( <val> : DWORD, <bitNr> : DINT): BOOL

Métodos Descripción

val Valor que se debe comprobar

bitNr Número de bit en el parámetro Val que se comprueba

Tabla 19.7 Función variable CheckBit

El número de bit se indica mediante el parámetro bitNr. El margen de valores permitido es de 0 a 31 para referenciar los bits de la variable WORD (32 bits). El bit más bajo (LSB) se activa con el número de bit = 0.

Valor de retorno

TRUE El bit está fijado.

FALSE El bit no está fijado.

Tratamiento de errores

Si se transmite un valor no permitido en el parámetro bitNr, se emite un error.

Ejemplo:

IF CheckBit(mask, 1) THEN

// Estado TRUE

SetInfo("Bit 1 está fijado”)

ELSE

// Estado FALSE

SetInfo("Bit 1 no está fijado”)

END_IF

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 175

20. Módulos El lenguaje FTL permite utilizar módulos. Además de datos, los módulos contienen también componentes en forma de código de programa para conseguir una funcionalidad determinada. Para la comunicación con módulos en FTL, dichos módulos contienen datos de entrada y de salida.

Representación gráfica de un módulo:

El número de datos de entrada y salida de un módulo se guarda en FTL en un tipo de datos. Un módulo debe declararse para ser utilizado en la aplicación. En el caso de los módulos, esto se denomina instanciación. En esta operación se guarda una copia del paquete de módulo con un nombre definido por el usuario (identificador). El paquete de módulo contiene los datos de entrada y salida, así como datos internos de programa. En la práctica sólo existe un código de programa.

Declaración de una instancia de módulo

<nombre de instancia> : <tipo de instancia> (parámetro)

Módulo: valor analógico

Código interno de programa

Datos de entrada

del módulo

Datos de salida

del módulo

Tipo de módulo Valor analógico

Sistema operativo

Programa FTL

Presión: tipo valor analógico

Peso: tipo valor analógico

Instanciación de módulo en el programa de aplicación

20. Módulos

176 Festo GDCP-CMXR-SW-ES es 1205c

Al igual que las variables, las instancias se guardan en el archivo de datos correspon-

diente.

Ejemplo de una instancia

Sensor : AIN(…)

Según el tipo de módulo se asignan datos con la declaración, p. ej., el nombre de una señal de hardware. La documentación sobre los módulos se encuentra en los capítulos siguientes.

20.1 Funciones

Las funciones de módulo sirven para acceder a los datos de un módulo o utilizar funcionalidades. Para acceder a las funciones del módulo se necesita el nombre de instancia y el operador punto.

Acceso a las funciones de módulo

<nombre de instancia> . <nombre de función>

En el ejemplo se accede a la función de módulo Read de la instancia Sensor:

marca := Sensor.Read()

En algunas funciones pueden transferirse parámetros. Consulte la descripción de cada uno de los módulos en los capítulos siguientes.

20.2 Variable

Además de funciones, los módulos pueden contener variables. Con estas variables puede accederse a los datos del módulo. Para acceder a las variables del módulo se necesita el nombre de instancia y el operador punto.

Acceso a variables de módulo

<nombre de instancia> . <nombre de variable>

Para acceder a los datos de algunos módulos pueden utilizarse variables o funciones indistintamente. Cada tipo de acceso requiere un tiempo de ejecución diferente. En el capítulo dedicado a cada módulo se ofrece más información.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 177

En el ejemplo se accede a la variable de módulo State de la instancia Sensor:

IF Sensor.state THEN

Lin(pos1)

ELSE

Lin(pos2)

END_IF

Recomendación:

Si el acceso puede efectuarse mediante una variable, debe utilizarse preferentemente dicha variable, ya que requiere menos tiempo de ejecución.

20.3 Comportamiento del tiempo de operación

El programa FTL no se ejecuta cíclicamente sino que se procesa secuencialmente instruc-ción a instrucción. Este comportamiento es insuficiente para algunas aplicaciones. P. ej., una prueba para verificar si se ha cambiado el flanco en una entrada al mismo tiempo que se ejecuta un programa de movimientos tendría que efectuarse en un programa paralelo, con el trabajo añadido que ello implicaría. A fin de mejorar la comodidad de edición de un módulo, algunos módulos funcionan cíclicamente en el sistema operativo. Así, el usuario puede acceder a los resultados del módulo con los métodos o variables.

20.3.1 Parámetro ovlEnable

Algunos métodos de los módulos siguientes poseen un parámetro opcional denominado ovlEnable. Este parámetro regula el momento de interrogación de la señal de entrada

digital. El parámetro es del tipo BOOL y puede tener el estado TRUE o FALSE.

Estado FALSE

El avance de proceso se detiene en este punto. Si el proceso principal alcanza esta instrucción de programa, la señal se lee o se ejecuta. El movimiento se detiene y vuelve a acelerarse después de la instrucción. No es posible el avance aproximado a los movimientos siguientes.

Estado TRUE

Si el parámetro ovlEnable devuelve el estado TRUE, la señal se lee o se ejecuta a más tardar en el último punto donde aún sea posible reanudar el movimiento. El movimiento no se detiene sino que avanza continuamente. No es posible el avance aproximado a los movimientos siguientes.

Nota

Si no se especifica el parámetro, se supone FALSE.

20. Módulos

178 Festo GDCP-CMXR-SW-ES es 1205c

20.4 Módulo de entrada digital DIN

El módulo DIN sirve para interrogar y administrar una entrada digital.

20.4.1 Instanciación

Para instanciar el módulo de entrada digital se requiere la referencia de hardware de la entrada digital. Ésta se indica con el parámetro <input> durante la instanciación.

Sintaxis

<nombre de instancia> .DIN( <timeout> : DINT,

<RisingEdge> : BOOL,

<Input> : MAPTO DINPORT)

Es posible indicar otros parámetros para, p. ej., realizar ajustes previos. Sin embargo, esto no es necesario para la instanciación y puede efectuarse en el programa.

Ejemplo:

Un sensor se guarda como instancia de módulo:

Instanciación en el archivo de datos

Sensor : DIN := (-1, FALSE, MAP(Input1))

Instanciación con el editor FTL

La instanciación se efectúa en el diálogo para crear variables seleccionando <tipo:> (DIN) e introduciendo el <identificador:> (sensor). En la línea <MAPTO DINPORT> se activa la

referencia real a una entrada digital configurada.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 179

Instanciación con la unidad de mando manual

La instanciación del módulo de entrada digital por medio de la unidad de mando manual se realiza en la máscara de variables seleccionando el tipo de datos DIN. La entrada se guarda automáticamente en el archivo de datos.

El módulo de entrada digital posee las variables siguientes:

Variable Tipo Significado Estado al crear

Timeout REAL Timeout para esperar a las instrucciones Wait y WaitN.

-1 = Ningún timeout (espera sin límite de tiempo)

0 = Comprobación inmediata

>0 = Timeout en milisegundos

-1

RisingEdge BOOL Estado del flanco de subida FALSE

Input DINPORT Referencia a la entrada de hardware ---

Tabla 20.1 Variables del módulo de entrada digital

Timeout

Con el parámetro timeout puede definirse un tiempo de espera. El método del módulo espera al estado de señal requerido durante el tiempo ajustado.

Si el valor es -1, la espera no tiene límite.

Si se introduce un valor > 0, la espera se reduce a este tiempo máximo. La ejecución del programa se reanuda si el tiempo de espera finaliza sin aparecer el estado de señal deseado. El propio programa secuencial debe generar un mensaje de error.

Si se indica el valor 0, se realiza una comprobación inmediatamente. Si la señal no tiene el valor deseado, el programa secuencial debe generar un mensaje de error.

Más información y ejemplos para generar mensajes de error se describen en el capítulo 25.2 Empleo de los módulos de entrada y salida.

20. Módulos

180 Festo GDCP-CMXR-SW-ES es 1205c

RisingEdge

Aunque no se ha llamado al módulo, éste guarda el estado de un flanco de subida. Dicho estado puede evaluarse en el programa.

Input

La variable input describe la referencia a la entrada de hardware del módulo.

20.4.2 Métodos

El módulo dispone de varios métodos:

Métodos Descripción

Wait Esperar a que la entrada tenga el estado TRUE

WaitN Esperar a que la entrada tenga el estado FALSE

Read Leer el estado de la entrada

RisingEdge Leer el estado del flanco de subida

ResetRisingEdge Borrar el estado del flanco de subida

Tabla 20.2 Métodos del módulo de entrada digital DIN

En el editor FTL se visualiza automáticamente una lista con los métodos disponibles introduciendo el punto. Los métodos pueden seleccionarse en dicha lista.

En la unidad de mando manual, los métodos pueden seleccionarse mediante el árbol de menú en el punto “Digital Inputs”.

En la figura se muestra la selección de métodos del módulo DIN de la unidad de mando manual.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 181

20.4.3 Espera a estado, métodos Wait/WaitN

En el programa FTL, los métodos Wait y WaitN permiten esperar a que la entrada tome el valor TRUE o FALSE. Si hay un timeout, se espera a que finalice.

Sintaxis

<nombre de instancia>.Wait (OPT ovlEnable : BOOL)

<nombre de instancia>.WaitN (OPT ovlEnable : BOOL)

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Ejemplo:

Ptp(pos0)

sensor.Wait() // Esperar a señal TRUE, movimiento

detenido

Ptp(pos1)

sensor.WaitN(TRUE) // Esperar a señal FALSE, sin parada

Ptp(pos2)

20.4.4 Método Read para lectura de estado

Con el método Read puede leerse el estado actual de la entrada. Los valores de retorno son los estados TRUE o FALSE.

Sintaxis

<nombre de instancia>.Read (OPT ovlEnable: BOOL) : BOOL

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Ejemplo:

value := sensor.Read()

20.4.5 Método RisingEdge para flanco de subida

Con el método RisingEdge se interroga si hubo un flanco de subida en la entrada, guarda-do a continuación. El valor de retorno sigue siendo TRUE aunque la entrada hubiese cambiado entre tanto a FALSE. El estado del flanco se determina independientemente del ciclo del programa FTL y se ejecuta en un ciclo propio.

20. Módulos

182 Festo GDCP-CMXR-SW-ES es 1205c

Sintaxis

<nombre de instancia>.RisingEdge (OPT ovlEnable: BOOL) : BOOL

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Ejemplo:

value := sensor.RisingEdge()

20.4.6 Método ResetRisingEdge para borrar flancos

Este método borra la marca interna del flanco de subida. Ello es necesario para comprobar

un flanco de subida con el método RisingEdge.

Sintaxis

<nombre de instancia>.ResetRisingEdge()

Nota

Si la entrada digital está activada en el momento en que se ejecuta esta instrucción, el estado de detección del flanco se borra y no se activa de nuevo hasta que no vuelve a aparecer un flanco positivo (modificación de estado de la entrada de 0 a 1) en la entrada.

Ejemplo:

sensor.ResetRisingEdge()

value := sensor.RisingEgde()

20.5 Módulo de salida digital DOUT

El módulo DOUT sirve para interrogar y administrar una salida digital.

20.5.1 Instanciación

Para instanciar el módulo de salida digital se requiere la referencia de hardware de la

salida digital. Ésta se indica con el parámetro <output> durante la instanciación.

Sintaxis

<nombre de instancia> .DOUT( <timeout> : DINT,

<RisingEdge> : BOOL,

<Output> : MAPTO DOUTPORT)

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 183

Es posible indicar otros parámetros para, p. ej., realizar ajustes previos. Sin embargo, esto no es necesario para la instanciación y puede efectuarse en el programa.

Ejemplo:

Un cilindro se guarda como instancia de módulo:

Instanciación en el archivo de datos

cylinder : DOUT := (-1,FALSE, MAP(Output3))

Instanciación con el editor FTL

La instanciación se efectúa en el diálogo para crear variables seleccionando <tipo:> (DOUT) e introduciendo el <identificador:> (cilindro). En la línea <MAPTO DOUTPORT> se activa la referencia real a una salida digital configurada.

Instanciación con la unidad de mando manual

La instanciación del módulo de salida digital por medio de la unidad de mando manual se realiza en la máscara de variables seleccionando el tipo de datos DOUT.

La instanciación en la unidad de mando manual guarda automáticamente la entrada en el archivo de datos.

20. Módulos

184 Festo GDCP-CMXR-SW-ES es 1205c

20.5.2 Variable

El módulo de salida digital posee las variables siguientes:

Variable Tipo Significado Estado al crear

Timeout REAL Timeout para esperar a las instrucciones Wait y WaitN.

-1 = Ningún timeout (espera sin límite de tiempo)

0 = Comprobación inmediata

>0 = Timeout en milisegundos

-1

RisingEdge BOOL Estado del flanco de subida FALSE

Output DOUTPORT Referencia a la salida de hardware ---

Tabla 20.3 Variables del módulo de salida digital

Timeout

Con el parámetro timeout puede definirse un tiempo de espera. El método del módulo espera al estado de señal requerido durante el tiempo ajustado.

Si el valor es -1, la espera no tiene límite.

Si se introduce un valor > 0, la espera se reduce a este tiempo máximo. La ejecución del programa se reanuda si el tiempo de espera finaliza sin aparecer el estado de señal deseado. El propio programa secuencial debe generar un mensaje de error.

Si se indica el valor 0, se realiza una comprobación inmediatamente. Si la señal no tiene el valor deseado, el programa secuencial debe generar un mensaje de error.

Más información y ejemplos para generar mensajes de error se describen en el capítulo 25.2 Empleo de los módulos de entrada y salida.

RisingEdge

Aunque no se ha llamado al módulo, éste guarda el estado de un flanco de subida. Dicho estado puede evaluarse en el programa.

Output

La variable output describe la referencia a la salida de hardware del módulo.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 185

20.5.3 Métodos

El módulo dispone de varios métodos:

Métodos Descripción

Wait Esperar a que la salida tenga el valor TRUE

WaitN Esperar a que la salida tenga el valor FALSE

Read Leer el valor de salida

RisingEdge Leer el estado del flanco de subida

ResetRisingEdge Borrar el estado del flanco de subida

Set Activar salida, estado TRUE

Reset Borrar salida, estado FALSE

Write Activar salida al valor indicado

Tabla 20.4 Métodos del módulo de salida digital DOUT

En la unidad de mando manual, los métodos pueden seleccionarse mediante el árbol de menú en el punto “Digital outputs”.

En el editor FTL se visualiza automáticamente una lista con los métodos disponibles introduciendo el punto. Los métodos pueden seleccionarse en dicha lista.

En la figura se muestra la selección de métodos del módulo DOUT de la unidad de mando manual.

20. Módulos

186 Festo GDCP-CMXR-SW-ES es 1205c

20.5.4 Espera a estado, métodos Wait/WaitN

En el programa FTL, los métodos Wait y WaitN permiten esperar a que la salida adopte el

valor TRUE o FALSE. Si hay un timeout, se espera a que finalice.

Sintaxis

<nombre de instancia>.Wait (OPT ovlEnable : BOOL)

<nombre de instancia>.WaitN (OPT ovlEnable : BOOL)

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Ejemplo:

Ptp(pos0)

cylinder.Wait() // Esperar a salida TRUE, movimiento

detenido

Ptp(pos1)

cylinder.WaitN(TRUE) // Esperar a salida FALSE, sin parada

Ptp(pos2)

20.5.5 Método Read para lectura de estado

Con el método Read puede leerse el estado actual de la salida. Los valores de retorno son

los estados TRUE o FALSE.

Sintaxis

<nombre de instancia>.Read (OPT ovlEnable: BOOL) : BOOL

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Ejemplo:

value := cylinder.Read()

20.5.6 Flanco de subida, método RisingEdge

Con el método RisingEdge se interroga si hubo un flanco de subida en la salida, guardado

a continuación. El valor de retorno sigue siendo TRUE aunque la salida hubiese cambiado entre tanto a FALSE. El estado del flanco se determina independientemente del ciclo del programa FTL y se ejecuta en un ciclo propio.

Sintaxis

<nombre de instancia>.RisingEdge (OPT ovlEnable: BOOL) : BOOL

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 187

Ejemplo:

value := cylinder.RisingEdge()

20.5.7 Borrado de flancos, ResetRisingEdge

Este método borra la marca interna del flanco de subida. Ello es necesario para comprobar un flanco de subida con el método RisingEdge.

Sintaxis

<nombre de instancia>.ResetRisingEdge()

Nota

Si la salida digital está activada en el momento en que se ejecuta esta instrucción, el estado de detección del flanco se borra y no se activa de nuevo hasta que no vuelve a aparecer un flanco positivo (modificación de estado de la salida de 0 a 1) en la salida.

Ejemplo:

cylinder.ResetRisingEdge()

value := cylinder.RisingEgde()

20.5.8 Activación y borrado, métodos Set/Reset

Con el método Set se activa una salida (estado TRUE) y con Reset se borra (estado FALSE).

Sintaxis

<nombre de instancia>.Set ( )

<nombre de instancia>.Reset ( )

Set y Reset se ejecutan en la ejecución principal. El módulo NO influye en el avance aproximado.

Ejemplo:

Lin(pos1)

Lin(pos2)

cylinder.Set() // Activa la salida cylinder a TRUE

Lin(pos3)

cylinder.Reset() // Activa la salida cylinder a FALSE

Lin(pos4)

20. Módulos

188 Festo GDCP-CMXR-SW-ES es 1205c

20.5.9 Activación de la salida, método Write

Con el método Write es posible describir el estado de una salida. El estado TRUE o FALSE se devuelve como parámetro. Write funciona igual que los métodos Set y Reset.

Sintaxis

<nombre de instancia>.Write (value: BOOL)

El método Write se procesa en la ejecución principal. El módulo NO influye en el avance

aproximado.

Ejemplo:

cylinder.Write(TRUE) // Activa la salida cylinder a TRUE

state := FALSE

cylinder.Write(state) // Activa la salida cylinder a FALSE

20.5.10 Activación de la salida con una duración determinada, método Pulse

El método Pulse ajusta la salida a TRUE por un tiempo determinado. Pulse se ejecuta en la

ejecución principal y no influye en el avance aproximado.

Sintaxis

<nombre de instancia>.Pulse (timeMs :DINT;

OPT pauseAtInterrupt: BOOL)

Parámetros Tipo Significado

timeMs DINT Tiempo correspondiente a la longitud de impulso

en ms

pauseAtInterrupt BOOL Detención del tiempo de impulso cuando el

programa se para

Tabla 20.5 Parámetros del método Pulse

El método Pulse activa una salida digital con un impulso de una determinada longitud. La longitud del impulso se indica en milisegundos. Al principio del impulso, la salida siempre adquiere el estado TRUE y al final, el estado FALSE. No obstante, si la salida ya posee el estado TRUE, este estado se restablece una vez transcurrido el tiempo del impulso.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 189

Con el parámetro opcional “pauseAtInterrupt” se puede indicar cuál debe ser la reacción ante una parada del programa FTL. Si no se indica este parámetro, se establece interna-mente el estado FALSE.

pauseAtInterrupt = TRUE:

Con TRUE se detiene el tiempo del impulso y se asigna a la salida el estado FALSE. Si el programa FTL continúa, durante el tiempo restante la salida volverá a tener el estado TRUE. Una vez transcurrido el tiempo del impulso, se establecerá el estado FALSE.

pauseAtInterrupt = FALSE:

Si el parámetro opcional no está especificado o es FALSE, el impulso se ejecuta después del inicio y hasta el final. La parada del programa FTL no tiene ninguna repercusión.

Nota

Si se carga un programa FTL detenido, la función de impulso finalizará automáticamente y la salida adquirirá el estado FALSE.

Ejemplo:

// Activa la salida cylinder a TRUE durante 200 ms

cylinder.Pulse(200)

20.6 Módulo de entrada analógica AIN

El módulo AIN sirve para interrogar y administrar una entrada analógica.

20.6.1 Instanciación

Para instanciar el módulo de entrada analógica se requiere la referencia de hardware de la entrada analógica. Ésta se indica con el parámetro input durante la instanciación.

Sintaxis

<nombre de instancia> .AIN( <timeout> : DINT, <port> : MAPTO AINPORT)

El parámetro input es el nombre con el que se designa la entrada de hardware. Esta asignación activa una relación entre el módulo y el hardware. Es posible indicar otros parámetros para, p. ej., realizar ajustes previos. Sin embargo, esto no es necesario para la instanciación y puede efectuarse en el programa.

Ejemplo:

Un sensor se guarda como instancia de módulo:

20. Módulos

190 Festo GDCP-CMXR-SW-ES es 1205c

Instanciación en el archivo de datos

temperature : AIN := (-1, MAP(Sensor1))

Instanciación con el editor FTL

La instanciación se efectúa en el diálogo para crear variables seleccionando <tipo:> (AIN) e introduciendo el <identificador:> (ainTemperature). En la línea <MAPTO AINPORT> se activa la referencia real a una entrada analógica configurada.

Instanciación con la unidad de mando manual

La instanciación del módulo de entrada analógica por medio de la unidad de mando manual se realiza en la máscara de variables seleccionando el tipo de datos AIN.

La instanciación en la unidad de mando manual guarda automáticamente la entrada en el archivo de datos.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 191

20.6.2 Variable

El módulo de entrada analógica posee las variables siguientes:

Variable Tipo Significado Estado al crear

Timeout REAL Timeout para esperar a las instrucciones WaitLss, WaitGrt,

WaitIns y Waitouts.

-1 = Ningún timeout (espera sin límite de tiempo)

0 = Comprobación inmediata

>0 = Timeout en milisegundos

-1

Input AINPORT Referencia a la entrada de hardware ---

Tabla 20.6 Variables del módulo de entrada analógica

Timeout

Con el parámetro timeout puede definirse un tiempo de espera. El método del módulo espera al estado de señal requerido durante el tiempo ajustado.

Si el valor es -1, la espera no tiene límite.

Si se introduce un valor > 0, la espera se reduce a este tiempo máximo. La ejecución del programa se reanuda si el tiempo de espera finaliza sin aparecer el estado de señal deseado. El propio programa secuencial debe generar un mensaje de error.

Si se indica el valor 0, se realiza una comprobación inmediatamente. Si la señal no tiene el valor deseado, el programa secuencial debe generar un mensaje de error.

Más información y ejemplos para generar mensajes de error se describen en el capítulo 25.2 Empleo de los módulos de entrada y salida.

Input

La variable input describe la referencia a la entrada de hardware del módulo.

20.6.3 Métodos

El módulo dispone de varios métodos:

Métodos Descripción

WaitLss Esperar a que el valor de entrada sea menor que el indicado

WaitGrt Esperar a que el valor de entrada sea mayor que el indicado

WaitIns Esperar a que el valor de entrada se encuentre dentro del límite

indicado

WaitOuts Esperar a que el valor de entrada se encuentre fuera del límite

indicado

Read Leer el valor de entrada

Tabla 20.7 Métodos del módulo de entrada analógica

20. Módulos

192 Festo GDCP-CMXR-SW-ES es 1205c

En el editor FTL se visualiza automáticamente una lista con los métodos disponibles

introduciendo el punto. Los métodos pueden seleccionarse en dicha lista.

En la unidad de mando manual, los métodos pueden seleccionarse mediante el árbol de menú en el punto “Analog Inputs”.

En la figura se muestra la selección de métodos del módulo AIN de la unidad de mando manual.

20.6.4 Espera a que el valor sea menor/mayor, métodos WaitLss, WaitGrt

Los métodos WaitLss y WaitGrt permiten interrogar una entrada analógica para conocer si

un estado es mayor o menor que el valor indicado. Si el módulo tiene un parámetro

timeout, éste se tiene en cuenta.

Sintaxis

<nombre de instancia>.WaitLss(value : REAL, OPT ovlEnable : BOOL)

<nombre de instancia>.WaitGrt(value : REAL, OPT ovlEnable : BOOL)

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Parámetro Tipo Significado

value REAL Valor límite

Tabla 20.8 Parámetro de los métodos WaitLss, WaitGrt

Ejemplo:

Lin(pos1)

temperature.WaitLss(65.0, TRUE)

Lin(pos2)

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 193

20.6.5 Espera a que el valor entre/salga de un margen, métodos WaitIns, WaitOuts

Con los métodos WaitIns y WaitOuts es posible esperar a que el valor de la entrada

analógica se encuentre dentro o fuera del margen de valores indicado. Si el módulo tiene un parámetro timeout, éste se tiene en cuenta.

Sintaxis

<nombre de instancia>.WaitIns( minValue : REAL,

maxValue : REAL,

OPT ovlEnable : BOOL)

<nombre de instancia>.WaitOuts( minValue : REAL,

maxValue : REAL,

OPT ovlEnable : BOOL)

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Parámetros Tipo Significado

minValue REAL Valor límite inferior

maxValue REAL Valor límite superior

Tabla 20.9 Parámetros de los métodos WaitIns, WaitOuts

Ejemplo

Lin(pos1)

// Esperar a que la temperatura se encuentre dentro de los

límites

temperature.WaitIns(50.0, 55.0, TRUE)

Lin(pos2)

20.6.6 Interrogación del valor, método Read

El método Read lee el valor actual de la entrada analógica.

Sintaxis

<nombre de instancia>.Read(OPT ovlEnable)

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

20. Módulos

194 Festo GDCP-CMXR-SW-ES es 1205c

Ejemplo:

Lin(pos1)

// Leer la temperatura sin parar la trayectoria

value := temperature.Read(TRUE)

Lin(pos2)

20.7 Módulo de salida analógica AOUT

El módulo AOUT sirve para interrogar y administrar una salida analógica.

20.7.1 Instanciación

Para instanciar el módulo de salida analógica se requiere la referencia de hardware de la salida analógica. Ésta se indica con el parámetro <port> durante la instanciación.

Sintaxis

<nombre de instancia> .AOUT( <timeout> : DINT,

<port> : MAPTO AOUTPORT))

Es posible indicar otros parámetros para, p. ej., realizar ajustes previos. Sin embargo, esto no es necesario para la instanciación y puede efectuarse en el programa.

Ejemplo:

Una cantidad se guarda como instancia de módulo:

Instanciación en el archivo de datos

quantity : AOUT := (-1, MAP(SetValue))

Instanciación con el editor FTL

La instanciación se efectúa en el diálogo para crear variables seleccionando <tipo:> (AOUT) e introduciendo el <identificador:> (aoutQuantity). En la línea <MAPTO AOUTPORT> se activa la referencia real a una salida analógica configurada.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 195

Instanciación con la unidad de mando manual

La instanciación del módulo de salida analógica por medio de la unidad de mando manual se realiza en la máscara de variables seleccionando el tipo de datos AOUT.

La instanciación en la unidad de mando manual guarda automáticamente la entrada en el archivo de datos.

20.7.2 Variable

El módulo de salida analógica posee las variables siguientes:

Variable Tipo Significado Estado al crear

Timeout REAL Timeout para esperar a las instrucciones WaitLss, WaitGrt,

WaitIns y Waitouts.

-1 = Ningún timeout (espera sin límite de tiempo)

0 = Comprobación inmediata

>0 = Timeout en milisegundos

-1

Output AOUTPORT Referencia a la salida de hardware ---

Tabla 20.10 Variables del módulo de salida analógica

Timeout

Con el parámetro timeout puede definirse un tiempo de espera. El método del módulo espera al estado de señal requerido durante el tiempo ajustado.

Si el valor es -1, la espera no tiene límite.

Si se introduce un valor > 0, la espera se reduce a este tiempo máximo. La ejecución del programa se reanuda si el tiempo de espera finaliza sin aparecer el estado de señal deseado. El propio programa secuencial debe generar un mensaje de error.

Si se indica el valor 0, se realiza una comprobación inmediatamente. Si la señal no tiene el valor deseado, el programa secuencial debe generar un mensaje de error.

Más información y ejemplos para generar mensajes de error se describen en el capítulo 25.2 Empleo de los módulos de entrada y salida.

20. Módulos

196 Festo GDCP-CMXR-SW-ES es 1205c

Output

La variable output describe la referencia a la salida de hardware del módulo.

20.7.3 Métodos

El módulo dispone de varios métodos:

Métodos Descripción

Write Escribir un valor en la salida analógica

WaitLss Esperar a que el valor de salida sea menor que el indicado

WaitGrt Esperar a que el valor de salida sea mayor que el indicado

WaitIns Esperar a que el valor de salida se encuentre dentro del límite

indicado

WaitOuts Esperar a que el valor de salida se encuentre fuera del límite

indicado

Read Leer el valor de salida

Tabla 20.11 Métodos del módulo de salida analógica

En el editor FTL se visualiza automáticamente una lista con los métodos disponibles introduciendo el punto. Los métodos pueden seleccionarse en dicha lista.

En la unidad de mando manual, los métodos pueden seleccionarse mediante el árbol de menú en el punto “Analog Outputs”.

En la figura se muestra la selección de métodos del módulo AOUT de la unidad de mando manual.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 197

20.7.4 Escritura del valor de salida, método Write

Con el método Write se escribe una salida analógica. El valor nominal se devuelve en el

parámetro value.

Sintaxis

<nombre de instancia>.Write(value :REAL)

Parámetro Tipo Significado

value REAL Valor nominal para la salida analógica

Tabla 20.12 Parámetro del método Write

Ejemplo:

quantity.Write(110.0) // Ajusta la salida a 110.0

value := 1.3

quantity.Write(value) // Ajusta la salida a 1.3

20.7.5 Espera a que el valor sea mayor/menor, métodos WaitLss, WaitGrt

Los métodos WaitLss y WaitGrt permiten interrogar una salida analógica para conocer si

un estado es mayor o menor que el valor indicado. Si el módulo tiene un parámetro

timeout, éste se tiene en cuenta.

Sintaxis

<nombre de instancia>.WaitLss(value : REAL, OPT ovlEnable : BOOL)

<nombre de instancia>.WaitGrt(value : REAL, OPT ovlEnable : BOOL)

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Parámetro Tipo Significado

value REAL Valor límite

Tabla 20.13 Parámetro de los métodos WaitLss, WaitGrt

Ejemplo:

Lin(pos1)

// Esperar a que el valor sea menos de 110.0

quantity.WaitLss(110.0, TRUE)

Lin(pos2)

20. Módulos

198 Festo GDCP-CMXR-SW-ES es 1205c

20.7.6 Espera a que el valor entre/salga de un margen, métodos WaitIns, WaitOuts

Con los métodos WaitIns y WaitOuts es posible esperar a que el valor de salida analógica

se encuentre dentro o fuera del margen de valores indicado. Si el módulo tiene un parámetro timeout, éste se tiene en cuenta.

Sintaxis

<nombre de instancia>.WaitIns(minValue : REAL,

maxValue : REAL, OPT ovlEnable : BOOL)

<nombre de instancia>.WaitOuts(minValue : REAL,

maxValue : REAL, OPT ovlEnable : BOOL)

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Parámetros Tipo Significado

minValue REAL Valor límite inferior

maxValue REAL Valor límite superior

Tabla 20.14 Parámetros de los métodos WaitIns, WaitOuts

Ejemplo:

Lin(pos1)

// Esperar a que la cantidad esté dentro de los límites

quantity.WaitIns(100.0, 110.0, TRUE)

Lin(pos2)

20.7.7 Lectura del valor de salida, método Read

El método Read lee el valor actual de la salida analógica.

Sintaxis

<nombre de instancia>.Read(OPT ovlEnable)

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Ejemplo:

Lin(pos1)

// Leer la cantidad sin parar sobre la trayectoria

value := quantity.Read(TRUE)

Lin(pos2)

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 199

20.8 Módulo de reloj CLOCK

El módulo de reloj (temporizador) puede utilizarse para cronometrar durante la ejecución del programa. El tiempo se mide en milisegundos.

20.8.1 Instanciación

Para instanciar el módulo de reloj CLOCK se requiere el nombre del módulo. Dicho módulo

no tiene variables.

Instanciación

<nombre de instancia> : CLOCK

Instanciación en el archivo de datos:

Timer : CLOCK

Instanciación con el editor FTL

La instanciación se efectúa en el diálogo para crear variables seleccionando <tipo:> (CLOCK) e introduciendo el <identificador:> (clkTimer).

Instanciación con la unidad de mando manual

La instanciación del módulo de reloj por medio de la unidad de mando manual se realiza

en la máscara de variables seleccionando el tipo de datos CLOCK.

20. Módulos

200 Festo GDCP-CMXR-SW-ES es 1205c

La instanciación en la unidad de mando manual escribe automáticamente la entrada en el archivo de datos.

20.8.2 Métodos

El módulo de reloj dispone de los siguientes métodos:

Métodos Descripción

Reset Borrar la hora

Start Poner en marcha el reloj

Stop Detener el reloj

Read Leer el tiempo detenido en ms

ToStr Convertir el tiempo en una cadena de caracteres

Tabla 20.15 Métodos del módulo de reloj

En el editor FTL se visualiza automáticamente una lista con los métodos disponibles introduciendo el punto. Los métodos pueden seleccionarse en dicha lista.

En la unidad de mando manual, los métodos pueden seleccionarse mediante el árbol de menú en el punto “Timing Blocks”.

En la figura se muestra la selección de métodos del módulo CLOCK de la unidad de mando

manual.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 201

20.8.3 Puesta en marcha del reloj, método Start

Con el método Start se pone en marcha el temporizador. El punto inicial se guarda

internamente en el módulo. Si se activa un Start en un temporizador ya parado, el temporizador vuelve a ponerse en marcha y el tiempo sigue corriendo. El temporizador solo se puede restablecer con la instrucción Reset.

Sintaxis

<nombre de instancia>.Start ( )

Ejemplo:

Timer.Start() // El reloj se pone en marcha

20.8.4 Parada del reloj, método Stop

El método Stop detiene el cronometraje. El tiempo transcurrido se calcula en el módulo y

se visualiza para su lectura.

Sintaxis

<nombre de instancia>.Stop ( )

Ejemplo:

Timer.Stop() // El reloj se detiene

20.8.5 Borrado del reloj, método Reset

Con el método Reset se pone a cero el temporizador. Si el método Reset se ejecuta cuando

el temporizador está en marcha, éste se pone a 0 y sigue funcionando.

Sintaxis

<nombre de instancia>.Reset ( )

Ejemplo:

Timer.Reset() // El reloj se reinicia

20.8.6 Lectura del reloj, método Read

Con el método Read es posible leer el valor de fecha y hora en milisegundos (ms).

20. Módulos

202 Festo GDCP-CMXR-SW-ES es 1205c

Sintaxis

<nombre de instancia>.Read(OPT ovlEnable : BOOL) : DINT

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Valor de retorno: tiempo medido en milisegundos (ms)

Ejemplo:

Datos:

value : DINT

Programa:

:

Lin(pos1)

value := Timer.Read() // Leer con parada de la trayectoria

Lin(pos2)

value := Timer.Read(TRUE) // Leer en el proceso principal

Lin(pos3)

:

20.8.7 Convertir el valor de fecha y hora en una cadena de caracteres, método ToStr

Con el método ToStr se convierte el valor de fecha y hora actuales en una cadena de

caracteres con la estructura siguiente <días> <horas>:<minutos>:<segundos>:<milisegundos>.

Sintaxis

<nombre de instancia>.ToStr(OPT ovlEnable : BOOL) : STRING

Para la descripción del parámetro ovlEnable, véase el capítulo 20.3.1 de la página 177.

Valor de retorno: cadena de caracteres con la información de fecha y hora con formato dd

hh:mm:ss:ms

Ejemplo:

Datos:

time : STRING

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 203

Programa:

Lin(pos1)

time := Timer.ToStr() // Leer con parada de la

trayectoria

Lin(pos2)

time := Timer.ToStr(TRUE) // Leer en el proceso principal

Lin(pos3)

20.9 Módulo de encoder ENCODER

El módulo de encoder puede utilizarse en el programa para leer, como máximo, los dos

encoder incrementales conectados.

20.9.1 Instanciación

Para instanciar el módulo de encoder se requiere la referencia de hardware de la entrada. Ésta se indica con el parámetro <port> durante la instanciación.

Sintaxis

<nombre de instancia> .ENCODER( <timeout> : DINT,

<port> : MAPTO ENCPORT))

Es posible indicar otros parámetros para, p. ej., realizar ajustes previos. Sin embargo, esto no es necesario para la instanciación y puede efectuarse en el programa.

Ejemplo:

Un encoder se guarda como instancia de módulo:

Instanciación en el archivo de datos

enc0 : ENCODER := (-1, MAP(Encoder_0))

20. Módulos

204 Festo GDCP-CMXR-SW-ES es 1205c

Instanciación con el editor FTL

La instanciación se efectúa en el diálogo para crear variables seleccionando <tipo:> (ENCODER) e introduciendo el <identificador:> (encTrack). En la línea <MAPTO ENCPORT> se activa la referencia real a una entrada de encoder configurada.

Instanciación con la unidad de mando manual

La instanciación del módulo de encoder por medio de la unidad de mando manual se realiza en la máscara de variables seleccionando el tipo de datos ENCODER.

La instanciación en la unidad de mando manual guarda automáticamente la entrada en el archivo de datos.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 205

20.9.2 Variable

El módulo de encoder posee las variables siguientes:

Variable Tipo Significado Estado al crear

timeout REAL Tiempo de espera -1

port ENCPORT Referencia a la entrada de hardware ---

Tabla 20.16 Variables del módulo de encoder

Timeout – (desocupado actualmente en este módulo)

Con el parámetro timeout puede definirse un tiempo de espera. El método del módulo espera al estado de señal requerido durante el tiempo ajustado. En la actualidad, el módulo de encoder no dispone de métodos para tener en cuenta el timeout.

Port

La variable Port describe la referencia a la entrada de hardware.

20.9.3 Métodos

El módulo de encoder dispone de los métodos siguientes:

Métodos Descripción

Set Ajustar manualmente el valor del encoder incremental

Read Leer el valor del encoder incremental

Tabla 20.17 Métodos del módulo de encoder

En el editor FTL se visualiza automáticamente una lista con los métodos disponibles introduciendo el punto. Los métodos pueden seleccionarse en dicha lista.

En la unidad de mando manual, los métodos pueden seleccionarse mediante el árbol de menú en el punto “Incrementalencoder”.

En la figura se muestra la selección de métodos del módulo de encoder de la unidad de mando manual.

20.9.4 Ajuste del encoder, método Set

Con el método Set, el programa de usuario puede ajustar un valor de encoder incremental.

20. Módulos

206 Festo GDCP-CMXR-SW-ES es 1205c

Sintaxis:

<ENCODER>.Set ( OPT <count> : DINT, OPT <mode> : SETCOUNTMODE)

Parámetros Tipo Significado

count DINT Valor al que se debe ajustar el encoder incremental (incrementos)

mode SETCOUNTMODE Parámetro para ajustar el punto de activación

Tabla 20.18 Parámetros del método Set

El módulo activa el valor en sincronía con la ejecución principal pero no detiene el desarrollo. Con el parámetro mode puede definirse el punto de la activación.

mode Significado

DIRECT El valor se activa en el próximo ciclo de

sistema E/S

ZEROPULSE El valor se activa con el próximo impulso cero

del encoder

Tabla 20.19 Modos del método Set

Ejemplo:

enc0.Set(1000, DIRECT)

20.9.5 Lectura del encoder, método Read

Con el método Read, el programa de usuario puede leer el valor del encoder incremental.

Sintaxis:

<ENCODER>.Read ( OPT <ovlEnable> : BOOL) : DINT

Parámetro Tipo Significado

ovlEnable BOOL Parámetro para ajustar el punto de interrogación

Tabla 20.20 Parámetro del método Read

El método devuelve el valor incremental del encoder. Éste no se computa con el valor de conversión. Para leer el valor estándar se utiliza el elemento Value para acceder directamente al puerto de la entrada de encoder.

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 207

Ejemplo de lectura de un valor estándar:

value := enc0.port.value

Ejemplo de lectura de un valor incremental:

value := enc0.Read()

20.10 Módulo CANopen COPDEVICE

El módulo CANopen puede utilizarse en el programa para activar equipos conectados con el CMXR a través del bus CAN de periféricos.

Atención

En el bus CAN de periféricos pueden controlarse equipos CANopen pero estos equipos no están sujetos al comportamiento de PARADA DE EMERGENCIA de la cinemática. Los actuadores auxiliares no se frenan de manera controlada. Si el bus CAN de periféricos se controla desde un programa paralelo, éste no se detiene en caso de PARADA DE EMERGENCIA.

Nota

Para activar equipos individuales conectados por bus CAN con el CMXR, consulte la documentación correspondiente del fabricante del participante de bus.

20.10.1 Instanciación

La instanciación del módulo CANopen se efectúa automáticamente debido a la configuración E/S del control y no puede realizarse manualmente.

Para acceder a los equipos CANopen conectados, se utiliza un nombre inequívoco definido previamente con el software de configuración FCT. El nombre indicado en FCT no puede utilizarse directamente, sino que se le añade la terminación “_copd”. Esto es válido tanto para los actuadores conectados en el DriveBus como para los equipos CANopen del bus CAN de periféricos.

Ejemplo:

El eje 1 de la cinemática se denomina “Axis1” en la configuración DriveBus del FCT. El acceso se efectúa con Axis1_copd.BausteinMethode( ).

Configuración de CANopen:

[IO.ONBOARD.SLOTCAN:0.FX200A:0.CAN:0.COPDEVICE:1]

name="Axis1" // Nombre del dispositivo COP

20. Módulos

208 Festo GDCP-CMXR-SW-ES es 1205c

Código de programa:

Axis1_copd.WriteSDO(16#6060,0,7,eight_bits)

20.10.2 Métodos

El módulo CANopen dispone de los métodos siguientes:

Métodos Descripción

WriteSDO Escribir SDO

ReadSDOUnsigned Leer SDO sin signo

ReadSDOSigned Leer SDO con signo

Tabla 20.21 Métodos del módulo CANopen

En el editor FTL se visualiza automáticamente una lista con los métodos disponibles introduciendo el punto. Los métodos pueden seleccionarse en dicha lista.

En la unidad de mando manual, los métodos pueden seleccionarse mediante el árbol de menú en el punto “CANopen Devices”.

En la figura se muestra la selección de métodos del módulo CANopen de la unidad de mando manual.

20.10.3 Escritura de SDO, método WriteSDO

Con el método WriteSDO es posible escribir conjuntos de datos en el bus CAN.

Sintaxis:

<COPDEVICE>.WriteSDO ( <index> : DINT, <subindex> : DINT, <data> : DINT, <type> : SdoDataType ) : BOOL

20. Módulos

Festo GDCP-CMXR-SW-ES es 1205c 209

Parámetros Tipo Significado

index DINT Índice de SDO

subindex DINT Subíndice de SDO

data DINT Datos que se van a escribir

type SdoDataType Tipo de datos (Enum)

eight_bits (8 bits)

sixteen_bits (16 bits)

thirtytwo_bit (32 bits)

Tabla 20.22 Parámetros del método WriteSDO

Si el conjunto se escribe con éxito se devuelve TRUE, de lo contrario se devuelve FALSE.

Ejemplo:

oData := 12000

Axis3_copd.WriteSDO(16#6085, 0, oData, thirtytwo_bits)

20.10.4 Lectura de SDO, método ReadSDOSigned

Con el método ReadSDOSigned, el bus CAN puede leer conjuntos de datos con signo.

Sintaxis:

<COPDEVICE>.ReadSDOSigned (<index> : DINT, <subindex> : DINT, <data> : DINT) : BOOL

Parámetros Tipo Significado

index DINT Índice de SDO

subindex DINT Subíndice de SDO

data DINT Datos que se van a leer

Tabla 20.23 Parámetros del método ReadSDOSigned

Si el conjunto se lee con éxito se devuelve TRUE, de lo contrario se devuelve FALSE.

Ejemplo:

dint_iData : DINT := 0

Programa:

Axis3_copd.ReadSDOSigned(16#6098, 0, dint_iData)

SetInfo("método de recorrido de referencia leído: %1",

dint_iData)

:

20. Módulos

210 Festo GDCP-CMXR-SW-ES es 1205c

20.10.5 Lectura de SDO, método ReadSDOUnsigned

Con el método ReadSDOUnsigned es posible leer conjuntos de datos en el bus CAN. El

método detecta automáticamente la longitud de los datos leídos por el bus CAN. Éstos se devuelven sin signo como valor de 32 bits.

Sintaxis:

<COPDEVICE>.ReadSDOUnsigned (<index> : DINT, <subindex> : DINT, <data> : DWORD) : BOOL

Parámetros Tipo Significado

index DINT Índice de SDO

subindex DINT Subíndice de SDO

data DWORD Datos que se van a leer

Tabla 20.24 Parámetros del método ReadSDOUnsigned

Si el conjunto se lee con éxito se devuelve TRUE, de lo contrario se devuelve FALSE.

21. Señales de periféricos

Festo GDCP-CMXR-SW-ES es 1205c 211

21. Señales de periféricos

21.1 Empleo de las entradas y salidas digitales

Las señales digitales se ajustan con la configuración. En ella se define un nombre para cada señal de hardware. Estos nombres pueden utilizarse en el programa de movimientos para la interrogación o el control.

Cada señal digital tiene forma del tipo de datos estructurados y contiene los datos:

State : BOOL Estado de la señal TRUE o FALSE

Error : BOOL Información sobre un error de la señal

Para acceder a estos datos se utiliza el nombre de hardware y el operador punto.

Ejemplo:

Una señal de entrada de sensor se denomina “GripperOpen”. El acceso al estado del sensor se declara:

GripperOpen.State

Esta expresión es del tipo de datos BOOL y puede utilizarse como una variable booleana en el programa.

21.2 Empleo de las entradas y salidas analógicas

Las señales analógicas se ajustan con la configuración. En ella se define un nombre para cada señal de hardware. El nombre puede utilizarse como una variable en el programa de movimientos y, p. ej., un valor analógico puede ser empleado para el cálculo.

Cada señal analógica tiene forma de tipo de datos estructurados y contiene los datos:

Value : REAL Valor de la señal

Error : BOOL Información sobre un error de la señal

Para acceder a estos datos se utiliza el nombre de hardware y el operador punto.

21. Señales de periféricos

212 Festo GDCP-CMXR-SW-ES es 1205c

Ejemplo:

Una señal de entrada analógica se denomina “Level”. El acceso al estado del sensor se declara:

Level.Value

Esta expresión es del tipo de datos REAL y puede utilizarse como una variable en el programa.

22. Programación de eventos

Festo GDCP-CMXR-SW-ES es 1205c 213

22. Programación de eventos El lenguaje FTL ofrece la posibilidad de reaccionar a eventos – como, p. ej., inicio o parada de un programa. Para ello, al producirse este evento, se inicia y procesa un programa FTL con un nombre fijo acordado.

Nota

El tiempo de respuesta hasta el inicio de programas de eventos se sitúa aprox. en 5-20 ms y no es determinante. Se pueden ejecutar más eventos mediante su programación en el PLC integrado.

Todos los programas de eventos deben almacenarse en el proyecto global “GLOBAL”. No deben “cargarse”. Poseen nombres fijos acordados.

22.1 Eventos soportados

La tabla siguiente muestra un resumen de los posibles eventos:

Nombre del evento = Nombre del programa

Ejecución del programa de evento

onstartup Una vez tras arrancar el control

onprogstart Inicio del programa

onproginterrupt Interrumpir el programa activo

onprogcontinue Continuar el programa interrumpido

onprogend Fin del programa

onf1keypressed Al pulsar la tecla F1 de la unidad de control manual CDSA

onf1keyreleased Al soltar la tecla F1 de la unidad de control manual CDSA

onf2keypressed Al pulsar la tecla F2 de la unidad de control manual CDSA

onf2keyreleased Al soltar la tecla F2 de la unidad de control manual CDSA

Tabla 22.1 Resumen de los eventos FTL

Los nombres de eventos/programas mencionados en la tabla deben respetarse estrictamente.

En la imagen siguiente, se han creado los 3 eventos

- onf1keypressed,

- onprogstart,

- onstartup

en el proyecto “GLOBAL”. Sólo se puede reaccionar a estos eventos.

22. Programación de eventos

214 Festo GDCP-CMXR-SW-ES es 1205c

¡Atención!

En caso de incumplirse las convenciones de nombres, no será posible ejecutar el programa de eventos. También se puede emitir un mensaje de diagnóstico. Por consiguiente, los eventos se deben comprobar por separado con cada puesta en funcionamiento.

Nota

Los nombres de los programas siempre se escriben en minúsculas debido al sistema de archivos del CMXR.

Nota

Si durante la ejecución de un programa de eventos se produce un error, esto conllevará una parada y la cancelación de este programa. El programa no se puede volver a ejecutar.

Nota

Las variables que se utilizan en los programas de eventos también deben declararse en el proyecto global “GLOBAL”. También está permitido el uso de variables del sistema adecuadas.

22.2 Utilización del registro de instrucciones FTL

Dentro de los programas de eventos se puede utilizar un número limitado de instrucciones FTL. Las instrucciones siguientes no están permitidas explícitamente:

- Instrucciones de desplazamiento, p. ej. Ptp, Lin,

- Instrucciones que influyen en las instrucciones de desplazamiento, p. ej. Tool, SetRefSys,

- Instrucciones que influyen en los datos cinemáticos, p. ej. Vel, Acc,

- Bucles sin fin,

22. Programación de eventos

Festo GDCP-CMXR-SW-ES es 1205c 215

- Subprogramas y programas paralelos

¡Atención!

Dentro de los programas de eventos no están permitidas las instrucciones de desplazamiento ni de otro tipo que influyan en las instrucciones de desplazamiento o los datos cinemáticos. En caso de utilizar instrucciones no permitidas, se emitirá el error correspondiente y se cancelará el evento.

22.3 Control temporal

En todos los programas de eventos se controla el tiempo de ejecución. En caso de

superarse un tiempo fijado de 1 segundo, se emite un error y se cancela el programa de eventos activo.

22.4 Evento arranque del control, <onstartup>

Tras el arranque del control multieje CMXR se ejecuta una vez el programa de eventos “onstartup”. Una posible aplicación para este evento es, p. ej., la carga automática de un programa FTL.

Ejemplo:

:

// Carga del programa main del proyecto sorting

LoadProgram("sorting", “main”)

:

22.5 Eventos del control de programa

Con la ayuda de los “eventos de programa” se puede reaccionar, p. ej., al inicio o a la parada de programas FTL. Un posible caso de aplicación puede ser el cierre/apertura de un aplicador en el caso de una parada de programa y reinicio. En la tabla siguiente se detallan todos los eventos disponibles para el control de programa.

22. Programación de eventos

216 Festo GDCP-CMXR-SW-ES es 1205c

Nombres de eventos Frecuencia de llamada

Llamada del evento

onprogstart una vez Al iniciar el programa FTL.

onproginterrupt si es necesario Al parar el programa FTL p. ej. mediante la tecla de parada en

la unidad de mando manual, la interface PLC.

onprogcontinue si es necesario Al reiniciar un programa parado.

onprogend una vez Cuando el programa se termina.

Tabla 22.2 Resumen de eventos de control de programa

22.5.1 Comportamiento del tiempo de ejecución durante el funcionamiento

En función de los diferentes eventos, se producen tiempos de reacción correspondientes en el programa FTL, así como en los respectivos programas de eventos. La figura siguiente muestra la ejecución temporal de los diferentes eventos de programa:

Si tras una interrupción de programa se ha situado la cinemática, p. ej., en funcionamiento manual, antes del evento “onprogcontinue” se ejecuta la operación de reposicionamiento en la trayectoria.

¡Atención!

La ejecución de los programas de eventos “onproginterrupt” y “onprogend” tiene lugar tras alcanzar los estados de programa. Esto también incluye la parada de los ejes. Los eventos “onprogstart” y “onprogcontinue” se llaman antes de la ejecución del programa.

Por consiguiente, en caso de utilizar estos eventos, siempre debe tenerse en cuenta la fijación temporal.

Inicio del programa

onprogstart

onproginterrupt

onprogcontinue

onprogend

Parada de programa,

los ejes frenan Nuevo inicio del

programa

Fin del programa

Programa Programa Tiempo

Si es necesario,

reposicionamiento del

robot en la trayectoria

22. Programación de eventos

Festo GDCP-CMXR-SW-ES es 1205c 217

22.5.2 Solapamiento de eventos de programa

El solapamiento de eventos de programa, es decir, sucede un evento mientras el programa de eventos actual aún no ha finalizado, está bloqueado. Los eventos iniciados finalizan siempre antes de que se active otro evento.

¡Atención!

Para no bloquear temporalmente los posibles eventos posteriores, en un programa de eventos sólo debe programarse lo estrictamente necesario.

La gráfica siguiente muestra un inicio de programa dentro del evento de programa aún

activo “onproginterrupt”:

El inicio siguiente del programa se retarda hasta que el evento de programa “onproginterrupt” se ha ejecutado.

22.5.3 Utilización de diferentes proyectos/programas

Cuando funcionan diferentes proyectos y programas también se llaman los mismos

programas de eventos. Si las instrucciones dentro del programa de eventos deben depender de un programa iniciado, esto debe programarse explícitamente. Esto puede realizarse mediante el uso de variables globales.

Nota

Al iniciar diferentes programas, debe tenerse en cuenta el orden arriba indicado para la ejecución de los programas de eventos y de los programas normales desencadenantes.

Inicio del programa

onprogstart

onproginterrupt

onprogcontinue

onprogend

Parada de programa,

los ejes frenan

Nuevo inicio

del programa

Fin del programa

Programa Programa Tiempo

Desplazamiento

temporal del inicio

22. Programación de eventos

218 Festo GDCP-CMXR-SW-ES es 1205c

Programa “onprogstart”

// Ajustar la variable a 0 para la identificación

ProgCode := 0

:

Manejo del programa FTL

// Ajustar la variable a 1 para la identificación

ProgCode := 1

:

Alimentación del programa FTL

// Ajustar la variable a 2 para la identificación

ProgCode := 2

:

Programas “onproginterrupt”, “onprogcontinue” o “onprogend”

// Comprobar la identificación del programa

IF(ProgCode = 1) THEN

// Manejo del programa

:

ELSIF(ProgCode = 2) THEN

// Alimentación del programa

:

END_IF

22.5.4 Ejemplo: Activación de un aplicador al encolar

En un programa FTL, un aplicador para diferentes trayectorias de encolado se activa y desactiva según sea el caso. Para cerrar el aplicador en el caso de una parada del

programa y volver a abrirlo al reiniciar el programa, se pueden utilizar las funciones de eventos.

En este sentido, el aplicador se activa con una salida digital, que a su vez se activa a través del módulo instanciado Glue.

Si el programa FTL se detiene, en el evento “onproginterrupt” se almacena el estado actual de la salida digital en la variable GlueOpened y el aplicador se cierra.

Programa “onproginterrupt”

// Recordar estado de aplicación

22. Programación de eventos

Festo GDCP-CMXR-SW-ES es 1205c 219

GlueOpened := Glue.State

// Cerrar aplicador

Glue.Reset()

Si se reinicia el programa FTL parado, se ejecuta el programa de eventos “onprogcontinue”, donde se comprueba el estado de la variable GlueOpened y, en caso necesario, se vuelve a abrir el aplicador.

22. Programación de eventos

220 Festo GDCP-CMXR-SW-ES es 1205c

Programa “onprogcontinue”

// Comprobar si el aplicador estaba abierto

IF(GlueOpened)THEN

// Abrir aplicador

Glue.Set()

END_IF

// Borrar la variable para recordar el estado

GlueWasOpen := FALSE

Para cerciorarse, se puede cerrar el aplicador con el evento “onprogend”.

Programa “onprogend"

// Cerrar aplicador

Glue.Reset()

// Borrar la variable para recordar el estado

GlueWasOpen := FALSE

¡Atención!

La activación y desactivación del aplicador no se realiza de forma sincrónica respecto del movimiento de la trayectoria. Por consiguiente, en el punto de interrupción se pueden producir mermas de calidad en forma, p. ej., de revestimiento excesivo o insuficiente.

22.6 Eventos para las teclas F1 y F2

La unidad de mando manual CDSA dispone de 2 teclas de función con la designación F1 y

F2 situadas en la parte izquierda de la barra inferior de teclas de función.

Con la ayuda de los eventos de programa

- onf1keypressed,

- onf1keyreleased,

- onf2keypressed,

- onf2keyreleased

se pueden utilizar estas dos teclas en la aplicación.

22. Programación de eventos

Festo GDCP-CMXR-SW-ES es 1205c 221

Una posible aplicación para estas teclas podría ser abrir y cerrar una pinza en funcionamiento manual.

Ejemplo:

En funcionamiento manual, con la tecla F1 se debe abrir una pinza y se debe cerrar al volver a pulsar la tecla. Puesto que la pinza también se utiliza en un programa FTL, se debe tener en cuenta el estado en el caso de una parada de programa. Además, en el caso de reiniciar el programa, se debe restaurar el estado de la pinza.

Interrupción de programa:

En caso de interrupción del programa, el estado de la pinza se almacena en una variable para poder restaurar el estado de la pinza en el caso de un eventual reinicio del programa.

Programa “onproginterrupt”

// Recordar estado pinza

GripperOpen := OpenGripper.State

Al continuar el programa (nueva instrucción de inicio), la pinza se sitúa en el estado en el que se encontraba al interrumpirse el programa.

Programa “onprogcontinue”

// Comprobar si la pinza estaba abierta

IF(GripperOpen)THEN

// Abrir pinza

OpenGripper.Set()

ELSE

// Cerrar pinza

OpenGripper.Reset()

END_IF

Teclas F1 y F2

22. Programación de eventos

222 Festo GDCP-CMXR-SW-ES es 1205c

En funcionamiento manual, la pinza se abre o se cierra pulsando la tecla F1. Para ello debe

consultarse el modo de funcionamiento activo con la instrucción GetManualModeActive.

Programa “onf1keypressed”

// Comprobar si funcionamiento manual

IF(GetManualModeActive())THEN

// Comprobar si la pinza está abierta

IF(OpenGripper.State)THEN

// Cerrar pinza

OpenGripper.Reset()

ELSE

// Abrir pinza

OpenGripper.Set()

END_IF

END_IF

22.7 Instrucciones FTL especiales para su aplicación con eventos

Las instrucciones siguientes están pensadas para su utilización dentro de los eventos.

22.7.1 Consulta del modo de funcionamiento activo, <GetAutoModeActive, GetManualModeActive>

Con esta instrucción se puede consultar si el modo de funcionamiento activo es automático o manual.

Sintaxis

GetAutoModeActive( ): BOOL

GetManualModeActive( ): BOOL

Valores devueltos:

FALSE Modo de funcionamiento no activo

TRUE Modo de funcionamiento activo

22. Programación de eventos

Festo GDCP-CMXR-SW-ES es 1205c 223

22.7.2 Cargar programa FTL, <LoadProgram>

Mediante la instrucción “LoadProgram” se carga un programa FTL desde la tarjeta de memoria en la memoria de trabajo, donde está disponible para su ejecución. Con la ejecución finalizan todos los demás programas ya cargados, que se descargan de la memoria. El propio programa de eventos no finaliza y se ejecuta hasta el final.

Sintaxis

LoadProgram ( <project>:STRING, <program>:STRING):BOOL

Métodos Descripción

project Nombre del proyecto de donde proviene el programa

program Nombre del programa que se carga

Tabla 22.3 Instrucción “LoadProgram”

Llamada desde un programa en curso

Valor de retorno

TRUE El programa se ha cargado

FALSE No ha podido cargarse el programa

Tratamiento de errores

Si el programa no se ha podido cargar debido a un error, p. ej., porque no existe, se genera y emite un mensaje correspondiente.

¡Atención!

Si se ejecuta la instrucción “LoadProgram” fuera de un programa de eventos, esto provocará la parada y descarga del programa. De este modo, todas las líneas de programa siguientes ya no se ejecutarán.

22. Programación de eventos

224 Festo GDCP-CMXR-SW-ES es 1205c

22.8 Mensajes de los programas de eventos

Todos los mensajes de los programas de eventos pertenecen al componente 50. Se pueden emitir los mensajes siguientes:

Nota

La clase de mensaje Error siempre conlleva una parada de todos los programas FTL y, por consiguiente, una parada de los ejes cinemáticos.

Número de mensaje 1260

Clase de mensaje Error

Mensaje Proyecto no válido con la instrucción “LoadProgram”. <Nombre de

proyecto/programa con número de línea>

Efecto La instrucción LoadProgram no se puede ejecutar.

Causa El proyecto indicado en la instrucción “LoadProgram” no existe o no es

válido.

Medida Comprobar los parámetros de la macro LoadProgram, proporcionar el

proyecto/programa a la tarjeta CF, comprobar que el programa no tenga

errores.

Número de mensaje 1261

Clase de mensaje Error

Mensaje Programa no válido con la instrucción “LoadProgram”. <Nombre de

proyecto/programa con número de línea>

Efecto La instrucción “LoadProgram” no se puede ejecutar.

Causa El programa indicado en la instrucción “LoadProgram” no existe o no es

válido.

Medida Comprobar los parámetros de la macro LoadProgram, proporcionar el

proyecto/programa a la tarjeta CF, comprobar que el programa no tenga

errores.

Número de mensaje 1262

Clase de mensaje Error

Mensaje Instrucción de robot en el evento: <Nombre de evento> no permitida.

<Nombre de proyecto/programa con número de línea>

Efecto Se cancela el evento de programa.

Causa No está permitido utilizar instrucciones que influyan en la cinemática, p. ej.

instrucciones de desplazamiento, datos dinámicos en programas de eventos.

Medida Eliminar las instrucciones no permitidas del programa de eventos.

22. Programación de eventos

Festo GDCP-CMXR-SW-ES es 1205c 225

Número de mensaje 1263

Clase de mensaje Error

Mensaje Evento: <Nombre del evento> ha sobrepasado el límite de tiempo de: <Valor

de tiempo> ms.

Efecto Se cancela el evento de programa.

Causa El evento de programa requiere demasiado tiempo. Posiblemente se han

programado demasiadas instrucciones, una instrucción en espera (WaitTime)

o un bucle sin fin.

Medida Comprobar el programa y eliminar las instrucciones no permitidas.

23. Puntos de conmutación simples

226 Festo GDCP-CMXR-SW-ES es 1205c

23. Puntos de conmutación simples Los puntos de conmutación son posiciones en una ruta de movimiento o en una propia posición, donde se ejecuta una acción. Estas acciones se ejecutan en función de la trayectoria de movimientos. Los posibles casos de aplicación podrían ser, p. ej.:

- Abrir y cerrar un aplicador, p. ej., para encolar o recubrir

- Modificación del caudal de un medio añadido, p. ej., agente de estanqueización

- Activación de sensores inteligentes, p. ej., sistema de visión

23.1 Punto de conmutación simple con instrucción de movimiento, <DO>

Un punto de conmutación simple se puede crear mediante una instrucción DO (véase capítulo 8.10 Instrucción DO) junto con una instrucción de movimiento. En este sentido, se asigna a la instrucción DO una instrucción de movimiento. Para ello se pueden aplicar todas las instrucciones de movimiento como PTP o movimientos cartesianos lineales y circulares.

Sintaxis

<Instrucción de movimiento> DO < Instrucción >

Con la instrucción DO se pueden llevar a cabo operaciones de conmutación sencillas. Estas operaciones se realizan en la ejecución principal del FTL. En este caso no se pueden compensar los posibles tiempos de conmutación. No se produce ninguna conexión con la velocidad de trayectoria. Esto significa que el comportamiento de conmutación, referido a la trayectoria, se puede modificar cambiando la dinámica de dicha trayectoria. La ejecución de la instrucción se realiza incondicionalmente.

Ejemplo:

En el siguiente contorno se debe conectar una salida digital en los tramos rectos y se debe desconectar dicha salida en los arcos de círculo.

Pos2 Pos1

Pos3 Pos4

Ipos1

Ipos2

23. Puntos de conmutación simples

Festo GDCP-CMXR-SW-ES es 1205c 227

:

Lin(Pos1) DO Applicator.Set()

Lin(Pos2) DO Applicator.Reset()

CircIp(Ipos1,Pos3) DO Applicator.Set()

Lin(Pos4) DO Applicator.Reset()

CircIp(Ipos2,Pos1)

:

23.2 Punto de conmutación simple, <OnPosition>

Junto con la instrucción DO, con la macro OnPosition también se puede programar una acción de conmutación simplificada. No obstante, en este caso no tiene lugar un vínculo con una instrucción de movimiento. La macro OnPosition espera hasta que se alcanza la última posición programada y entonces ejecuta la instrucción DO.

Sintaxis

OnPosition() DO < Instrucción >

Ejemplo:

En el ejemplo siguiente se accede a un subprograma donde están las instrucciones de movimiento. Tras alcanzar la última posición, la macro OnPosition ejecuta la instrucción

DO y fija la variable SequenceReady en TRUE.

:

Lin(Pos1)

Lin(Pos2)

CALL Sort

OnPosition() DO SequenceReady := TRUE

Lin(Home) DO Applicator.Reset()

:

23.3 Comportamiento en el área de avance aproximado

Si el avance aproximado está activado, no se podrá ejecutar la instrucción DO al alcanzar el punto programado, ya que el avance aproximado impedirá que se alcance dicho punto. En este caso, el punto de conmutación se proyecta sobre la trayectoria del área de avance aproximado y se ejecuta. De este modo se pueden producir imprecisiones, cuyo alcance se desconoce y que se deben determinar mediante una puesta en funcionamiento.

23. Puntos de conmutación simples

228 Festo GDCP-CMXR-SW-ES es 1205c

1

1 P1

1

1 P1´ 1

1 P2

1

1 P0

La instrucción DO se ejecuta aquí.

Nota

Si los segmentos de movimiento desembocan tangencialmente uno en otro, el avance aproximado no influirá en modo alguno en la ejecución de la instrucción DO.

23.4 Comportamiento del tiempo de ejecución de la instrucción DO

En caso de utilizar la instrucción DO, debe tenerse en cuenta que ésta presenta una especie de proceso paralelo. De este modo se pierde la linealidad real del programa FTL

que se ejecuta de arriba abajo. En caso de utilizar la instrucción DO, debe tenerse en cuenta que los programas FTL siempre se calculan por adelantado.

El ejemplo siguiente muestra una ejecución de programa que no brinda el resultado deseado:

:

Started := FALSE

Lin(Home)

Lin(Pos2) DO Started := TRUE

IF Started THEN

:

ELSE

:

END_IF

:

Debido al cálculo por adelantado del programa FTL, la instrucción IF siempre ejecutará la derivación ELSE.

24. Puntos de conmutación de la trayectoria

Festo GDCP-CMXR-SW-ES es 1205c 229

24. Puntos de conmutación de la trayectoria Los puntos de conmutación de la trayectoria se calculan en la trayectoria descrita. Puede tratarse de movimientos PTP, lineales y/o circulares. Para la programación de los puntos de conmutación de la trayectoria se utiliza la macro correspondiente junto con la instrucción DO.

Sintaxis

< Macro de punto de conmutación > DO < Instrucción >

Una línea de programa sólo puede incluir una instrucción DO, detrás de la cual puede haber como máximo una instrucción.

Los puntos de conmutación de la trayectoria existen en múltiples ejecuciones, que van desde operaciones de conmutación simples hasta la compensación de tiempos de conmutación. Estas variantes se describen en las páginas siguientes.

¡Atención!

Los puntos de conmutación de la trayectoria se calculan con el cálculo por adelantado del programa. Para ejecutarlos correctamente es siempre necesario un override del 100 % (véase el capítulo 24.7.4 Influencia del override). Un override modificado resulta en una ejecución errónea.

24.1 Segmento de la trayectoria

Se denomina segmento de la trayectoria al tramo entre un punto inicial y un punto de destino. En los segmentos de trayectoria se ejecutan los puntos de conmutación de la trayectoria. Para la ejecución existen diferentes tipos que se describen en las páginas siguientes. En función del tipo de ejecución de los puntos de conmutación de la trayectoria, dichos puntos pueden desplazarse en el segmento según una posición o un tiempo.

La gráfica siguiente explica la definición del segmento:

P1

P2

P3 Segmento de trayectoria entre

P1 y P2

Fin de segmento

Inicio de segmento

Punto de conmutación

24. Puntos de conmutación de la trayectoria

230 Festo GDCP-CMXR-SW-ES es 1205c

Nota

Por cada segmento de trayectoria se puede programar un máximo de 8 puntos de conmutación. En caso de sobrepasarse este límite, se emitirá un mensaje de error y se parará el programa.

24.2 Comportamiento en el área de avance aproximado

En función de parámetros como valores de avance aproximado, offset de posición o tiempo del punto de conmutación, la posición del punto de conmutación puede estar situada en el área de avance aproximado. El cálculo del punto de conmutación tiene lugar en los segmentos de trayectoria que se han calculado sin avance aproximado. A conti-

nuación, en el área de avance aproximado se proyecta este punto en la curva de trayectoria del área de avance aproximado. En función del tamaño del área de avance aproximado, se producirán imprecisiones de los valores programados.

Nota

Si estas imprecisiones no son aceptables en el área de avance aproximado, debe garantizarse que los puntos de conmutación estén fuera de esta área. Esto puede realizarse, p. ej., mediante la inserción de segmentos circulares que desemboquen de forma tangencial.

P2

P1

P3

Punto de conmutación programado,

desplazado desde P2

Punto de conmutación

proyectado y ejecutado

24. Puntos de conmutación de la trayectoria

Festo GDCP-CMXR-SW-ES es 1205c 231

1

1 P1

1

1 P2

1

1 P0

1

1 0% 1

1 70% 1

1 100%

La instrucción DO se ejecuta aquí.

24.3 Punto de conmutación con desplazamiento porcentual, <OnParameter>

Con la macro de punto de conmutación OnParameter, el punto de conmutación se puede desplazar porcentualmente en el siguiente segmento de trayectoria. La posición del punto de conmutación se calcula mediante la longitud del segmento, que se deriva de los puntos programados, así como el valor porcentual indicado.

Sintaxis

OnParameter( <percent> : REAL

OPT <timeMs> : DINT) DO < Instrucción >

Parámetros Significado Unidad

percent Valor porcentual para el cálculo del punto

de conmutación

Porcentaje

0..100%

timeMs Desplazamiento temporal del punto de

conmutación

ms

Tabla 24.1 Parámetros de la instrucción OnParameter

La instrucción OnParameter se puede aplicar a movimientos PTP y cartesianos, así como todas las instrucciones con modificación de orientación. La programación de OnParameter

siempre tiene lugar entre 2 instrucciones de movimiento que describen el segmento de la trayectoria.

Además del desplazamiento porcentual del punto de conmutación también es posible un desplazamiento con un offset de tiempo. El efecto del offset de tiempo (parámetro timeMs) se trata en el capítulo 24.6 Offset de tiempo opcional de la página 238.

Ejemplo:

Se recorre una trayectoria y, tras un recorrido del 70% de la longitud del segmento entre la posición P0 y P1, debe abrirse una pinza.

:

Lin(P0)

OnParam(70) DO Gripper.Set()

Lin(P1)

:

24. Puntos de conmutación de la trayectoria

232 Festo GDCP-CMXR-SW-ES es 1205c

24.4 Punto de conmutación en cualquier lugar de la trayectoria, <OnDistance>

Con la macro de punto de conmutación OnDistance se puede definir un punto de conmutación que esté situado en el siguiente segmento de la trayectoria. Este punto de conmutación se puede desplazar con un offset respecto al inicio o el fin del segmento. Opcionalmente, también se puede indicar un tiempo para desplazar temporalmente el punto de conmutación, p. ej., para la compensación de tiempos de conmutación.

Sintaxis

OnDistance( <type> : DISTANCETYPE,

<offset> : REAL,

OPT <timeMs> : DINT ) DO < Instrucción >

Parámetros Significado Unidad

type Valor de enumeración para diferenciar la

distancia desde el inicio o el fin del movimiento.

Están disponibles los valores FROMBEGIN y

FROMEND.

-

offset Offset de posición referido al inicio o al fin, tal

como se indica en el parámetro type.

mm

timeMs Offset de tiempo para desplazar el punto de

conmutación.

ms

Tabla 24.2 Parámetros de la instrucción OnDistance

Nota

La instrucción OnDistance sólo se puede utilizar junto con movimientos cartesianos (p. ej. Lin y CircIP). No es posible su uso con movimientos PTP. En caso de uso antes de instrucciones de desplazamiento PTP, se emite una advertencia.

El efecto del offset de tiempo (parámetro timeMs) se trata en el capítulo 24.6 Offset de

tiempo opcional de la página 238.

24. Puntos de conmutación de la trayectoria

Festo GDCP-CMXR-SW-ES es 1205c 233

type

El parámetro type especifica si el punto de conmutación hace referencia al fin o al inicio del segmento.

OnDistance (FROMBEGIN, 0) se activa al inicio del segmento:

OnDistance (FROMEND, 0) se activa al fin del segmento:

offset

El desplazamiento del punto de conmutación tiene lugar siempre en el segmento de trayectoria en cuestión. En este sentido, mediante el parámetro type se puede especificar si este offset se refiere al inicio o al fin del segmento.

Si se selecciona una referencia al inicio del segmento, el offset se prolonga en el segmento en dirección al fin del segmento. En el caso de una referencia al fin del segmento, el offset se compensa en dirección al inicio del segmento.

Nota

El parámetro offset debe especificarse como valor positivo. Si se especifica un valor negativo, se emitirá un mensaje correspondiente.

P1 P2 P3

Fin del segmento = Punto de

conmutación

P1 P2 P3

Fin de segmento

Inicio del segmento = Punto de conmutación

Inicio de segmento

24. Puntos de conmutación de la trayectoria

234 Festo GDCP-CMXR-SW-ES es 1205c

Ejemplo de punto de conmutación con distancia desde el fin del segmento:

:

Lin(P1)

OnDistance(FROMBEGIN, 30) DO <Instrucción>

Lin(P2)

Lin(P3)

:

Ejemplo de punto de conmutación con distancia desde el fin del segmento:

:

Lin(P1)

OnDistance(FROMEND, 30) DO <Instrucción>

Lin(P2)

Lin(P3)

:

P1 P2 P3

Punto de conmutación

Fin de segmento

Offset = 30 mm

Inicio de segmento

P1 P2 P3

Punto de conmutación

Fin de segmento Offset = 30 mm

Inicio de segmento

24. Puntos de conmutación de la trayectoria

Festo GDCP-CMXR-SW-ES es 1205c 235

24.5 Punto de conmutación en un plano de conmutación, <OnPlane>

La macro del punto de conmutación permite la ejecución de una instrucción al atravesar un plano programable en el espacio. El plano de conmutación debe atravesarse en el segmento de la instrucción de desplazamiento cartesiano siguiente. El plano está situado a una distancia parametrizable en paralelo a un plano del sistema de referencia actual.

Sintaxis

OnPlane( <plane> : PLANETYPE,

<pos> : REAL,

OPT <timeMs> : REAL ) DO < Instrucción >

Parámetros Significado Unidad

plane Selección del plano XYPLANE, YZPLANE,

XZPLANE.

-

pos Desplazamiento en paralelo del plano respecto

del punto cero del sistema de referencia activo.

mm

timeMs Desplazamiento temporal del punto de

conmutación programado

Tabla 24.3 Parámetros de la instrucción OnPlane

El efecto del offset de tiempo (parámetro timeMs) se trata en el capítulo 24.6 Offset de tiempo opcional de la página 238.

Nota

La elección del plano de conmutación XY, YZ o XZ mediante el parámetro plane se define en el sistema de referencia activo. Al cambiar a otro sistema de referencia debe tenerse en cuenta que podría cambiar la situación de los planos.

Nota

El plano de conmutación sólo puede activarse mediante movimien-tos cartesianos. Si es atravesado por un movimiento PTP, se emitirá una advertencia, puesto que el punto de conmutación no se puede calcular con un movimiento PTP.

24. Puntos de conmutación de la trayectoria

236 Festo GDCP-CMXR-SW-ES es 1205c

Ejemplo:

En el ejemplo siguiente se define un plano paralelo al plano XZ del sistema de referencia activo. Puesto que el plano está situado en el punto cero del sistema de referencia, debe desplazarse correspondientemente en paralelo con el parámetro pos.

:

// Ida

Lin(P0)

OnPlane(XZPLANE, 100) DO mySignal := TRUE

Lin(P1)

Lin(P2)

// Vuelta

Lin(P1)

OnPlane(XZPLANE, 100) DO mySignal := FALSE

Lin(P0)

:

1

1 P1 Y

1

1 P1´

1

1 P0

1

1 P2

1

1 Plano XZ

100 mm

X

Z

24. Puntos de conmutación de la trayectoria

Festo GDCP-CMXR-SW-ES es 1205c 237

24.5.1 Programación tipo teach-in de la posición respecto al plano de conmutación

Para facilitar el trabajo, junto con la introducción de un valor, la posición respecto al plano de conmutación también se puede programar por teach-in. Esto se realiza con la ayuda de la unidad de mando manual o del software de emulación.

En el modo de funcionamiento MANUAL, se abre la máscara de parámetros de la instrucción al crear la macro o mediante la tecla de pantalla Modificar. Al marcar la línea Posición, se activa la tecla de pantalla y se puede utilizar.

La programación tipo teach-in de la posición depende del plano seleccionado mediante el parámetro plane. Se programan por teach-in los siguientes valores cartesianos:

Plano seleccionado, parámetro plane Eje cartesiano que se programa por

teach-in

XYPlane Z

XZPlane Y

YZPlane X

Tabla 24.4 Parámetros de teach-in plane

Pulsando la tecla de pantalla se ejecuta la programación tipo teach-in. Se deter-

mina el valor cartesiano del eje correspondiente (véase tabla) y se escribe en el parámetro pos. Si se ha asignado una variable a este parámetro, se escribe el valor en esta variable.

Nota

El valor siempre se programa por teach-in en el sistema de refe-rencia seleccionado. Éste se muestra en el cuadro de selección en la página de posición.

1. Hacer clic en el campo

de parámetros y se mostrará de color azul

2. Se activa la tecla de pantalla de programación tipo teach-in

24. Puntos de conmutación de la trayectoria

238 Festo GDCP-CMXR-SW-ES es 1205c

Punto de

conmutación

P1 P2

Offset

Offset de tiempo negativo

Punto de

conmutación

P1 P2

Offset

Offset de tiempo negativo

Punto de

conmutación

P1 P2

Offset

Offset de tiempo positivo

24.6 Offset de tiempo opcional

En las macros descritas de punto de conmutación OnParameter, OnDistance y OnPlane, se puede indicar opcionalmente un offset de tiempo. Con este offset de tiempo se pueden desplazar temporalmente acciones de conmutación en el segmento de la trayectoria.

Un valor temporal positivo desplaza la acción de conmutación al futuro, mientras que un valor temporal negativo activa antes la acción de conmutación. Para un offset negativo se permite un máx. de 300 ms, mientras que para un offset positivo el máximo es 1 s.

Nota

Si no se indica el offset de tiempo opcional, éste se inicializa con el valor 0. La indicación del valor temporal se realiza en ms.

Ejemplo con offset de tiempo negativo:

:

Lin(P1)

OnDistance(FROMEND, 0, -55) DO Lamp.Set()

Lin(P2)

:

Ejemplo de offset de tiempo negativo en el segmento:

:

Lin(P1)

OnDistance(FROMEND, 0, -250) DO Lamp.Set()

Lin(P2)

:

Ejemplo con offset de tiempo positivo:

:

Lin(P1)

OnDistance(FROMEND, 0, 250) DO

Lamp.Set()

Lin(P2)

:

24. Puntos de conmutación de la trayectoria

Festo GDCP-CMXR-SW-ES es 1205c 239

Nota

El offset de tiempo negativo máximo es un valor limitado que puede ascender a 300 ms como máximo, mientras que el valor positivo máximo es 1 s. En caso de valores no permitidos, se emite un mensaje de advertencia para indicar que el punto de conmutación de la trayectoria posee un valor temporal no permitido.

24.6.1 Reacción del sistema en caso de valor temporal no permitido

Si al indicar el valor temporal se infringen los valores máximos permitidos, se emite un mensaje de advertencia. Dentro de este mensaje se incluye la macro de punto de conmutación con la indicación del programa y de la línea de programa en cuestión.

24. Puntos de conmutación de la trayectoria

240 Festo GDCP-CMXR-SW-ES es 1205c

24.7 Condiciones generales

24.7.1 Funcionamiento paso a paso

Si en el modo manual, en la unidad de mando manual se selecciona el funcionamiento paso a paso para la ejecución de programas, no se ejecutan los puntos de conmutación programados de la trayectoria. Debido a la parada tras cada línea de programa, no es posible un cálculo y una ejecución de los puntos de conmutación de la trayectoria.

Nota

La selección del funcionamiento paso a paso se realiza mediante la

tecla , que está situada en la ventana de la vista de programa. Dentro de la vista de programa, el estado activo se muestra en la cabecera del programa.

24.7.2 Instrucciones de espera que influyen en la ejecución principal

En las partes del programa donde se utilicen puntos de conmutación de la trayectoria no se pueden utilizar instrucciones de espera como, p. ej., WaitTime, WaitOnPos, WaitOnPath, WaitOnMainRun. Estas instrucciones influyen en el cálculo por adelantado del programa y, por consiguiente, en el cálculo de los puntos de conmutación de la

trayectoria. En caso de usar estas instrucciones, se mostrará un mensaje al respecto.

24.7.3 Fijación del indicador de frase

Si el indicador de frase (flecha azul) se fija en una macro de conmutación de trayectoria del tipo OnDistance, OnParameter u OnPlane, ésta no se ejecutará al iniciar el programa. La ejecución no podrá realizarse hasta que se haya alcanzado el punto inicial del primer segmento de trayectoria completo y se haya activado el movimiento en dirección al punto de destino.

Nota

Los puntos de conmutación de trayectoria programados antes de un primer segmento de trayectoria no tienen efecto. La ejecución no se puede realizar hasta encontrarse dentro de un segmento de trayectoria iniciado. El sistema genera un mensaje de advertencia para indicar que estos puntos de conmutación no pueden ejecutarse.

Si se inicia el programa mostrado en la imagen siguiente, no se puede ejecutar el punto de conmutación programado donde está situado el indicador de programa.

24. Puntos de conmutación de la trayectoria

Festo GDCP-CMXR-SW-ES es 1205c 241

24.7.4 Influencia del override

Con el override se puede reducir porcentualmente la velocidad actual de la cinemática. Esta modificación tiene efectos inmediatos en el movimiento actual e influye sobre él correspondientemente. Para garantizar una ejecución segura de los puntos de conmutación de trayectoria, el override debe poseer un valor constante durante la ejecución. Una modificación del override durante la ejecución de los puntos de conmutación de trayectoria puede provocar imprecisiones.

Si se desea que el programa se ejecute siempre con un determinado override, p. ej. 100%, se puede insertar la macro Ovr (véase capítulo 10.5.1 Override en la unidad de mando

manual <Ovr>). De este modo el override se fija una vez mediante el programa FTL. Se puede realizar una modificación manual en cualquier momento.

Ejemplo:

:

// Ajuste del override al 100%

Ovr(100)

Lin(HomePos)

Lin(pos1)

// Punto de conmutación

OnDist(FROMEND, Offset, -55) DO Gripper.Set()

Lin(pos2)

Lin(pos3)

:

El punto de conmutación

no puede ejecutarse

24. Puntos de conmutación de la trayectoria

242 Festo GDCP-CMXR-SW-ES es 1205c

24.7.5 Trabajar en modo manual con velocidad reducida

Los puntos de conmutación de la trayectoria también pueden ejecutarse y probarse en accionamiento manual con velocidad reducida. No obstante, la ejecución del programa debe llevarse a cabo en funcionamiento continuo; una ejecución en funcionamiento paso a paso no es posible (véase el capítulo 24.7.1 Funcionamiento paso a paso).

La velocidad reducida se utiliza como valor máximo para la velocidad de trayectoria programada. Ésta se emplea para el cálculo de los puntos de conmutación de trayectoria durante la ejecución. De este modo, la velocidad de trayectoria reducida tiene influencia en la precisión de conmutación de los puntos de conmutación de trayectoria.

Sin embargo, si se utiliza el avance aproximado por velocidad (macro OvlVel), cambia el

comportamiento de avance aproximado, puesto que se calcula dinámicamente en función de la velocidad de trayectoria. Si los puntos de conmutación de trayectoria están situados en el área de avance aproximado, puede producirse una diferencia de la posición de los puntos de conmutación en comparación con el modo automático.

La utilización del avance aproximado geométrico (macro OvlCart) no se ve influida por la velocidad de trayectoria reducida.

¡Atención!

Si un punto de conmutación de trayectoria esta situado en el área de avance aproximado, debido a la velocidad de trayectoria reducida, pueden producirse diferencias en la posición de conmutación respecto al modo automático (velocidad completa). Por consiguiente, el comportamiento de conmutación debe verificarse y optimizarse siempre en modo automático.

24.7.6 Interrupción del programa

Un programa activo se puede parar y, por consiguiente, interrumpir mediante una parada a través de la tecla de parada de la unidad de mando manual o a través de un PLC. Al reini-ciar, el programa continúa y se ejecutan los eventuales puntos de conmutación de trayec-toria siguientes. Si este inicio y/o parada se produce durante la ejecución de un punto de conmutación de trayectoria, puede provocar imprecisiones en el comportamiento de

conmutación.

¡Atención!

Si al parar el programa ya se están calculando puntos de conmutación de trayectoria, esto repercutirá en la ejecución y, por consiguiente, en la precisión al volver a iniciar el programa. Esto puede provocar mermas de calidad.

24. Puntos de conmutación de la trayectoria

Festo GDCP-CMXR-SW-ES es 1205c 243

24.8 Puntos de conmutación no ejecutados

Al final de cada segmento se comprueba si se han ejecutado todos los puntos de conmu-tación programados. Si sucede que no se ha ejecutado algún punto de conmutación, p. ej., no se ha atravesado un plano definido, se emite un mensaje de advertencia para cada trigger no ejecutado.

Este mensaje incluye la información siguiente:

- Nombre de la macro de punto de conmutación del programa FTL

- Nombre de proyecto y programa

- Número de línea

25. Ejemplos

244 Festo GDCP-CMXR-SW-ES es 1205c

25. Ejemplos En los capítulos siguientes aparecen ejemplos de utilización del lenguaje de programación.

Advertencia

Todos los ejemplos sirven para explicar la utilización del lenguaje de programación y no pretenden una exposición completa y veraz ni proporcionar un ejemplo de aplicación lista para funcionar. Si en una aplicación se incluyen partes del programa de los ejemplos, éstas deberán comprobarse en relación a su propósito y el funcio-namiento debe asegurarse con la puesta a punto correspondiente.

La inobservancia de lo anteriormente mencionado puede ocasionar daños personales y materiales.

25.1 Detención de movimientos

Un robot manipulador debe recoger una placa de chapa de una pila y posarla sobre una vía de rodillos. La altura exacta de la pila es desconocida. El sistema de pinzas está equipado con un sensor que permite interrogar si la herramienta prensora avanza en dirección a un obstáculo. Este sensor se utiliza para detectar la placa de chapa superior. Para detectar si una pila de chapa está mecanizada existe otro sensor (para detectar pilas vacías).

Vía de rodillos

Pila de chapa

Sistema de pinzas con detección de avance

Entrada: inCollision

Sensor para detectar pilas vacías

Entrada: inStackNotEmpty

x

z

y

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 245

El programa de movimientos tiene las posiciones siguientes:

Descripción Nombre de la variable de posición

Posición de recogida en la pila de chapa takePosStack

Posición de seguridad sobre la pila de chapa safetyPosStack

Posición de seguridad sobre la vía de rodillos safetyDepositPos

Posición de posado sobre la vía de rodillos depositPos

Posición modificable frente a la pila de chapa prePosition

Tabla 25.1 Tabla de posicionamiento

Para esta aplicación pueden utilizarse más posiciones, pero el ejemplo se limita a las

indicadas.

Como la altura de pila varía, la altura de recogida es desconocida y se fija debajo de la pila.

safetyPosStack

takePosStack

safetyDepositPos

depositPos

25. Ejemplos

246 Festo GDCP-CMXR-SW-ES es 1205c

Programa de movimientos:

:

Vel(dynCart, 200) // Velocidad lenta

prePosition := safetyPosStack

WHILE TRUE DO

Lin(safetyPosStack)

WAIT inStackNotEmpty.State // Comprobar si hay piezas

en la pila

Lin(prePosition)

Vel(dynCart, 200) // Velocidad lenta

Lin(takePosStack)

WAIT inCollision.State // Esperar a la señal de avance

del sensor

StopMove() // Detener el movimiento

// Determinar la posición real sobre la pila

ReadActualPos(prePosition)

// Calcular la distancia de seguridad sobre la pila

prePosition.z := prePosition.z - 10

gripper.Set() // Cerrar pinza

Vel(dynCart, 1000) // Velocidad rápida

Lin(safetyPosStack)

Lin(safetyDepositPos)

Lin(depositPos)

gripper.Reset() // Abrir pinza

Lin(safetyDepositPos)

END_WHILE

:

Funcionamiento

La cinemática avanza hasta la posición de recogida hasta que la pinza se encuentra sobre la placa de chapa y el sensor de detección de avance emite la señal correspondiente. Esto se efectúa a velocidad lenta para impedir que se produzcan daños en el sistema.

Para alcanzar una posición lo más aproximada posible sobre la pila en el ciclo siguiente, se guarda la posición real sobre la pila. Esta posición se complementa con una distancia de seguridad. Así, en el ciclo siguiente puede avanzarse a mayor velocidad sobre la pila. A continuación se conmuta a una velocidad lenta hasta hacer contacto con la pieza.

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 247

25.2 Empleo de los módulos de entrada y salida

Al instanciar módulos de entrada o salida puede definirse un timeout. P. ej., si la función Wait del módulo se utiliza en la ejecución, el programa de usuario debe evaluar el timeout que pueda aparecer.

Programa de movimientos:

:

inSensor.Wait()

IF inSensor.Read() = FALSE THEN

// Interrumpir ejecución

SetError(“Timeout over”)

RETURN

END_IF

// Reanudar ejecución

Lin(pos)

:

Nota

La edición de un mensaje de error provoca la detención del movimiento. No es posible reanudar la ejecución hasta que se acuse recibo del mensaje de error.

25. Ejemplos

248 Festo GDCP-CMXR-SW-ES es 1205c

25.3 Control del avance de proceso

A continuación se explica con ejemplos cómo el cálculo puede influir en el avance de proceso.

1. Espera a la señal de entrada digital

La instrucción WAIT activa la espera a una señal de entrada digital durante la ejecución del programa. Si el estado de la entrada digital es FALSE, el avance de proceso se detiene. Si el estado es TRUE, el cálculo se reanuda. Ello se muestra en la figura siguiente.

2. Contador de bucles

Una parte del programa se repite 10 veces con un bucle contador. Los ciclos se cuentan con un contador de bucles. El avance de proceso interpreta el programa secuencial e incrementa el contador de bucles. De este modo, el avance de proceso alcanza rápidamente el fin de programa y el contador de bucles alcanza el valor 10. En este tiempo, el proceso principal ha alcanzado primero la instrucción Lin(Pos1).

Si el contador de bucles visualiza el ciclo real, el avance de proceso debe interrumpirse con una instrucción WaitTime. El contador de bucles se incrementará siempre al alcanzar

la Pos3. Ello se muestra en la figura siguiente.

Lin(Pos1)

Lin(Pos2)

Lin(Pos3)

Lin(Pos4)

WAIT Sensor.State

Lin(Pos5)

Lin(Pos6)

Lin(Pos7)

Lin(Pos8)

Lin(Pos9)

Proceso

principal

Avance de proceso

Lin(Pos1)

Lin(Pos2)

Lin(Pos3)

Lin(Pos4)

WAIT Sensor.State

Lin(Pos5)

Lin(Pos6)

Lin(Pos7)

Lin(Pos8)

Lin(Pos9)

Proceso

principal

Avance de proceso

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 249

25.4 Empleo de pinzas

En los sistemas de manipulación se utiliza una gran cantidad de pinzas diferentes. El pro-cedimiento de sujeción requiere tiempo para cerrar o abrir la pinza y, por tanto, puede influir de manera importante en el tiempo de ciclo.

Nota

Los tiempos de sujeción aumentan el tiempo de ciclo y, por ello, deben tenerse siempre en cuenta. Algunas pinzas requieren también un tiempo de espera en el programa FTL para garantizar su apertura o cierre.

Nota

Los tiempos de espera para el estado cerrado o abierto de las pinzas neumáticas dependen siempre de la presión ajustada. Si la presión cambia, los tiempos también deben adaptarse. Por lo general no es necesario ajustar tiempos de espera si el sistema de pinzas cuenta con sensores para posiciones finales.

En los capítulos siguientes se explica la integración de diferentes tipos de pinza en el sistema CMXR.

count := 0

Lin(Pos1)

Lin(Pos2)

LOOP 10 DO

Lin(Pos3)

count:=count + 1

Lin(Pos4)

END_LOOP

Lin(Pos5)

Proceso principal

Avance de proceso

count := 0

Lin(Pos1)

Lin(Pos2)

LOOP 10 DO

Lin(Pos3)

WaitTime(1)

count:=count + 1

Lin(Pos4)

END_LOOP

Lin(Pos5)

Proceso principal

Avance de proceso

25. Ejemplos

250 Festo GDCP-CMXR-SW-ES es 1205c

25.4.1 Pinzas por vacío

El tipo de pinzas por vacío permite una ejecución muy rápida de los ciclos. Estas pinzas requieren vacío que puede generarse, p. ej., con toberas Venturi.

El vacío debe existir en el momento de aceptación de la pieza. Cuando la pieza se posa, además de desconectarse el vacío debe ejecutarse un impulso de eyección para eliminar el vacío creado en la pinza. Los generadores de vacío, como VN-..-H-...-A, ejecutan automá-

ticamente el impulso de eyección al desconectarse el vacío. Con otros tipos, el impulso de eyección se controla desde una señal digital adicional.

Pinza por vacío ESG Generador de vacío VN-..-H-...-A con

impulso de eyección incorporado

Ejemplo:

Una pieza debe transportarse desde la posición pos2 a la posición pos4.

Como generador de vacío se utiliza una tobera Venturi. Ésta se controla a través de una salida digital del CMXR. Para ello se crea un módulo de salida digital.

pos2 pos4

pos3 pos1

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 251

Variables:

vacuum : DOUT := (...) // Módulo de salida digital

Programa:

Vel(dynCart, 1500) // Velocidad de trayectoria = 1500 mm/s

Acc(dynCart, 5000) // Aceleración de trayectoria = 5000 mm/s²

OvlVel(75) // Avance aproximado por velocidad al 75%

Lin(pos1)

vacuum.Set() // Conectar inmediatamente el vacío

Lin(pos2) // Posición de aceptación

WaitTime(10) // 10 ms de tiempo de espera para tiempo de

sujeción

Lin(pos1)

Lin(pos3) // Sobre posición de posado

Lin(pos4) // Posición de posado

vacuum.Reset() // Desconectar el vacío en el punto

inferior

WaitTime(20) // 20 ms de tiempo de espera para tiempo de

sujeción

Lin(pos3)

Funcionamiento:

Dado que en la pinza no hay acuses de recibo, es necesario introducir un tiempo de espera para el cierre y la apertura. Éste se determina y optimiza con ayuda de la puesta a punto.

Los movimientos se recorren con un avance aproximado por velocidad al 75%. Una excepción son las posiciones de aceptación pos2 y de posado pos4. La instrucción siguiente WaitTime impide el avance aproximado ya que el cálculo por adelantado

de proceso se detiene en este punto y se reanuda transcurrido el ciclo.

25. Ejemplos

252 Festo GDCP-CMXR-SW-ES es 1205c

Perfil de movimiento:

Comportamiento en la línea temporal:

Tiempo

pos1 pos3

Tiempo de espera

pos4

pos3

pos2

pos1

pos2 pos4

pos3 pos1

Área de avance aproximado

Velocidad

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 253

25.4.2 Pinzas paralelas neumáticas

Las pinzas paralelas poseen mordazas que se cierran en paralelo. Las mordazas pueden adaptarse individualmente a la aplicación.

Por lo general, las pinzas paralelas se controlan con dos salidas separadas para la aper-tura y el cierre. Opcionalmente pueden integrarse sensores en las pinzas para recibir los acuses de recibo a través de las posiciones finales (abierto o cerrado).

Ejemplo:

Una pieza debe transportarse desde la posición pos2 a la posición pos4.

Se utiliza una pinza paralela con técnica de sensores de posición final. Se obtienen las señales digitales siguientes y se integran en forma de módulos en la programación FTL.

pos2 pos4

pos3 pos1

25. Ejemplos

254 Festo GDCP-CMXR-SW-ES es 1205c

Variables:

outGripperOpen : DOUT := (...) // Módulo de salida digital

outGripperClose : DOUT := (...) // Módulo de salida digital

inGripperOpen : DIN := (...) // Módulo de entrada digital

inGripperClosed : DIN := (...) // Módulo de entrada digital

Programa:

Vel(dynCart, 1500) // Velocidad de trayectoria = 1500 mm/s

Acc(dynCart, 5000) // Aceleración de trayectoria = 5000 mm/s²

OvlVel(75) // Avance aproximado por velocidad al 75%

Lin(pos1)

outGripperClose.Reset()

outGripperOpen.Set() // Abrir pinza

inGripperOpen.Wait(TRUE) // Esperar a que se abra

Lin(pos2) // Posición de aceptación

outGripperOpen.Reset()

outGripperClose.Set() // Cerrar pinza

inGripperClosed.Wait() // Esperar a que se cierre

Lin(pos1)

Lin(pos3)

Lin(pos4) // Posición de posado

outGripperClose.Reset()

outGripperOpen.Set() // Abrir pinza

inGripperOpen.Wait() // Esperar a que se abra

Lin(pos3)

Funcionamiento:

Si se dispone de sensores para acusar recibo de las posiciones finales de sujeción, no es necesario un tiempo de espera.

Los movimientos se recorren con un avance aproximado por velocidad al 75%. El método de módulo Wait introduce una espera al acuse de recibo de la posición final que evita un avance aproximado a las posiciones de aceptación y posado. El cálculo por adelantado de proceso se detiene en este punto y se reanuda al conmutarse la señal de entrada digital.

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 255

Perfil de movimiento:

Comportamiento en la línea temporal:

Tiempo

pos3

pos4

pos3

pos2

pos1

Tiempo de espera hasta acusar recibo del cierre de la pinza

Tiempo de espera hasta acusar recibo de la apertura de la pinza

Velocidad

pos1

pos2 pos4

pos3 pos1

Área de avance aproximado

25. Ejemplos

256 Festo GDCP-CMXR-SW-ES es 1205c

25.4.3 Unidad giratoria con pinzas neumáticas

La unidad giratoria con pinzas neumáticas HGDS de Festo reúne una pinza paralela con un actuador giratorio en una sola unidad.

La unidad HGDS permite montar sensores de detección de posiciones finales de la pinza y del actuador giratorio. Los sensores se requieren para el control seguro de la aplicación.

Ejemplo:

Una pieza debe transportarse desde la posición pos2 a la posición pos4 describiendo un giro de 90 grados.

Se utiliza la unidad HGDS, que dispone de los sensores correspondientes para detectar las posiciones finales. Se obtienen las señales digitales siguientes y se integran en forma de módulos en la programación FTL.

pos2 pos4

pos3 pos1

Giro de 90 grados

Unidad giratoria con pinzas HGDS con pinza paralela

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 257

Variables:

outGripperOpen : DOUT := (...) // Módulo de salida digital

outGripperClose : DOUT := (...) // Módulo de salida digital

outPos0Degree : DOUT := (...) // Módulo de salida digital

outPos90Degree : DOUT := (...) // Módulo de salida digital

inGripperOpen : DIN := (...) // Módulo de entrada digital

inGripperClose : DIN := (...) // Módulo de entrada digital

inPos0Degree : DIN := (...) // Módulo de entrada digital

inPos90Degree : DIN := (...) // Módulo de entrada digital

Programa:

Vel(dynCart, 1500) // Velocidad de trayectoria = 1500 mm/s

Acc(dynCart, 5000) // Aceleración de trayectoria = 5000 mm/s²

OvlVel(75) // Avance aproximado por velocidad al 75%

Lin(pos1) // Avanzar sobre pieza

outGripperClose.Reset() // Abrir pinza

outGripperOpen.Set()

outPos0Degree.Set() // Girar a 0 grados

outPos90Degree.Reset()

inGripperOpen.Wait() // Esperar a pinza abierta

inPos0Degree.Wait() // Esperar a 0 grados

Lin(pos2) // Posición de aceptación

outGripperOpen.Reset()

outGripperClose.Set() // Cerrar pinza

inGripperClose.Wait() // Esperar a pinza cerrada

Lin(pos1)

outPos0Degree.Reset() // Girar a 90 grados

outPos90Degree.Set()

Lin(pos3)

inPos90Degree.Wait(TRUE) // Esperar a 90 grados con avance

aproximado

Lin(pos4) // Posición de posado

outGripperClose.Reset() // Abrir pinza

outGripperOpen.Set()

inGripperOpen.Wait() // Esperar a pinza abierta

Lin(pos3)

25. Ejemplos

258 Festo GDCP-CMXR-SW-ES es 1205c

Funcionamiento

Con los sensores integrados no es necesario un tiempo de espera para acusar recibo de los movimientos de la pinza ni de giro.

La interrogación del movimiento de giro de 90 grados se ejecuta con posibilidad de realizar el avance aproximado. Ello significa que si no existe acuse de recibo del giro de 90 grados al avanzar a la pos4, el movimiento se detiene y se espera hasta que se acusa recibo. Si el acuse de recibo ya se ha efectuado, se ejecuta directamente un movimiento de avance aproximado a la pos4.

Perfil de movimiento:

El acuse de recibo del movimiento de giro de 90 grados se detecta antes de alcanzar la

posición pos3. Se ejecuta un movimiento de avance aproximado a la pos4.

El acuse de recibo del movimiento de giro de 90 grados no se ha detectado antes de alcanzar la posición pos3. Se espera al acuse de recibo en la posición pos3 y no se ejecuta el movimiento de avance aproximado a la pos4.

pos2 pos4

pos3 pos1

Área de avance aproximado

pos2 pos4

pos3 pos1

Área de avance aproximado

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 259

Comportamiento en la línea temporal:

El acuse de recibo del movimiento de giro de 90 grados tuvo lugar antes de alcanzar la posición pos3. Se ejecuta un movimiento de avance aproximado a la pos4.

No hay acuse de recibo del giro de 90 grados en la posición pos3. Se espera a recibirlo.

Tiempo

pos1 pos3

pos4 pos3 pos2

pos1

Tiempo de espera hasta acusar recibo del cierre de la pinza

Tiempo de espera hasta acusar recibo de la apertura de la pinza

Velocidad

Tiempo de espera hasta acusar recibo del giro de 90 grados

Tiempo

pos1 pos3

pos4

pos3

pos2

pos1

Tiempo de espera hasta acusar recibo del cierre de la pinza

Tiempo de espera hasta acusar recibo de la apertura de la pinza

Velocidad

Acuse de recibo del giro de 90 grados

25. Ejemplos

260 Festo GDCP-CMXR-SW-ES es 1205c

25.5 Empleo de la interface PLC

25.5.1 Tarea

En el ejemplo siguiente se van a recoger piezas en la posición “posRecogida” y se van a transportar a la posición de posado “posPosado”. La posición de recogida es dinámica. Las coordenadas exactas son calculadas en cada ciclo mediante un sistema de visión y son enviadas al control a través de la interface PLC PROFIBUS.

A partir de las posiciones inicial y final, van a calcularse para el ciclo dos posiciones intermedias dinámicas que se utilizarán como puntos de apoyo en el ciclo.

Si el PLC no suministra los datos a tiempo, el ciclo se detiene en la posición “posEspera” hasta que el PLC esté preparado.

25.5.2 Interface PLC

El intercambio de datos entre el control CMXR y el PLC se efectúa con dos bits de sincronización. En el primer paso, el PLC señaliza que se han enviado los datos. En el momento en que el CMXR recibe los datos, se lo indica al PLC. A continuación se borran las dos señales de interface. La secuencia se muestra en el diagrama de flujo siguiente.

Aceptar posición

Señal del PLC Datos preparados

plc_inboolreg[0]

Señal al PLC Datos leídos

plc_outboolreg[0]

Se ha transmitido la posición nueva

Posicionamiento efectuado

Fin de transmisión

posRecogida posPosado

sobrePosPosado sobrePosRecogida posEspera

25. Ejemplos

Festo GDCP-CMXR-SW-ES es 1205c 261

25.5.3 Programa secuencial

Variables:

waitPos : CARTPOS := (...)

pickPos : CARTPOS := (...)

depositPos : CARTPOS := (...)

abovePickPos : CARTPOS := (...)

aboveDepositPos : CARTPOS := (...)

gripper : DOUT := (...)

Programa:

// Inicialización

Acc(dynCart, 4000)

Vel(dynCart, 100)

Lin(waitPos)

WHILE TRUE DO

// Handshake

WAIT plc_inboolreg[0] // PLC señaliza una posición nueva

pickPos := plc_cposreg[0]

abovePickPos.x := plc_cposreg[0].x

abovePickPos.y := plc_cposreg[0].y

plc_outboolreg[0] := TRUE // Confirma la recepción

WAIT NOT plc_inboolreg[0] // Esperar a la respuesta del PLC

plc_outboolreg[0] := FALSE

// Avanzar a la posición de aceptación

Lin(abovePickPos)

Lin(pickPos)

// Agarrar

gripper.Set()

WaitTime(200)

// Avanzar a la posición de posado

Lin(abovePickPos)

Lin(aboveDepositPos)

25. Ejemplos

262 Festo GDCP-CMXR-SW-ES es 1205c

Lin(depositPos)

// Posar

gripper.Reset()

WaitTime(200)

// Avanzar a la posición de espera

Lin(aboveDepositPos)

Lin(waitPos)

END_WHILE

A. Lista de instrucciones FTL

Festo GDCP-CMXR-SW-ES es 1205c 263

A. Lista de instrucciones FTL La tabla siguiente muestra la disponibilidad de las macros FTL en los diferentes sistemas, junto con la versión de sistema operativo correspondiente.

CMXR-C1 CMXR-C2

Instrucciones FTL Versión 1.06 Versión 1.25 Versión 1.0.0 Versión 1.1.0

Tipos de datos

BOOL √ √ √ √

REAL √ √ √ √

DINT √ √ √ √

DWORD √ √ √ √

STRING √ √ √ √

( ) - √ √ √

ARRAY - √ √ √

Funciones, instrucciones

LOW - √ √ √

HIGH - √ √ √

MAPTO - √ √ √

MAP - √ √ √

IS_MAPPED - √ √ √

Control de programa, bucles

IF … THEN, ELSIF…. THEN, ELSE √ √ √ √

LABEL √ √ √ √

IF … GOTO √ √ √ √

GOTO √ √ √ √

WHILE …. DO √ √ √ √

LOOP √ √ √ √

CALL √ √ √ √

RUN √ √ √ √

RETURN √ √ √ √

KILL √ √ √ √

WaitTime √ √ √ √

WAIT √ √ √ √

WaitOnPath - √ √ √

WaitOnPos - √ √ √

WaitOnMainRun - - √ √

Instrucciones de movimiento

Ptp √ √ √ √

PtpRel √ √ √ √

A. Lista de instrucciones FTL

264 Festo GDCP-CMXR-SW-ES es 1205c

CMXR-C1 CMXR-C2

Instrucciones FTL Versión 1.06 Versión 1.25 Versión 1.0.0 Versión 1.1.0

MoveAxisPtp √ √ √ √

Lin √ √ √ √

LinRel √ √ √ √

MoveAxisCart √ √ √ √

CircIp √ √ √ √

PtpToCircIp √ √ √ √

LinToCircIP √ √ √ √

StopMove √ √ √ √

StopProgram √ √ √ √

Instrucciones de dinámica

Vel √ √ √ √

Acc √ √ √ √

Jerk √ √ √ √

Ovr √ √ √ √

DynOvr √ √ √ √

Ramp √ √ √ √

VconstOn √ √ √ √

VconstOff √ √ √ √

Instrucciones de avance aproximado

OvlVel √ √ √ √

OvlCart √ √ √ √

Sistemas de referencia

SetRefSys √ √ √ √

SetRefSys3P √ √ √ √

SetRefSysWorld √ √ √ √

SetRefSysDyn - - √ √

Recorrido de referencia

RefAxis √ √ √ √

RefAxisAsync √ √ √ √

WaitRefFinished √ √ √ √

IsAxisReferenced √ √ √ √

Herramientas

Tool √ √ √ √

Modo cinemático

SetRobotMode - - - √

GetRobotMode - - - √

Interface Profibus, variables de sistema, funciones

A. Lista de instrucciones FTL

Festo GDCP-CMXR-SW-ES es 1205c 265

CMXR-C1 CMXR-C2

Instrucciones FTL Versión 1.06 Versión 1.25 Versión 1.0.0 Versión 1.1.0

plc_InBool : ARRAY[16] OF BOOL

√ √ - -

plc_OutBool : ARRAY[16] OF BOOL

√ √ - -

plc_Dint : ARRAY[256] OF DINT √ √ - -

plc_AxisPos : ARRAY[256] OF AXISPOS

√ √ - -

plc_CartPos : ARRAY[256] OF CARTPOS

√ √ - -

plc_RefSys : ARRAY[16] OF REFSYSDATA

√ √ - -

ProgHold √ √ √ √

Interface de variables con PLC interno (CoDeSys)

plc_InBool : ARRAY[256] OF BOOL

- - √ √

plc_OutBool : ARRAY[256] OF BOOL

- - √ √

plc_InDword : ARRAY[256] OF DWORD

- - √ √

plc_OutDword : ARRAY[256] OF DWORD

- - √ √

plc_InDint : ARRAY[256] OF DINT - - √ √

plc_OutDint : ARRAY[256] OF DINT

- - √ √

plc_InReal : ARRAY[256] OF Real - - √ √

plc_OutReal : ARRAY[256] OF Real

- - √ √

plc_InAxisPos : ARRAY[256] OF AXISPOS

- - √ √

plc_OutAxisPos : ARRAY[256] OF AXISPOS

- - √ √

plc_InCartPos : ARRAY[256] OF CARTPOS

- - √ √

plc_OutCartPos : ARRAY[256] OF CARTPOS

- - √ √

Sistema de comunicación

SetInfo √ √ √ √

SetWarning √ √ √ √

SetError √ √ √ √

Funciones

ReadActualPos √ √ √ √

ReadTargetPos √ √ √ √

SavePosition √ √ √ √

A. Lista de instrucciones FTL

266 Festo GDCP-CMXR-SW-ES es 1205c

CMXR-C1 CMXR-C2

Instrucciones FTL Versión 1.06 Versión 1.25 Versión 1.0.0 Versión 1.1.0

SIN, ASIN √ √ √ √

COS, ACOS √ √ √ √

TAN, ATAN √ √ √ √

COT, ACOT √ √ √ √

ATAN2 √ √ √ √

LN √ √ √ √

EXP √ √ √ √

ABS √ √ √ √

SQRT √ √ √ √

Funciones del sistema

GetAutoModeActive √ √

GetManualModeActive √ √

Time √ √ √ √

TimeToStr √ √ √ √

LoadProgram √ √

Timer, CLOCK √ √ √ √

Start √ √ √ √

Stop √ √ √ √

Reset √ √ √ √

Read √ √ √ √

ToStr √ √ √ √

Manipulación de bits

CheckBit - - √ √

CHR √ √ √ √

ORD √ √ √ √

ResetBit - - √ √

ROR, ROL √ √ √ √

SetBit - - √ √

SHR, SHL √ √ √ √

STR √ √ √ √

Módulos y métodos

Entrada digital, DIN √ √ √ √

Wait, WaitN √ √ √ √

Read √ √ √ √

RisingEdge √ √ √ √

ResetRisingEdge √ √ √ √

Salida digital, DOUT √ √ √ √

Wait, WaitN √ √ √ √

A. Lista de instrucciones FTL

Festo GDCP-CMXR-SW-ES es 1205c 267

CMXR-C1 CMXR-C2

Instrucciones FTL Versión 1.06 Versión 1.25 Versión 1.0.0 Versión 1.1.0

Read √ √ √ √

RisingEdge √ √ √ √

ResetRisingEdge √ √ √ √

Set, Reset √ √ √ √

Write √ √ √ √

Pulse - √ √ √

Entrada analógica, AIN √ √ √ √

WaitLss, WaitGrt √ √ √ √

WaitIns, WaitOuts √ √ √ √

Read √ √ √ √

Salida analógica, AOUT √ √ √ √

Write √ √ √ √

WaitLss, WaitGrt √ √ √ √

WaitIns, WaitOuts √ √ √ √

Read √ √ √ √

Encoder, ENCODER √ √ √ √

Set √ √ √ √

Read √ √ √ √

CANOpen, COPDEVICE √ √ √ √

WriteSDO √ √ √ √

ReadSDOSigned √ √ √ √

ReadSDOUnsigned √ √ √ √

Eventos

onstartup - - √ √

onprogload - - √ √

onproginterrupt - - √ √

onprogcontinue - - √ √

onprogend - - √ √

onf1keypressed - - √ √

onf1keyreleased - - √ √

onf2keypressed - - √ √

onf2keyreleased - - √ √

Puntos de conmutación

DO - √ √ √

OnPosition - - √ √

OnParameter - - √ √

OnDistance - - √ √

OnPlane - - √ √

B. Árbol de menús de las instrucciones FTL

268 Festo GDCP-CMXR-SW-ES es 1205c

B. Árbol de menús de las instrucciones FTL Para facilitar la programación, en la unidad manual CDSA y en el editor de programación FTL se muestra un árbol de menús que contiene todas las instrucciones FTL disponibles. A continuación se muestran todas las instrucciones del conjunto de instrucciones “Base de programación FTL”.

Representación del árbol de menús de la unidad de mando manual CDSA:

Interface PLC

ProgHold

Funciones

ABS

ACOS

ACOT

ASIN

ATAN

ATAN2

COS

COT

EXP

LN

Funciones de posición

o ReadActualPos

o ReadTargetPos

o SavePosition

B. Árbol de menús de las instrucciones FTL

Festo GDCP-CMXR-SW-ES es 1205c 269

SIN

SQRT

TAN

Referenciación

IsAxisReferenced

RefAxis

RefAxisAsync

WaitRefFinished

Instrucciones de movimiento

CircIp

Lin

LinRel

LinToCircIp

MoveAxisCart

MoveAxisPtp

PTP

PtpRel

PtpToCircIp

StopMove

Instrucciones de dinámica

Acc

DynOvr

Jerk

OvlCart

OvlVel

Ovr

Ramp

VconstOff

VconstOn

Vel

Instrucciones

… := …

CALL…

//

B. Árbol de menús de las instrucciones FTL

270 Festo GDCP-CMXR-SW-ES es 1205c

ELSE

ELSIF … THEN

GOTO…

IF…GOTO

IF … THEN … END_IF

KILL…

LABEL…

LOOP … DO … END_LOOP

RETURN

RUN…

StopProgram

WAIT…

WHILE … DO … END_WHILE

WaitOnMainRun

WaitOnPath

WaitOnPos

WaitTime

Instrucciones de robot

Sistemas de referencia

o SetRefSys

o SetRefSys3P

o SetRefSysDyn

o SetRefSysWorld

Modo de la cinemática

o SetRobotMode

o GetRobotMode

Tool

Funciones del sistema

Cronometraje

o GetManualModeAcitve

o GetAutoModeActive

o Tiempo

o TimeToStr

o LoadProgram

B. Árbol de menús de las instrucciones FTL

Festo GDCP-CMXR-SW-ES es 1205c 271

o CLOCK.Read

o CLOCK.Reset

o CLOCK.Start

o CLOCK.Stop

o CLOCK.ToStr

Manipulación de bits

o CHR

o CheckBit

o ORD

o ROL

o ROR

o ResetBit

o SHL

o SHR

o STR

o SetBit

Sistema de comunicación

SetError

SetInfo

SetWarning

Módulos E/S

Entradas analógicas

o AIN.Read

o AIN.WaitGrt

o AIN.WaitIns

o AIN.WaitLss

o AIN.WaitOuts

Salidas analógicas

o AOUT.Read

o AOUT.WaitGrt

o AOUT.WaitIns

o AOUT.WaitLss

o AOUT.WaitOuts

o AOUT.Write

B. Árbol de menús de las instrucciones FTL

272 Festo GDCP-CMXR-SW-ES es 1205c

Dispositivos CANopen

o COPDEVICE.ReadSDOSigned

o COPDEVICE.ReadSDOUnsigned

o COPDEVICE.WriteSDO

Entradas digitales

o DIN.Read

o DIN.ResetRisingEdge

o DIN.RisingEdge

o DIN.Wait

o DIN.WaitN

Salidas digitales

o DOUT.Pulse

o DOUT.Read

o DOUT.Reset

o DOUT.ResetRisingEdge

o DOUT.RisingEdge

o DOUT.Set

o DOUT.Wait

o DOUT.WaitN

o DOUT.Write

Encoder incremental

o ENCODER.Read

o ENCODER.Set

Funciones tecnológicas

Seguimiento de objetos

o CONVEYOR.Begin

o CONVEYOR.End

o CONVEYOR.Done

o CONVEYOR.Wait

o CONVEYOR.WaitReachable

Puntos de conmutación de la trayectoria

o OnDistance

o OnParamter

o OnPlane

C. Términos utilizados

Festo GDCP-CMXR-SW-ES es 1205c 273

C. Términos utilizados La tabla siguiente incluye los términos utilizados en este documento:

Término Significado C

CDSA Código de tipo Festo para la unidad de mando manual

CMXR-C1 Código de tipo Festo para el modelo básico CMXR C1

CMXR-C2 Código de tipo Festo para el modelo CMXR de la clase superior

CoDeSys Nombre del control PLC integrado, que se puede programar según

IEC 61131-3 y que funciona en un procesador junto con la robótica.

F

FCT Festo Configuration Tool, software básico para la configuración de los

controles CMXR, así como otros productos Festo, p. ej., accionamientos

eléctricos.

FTL Festo Teach Language, lenguaje de programación textual de los programas

de movimiento

P

Plugin FCT Módulo de software para el software básico FCT. Para determinados

productos Festo pueden instalarse plugins, que están disponibles en el

área de descargas de la página web de Festo www.festo.com.

T

Tarjeta CF Tarjeta Flash compacta; se utiliza como soporte de memoria en CMXR.

Tracking Seguimiento de objetos móviles, p. ej., piezas en una cinta transportadora.

D. Índice

274 Festo GDCP-CMXR-SW-ES es 1205c

D. Índice

D. Índice

Festo GDCP-CMXR-SW-ES es 1205c 275

#

##........................................................ 62

/

// ........................................................ 62

_

_global.tt ............................................. 21

A

ABS ................................................... 170 Acc ...................................................... 96 ACOS ................................................. 165

ACOT ................................................. 168 AIN .................................................... 191 AOUT ................................................. 196 ASIN .................................................. 164 ATAN ................................................. 167 ATAN2 ............................................... 169 Avance de proceso ................ 54; 55; 250 AXISPOS .............................................. 64

C

CALL .................................................... 50 CARTPOS ............................................. 64

CheckBit ............................................ 176 CHR ................................................... 173 CircIp ................................................... 85 CLOCK ............................................... 201 Comentario .......................................... 62 Conversiones de tipos ......................... 32 COPDEVICE ........................................ 209 COS ................................................... 165 COT ................................................... 168

D

DIN .................................................... 180

DO ....................................................... 60 DOUT ................................................. 184 DynOvr .............................................. 101

E

Ejemplo Control del avance de proceso ........ 250 Detención de movimientos ............. 246 Empleo de la interface PLC.............. 262 Empleo de los módulos de entrada y

salida .......................................... 249

Empleo de pinzas ........................... 251

WAIT con entrada digital .................. 56 ENCODER .......................................... 205 Error.................................................. 213 EXP ................................................... 169

F

FTL .......................................... 14; 18; 21

G

GetRobotMode .................................. 141 GOTO .................................................. 47

H

Herramientas .................................... 130

I

IF…GOTO ............................................. 46 IF…THEN ............................................. 44 Interface Profibus .............................. 144 IS_MAPPED ......................................... 38 IsReferenced ..................................... 129

J

Jerk ..................................................... 97

K

KILL ..................................................... 53

L

LABEL ................................................. 46 Lin....................................................... 78 LinRel .................................................. 80 LinToCircIp .......................................... 89 LN ..................................................... 169 LOOP .................................................. 48 LOW, HIGH .......................................... 35

M

MAP .................................................... 38 MAPTO ................................................ 38 Matriz ................................................. 33 Modo ................................................ 138 Modo de la cinemática ...................... 138 MoveAxisCart ...................................... 74 MoveAxisPtp ....................................... 74

O

ORD .................................................. 173

D. Índice

276 Festo GDCP-CMXR-SW-ES es 1205c

OvlCart .............................................. 112

OvlVel ................................................ 110 Ovr .............................................. 99; 243

P

Palabras clave ..................................... 26 plc_AxisPos ....................................... 147 plc_CartPos ....................................... 147 plc_RefSys ......................................... 148 plc_VarDint ........................................ 146 Posición cartesiana .............................. 67 Posición de eje .................................... 65 ProgHold ........................................... 149

PTP ...................................................... 69 PtpRel ................................................. 72 PtpToCircIp .......................................... 87

R

Ramp ................................................. 103 Read .................................................. 208 ReadActualPos .................................. 160 ReadSDOSigned ................................ 211 ReadSDOUnsigned ............................ 212 ReadTargetPos .................................. 161 RefAxis .............................................. 123

RefAxisAsync ..................................... 126 Registro del programa desactivado ..... 62 ResetBit ............................................. 175 RETURN ............................................... 51 ROL ................................................... 172 ROR ................................................... 172 RUN ..................................................... 53

S

SavePosition ..................................... 162 Segmento cero .................................. 108 Set .................................................... 207

SetBit ................................................ 174 SetError ............................................. 158 SetInfo .............................................. 156 SetRefSys .......................................... 116

SetRefSys3P ..................................... 117

SetRefSysDyn ................................... 120 SetRefSysWorld ................................ 120 SetRobotMode .................................. 140 SetWarning ....................................... 157 SHL ................................................... 171 SHR ................................................... 171 SIN .................................................... 164 SQRT ................................................. 170 State ................................................. 213 StopMove ........................................... 91 StopProg ............................................. 92 STR ................................................... 173

T

TAN ................................................... 167 TCP ................................................... 130 tid ................................................. 21; 22 Tiempo de espera ............................... 54 Time .................................................. 162 TimeToStr ......................................... 163 tip ....................................................... 21

Tipos de datos .................................... 30 Tool .................................................. 133

V

Value ................................................ 213 VconstOff .......................................... 106 VconstOn .......................................... 104 Vel ...................................................... 95

W

WAIT ................................................... 55 WaitOnMainRun .................................. 59 WaitOnPath ......................................... 57 WaitOnPos .......................................... 58 WaitRefFinished ................................ 128

WaitTime............................................. 54 WHILE ................................................. 47 WriteSDO .......................................... 210