Está en la página 1de 339

&EJDJ³O 

."/6"-%&'6/$*0/&4

4*."5*$
4
45'VODJPOFTEFJOU©SQSFUF7BQBSUJSEF45&17

TVQQPSUJOEVTUSZTJFNFOTDPN
Introducción (S7-1500T)
1

Información de seguridad
(S7-1500T)
2

SIMATIC Sinopsis de funciones


(S7-1500T)
3
S7-1500
S7-1500T Funciones de intérprete Funciones de intérprete
(S7-1500T)
4
V8.0 a partir de STEP 7 V19
Crear el programa MCL
(S7-1500T)
5
Manual de funciones

Instrucciones MCL (S7-1500T)


6

Diagnóstico (S7-1500T)
7

Instrucciones (S7-1500T)
8
Variables de los bloques de
datos del objeto tecnológico 9
(S7-1500T)

S7-1500T Motion Control

11/2023
A5E53131983-AA
Notas jurídicas
Filosofía en la señalización de advertencias y peligros
Este manual contiene las informaciones necesarias para la seguridad personal así como para la prevención de
daños materiales. Las informaciones para su seguridad personal están resaltadas con un triángulo de advertencia;
las informaciones para evitar únicamente daños materiales no llevan dicho triángulo. De acuerdo al grado de
peligro las consignas se representan, de mayor a menor peligro, como sigue.

PELIGRO
Significa que si no se adoptan las medidas preventivas adecuadas se producirá la muerte o bien lesiones
corporales graves.

ADVERTENCIA
Significa que si no se adoptan las medidas preventivas adecuadas puede producirse la muerte o bien lesiones
corporales graves.

PRECAUCIóN
Significa que si no se adoptan las medidas preventivas adecuadas pueden producirse lesiones corporales.

ATENCIóN
Significa que si no se adoptan las medidas preventivas adecuadas pueden producirse daños materiales.
Si se dan varios niveles de peligro se usa siempre la consigna de seguridad más estricta en cada caso. Si en una
consigna de seguridad con triángulo de advertencia de alarma de posibles daños personales, la misma consigna
puede contener también una advertencia sobre posibles daños materiales.
Personal cualificado
El producto/sistema tratado en esta documentación sólo deberá ser manejado o manipulado por personal
cualificado para la tarea encomendada y observando lo indicado en la documentación correspondiente a la
misma, particularmente las consignas de seguridad y advertencias en ella incluidas. Debido a su formación y
experiencia, el personal cualificado está en condiciones de reconocer riesgos resultantes del manejo o
manipulación de dichos productos/sistemas y de evitar posibles peligros.
Uso previsto de los productos de Siemens
Considere lo siguiente:

ADVERTENCIA
Los productos de Siemens sólo deberán usarse para los casos de aplicación previstos en el catálogo y la
documentación técnica asociada. De usarse productos y componentes de terceros, éstos deberán haber sido
recomendados u homologados por Siemens. El funcionamiento correcto y seguro de los productos exige que su
transporte, almacenamiento, instalación, montaje, manejo y mantenimiento hayan sido realizados de forma
correcta. Es preciso respetar las condiciones ambientales permitidas. También deberán seguirse las indicaciones y
advertencias que figuran en la documentación asociada.

Marcas registradas
Todos los nombres marcados con ® son marcas registradas de Siemens AG. Los restantes nombres y designaciones
contenidos en el presente documento pueden ser marcas registradas cuya utilización por terceros para sus propios
fines puede violar los derechos de sus titulares.
Exención de responsabilidad
Hemos comprobado la concordancia del contenido de esta publicación con el hardware y el software descritos. Sin
embargo, como es imposible excluir desviaciones, no podemos hacernos responsable de la plena concordancia. El
contenido de esta publicación se revisa periódicamente; si es necesario, las posibles correcciones se incluyen en la
siguiente edición.

Siemens AG A5E53131983-AA Copyright © Siemens AG 2023.


Digital Industries Ⓟ 10/2023 Sujeto a cambios sin previo aviso Reservados todos los derechos
Postfach 48 48
90026 NÜRNBERG
ALEMANIA
Índice

1 Introducción (S7-1500T)..................................................................................................................... 10
1.1 Guía de la documentación sobre S7-1500 Motion Control (S7-1500T)................................ 11
1.2 Documentación técnica de SIMATIC (S7-1500T)................................................................ 12

2 Información de seguridad (S7-1500T)................................................................................................ 15

3 Sinopsis de funciones (S7-1500T)....................................................................................................... 16


3.1 Objeto tecnológico Intérprete (S7-1500T)......................................................................... 19
3.2 Objeto tecnológico Programa intérprete (S7-1500T).......................................................... 21
3.3 Objeto tecnológico Mapeo de intérprete (S7-1500T)......................................................... 22
3.4 Instrucciones de Motion Control para el control del intérprete (S7-1500T)......................... 23
3.5 Funciones de STEP 7 (S7-1500T)....................................................................................... 23
3.6 Instrucciones MCL (S7-1500T)........................................................................................... 23
3.7 Capacidad funcional (S7-1500T)....................................................................................... 27

4 Funciones de intérprete (S7-1500T)................................................................................................... 29


4.1 Definición de conceptos (S7-1500T).................................................................................. 29
4.2 Vinculación de objetos tecnológicos (S7-1500T)................................................................ 30
4.2.1 Relaciones entre los objetos tecnológicos (S7-1500T)........................................................ 30
4.2.2 Vinculación del intérprete con una cinemática (S7-1500T)................................................. 30
4.2.3 Definición del programa intérprete como programa intérprete preferido de un intér­ .... 31
prete (S7-1500T)
4.3 Intercambio de datos entre el programa de usuario y el programa intérprete .... 32
(S7-1500T)
4.3.1 Acceso a variables del portapapeles (S7-1500T)................................................................. 34
4.3.2 Configuración de valores iniciales para variables del portapapeles (S7-1500T)................... 34
4.3.3 Mapeo de variables de un bloque de datos global (S7-1500T)............................................ 35
4.3.4 Mapeo de un objeto tecnológico (S7-1500T)..................................................................... 36
4.4 Preparación y ejecución de un programa intérprete (S7-1500T)......................................... 36
4.4.1 Cadena de órdenes del intérprete (S7-1500T).................................................................... 38
4.4.2 Tiempo de espera máximo (S7-1500T).............................................................................. 38
4.4.3 Corrección del programa (S7-1500T)................................................................................. 39
4.4.4 Ejemplos de preparación y ejecución de un programa intérprete (S7-1500T)...................... 40
4.4.5 Variables: Preparación del programa intérprete (S7-1500T)............................................... 42
4.5 Ejecución del programa intérprete en el objeto tecnológico Intérprete (S7-1500T)............. 43
4.5.1 Cargar/descargar el programa intérprete (S7-1500T)......................................................... 43
4.5.2 Iniciar la ejecución del programa intérprete (S7-1500T)..................................................... 44
4.5.3 Detener la ejecución del programa intérprete (S7-1500T).................................................. 44

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


4 Manual de funciones, 11/2023, A5E53131983-AA
Índice

4.5.4 Modificar y cargar el programa intérprete (S7-1500T)........................................................ 46


4.5.5 Variables: Ejecución del programa intérprete (S7-1500T)................................................... 47

5 Crear el programa MCL (S7-1500T)..................................................................................................... 48


5.1 Sintaxis de MCL (S7-1500T).............................................................................................. 48
5.1.1 Juego de caracteres (S7-1500T)........................................................................................ 48
5.1.2 Identificadores (S7-1500T)................................................................................................ 50
5.1.3 Literales (S7-1500T).......................................................................................................... 51
5.1.4 Expresiones (S7-1500T).................................................................................................... 53
5.1.5 Comentarios (S7-1500T)................................................................................................... 53
5.1.6 Características adicionales de MCL (S7-1500T).................................................................. 54
5.2 Tipos de datos (S7-1500T)................................................................................................ 54
5.2.1 Descripción general de los tipos de datos en MCL (S7-1500T)............................................ 54
5.2.2 Tipos de datos de bit (S7-1500T)....................................................................................... 55
5.2.3 Tipos de datos numéricos (S7-1500T)................................................................................ 55
5.2.4 Tipo de datos Array (S7-1500T)......................................................................................... 56
5.2.5 Tipo de datos STRUCT (S7-1500T)..................................................................................... 57
5.2.6 Tipo de datos TO_Struct_Ipr_Position (S7-1500T).............................................................. 60
5.2.7 Tipo de datos TO_Struct_Ipr_AxPosition (S7-1500T).......................................................... 62
5.2.8 Tipo de datos TO_Struct_Ipr_JtPosition (S7-1500T)............................................................ 64
5.2.9 Tipo de datos TO_Struct_Ipr_Frame (S7-1500T)................................................................. 66
5.2.10 Tipo de datos AXIS_OBJECT (S7-1500T)............................................................................. 68
5.2.11 Conversiones de tipos de datos (S7-1500T)....................................................................... 68
5.3 Variables (S7-1500T)........................................................................................................ 71
5.3.1 Categorías de variables y parámetros de función (S7-1500T)............................................. 71
5.3.2 Declaración de variables y parámetros de función (S7-1500T)............................................ 72
5.3.3 Variables estáticas locales (S7-1500T)............................................................................... 73
5.3.4 Variables temporales locales (S7-1500T)........................................................................... 73
5.3.5 Variables globales del intérprete (S7-1500T)..................................................................... 74
5.3.6 Parámetros de entrada (S7-1500T).................................................................................... 75
5.3.7 Parámetros de salida (S7-1500T)....................................................................................... 76
5.3.8 Inicialización de variables y parámetros de función (S7-1500T).......................................... 77
5.3.9 Uso de variables de los bloques de datos de objetos tecnológicos (S7-1500T).................... 79
5.4 Constantes (S7-1500T)..................................................................................................... 80
5.4.1 Categorías de constantes (S7-1500T)................................................................................ 80
5.4.2 Declaración de constantes (S7-1500T).............................................................................. 81
5.4.3 Constantes locales (S7-1500T).......................................................................................... 82
5.4.4 Constantes globales (S7-1500T)........................................................................................ 83
5.5 Operadores (S7-1500T)..................................................................................................... 84
5.5.1 Descripción general de los operadores (S7-1500T)............................................................. 84
5.5.2 Operadores de asignación (S7-1500T)............................................................................... 84
5.5.3 Operadores de asignación de valor combinados (S7-1500T).............................................. 86
5.5.4 Reglas de asignación (S7-1500T)....................................................................................... 87
5.5.5 Operadores aritméticos (S7-1500T)................................................................................... 89
5.5.6 Operadores de comparación (S7-1500T)........................................................................... 90
5.5.7 Operadores lógicos (S7-1500T)......................................................................................... 92
5.5.8 Operadores de selección de elementos (S7-1500T)............................................................ 93
5.5.9 Prioridad de los operadores (S7-1500T)............................................................................. 94
5.6 Instrucciones de control (S7-1500T).................................................................................. 96

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 5
Índice

5.6.1 Instrucciones IF (S7-1500T)............................................................................................... 96


5.6.2 Instrucción CASE (S7-1500T)............................................................................................. 98
5.6.3 Instrucción FOR (S7-1500T).............................................................................................. 100
5.6.4 Instrucción WHILE (S7-1500T)........................................................................................... 101
5.6.5 Instrucción REPEAT (S7-1500T)......................................................................................... 103
5.6.6 Instrucción EXIT (S7-1500T).............................................................................................. 104
5.6.7 Instrucción CONTINUE (S7-1500T).................................................................................... 105
5.6.8 Instrucción GOTO (S7-1500T)........................................................................................... 105
5.6.9 Instrucción RETURN (S7-1500T)......................................................................................... 107
5.6.10 Instrucción SYNC (S7-1500T)............................................................................................ 107
5.6.10.1 Descripción general de la instrucción SYNC (S7-1500T)..................................................... 107
5.6.10.2 Inicio síncrono de instrucciones y secuencias de instrucciones (S7-1500T)......................... 109
5.6.10.3 Acciones síncronas (S7-1500T).......................................................................................... 116
5.6.10.4 Combinación de inicio síncrono y acciones síncronas (S7-1500T)....................................... 124
5.7 Estructura del programa MCL (S7-1500T).......................................................................... 125
5.7.1 Descripción general de la estructura del programa MCL (S7-1500T)................................... 125
5.7.2 Programa principal (S7-1500T).......................................................................................... 128
5.7.3 Funciones (S7-1500T)....................................................................................................... 131
5.7.4 Parámetros de función (S7-1500T).................................................................................... 134
5.7.5 Llamada de funciones (S7-1500T)..................................................................................... 135
5.7.6 Valores de retorno de funciones (S7-1500T)...................................................................... 137
5.7.7 Finalización prematura de funciones (S7-1500T)............................................................... 139
5.7.8 Palabras clave reservadas (S7-1500T)................................................................................ 139
5.8 Trabajar con el editor de programación (S7-1500T)........................................................... 140
5.8.1 Estructura del editor de programación para programas intérprete (S7-1500T).................... 140
5.8.2 Funciones disponibles en la ventana de programación del editor de programación .... 142
(S7-1500T)
5.8.3 Trabajar con los cuadros de diálogo de parametrización de instrucciones MCL .... 144
(S7-1500T)
5.8.4 Trabajar con marcadores (S7-1500T)................................................................................. 145
5.9 Llamada de instrucciones MCL (S7-1500T)........................................................................ 146
5.9.1 Estructura de una llamada de instrucción (S7-1500T)........................................................ 146
5.9.2 Tipos de parámetros (S7-1500T)....................................................................................... 147
5.9.3 Transferencia de parámetros (S7-1500T)........................................................................... 148
5.9.4 Especificación de posición de destino absoluta y relativa (S7-1500T)................................. 151
5.10 Parámetros modales (S7-1500T)....................................................................................... 152
5.10.1 Parámetros modales para instrucciones de eje individual (S7-1500T)................................. 152
5.10.2 Parámetros modales para movimientos de la cinemática (S7-1500T)................................. 152
5.10.3 Uso de parámetros modales en programas MCL (S7-1500T).............................................. 156
5.10.4 Valores límite de parámetros de dinámica modales (S7-1500T).......................................... 157

6 Instrucciones MCL (S7-1500T)............................................................................................................ 159


6.1 Movimientos de la cinemática (S7-1500T)......................................................................... 159
6.1.1 linAbs(): Posicionar la cinemática de forma absoluta con movimiento de trayectoria li­ .... 159
neal (S7-1500T)
6.1.2 linRel(): Posicionar la cinemática de forma relativa con movimiento de trayectoria li­ .... 163
neal (S7-1500T)
6.1.3 circAbs(): Posicionar la cinemática de forma absoluta con movimiento circular de la .... 167
trayectoria (S7-1500T)
6.1.4 circRel(): Posicionamiento relativo de la cinemática con movimiento circular de la tra­ .... 173
yectoria (S7-1500T)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


6 Manual de funciones, 11/2023, A5E53131983-AA
Índice

6.1.5 ptpAbs(): Desplazar la cinemática a coordenadas de destino cartesianas absolutas con .... 179
movimiento sPTP (S7-1500T)
6.1.6 ptpRel(): Desplazar la cinemática a coordenadas de destino cartesianas relativas con .... 185
movimiento sPTP (S7-1500T)
6.1.7 ptpAxAbs(): Desplazar la cinemática a posiciones absolutas del eje con movimiento .... 190
sPTP (S7-1500T)
6.1.8 ptpAxRel(): Desplazar la cinemática a posiciones relativas del eje con movimiento sPTP .... 195
(S7-1500T)
6.1.9 ptpJtAbs(): Desplazar la cinemática a posiciones absolutas de la articulación con movi­ .... 199
miento sPTP (S7-1500T)
6.1.10 ptpJtRel(): Desplazar la cinemática a posiciones relativas de la articulación con movi­ .... 203
miento sPTP (S7-1500T)
6.1.11 setDyn() Definir los ajustes predeterminados de dinámica para movimientos de trayec­ .... 207
toria de forma modal (S7-1500T)
6.1.12 setOriDyn(): Definir los ajustes predeterminados de dinámica para movimientos de .... 210
orientación de forma modal (S7-1500T)
6.1.13 setPtpDyn(): Definir los ajustes predeterminados de la dinámica para movimientos .... 213
sPTP de forma modal (S7-1500T)
6.1.14 setDynMax(): Definir los límites de dinámica para movimientos de trayectoria de forma.... 216
modal (S7-1500T)
6.1.15 setOriDynMax(): Definir los límites de dinámica para movimientos de orientación de .... 218
forma modal (S7-1500T)
6.1.16 setTrans(): Definir la transición para movimientos de trayectoria y de sPTP lineales y .... 221
circulares de forma modal (S7-1500T)
6.1.17 setBlend(): Definir el modo de suavizado de transición para movimientos lineales y cir­ .... 224
culares de la trayectoria de forma modal (S7-1500T)
6.1.18 setBlendDist(): Definir la distancia de suavizado de transición para movimientos de tra­ .... 227
yectoria y sPTP lineales y circulares de forma modal (S7-1500T)
6.1.19 setBlendFactor(): Definir la distancia máxima de suavizado de transición para movi­ .... 230
mientos de trayectoria y sPTP lineales y circulares de forma modal (S7-1500T)
6.1.20 setPlane(): Definir el plano principal de la trayectoria circular para movimientos circu­ .... 234
lares de forma modal (S7-1500T)
6.1.21 setOriDirA(): Definir el sentido de movimiento de la orientación cartesiana A para mo­ .... 236
vimientos de trayectoria y sPTP lineales y circulares de forma modal (S7-1500T)
6.1.22 setTurnJoint(): Definir los rangos de la posición de destino de la articulación para mo­ .... 238
vimientos sPTP de forma modal (S7-1500T)
6.1.23 setCircDir(): Definir la orientación circular de la trayectoria para movimientos circulares.... 240
de la trayectoria de forma modal (S7-1500T)
6.1.24 setLc(): Definir el espacio de la posición de destino de la articulación para movimientos .... 244
sPTP de forma modal (S7-1500T)
6.1.25 setDynAdapt(): Definir la adaptación dinámica para movimientos de trayectoria de for­ .... 247
ma modal (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)................................................................................ 248
6.2.1 defOcs() Redefinir los sistemas de coordenadas de objeto (S7-1500T)............................... 248
6.2.2 defTool() Redefinir la herramienta (S7-1500T)................................................................... 250
6.2.3 trackIn() Iniciar el seguimiento de cinta (S7-1500T)........................................................... 252
6.2.4 setCs(): Definir el sistema de coordenadas de referencia para movimientos de trayecto­.... 255
ria y sPTP lineales y circulares de forma modal (S7-1500T)
6.3 Zonas (S7-1500T)............................................................................................................. 257
6.3.1 defWsZone(): Definir la zona del espacio de trabajo (S7-1500T)......................................... 257
6.3.2 defKinZone(): Definir una zona de la cinemática (S7-1500T).............................................. 259
6.3.3 setWsZoneActive(): Activar la zona del espacio de trabajo (S7-1500T)................................ 260
6.3.4 setWsZoneInactive(): Desactivar una zona del espacio de trabajo (S7-1500T)..................... 262
6.3.5 setKinZoneActive(): Activar la zona de la cinemática (S7-1500T)........................................ 263
6.3.6 setKinZoneInactive(): Desactivar zonas de la cinemática (S7-1500T).................................. 264
6.4 Herramientas (S7-1500T).................................................................................................. 266

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 7
Índice

6.4.1 setTool(): Cambiar la herramienta activa (S7-1500T)......................................................... 266


6.5 Ejes (S7-1500T)................................................................................................................ 267
6.5.1 move(): Mover el eje a la velocidad lineal/velocidad de giro especificada (S7-1500T).......... 267
6.5.2 posAbs(): Posicionamiento absoluto del eje (S7-1500T)..................................................... 269
6.5.3 posRel(): Posicionamiento relativo del eje (S7-1500T)........................................................ 272
6.5.4 setAxisDyn(): Definir los ajustes predeterminados de dinámica para movimientos de .... 274
un eje individual de forma modal (S7-1500T)
6.5.5 setAxisDynMax(): Definir los límites de dinámica para movimientos de eje individual .... 277
de forma modal (S7-1500T)
6.5.6 powerOn(): Habilitar un eje (S7-1500T)............................................................................. 279
6.5.7 powerOff(): Bloquear un eje (S7-1500T)............................................................................ 281
6.5.8 home(): Referenciar eje, establecer punto de referencia (S7-1500T).................................. 283
6.5.9 torqueLimitOn(): Activar la limitación de fuerza/par o la detección de tope fijo .... 286
(S7-1500T)
6.5.10 torqueLimitOff(): Desactivar la limitación de fuerza/par o la detección de tope fijo .... 289
(S7-1500T)
6.6 Otras instrucciones (S7-1500T)......................................................................................... 290
6.6.1 writeVar() Escribir variable PLC mapeada o variable de bloque de datos de objeto tec­ .... 290
nológico (S7-1500T)
6.6.2 waitTime(): Interrumpir la ejecución del programa durante un intervalo de tiempo de­ .... 292
terminado (S7-1500T)
6.6.3 waitEvent(): Interrumpir la ejecución del programa hasta un determinado evento .... 293
(S7-1500T)
6.6.4 setControlledByInterpreter(): Activar el bit "ControlledByInterpreter" para un objeto .... 298
tecnológico (S7-1500T)
6.6.5 setOvr(): Definir la corrección del programa (S7-1500T).................................................... 300
6.6.6 preHalt(): Detener la preparación del programa (S7-1500T)............................................... 302
6.6.7 Control de tiempo de la lectura y escritura de variables (S7-1500T).................................... 304
6.7 Instrucciones de cadena de bits (S7-1500T)....................................................................... 307
6.8 Funciones matemáticas (S7-1500T).................................................................................. 308
6.9 Conversiones (S7-1500T).................................................................................................. 310

7 Diagnóstico (S7-1500T)....................................................................................................................... 312


7.1 Objeto tecnológico Intérprete (S7-1500T)......................................................................... 312
7.1.1 Bits de estado y de error (S7-1500T).................................................................................. 312
7.1.2 Estado del intérprete (S7-1500T)....................................................................................... 315

8 Instrucciones (S7-1500T).................................................................................................................... 316


8.1 Intérprete (S7-1500T)....................................................................................................... 316
8.1.1 MC_LoadProgram V8 (S7-1500T)...................................................................................... 316
8.1.1.1 MC_LoadProgram: Carga/descarga del programa intérprete V8 (S7-1500T)........................ 316
8.1.2 MC_RunProgram V8 (S7-1500T)........................................................................................ 318
8.1.2.1 MC_RunProgram: Iniciar la ejecución del programa intérprete V8 (S7-1500T)..................... 318
8.1.3 MC_StopProgram V8 (S7-1500T)....................................................................................... 319
8.1.3.1 MC_StopProgram: Detener la ejecución del programa intérprete V8 (S7-1500T)................. 319
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T).......................... 321
8.2.1 Comportamiento de relevo V8: Órdenes de referenciado y de movimiento (S7-1500T)....... 321
8.2.2 Comportamiento de relevo V8: Órdenes de sincronismo (S7-1500T).................................. 323

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


8 Manual de funciones, 11/2023, A5E53131983-AA
Índice

8.2.3 Comportamiento de relevo V8: Órdenes del detector (S7-1500T)....................................... 326


8.2.4 Comportamiento de relevo V8: Órdenes de movimiento de la cinemática (S7-1500T)........ 326
8.2.5 Comportamiento de relevo V8: órdenes de intérprete (S7-1500T)...................................... 328

9 Variables de los bloques de datos del objeto tecnológico (S7-1500T)............................................... 331


9.1 Variables del objeto tecnológico Intérprete (S7-1500T)...................................................... 331
9.1.1 Leyenda (S7-1500T).......................................................................................................... 331
9.1.2 Programa intérprete y mapeo de intérprete (intérprete) (S7-1500T)................................... 332
9.1.3 Variable "Parameter" (intérprete) (S7-1500T)..................................................................... 332
9.1.4 Variable "Clipboard" (intérprete) (S7-1500T)...................................................................... 333
9.1.5 Variable "StatusInterpreter" (intérprete) (S7-1500T)........................................................... 334
9.1.6 Variable "StatusWord" (intérprete) (S7-1500T)................................................................... 334
9.1.7 Variable "ErrorWord" (intérprete) (S7-1500T)..................................................................... 335
9.1.8 Variable "ErrorDetail" (intérprete) (S7-1500T).................................................................... 336
9.1.9 Variable "WarningWord" (intérprete) (S7-1500T)............................................................... 336
9.1.10 Variable "ControlPanel" (intérprete) (S7-1500T)................................................................. 337
9.1.11 Variable "InternalToTrace" (intérprete) (S7-1500T)............................................................. 337

Índice alfabético................................................................................................................................. 338

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 9
Introducción (S7-1500T) 1
Finalidad de la documentación
La presente documentación proporciona información importante para configurar y poner en
servicio las funciones Motion Control integradas del sistema de automatización S7‑1500.

Conocimientos básicos necesarios


Para una mejor comprensión de la presente documentación se precisan los siguientes
conocimientos:
• Conocimientos generales de automatización
• Conocimientos generales de accionamientos y control de movimientos

Ámbito de validez de la documentación


La presente documentación es válida para la familia de productos S7-1500.

Convenciones
• Para indicar rutas en el árbol del proyecto, se presupone que en el árbol parcial de la CPU
está abierta la carpeta "Objetos tecnológicos". El comodín "Objeto tecnológico" representa
el nombre del objeto tecnológico correspondiente.
Ejemplo: "Objeto tecnológico > Configuración > Parámetros básicos".
• Al especificar variables, el comodín <TO> representa el nombre del objeto tecnológico
correspondiente.
Ejemplo: <TO>.Actor.Type
• La presente documentación contiene figuras de los dispositivos descritos. Las figuras
pueden diferir del dispositivo suministrado en algunos detalles.
Preste atención también a las notas marcadas del modo siguiente:

NOTA
Una indicación contiene datos importantes acerca del producto descrito en la
documentación, del manejo de dicho producto o de la parte de la documentación a la que
debe prestarse especial atención.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


10 Manual de funciones, 11/2023, A5E53131983-AA
Introducción (S7-1500T)
1.1 Guía de la documentación sobre S7-1500 Motion Control (S7-1500T)

Industry Mall
Industry Mall es el sistema de catálogos y pedidos de Siemens AG para soluciones de
automatización y accionamientos sobre la base de la Totally Integrated Automation (TIA) y
Totally Integrated Power (TIP).
Encontrará los catálogos de todos los productos de automatización y accionamientos en In­
ternet (https://mall.industry.siemens.com).

1.1 Guía de la documentación sobre S7-1500 Motion Control


(S7-1500T)

Información del producto


Tenga en cuenta las indicaciones complementarias sobre la documentación de Motion
Control:
• Información del producto sobre la documentación de S7-1500/1500T Motion Control
https://support.industry.siemens.com/cs/ww/es/view/109794046
(https://support.industry.siemens.com/cs/ww/es/view/109794046)

Documentación
La documentación de las funciones de Motion Control se divide en los siguientes
documentos:
• S7-1500/S7-1500T Sinopsis de Motion Control
https://support.industry.siemens.com/cs/ww/es/view/109817883
(https://support.industry.siemens.com/cs/ww/es/view/109817883)
Esta documentación describe las novedades en las versiones tecnológicas, la actualización
de la versión tecnológica, las funciones que se utilizarán para todos los objetos
tecnológicos y el comportamiento de ejecución de las aplicaciones de Motion Control.
• S7-1500/S7-1500T Alarmas e identificadores de error de Motion Control
https://support.industry.siemens.com/cs/ww/es/view/109817890
(https://support.industry.siemens.com/cs/ww/es/view/109817890)
Este documento describe las alarmas tecnológicas de los objetos tecnológicos y los
identificadores de error de las instrucciones de Motion Control.
• S7-1500/S7-1500T Funciones de eje
https://support.industry.siemens.com/cs/ww/es/view/109817884
(https://support.industry.siemens.com/cs/ww/es/view/109817884)
Esta documentación describe la conexión de accionamientos y encóders, y las funciones
para movimientos de un eje individual.
• S7-1500/S7-1500T Funciones de sincronismo
https://support.industry.siemens.com/cs/ww/es/view/109817888
(https://support.industry.siemens.com/cs/ww/es/view/109817888)
Esta documentación describe el sincronismo de reductor, el sincronismo de velocidad y el
sincronismo por perfil de levas, así como el sincronismo de varios PLC.
• S7-1500/S7-1500T Funciones de detector y leva
https://support.industry.siemens.com/cs/ww/es/view/109817889
(https://support.industry.siemens.com/cs/ww/es/view/109817889)
Esta documentación describe la detección de la posición real mediante un detector y la
emisión de señales de conmutación mediante levas o pista de levas.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 11
Introducción (S7-1500T)
1.2 Documentación técnica de SIMATIC (S7-1500T)

• S7-1500T Funciones de cinemática


https://support.industry.siemens.com/cs/ww/es/view/109817886
(https://support.industry.siemens.com/cs/ww/es/view/109817886)
Esta documentación describe el control de cinemáticas con hasta 6 ejes de interpolación.
• S7-1500T Funciones de intérprete
https://support.industry.siemens.com/cs/ww/es/view/109817891
(https://support.industry.siemens.com/cs/ww/es/view/109817891)
Esta documentación describe el control de objetos tecnológicos mediante un programa
intérprete.

Consulte también

Página temática "Tecnología SIMATIC, Motion Control: Sinopsis y enlaces


importantes"
https://support.industry.siemens.com/cs/ww/es/view/109751049
(https://support.industry.siemens.com/cs/ww/es/view/109751049)

1.2 Documentación técnica de SIMATIC (S7-1500T)


La información se completa con documentos adicionales de SIMATIC. Encontrará estos
documentos y su utilización en los siguientes enlaces y códigos QR.
Industry Online Support completa las posibilidades de obtener información sobre todos los
temas. Asimismo, los ejemplos de aplicación lo ayudan a resolver tareas de automatización.

Sinopsis de la documentación técnica de SIMATIC


Aquí encontrará una vista general de la documentación sobre SIMATIC disponible en Siemens
Industry Online Support:

Industry Online Support International


(https://support.industry.siemens.com/cs/ww/es/view/109742705)

En el siguiente vídeo le enseñaremos cómo encontrar la vista general directamente en


Siemens Industry Online Support y cómo utilizar Siemens Industry Online Support en su
dispositivo móvil:
Acceso rápido a la documentación técnica de los productos de automatización a
través de un vídeo (https://support.industry.siemens.com/cs/es/es/view/109780491)

Vídeo de YouTube: Siemens Automation Products - Technical Documentation at


a Glance (https://youtu.be/TwLSxxRQQsA)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


12 Manual de funciones, 11/2023, A5E53131983-AA
Introducción (S7-1500T)
1.2 Documentación técnica de SIMATIC (S7-1500T)

Guardar la documentación
Guarde la documentación para un uso posterior.
En caso de documentación adjuntada digitalmente:
1. Descargue la documentación asociada tras recibir el producto o, a más tardar, antes del
primer montaje/puesta en marcha. Utilice las siguientes opciones para la descarga:
– Industry Online Support International: (https://support.industry.siemens.com)
El producto tiene asignada una documentación por medio de la referencia. Encontrará
la referencia impresa en el producto y en la etiqueta del embalaje. Los productos con
nuevas funciones incompatibles reciben una nueva referencia y documentación.
– ID Link:
Si su producto está marcado con un ID Link, reconocerá el ID Link en forma de código
QR con un marco y una esquina de marco negra en la parte inferior derecha. El ID Link
le conduce a la placa de características digital del producto. Escanee el código QR
impreso en el producto o en la etiqueta del embalaje con la cámara de un smartphone,
un escáner de código de barras o una aplicación de lectura. Abra el ID Link.
2. Guarde esta versión de la documentación.

Actualizar la documentación
La documentación de este producto se actualiza de forma digital. Especialmente, cuando se
amplían las funciones se ofrecen nuevas características funcionales en una versión
actualizada.
1. Instale la versión más reciente tal y como se describe anteriormente desde el Industry
Online Support o el ID Link.
2. Guarde también esta versión de la documentación.

mySupport
Con mySupport podrá sacar el máximo partido al Industry Online Support.

Registro Para usar todas las funciones de mySupport, es necesario registrarse una sola vez.
Tras el registro, podrá crear filtros, favoritos y pestañas en su área de trabajo perso­
nal.
Solicitudes de En las consultas que realice con el Support Request (solicitud de soporte), este ya
soporte estará cumplimentado con sus datos y podrá ver en todo momento una relación de
las solicitudes pendientes.
Documentación En el área Documentación podrá recopilar su librería personal.
Favoritos Con el botón "Añadir a los favoritos mySupport" puede guardar contenido especial­
mente interesante o recurrente. En la opción "Favoritos" encontrará una lista de las
entradas guardadas.
Últimos artículos Encontrará las últimas páginas cargadas en mySupport en "Últimos artículos vistos".
vistos
Datos CAx El área Datos CAx permite acceder a datos de producto actualizados para su sistema
CAx o CAe. Con solo unos clics configurará su propio paquete de descarga:
• Imágenes de producto, croquis acotados 2D, modelos 3D, esquemas de cone­
xiones, archivos de macros EPLAN
• Manuales, curvas características, instrucciones de uso, certificados
• Datos característicos de productos

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 13
Introducción (S7-1500T)
1.2 Documentación técnica de SIMATIC (S7-1500T)

Encontrará mySupport en Internet. (https://support.industry.siemens.com/My/ww/es/)

Ejemplos de aplicación
Los ejemplos de aplicación le asisten con diferentes herramientas y ejemplos a la hora de
resolver las tareas de automatización. Los ejemplos muestran siempre soluciones en las que
interactúan varios componentes del sistema sin centrarse en productos concretos.
Encontrará los ejemplos de aplicación en Internet.
(https://support.industry.siemens.com/cs/ww/es/ps/ae)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


14 Manual de funciones, 11/2023, A5E53131983-AA
Información de seguridad (S7-1500T) 2
Siemens ofrece productos y soluciones con funciones de seguridad industrial con el objetivo
de hacer más seguro el funcionamiento de instalaciones, sistemas, máquinas y redes.
Para proteger las instalaciones, los sistemas, las máquinas y las redes contra de amenazas
cibernéticas, es necesario implementar (y mantener continuamente) un concepto de
seguridad industrial integral que esté conforme al estado del arte. Los productos y las
soluciones de Siemens constituyen una parte de este concepto.
Los clientes son responsables de impedir el acceso no autorizado a sus instalaciones,
sistemas, máquinas y redes. Dichos sistemas, máquinas y componentes solo deben estar
conectados a la red corporativa o a Internet cuando y en la medida que sea necesario y
siempre que se hayan tomado las medidas de protección adecuadas (p. ej. cortafuegos y
segmentación de la red).
Para obtener información adicional sobre las medidas de seguridad industrial que podrían ser
implementadas, por favor visite (https://www.siemens.com/industrialsecurity).
Los productos y las soluciones de Siemens están sometidos a un desarrollo constante con el
fin de hacerlos más seguros. Siemens recomienda expresamente realizar actualizaciones en
cuanto estén disponibles y utilizar únicamente las últimas versiones de los productos. El uso
de versiones de los productos anteriores o que ya no sean soportadas y la falta de aplicación
de las nuevas actualizaciones, puede aumentar el riesgo de amenazas cibernéticas.
Para mantenerse informado de las actualizaciones de productos, recomendamos que se
suscriba al Siemens Industrial Security RSS Feed en (https://www.siemens.com/cert).

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 15
Sinopsis de funciones (S7-1500T) 3
Con el SIMATIC Motion Interpreter de la CPU S7-1500T se crean órdenes de movimiento para
ejes y cinemáticas individuales con hasta 6 ejes de interpolación.
El intérprete ejecuta una serie de instrucciones de forma consecutiva; dicha secuencia se
denomina programa intérprete.

Ventajas
• Programación secuencial de tareas tecnológicas y de movimiento por separado,
independientemente del programa de usuario cíclico de la CPU
• Ampliaciones integradas para tareas tecnológicas, p. ej., acciones síncronas con la
trayectoria
• Ejecución de órdenes de movimiento asistida por el sistema y optimizada en términos de
tecnología y tiempo, así como con control de preparación y ejecución
• Programación sencilla y rápida mediante cuadros de diálogo de parametrización
• Puesta en marcha rápida y sencilla gracias a la visualización en 3D de la cinemática en el
editor de programación
• Posibilidad de reutilizar programas intérprete para tareas tecnológicas del mismo tipo
• Calibración de posiciones

Motion Control Language


Las diversas tareas tecnológicas se describen para el intérprete en forma de texto, utilizando
el lenguaje de intérprete "Motion Control Language" (MCL):
• Soporte de bloques en lenguaje SCL y tipos de datos
• Operaciones lógicas, operaciones con variables y funciones matemáticas
• Adaptación del lenguaje al procesamiento interpretativo con el intérprete
• Programación secuencial en un programa intérprete
• Habilitación, bloqueo y referenciado de los ejes
• Programación sencilla de órdenes de movimiento en ejes individuales
• Activación/desactivación de limitación de fuerza/par y detección de tope fijo
• Programación sencilla de órdenes de movimiento complejas en cinemáticas, p. ej., para un
ciclo de Pick & Place
• Movimientos "punto a punto" lineales, circulares y síncronos con especificación de
posición absoluta y relativa
• Definición de sistemas de coordenadas de herramienta y de objeto
• Definición, activación y desactivación de zonas del espacio de trabajo y de la cinemática
• Ajuste de parámetros modales, p. ej., parámetros de dinámica
• Acciones síncronas, p. ej., seteo de salidas, inicio de órdenes para otros objetos
tecnológicos, cálculos
• Funciones de sistema para controlar la ejecución del programa e integrarlo en las
secuencias del programa de usuario

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


16 Manual de funciones, 11/2023, A5E53131983-AA
Sinopsis de funciones (S7-1500T)

A diferencia de la programación cíclica con STEP 7, en MCL no es necesario programar


condiciones de avance ni consultas para comprobar si una orden ha finalizado.

Funcionamiento básico
El SIMATIC Motion Interpreter está implementado como objeto tecnológico Intérprete. El
objeto tecnológico Intérprete se controla mediante instrucciones desde el programa de
usuario. El portapapeles predefinido del objeto tecnológico Intérprete permite intercambiar
variables entre el programa de usuario y el programa intérprete.
El programa intérprete se crea en el objeto tecnológico Programa intérprete.
El objeto tecnológico Mapeo de intérprete permite acceder a objetos tecnológicos y variables
PLC.
En la figura siguiente, se carga la secuencia de movimiento del objeto tecnológico Programa
intérprete en el objeto tecnológico Intérprete ① desde el programa de usuario. Con el
programa de usuario, se inicia la ejecución de las órdenes de movimiento ②. El intérprete
realiza las tareas de movimiento en los objetos tecnológicos Cinemática y Eje de
posicionamiento ③. El eje de posicionamiento está conectado con el intérprete a través de
un mapeo de intérprete.

1SPHSBNBEFVTVBSJP
0CKFUPUFDOPM³HJDP
*OU©SQSFUF

$BSHBSEFTDBSHBS
QSPHSBNB.$- 1SFQBSBDJ³OEFM
QSPHSBNBJOU©SQSFUF

$POUSPMTFDVFODJBM
$BSHBSEFTDBSHBS

0CKFUPUFDOPM³HJDP 0CKFUPUFDOPM³HJDP
 *OU©SQSFUF
*OUFSQSFUFS1SPHSBN@

&KFDVDJ³OTFDVFODJBM &KFDVUBS
EFMQSPHSBNB QSPHSBNBJOU©SQSFUF

*OUFSQSFUFS1SPHSBN@
0CKFUPUFDOPM³HJDP
*OUFSQSFUFS.BQQJOH@
1PXFS0O NZBYJT

NZBYJT1PT"YJT


*OJDJBSEFUFOFS *OUFSQSFUFS.BQQJOH@
QSPHSBNB.$-

NZBYJT1PT"YJT

&WBMVBDJ³OEFFTUBEPT

 &KFDVUBS³SEFOFTEF
NPWJNJFOUP

$JOFN¡UJDB 1PT"YJT

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 17
Sinopsis de funciones (S7-1500T)

Licencias
Para SIMATIC Motion Interpreter se requiere una licencia.
Para utilizar el SIMATIC Motion Interpreter se necesita una licencia runtime para cada CPU
tecnológica.

Producto Referencia
SIMATIC Motion Interpreter basic 6ES7823-0SJ00-1AA0
Puede probar las funciones del SIMATIC Motion Interpreter con SIMATIC S7-PLCSIM o SIMATIC
S7-PLCSIM Advanced.
Consulte
también
Objeto tecnológico Intérprete (Página 19)
Objeto tecnológico Programa intérprete (Página 21)
Objeto tecnológico Mapeo de intérprete (Página 22)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


18 Manual de funciones, 11/2023, A5E53131983-AA
Sinopsis de funciones (S7-1500T)
3.1 Objeto tecnológico Intérprete (S7-1500T)

3.1 Objeto tecnológico Intérprete (S7-1500T)


El objeto tecnológico Intérprete cumple las siguientes tareas:
• Carga/descarga de un programa intérprete
• Carga/descarga de un mapeo de intérprete
• Preparación del programa intérprete
• Ejecución del programa intérprete optimizada en términos de tecnología y tiempo
• Ejecución de las órdenes de movimiento
El objeto tecnológico Intérprete se controla desde el programa de usuario.
Un objeto tecnológico Intérprete puede controlar un objeto tecnológico Cinemática, sus ejes
y los objetos tecnológicos Eje de velocidad de giro, Eje de posicionamiento y Eje sincronizado
que se hayan mapeado adicionalmente.
En la figura siguiente, el objeto tecnológico Intérprete ejecuta el InterpreterProgram_1. El
objeto tecnológico Intérprete ejecuta las órdenes de movimiento en la cinemática y en el eje
PosAxis adicional, mapeado a través de InterpreterMapping_1.

$PO꫼HVSBDJ³OEFMPCKFUPUFDOPM³HJDP

0CKFUPUFDOPM³HJDP
*OU©SQSFUF

&KFDVUBS
QSPHSBNBJOU©SQSFUF

*OUFSQSFUFS1SPHSBN@

1SPHSBNBEFVTVBSJP
1PXFS0O NZBYJT
*OJDJBSEFUFOFS

QSPHSBNB.$-

1FSNJUJS
*OUFSQSFUFS.BQQJOH@
BDDFTP

NZBYJT1PT"YJT &WBMVBDJ³OEFFTUBEPT

&KFDVUBS³SEFOFTEF
NPWJNJFOUP

$JOFN¡UJDB 1PT"YJT

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 19
Sinopsis de funciones (S7-1500T)
3.1 Objeto tecnológico Intérprete (S7-1500T)

Intercambio de datos con el programa de usuario


El programa intérprete ejecutado con el objeto tecnológico Intérprete puede acceder a los
siguientes datos del PLC:
• Variables del objeto tecnológico Cinemática asignado
• Variables de los ejes interconectados del objeto tecnológico Cinemática asignado
• Variables de objetos tecnológicos mapeados
• Variables mapeadas de bloques de datos globales
El programa de usuario de la CPU puede acceder a los siguientes datos del objeto tecnológico
Intérprete:
• Variables del bloque de datos del objeto tecnológico Intérprete, p. ej., configuración de la
longitud de la cadena de órdenes del intérprete, variables de portapapeles, ErrorWord,
StatusWord

Configuración
Los siguientes capítulos son relevantes para la configuración del objeto tecnológico
Intérprete:
• Parámetros básicos
– Vinculación del intérprete con un objeto tecnológico Cinemática (Página 30)
• Parámetros avanzados
– Configuración de la cadena de órdenes del intérprete (Página 38)
– Configuración del tiempo de espera máximo (Página 38)
– Configuración de la corrección del programa (Página 39)
– Configuración de variables de portapapeles (Página 34)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


20 Manual de funciones, 11/2023, A5E53131983-AA
Sinopsis de funciones (S7-1500T)
3.2 Objeto tecnológico Programa intérprete (S7-1500T)

3.2 Objeto tecnológico Programa intérprete (S7-1500T)


El programa intérprete contiene las órdenes de movimiento para la cinemática. El programa
intérprete se carga en el objeto tecnológico Intérprete en tiempo de ejecución y se interpreta
allí. No es necesario compilar el programa intérprete en el TIA Portal.
Los programas intérprete pueden crearse del siguiente modo:
• Crear el programa intérprete con el objeto tecnológico
• Crear el programa intérprete en un archivo externo
El objeto tecnológico Programa intérprete cuenta con un editor para crear un programa
intérprete en el lenguaje de programación Motion Control Language (MCL).
En la figura siguiente, hay dos objetos tecnológicos Programa intérprete. Cada objeto
tecnológico contiene una secuencia de movimiento programada para fabricar un producto.
Para cambiar de programa intérprete en el objeto tecnológico Intérprete, se descarga uno de
los programas intérprete y se carga el otro. A continuación, el intérprete ejecuta la secuencia
de movimiento para fabricar el otro producto.

0CKFUPUFDOPM³HJDP
.BOFKBSQSPEVDUP *OU©SQSFUF
1SPHSBNBEFVTVBSJP
1SFQBSBDJ³OEFM $BSHBSEFTDBSHBS
*OUFSQSFUFS1SPHSBN@
%FTDBS QSPHSBNBJOU©SQSFUF QSPHSBNB.$-
# $ HBS
1SPHSBNBTFDVFODJBMQBSB $POUSPMTFDVFODJBM
% *OJDJBSEFUFOFS
" QSPEVDUP $BSHBSEFTDBSHBS
QSPHSBNB.$-
MJO"CT FTQFDJ꫼DBDJPOFTEF
QPTJDJ³O 

&WBMVBDJ³OEFFTUBEPT

.BOFKBSQSPEVDUP

*OUFSQSFUFS1SPHSBN@
$BSHBS
#

" 1SPHSBNBTFDVFODJBMQBSB &KFDVUBS³SEFOFTEFNPWJNJFOUP


QSPEVDUP *OUFSQSFUFS1SPHSBN@
DJSD"CT FTQFDJ꫼DBDJPOFTEF
QPTJDJ³O 
 0CKFUPUFDOPM³HJDP
$JOFN¡UJDB

FSFKFEFMBDJOFN¡UJDB

zFKFEFMBDJOFN¡UJDB

zFKFEFMBDJOFN¡UJDB

Es posible vincular un objeto tecnológico Programa intérprete con varios objetos tecnológicos
Intérprete. Esto permite controlar varias cinemáticas con el mismo programa intérprete.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 21
Sinopsis de funciones (S7-1500T)
3.3 Objeto tecnológico Mapeo de intérprete (S7-1500T)

3.3 Objeto tecnológico Mapeo de intérprete (S7-1500T)


Con el objeto tecnológico Mapeo de intérprete, se define una asignación de objetos del
programa intérprete a objetos del programa de usuario. De este modo, se define a qué
objetos de la CPU puede accederse desde un programa intérprete.
Para el acceso desde el programa intérprete, pueden mapearse los siguientes objetos de la
CPU:
• Objetos tecnológicos de tipo Eje de velocidad de giro, Eje de posicionamiento y Eje
sincronizado
• Variables de bloques de datos globales
En la figura siguiente, se han creado dos objetos tecnológicos Mapeo de intérprete. Para
cambiar de mapeo de intérprete en el objeto tecnológico Intérprete, se descarga uno de los
mapeos de intérprete y se carga el otro. De este modo, el intérprete ejecuta la secuencia de
movimiento en otro eje.

$PO꫼HVSBDJ³OEFMPTPCKFUPTUFDOPM³HJDPT

0CKFUPUFDOPM³HJDP
*OUFSQSFUFS.BQQJOH@ *OU©SQSFUF
$BSHBS
%FTDBSHBS
&KFDVUBS 1SPHSBNBEFVTVBSJP
NZBYJT"YJT@
QSPHSBNBJOU©SQSFUF
 $BSHBSEFTDBSHBS
QSPHSBNB.$-
*OUFSQSFUFS1SPHSBN
*OJDJBSEFUFOFS
QSPHSBNB.$-
*OUFSQSFUFS.BQQJOH@ 1PXFS0O NZBYJT
$BSHBS 
%FTDBSHBS &WBMVBDJ³OEFFTUBEPT
NZBYJT"YJT@
 *OUFSQSFUFS.BQQJOH@O

NZBYJT"YJT@O


"YJT@O

Configuración
• Mapeo de un objeto tecnológico (Página 36)
• Mapeo de variables de un bloque de datos global (Página 35)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


22 Manual de funciones, 11/2023, A5E53131983-AA
Sinopsis de funciones (S7-1500T)
3.6 Instrucciones MCL (S7-1500T)

3.4 Instrucciones de Motion Control para el control del intérprete


(S7-1500T)
Las funciones del objeto tecnológico Intérprete se ejecutan en el programa de usuario con las
siguientes instrucciones de Motion Control:
• "MC_LoadProgram": Cargar/descargar el programa intérprete
• "MC_RunProgram": Iniciar la ejecución del programa intérprete
• "MC_StopProgram": Detener la ejecución del programa intérprete

3.5 Funciones de STEP 7 (S7-1500T)


Los objetos tecnológicos soportan las funciones siguientes en STEP 7:
• Lenguaje de programación MCL (Página 48)
• Editor de programación (Página 140) con visualización 3D de la cinemática
• Diagnóstico (Página 312): vigilar y observar mensajes de estado y error de los objetos
tecnológicos

3.6 Instrucciones MCL (S7-1500T)


Las siguientes tablas contienen las instrucciones MCL (Página 159) soportadas por el
programa intérprete:

Movimientos de la cinemática
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
movimientos de la cinemática (Página 159).

Instrucción MCL Descripción


linAbs() Posicionar la cinemática de forma absoluta con movimiento de trayecto­
ria lineal
linRel() Posicionar la cinemática de forma relativa con movimiento de trayecto­
ria lineal
circAbs() Posicionar la cinemática de forma absoluta con movimiento de trayecto­
ria circular
circRel() Posicionar la cinemática de forma relativa con movimiento de trayecto­
ria circular
ptpAbs() Desplazar la cinemática a coordenadas de destino cartesianas absolutas
con movimiento sPTP
ptpRel() Desplazar la cinemática a coordenadas de destino cartesianas relativas
con movimiento sPTP
ptpAxAbs() Desplazar la cinemática a posiciones absolutas del eje con movimiento
sPTP
ptpAxRel() Desplazar la cinemática a posiciones relativas del eje con movimiento
sPTP
ptpJtAbs() Desplazar la cinemática a posiciones absolutas de la articulación con
movimiento sPTP

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 23
Sinopsis de funciones (S7-1500T)
3.6 Instrucciones MCL (S7-1500T)

Instrucción MCL Descripción


ptpJtRel() Desplazar la cinemática a posiciones relativas de la articulación con mo­
vimiento sPTP
setDyn() Definir los ajustes predeterminados de dinámica para movimientos de
trayectoria de forma modal
setOriDyn() Definir los ajustes predeterminados de dinámica para movimientos de
orientación de forma modal
setPtpDyn() Definir los ajustes predeterminados de dinámica para movimientos sPTP
de forma modal
setDynMax() Definir los límites de dinámica para movimientos de trayectoria de for­
ma modal
setOriDynMax() Definir los límites de dinámica para movimientos de orientación de for­
ma modal
setCs() Definir el sistema de coordenadas de referencia para movimientos de
trayectoria y sPTP lineales y circulares de forma modal
setTrans() Definir la transición para movimientos de trayectoria y sPTP lineales y
circulares de forma modal
setBlend() Definir el modo de suavizado de transición para movimientos de trayec­
toria lineales y circulares de forma modal
setBlendDist() Definir la distancia de suavizado de transición para movimientos de tra­
yectoria y sPTP lineales y circulares de forma modal
setBlendFactor() Definir la distancia máx. de suavizado de transición para movimientos
de trayectoria y sPTP lineales y circulares de forma modal
setPlane() Definir el plano principal de la trayectoria circular para movimientos de
forma modal
setOriDirA() Definir el sentido de movimiento de la orientación cartesiana A de for­
ma modal
Relevante para linAbs(), circAbs() y ptpAbs()
setTurnJoint() Definir los rangos de la posición de destino de la articulación para movi­
mientos sPTP de forma modal
setCircDir() Definir la orientación de la trayectoria circular para movimientos circula­
res de forma modal
setLc() Definir el espacio de la posición de destino de la articulación para movi­
mientos sPTP de forma modal
setDynAdapt() Definir la adaptación dinámica para movimientos de trayectoria de for­
ma modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


24 Manual de funciones, 11/2023, A5E53131983-AA
Sinopsis de funciones (S7-1500T)
3.6 Instrucciones MCL (S7-1500T)

Sistemas de coordenadas
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
sistemas de coordenadas (Página 248).

Instrucción MCL Descripción


defOcs() Redefinir los sistemas de coordenadas de objetos
defTool() Redefinir la herramienta
trackIn() Iniciar el seguimiento de cinta
setCs() Definir el sistema de coordenadas de referencia para movimientos de
trayectoria y sPTP lineales y circulares de forma modal

Zonas
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
zonas (Página 257).

Instrucción MCL Descripción


defWsZone() Definir la zona del espacio de trabajo
defKinZone() Definir la zona de la cinemática
setWsZoneActive() Activar la zona del espacio de trabajo
setWsZoneInactive() Desactivar la zona del espacio de trabajo
setKinZoneActive() Activar la zona de la cinemática
setKinZoneInactive() Desactivar la zona de la cinemática

Herramientas
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
herramientas (Página 266).

Instrucción MCL Descripción


setTool() Cambiar la herramienta activa

Funciones de eje
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
funciones de eje (Página 267).

Instrucción MCL Descripción


move() Mover el eje a la velocidad/velocidad de giro especificada
posAbs() Posicionamiento absoluto del eje
posRel() Posicionamiento relativo del eje
setAxisDyn() Definir los ajustes predeterminados de dinámica para movimientos de
eje individual de forma modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 25
Sinopsis de funciones (S7-1500T)
3.6 Instrucciones MCL (S7-1500T)

Instrucción MCL Descripción


setAxisDynMax() Definir los límites de dinámica para movimientos de eje individual de
forma modal
powerOn() Habilitar el eje
powerOff() Bloquear el eje
home() Referenciar el eje; establecer el punto de referencia
torqueLimitOn() Activar la limitación de fuerza/par o la detección de tope fijo
torqueLimitOff() Desactivar la limitación de fuerza/par o la detección de tope fijo

Otras instrucciones
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
otras instrucciones (Página 290).

Instrucción MCL Descripción


writeVar() Escribir variable PLC mapeada o variable de bloque de datos de objeto
tecnológico
waitTime() Interrumpir la ejecución del programa durante un intervalo de tiempo
determinado
waitEvent() Interrumpir la ejecución del programa hasta un determinado evento
setControlledByInterpreter() Activar el bit "ControlledByInterpreter" para un objeto tecnológico
setOvr() Definir la corrección del programa
preHalt() Detener la preparación del programa

Instrucciones de control
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
instrucciones de control (Página 96).

Instrucción MCL Descripción


IF/ELSE Instrucción disyuntiva
CASE Instrucción condicional
FOR Bucle FOR
WHILE Bucle WHILE
REPEAT Bucle REPEAT UNTIL
EXIT Cancelar el bucle de forma incondicional
CONTINUE Cancelar el bucle de forma condicional
GOTO Salto a una marca de salto definida
RETURN Finalizar la función/el programa principal
SYNC ON_START Acción síncrona disparada por inicio
SYNC ON_POS Acción síncrona disparada por posición

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


26 Manual de funciones, 11/2023, A5E53131983-AA
Sinopsis de funciones (S7-1500T)
3.7 Capacidad funcional (S7-1500T)

Instrucciones de cadena de bits


El programa intérprete soporta instrucciones de cadena de bits.

Funciones matemáticas
El programa intérprete soporta funciones matemáticas.

Conversiones
El programa intérprete soporta conversiones.

3.7 Capacidad funcional (S7-1500T)

Configuración general

Número
Profundidad máxima de la preparación del programa Máximo 100 (configurable)
Número máximo de órdenes de instrucciones de cinemática 30
Número máximo de objetos tecnológicos mapeados 20
Número máximo de caracteres por instrucción 300
Número máximo de caracteres de un identificador 80

Estructura del programa intérprete

Número máximo de funciones o subprogramas 50


Profundidad máxima de llamada en la ejecución del programa 8
Profundidad máxima de anidamiento 50
Número máximo de tipos de datos definidos por el usuario 32
Profundidad máxima de anidamiento para tipos de datos defi­ 8
nidos por el usuario
Número máximo de etiquetas 100

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 27
Sinopsis de funciones (S7-1500T)
3.7 Capacidad funcional (S7-1500T)

Número de variables

Número máximo de variables globales en un objeto tecnológi­ 500


co Intérprete
Número máximo de variables locales y parámetros de función 50
en un objeto tecnológico Intérprete
Número máximo de variables mapeadas en un mapeo de in­ 100
térprete
Dimensión máxima de arrays definidos por el usuario 1

Ejecución en paralelo de órdenes y movimientos

Número máximo de acciones síncronas programables 10

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


28 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T) 4
4.1 Definición de conceptos (S7-1500T)

Secuencia de movimiento
Por secuencia de movimiento se entienden varias órdenes de movimiento con las transiciones
entre ellas suavizadas. Una orden de movimiento sin transiciones suavizadas ni con la orden
de movimiento anterior ni con la posterior es una secuencia de movimiento independiente.

Preparación del programa


El objeto tecnológico Intérprete interpreta las órdenes del programa intérprete cargado,
incorpora las órdenes en la cadena de órdenes del intérprete y las prepara. Al cargar el
programa intérprete y durante la ejecución del programa, el intérprete prepara las órdenes de
forma anticipada.

Ejecución del programa


Durante la ejecución del programa, el objeto tecnológico Intérprete o los objetos tecnológicos
controlados por el intérprete ejecutan las órdenes ya preparadas.

Acción síncrona
Por acción síncrona se entiende una orden que se ejecuta en paralelo a otras órdenes, p. ej.,
la apertura de una pinza durante un movimiento de la cinemática.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 29
Funciones de intérprete (S7-1500T)
4.2 Vinculación de objetos tecnológicos (S7-1500T)

4.2 Vinculación de objetos tecnológicos (S7-1500T)

4.2.1 Relaciones entre los objetos tecnológicos (S7-1500T)

Vinculación de un objeto tecnológico Intérprete con un objeto tecnológico Cinemática


• Un objeto tecnológico Intérprete puede vincularse con un solo objeto tecnológico
Cinemática.
• Puede acceder a los ejes de la cinemática vinculados desde el programa intérprete.

Relación entre el objeto tecnológico Intérprete y el objeto tecnológico Programa intérprete


• Un objeto tecnológico Intérprete puede haber cargado exactamente un programa
intérprete en un momento determinado.
• Un programa intérprete puede estar cargado en varios objetos tecnológicos Intérprete.

Relación entre el objeto tecnológico Intérprete y el objeto tecnológico Mapeo de intérprete


• Un objeto tecnológico Intérprete puede haber cargado exactamente un mapeo de
intérprete en un momento determinado.
• Un mapeo de intérprete puede estar cargado en varios objetos tecnológicos Intérprete.

4.2.2 Vinculación del intérprete con una cinemática (S7-1500T)


Para ejecutar las órdenes de movimiento de una cinemática, el objeto tecnológico Intérprete
debe estar vinculado con el objeto tecnológico Cinemática.
Si está vinculado el objeto tecnológico Intérprete, aparece un enlace a dicho objeto
tecnológico Intérprete en el árbol del proyecto, en el objeto tecnológico Cinemática.

Requisitos
• Se ha creado un objeto tecnológico Intérprete.
• Se ha creado un objeto tecnológico Cinemática.

Procedimiento
Para vincular el objeto tecnológico Intérprete con un objeto tecnológico Cinemática, existen
las siguientes posibilidades:
• En la ventana "Agregar objeto tecnológico", al agregar un objeto tecnológico "Intérprete",
elija el objeto tecnológico Cinemática en la lista desplegable "Cinemática (opcional)".
• Arrastre el objeto tecnológico Intérprete y suéltelo en el árbol del proyecto, en el objeto
tecnológico Cinemática.
• Elija el objeto tecnológico Cinemática en la configuración del objeto tecnológico
Intérprete, en "Parámetros básicos > Cinemática conectada".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


30 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.2 Vinculación de objetos tecnológicos (S7-1500T)

Resultado
En el árbol del proyecto, en el objeto tecnológico Cinemática, se ha creado un enlace al
objeto tecnológico Intérprete vinculado.

Deshacer conexión
Para eliminar la vinculación del objeto tecnológico Intérprete con un objeto tecnológico
Cinemática, existen las siguientes posibilidades:
• Elimine el enlace en el objeto tecnológico Cinemática.
• Retire la selección en la configuración del objeto tecnológico Intérprete, en "Parámetros
básicos > Cinemática conectada".

4.2.3 Definición del programa intérprete como programa intérprete preferido de


un intérprete (S7-1500T)
A un objeto tecnológico Programa intérprete definido como programa intérprete preferido se
accede en el árbol del proyecto desde el objeto tecnológico Intérprete.

Requisitos
• Se ha creado un objeto tecnológico Programa intérprete.
• Se ha creado un objeto tecnológico Intérprete.

Procedimiento
Para que un objeto tecnológico Programa intérprete defina un objeto tecnológico Intérprete
como programa intérprete preferido, proceda del siguiente modo:
1. En el árbol del proyecto, arrastre el objeto tecnológico Programa intérprete y suéltelo en el
objeto tecnológico Intérprete.

Resultado
En el árbol del proyecto, en la opción "Programas intérprete preferidos" del objeto
tecnológico, se ha creado un enlace al programa intérprete.
Cuando se abre el editor de programación a través del enlace, el objeto tecnológico Intérprete
ya está seleccionado en la lista desplegable "Seleccionar intérprete". En la visualización 3D se
muestra la cinemática asignada al intérprete.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 31
Funciones de intérprete (S7-1500T)
4.3 Intercambio de datos entre el programa de usuario y el programa intérprete (S7-1500T)

4.3 Intercambio de datos entre el programa de usuario y el programa


intérprete (S7-1500T)
Para intercambiar datos entre el programa intérprete y el programa de usuario de la CPU,
están disponibles las dos posibilidades siguientes:
• Intercambio de datos a través del portapapeles del objeto tecnológico Intérprete
El portapapeles es un área reservada de forma fija en el objeto tecnológico Intérprete.
– <TO>.Clipboard.CbBool (Array [1..300] of Bool)
– <TO>.Clipboard.CbDint (Array [1..100] of DInt)
– <TO>.Clipboard.CbLreal (Array[1..100] of LReal)
Es posible acceder en lectura y escritura a las variables del portapapeles tanto en el
programa intérprete como en el programa de usuario.
• Intercambio de datos a través de variables mapeadas de bloques de datos globales
En el mapeo de intérprete, pueden mapearse variables de bloques de datos globales. La
variable puede tener los tipos de datos BOOL, DINT, UDINT, DWORD y LREAL.
Es posible acceder en lectura y escritura a las variables mapeadas de bloques de datos
tanto en el programa intérprete como en el programa de usuario.
La figura siguiente muestra un ejemplo de intercambio de datos entre el programa intérprete
y el programa de usuario al cerrar una pinza. Con la instrucción "writeVar()", se escribe la
variable "closeGripper" en el momento de la ejecución.

0CKFUPUFDOPM³HJDP
*OU©SQSFUF

*OUFSQSFUFS1SPHSBN
50%# 1SPHSBNBEFVTVBSJP
*OUFSQSFUFS@
 
*'*13$MJQCPBSE$C#PPM<> $MJQCPBSE$C#PPM<> *OUFSQSFUFS@$MJQCPBSE$C#PPM<>536&
5)&/ -FFS -FFS 
$MJQCPBSE$C#PPM<>
MJO"CT Y Z  FTDSJCJS FTDSJCJS 
XSJUF7BS DMPTF(SJQQFS 536&  
XBJU&WFOU HSJQQFS$MPTFE  $MJQCPBSE$C#PPM<O> 
MJO"CT Y Z  XSJUFEJHJUBMJOQVUUP%#WBSJBCMF
 (SJQQFSDMPTFEDMPTFE(SJQQFS*OQVU

&-4& %#(SJQQFS XSJUF%#WBSJBCMFUPEJHJUBMPVUQVU
 DMPTF CPPM DMPTF(SJQQFS0VUQVU(SJQQFSDMPTF
 -FFS -FFS 
DMPTFE CPPM
FTDSJCJS FTDSJCJS 

*OUFSQSFUFS.BQQJOH

DMPTF(SJQQFS(SJQQFSDMPTF
1FSNJUJS
HSJQQFS$MPTFE(SJQQFSDMPTFE BDDFTP

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


32 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.3 Intercambio de datos entre el programa de usuario y el programa intérprete (S7-1500T)

Comparación

Intercambio de datos a través del por­ Intercambio de datos a través de va­


tapapeles del intérprete riables mapeadas de bloques de da­
tos
Mapeo necesario - ✓
Programación simbó­ - ✓
lica
Posibilidad de varia­ - ✓
bles remanentes
Tipos de datos BOOL BOOL
DINT DINT
LREAL UDINT
LREAL
DWORD
Número de variables Número fijo Número adaptable
300 variables BOOL El objeto tecnológico Mapeo de intér­
100 variables DINT prete soporta como máximo
100 variables LREAL 100 variables mapeadas.
Posibilidad de acceso - ✓
desde varios progra­
mas intérprete

Validez del valor al leer una variable en el programa intérprete


El acceso en lectura a una variable en el programa intérprete proporciona el valor válido en el
momento de la preparación del programa.
Encontrará la descripción de cómo acceder a un valor válido en el momento de ejecutar el
programa en el capítulo Cadena de órdenes del intérprete (Página 38).

Momento del cambio de valor al escribir una variable en el programa intérprete


• Asignación de valor (p. ej., closeGripper := TRUE;): el valor se asigna al preparar el
programa.
• Escritura de una variable con la instrucción "writeVar" (p. ej., writeVar(closeGripper,
TRUE);): el valor se escribe al ejecutar la orden.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 33
Funciones de intérprete (S7-1500T)
4.3 Intercambio de datos entre el programa de usuario y el programa intérprete (S7-1500T)

4.3.1 Acceso a variables del portapapeles (S7-1500T)

Acceso a variables del portapapeles en el programa intérprete


En el programa intérprete, se accede a una variable del portapapeles del modo siguiente:
• Tipo de datos Bool
$IPR.Clipboard.CbBool[i] // i = 1..300
• Tipo de datos Dint
$IPR.Clipboard.CbDint[j] // j = 1..100
• Tipo de datos Lreal
$IPR.Clipboard.CbLreal[k] // k = 1..100
Ejemplo:
...
IF $IPR.Clipboard.CbBool[1] THEN
ptpAbs(pos3,trans := 0);
END_IF;
...

Acceso a variables del portapapeles en el programa de usuario


Para acceder a una variable del portapapeles en el programa de usuario, indique el área de
datos del tipo de variable con el índice correcto.
Ejemplo:
...
"Interpreter_1".Clipboard.CbBool[1] := TRUE;
...

4.3.2 Configuración de valores iniciales para variables del portapapeles


(S7-1500T)

Procedimiento
Para actualizar los valores iniciales para las variables del portapapeles, proceda del siguiente
modo:
1. En la configuración del objeto tecnológico Intérprete, vaya a "Parámetros avanzados >
Portapapeles".
2. Configure los valores iniciales para las variables del portapapeles:
– Variables BOOL [1-300]: seleccione los valores iniciales para las variables BOOL en la
lista desplegable de la columna "Valor inicial proyecto".
– Variables DINT [1-100]: introduzca los valores iniciales para las variables DINT en la
columna "Valor inicial proyecto".
– Variables LREAL [1-100]: introduzca los valores iniciales para las variables LREAL en la
columna "Valor inicial proyecto".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


34 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.3 Intercambio de datos entre el programa de usuario y el programa intérprete (S7-1500T)

4.3.3 Mapeo de variables de un bloque de datos global (S7-1500T)

Requisitos
• Se ha abierto la configuración del objeto tecnológico Intérprete.
• Bloques de datos soportados:
– DB global
– Bloque de datos de instancia de un bloque de función
– Bloques de datos del objeto tecnológico
• Tipos de datos soportados:
– BOOL
– DINT
– UDINT
– DWORD
– LREAL

Procedimiento
Para mapear una variable de un bloque de datos global en el objeto tecnológico Mapeo de
intérprete, proceda del siguiente modo:
1. En la configuración del objeto tecnológico Mapeo de intérprete, vaya a "Mapeo > Mapeo
de variables".
2. En la columna "Nombre en el programa intérprete", haga clic en la celda "Agregar".
3. Introduzca el nombre con el que se direccione la variable en el programa intérprete.
4. En la columna "Variable de bloque de datos", seleccione la variable que desee mapear.
5. Para permitir solamente el acceso de lectura a la variable en el programa intérprete, active
la casilla de verificación en la columna "Solo lectura".

NOTA
Si la variable mapeada del bloque de datos tiene la propiedad "Solo lectura", deberá
activar la casilla de verificación "Solo lectura" para esta variable en el mapeo.

Resultado
La variable está mapeada.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 35
Funciones de intérprete (S7-1500T)
4.4 Preparación y ejecución de un programa intérprete (S7-1500T)

4.3.4 Mapeo de un objeto tecnológico (S7-1500T)

Requisitos
• Se ha abierto la configuración del objeto tecnológico Mapeo de intérprete.
• En la CPU S7-1500, se ha agregado un objeto tecnológico Eje de velocidad de giro, Eje de
posicionamiento o Eje sincronizado.
• Los objetos tecnológicos no tienen asignada ninguna cinemática.

Procedimiento
Para mapear un objeto tecnológico en el objeto tecnológico Mapeo de intérprete, proceda del
siguiente modo:
1. En la configuración del objeto tecnológico Mapeo de intérprete, vaya a "Mapeo > Mapeo
de objetos tecnológicos".
2. En la columna "Nombre en el programa intérprete", haga clic en la celda "Agregar".
3. Introduzca el nombre con el que se direcciona el objeto tecnológico en el programa
intérprete.
4. En la columna "Objeto tecnológico", seleccione el objeto tecnológico que desee mapear.

Resultado
El objeto tecnológico está mapeado.

4.4 Preparación y ejecución de un programa intérprete (S7-1500T)

Preparación del programa


El objeto tecnológico Intérprete interpreta las órdenes del programa intérprete cargado, las
prepara en MC_LookAhead de forma acíclica y las incorpora en caso necesario a la cadena de
órdenes del intérprete.
Para preparar el programa, el intérprete ejecuta las siguientes tareas:
• Planificación de las órdenes con los parámetros válidos para la preparación
• Ajuste de variables con el operador de asignación ":="
• Planificación del orden de ejecución mediante la evaluación de las instrucciones de
control, p. ej., instrucciones IF o bucles
La preparación del programa tiene la ventaja de que permite calcular los movimientos de la
cinemática, incluida la planificación de la dinámica y las secuencias, con antelación suficiente,
antes de que se ejecuten. Una orden "MC_LoadProgram" del programa de usuario inicia la
primera preparación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


36 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.4 Preparación y ejecución de un programa intérprete (S7-1500T)

Interrupción de la preparación del programa


El intérprete interrumpe la preparación del programa en las siguientes situaciones:
• Se ha alcanzado el número máximo de órdenes que pueden prepararse en la cadena de
órdenes del intérprete (<TO_Interpreter>.Parameter.MaxNumberOfCommands). Tan
pronto como se haya ejecutado una orden, continúa la preparación del programa.
• Se ha alcanzado el número máximo de órdenes de cinemática (30) y debe prepararse una
orden de cinemática adicional. Tan pronto como se haya ejecutado una orden de
cinemática, continúa la preparación del programa.
Si debe esperarse a que se actualicen los datos durante la ejecución del programa, la
preparación del programa se puede interrumpir de forma selectiva con las siguientes
instrucciones en el programa intérprete:
• preHalt()
• waitEvent() con "mode" = 0
• powerOn()
• powerOff()
• defTool()
• setTool()
Si se ha interrumpido la preparación del programa, la cinemática se detiene en la posición de
destino de la última orden de movimiento. De este modo, no es posible suavizar la transición.
Ejemplos de actualización de datos
• Especificación de posiciones de destino para movimientos: Si la posición de destino para
una orden solamente está presente durante la ejecución del programa, interrumpa la
preparación del programa antes de la orden con una orden "preHalt()".
• Instrucciones de control (p. ej., IF o CASE): Si la expresión solamente debe evaluarse en el
momento de su ejecución, interrumpa la preparación del programa antes de la instrucción
de control, p. ej., con una orden "preHalt()". La expresión de la instrucción de control se
evalúa con los valores actuales en el momento de la ejecución del programa.

Ejecución del programa


Al ejecutar un programa intérprete, las órdenes de la cadena de órdenes se preparan en el
bloque de organización MC_LookAhead y, a continuación, se procesan en el bloque de
organización MC_Interpolator.
Una orden "MC_RunProgram" del programa de usuario lanza la ejecución del programa
intérprete. El intérprete transfiere las órdenes de movimiento preparadas a los objetos
tecnológicos controlados por el intérprete. Dichos objetos tecnológicos ejecutan las órdenes
transferidas de forma cíclica en MC_Interpolator. Durante la ejecución del programa
intérprete, el intérprete va preparando ya las órdenes siguientes.
En cuanto el intérprete ha terminado de ejecutar el programa intérprete, se prepara el
programa intérprete para una nueva ejecución. La preparación del programa intérprete
vuelve a empezar. Las variables se vuelven a inicializar mediante ":=" y las órdenes se
preparan. Esto permite volver a ejecutar el programa intérprete.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 37
Funciones de intérprete (S7-1500T)
4.4 Preparación y ejecución de un programa intérprete (S7-1500T)

Consulte
también
Ejemplos de preparación y ejecución de un programa intérprete (Página 40)

4.4.1 Cadena de órdenes del intérprete (S7-1500T)


La longitud de la cadena de órdenes del intérprete indica cuántas órdenes puede preparar el
intérprete como máximo. La cadena de órdenes del intérprete comprende todas las órdenes
del programa intérprete. Puede ajustar entre 10 y 100 el número máximo de órdenes que
deben prepararse (<TO_Interpreter>.Parameter.MaxNumberOfCommands).
La cadena de órdenes del intérprete puede contener hasta 30 órdenes de movimiento de la
cinemática. Esta limitación es invariable con independencia del valor de la cadena de órdenes
de la cinemática (<TO_Kinematics>.MotionQueue.MaxNumberOfCommands configurado en
el objeto tecnológico Cinemática).
Al cargar el programa intérprete y al ejecutar el programa, el intérprete prepara las órdenes
de forma anticipada hasta alcanzar el número máximo de órdenes. Durante la ejecución del
programa intérprete, se ejecutan las órdenes o secuencias de movimiento en cuanto están
preparadas y ha finalizado la orden anterior.
El intérprete calcula de antemano las órdenes durante la preparación del programa. La orden
se ejecuta con los parámetros disponibles en el momento de la preparación, y no con los
parámetros disponibles en el momento de la ejecución.

Configuración de la cadena de órdenes del intérprete


Para configurar la cadena de órdenes del intérprete, proceda del siguiente modo:
1. Abra la ventana de configuración "Parámetros avanzados > Cadena de órdenes del
intérprete" del objeto tecnológico Intérprete.
2. Introduzca el valor deseado en el campo "Número máx. de órdenes que deben prepararse"
(<TO_Interpreter>.Parameter.MaxNumberOfCommands).

4.4.2 Tiempo de espera máximo (S7-1500T)


Con el tiempo de espera máximo, se define el intervalo de tiempo máximo entre el inicio
posible y el inicio real de una orden. Una vez que se termina de ejecutar una orden anterior y
se termina de preparar la orden siguiente, es posible iniciar esta orden.
En una secuencia de movimiento con varias órdenes, el objeto tecnológico Intérprete intenta
preparar todas las órdenes pertenecientes a esta secuencia de movimiento de forma
anticipada antes del inicio. Si se ajusta el tiempo de espera máximo de forma que el
intérprete solamente pueda preparar una parte de las órdenes durante este tiempo, se
iniciará la primera orden de la secuencia de movimiento antes de que se haya preparado la
secuencia de movimiento entera. La preparación continúa en paralelo a la ejecución de la
secuencia de movimiento.
Para el tiempo de espera máximo pueden ajustarse valores entre 0,0 s y 2,0 s. Si se define un
tiempo de espera máximo de 0.0 s, la ejecución de la secuencia de movimiento se iniciará en
cuanto se haya terminado de preparar la secuencia de movimiento entera.
Ejemplo sin una cadena de órdenes del intérprete totalmente llena
La preparación de una secuencia de movimiento dura 1,5 s.
Con un tiempo de espera máximo de 0,0 s, se inicia la ejecución de la secuencia de
movimiento al cabo de 1,5 s en cuanto se haya terminado de preparar la secuencia de
movimiento entera.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


38 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.4 Preparación y ejecución de un programa intérprete (S7-1500T)

Con un tiempo de espera máximo de 1,0 s, se inicia la ejecución de la secuencia de


movimiento 1,0 s una vez preparada la primera orden. La ejecución de la secuencia de
movimiento se inicia independientemente de que la secuencia esté o no preparada por
completo en ese momento.
Con un tiempo de espera máximo de 2,0 s, se inicia la ejecución de la secuencia de
movimiento al cabo de 1,5 s en cuanto se haya terminado de preparar la secuencia de
movimiento entera.

Configuración del tiempo de espera máximo


Para configurar el tiempo de espera máximo, proceda del siguiente modo:
1. Abra la ventana de configuración "Parámetros avanzados > Preparación del programa" del
objeto tecnológico Intérprete.
2. Introduzca el valor deseado en el campo "Tiempo de espera máximo"
(<TO_Interpreter>.Parameter.StartTimeout).

4.4.3 Corrección del programa (S7-1500T)


La corrección del programa permite definir un factor que actúa sobre la velocidad y la
aceleración o deceleración de movimientos programados de ejes y de la cinemática. La
corrección del programa se tiene en cuenta durante la preparación de los movimientos del
objeto tecnológico Intérprete. Las modificaciones de la corrección del programa no influyen
en órdenes de movimiento ya preparadas. Pueden ajustarse valores entre 1 % y 100 %.
La corrección del programa actúa, además de sobre los valores de corrección, sobre los
objetos tecnológicos que deben controlarse. Si, p. ej., está ajustado el 50 % para la corrección
del programa y la corrección de velocidad de un objeto tecnológico Cinemática también es
del 50 %, el valor de corrección resultante que actúa sobre la velocidad de los movimientos
de la cinemática es del 25 %. El valor de corrección resultante para la aceleración y
deceleración es del 50 %. Las posibles modificaciones de valores de corrección de los objetos
tecnológicos que deben controlarse causan efecto directo sobre las órdenes activas.
En la configuración del objeto tecnológico Intérprete, se define el valor inicial de la corrección
del programa. El valor inicial es modalmente activo al cargar el programa intérprete y puede
modificarse mediante la instrucción MCL "setOvr()".

Configuración del valor inicial de la corrección del programa


Para configurar el valor inicial de la corrección del programa, proceda del siguiente modo:
1. Abra la ventana de configuración "Parámetros avanzados > Preparación del programa" del
objeto tecnológico Intérprete.
2. Introduzca el valor deseado en el campo "Valor inicial corrección del programa"
(<TO_Interpreter>.Parameter.ProgramOverride).

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 39
Funciones de intérprete (S7-1500T)
4.4 Preparación y ejecución de un programa intérprete (S7-1500T)

4.4.4 Ejemplos de preparación y ejecución de un programa intérprete (S7-1500T)

Número máximo de órdenes de cinemática preparadas


Este ejemplo describe cómo se comportan la preparación y la ejecución del programa al
alcanzarse el número máximo de órdenes de cinemática.
   

 QPT"CT  QPT"CT  QPT"CT  QPT"CT


 QPT"CT  QPT"CT  QPT"CT  QPT"CT
 QPT"CT  QPT"CT  QPT"CT  QPT"CT
 QPT"CT  QPT"CT  QPT"CT  QPT"CT

 QPT"CT  QPT"CT  QPT"CT  QPT"CT


 QPT"CT  QPT"CT  QPT"CT  QPT"CT
 QPT"CT  QPT"CT  QPT"CT  QPT"CT
 QPT"CT  QPT"CT  QPT"CT  QPT"CT

Preparación activa

Ejecución activa

Orden que debe prepararse


Orden preparada
Orden ejecutada
① Una vez que el programa intérprete se ha cargado en el intérprete con la instrucción
"MC_LoadProgram", el intérprete empieza a preparar las órdenes de cinemática.
② Cuando el intérprete ha preparado la orden de cinemática n.º 30, se ha alcanzado el número
máximo de órdenes de cinemática en la cadena de órdenes del intérprete. El intérprete inte­
rrumpe la preparación del programa.
Con la instrucción "MC_RunProgram", el intérprete empieza a ejecutar las órdenes de cinemáti­
ca.
③ El intérprete se ocupa simultáneamente de la preparación y de la ejecución del programa. La
preparación del programa no se adelanta, en ningún momento, en más de 30 órdenes de cine­
mática con respecto a la ejecución del programa. La ejecución del programa puede avanzar
más rápidamente que la preparación del programa.
④ Una vez preparada la última orden de cinemática, el intérprete ejecuta las órdenes de cinemáti­
ca pendientes hasta la última orden.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


40 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.4 Preparación y ejecución de un programa intérprete (S7-1500T)

Evaluar una expresión durante la ejecución del programa


Este ejemplo describe cómo se comportan la preparación y la ejecución del programa con una
orden de la instrucción MCL "waitEvent()".
  

QPT"CT QPT"CT QPT"CT


QPT"CT QPT"CT QPT"CT
QPT"CT QPT"CT QPT"CT
QPT"CT DIFDL1PT QPT"CT DIFDL1PT QPT"CT DIFDL1PT
XBJU&WFOU DIFDL XBJU&WFOU DIFDL XBJU&WFOU DIFDL
*'DPOEJUJPO5)&/ *'DPOEJUJPO5)&/ *'DPOEJUJPO5)&/
QPT"CT QPT QPT"CT QPT QPT"CT QPT
&-4&QPT"CT QPT &-4&QPT"CT QPT &-4&QPT"CT QPT
&/%@*' &/%@*' &/%@*'

Preparación activa

Ejecución activa

Orden que debe prepararse


Orden preparada
Orden ejecutada
① En el programa intérprete, en la posición "checkPos", se evalúa cuál de las posiciones debe al­
canzarse: "pos1" o "pos2". Para ello, se debe alcanzar la posición "checkPos" y esperar a la ins­
trucción "check".
La condición de espera "check" se especifica, p. ej., mediante una variable de mapeo.
La variable de mapeo tiene asignada una entrada digital en el programa de usuario.
② La preparación del programa se interrumpe con la orden "waitEvent(check)". La ejecución del
programa continúa.
③ La ejecución del programa también alcanza la orden "waitEvent(check)". La ejecución del pro­
grama se interrumpe hasta que la variable de mapeo "check" devuelve TRUE.

Leer y escribir variables


Este ejemplo muestra el comportamiento de los accesos de lectura y escritura en el programa
intérprete.
Una asignación con ":=" lee el valor y escribe la variable para la preparación del programa.
Una orden "writeVar(variable, valor)" escribe la variable para la ejecución del programa. El
valor se lee durante la preparación del programa.
MCL
PROGRAM main
VAR
var1 : DINT; // declare local static tag
END_VAR
$IPR.Clipboard.CbDint[1] := 5; // set to 5 during preprocessing
$IPR.Clipboard.CbDint[2] := 5; // set to 5 during preprocessing
var1 := 3; // set to 3 during preprocessing
writeVar( var1, 10 ); // set from 3 to 10 during execution
$IPR.Clipboard.CbDint[1] := var1; // set to var1 (3) during preprocessing

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 41
Funciones de intérprete (S7-1500T)
4.4 Preparación y ejecución de un programa intérprete (S7-1500T)

MCL
(* set to var1 (3) during execution, because 3 was the var1 value during preprocessing,
can be 10 in case of slow preprocessing - if instruction above is already executed
and this instruction is preprocessed afterwards *)
writeVar( $IPR.Clipboard.CbDint[1], var1 );
preHalt( ); // use preHalt to interrupt preprocessing
(* set to var1 (10) during execution, because preprocessing continues after preHalt() and
new value setted during execution of var1 is used for preprocessing, can be 10 in case
of slow preprocessing - if instruction above is already executed and this instruction
is preprocessed afterwards *)
writeVar( $IPR.Clipboard.cbDint[2], var1 );
END_PROGRAM

4.4.5 Variables: Preparación del programa intérprete (S7-1500T)


Las variables siguientes del objeto tecnológico Intérprete son relevantes para la preparación
del programa intérprete:
Variable Descripción
<TO>.Parameter.MaxNumberOfCommands Número máximo de órdenes que deben prepararse en la cadena de órde­
nes del intérprete
<TO>.Parameter.StartTimeout Tiempo de espera máximo
Intervalo de tiempo máximo entre el inicio posible y el inicio real de una
orden en [s]
Una vez transcurrido el tiempo de espera máximo, se inicia una secuencia
de movimiento no preparada por completo.
0.0 Las secuencias de movimiento solamente se inician una vez
que están totalmente preparadas o que se ha alcanzado el nú­
mero máximo de órdenes que deben prepararse en la cadena
de órdenes del intérprete.
<TO>.Parameter.ProgramOverride Valor inicial de la corrección del programa en [%]
El factor porcentual actúa como valor inicial del parámetro modal durante
la preparación de los perfiles de dinámica de movimientos de eje y de la ci­
nemática.
<TO>.StatusInterpreter.LevelOfPreparedCom­ Carga de la preparación del programa en [%], en pasos del 5 %:
mands Indicación del valor máximo de los siguientes criterios:
• Órdenes de intérprete preparadas
• Órdenes de cinemática preparadas
• Acciones síncronas preparadas

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


42 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.5 Ejecución del programa intérprete en el objeto tecnológico Intérprete (S7-1500T)

4.5 Ejecución del programa intérprete en el objeto tecnológico


Intérprete (S7-1500T)

4.5.1 Cargar/descargar el programa intérprete (S7-1500T)


Para poder ejecutar un programa intérprete, en primer lugar cargue el programa intérprete en
el objeto tecnológico Intérprete. El programa intérprete se prepara y, acto seguido, está listo
para su ejecución.
Tras cambiar al estado operativo STOP o POWER OFF de la CPU, debe volver a cargarse el
programa intérprete en el objeto tecnológico Intérprete.
Para poder cargar un programa intérprete modificado o distinto en el objeto tecnológico
Intérprete, en primer lugar descargue el programa intérprete cargado del objeto tecnológico
Intérprete. A continuación, puede cargar el programa intérprete modificado o uno nuevo en
el objeto tecnológico Intérprete.

Especificaciones de parámetros
Con los siguientes parámetros de la instrucción de Motion Control "MC_LoadProgram (Página
316)", se determina el comportamiento de carga del objeto tecnológico Intérprete:
• Con el parámetro "Mode" = 1, se define el modo de carga "Cargar".
En el modo de carga "Cargar":
– Con el parámetro "Program" se define, en formato String, el nombre del objeto
tecnológico Programa intérprete, p. ej., 'InterpreterProgram_1'.
– Con el parámetro "ProgramSource" se define la fuente del programa intérprete.
– Con el parámetro "Mapping" se define opcionalmente, en formato String, el nombre
del objeto tecnológico Mapeo de intérprete, p. ej., 'InterpreterMapping_1'.
– Con el parámetro "MappingSource" = 1 se define el objeto tecnológico Mapeo de
intérprete establecido en el parámetro "Mapping" como fuente del mapeo de
intérprete.
• Con el parámetro "Mode" = 0 se define el modo de carga "Descargar".

Fuente del programa intérprete


Con "ProgramSource" = 1 se carga el programa del objeto tecnológico Programa intérprete
definido en el parámetro "Program" en el objeto tecnológico Intérprete.

Cargar un programa intérprete en el objeto tecnológico Intérprete


Una vez iniciada la orden "MC_LoadProgram" con "Mode" = 1 y "Execute" = TRUE, se prepara el
programa intérprete junto con el mapeo que se haya especificado en el objeto tecnológico
Intérprete para su ejecución. Una vez que finaliza la orden con "Done" = TRUE, el programa
intérprete está listo para su ejecución.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 43
Funciones de intérprete (S7-1500T)
4.5 Ejecución del programa intérprete en el objeto tecnológico Intérprete (S7-1500T)

Descargar un programa intérprete del objeto tecnológico Intérprete


Una vez iniciada la orden "MC_LoadProgram" con "Mode" = 0 y "Execute" = TRUE, se descarga
el programa intérprete junto con el mapeo que se haya especificado del objeto tecnológico
Intérprete. A continuación, el objeto tecnológico Intérprete vuelve a estar listo para cargar un
programa intérprete.

4.5.2 Iniciar la ejecución del programa intérprete (S7-1500T)


La instrucción "MC_RunProgram (Página 318)" de Motion Control inicia la ejecución de un
programa intérprete cargado en el objeto tecnológico Intérprete.

Inicio de la ejecución del programa


Con "Execute" = TRUE, se inicia la orden "MC_RunProgram". Aunque aún no haya finalizado la
carga ("<TO>.StatusWord.X9" = TRUE (Loading)), ya puede emitir una orden
"MC_RunProgram". La ejecución del programa intérprete se inicia en cuanto se ha preparado
y cargado el programa intérprete ("<TO>.StatusWord.X10" = TRUE (Loaded)).

Durante la ejecución del programa


Mientras el objeto tecnológico Intérprete ejecuta el programa intérprete, la orden
"MC_RunProgram" está en proceso y "Active" = TRUE ("<TO>.StatusWord.X5" = TRUE (InRun)).

Al finalizar la ejecución del programa


En cuanto el objeto tecnológico Intérprete ha terminado de ejecutar el programa intérprete,
se prepara el programa intérprete para una nueva ejecución. La preparación del programa
intérprete vuelve a empezar. Todos los parámetros se reinicializan. Después, con
"Done" = TRUE, finaliza el procesamiento de la orden "MC_RunProgram".
Puede volver a iniciarse la ejecución del programa intérprete.

4.5.3 Detener la ejecución del programa intérprete (S7-1500T)


La instrucción "MC_StopProgram" de Motion Control detiene la ejecución de un programa
intérprete en el objeto tecnológico Intérprete. Se detienen un eje individual/una cinemática
controlados por el intérprete ("<TO>.StatusInterpreterMotion.StatusWord.X0" = TRUE
(ControlledByInterpreter)).

NOTA
Órdenes de movimiento sin fin
Tenga en cuenta que, para las órdenes de movimiento que no finalizan automáticamente,
p. ej., "move()", se establece la variable "<TO>.StatusInterpreterMotion.StatusWord.X0"
(ControlledByInterpreter) del objeto tecnológico correspondiente a "FALSE" en cuanto el
objeto tecnológico ha alcanzado el estado especificado, p. ej., la velocidad determinada.
Para poder cancelar dichas órdenes de movimiento también con una orden
"MC_StopProgram", utilice la instrucción MCL "setControlledByInterpreter()" y vuelva a
establecer la variable "<TO>.StatusInterpreterMotion.StatusWord.X0"
(ControlledByInterpreter) a "TRUE".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


44 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.5 Ejecución del programa intérprete en el objeto tecnológico Intérprete (S7-1500T)

Especificaciones de parámetros
Con los siguientes parámetros de la instrucción de Motion Control "MC_StopProgram (Página
319)", se determina el comportamiento dinámico:
• Con el parámetro "Mode", se define el comportamiento dinámico del eje individual/la
cinemática para el movimiento de parada.

Modo para el comportamiento dinámico


Con "Mode" = 0, se detienen el eje individual/la cinemática con la dinámica máxima. Se
cancela la orden de movimiento actual.
Con "Mode" = 1, se detienen el eje individual/la cinemática con la dinámica especificada para
la orden de movimiento actual. Se cancela la orden de movimiento actual.
Con "Mode" = 2, el eje individual/la cinemática ejecuta la orden de movimiento actual o la
secuencia de movimiento actual. Por secuencia de movimiento se entienden varias órdenes
de movimiento con las transiciones entre ellas suavizadas. A continuación, se detienen el eje
individual/la cinemática.

Detención de la ejecución del programa


Con "Execute" = TRUE, se detiene la ejecución del programa intérprete. El movimiento del eje
individual/cinemática controlado por el objeto tecnológico Intérprete se detiene en función
del modo especificado. Hasta que finalice el movimiento de parada, la orden
"MC_StopProgram" está en proceso.
Mientras "Execute" = TRUE, se rechaza cualquier otra orden para el objeto tecnológico
Intérprete ("<TO>.StatusWord.X7" = TRUE (Stopping)).

Tras detenerse la ejecución del programa


En cuanto se haya detenido el eje individual/la cinemática, habrá finalizado la orden
"MC_StopProgram" ("Done" = TRUE). El objeto tecnológico correspondiente del eje
individual/cinemática deja de estar controlado por el objeto tecnológico Intérprete
("<TO>.StatusInterpreterMotion.StatusWord.X0" = FALSE (ControlledByInterpreter)).
A continuación, para habilitar el objeto tecnológico Intérprete para nuevas órdenes, vuelva a
ajustar el parámetro "Execute" de la orden "MC_StopProgram" a "FALSE".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 45
Funciones de intérprete (S7-1500T)
4.5 Ejecución del programa intérprete en el objeto tecnológico Intérprete (S7-1500T)

4.5.4 Modificar y cargar el programa intérprete (S7-1500T)


Para poder cargar un programa intérprete modificado, en primer lugar hay que descargar el
programa intérprete cargado desde el objeto tecnológico Intérprete y cargar el programa
intérprete modificado en el objeto tecnológico Intérprete. Después, puede iniciarse la
ejecución del programa intérprete.

Requisitos
• Ha cargado un programa intérprete en el objeto tecnológico Intérprete.
• Ha modificado el programa intérprete cargado.

Procedimiento
Para cargar las modificaciones de un programa intérprete, haga lo siguiente:
1. Si se está ejecutando el programa intérprete cargado, detenga la ejecución del programa
intérprete con "MC_StopProgram.Execute" = TRUE.
El movimiento de un eje individual/cinemática controlado por el objeto tecnológico
Intérprete se detiene en función del modo especificado. En cuanto finaliza la orden con
"Done" = TRUE, el eje individual/cinemática se para, y la ejecución del programa intérprete
se detiene.
2. Descargue el programa intérprete del objeto tecnológico Intérprete con
"MC_LoadProgram.Mode" = 0 y "Execute" = TRUE.
Una vez que finaliza la orden con "Done" = TRUE, el objeto tecnológico Intérprete está listo
para cargar un programa intérprete.
3. Cargue el objeto tecnológico Programa intérprete en la CPU.
4. Cargue el programa intérprete modificado en el objeto tecnológico Intérprete con
"MC_LoadProgram.Mode" = 1 y "Execute" = TRUE.
Una vez que finaliza la orden con "Done" = TRUE, el programa intérprete está preparado
para su ejecución.

Resultado
El programa intérprete modificado está cargado en el objeto tecnológico Intérprete y
preparado para su ejecución. Inicie la ejecución del programa intérprete con
"MC_RunProgram.Execute" = TRUE.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


46 Manual de funciones, 11/2023, A5E53131983-AA
Funciones de intérprete (S7-1500T)
4.5 Ejecución del programa intérprete en el objeto tecnológico Intérprete (S7-1500T)

4.5.5 Variables: Ejecución del programa intérprete (S7-1500T)

Objeto tecnológico Intérprete


Las variables siguientes del objeto tecnológico Intérprete son relevantes para la ejecución del
programa intérprete:
Variable Descripción
<TO>.ProgramName Nombre del objeto tecnológico Programa intérprete cargado actualmente
<TO>.ProgramSource Fuente del programa intérprete cargado actualmente
0 Ningún programa intérprete cargado
1 Objeto tecnológico Programa intérprete
<TO>.MappingName Nombre del objeto tecnológico Mapeo de intérprete cargado actualmente
<TO>.MappingSource Fuente del mapeo de intérprete cargado actualmente
0 Ningún mapeo de intérprete cargado
1 Objeto tecnológico Mapeo de intérprete
<TO>.ActualLineNumber Número de la línea de programa ejecutada actualmente o de la última lí­
nea ejecutada del programa
<TO>.StatusWord.X0 (Control) Hay una orden de Motion Control activa en el objeto tecnológico Intérpre­
te.
<TO>.StatusWord.X5 (InRun) El objeto tecnológico ejecuta un programa intérprete.
<TO>.StatusWord.X6 (Done) La ejecución del programa intérprete ha finalizado.
<TO>.StatusWord.X7 (Stopping) La ejecución del programa intérprete se está deteniendo o se ha detenido.
<TO>.StatusWord.X9 (Loading) El objeto tecnológico carga el programa intérprete. La preparación del pro­
grama intérprete está en curso.
<TO>.StatusWord.X10 (Loaded) El programa intérprete se ha cargado y preparado.

Objetos tecnológicos controlados por el intérprete


Las variables siguientes del objeto tecnológico controlado por el intérprete son relevantes
para la ejecución del programa intérprete:
Variable Descripción
<TO>.StatusInterpreterMotion.Interpreter En caso de objeto tecnológico de un eje:
objeto tecnológico Intérprete que realiza el control
<TO>.StatusInterpreterMotion.StatusWord.X0 Se establece en el valor "TRUE" cuando hay una orden MCL preparada o ac­
(ControlledByInterpreter) tiva o se ha activado el bit mediante la instrucción MCL
"setControlledByInterpreter()".
<TO>.StatusInterpreterMotion.StatusWord.X1 Se ajusta al valor "TRUE" cuando hay una orden de movimiento MCL activa.
(MotionByInterpreter)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 47
Crear el programa MCL (S7-1500T) 5
Motion Control Language (MCL) es un lenguaje de programación interpretativo para
especificar órdenes de movimiento.
Este lenguaje se basa en el lenguaje de programación Structured Text (ST) especificado en la
norma EN-61131-3 (IEC 61131-3).

Características principales
MCL ejecuta instrucciones mediante un intérprete.
Un intérprete es un programa que ejecuta directamente instrucciones en un lenguaje de
programación o de script sin tener que compilarlas previamente en un programa en lenguaje
de máquina.
La estructura de MCL contiene una serie de ampliaciones específicas del movimiento y de la
tecnología.

5.1 Sintaxis de MCL (S7-1500T)

5.1.1 Juego de caracteres (S7-1500T)


En MCL, el juego de caracteres admisibles consta de un subconjunto del juego de caracteres
ASCII estándar:
• Letras mayúsculas y minúsculas de la "a" a la "z"
• Cifras arábigas 0 a 9
• Caracteres de control (valor ASCII 1-31)
• Espacio (valor ASCII 32)
• Caracteres especiales
No se diferencia entre mayúsculas y minúsculas.
MCL interpreta comentarios e identificadores simbólicos de datos del PLC como caracteres
Unicode en formato UTF-8.

Caracteres especiales
La tabla siguiente muestra los caracteres especiales utilizados en MCL y sus descripciones:

Carácter Reglas léxicas Reglas sintácticas


: • Separador entre unidades de tiempo • Separador para indicar el tipo
• Parte del operador de asignación • Tras el nombre delante de las instruc­
ciones:
– Declaración de variables
– Funciones
– Instrucción CASE

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


48 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.1 Sintaxis de MCL (S7-1500T)

Carácter Reglas léxicas Reglas sintácticas


. • Separador para representar números Acceso a una variable estructurada dentro
en coma flotante de una estructura.
• Representación de intervalos de tiempo
• Direccionamiento absoluto
"" Introducción para símbolo (solo para datos
del PLC)
_ Separador en valores numéricos (puede
aparecer en identificadores)
$ • Acceso a variables del objeto tecnológi­
co Intérprete, el objeto tecnológico Ci­
nemática asignado y sus ejes de cine­
mática
• Variable del sistema Carácter de escape
(^) para indicar caracteres de control o
de sustitución en cadenas de caracteres
; Fin de una instrucción MCL:
• Declaración de variables
• Sección de instrucciones
• Bloque de constantes
• Bloque de marcas de salto
• Declaración de componentes
, Separador para listas y bloques de marcas
de salto. Declaración de variables:
• Tipo de datos Array
• Inicialización del array
• Parámetros de función
• Lista de valores
.. Descripción de rangos:
• Tipo de datos Array
• Lista de valores
() Uso en el bloque de comentarios • En expresiones para formular el orden
de ejecución
• Llamadas de función
• Asignación de valores estructurales
[] • Declaración de arrays
• Agregación de arrays
(* *) Bloque de comentarios
// Comentario de línea
% Introducción de identificadores directos
+ Operador de suma, signo positivo (opera­
ción unaria)
- Operador de resta, signo negativo (opera­
ción unaria)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 49
Crear el programa MCL (S7-1500T)
5.1 Sintaxis de MCL (S7-1500T)

5.1.2 Identificadores (S7-1500T)


Las reglas léxicas para la composición de identificadores se corresponden con la norma IEC
61131-3.
Los identificadores constan de una combinación de letras, cifras y caracteres de subrayado, y
deben comenzar con un subrayado o una letra. La única excepción son literales especiales del
tipo de sistema AXIS_OBJECT, que comienzan con el carácter '$'.
MCL no distingue entre mayúsculas y minúsculas, ni para identificadores predefinidos ni para
los libres. El uso de identificadores no válidos da lugar a un error en tiempo de ejecución.

Clases
La tabla siguiente muestra la división en distintas clases de los identificadores según su
significado:

Tipo de identificador Ejemplo


Palabras clave Instrucciones de control DO, WHILE
Nombres predefinidos para BOOL, DINT, UDINT
tipos de datos estándar
Nombres para funciones ABS, MOD
estándar predefinidas
Nombres predefinidos para TRUE, FALSE, $A1
constantes estándar
Nombres de libre elección Nombres de:
• Variables declaradas
• Elementos de estructura
• Parámetros
• Constantes declaradas
• Etiquetas de salto

Identificadores libres
La estructura de los identificadores libres está definida por las reglas mencionadas más arriba.

Ejemplo
El siguiente ejemplo muestra identificadores libres:

MCL
myVar, _myVar, _my_Var

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


50 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.1 Sintaxis de MCL (S7-1500T)

Identificador estándar reservado


Para garantizar la compatibilidad de los programas intérprete tras posibles ampliaciones de la
sintaxis MCL, las palabras clave que no se usan están bloqueadas. El uso de identificadores
reservados en programas MCL da lugar a un error de sintaxis. Los siguientes tipos de
identificadores están reservados sintácticamente:
• Nombres de bloque/palabras clave de bloque
• Identificadores de temporizadores
• Identificadores de contadores
• Identificadores de operandos

Ejemplo
En los siguientes ejemplos se muestran identificadores estándar reservados:

MCL
Timer
Left
Lower_Bound

5.1.3 Literales (S7-1500T)


Los literales son constantes de tipos de datos simples cuyos valores figuran en el texto de un
programa. Existen los siguientes literales:
• Literales numéricos
• Literales de tiempo
• Literales de sistema
Para los tipos de datos numéricos, los correspondientes literales se pueden tipificar
opcionalmente de forma explícita, es decir, se pueden indicar con un tipo de datos
antepuesto.

Literales numéricos
La tabla siguiente muestra los literales numéricos con ejemplos y comentarios:
Tipo del literal Ejemplo Comentario
Literal booleano TRUE, FALSE -
BOOL#TRUE, BOOL#FALSE Con designación de tipo
Literal entero 255, +12, -45, 123_456 Entero decimal
DINT#456_321, UDINT#123_456 Con designación de tipo
Literal en coma flotante -41_321.0, -0.432, 12.34 -
1.234e-2, -1.234e-2 5.0E10, 5.0e10, 5E10 3.45E+6, Con exponentes
3.45e+6
Literal binario 2#1111_1111, 2#11111111 Corresponde a 255 en el sistema
decimal
Literal octal 8#377 Corresponde a 255 en el sistema
decimal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 51
Crear el programa MCL (S7-1500T)
5.1 Sintaxis de MCL (S7-1500T)

Tipo del literal Ejemplo Comentario


Literal octal 8#255 Corresponde a 173 en el sistema
decimal
DINT#8#255 Con designación de tipo
Literal hexadecimal 16#FF, 16#ff Corresponde a 255 en el sistema
decimal
16#E0, 16#e0 Corresponde a 224 en el sistema
decimal
INT#16#FF Con designación de tipo

Literales de tiempo
La tabla siguiente muestra los literales de tiempo con ejemplos y comentarios:
Tipo del literal Ejemplo Comentario
Duración T#25ms Designación de tipo necesaria.
T#25.8s Uso solo posible con "waitTime()" y
T#5h10s acciones síncronas
TIME#5h10s

Literales de sistema
La tabla siguiente muestra los literales de sistema con ejemplos y comentarios:
Tipo del literal Ejemplo Comentario
Literal AXIS_OBJECT NULL, $A1, $A2, $A3, $A4, $A5, $A6 NULL - Ausencia de un objeto;
Se pueden utilizar $A1 - $A6 para
acceder a los correspondientes ejes
de la cinemática conectada.
Literal del intérprete $IPR Acceso a variables de bloque de da­
tos de objeto tecnológico Intérprete
Literal de la cinemática $KIN Acceso a variables de bloque de da­
tos de objeto tecnológico de la cine­
mática conectada

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


52 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.1 Sintaxis de MCL (S7-1500T)

5.1.4 Expresiones (S7-1500T)


Las expresiones constan de operandos y operadores.
Los operandos son constantes, variables y llamadas de instrucción.
Los operadores distinguen entre las siguientes expresiones:
• Expresiones aritméticas
• Expresiones lógicas
• Expresiones comparativas
Las expresiones se utilizan en el cálculo de operandos o de forma independiente. En caso
contrario, el resultado de la expresión se descarta, p. ej., para llamadas de instrucciones sin
valor de retorno.

Ejemplos
El siguiente ejemplo muestra expresiones:

MCL
// Example for expressions
myVar // operand (simple tag)
sqrt( 27 ) // standard function
FC10( myVar ) // function call
myVar1 AND myVar2 // logical expression
myLrealVar <= 1.0e-2 // comparative expression
-5 + myConst * (3 - 8/5) // simple expression

5.1.5 Comentarios (S7-1500T)


Los comentarios sirven para la documentación de un programa MCL. Carecen de significado
para la ejecución del programa, y el intérprete los ignora.
MCL distingue entre comentarios de línea y de bloque. El comentario de línea comienza con
"//" y termina al final de la línea. El comentario de bloque comienza con "(*" y termina con
"*)". Puede utilizar comentarios de línea dentro de comentarios de bloque. Los comentarios
de bloque dentro de comentarios de línea se ignoran.

Ejemplo
El siguiente ejemplo muestra comentarios en MCL:

MCL
(*
This program is written in MCL.
*)
myVar1 := 0; // this is a line comment

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 53
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

5.1.6 Características adicionales de MCL (S7-1500T)


En lo relativo a las características, se aplican las condiciones adicionales siguientes:
• La creación de variables propias solo es posible en las secciones de declaración previstas
para ello de la correspondiente unidad de organización del programa.
• Las órdenes de movimiento o las funciones tecnológicas no tienen valor de retorno. Los
parámetros constan de elementos necesarios y opcionales. Para los elementos opcionales
está definido un valor predeterminado o un comportamiento modal.
• Soporte de parámetros modales, p. ej., para especificar la dinámica. Los parámetros
modales son aquellos que se inicializan al comenzar un programa MCL y conservan su
valor en el programa MCL hasta que se produzca un cambio mediante una instrucción
"set". Por tanto, no es necesario indicar los parámetros modales en la instrucción MCL. El
intérprete utiliza entonces el valor del parámetro modal.
• Las acciones síncronas que se ejecutan en paralelo a los movimientos, como asignar
valores a salidas, realizar cálculos y similares, se identifican especialmente como tales
acciones.
Encontrará una relación de las acciones síncronas y más información en el capítulo
"Acciones síncronas (Página 116)".
• No está prevista la detección y el tratamiento de errores en tiempo de ejecución por parte
del intérprete, es decir, no se soporta el mecanismo EN/ENO utilizado en el lado del PLC.
Un error en tiempo de ejecución en el intérprete da lugar a un mensaje de alarma y a una
cancelación del programa intérprete.
Consulte
también
Acciones síncronas (Página 116)

5.2 Tipos de datos (S7-1500T)

5.2.1 Descripción general de los tipos de datos en MCL (S7-1500T)

Descripción
Un tipo de datos es la combinación de rangos de valores y operaciones en una unidad.
El tipo de datos determina cómo se utiliza el valor de una variable o constante en un
programa fuente:
• Tipo e interpretación de los elementos de datos
• Rangos permitidos para los elementos de datos
• Operaciones ejecutables permitidas
• Notación de las constantes

Tipos de datos simples


Los tipos de datos simples definen la estructura de elementos de datos que no se pueden
dividir en unidades más pequeñas. Corresponden a la definición de la norma EN 1131-3. Un
tipo de dato simple describe un área de memoria de longitud fija y aparece en MCL para tipos
de datos de bit y tipos de datos numéricos.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


54 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Tipos de datos compuestos


Los tipos de datos compuestos describen tipos de datos que constan de un número fijo de
componentes.
En el tipo de datos Array, todos los elementos son del mismo tipo de datos.
En el tipo de datos STRUCT, los tipos de datos de los elementos pueden ser diferentes.
Los tipos de datos TO_STRUCT_Ipr_* describen indicaciones de posición de una cinemática o
de un sistema de coordenadas.

5.2.2 Tipos de datos de bit (S7-1500T)


Los tipos de datos de bit son combinaciones de bits que ocupan o bien 1 bit (tipo de datos
BOOL) o bien 32 bits. Para Double Word no es posible indicar un rango de valores numérico.
Se trata de combinaciones de bits que pueden utilizarse únicamente para formular
expresiones booleanas.

Tipo Palabra clave Bit Rango de valores


Bit BOOL 1 FALSE, TRUE
Double Word DWORD 32 16#0000_0000 … 16#FFFF_FFFF

5.2.3 Tipos de datos numéricos (S7-1500T)


Se dispone de tipos de datos numéricos para procesar valores numéricos (p. ej., para calcular
expresiones aritméticas).

Tipo Palabra clave Bit Rango de valores


Double integer DINT 32 -2147483648 … 2147483647
Unsigned double integer UDINT 32 0 ... 4294967295
Floating point number LREAL 64 -1.79e+308 ... 1.79e+308
(double precision)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 55
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

5.2.4 Tipo de datos Array (S7-1500T)

Descripción
Los Arrays tienen un número determinado de elementos de un tipo de datos. En MCL son
posibles los Arrays con un número fijo de elementos de un tipo de datos unitario. Se permiten
todos los tipos de datos (incluido STRUCT, pero no ARRAY) para los elementos del array.
Solamente pueden declararse Arrays unidimensionales.

Sintaxis

MCL
<Var_Name> : ARRAY <[index1..indexN]> OF <Type>;

Elemento sintáctico Descripción


Var_Name Nombre simbólico de la variable de array. Identificador libre. El nombre de­
be ir seguido de dos puntos":".
ARRAY Con esta palabra clave comienza la declaración del tipo de datos
[index1..indexN] El menor índice posible (index1) y el mayor índice posible (indexN) (rango
de índices). El índice puede tener un valor entero cualquiera (-32768 a
32767).
El rango de índices debe delimitarse con corchetes.
OF Palabra clave
Type Indicación del tipo de datos de los elementos del array.
Se permite utilizar:
• Tipos de datos de bit
• Tipos de datos numéricos
• STRUCT
• Tipos tecnológicos predefinidos en el lado del sistema
Al tipo de la variable de array debe seguir un símbolo ";".

Ejemplo
En el siguiente ejemplo se inicializan als variables de Array:

MCL
VAR CONSTANT
LIMIT : UDINT := 4;
END_VAR
VAR
myArr1:ARRAY[1..5] OF LREAL;
myArr2:ARRAY[1..LIMIT] OF DINT;
myVar:LREAL;
END_VAR
myVar := myArr1[2];
myVar := myArr2[4];

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


56 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

5.2.5 Tipo de datos STRUCT (S7-1500T)


El tipo de datos STRUCT describe un rango que consta de un número fijo de elementos que
pueden ser de diferentes tipos de datos. La indicación de estos elementos de datos se realiza
inmediatamente después de la palabra clave STRUCT en la declaración de elementos.
La característica principal del tipo de datos STRUCT es que un elemento de datos también
puede ser complejo. Esto significa que se permite un anidamiento de tipos de datos STRUCT.
La profundidad de anidamiento máxima es de 8.

Sintaxis y declaración
Una estructura contiene la definición de los componentes individuales entre las palabras
clave STRUCT y END_STRUCT.
El tipo de datos STRUCT puede utilizarse de dos maneras, a saber:
• Definición de estructura anónima en la unidad de declaración de variables
• Definición de estructura como tipo de datos global personalizado del intérprete

Definición de estructura anónima en la unidad de declaración de variables


Las variables de un nuevo tipo de datos de usuario declarado se definen en la sección de
declaración de variables del programa principal o en funciones. Todos los tipos de datos son
admisibles para los componentes de la estructura. De forma opcional, los elementos se
pueden inicializar con un valor estándar en la definición de la estructura.
La estructura anónima debe definirse en la unidad de declaración para variables locales
estáticas: VAR - END_VAR.

MCL
VAR
<VAR_Name> : STRUCT
<Comp1_name> : <Type> [:= <InitValue_1>];
<Comp2_name> : <Type> [:= <InitValue_2>];
………
<CompN_name> : <Type> [:= <InitValue_N>];
END_STRUCT;
END_VAR

Elemento sintáctico Descripción


VAR_Name El nombre simbólico de las variables estructuradas es un iden­
tificador libre.
El nombre no distingue entre mayúsculas y minúsculas.
El nombre debe ir seguido de dos puntos ":".
STRUCT Definición del tipo de datos STRUCT con la palabra clave
STRUCT
<Comp1_name> : <Type> [:= <InitValue_1>]; Sección de declaración de la estructura.
<Comp2_name> : <Type> [:= <InitValue_2>]; En esta sección, se declaran los elementos de la estructura
………
……… (variables u otras estructuras). Las variables pueden indicarse
<CompN_name> : <Type> [:= <InitValue_N>]; con valores iniciales.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 57
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Elemento sintáctico Descripción


<Comp1_name> : <Type> [:= <InitValue_1>]; Comp1_name El nombre simbólico del elemento de la
<Comp2_name> : <Type> [:= <InitValue_2>]; … estructura es un identificador libre.
……… CompN_name
……… El nombre no distingue entre mayúsculas
<CompN_name> : <Type> [:= <InitValue_N>]; y minúsculas.
El nombre debe ir seguido de dos puntos
":".
InitValue_1 Valor inicializado del elemento de la es­
… tructura.
InitValue_N
El valor debe ir seguido de un punto y
coma ";".
Type Tipo de datos del elemento de la estructura.
Se pueden utilizar:
• Tipos de datos de bit
• Tipos de datos numéricos
• Tipos de datos de array
• Tipos de datos STRUCT
Al final de un tipo de datos debe figurar el símbolo ";"
END_STRUCT La declaración del tipo de datos STRUCT finaliza con esta pala­
bra clave.
La palabra clave debe ir seguida de un punto y coma ";".

Ejemplo de definición de estructura anónima en la unidad de declaración de variables

MCL
//Anonymous structure definition in the tag declaration:
PROGRAM Main
VAR
myMotor : STRUCT
Data : STRUCT
Current : LREAL;
Tension : DINT := 5;//declaration with initial value
END_STRUCT;
END_STRUCT;
END_VAR
// usage in statement part - set values
myMotor.Data.Current := 12.35;
myMotor.Data.Tension := 3;
...
END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


58 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Definición de estructura como tipo de datos global personalizado del intérprete


Un nuevo tipo de datos global puede utilizarse tras su declaración en la unidad de declaración
de tipos de datos: TYPE - END_TYPE. Esta unidad de declaración debe programarse fuera del
programa principal (bloque PROGRAM - END_PROGRAM) y solamente se permite una vez por
cada programa MCL.

MCL
TYPE
<Type_Name> : STRUCT
<Comp1_name> : <Type> [:= <InitValue_1>];
<Comp2_name> : <Type> [:= <InitValue_2>];
………
<CompN_name> : <Type> [:= <InitValue_N>];
END_STRUCT;
END_TYPE

Elemento sintáctico Descripción


Type_Name Nombre simbólico del tipo de datos estructurado global.
Identificador libre. El nombre no distingue entre mayúsculas y
minúsculas.
El nombre debe ir seguido de dos puntos ":".
STRUCT Definición del tipo de datos STRUCT con la palabra clave
STRUCT
<Comp1_name> : <Type> [:= <InitValue_1>]; Sección de declaración de la estructura.
<Comp2_name> : <Type> [:= <InitValue_2>]; En esta sección, se declaran los elementos de la estructura
………
……… (variables u otras estructuras).
<CompN_name> : <Type> [:= <InitValue_1>]; Comp1_name El nombre simbólico del elemento de la
… estructura es un identificador libre.
CompN_name
El nombre no distingue entre mayúsculas
y minúsculas.
El nombre debe ir seguido de dos puntos
":".
InitValue_1 Valor inicializado del elemento de la es­
… tructura.
InitValue_N
El valor debe ir seguido de un punto y
coma ";".
Type Tipo de datos del elemento de la estructura.
Se permite utilizar:
• Tipos de datos de bit
• Tipos de datos numéricos
• Tipos de datos de array
• Tipos de datos STRUCT
El tipo de datos debe ir seguido de un punto y coma ";".
END_STRUCT La declaración del tipo de datos STRUCT finaliza con esta pala­
bra clave.
La palabra clave debe ir seguida de un punto y coma ";".

Antes de utilizar una variable con un tipo de datos definido por el usuario, debe declarar una
nueva variable con este tipo de datos en una unidad de declaración de variables. Encontrará
más información en el capítulo "Declaración de variables y parámetros de función (Página
72)".
Para acceder a un determinado elemento de la estructura (en modo de escritura o lectura), es
preciso utilizar el símbolo ".":
<VAR_Name>.<Comp2_name> := <Value>;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 59
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Ejemplo de definición de estructura como tipo de datos global personalizado del intérprete

MCL
//Structure definition as user defined interpreter global data type:
TYPE
Motor : STRUCT
mType : DINT := 5; // declaration with initial value
current : LREAL;
END_STRUCT;

Gear : STRUCT
gType : DINT;
ratio : LREAL;
END_STRUCT;
END_TYPE
PROGRAM Main
VAR
myMotor : Motor;
myGear : Gear;
END_VAR
// usage in statement part -set values
myMotor.current := 2.35;
myGear.gType := 7;
...
END_PROGRAM

5.2.6 Tipo de datos TO_Struct_Ipr_Position (S7-1500T)

Descripción
El tipo de datos TO_Struct_Ipr_Position sirve para definir una posición en el sistema de
coordenadas universal o en el sistema de coordenadas del objeto.
Encontrará más información sobre los tipos de cinemáticas, los tipos de movimientos, los
sistemas de coordenadas y los frames, así como los ejes de la cinemática, en la
documentación "S7-1500T Funciones cinemáticas (Página 11)".

Variables
El tipo de datos consta de las siguientes variables:

Variable Tipo de datos Descripción


x LREAL Desplazamiento de posición en sentido x del sistema de coor­
denadas de referencia
y LREAL Desplazamiento de posición en sentido y del sistema de coor­
denadas de referencia
z LREAL Desplazamiento de posición en sentido z del sistema de coor­
denadas de referencia

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


60 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Variable Tipo de datos Descripción


A LREAL Rotación (ángulo euleriano de la primera rotación) de la posi­
ción alrededor del eje z del sistema de coordenadas.
El sistema de coordenadas rotado una vez está compuesto
por los ejes x', y' y z.
B LREAL Rotación (ángulo euleriano de la segunda rotación) de la posi­
ción alrededor del eje y' del sistema de coordenadas.
El sistema de coordenadas rotado dos veces está compuesto
por los ejes x", y' y z'.
C LREAL Rotación (ángulo euleriano de la tercera rotación) de la posi­
ción alrededor del eje x'' del sistema de coordenadas.
El sistema de coordenadas rotado tres veces está compuesto
por los ejes x", y" y z". Los ejes x'', y'' y z'' equivalen a los ejes x,
y, z del sistema de coordenadas rotado

Utilización
El rango de valores de cada variable de este tipo de datos depende del tipo de cinemática, del
tipo de frames y de la instrucción en la que se utilice esta variable.

Instrucción Nombre del parámetro Descripción


linAbs <pos> : TO_Struct_Ipr_Position; Evolución lineal del movimiento
con indicación de posición abso­
luta
circRel <pos> : TO_Struct_Ipr_Position; Movimiento circular con posición
[auxPos:] TO_Struct_Ipr_Position; de destino relativa
ptpAbs <pos> : TO_Struct_Ipr_Position; Movimiento sPTP (synchronous
point-to-point) con posición de
destino absoluta en coordenadas
cartesianas

Ejemplo

MCL
PROGRAM Main
VAR
myPos1 : TO_Struct_Ipr_Position;
myPos2 : TO_Struct_Ipr_Position :=
( x := 10.01, y := 20.02, z := 30.03,
A := 0.0, B := 0.0, C := 0.0 );
END_VAR
// set parameters for absolute position
myPos1.x := 10.5;
myPos1.y := -123.84;
myPos1.z := 17.35;
myPos1.A := 0.0;
myPos1.B := 0.0;
myPos1.C := 0.0;
(* usage of myPos1 and myPos2 variables of TO_Struct_Ipr_Position data type
as function parameter *)
linAbs( myPos1 );
linAbs( myPos2 );
...

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 61
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

MCL
END_PROGRAM

Valores estándar
La preinicialización de las variables depende del contexto utilizado. Las siguientes reglas se
aplican de forma estándar a elementos no inicializados para variables y agregados:

Tipo Contexto de utilización Valores estándar


TO_Struct_Ipr_Position Variable x = 0.0
y = 0.0
Agregado como indicación de
z = 0.0
posición relativa en una instruc­
A = 0.0
ción tecnológica
B = 0.0
C = 0.0
Agregado como indicación de Valor real que tiene la variable duran­
posición absoluta en una instruc­ te la preparación de la ejecución del
ción tecnológica programa intérprete

5.2.7 Tipo de datos TO_Struct_Ipr_AxPosition (S7-1500T)

Descripción
El tipo de datos TO_Struct_Ipr_AxPosition es un tipo de variable para definir la posición de
hasta 6 ejes en el sistema de coordenadas de máquina (MCS).
Encontrará más información sobre los tipos de cinemáticas, los tipos de movimientos, los
sistemas de coordenadas y los frames, así como los ejes de la cinemática, en la
documentación "S7-1500T Funciones cinemáticas (Página 11)".

Sintaxis
El tipo de datos consta de las siguientes variables:

Identificadores Tipo de datos Descripción


a1 LREAL Posición del eje A1 de la cinemática en el MCS (coordenadas
de eje)
a2 LREAL Posición del eje A2 de la cinemática en el MCS (coordenadas
de eje)
a3 LREAL Posición del eje A3 de la cinemática en el MCS (coordenadas
de eje)
a4 LREAL Posición del eje A4 de la cinemática en el MCS (coordenadas
de eje)
a5 LREAL Posición del eje A5 de la cinemática en el MCS (coordenadas
de eje)
a6 LREAL Posición del eje A6 de la cinemática en el MCS (coordenadas
de eje)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


62 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Utilización
El MCS contiene los datos de posición de los ejes conectados de la cinemática y reúne así las
posiciones de los ejes como array o vector.
El rango de valores de cada variable de este tipo de datos depende del tipo de cinemática, del
tipo de frames y de la instrucción en la que se utilice esta variable.
El tipo de datos TO_Struct_Ipr_AxPosition se utiliza para tipos de datos de variables que
pueden ser parámetros de las siguientes instrucciones:

Instrucción Nombre del parámetro Descripción


ptpAxAbs <AxPos> : TO_Struct_Ipr_AxPosition; Movimiento sPTP (synchronous point-
to-point) con posición de destino abso­
luta en coordenadas de máquina
ptpAxRel <AxPos> : TO_Struct_Ipr_AxPosition; Movimiento sPTP (synchronous point-
to-point) con posición de destino relati­
va en coordenadas de máquina

Ejemplo
MCL
PROGRAM Main
VAR
myPos1, myPos2 : TO_Struct_Ipr_AxPosition;
END_VAR
// set parameters for target position in machine coordinate system (MCS)
myPos1.a1 := 10.5;
myPos1.a2 := -123.84;
myPos1.a3 := 17.35;
myPos1.a4 := 2.0;
myPos1.a5 := -13.5;
myPos1.a6 := 10.34;
ptpAxAbs( myPos1 );
// set parameters for relative target position in machine coordinates (MCS)
myPos2.a1 := 30.2;
myPos2.a2 := -13.64;
myPos2.a3 := 1.78;
myPos2.a4 := -5.1;
myPos2.a5 := -12.5;
myPos2.a6 := 50.34;
// usage of myPos2 tag of TO_Struct_Ipr_AxPosition data type as function parameter
ptpAxRel( myPos2 );
END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 63
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Valores estándar
La preinicialización de tipos de datos tecnológicos predefinidos de la estructura del sistema
depende del contexto utilizado. Las siguientes reglas se aplican de forma estándar a
elementos no inicializados para variables y agregados:

Tipo Contexto de utilización Valores estándar


TO_Struct_Ipr_AxPosition Variable a1 = 0.0
a2 = 0.0
Agregado como indicación de
a3 = 0.0
posición relativa en una instruc­
a4 = 0.0
ción tecnológica
a5 = 0.0
a6 = 0.0
Agregado como indicación de Valor real que tiene la variable duran­
posición absoluta en una instruc­ te la preparación de la ejecución del
ción tecnológica programa intérprete

5.2.8 Tipo de datos TO_Struct_Ipr_JtPosition (S7-1500T)

Descripción
El tipo de datos TO_Struct_Ipr_JtPosition es un tipo de variable para definir la posición de los
ejes de la cinemática en el sistema de coordenadas de la articulación (JCS) con hasta 6 grados
de libertad.
Encontrará más información sobre los tipos de cinemáticas, los tipos de movimientos, los
sistemas de coordenadas y los frames, así como los ejes de la cinemática, en la
documentación "S7-1500T Funciones cinemáticas (Página 11)".

Sintaxis
El tipo de datos consta de las siguientes variables:

Identificadores Tipo de datos Descripción


j1 LREAL Posición del 1.er eje de la cinemática en el JCS
j2 LREAL Posición del 2.º eje de la cinemática en el JCS
j3 LREAL Posición del 3.er eje de la cinemática en el JCS
j4 LREAL Posición del 4.º eje de la cinemática en el JCS
j5 LREAL Posición del 5.º eje de la cinemática en el JCS
j6 LREAL Posición del 6.º eje de la cinemática en el JCS

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


64 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Utilización
Una cinemática obtiene coordenadas cartesianas a través de diferentes posiciones de
articulación de los ejes de la cinemática. El sistema de coordenadas de la articulación (JCS)
representa las posiciones mecánicas de las articulaciones cinemáticas. Las articulaciones
pueden realizar movimientos lineales o rotativos.
El rango de valores de cada etiqueta de este tipo de datos depende del tipo de la cinemática,
del tipo de los frames y de la instrucción en la que se utilice esta variable.
El tipo de datos TO_Struct_Ipr_JtPosition se utiliza para tipos de datos de variables que
pueden ser parámetros de las siguientes instrucciones tecnológicas:

Instrucción Nombre del parámetro Descripción


ptpJtAbs <jtPos> : TO_Struct_Ipr_JtPosition; Movimiento sPTP con indicación de des­
tino absoluta en coordenadas de articu­
lación
ptpJtRel <jtPos> : TO_Struct_Ipr_JtPosition; Movimiento sPTP con indicación de des­
tino relativa en coordenadas de articu­
lación

Ejemplo
MCL
PROGRAM Main
VAR
myPos: TO_Struct_Ipr_JtPosition;
END_VAR
// set parameters for position in joint coordinates system (JCS)
myPos.j1 := 10.5;
myPos.j2 := -123.84;
myPos.j3 := 17.35;
myPos.j4 := 2.0;
myPos.j5 := -13.5;
myPos.j6 := 10.34;
// usage of myPos tag of TO_Struct_Ipr_JtPosition data type as function parameter
ptpJtAbs( myPos );
ptpJtRel( myPos );
END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 65
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Valores estándar
La preinicialización de tipos de datos tecnológicos predefinidos de la estructura del sistema
depende del contexto utilizado. Las siguientes reglas se aplican de forma estándar a
elementos no inicializados para variables y agregados:

Tipo Contexto de utilización Valores estándar


TO_Struct_Ipr_JtPosition Variable j1 = 0.0
j2 = 0.0
Agregado como indicación de
j3 = 0.0
posición relativa en una instruc­
j4 = 0.0
ción tecnológica
j5 = 0.0
j6 = 0.0
Agregado como indicación de Valor real que tiene la variable duran­
posición absoluta en una instruc­ te la preparación de la ejecución del
ción tecnológica programa intérprete

5.2.9 Tipo de datos TO_Struct_Ipr_Frame (S7-1500T)

Descripción
Los frames indican el desplazamiento y la rotación de un sistema de coordenadas con
respecto a otro sistema de coordenadas. El tipo de datos TO_Struct_Ipr_Frame puede ser un
tipo de variable para esta especificación. Encontrará más información sobre los tipos de
cinemáticas, los tipos de movimientos, los sistemas de coordenadas y los frames, así como los
ejes de la cinemática, en la documentación "S7-1500T Funciones cinemáticas (Página 11)".

Sintaxis
El tipo de datos consta de las siguientes variables:

Identificadores Tipo de datos Descripción


x LREAL Desplazamiento del frame en sentido x del sistema de coorde­
nadas de referencia
y LREAL Desplazamiento del frame en sentido y del sistema de coorde­
nadas de referencia
z LREAL Desplazamiento del frame en sentido z del sistema de coorde­
nadas de referencia
A LREAL Rotación (ángulo euleriano de la primera rotación) del frame
alrededor del eje z del sistema de coordenadas.
El sistema de coordenadas rotado una vez está compuesto
por los ejes x', y' y z.
B LREAL Rotación (ángulo euleriano de la segunda rotación) del frame
alrededor del eje y' del sistema de coordenadas.
El sistema de coordenadas rotado dos veces está compuesto
por los ejes x", y' y z'.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


66 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Identificadores Tipo de datos Descripción


C LREAL Rotación (ángulo euleriano de la tercera rotación) del frame
alrededor del eje x'' del sistema de coordenadas.
El sistema de coordenadas rotado tres veces está compuesto
por los ejes x", y" y z". Los ejes x'', y'' y z'' equivalen a los ejes x,
y, z del sistema de coordenadas rotado o de la zona rotada.

Utilización
El rango de valores de cada variable de este tipo de datos depende del tipo de la cinemática,
del tipo de frame y de la instrucción en la que se utilice esta variable.
El tipo de datos TO_Struct_Ipr_Frames se utiliza para tipos de datos de variables que pueden
ser parámetros de las siguientes instrucciones tecnológicas:

Instrucción Nombre del parámetro Descripción


defOcs <frame> : TO_Struct_Ipr_Frame; Define uno de los tres sistemas de coor­
denadas del objeto (OCS)
defTool <frame> : TO_Struct_Ipr_Frame; Define uno de los sistemas de coorde­
nadas de la herramienta (TCS)
trackIn <origin> : TO_Struct_Ipr_Frame; Proporciona la funcionalidad para la sin­
<initPos> : TO_Struct_Ipr_Frame; cronización de cinta
defWsZone <fr> : TO_Struct_Ipr_Frame; Definición de las zonas de trabajo
defKinZone <fr> : TO_Struct_Ipr_Frame; Definición del área de la cinemática

Ejemplo
MCL
PROGRAM Main
VAR
//coordinates for OCS frame
myPos_frOCS: TO_Struct_Ipr_Frame := ( x := 10.01, y := 20.02, z := 30.03,
A := 50.0, B := 30.0, C := 45.0 );
//coordinates for TCS frame
myPos_frTool: TO_Struct_Ipr_Frame := ( x := 20.01, y := 50.02, z := 60.03,
A := 7.0, B := 10.0, C := -45.0 );
END_VAR
// function defines the position of OCS in relation to WCS, using myPos_frOCS tag
defOcs( 1, myPos_frOCS );
// function defines TCS, using myPos_frTool tag
defTool( 1, myPos_frTool );
...
END_PROGRAM

Valores estándar
Las siguientes reglas se aplican de forma estándar a elementos no inicializados para variables
y agregados:

Tipo Contexto de utilización Valores estándar


TO_Struct_Ipr_Frame - x, y, z, A, B, C = 0.0

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 67
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

5.2.10 Tipo de datos AXIS_OBJECT (S7-1500T)


El tipo de datos AXIS_OBJECT establece la referencia interna a un eje de la cinemática o eje
individual.

Palabra clave Rango de valores


AXIS_OBJECT Referencias a ejes de posicionamiento y ejes síncronos conectados a
la cinemática ("eje de cinemática"):
$A1, $A2, $A3, $A4, $A5, $A6.
El acceso a ejes individuales mapeados se realiza mediante los identi­
ficadores definidos en las reglas de mapeo.
El valor estándar para variables no inicializadas del tipo AXIS_OBJECT
es "NULL", es decir, la variable no señala a ningún eje.
Encontrará más información sobre el tipo de datos AXIS_OBJECT en la documentación
"S7-1500T Funciones de cinemática (Página 11)".

5.2.11 Conversiones de tipos de datos (S7-1500T)


En MCL debe tenerse en cuenta la compatibilidad de los tipos de datos de los operandos
durante el procesamiento de instrucciones y expresiones y durante la transferencia de
parámetros a funciones.
Al combinar lógicamente dos valores de tipos de datos diferentes o al asignar expresiones a
variables, debe comprobarse siempre la compatibilidad recíproca de los tipos de datos
implicados.
Los siguientes casos dan lugar a resultados erróneos:
• Un cambio a una clase de tipo diferente, p. ej., de un tipo de datos de bit a un tipo de
datos numérico.
• Un cambio dentro de la misma clase de tipo, si este no se realiza sin pérdidas, es decir,
manteniendo el valor y la precisión.
En MCL se distinguen las siguientes formas de conversión de tipos de datos:
• Conversión implícita del tipo de datos
• Conversión explícita del tipo de datos

Conversión implícita del tipo de datos


Si hay compatibilidad entre los operandos, se realiza una conversión automática siguiendo
reglas de conversión definidas.
Para la conversión implícita de tipos de datos se aplican las reglas de conversión de MCL. La
conversión implícita es posible para los tipos de datos de origen DINT y UDINT.
El valor debe ser transferible al tipo de datos de destino. No se convierte el signo.
La tabla siguiente muestra las posibles (✓) conversiones implícitas de tipo de datos:
Origen
BOOL DWORD DINT UDINT LREAL
Destino BOOL ─ ─ ─ ─
DWORD ─ ─ ─ ─
DINT ─ ─ ─ ─
UDINT ─ ─ ─ ─
LREAL ─ ─ ✓ ✓

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


68 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Ejemplo
El ejemplo siguiente muestra una conversión implícita de tipo de datos:

MCL
PROGRAM Main
VAR
Value_1 : DINT;
Value_2 : UDINT;
Value_3 : LREAL;
END_VAR
// Value_1 is implicitly converted to a tag of data type LREAL
Value_3 := Value_1;
// Value_2 is implicitly converted to a tag of data type LREAL
Value_3 := Value_2;
...
END_PROGRAM

Conversión explícita del tipo de datos


Los operandos con tipos de datos incompatibles pueden convertirse de modo explícito con
ayuda de las correspondientes funciones estándar.
La siguiente tabla muestra funciones para la conversión explícita de tipos de datos para
BOOL, DWORD, DINT, UDINT y LREAL:
Origen
BOOL DWORD DINT UDINT LREAL
Desti­ BOOL DWORD_TO_BOOL DINT_TO_BOOL UDINT_TO_BOOL ─
no
DWORD BOOL_TO_DWORD DINT_TO_DWORD UDINT_TO_DWORD ─
DINT BOOL_TO_DINT DWORD_TO_DINT UDINT_TO_DINT LREAL_TO_DINT
UDINT BOOL_TO_UDINT DWORD_TO_UDINT DINT_TO_UDINT LREAL_TO_UDINT
LREAL ─ ─ DINT_TO_LREAL UDINT_TO_LREAL

La tabla siguiente muestra reglas de conversión para cada función:


Origen Destino Explicación Nemónicos de la instrucción
BOOL DWORD En el tipo de datos de destino solo se activa el bit menos BOOL_TO_DWORD
significativo.
DINT BOOL_TO_DINT
Agrega ceros a los bits iniciales.
UDINT BOOL_TO_UDINT
DWORD BOOL Copia el bit menos significativo. DWORD_TO_BOOL
DINT El patrón de bits del valor de origen se transfiere sin cam­ DWORD_TO_DINT
bios y alineado a la derecha al tipo de datos de destino.
UDINT DWORD_TO_UDINT
DINT BOOL Copia el bit menos significativo. DINT_TO_BOOL
DWORD El patrón de bits del valor de origen se transfiere sin cam­ DINT_TO_DWORD
bios y alineado a la derecha al tipo de datos de destino.
UDINT El patrón de bits del valor de origen se convierte y se trans­ DINT_TO_UDINT
fiere al tipo de datos de destino. (El valor "–1" (16#FF) se
convierte en el valor "–1" (16#FFFFFFFF).
LREAL El valor se convierte al formato del tipo de datos de desti­ DINT_TO_LREAL1)
no.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 69
Crear el programa MCL (S7-1500T)
5.2 Tipos de datos (S7-1500T)

Origen Destino Explicación Nemónicos de la instrucción


UDINT BOOL Copia el bit menos significativo. UDINT_TO_BOOL
DWORD El patrón de bits del valor de origen se transfiere sin cam­ UDINT_TO_DWORD
bios y alineado a la derecha al tipo de datos de destino.
DINT UDINT_TO_DINT
LREAL El valor se convierte al formato del tipo de datos de desti­ UDINT_TO_LREAL1)
no. (El valor "1" se convierte en el valor "1.0", por ejemplo.)
LREAL DINT El valor se convierte al tipo de datos de destino. El resulta­ LREAL_TO_DINT1)
do de la conversión depende de la instrucción utilizada.
UDINT LREAL_TO_UDINT1)
Si durante la conversión se rebasa el rango permitido de
valores del tipo de datos de destino o el valor que se desea
convertir es un número en coma flotante no válido, el re­
sultado de la conversión será indefinido.
Se eliminan los decimales y, p. ej., "1.9" se convierte en "1".
1)La conversión también puede realizarse con funciones de conversión específicas (ver capítulo "Conversiones (Página
310)").

Cada instrucción para la conversión de un tipo de datos tiene un solo parámetro de entrada.

Ejemplo
En el siguiente ejemplo, es necesaria una conversión explícita, ya que el tipo de datos de
destino es de orden inferior al tipo de datos de origen.

MCL
PROGRAM Main
VAR
var1 : DINT;
var2 : LREAL;
END_VAR
// DINT is lower order than LREAL
var1 := LREAL_TO_DINT( var2 );
// . . .
END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


70 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

5.3 Variables (S7-1500T)

5.3.1 Categorías de variables y parámetros de función (S7-1500T)

Variables
La tabla muestra las categorías de variables:

Variable Explicación
Variables estáticas locales (VAR) Variables locales definidas por el usuario cuyo valor
se conserva durante la ejecución del programa princi­
pal. El acceso a este tipo de variables solo es posible
desde la unidad de organización del programa en el
que se declaran.
Variables temporales locales (VAR_TEMP) Variables locales definidas por el usuario cuyo valor
se conserva solo durante la ejecución de la función o
del subprograma. El acceso a este tipo de variables
solo es posible desde la unidad de organización del
programa en el que se declaran.
Variables globales del intérprete (VAR_IPR) Variables definidas por el usuario cuyo valor se con­
serva durante toda la ejecución del programa intér­
prete. El acceso a este tipo de variables es posible
desde cada unidad de organización del programa.

Parámetros de función
La tabla muestra las categorías de los parámetros de función:

Parámetros de función Explicación


Parámetros de entrada (VAR_INPUT) Los parámetros de entrada adoptan los valores de en­
trada actuales en la llamada de la función.
Parámetros de salida (VAR_OUTPUT) Los parámetros de salida transmiten los valores de sa­
lida actuales a la unidad de organización del progra­
ma invocante (programa principal u otra función). En
ellos se pueden escribir datos, y de ellos pueden leer­
se datos.

Declaración
Cada categoría de variables o parámetros tiene su propia subsección de declaración, que está
identificada por un par de palabras clave propias. Cada subsección contiene las declaraciones
permitidas para la respectiva subsección de declaración. Estas subsecciones pueden
disponerse en el orden que se quiera. Encontrará más información en los capítulos
"Descripción general de la estructura del programa MCL (Página 125)" y "Parámetros de
función (Página 134)".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 71
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

5.3.2 Declaración de variables y parámetros de función (S7-1500T)

Declaración de variables
Antes de utilizar una variable, debe declararse. La declaración de una variable consta de un
nombre de variable (identificador), una indicación del tipo de datos y una inicialización
opcional. En MCL las variables se declaran en bloques específicos de la unidad de
organización del programa. En consonancia con las categorías de variables, son posibles los
siguientes bloques de declaración:
• Variables estáticas locales (VAR)
• Variables temporales locales (VAR_TEMP)
• Variables globales del intérprete (VAR_IPR)
Los nombres de las variables se declaran dentro de la declaración de variables.

Declaración de parámetros de función


Los parámetros de función son parámetros formales de una función. En la llamada de la
función, los parámetros actuales sustituyen a los parámetros formales y constituyen así un
mecanismo para el intercambio de datos entre el bloque llamado y el invocante.
Según las categorías de variables, son posibles los siguientes bloques de declaración:
• Parámetros de entrada (VAR_INPUT)
• Parámetros de salida (VAR_OUTPUT)
Definen una firma de función, por tanto, la interfaz de llamada de la función.
Consulte
también
Descripción general de la estructura del programa MCL (Página 125)
Parámetros de función (Página 134)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


72 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

5.3.3 Variables estáticas locales (S7-1500T)

Descripción
Las variables estáticas son variables locales definidas por el usuario cuyo valor se conserva
cuando se ejecuta el programa principal.

Sintaxis
Este tipo de variable se declara en el programa principal del programa intérprete, en el bloque
de declaración VAR/END_VAR. Su uso es opcional.

Ejemplo
El siguiente ejemplo muestra el uso de variables locales estáticas:

MCL
VAR
……
myVar : DINT;
MEASARR : ARRAY [1..10] OF LREAL;
myFlag : BOOL;
……
END_VAR

Acceso
El acceso una variable estática local solamente puede realizarse desde la unidad de
organización del programa en el que se ha declarado, es decir, solo desde el programa
principal del intérprete.

5.3.4 Variables temporales locales (S7-1500T)

Descripción
Las variables temporales son variables locales definidas por el usuario que pertenecen a una
función de forma local y no ocupan ningún área de memoria estática.

Sintaxis
La declaración de variables temporales locales se realiza en el bloque de declaración
VAR_TEMP/END_VAR. Este bloque de declaración es una parte de la función. Su uso es
opcional.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 73
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

Ejemplo
El siguiente ejemplo muestra el uso de variables temporales locales:

MCL
VAR_TEMP
……
BUFFER_1 : ARRAY [1..10] OF DINT ;
AUX1, AUX2 : LREAL ;
……
END_VAR

Acceso
El acceso a una variable se realiza siempre desde la sección de código de la función en cuyo
bloque de declaración se ha declarado la variable (acceso interno). No es posible acceder a
variables temporales desde fuera de la función en la que se han declarado.

NOTA
Los bloques VAR del programa principal y VAR_TEMP de funciones son bloques
funcionalmente sinónimos.

5.3.5 Variables globales del intérprete (S7-1500T)

Descripción
Las variables globales del intérprete son visibles para cada unidad de organización de un
programa intérprete.

Sintaxis
Para la declaración de variables globales del intérprete se utiliza VAR_IPR/END_VAR. Este
bloque de declaración debe ser una parte del programa principal. Su uso es opcional.

Ejemplo
El siguiente ejemplo muestra el uso de variables globales del intérprete:

MCL
VAR_IPR
……
glbVar1 : DINT;
……
END_VAR

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


74 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

Acceso
El acceso a estas variables puede realizarse desde el programa principal y desde todas las
funciones llamadas desde allí.
En una función no pueden definirse variables globales del intérprete.
No es posible el acceso desde el programa de usuario a variables globales del intérprete.

5.3.6 Parámetros de entrada (S7-1500T)

Descripción
A los parámetros de entrada formales se les asignan los valores de entrada actuales (flujo de
datos a la función) de una función. Los parámetros de entrada adoptan los valores de entrada
actuales en la llamada de la función.

Sintaxis
Los parámetros de entrada de las funciones se declaran en el bloque de declaración
VAR_INPUT/END_VAR. Este bloque de declaración debe ser una parte de la función. Su uso es
opcional.

Ejemplo
El siguiente ejemplo muestra el uso de los parámetros de entrada:

MCL
VAR_INPUT
……
inPar : DINT;
inTriger : BOOL;
……
END_VAR

Acceso
El acceso estos parámetros solamente puede realizarse desde la sección de código de la
función en cuya unidad de declaración se ha declarado el parámetro. Encontrará información
más detallada sobre el uso de parámetros y el intercambio de datos asociado en el capítulo
"Parámetros de función (Página 134)".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 75
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

5.3.7 Parámetros de salida (S7-1500T)

Descripción
Los parámetros de salida formales sirven para transferir los valores de salida (flujo de datos
del bloque hacia fuera). Los parámetros de salida transfieren los valores de salida actuales a la
unidad de organización del programa invocante (programa principal o instrucciones). En ellos
se pueden escribir datos, y de ellos pueden leerse datos.

Sintaxis
Los parámetros de las funciones de salida se declaran en el bloque de declaración
VAR_OUTPUT/END_VAR. Este bloque de declaración debe ser una parte de la función. Su uso
es opcional.

Ejemplo
El siguiente ejemplo muestra el uso de los parámetros de salida:

MCL
VAR_OUTPUT
……
outPar : BOOL;
outPar_Current : LREAL;
……
END_VAR

Acceso
El acceso estos parámetros puede realizarse desde la sección de código de la función en cuyo
bloque de declaración se ha declarado el parámetro. Encontrará información más detallada
sobre el uso de parámetros y el intercambio de datos asociado en el capítulo "Parámetros de
función (Página 134)".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


76 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

5.3.8 Inicialización de variables y parámetros de función (S7-1500T)

Descripción
Las variables y parámetros de función (parámetros de entrada y salida de una función)
obtienen un valor inicial durante la declaración en unidades de declaración. La inicialización
se realiza a través de una asignación de valor (juego de símbolos ":=") que sigue a la
especificación del tipo de datos.

Inicialización de variables y parámetros


Para inicializar variables o parámetros debe asignarse un valor a una variable:

MCL
myVar: LREAL := 12.25;
a1, a2, a3, b1 : DINT := 11; // tag list initialization
Para la inicialización no está permitido indicar ninguna expresión como valor de inicialización.
Solamente se permiten valores o constantes.

MCL
myVar: LREAL := 12.25 + 3.14 * 2.0; // not allowed

Inicialización de arrays
Un array se puede inicializar de varias maneras:
• Agregación de arrays
my1dArr2 : ARRAY [1..5] OF DINT := [1, 3, 8, 4, 0];
• Asignación de una lista de inicialización mediante el uso de un factor de repetición y de un
valor con corchetes externos:
myARRAY : ARRAY[1..10] OF LREAL := [10(3.29)];
con "10" como factor de repetición y "3,29" como valor
• Variante mixta, es decir, la agregación también puede contener factor de repetición y
valor:
d : ARRAY[1..12] OF LREAL := [0.0, 5(10.0), 1.0];
Si el número de valores en la inicialización del array supera el tamaño del correspondiente
array, se genera un error semántico. Si no se indican valores suficientes en la inicialización del
array en comparación con el tamaño del array, los restantes valores se inicializan con el valor
estándar del tipo de datos utilizado como sucede, p. ej., en el ejemplo anterior de la variante
mixta:
• d[1] es 0.0.
• Sigue 5 veces el valor 10.0 (d[2] a d[6]).
• d[7] es 1.0.
• Puesto que los valores 8 a 12 (d[8] a d[12]) no se inicializan explícitamente, obtienen el
valor predeterminado de tipo 0.0.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 77
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

Inicialización de estructuras
MCL permite también inicializar variables de tipos definidos por el usuario a través de
agregados de estructuras. Es posible inicializar cada elemento estructurado:

MCL
// structure with initialisation
myStructVar : STRUCT
a : LREAL := 12.3;
b : DINT := 12 ;
c : ARRAY[1..12] OF LREAL := [0.0, 5(10.0), 1.0];
END_STRUCT ;
Tras inicializarlos, los elementos tienen los siguientes valores:
• myStructVar.c[1] = 0.0;
• myStructVar.c[2,3,4,5,6] = 10.0;
• myStructVar.c[7] = 1.0;
• myStructVar.c[8,9,10,11,12] = 0.0;

Ejemplo
El siguiente ejemplo muestra la inicialización de variables:

MCL
TYPE
Motor : STRUCT
mType : DINT;
Data : STRUCT
Loadcurrent : LREAL;
//initialization for the structure element
Voltage : LREAL := 5.0;
END_STRUCT;
END_STRUCT;
END_TYPE

PROGRAM Main

//initialization for global interpreter variables


VAR_IPR
myVar2 : DINT := 0;
myVar3, myVar4 : DINT := 0;
END_VAR

//initialization for local variables


VAR
myVar1 : LREAL := 0.0;
//array variables with optional initialization
my1dArr2 : ARRAY [1..5] OF DINT := [1, 3, 8, 4, 0];
//each element of array has the same value = 1.234
my1dArr3 : ARRAY [1..5] OF LREAL := [5(1.234)];
myMotor1 : Motor := ( mType := 1,
Data := (Loadcurrent := 15.3,
Voltage := 13.5) );
END_VAR

//statement part of the main program


my1dArr3[4] := my1dArr2[1] + my1dArr3[5];
my1dArr3[5] := 14.67;
myMotor1.mType := 2;
myMotor1.Data.Loadcurrent := 8.5;
END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


78 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.3 Variables (S7-1500T)

5.3.9 Uso de variables de los bloques de datos de objetos tecnológicos (S7-1500T)

Descripción
El intérprete ofrece acceso directo a sus propias variables de bloque de datos de objeto
tecnológico y a variables de bloques de datos de objetos tecnológicos mapeados en el
programa MCL.
Se soportan los objetos tecnológicos siguientes:

Objeto tecnológico Aplicación


"Interpreter instance" $IPR
Objeto tecnológico propio del intérprete
"Kinematics" $KIN
Objeto tecnológico Cinemática conectada
"Kinematics axis" $A1, $A2, $A3,
Objeto tecnológico Eje $A4, $A5, $A6

Referencias a objetos tecnológicos mapeados En el archivo de mapeo con base en la regla de ma­
(p. ej., un eje) peo de los identificadores definidos

Sintaxis
El acceso a una variable se realiza de forma estructurada mediante una combinación del área
del objeto asignado (<TO_Identifier>) y el nombre de la variable (<VarName>):

Sintaxis Explicación
"<TO_Identifier>.<VarName>" <TO_Identifier> Como objeto tecnológico, el identifi­
cador puede ser lo siguiente:
• Objeto tecnológico propio
"Interpreter instance"
• Objetos "Kinematics" conectados
• "Kinematics axis"
• Referencias a objetos tecnológi­
cos mapeados (eje)
Nota: Para obtener acceso a estos
objetos tecnológicos, debe utilizar el
símbolo "$" delante del nombre del
objeto tecnológico
"." Puesto que un objeto tecnológico
tiene un tipo de estructura
("STRUCT"), se accede a las variables
de los objetos tecnológicos como un
elemento del tipo de datos de estruc­
tura con el símbolo "."
<VarName> Nombre simbólico de la variable del
objeto tecnológico Structure
Solo es posible la escritura de variables modificables directamente (identificadas como "Direct
(DIR)") en el bloque de datos de objeto tecnológico. La lectura y escritura de las
correspondientes variables es posible en todas las asignaciones de valores y expresiones. Por
tanto, es necesario indicar el ámbito de validez antepuesto.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 79
Crear el programa MCL (S7-1500T)
5.4 Constantes (S7-1500T)

Ejemplo

Objeto tecnoló­ Descripción Ejemplo en MCL


gico
$A1 Eje A1 de la cinemática //set acceleration value for axis A1
$A1.DynamicDefaults.Acceleration := 10.0;
$A2 Eje A2 de la cinemática
//set velocity value for axis A2
$A3 Eje A3 de la cinemática $A1.DynamicDefaults.Velocity := 10.0;
$A4 Eje A4 de la cinemática //read actual position for axis A3
posAxisA3 := $A3.ActualPosition;
$A5 Eje A5 de la cinemática //read error status of the drive
$A6 Eje A6 de la cinemática driveError := $A5.StatusDrive.Error;
//set home-position for axis A6
$A6.Homing.HomePosition := 33.25;
$IPR Intérprete //read Interpreter status word
IPR_StatusWord := $IPR.StatusWord;
$KIN Cinemática //set limit for jerk
$KIN.DynamicLimits.Path.Jerk := 10000.0
//set override of velocity
$KIN.Override.Velocity := 100.0;
Identificador del Referencias a objetos tecno­ //set TO "myAxis" to absolute position
objeto tecnológi­ lógicos mapeados (p. ej., un posAbs( myAxis, 20.0 );
co eje individual). preHalt(); //Pre-run stop
Identificador definido en la //read actual position for TO "myAxis"
regla de asignación del myVar := myAxis.ActualPosition;
ejemplo:
"myAxis"
La descripción de todas las variables para cada objeto tecnológico figura en los documentos
"Variables de los bloques de datos de objetos tecnológicos" y "Variables del objeto tecnológico
Cinemática".

5.4 Constantes (S7-1500T)

5.4.1 Categorías de constantes (S7-1500T)

Descripción
Las constantes son elementos de datos que tienen un valor que no se puede modificar
durante la ejecución del programa. MCL permite utilizar los siguientes grupos de constantes,
dependiendo del nivel de acceso:
• Constantes locales: solo visibles para la unidad de organización del programa en la que se
han declarado.
• Constantes globales del intérprete: visibles para cada unidad de organización de un
programa intérprete.
Las asignaciones de valor y las expresiones utilizan también constantes además de variables y
parámetros de función.
Las constantes tienen un nombre simbólico. Los nombres simbólicos de las constantes deben
declararse por separado en un bloque de declaración propio.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


80 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.4 Constantes (S7-1500T)

5.4.2 Declaración de constantes (S7-1500T)

Descripción
Las constantes se declaran según el tipo en secciones de declaración independientes de la
unidad de organización del programa. La especificación de valores necesaria se realiza
mediante una asignación de valores (juego de símbolos ":=") que sigue a la especificación del
tipo de datos. Para la inicialización no está permitido indicar ninguna expresión como valor de
inicialización. Solamente se permiten valores o constantes.
Son posibles las siguientes secciones de declaración:
• VAR CONSTANT/END_VAR para las constantes locales
• VAR_IPR CONSTANT/END_VAR para las constantes globales del intérprete
En una función no pueden definirse constantes globales del intérprete.
La tabla siguiente muestra qué tipos de constantes se pueden declarar en las diferentes
unidades de organización del programa:

Nombre de la unidad Utilización Sintaxis en MCL POE


de declaración Programa princi­ Función
pal
Unidad de declaración opcional VAR CONSTANT ✓ ✓
para constantes locales ……
END_VAR
Unidad de declaración opcional VAR_IPR CONSTANT ✓
para constantes globa­ ……
END_VAR
les de intérprete

Consulte
también
Declaración de variables y parámetros de función (Página 72)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 81
Crear el programa MCL (S7-1500T)
5.4 Constantes (S7-1500T)

5.4.3 Constantes locales (S7-1500T)

Sintaxis
Para la declaración de constantes locales se utiliza el bloque VAR CONSTANT/END_VAR. Este
bloque de declaración debe ser una parte del programa principal o de la función. Su uso es
opcional.

Ejemplo
El siguiente ejemplo muestra la declaración de constantes en el programa principal y en una
función:

MCL
PROGRAM Main
VAR CONSTANT
myConst : DINT := 20;
END_VAR
VAR
myVar1, myVar2 : LREAL;
END_VAR
myVar1 := 1.5;
myVar2 := 2.3 + myConst;
END_PROGRAM
FUNCTION myFct : VOID
VAR CONSTANT
myConst : DINT := 50;
END_VAR
VAR
myVar3 : LREAL;
END_VAR

myVar3 := myConst + 4.5;


END_FUNCTION

Acceso
Las constantes locales son solo visibles para la unidad de organización del programa en la que
se han declarado (programa principal o función).

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


82 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.4 Constantes (S7-1500T)

5.4.4 Constantes globales (S7-1500T)

Sintaxis
El bloque VAR_IPR CONSTANT/END_VAR sirve para declarar constantes globales de intérprete
en el programa principal. El uso de este bloque de declaración es opcional.

Ejemplo
El siguiente ejemplo muestra la declaración de una constante global de intérprete y el uso de
constantes locales y globales:
MCL
PROGRAM Main
VAR CONSTANT
myConst : DINT := 10;
END_VAR
VAR_IPR CONSTANT
myGlobalConst : DINT := 20;
END_VAR
VAR
myVar1, myVar2 : LREAL;
END_VAR
myVar1 := 1.5;
myVar2 := 2.3 + myConst + myGlobalConst;
END_PROGRAM
FUNCTION myFct : VOID
VAR CONSTANT
myConst : DINT := 20;
END_VAR
VAR
myVar3 : LREAL;
END_VAR

myVar3 := myConst* myGlobalConst +4.5; // myVar3 = 20 * 20 + 4.5


END_FUNCTION

Acceso
Las constantes globales de intérprete son visibles para cada unidad de organización del
programa del intérprete. A estas puede accederse desde el programa principal y desde todas
las funciones llamadas desde allí.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 83
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

5.5 Operadores (S7-1500T)

5.5.1 Descripción general de los operadores (S7-1500T)


Las expresiones en MCL contienen operadores. Un operador es una regla que permite generar
un nuevo operando a partir de otro operando.
Existen varias clases de operadores soportados por MCL:
• Operadores de asignación
• Operadores aritméticos
• Operadores de comparación
• Operadores lógicos
• Operadores de selección de elementos

5.5.2 Operadores de asignación (S7-1500T)

Descripción
Un operador de asignación de valores asigna el valor de una expresión a una variable. El
anterior valor se sobrescribe. La variable solamente existe después de su declaración.
Encontrará más información en el capítulo "Declaración de variables y parámetros de función
(Página 72)".

Sintaxis
La expresión se evalúa en el lado derecho del símbolo de asignación del operador. El
resultado se almacena en la variable cuyo nombre figura en el lado izquierdo del operador de
asignación (variable de destino).
La tabla siguiente muestra las reglas sintácticas para operadores de asignación:

Sintaxis Nombre
<VAR_Name> := <Expression>; <VAR_Name> El nombre simbólico de la varia­
ble es un identificador libre.
El operador ":=" asigna un valor o una ex­ La variable puede ser:
presión a una variable. • Variable de un tipo de datos
simple
• Elemento de Array
• Elemento de variables estruc­
turadas
(STRUCT data type)
• Parámetro de entrada cuando
se llama la función
• Variable de tipos de estructura
tecnológicos predefinidos
:= Símbolo del operador de asigna­
ción
<Expression> Una expresión representa un va­
lor que se calcula cuando se eje­
cuta el programa.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


84 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

Sintaxis Nombre
<VAR_Name> := <Expression>; ; Punto y coma – finaliza cada ex­
presión
El operador ":=" asigna un valor o una ex­
presión a una variable.
<VAR_OUTPUT> => <VAR_Name>; <VAR_OUTPUT> Nombre simbólico del parámetro
de salida de una función. Identifi­
cador libre
=> Símbolo del operador de asigna­
ción
<VAR_Name> Nombre de la variable a la que de­
be asignarse el valor del paráme­
tro de salida de la función. El tipo
del parámetro de salida debe ser
convertible de modo implícito al
tipo de esta variable.

Ejemplo
El siguiente ejemplo muestra operadores de asignación:

MCL
//assignment arithmetical expression
elemVar := 3 * 3;
//assignment tag with the same data type
elemVar := elemVar1;
//assignment array elements
elem1 := array[i];
array_1 [2] := array_2[5];
array [j] := 14;
//assignment whole array with the same data type
array_1 := array_2;
//assignment STRUCT data type elements
struct1.elem1 := Var1;
struct1.elem1 := 20;
struct1.elem1 := struct2.elem1;
//assignment input parameters in function call
mySub( in := 1.0 );
//assignment Output parameters in function call
myFunc( in := 10.0, Out => myVar2);
//assignment variables of predefined technological structured types
$A1.DynamicDefaults.Acceleration := 10.0;
myAxis := $A1;
myAxis := NULL;
myAxis1 := myAxis2;
IPR_StatusWord := $IPR.StatusWord;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 85
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

5.5.3 Operadores de asignación de valor combinados (S7-1500T)

Descripción
MCL ofrece la posibilidad de utilizar operadores de asignación de valor combinados, es decir,
la asignación combinada con operadores aritméticos.
En este caso, la operación de asignación se ejecuta tras la correspondiente operación
aritmética. El primer operando de esta operación es la variable en la parte izquierda del
operador, y el segundo operando es la expresión en la parte derecha.

Sintaxis
La tabla siguiente muestra la sintaxis para el uso de esta opción:

Sintaxis Descripción
<VAR_Name> += <Expression>; <VAR_Name> Nombre simbólico de la variable.
<VAR_Name> -= <Expression>; Identificador libre.
<VAR_Name> *= <Expression>;
<VAR_Name> /= <Expression>; La variable puede ser:
Estos operadores asignan un valor tras eje­ • Variable de un tipo de datos
cutarse la operación aritmética. simple
• Elemento de array basado en
un tipo de datos simple
• Elemento de una variable es­
tructurada basado en un tipo
de datos simple
• Parámetro de entrada de la
función durante la llamada de
función
+= Símbolo de operador de asigna­
ción combinado.
De forma correspondiente:
<VAR_Name> = <VAR_Name> +
<Expression>
-= Símbolo de operador de asigna­
ción combinado.
De forma correspondiente:
<VAR_Name> = <VAR_Name> -
<Expression>
*= Símbolo de operador de asigna­
ción combinado.
De forma correspondiente:
<VAR_Name> = <VAR_Name> *
<Expression>

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


86 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

Sintaxis Descripción
<VAR_Name> += <Expression>; /= Símbolo de operador de asigna­
<VAR_Name> -= <Expression>; ción combinado.
<VAR_Name> *= <Expression>;
<VAR_Name> /= <Expression>; De forma correspondiente:
Estos operadores asignan un valor tras eje­ <VAR_Name> = <VAR_Name> /
cutarse la operación aritmética. <Expression>
<Expression> Una expresión representa un va­
lor que se calcula cuando se eje­
cuta el programa
; Punto y coma – finaliza cada ex­
presión

Ejemplos
Los siguientes ejemplos de la asignación combinada con operadores aritméticos se basan en
el supuesto de que el valor de la variable MyVar es 10:
MCL
// assignment combined with addition
MyVar += 5; //result MyVar = 15;
// assignment combined with subtraction
MyVar -= 5; //result MyVar = 5;
// assignment combined with multiplication
MyVar *= 5; //result MyVar = 50;
// assignment combined with division
MyVar /= 5; //result MyVar = 2;
// Examples with array and structured variables
struct1.elem1 *= 20; // Match with struct1.elem1 := struct1.elem1 * 20
array_1[2] /= array_2[5]; // Match with array_1[2] := array_1[2] / array_2[5]

5.5.4 Reglas de asignación (S7-1500T)

Descripción
Para la asignación se aplican las reglas siguientes:
• Si la variable tiene un tipo de datos simple, la asignación de valores es posible con las
siguientes condiciones:
– El resultado de la expresión y la variable deben tener un tipo de datos idéntico.
– El tipo de datos de la expresión calculada puede convertirse implícitamente en el tipo
de datos de la variable si esto está permitido para los tipos de datos implicados.
• Si la variable es de un tipo de datos complejo o predefinido por el sistema, la expresión
asignada debe tener un tipo de datos idéntico.
• Si la variable es un Array, la expresión también debe ser un Array con idéntico tipo de
datos para el Arrayelement e idénticos límites de campo.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 87
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

Especificación de valores para estructuras y arrays a través de agregados


La especificación de valores para estructuras y arrays puede realizarse a través de agregados.
Esto se permite en los casos siguientes:
• Inicialización dentro de la declaración de variables
• Parámetros en funciones de sistema
• Asignación directa a una variable del mismo tipo
La especificación de valores para estructuras y arrays a través de agregados en un contexto
diferente da lugar a un error en tiempo de ejecución (p. ej., en expresiones, como parámetros
en funciones y similares).

Ejemplo
MCL
TYPE
myType : STRUCT
id : DINT;
values : ARRAY [0..1] OF LREAL;
END_STRUCT;
END_TYPE
VAR
// Initialization within the tag declaration
myVar2 : myType := ( id := 1, values := [1.0, 2.0] );
myPos1 : TO_Struct_Ipr_Position := ( x := 10.0, y := 20.0, z := 30.0,
A := 0.0, B := 0.0, C := 0.0 );
myPos2 : TO_Struct_Ipr_Position;
myArr1 : ARRAY [1..3] OF AXIS_OBJECT := [$A1, $A2, $A3];
END_VAR
myPos2 := ( x := 20.0, y := 40.0, z := 60.0, A := 0.0, B := 0.0, C := 0.0 );
// technology function, complete specification of all structure members
linAbs( (x := 100.0, y := 100.0, z := 0.0, A := 1.0, B := 0.0, C := 0.0) );
// technology function, incomplete specification of all structure member
// (Default-value for missing members in relative motions)
linRel( ( x := 100.0 ), trans := 1, blend := 2 );
linRel( ( y := 100.0, z := 50.0 ) );
...

Asignaciones múltiples
En MCL se permiten las asignaciones múltiples:

MCL
myVar12 := myVar2 := myVar3 := 0.0;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


88 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

5.5.5 Operadores aritméticos (S7-1500T)

Descripción
Una expresión aritmética es aquella que se forma con operadores aritméticos. Estas
expresiones permiten procesar tipos de datos numéricos.

Sintaxis
La tabla siguiente muestra para cada operación aritmética:
• El operador
• Los tipos de datos admitidos de los operandos
• El tipo de datos del resultado

Instrucción Operador Tipo de datos


Primer operando Segundo operan­ Resultado
do
Exponencial ** LREAL LREAL LREAL
Más unario + ANY_NUM (None) ANY_NUM
Menos unario - ANY_NUM (None) ANY_NUM
Multiplicación * ANY_NUM ANY_NUM ANY_NUM
División / ANY_NUM ANY_NUM1) ANY_NUM
División módulo MOD ANY_INT ANY_INT1) ANY_INT
Suma + ANY_NUM ANY_NUM ANY_NUM
Resta - ANY_NUM ANY_NUM ANY_NUM
1) El segundo operando no puede ser igual a cero.

Reglas
El orden de aplicación de los operadores dentro de una expresión matemática depende de su
prioridad.
Encontrará más información sobre la prioridad de los operadores en el capítulo "Prioridades
de operadores (Página 94)".
• El operador de división ('/', 'MOD') requiere que el segundo operando no sea cero.
• Si una cifra es de tipo ANY_INT (número entero) y la otra es de tipo LREAL (número real
largo), el resultado siempre será de tipo LREAL.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 89
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

Ejemplo de expresiones aritméticas con cifras


Bajo el supuesto de que i y j son variables enteras con los valores 11 y -3 (p. ej., del tipo de
datos DINT), los siguientes ejemplos muestran expresiones enteras y sus correspondientes
valores:

Expresión Valor
i+j 8
i-j 14
i*j -33
i MOD j -2
i/j -3

5.5.6 Operadores de comparación (S7-1500T)

Descripción
Una expresión de comparación es una expresión de tipo BOOL que se forma con operadores
de comparación.

Sintaxis
Los operadores de comparación comparan los valores de dos operandos y devuelven como
resultado un valor BOOL. En el resultado obtenido de esta forma es un valor que representa
los atributos TRUE o FALSE.
El significado de los operadores de comparación se explica en la siguiente tabla:

Operador Significado
> El primer operando es mayor que el segundo operando
< El primer operando es menor que el segundo operando
>= El primer operando es mayor o igual que el segundo operando
<= El primer operando es menor o igual que el segundo operando
= El primer operando es igual que el segundo operando
<> El primer operando es distinto al segundo operando
El resultado de la expresión de comparación es:
• 1 (TRUE), si la comparación es cierta
• 0 (FALSE), si la comparación no es cierta

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


90 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

La tabla siguiente muestra las combinaciones permitidas de tipos de datos para ambos
operandos y operadores de comparación:

Tipo de datos Operadores de comparación


Primer operando Segundo operando permitidos

ANY_NUM ANY_NUM1) <, >, <=, >=, =, <>


ANY_BIT ANY_BIT <, >, <=, >=, =, <>
ARRAY ARRAY2) =, <>
Estructura (STRUCT) Estructura (STRUCT)2) =, <>
Variable de tipo tecnológico es­ o =, <>
tructurados - AXIS_OBJECT NULL
1) La comparación se ejecuta en el tipo de datos común más simple al que se pueden convertir implíci­
tamente ambos operandos.
2) Tipo de datos del primer operando.

Reglas
Al crear las expresiones de comparación deben observarse las reglas siguientes:
• Los operandos deben indicarse entre paréntesis para garantizar que la instrucción en la
que se ejecute la operación lógica sea inequívoca.
• Las expresiones lógicas pueden combinarse siguiendo las reglas de la lógica booleana para
crear consultas como, p. ej.:
IF a < b AND b > c THEN

END_IF
Las variables o constantes del tipo BOOL y expresiones de comparación pueden utilizarse
como la expresión.

Ejemplo
El siguiente ejemplo muestra el uso de operadores de comparación:

MCL
IF A = 2 THEN
; //...
END_IF;

var_1 := B < C; // var_1 of BOOL data type

IF D < E OR var_2 THEN // var_2 of BOOL data type


...
END_IF;
// Comparison operator Equal for variables of predefined
//technological structured type - AXIS_OBJECT
IF myAxis = $A1 THEN
...
END_IF
IF myAxis = NULL THEN
...
END_IF
// Comparison operator Unequal for variables of predefined

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 91
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

MCL
//technological structured type - AXIS_OBJECT
IF myAxis <> NULL THEN
...
END_IF

5.5.7 Operadores lógicos (S7-1500T)

Descripción
Con los operadores lógicos AND, &, XOR y OR es posible combinar lógicamente operandos y
expresiones de tipos de datos generales ANY_BIT (BOOL o DWORD).
Con el operador lógico NOT es posible negar lógicamente operandos y expresiones de tipos
de datos ANY_BIT.

Sintaxis
La tabla contiene información sobre los operadores disponibles:

Instrucción Operador Primer operando Segundo operan­ Resultado


do
Negación NOT ANY_BIT - ANY_BIT
Conjunción AND or & ANY_BIT ANY_BIT ANY_BIT
Disyunción exclusiva XOR ANY_BIT ANY_BIT ANY_BIT
Disyunción OR ANY_BIT ANY_BIT ANY_BIT
Las abreviaturas tienen el siguiente significado: ANY_BIT para tipos de datos BOOL, DWORD.

Reglas
• Expresión lógica: Solo operandos del tipo de datos BOOL. Los operadores tienen los
efectos indicados en la siguiente tabla de verdad sobre los operandos. El resultado de una
expresión lógica es 1 (TRUE) o 0 (FALSE).
• Expresión de bits en serie: Operandos del tipo de datos DWORD. Los operadores tienen el
efecto indicado en la siguiente tabla de verdad sobre los operandos:

Operandos Resultado
a b NOT a NOT b a AND b a XOR b a OR b
a&b
0 0 1 1 0 0 0
0 1 1 0 0 1 1
1 0 0 1 0 1 1
1 1 0 0 1 0 1
La operación se realiza bit a bit.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


92 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

Ejemplos
Los siguientes ejemplos muestran el uso de operadores lógicos:

Expresión (n = 10) Valor


(n > 0) AND (n < 20) TRUE
(n > 0) AND (n < 5) FALSE
(n > 0) OR (n < 5) TRUE
(n > 0) XOR (n < 20) FALSE
NOT ((n > 0) AND (n < 20)) FALSE

Expresión Valor
2#01010101 AND 2#11110000 2#01010000
2#01010101 OR 2#11110000 2#11110101
2#01010101 XOR 2#11110000 2#10100101
NOT 2#01010101 2#10101010

5.5.8 Operadores de selección de elementos (S7-1500T)

Descripción
El operador "." sirve para elegir un elemento de la estructura. Solamente puede utilizarse con
variables del tipo de datos STRUCT.

Sintaxis
Para acceder a un determinado elemento de una estructura (en modo de escritura o de
lectura), es necesario utilizar el símbolo ".". Al elemento superior de la variable estructurada
debe seguir un símbolo ".". A este símbolo debe seguir el elemento subordinado de la
estructura:
<VAR_StructName>.<Parent_name>.<Child_name> := <Value>;

Ejemplo

MCL
PROGRAM Main
VAR
myMotor : STRUCT
motorType : UDINT;
Current : LREAL;
Voltage : LREAL;
END_STRUCT;
END_VAR

// element selection
myMotor.Current := 10.5;
myMotor.Voltage := 380.0;
...

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 93
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

MCL
END_PROGRAM

5.5.9 Prioridad de los operadores (S7-1500T)

Descripción
La instrucción de interpretación de una expresión depende de lo siguiente:
• Prioridad de los operadores utilizados
• Regla de izquierda a derecha
• Uso de paréntesis

Reglas
El procesamiento de expresiones se realiza siguiendo determinadas reglas:
• La ejecución de los operadores corresponde a su prioridad (ver tabla más abajo)
• La ejecución de operadores con la misma prioridad se realiza de izquierda a derecha
• Un signo menos al comienzo de un identificador significa multiplicación por -1
• Los paréntesis aumentan la instrucción de prioridad del operador, es decir, el contenido de
los paréntesis tiene la máxima prioridad
• El número de paréntesis de apertura debe ser idéntico al número de paréntesis de cierre

Operadores válidos en MCL


La tabla siguiente muestra los operadores válidos en MCL con el nivel de prioridad de
ejecución ("1" representa la máxima prioridad):

Símbolo del operador Operador Prioridad


. Operadores de selección de elementos 1
(Expresión) Contenidos de paréntesis 1
** Exponencial 2
- Menos unario 3
NOT Negación 3
* Multiplicación 4
/ División 4
MOD Módulo (resto de división) 4
+ Suma 5
- Resta 5
< Menor que 6

≤ Menor o igual que 6


> Mayor que 6

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


94 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.5 Operadores (S7-1500T)

Símbolo del operador Operador Prioridad


≥ Mayor o igual que 6
= Igual que 7

<> Distinto 7
AND or Y lógica 8
&
XOR O exclusiva 9
OR O lógica 10
:= Valor de asignación o expresión en variable. 11
Este operador asigna un valor o una expresión a
una variable.
=> Asignación de variables a parámetros de salida. 11
Este operador asigna una variable al parámetro
de salida al llamar la función.
+= Asignación de valor combinada. 11
Este operador asigna un valor tras ejecutarse
-= 11
una operación aritmética.
*= 11
/= 11

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 95
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

5.6 Instrucciones de control (S7-1500T)

5.6.1 Instrucciones IF (S7-1500T)

Descripción
La instrucción IF es una ramificación de programa condicionada. El orden de ejecución
depende de las condiciones indicadas (una o varias opciones). La ejecución de las
instrucciones condicionadas fuerza la comprobación de las expresiones lógicas indicadas. Si el
valor de una expresión lógica es TRUE, la condición se cumple y se ejecuta la sección de
instrucciones. Si el valor es FALSE, la condición no se cumple y no se ejecuta la sección de
instrucciones.

Sintaxis
El siguiente diagrama muestra la sintaxis de una instrucción IF:
*' &YQSFTJ³O 5)&/ 4FDDJ³OEF
JOTUSVDDJPOFT

$POEJDJ³OEFMUJQPEFEBUPT#00-

&-4*' &YQSFTJ³O 5)&/ 4FDDJ³OEF


JOTUSVDDJPOFT
$POEJDJ³OEFMUJQPEFEBUPT#00-

&-4& 4FDDJ³OEFJOTUSVDDJPOFT &/%@*' 

Desarrollo de la ejecución
Para instrucciones IF se aplica lo siguiente:
• Si el valor de la primera expresión es TRUE, se ejecuta la sección de instrucciones tras
THEN.
El programa continúa entonces tras END_IF.
• Si el valor de la primera expresión es FALSE, se evalúan a continuación las expresiones en
las ramificaciones ELSIF. Si una expresión booleana en una de las ramificaciones ELSIF es
TRUE, se ejecuta la sección de instrucciones tras THEN.
El programa continúa entonces tras END_IF.
• Si ninguna de las expresiones booleanas en las ramificaciones ELSIF es TRUE, se ejecuta la
secuencia de instrucciones que sigue a ELSE (si no hay ninguna ramificación ELSE, no se
ejecuta ninguna otra instrucción).
El programa continúa entonces tras END_IF.
Puede programarse un número cualquiera de instrucciones ELSIF.
Tenga en cuenta que las instrucciones ELSIF y ELSE son opcionales.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


96 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Una ventaja de utilizar una o varias ramificaciones ELSIF en lugar de una secuencia de
instrucciones IF es que las expresiones lógicas que siguen a expresiones válidas ya no se
evalúan. Esto contribuye a reducir el tiempo de procesamiento del programa y a impedir la
ejecución de rutinas no deseadas.

Ejemplo
El ejemplo siguiente muestra el uso de la instrucción IF:

MCL

(*
myAxis is a tag with type of AXIS_OBJECT.
It can be assigned to an object, using assign operator.
If the tag is not assigned to the AXIS_OBJECT (for example,
myAxis := $A1), the tag contains no AXIS_OBJECT and
has value NULL.
*)
IF myAxis <> NULL THEN //check if myAxis is assigned to AXIS_OBJECT
myVar := 1;
ELSIF i = 4 THEN
myVar := 2;
ELSE
myVar := 3;
END_IF;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 97
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

5.6.2 Instrucción CASE (S7-1500T)

Descripción
La instrucción CASE elige una sección de programa a partir de una selección de n alternativas.
Esta selección se basa en el valor actual de una expresión de selección.
La selección tiene lugar a partir de una lista de valores que asigna una sección de programa a
cada valor/grupo de valores.

Sintaxis
El siguiente diagrama muestra la sintaxis de una instrucción CASE:
7BSJBCMF

5JQPEFEBUPOVN©SJDP

$"4& &YQSFTJ³O 0'

-JTUBEFWBMPSFT  4FDDJ³OEF
JOTUSVDDJPOFT

4FDDJ³OEF 
&-4& JOTUSVDDJPOFT &/%@$"4&

Desarrollo de la ejecución
Para instrucciones CASE se aplica lo siguiente:
• La expresión que sigue a la palabra clave CASE se evalúa y debe contener un valor del tipo
DINT o UDINT, que se compara con la lista de valores.
• A continuación, se comprueba si el valor de selección está contenido en la lista de valores.
Cada valor de la lista representa uno de los valores admisibles para la expresión de
selección.
• Si una lista coincide, se ejecuta la parte correspondiente del programa, y el programa
continúa después tras END_CASE.
• Si no hay ninguna coincidencia, pero existe una ramificación ELSE, se ejecuta esta. De lo
contrario, el programa continúa tras END_CASE.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


98 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Lista de valores
La lista de valores contiene los valores permitidos para la expresión de selección. El siguiente
diagrama muestra las posibles variantes de la formulación de una lista de valores:
$POTUBOUF
7BMPS

$POTUBOUF  $POTUBOUF
7BMPS 7BMPS
7BMPSࣧWBMPS

Al formular una lista de valores debe tenerse en cuenta lo siguiente:


• Cada lista de valores puede comenzar con una constante (valor), una lista de constantes
(valor1, valor2, valor3...) o una secuencia de constantes (valor1 a valor2 - valor1..valor2).
• Los valores de una lista de valores deben ser constantes enteras.
• El mismo valor de una lista de valores puede aparecer en varias listas de valores. Sin
embargo, solamente se tiene en cuenta la primera aparición.

Ejemplo
El ejemplo siguiente muestra el uso de una instrucción CASE:

MCL

CASE myDintVar OF
-1: myVar1 := 0;
1 : myVar1 := 1;
myVar2 := 2 * myVar1;
2,3,4 : myVar1 := 3;
5..6 : myVar1 := 4;
ELSE
myVar1 := 0;
END_CASE;

En este ejemplo, la variable "myVar1" adopta un valor dependiendo del valor "myDintVar".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 99
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

5.6.3 Instrucción FOR (S7-1500T)

Descripción
La instrucción FOR ejecuta una secuencia de instrucciones en bucle a modo de instrucción de
repetición y asigna valores a las variables en cada ejecución (variable de iteración). La variable
de iteración debe ser una variable de escritura del tipo "DINT". La instrucción FOR se utiliza
cuando se conoce el número de ejecuciones en bucle en la fase de programación.
La definición para un bucle con FOR contiene la especificación del valor inicial y final de la
variable de iteración. Ambas expresiones para el valor inicial y final deben ser del mismo tipo
de datos que la variable de iteración. Si no se conoce el número de ejecuciones, es más
apropiada la instrucción WHILE o REPEAT.

Sintaxis
El siguiente diagrama muestra la sintaxis de una instrucción FOR:

*EFOUJ꫼DBEPSEFWBSJBCMF
'03  &YQSFTJ³O
7BSJBCMFEFJUFSBDJ³O
7BSJBCMFMPDBM
UJQPEFEBUPT%*/5

50 &YQSFTJ³O #: &YQSFTJ³O


7BMPS꫼OBM *ODSFNFOUP

%0 4FDDJ³OEF &/%@'03 


JOTUSVDDJPOFT

Desarrollo de la ejecución
Para instrucciones FOR se aplica lo siguiente:
• Al comenzar un bucle se establece la variable de iteración en el valor inicial y, tras cada
ejecución del bucle, se aumenta (incremento positivo) o se reduce (incremento negativo)
en el incremento definido hasta que se alcance el valor final.
• En cada ejecución se comprueba si se cumplen las condiciones siguientes:
– Valor de la variable de iteración ≤ valor final (en caso de incremento positivo) o bien
– Valor de la variable de iteración ≥ valor final (en caso de incremento negativo).
Si se cumple la condición, se ejecuta la sección de instrucciones. Si la condición no se
cumple, se omite el bucle y, con ello, el procesamiento de la instrucción, y el programa
continúa tras END_FOR.
• Si no es posible ejecutar el bucle debido a las circunstancias descritas en el punto anterior,
la variable de iteración conserva su valor actual.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


100 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Reglas
Para la instrucción FOR se aplican las siguientes reglas:
• Es posible omitir la indicación "BY" [incremento]. Si no se indica ningún incremento, el
valor estándar es +1 (positivo, valor final ≥ valor inicial) o –1 (negativo, valor inicial > valor
final).
• El valor inicial, el valor final y el incremento son expresiones. La evaluación de la expresión
se realiza una vez al comienzo de la instrucción FOR.
• La variable de iteración contiene el valor que dispara la finalización del bucle, es decir, se
incrementa antes de finalizar el bucle.
• Durante la ejecución del bucle, la variable de iteración (valor actual), así como el valor
inicial, el valor final y el incremento no deben modificarse.
• La especificación de incremento y los valores inicial y final de la variable de iteración
deben poder convertirse de modo implícito al tipo de la variable de iteración.

Ejemplo
El ejemplo siguiente muestra el uso de una instrucción FOR:

MCL
...
VAR
i : DINT;
END_VAR
...
FOR i := 0 TO 10 BY 2 DO
a := a + 1;
// ...
// command sequence
END_FOR;

En este ejemplo aumenta la variable i en 2 en cada ejecución. Si el valor supera 10, finaliza el
bucle.

5.6.4 Instrucción WHILE (S7-1500T)

Descripción
La instrucción WHILE genera una secuencia de instrucciones que se programan entre DO y
END_WHILE. Se ejecutan repetidamente si se cumple la condición indicada en la instrucción.
Las condiciones lógicas se comprueban antes de cada ejecución de la secuencia de
instrucciones.
Las instrucciones se repiten hasta que la condición devuelva TRUE como resultado de la
comprobación.
La instrucción WHILE resulta ventajosa si se desconoce el número de ejecuciones en bucle en
el momento de la programación. Si se conoce el número de ejecuciones, es más apropiado
utilizar la instrucción FOR.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 101
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Sintaxis
El siguiente diagrama muestra la sintaxis de la instrucción WHILE:
8)*-& &YQSFTJ³O %0
$POEJDJ³OEFM
UJQPEFEBUPT#00-

4FDDJ³OEF &/%@8)*-& 
JOTUSVDDJPOFT

La sección de instrucciones tras DO se repite hasta que la condición tenga el valor TRUE.

Desarrollo de la ejecución
Para la instrucción WHILE se aplica lo siguiente:
• La condición se comprueba siempre antes de ejecutarse la sección de instrucciones.
• Si el valor es TRUE , se ejecuta la sección de instrucciones.
• Si el valor es FALSE, se cancela la instrucción WHILE (esto puede suceder con la primera
evaluación de la condición) y el programa continúa tras END_WHILE.

Ejemplo
El ejemplo siguiente muestra el uso de una instrucción WHILE:

MCL
...
VAR
i : DINT := 1;
isEnabled : BOOL := TRUE;
END_VAR
...
WHILE i <= 10 AND isEnabled DO
// command sequence
i := i + 1;
END_WHILE;
...

En este ejemplo se ejecuta 10 veces el bucle. La variable i puede adoptar los valores 1 a 10.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


102 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

5.6.5 Instrucción REPEAT (S7-1500T)

Descripción
La instrucción REPEAT produce la ejecución repetida de una secuencia de instrucciones
programada entre REPEAT y UNTIL hasta que se cumpla la condición de cancelación. La
condición de cancelación se formula siguiendo reglas para una expresión lógica.
La instrucción REPEAT resulta ventajosa cuando se desconoce el número de ejecuciones en
bucle en la fase de programación. Si se conoce el número de ejecuciones, es más apropiada la
instrucción FOR.

Sintaxis
El siguiente diagrama muestra la sintaxis de la instrucción REPEAT:
4FDDJ³OEF
3&1&"5 JOTUSVDDJPOFT 6/5*-

&YQSFTJ³O &/%@3&1&"5 
$POEJDJ³OEFDBODFMBDJ³O
EFMUJQPEFEBUPT#00-

Desarrollo de la ejecución
Para instrucciones REPEAT se aplica lo siguiente:
• La condición de cancelación se comprueba siempre tras ejecutarse la sección de
instrucciones. Esto significa que la sección de instrucciones se ejecuta al menos una vez,
incluso si la condición de cancelación es TRUE al principio.
• Si el valor es FALSE, se ejecuta de nuevo la sección de instrucciones.
• Si el valor es TRUE, se cancela la ejecución de la instrucción REPEAT y el programa
continúa ejecutándose tras END_REPEAT.

Ejemplo
El ejemplo siguiente muestra el uso de una instrucción REPEAT:

MCL
...
VAR
i : DINT := 1;
isEnabled : BOOL := TRUE;
END_VAR
...
REPEAT
// command sequence
i := i + 1;
UNTIL i = 10 AND isEnabled
END_REPEAT;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 103
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

MCL
...

En este ejemplo, el bucle se ejecuta solamente 9 veces, pues la variable i se inicializa con 1 y
se incrementa antes de la comprobación. La variable adopta los valores 1 a 10.

5.6.6 Instrucción EXIT (S7-1500T)

Descripción
La instrucción EXIT finaliza un bucle FOR, WHILE o REPEAT en un punto cualquiera
independientemente de las condiciones. El procesamiento del bucle se interrumpe
inmediatamente, y el programa continúa tras END_FOR, END_WHILE o END_REPEAT. EXIT
provoca la cancelación del bucle justo alrededor de la instrucción EXIT.

Ejemplo
El ejemplo siguiente muestra el uso de una instrucción EXIT:

MCL
myIndex := 1;
FOR myIndex := 1 to 51 BY 2 DO
IF myVar THEN
EXIT;
END_IF;
END_FOR;
(*
The following value assignment is performed after the execution of EXIT or
after the regular end of the FOR loop.
*)
Index_find := Index_2;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


104 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

5.6.7 Instrucción CONTINUE (S7-1500T)

Descripción
La instrucción CONTINUE finaliza la ejecución actual del programa en un bucle FOR, WHILE o
REPEAT. Tras procesar CONTINUE tiene lugar una consulta de las condiciones para continuar
el bucle del programa (para WHILE y REPEAT), o la variable de iteración se modifica con el
incremento y se comprueba si aún se encuentra en el rango de iteración.
Si se cumplen las condiciones, comienza la siguiente ejecución del bucle tras CONTINUE.
CONTINUE tiene como efecto la cancelación de la ejecución del programa del bucle que esté
inmediatamente a continuación de la instrucción CONTINUE.

Ejemplo
El ejemplo siguiente muestra el uso de una instrucción CONTINUE:

MCL
sum := 0;
FOR i := 1 TO 3 DO
FOR j := 1 TO 2 DO
sum := sum + 1;
IF myVar THEN
CONTINUE;
END_IF;
sum := sum + 1;
END_FOR;
sum := sum + 1;
END_FOR;
(*
Once the loop has run the "sum" tag has the following value:
With myVar = FALSE: sum = 15
With myVar = TRUE: sum = 9
*)

5.6.8 Instrucción GOTO (S7-1500T)

Descripción
La instrucción GOTO es una instrucción sin condiciones y provoca un salto a una marca
definida. Para utilizar instrucciones GOTO es necesario programar instrucciones de salto
GOTO y definir marcas de salto.
El uso de instrucciones GOTO es necesario en determinadas circunstancias, p. ej., en la
búsqueda de errores.

Sintaxis
El siguiente diagrama muestra la sintaxis de la instrucción GOTO:
(050 .BSDBEFTBMUP 

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 105
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Marca de salto
Para definir una marca de salto, es necesario indicar el nombre simbólico de la marca antes
de la instrucción en la que el programa debe continuar.
La separación se realiza con dos puntos:
<Label_Name> : <Statement>;

Desarrollo de la ejecución
Para instrucciones GOTO se aplica lo siguiente:
• Solo se permite utilizar marcas de salto declaradas.
• Solo se permiten saltos dentro de una función o del programa principal.
• Se permiten saltos a una marca dentro de la misma estructura de control (IF, FOR, WHILE,
REPEAT) "hacia abajo" o "hacia arriba".
• Se permiten saltos a una marca fuera de la estructura de control actual (IF, FOR, WHILE,
REPEAT), hacia arriba o hacia abajo. Sin embargo, estos no deben producirse en una nueva
estructura de control que se encuentre dentro.

Ejemplo
El ejemplo siguiente muestra el uso de una instrucción GOTO:

MCL
...
IF i > j THEN
GOTO myLab1; //GOTO statement
ELSIF i > k THEN
GOTO myLab2; //GOTO statement
END_IF;
...
myLab1: myVar := 1; // Jump label with statement
GOTO myLab3; //GOTO statement
myLab2 : myVar := 2; // Jump label with statement
...
myLab3 : myVar := 3; // Jump label with statement
...
FOR i := 1 TO 10 BY 1 DO
...
IF i < 4 THEN
GOTO myLab4; //GOTO statement
END_IF;
...
myLab4 : myVar := 4; // Jump label with statement
...
END_FOR;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


106 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

5.6.9 Instrucción RETURN (S7-1500T)

Descripción
La instrucción RETURN cancela la función o el programa principal que se está ejecutando. Al
finalizar una función, la ejecución del programa continúa en una unidad de organización del
programa (POE) de orden superior tras el punto desde el que se llamó la función.

Ejemplo
El ejemplo siguiente muestra el uso de una instrucción RETURN:

MCL
Index := 1;
FOR Index := 1 to 51 BY 2 DO
IF myFlag THEN
RETURN;
END_IF;
END_FOR;
(*
The following value assignment is executed after the regular end of the FOR
loop, but not after the execution of RETURN.
*)
Index_find := Index_2;

5.6.10 Instrucción SYNC (S7-1500T)

5.6.10.1 Descripción general de la instrucción SYNC (S7-1500T)

Descripción
Las instrucciones en lenguaje de programación MCL se ejecutan por lo general de forma
secuencial, es decir, línea a línea, tal y como están escritas en el código del programa. Sin
embargo, también puede ser necesario ejecutar instrucciones o secuencias de instrucciones
en paralelo.
Para iniciar instrucciones o secuencias de instrucciones simultáneamente o en función de
determinados eventos en paralelo a otras instrucciones, MCL ofrece las siguientes
posibilidades:
• Inicio síncrono de instrucciones
• Acciones síncronas (acciones síncronas vinculadas a una posición)
Estas posibilidades son las únicas excepciones a los principios básicos de la programación en
el contexto del procesamiento.
El inicio síncrono de instrucciones y acciones síncronas puede programarse utilizando el
bloque del sistema SYNC/END_SYNC. Dentro de esta estructura de bloques unitaria se utilizan
subbloques secundarios específicos para el inicio síncrono (subbloque ON_START) y acciones
síncronas (Unterblock ON_POS). Esto permite describir el inicio síncrono de instrucciones,
diferentes versiones de acciones síncronas, así como la combinación de ambas
funcionalidades (inicio síncrono de instrucciones y acciones síncronas) de forma clara y
sencilla desde el punto de vista sintáctico.
El inicio síncrono de instrucciones no depende de criterios de inicio. El inicio síncrono, por
tanto, puede utilizarse para todas las instrucciones que soporten el inicio simultáneo a otras

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 107
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

instrucciones. Al contrario de lo que ocurre con el inicio síncrono, las acciones síncronas
dependen de criterios de inicio de la vinculación a la posición en la trayectoria para acciones
síncronas controladas por posición. Por tanto, las acciones síncronas solo pueden utilizarse
para órdenes de trayectoria.

Encontrará un resumen de las instrucciones permitidas dentro de bloques SYNC y ON_START


en la tabla del capítulo "Descripción general del inicio síncrono de instrucciones y secuencias
de instrucciones (Página 109)".

Sintaxis

4:/$ 4FDDJ³OEF
JOTUSVDDJPOFT

0/@45"35 4FDDJ³OEF
JOTUSVDDJPOFT

0/@104 &YQSFTJ³O %0 4FDDJ³OEF


JOTUSVDDJPOFT

&/%@4:/$ 

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


108 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

5.6.10.2 Inicio síncrono de instrucciones y secuencias de instrucciones (S7-1500T)

Descripción
MCL ofrece elementos sintácticos para describir el inicio síncrono de instrucciones y
secuencias de instrucciones. Estos permiten programar un inicio síncrono de varias
instrucciones en el momento de la ejecución, p. ej., el inicio de instrucciones durante la
ejecución de una secuencia en el punto de suavizado de transición entre instrucciones en la
secuencia.

Sintaxis
El inicio síncrono de la instrucción se implementa mediante el bloque SYNC/END_SYNC. Las
secuencias indicadas bajo ON_START se inician simultáneamente al bloque principal:

MCL
SYNC
// Main command or main sequence, with which further commands
// are to be started synchronously
ON_START
// commands to be started synchronously with the main sequence
END_SYNC;
Si hay varias instrucciones (secuencia) en el bloque SYNC u ON_START, las instrucciones
dentro del bloque se procesan de forma secuencial. Únicamente la primera instrucción de la
secuencia del bloque ON_START se inicia de forma síncrona a la primera instrucción de la
secuencia del bloque SYNC.

Reglas
Las siguientes reglas se aplican para el bloque SYNC/END_SYNC, que contiene uno o varios
bloques secundarios ON_START:
• La instrucción END_SYNC sirve como punto de sincronización. Antes de poder iniciar las
instrucciones que siguen a END_SYNC, deben haber finalizado todas las
instrucciones/secuencias de instrucciones iniciadas en el bloque SYNC según sus criterios
de finalización. Un suavizado de transición programado entre instrucciones de la
secuencia principal y tras la instrucción END_SYNC se ignora. Las instrucciones se ejecutan
de forma sucesiva.
• Dentro de un bloque SYNC/END_SYNC son posibles varios bloques secundarios ON_START.
El número de posibles bloques secundarios ON_START depende de la cantidad de
instrucciones programadas y de la configuración del intérprete. Los bloques SYNC o los
bloques ON_START que no pueden ejecutarse provocan una alarma. Puede modificar el
número de instrucciones preparadas en el código del programa (el valor predeterminado
es 100), adaptando el valor de las siguientes variables:

MCL
// set maximum depth of preprocessing queue for Interpreter to 50
$IPR.Parameter.MaxNumberOfCommands := 50;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 109
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

• La CPU debe haber preprocesado completamente todos los subbloques de inicio síncrono
(ON_START) dentro de un bloque SYNC/END_SYNC en el bucle de preparación antes de la
ejecución; de lo contrario, se produce un error en tiempo de ejecución.
• En el bloque SYNC y en el subbloque ON_START solamente se admiten las siguientes
instrucciones:

Instrucción Descripción
writeVar Escribir variable PLC mapeada o variable de bloque de datos de objeto tecno­
lógico
home Referenciar objeto tecnológico, establecer punto de referencia
move Mover eje a velocidad lineal constante
posAbs Posicionamiento absoluto del eje
posRel Posicionamiento relativo del eje
linAbs Movimiento lineal de la trayectoria con especificación absoluta de la posi­
ción
linRel Movimiento lineal de la trayectoria con especificación relativa de la posición
circAbs Movimiento circular con posición de destino absoluta
circRel Movimiento circular con posición de destino relativa
ptpAbs Movimiento sPTP con posición de destino absoluta en coordenadas cartesia­
nas
ptpRel Movimiento sPTP con posición de destino relativa en coordenadas cartesia­
nas
ptpAxAbs Movimiento sPTP con posición de destino absoluta en coordenadas de má­
quina
ptpAxRel Movimiento sPTP con posición de destino relativa en coordenadas de máqui­
na
ptpJtAbs Movimiento sPTP con posición de destino absoluta en coordenadas de articu­
lación
ptpJtRel Movimiento sPTP con posición de destino relativa en coordenadas de articu­
lación
trackIn Iniciar el seguimiento de cinta
No se permite el uso de otras instrucciones en este contexto.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


110 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Este capítulo muestra ejemplos para el inicio síncrono de instrucciones y secuencias de


instrucciones.

Ejemplo 1: inicio síncrono de instrucciones


El ejemplo siguiente muestra el inicio síncrono de las instrucciones "posAbs" y "writeVar" con
la instrucción principal "writeVar". La instrucción "writeVar" se ejecuta tras finalizar las
instrucciones.

,*/0WFSSJEF 
7FMPDJUZ 

U



NZ"YJT1PTJUJPO



U

*13DMJQCPBSE 
DC#PPM<> 
U

MCL
SYNC
writeVar( $IPR.Clipboard.cbBool[1], TRUE );
ON_START
posAbs( myAxis, 20.0 );
ON_START
writeVar( $KIN.Override.Velocity, 50.0 );
END_SYNC;
writeVar( $IPR.Clipboard.cbBool[1], FALSE );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 111
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Ejemplo 2: inicio síncrono de instrucciones con dos bloques SYNC independientes


En el siguiente ejemplo, se inicia el posicionamiento de los ejes myAxis1, myAxis2 y myAxis3
de forma síncrona (instrucción "posAbs"). Después de que todos los ejes hayan alcanzado su
correspondiente posición de destino, myAxis3 se posiciona en 0.0 (instrucción "posAbs"). Al
finalizar este movimiento, tiene lugar un movimiento de trayectoria lineal y ambos ejes
(myAxis1 y myAxis2) se posicionan en 0.0 de forma síncrona.


,*/"DDVNVMBUFE 
1BUI-FOHUI 

U


NZ"YJT1PTJUJPO

U



NZ"YJT1PTJUJPO 


U



NZ"YJT1PTJUJPO


U

MCL
SYNC
posAbs( myAxis1, 15.0 ); // Basic command to synchronize with
ON_START
posAbs( myAxis2, 20.0 );
ON_START
posAbs( myAxis3, 5.0 );
END_SYNC;
posAbs( myAxis3, 0.0 );

SYNC
linAbs( myPos1 ); // Basic command to synchronize with
ON_START
posAbs( myAxis1, 0.0 );
ON_START
posAbs( myAxis2, 0.0 );
END_SYNC;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


112 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Ejemplo 3: inicio síncrono en el punto de suavizado de transición de un movimiento de


trayectoria
El bloque sintáctico del inicio síncrono (SYNC/END_SYNC) puede utilizarse para iniciar
secuencias de movimiento paralelas en el punto de suavizado de transición de la secuencia
principal (p. ej., secuencia de movimiento de trayectoria con suavizado de transición). El
ejemplo siguiente muestra un inicio síncrono en el punto de suavizado de transición del
movimiento de trayectoria. En el ejemplo, se inicia el posicionamiento de myAxis1 hasta la
posición 10.0 en el punto de suavizado de transición del movimiento de trayectoria. Tras
finalizar el movimiento de posicionamiento y el movimiento de trayectoria, siguen los
posicionamientos de myAxis2 en 10.0 y de myAxis1 en 0.0 de forma secuencial.


,*/"DDVNVMBUFE
1BUI-FOHUI 

U



NZ"YJT1PTJUJPO


U


NZ"YJT1PTJUJPO 

U

MCL
linAbs( myPos1, trans := 1, blend := 2 ); // active blending for TO_Kinematics
SYNC
linAbs( myPos2, trans := 0 ); // basic command to synchronize with
ON_START
posAbs( myAxis1, 10.0 ); // start in blending point
END_SYNC;
posAbs( myAxis2, 10.0 );
posAbs( myAxis1, 0.0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 113
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Ejemplo 4: inicio síncrono de una secuencia en el punto de suavizado de transición de un


movimiento de trayectoria
En el siguiente ejemplo se inicia una secuencia, consistente en 2 instrucciones de
posicionamiento secuenciales, en el primer punto de suavizado de transición del movimiento
de trayectoria. Tras finalizar el movimiento de trayectoria y los 2 movimientos de
posicionamiento (para myAxis1 en 5.0 y para myAxis2 en 10.0), myAxis1 se posiciona en 0.0.


,*/"DDVNVMBUFE 
1BUI-FOHUI 

U


NZ"YJT1PTJUJPO 

U


NZ"YJT1PTJUJPO

U

MCL
linAbs( myPos1, trans := 1, blend := 2 ); // for assigned TO_Kinematics
SYNC
linAbs( myPos2, trans := 1, blend := 2 ); // for assigned TO_Kinematics
linAbs( myPos3 ); //for assigned TO_Kinematics
ON_START
posAbs( myAxis1, 5.0 ); // starts same time as first linAbs instruction in SYNC block
posAbs( myAxis2, 10.0 );
END_SYNC;
posAbs( myAxis1, 0.0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


114 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Ejemplo 5: inicio síncrono en el punto de suavizado de transición de un movimiento de


trayectoria o de una secuencia de movimiento de eje individual
Es posible agregar un bloque SYNC/END_SYNC a otro bloque SYNC/END_SYNC. Esto permite
conectar instrucciones síncronas en cascada.
En el siguiente ejemplo, se inicia el posicionamiento del eje myAxis1 en 5.0 y,
simultáneamente, el posicionamiento del eje myAxis3 en 10.0 en el punto de suavizado de
transición del movimiento de trayectoria. El segundo bloque SYNC se inicia después de que
haya finalizado el posicionamiento de myAxis1. El movimiento de myAxis1 es un movimiento
de eje individual a la posición 15.0. De forma síncrona a la instrucción "posAbs" para myAxis1,
se inicia otra secuencia consistente en 2 instrucciones de posicionamiento secuenciales en el
eje myAxis2. Al final de todos los movimientos que deben sincronizarse, myAxis1 se posiciona
en 0.0.


,*/"DDVNVMBUFE
1BUI-FOHUI 

U


NZ"YJT1PTJUJPO 

U


NZ"YJT1PTJUJPO 

U



NZ"YJT1PTJUJPO


U

MCL
linAbs( myPos1, trans := 1, blend := 2 ); // for assigned TO_Kinematics
SYNC
linAbs( myPos2, trans := 1, blend := 2 ); // for assigned TO_Kinematics
linAbs( myPos3 ); // for assigned TO_Kinematics
ON_START
posAbs( myAxis1, 5.0 ); // axial positioning
SYNC
posAbs( myAxis1, 15.0 );
ON_START
posAbs( myAxis2, 10.0 );
posAbs( myAxis2, 5.0 );
END_SYNC;
ON_START
posAbs( myAxis3, 10.0 );
END_SYNC;
posAbs( myAxis1, 0.0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 115
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

5.6.10.3 Acciones síncronas (S7-1500T)

Descripción
Además de los bloques sintácticos para el inicio síncrono, MCL ofrece un bloque sintáctico
para acciones síncronas. Una acción síncrona es una secuencia de instrucciones que se
ejecutan en paralelo al contexto de la ejecución principal y cuyo inicio se dispara mediante un
evento en tiempo de ejecución. MCL soporta acciones síncronas dependientes de la posición
(disparadas por la posición) cuyo inicio se produce tras alcanzarse una determinada posición
de trayectoria en la cinemática asignada teniendo en cuenta la hora de inicio.

Sintaxis
De forma análoga al inicio síncrono de instrucciones (ver capítulo "Descripción general del
inicio síncrono de instrucciones y secuencias de instrucciones (Página 109)"), las acciones
síncronas se programan en el bloque SYNC/END_SYNC. Para programar acciones síncronas
deben utilizarse las palabras clave ON_POS y DO dentro del bloque SYNC/END_SYNC.

MCL
SYNC
// main command or sequence to which the synchronous action refers
// (e.g. path command or command sequence containing path commands only)
ON_POS [sType := <val>] [,p := <val>] [,t := <val>] DO
// position triggered synchronous action
END_SYNC;

Parámetro Tipo de Valor Descripción


datos predeter­
minado
sType DINT 0 Tipo de acción síncrona dependiente de la posición (opcional)
0 Posición inicial
Inicio de la acción síncrona teniendo en cuenta la hora de
inicio al comienzo de la secuencia de trayectoria
1 Posición final
Inicio de la acción síncrona teniendo en cuenta la hora de
inicio al final de la secuencia de trayectoria
2 Posición definida
Inicio de la acción síncrona teniendo en cuenta la hora de
inicio para una longitud de trayectoria definida de la se­
cuencia.
"sType" := 2 no se soporta para movimientos sPTP.
p LREAL 0.0 Posición de trayectoria para "sType" := 2 (opcional)
t time T#0MS Hora de inicio para "sType" := 0/1/2 (opcional)
La hora de inicio también puede ser negativa (hora de ini­
cio antes de alcanzarse la posición de trayectoria)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


116 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

1PTJDJ³OJOJDJBM

5SBZFDUPSJBQSPHSBNBEB


1PTJDJ³O꫼OBM

① Acción síncrona en la posición inicial


② Acción síncrona en una posición definida
③ Acción síncrona en la posición final
La acción síncrona puede contener una secuencia cualquiera de instrucciones. La secuencia
principal completa (instrucciones tras la palabra clave SYNC hasta el primer bloque ON_POS)
se ejecuta completamente, o puede sustituirse por un movimiento de trayectoria en una
acción síncrona. El modo de sustitución puede especificarse en la acción síncrona (bloque
ON_POS).

Reglas
• El inicio de una acción síncrona disparada por la posición se refiere a la secuencia de
movimiento tras la instrucción SYNC.
• La longitud de trayectoria de la tarea de movimiento entre la instrucción SYNC y la
siguiente instrucción ON_POS sirve como disparador para iniciar una acción síncrona
disparada por posición (instrucciones tras la palabra clave DO).
• Las acciones que deben ejecutarse se programan tras una instrucción ON_POS…DO. De
forma opcional, el comportamiento de la acción síncrona puede controlarse mediante el
atributo de bloque ("sType", "p", "t") para la instrucción ON_POS.
• La instrucción END_SYNC representa el punto de sincronización con las demás
instrucciones en el programa intérprete. Esto significa que la ejecución del resto del
programa solamente continúa cuando las acciones síncronas han finalizado. Un suavizado
de transición programado entre instrucciones de la secuencia principal y tras la instrucción
END_SYNC se ignora. Las instrucciones se ejecutan de forma sucesiva.
• Tras el final de una acción síncrona, la ejecución del programa MCL continúa tras la
instrucción END_SYNC- con la siguiente instrucción.
• Si se alcanza o se rebasa una longitud de trayectoria parametrizada (parámetro p), se
dispara la ejecución de las instrucciones en el bloque de sincronización (instrucciones tras
la palabra clave DO), teniendo en cuenta una hora de inicio opcional ("t"). La hora de inicio
puede ser positiva (hora de inicio tras alcanzarse la posición de trayectoria, ver ejemplo 2)
o negativa (hora de inicio antes de alcanzarse la posición de trayectoria, ver ejemplo 3). Si
una secuencia de instrucciones consta de varias instrucciones consecutivas, una hora de
inicio negativa puede dar lugar a un punto de disparo en la instrucción precedente.
• La asignación de una orden de trayectoria o de una secuencia de trayectoria (instrucciones
con suavizado de transición) puede realizarse a diferentes acciones síncronas, es decir,
diferentes secciones ON_POS. El número máximo de acciones síncronas programables es
10. Los bloques ON_POS no ejecutables dan como resultado una alarma.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 117
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

• Las variables locales y globales declaradas, es decir, dadas a conocer en el programa


intérprete están bloqueadas para cambios durante las acciones síncronas. Esto significa
que el valor que tiene este tipo de variable del intérprete en la preparación del programa
también tiene efecto durante la acción síncrona. Estas variables no se pueden escribir en
una acción síncrona, y una asignación programada (asignación con el operador ":=") se
cancela con un mensaje de error. En el área entre SYNC y el primer comando ON_POS u
ON_START, solamente se permiten órdenes de trayectoria si se ha programado al menos
un bloque ON_POS. Esto no es válido para las variables de portapapeles
($IPR.Clipboard.CbBool, $IPR.Clipboard.CbDint, $IPR.Clipboard.CbBool.CbLreal), variables
de bloques de datos de objetos tecnológicos de todos los ejes mapeados, variables de
bloques de datos de objetos tecnológicos del intérprete, variables de bloques de datos de
objetos tecnológicos de la cinemática y variables PLC mapeadas. En consecuencia, los
valores de las variables locales y globales declaradas en el intérprete pueden sincronizarse
con la ejecución del programa utilizando las variables del portapapeles o del PLC en
combinación con una parada programada en la preparación del programa intérprete
(mediante la instrucción preHalt()).
• Entre los bloques SYNC y ON_POS solo se permiten órdenes de movimiento de trayectoria.
Para movimientos sin suavizado de transición solamente se puede programar una orden
de trayectoria. Con el suavizado de transición solamente se debe programar la instrucción
de la secuencia de trayectoria.
• La ejecución de una acción síncrona puede finalizarse mediante el uso de la instrucción
EXIT_SYNC. Se ejecutan todas las instrucciones que están preprocesadas hasta la
instrucción EXIT_SYNC. A continuación, finaliza la acción síncrona. La ejecución del resto
del programa continúa tras el correspondiente bloque END_SYNC (ver ejemplo 6).

Consulte
también
preHalt(): Detener la preparación del programa (Página 302)

Las siguientes constelaciones son el resultado de la programación de las instrucciones en el


bloque SYNC:

Constelación Descripción
SYNC Disparo de la acción síncrona mediante la instruc­
linAbs( …, trans := 0 ); ción en la línea 2;
ON_POS sType := … ,p := … DO
// synchronous action referencia a la longitud de la trayectoria en la lí­
… nea 2.
END_SYNC;
SYNC Disparo de la acción síncrona mediante la secuen­
linAbs( …, trans := 0 ); cia de instrucciones en las líneas 2 y 3 (sin suavi­
linAbs( …, trans := 0 );
ON_POS sType := … ,p := … DO zado de transición en la secuencia de referencia);
// synchronous action referencia a la longitud de la trayectoria (acumu­
… lada) de la secuencia en las líneas 2 y 3.
END_SYNC;
SYNC Disparo de la acción síncrona mediante la secuen­
linAbs( …, trans := 1 ); cia de instrucciones en las líneas 2 y 3 (con suavi­
linAbs( …, trans := 0 );
ON_POS sType := … ,p := … DO zado de transición dentro de la secuencia de refe­
// synchronous action rencia);
… referencia a la longitud de la trayectoria (acumu­
END_SYNC; lada) de la secuencia en las líneas 2 y 3.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


118 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Constelación Descripción
linAbs( …, trans := 1 ); Disparo de la acción síncrona mediante la instruc­
SYNC ción en la línea 3;
linAbs( …,trans := 0 );
ON_POS sType := … ,p := … DO referencia a la longitud de trayectoria en la línea
// synchronous action 3.

END_SYNC;
linAbs( …, trans := 1 ); Disparo de la acción síncrona mediante la secuen­
SYNC cia de instrucciones en las líneas 3 y 4 (sin suavi­
linAbs( …,trans := 0 );
linAbs( …,trans := 0 ); zado de transición en la secuencia de referencia);
ON_POS sType := … ,p := … DO referencia a la longitud de la trayectoria (acumu­
// synchronous action lada) de la secuencia en las líneas 3 y 4.

END_SYNC;
linAbs( …, trans := 1 ); Disparo de la acción síncrona mediante la secuen­
SYNC cia de instrucciones en las líneas 3 y 4 (con suavi­
linAbs( …,trans := 1 );
linAbs( …,trans := 0 ); zado de transición en la secuencia de referencia);
ON_POS sType := … ,p := … referencia a la longitud de la trayectoria (acumu­
// synchronous action lada) en las líneas 3 y 4.

END_SYNC;
SYNC En las acciones síncronas controladas por posición
linAbs( myPos1,... ); solamente se permiten órdenes de trayectoria. Si
writeVar( myVar, ... );
linAbs( myPos2, ... ); se utilizan otras instrucciones, p. ej., "writeVar()",
ON_POS sType := ..., p := ...DO aparece un mensaje de error.
// synchronous action

END_SYNC;

Acciones síncronas programadas para un movimiento de trayectoria con suavizado de transición


La siguiente tabla muestra acciones síncronas programadas para un movimiento de
trayectoria con suavizado de transición, dependiendo del tipo de acción síncrona (parámetro
"sType"):

linAbs( p1, trans := 1, blend := 1 ); Q


SYNC
linAbs( p2, trans := 0 );
ON_POS sType := 0 DO
// synchronous action

END_SYNC; 
Q Q

① Acción síncrona en la posición inicial


Q
linAbs( p1, trans := 1, blend := 1 ); 
SYNC
linAbs( p2, trans := 0 );
ON_POS sType := 1 DO
// synchronous action

END_SYNC;
Q Q

① Acción síncrona en la posición final

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 119
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

linAbs( p1, trans := 1, blend := 1 ); Q


SYNC
linAbs( p2, trans := 0 );
ON_POS sType := 2, p := myLength DO
// synchronous action 1

END_SYNC; 2

Q Q

① Acción síncrona en una posición definida


(p = myLength)
② p = 0.0

Este capítulo muestra ejemplos de acciones síncronas.

Ejemplo 1
En este ejemplo se programan acciones síncronas disparadas por posición en un movimiento
de trayectoria con suavizado de transición. Las acciones síncronas se ejecutan dependiendo
de la longitud de trayectoria (acumulada) de la secuencia principal y de la posición de disparo
programada ("sType" y "p"). En las acciones síncronas, la variable de portapapeles
Clipboard-Variable $IPR.clipboard.cbDint[1] se escribe en las correspondientes
líneas/posiciones.

.,1$FFXPXODWHG 
3DWK/HQJWK 

W


,35FOLSERDUG

FE'LQW>@

W

MCL
SYNC
linAbs( myPos1, trans := 1, blend := 2 ); // path movement referred to
linAbs( myPos2, trans := 0 );
ON_POS sType := 0 DO
writeVar( $IPR.clipboard.cbDint[1], 1 ); // execute at the beginning
ON_POS sType := 1 DO
writeVar( $IPR.clipboard.cbDint[1], 2 ); // execute at the end
ON_POS sType := 2, p := 25.0 DO
writeVar( $IPR.clipboard.cbDint[1], 3 ); // execute at path position 25.0
ON_POS sType := 2, p := 50.0 DO
writeVar( $IPR.clipboard.cbDint[1], 4 ); // execute at path position 50.0
END_SYNC;
writeVar( $IPR.clipboard.cbDint[1], 0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


120 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Ejemplo 2
En este ejemplo, la acción síncrona se inicia 1 s después de que se haya alcanzado la posición
de trayectoria 50.0. El eje myAxis1 se posiciona tras determinarse la posición myAxPos.
El ejemplo muestra el inicio de la acción síncrona para una longitud de trayectoria definida de
una secuencia ("sType" = 2) teniendo en cuenta una hora de inicio positiva.
T

,*/"DDVNVMBUFE 
1BUI-FOHUI

U

NZ"Y1PT
NZ"YJT1PTJUJPO

U

MCL
myAxPos := myFct(); // determining the position using user-function

SYNC

linAbs( myPos );

ON_POS sType := 2, p := 50.0, t := T#1s DO

posAbs( myAxis1, myAxPos ); // myAxis1 is not kinematics axis

END_SYNC;

Ejemplo 3
En este ejemplo, se tiene en cuenta una hora de inicio negativa. La acción síncrona se inicia 1
s (parámetro "t") antes de que la posición de trayectoria de la cinemática (parámetro "p") haya
alcanzado 50.0. El eje myAxis1 se posiciona tras determinarse la posición myAxPos.
El ejemplo muestra el inicio de la acción síncrona para una longitud de trayectoria definida de
la secuencia ("sType" = 2) teniendo en cuenta una hora de inicio negativa.
T

,*/"DDVNVMBUFE 
1BUI-FOHUI

U

NZ"Y1PT
NZ"YJT1PTJUJPO

U

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 121
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

MCL
myAxPos := myFct(); // determining the position using user-function

SYNC

linAbs( myPos );

ON_POS sType := 2, p := 50.0, t := T#-1s DO

posAbs( myAxis1, myAxPos ); // myAxis1 is not kinematics axis

END_SYNC;

Ejemplo 4
En este ejemplo, la variable del portapapeles Clipboard Variable $IPR.clipboard.cbBool[1] del
objeto tecnológico Intérprete se establece en TRUE cuando se inicia el movimiento de
trayectoria con suavizado de transición. Cuando la longitud de trayectoria de la secuencia de
movimiento alcanza la posición 50.0, la misma variable se establece en FALSE.
El ejemplo muestra el uso de varias acciones síncronas que se inician con diferentes
condiciones. La primera acción comienza con el inicio de la trayectoria bajo la condición
"sType" = 0. La segunda acción se inicia tras alcanzarse la posición de trayectoria de la
cinemática en 50.0 ("p"). En este ejemplo, la hora de inicio es 0 s ("t" = 0 como valor
predeterminado).


,*/"DDVNVMBUFE
1BUI-FOHUI

U

*13DMJQCPBSE
DC#PPM<> 

U

MCL
// 2 synchronous actions on a command sequence with blending
SYNC
linAbs( myPos1, trans := 1, blend := 2 );
linAbs( myPos2, trans := 0 );
ON_POS sType := 0 DO // with path start
writeVar( $IPR.Clipboard.cbBool[1], TRUE );
ON_POS sType := 2, p := 50.0 DO // execute at path position 50.0
writeVar( $IPR.Clipboard.cbBool[1], FALSE );
END_SYNC;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


122 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

Ejemplo 5
Para conectar en cascada acciones síncronas, es posible agregar un bloque SYNC/END_SYNC
con subbloque ON_POS a otro bloque SYNC/END_SYNC.
En este ejemplo, la variable del portapapeles Clipboard Variable $IPR.clipboard.cbBool[1] del
objeto tecnológico Intérprete se establece en TRUE cuando se inicia el movimiento de
trayectoria con suavizado de transición. Cuando la longitud de trayectoria 10.0 ("p") de la
orden de trayectoria alcanza la posición myPos2, la misma variable se establece en FALSE.
; EOHQGLQJDFWLYH

.,16WDWXV:RUG
;

 W


.,1$FFXPXODWHG
3DWK/HQJWK

W


,35FOLSERDUG
FE%RRO>@

W

MCL
// synchronous actions at a blended command sequence
// (based on the path length of the single commands)
SYNC
linAbs( myPos1, trans := 1, blend := 2 );
SYNC
linAbs( myPos2, trans := 0 );
ON_POS sType := 2, p := 10.0 DO // on position 10.0
writeVar( $IPR.Clipboard.cbBool[1], FALSE );
END_SYNC;
ON_POS sType := 0 DO // with start of path to myPos1
writeVar( $IPR.Clipboard.cbBool[1], TRUE );
END_SYNC;

Ejemplo 6
En este ejemplo, la secuencia de instrucciones se inicia en la acción síncrona con el comienzo
del movimiento de trayectoria. Dependiendo del valor de $IPR.clipboard.cbBool[1], se
termina anticipadamente el resto de la preparación y de la ejecución de la acción síncrona
con la instrucción EXIT_SYNC.

MCL
SYNC
linAbs( pos1 ); // main command sequence

ON_POS sType := 0 DO

// command sequence
FOR i := 1 TO 10 BY 5 DO
...
IF $IPR.Clipboard.cbBool[1] = TRUE THEN
// synchronous action prematurely ended

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 123
Crear el programa MCL (S7-1500T)
5.6 Instrucciones de control (S7-1500T)

MCL
EXIT_SYNC;
END_IF;
END_FOR;
END_SYNC;

5.6.10.4 Combinación de inicio síncrono y acciones síncronas (S7-1500T)

La programación de instrucciones o secuencias de instrucciones síncronas se realiza mediante


bloques SYNC/END_SYNC. Dentro de esta estructura de bloques unitaria se pueden utilizar
subbloques específicos para el inicio síncrono (subbloque ON_START) y acciones síncronas
(subbloque ON_POS). Todas las acciones síncronas programadas en el bloque SYNC se
refieren a la misma secuencia principal.

Ejemplo
En el siguiente ejemplo, todas las acciones síncronas se refieren a la misma secuencia
principal. El inicio de la ejecución de las acciones síncronas comienza de forma síncrona a la
ejecución de la secuencia principal. El inicio de la ejecución de la acción síncrona comienza en
la posición 50.0 tras el inicio de la ejecución de la secuencia principal.

,*/"DDVNVMBUFE 
1BUI-FOHUI



NZ"YJT1PTJUJPO


U



NZ"YJT1PTJUJPO 


U

*13DMJQCPBSE 
DC#PPM<>

U

MCL
SYNC
linAbs( myPos1, trans := 1, blend := 2 ); // main sequence
linAbs( myPos2, trans := 0 );
ON_START
posAbs( myAxis1, 20.0 ); // synchronous start with main sequence
// (myAxis1 is not kinematics axis)
ON_START
writeVar( $IPR.Clipboard.cbBool[1], TRUE ); // synchronous start with
// main sequence
ON_POS sType := 2, p := 50.0 DO // synchronous action at position 50
posAbs( myAxis2, 15.0 ); // myAxis2 is not kinematics axis

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


124 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

MCL
END_SYNC;

Consulte
también
preHalt(): Detener la preparación del programa (Página 302)
waitEvent(): Interrumpir la ejecución del programa hasta un determinado evento (Página
293)

5.7 Estructura del programa MCL (S7-1500T)

5.7.1 Descripción general de la estructura del programa MCL (S7-1500T)

Introducción
Los programas MCL deben respetar determinadas estructuras y reglas sintácticas. MCL ofrece
posibilidades para estructurar y organizar el programa y consta de diferentes unidades de
organización del programa (POE). El programa MCL que debe procesar el intérprete se
describe de forma textual y soporta la siguiente estructura:
• Programa principal
• Funciones
• Tipos de datos definidos por el usuario
Junto al programa principal, las funciones son los elementos más importantes para la
organización del programa. A diferencia del programa principal, la programación de
funciones es opcional.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 125
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

La siguiente figura muestra la estructura típica del programa MCL:

OFXUZQFTEFDMBSBUJPOVOJU
5:1&

&/%@5:1&

130(3"..BJO
EFDMBSBUJPOQBSU

1SPHSBNB.$-

TUBUFNFOUQBSU


&/%@130(3".

'6/$5*0/'VODUJPO@/BNF%"5"@5:1&
EFDMBSBUJPOQBSU


TUBUFNFOUQBSU


&/%@'6/$5*0/

Estructura general de POE


El código fuente del programa principal y las funciones consta de las siguientes secciones:
• Inicio (obligatorio)
• Sección de declaración (opcional)
• Sección de instrucciones (obligatoria)
• Fin (obligatorio)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


126 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

Inicio y fin de una POE


Dependiendo del tipo de POE, el texto fuente para POE individuales comienza con un
identificador estándar para el comienzo del bloque y el nombre del bloque. La terminación se
realiza con un identificador estándar para el final del bloque.

Nombre de la POE Utilización Sintaxis en MCL Descripción


Programa principal Obligatoria PROGRAM Main Punto de entrada para la ejecu­
……… ción de un programa intérpre­
END_PROGRAM
te.
Función Opcional FUNCTION <Name> : En esta POE puede haber se­
<Type> cuencias con instrucciones.
……
END_FUNCTION Esta POE debe programarse
or fuera del programa principal.
FUNCTION <Name> : VOID
……
END_FUNCTION
Tipo de datos defi­ Opcional TYPE Uso para declarar nuevos tipos
nido por el usuario …… de datos sobre la base de tipos
END_TYPE
de datos existentes.
Esta POE debe programarse
fuera del programa principal.
El orden de las unidades de organización de un programa para la declaración de los tipos de
datos y para funciones puede ser cualquiera, es decir, la programación del bloque
"TYPE-END_TYPE" (para tipos de datos definidos por el usuario) o de "FUNCTION <Name> :
<TYPE> - END_FUNCTION" (para funciones) puede tener lugar tras la primera utilización.

Sección de declaración
La sección de declaración sirve para definir variables, constantes y parámetros. Una sección
de declaración se divide en varias subsecciones de declaración, cada una de ellas delimitada
por un par de palabras clave. Cada sección de declaración solamente debe aparecer una vez
en una POE. No se admite cualquier tipo de unidades de declaración en cualquier tipo de POE.
No existe ningún orden concreto en el que deban disponerse las secciones de declaración.
La siguiente tabla muestra las unidades de declaración y si se admiten o no en una POE (✓).

Nombre de la unidad de de­ Utilización Sintaxis en MCL POE


claración Programa Función
principal
Unidad de declaración para Opcional VAR ✓ ✓
variables locales estáticas ……
END_VAR
Unidad de declaración para Opcional VAR CONSTANT ✓ ✓
constantes locales ……
END_VAR
Unidad de declaración para Opcional VAR_TEMP ✓ ✓
variables temporales locales ……
END_VAR
Unidad de declaración para Opcional VAR_IPR ✓
variables globales del intér­ ……
END_VAR
prete

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 127
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

Nombre de la unidad de de­ Utilización Sintaxis en MCL POE


claración Programa Función
principal
Unidad de declaración para Opcional VAR_IPR CONSTANT ✓
constantes globales del intér­ ……
END_VAR
prete
Unidad de declaración para Opcional VAR_INPUT ✓
parámetros de entrada ……
END_VAR
Unidad de declaración para Opcional VAR_OUTPUT ✓
parámetros de salida ……
END_VAR

Sección de instrucciones
En la sección de instrucciones pueden programarse una o varias secuencias. Esta sección
puede contener:
• Asignaciones de valor para asignar a una variable el resultado de una expresión o el valor
de otra variable.
• Instrucciones de control para repetir instrucciones o grupos de instrucciones o para
ramificarlas dentro de un programa.
• Llamadas de función
• Instrucciones MCL

Consulte
también
Tipos de datos (Página 54)

5.7.2 Programa principal (S7-1500T)

Descripción
El programa principal es el punto de entrada para la ejecución de un programa intérprete. Al
definir el programa principal se dispone de las secuencias que deben procesarse en un orden
de procesamiento definido. La definición del programa principal es obligatoria.

Estructura
El programa principal consta de cuatro secciones:
• Inicio (obligatorio) - palabra clave "PROGRAM Main"
• Sección de declaración (opcional) que consta de hasta cuatro bloques:
– Unidad de declaración para constantes locales (opcional)
– Unidad de declaración para variables estáticas locales (opcional)
– Unidad de declaración para constantes globales del intérprete (opcional)
– Unidad de declaración para variables globales del intérprete (opcional)
• Sección de instrucciones/ejecución (obligatoria)
• Fin (obligatorio) - palabra clave "END_PROGRAM"

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


128 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

La sección de declaración del programa principal debe programarse antes de la sección de


instrucciones/ejecución.
Cada tipo de bloque de declaración ("VAR CONSTANT", "VAR_IPR CONSTANT", "VAR" o
"VAR_IPR") en la sección de declaración solamente puede aparecer una vez y finaliza con
"END_VAR".
La figura siguiente muestra la estructura típica de un programa principal:

130(3"..BJO
MPDBMDPOTUBOUTEFDMBSBUJPOVOJU
7"3@$0/45"/5

&/%@7"3

MPDBMTUBUJDWBSJBCMFTEFDMBSBUJPOVOJU
7"3

&/%@7"3
1SPHSBNB.$-

*OUFSQSFUFSHMPCBMWBSJBCMFTEFDMBSBUJPOVOJU
7"3@*13

&/%@7"3

*OUFSQSFUFSHMPCBMDPOTUBOUTEFDMBSBUJPOVOJU
7"3@*13$0/45"/5

&/%@7"3

MPDBMDPOTUBOUTEFDMBSBUJPOVOJU


&/%@130(3".

Sintaxis
La identificación sintáctica del programa principal es un bloque con las palabras clave
"PROGRAM Main" (comienzo del programa principal) y "END_PROGRAM" (fin del programa
principal). Este bloque se admite una vez por cada programa MCL. El programa principal no se
puede utilizar como función.

Nombre de la POE Utilización Sintaxis en MCL Descripción


Programa principal obligatoria PROGRAM Main Punto de entrada para la
// declaration part ejecución de un progra­
VAR CONSTANT
…… ma intérprete.
END_VAR

VAR
……
END_VAR

VAR_IPR
……

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 129
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

Nombre de la POE Utilización Sintaxis en MCL Descripción


END_VAR

VAR_IPR CONSTANT
……
END_VAR
//statement part
END_PROGRAM

Ejemplo
El siguiente ejemplo muestra un programa principal:

MCL
PROGRAM Main
// declaration part
VAR CONSTANT
myConst1 : DINT := 10;
END_VAR
VAR
myVar1, myVar2 : LREAL;
END_VAR
VAR_IPR
myGlobalVar : LREAL;
END_VAR
VAR_IPR CONSTANT
myGlobalConst1 : LREAL := 3.14;
END_VAR
// statement part
myVar1 := 1.5;
myVar2 := 2.3 + myConst1 + myGlobalConst1;
END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


130 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

5.7.3 Funciones (S7-1500T)

Descripción
Una función se puede llamar varias veces en diferentes puntos de un programa. Contiene
código que se ejecuta cada vez que se llama la función.
Las funciones se pueden utilizar, p. ej., para los siguientes fines:
• Funciones matemáticas, que devuelven un resultado en función de valores de entrada.
• Subprogramas que se llaman en el programa principal, p. ej., para activar una cinta
transportadora.

Estructura
Una función consta de dos secciones:
• Sección de declaración (opcional), que consta de hasta cinco bloques:
– Unidad de declaración para variables temporales locales (opcional)
– Unidad de declaración para constantes locales (opcional)
– Unidad de declaración para parámetros de entrada (opcional)
– Unidad de declaración para parámetros de salida (opcional)
• Sección de instrucciones/ejecución (obligatoria)
La disposición y el orden de las unidades en la sección de declaración puede ser cualquiera. La
sección de declaración de una función debe programarse antes de la sección de
instrucciones/ejecución. Ningún tipo de unidad de declaración (VAR_TEMP, VAR_INPUT,
VAR_OUTPUT, VAR CONSTANT) puede aparecer más de una vez en la sección de declaración y
se finaliza con END_VAR.
Las funciones deben definirse como unidad de programa independiente delante o detrás del
programa principal. Pueden utilizarse sin sección de declaración, independientemente de la
formulación del cuerpo de la función delante o detrás de una llamada de función.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 131
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

La figura siguiente muestra la estructura típica de una función.

'6/$5*0//BNF5ZQF
EFDMBSBUJPOQBSU

MPDBMDPOTUBOUTEFDMBSBUJPOVOJU
7"3@$0/45"/5

&/%@7"3

MPDBMUFNQPSBSZWBSJBCMFTEBDMBSBUJPOVOJU
7"3@5&.1

&/%@7"3
1SPHSBNB.$-

EFDMBSBUJPOVOJUGPS*/165QBSBNFUFST
7"3@*/165

&/%@7"3

EFDMBSBUJPOVOJUGPS065165QBSBNFUFST
7"3@065165

&/%@7"3

TUBUFNFOUQBSU


&/%@'6/$5*0/

Sintaxis
La identificación sintáctica de la función comienza con la palabra clave FUNCTION (inicio de la
función) y finaliza con la palabra clave END_FUNCTION (fin de la función):

Sintaxis Descripción
FUNCTION <Name> : <Type> FUNCTION Con esta palabra clave comienza
…… una función. Se distingue entre
END_FUNCTION
mayúsculas y minúsculas.
<Name> El nombre de la función sigue a la
palabra clave FUNCTION
El nombre simbólico de la función
es un identificador libre. Se distin­
gue entre mayúsculas y minúscu­
las.
":" Separador - separa el nombre de
la función y el tipo de datos del
valor de retorno de la función.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


132 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

Sintaxis Descripción
FUNCTION <Name> : <Type> <Type> Aquí se indica el tipo de datos del
…… valor de retorno.
END_FUNCTION
END_FUNCTION La función finaliza con esta pala­
bra clave. Se distingue entre ma­
yúsculas y minúsculas.
FUNCTION <Name> : VOID El tipo VOID indica que la función no devuelve ningún valor como re­
…… sultado de su ejecución.
END_FUNCTION

Ejemplo
El siguiente ejemplo muestra los parámetros de entrada y los parámetros de salida que se
declaran en la correspondiente sección de declaración de la función.

MCL
FUNCTION myFct: BOOL
VAR_INPUT
in1 : LREAL := 2.0;
in2 : LREAL;
END_VAR

VAR_OUTPUT
out : LREAL := 0.0;
END_VAR

// Do something...
// return value
out := SQRT( (in2 - in1)**2 );
myFct := TRUE;
END_FUNCTION

// function without return value


FUNCTION mySub : VOID
VAR_INPUT
in : LREAL;
END_VAR

VAR_OUTPUT
out : LREAL;
END_VAR

// statement part
...
END_FUNCTION

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 133
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

5.7.4 Parámetros de función (S7-1500T)

Descripción
La interfaz de llamada de una función está determinada por la definición de variables dentro
de la función. Esta definición se realiza por separado para variables de entrada y variables de
salida. Mediante esta declaración, se determina el nombre de la variable mediante el que se
puede leer (variable de entrada) o modificar (variable de salida) el valor transferido dentro de
la función.
En la llamada de una función tiene lugar la transferencia de valores mediante estos nombres
de variables acordados para la interfaz de la función, que pueden designarse en este contexto
como nombres de parámetros formales. Las variables de entrada obtienen su valor mediante
la asignación de valor de una expresión al parámetro formal. Los valores proporcionados en
parámetros de salida como resultado de una función se transfieren a otra variable mediante
asignación de salida a través del nombre de parámetro formal.

Categorías

Parámetro formal Unidad de decla­ Utilización Descripción


ración
Input VAR_INPUT Opcional Los parámetros de entrada toman los
valores de entrada actuales cuando se
llama la función.
Output VAR_OUTPUT Opcional Los parámetros de salida transfieren los
valores de salida actuales a la función
invocante.
En ellos se pueden escribir datos, y de
ellos pueden leerse datos.

Definición de parámetros, variables y constantes locales


La definición de todas las constantes y variables locales y parámetros formales (parámetros
de entrada, parámetros de salida) debe realizarse en la sección de declaración de la función.
Cada tipo de unidad de declaración solamente se admite una vez.
El almacenamiento de los datos locales es solo temporal mientras que la función esté activa.
Por este motivo, todos los parámetros formales de entrada y salida definidos en la sección de
declaración de una función deben estar ocupados con parámetros actuales en el contexto de
la llamada de la función.
Para permitir la indicación opcional de parámetros y llamadas de función, MCL permite
inicializar parámetros de entrada y salida con un valor estándar en la declaración. Si no se
indica un valor estándar, se utiliza el valor estándar del tipo de datos.
Si se indica el valor estándar en la declaración, se aplican las siguientes reglas:
• Para parámetros de entrada: el parámetro es opcional y puede omitirse en la llamada de la
función. Si no se indica el parámetro en la llamada, se utiliza el valor estándar programado
en la declaración.
• Para parámetros de salida: se utiliza el valor estándar programado en la declaración.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


134 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

Si no se indica el valor estándar en la declaración, se aplican las siguientes reglas:


• Para parámetros de entrada: el parámetro debe tener asignado obligatoriamente el valor
actual en la llamada de la función.
• Para parámetros de salida: se utiliza el valor estándar del tipo de datos.
Encontrará más información en el capítulo "Tipos de datos (Página 54)".
Para transferir parámetros a funciones se aplica lo siguiente:

Parámetro formal Tipo de datos simple Tipo de datos estructurado


Input Copia1) Copia1)
Output Copia1) Copia1)
1) En la llamada de una función se copia el valor del parámetro en el cuerpo de la función. Durante la
ejecución, el valor del parámetro permanece inalterado.

5.7.5 Llamada de funciones (S7-1500T)

Descripción
Una función se llama indicando lo siguiente:
• Nombre de la función (denominación simbólica).
• Lista de parámetros con asignación de los parámetros actuales necesarios en la sección de
instrucciones del programa principal o de otra función.

Llamada de la función
El siguiente ejemplo de llamada de función muestra parámetros de entrada y parámetros de
salida.
Los parámetros se indican en forma de asignación de valor. Esta asignación de valor asigna
un valor (parámetro actual) a los parámetros definidos en la sección de declaración del
bloque llamado (parámetros formales).


NZ'DU JO JO PVUNZ7BS 

   

① Lista de parámetros
② Nombre de la función
③ Parámetro de entrada 1
④ Parámetro de entrada 2
⑤ Parámetro de salida

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 135
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

Parámetro formal Sentido de transferencia Parámetro actual


in1 ← 1.0
in2 ← 2.0
out → myVar3
En la llamada de funciones se intercambian datos entre el bloque invocante y el bloque
llamado. Los parámetros que van a transmitirse deben indicarse en la llamada de función en
forma de lista de parámetros. Los parámetros aparecen entre paréntesis y están separados
entre sí mediante comas.

Transferencia de parámetros
Para la transferencia de parámetros se aplica lo siguiente:
• Si los valores estándar de parámetros de entrada están indicados en la sección de
declaración de la función, la indicación de parámetros de entrada en las llamadas de
función es opcional.
• Si los valores estándar de los parámetros de entrada no están indicados en la sección de
declaración, deben asignarse los valores actuales a los parámetros de entrada en la
llamada de la función.
• La indicación de parámetros de salida en llamadas de función es opcional. Si los valores
predeterminados de los parámetros de salida no están indicados en la sección de
declaración
de la función, se utiliza el valor estándar del tipo de datos como valor estándar del
parámetro de salida.
• Si los tipos de datos no coinciden, tiene lugar una conversión implícita de tipo de los
parámetros actuales. Si esto no es posible, se emite un error en tiempo de ejecución.
• Se puede elegir cualquier orden para la asignación.
• Las asignaciones individuales se separan mediante comas.
Si se utilizan funciones en expresiones, se aplican las reglas de conversión anteriores. Si en
una expresión no se espera ningún tipo de datos simple, este debe coincidir con el tipo de
datos proporcionado por la función.

Ejemplo
El siguiente ejemplo muestra una llamada de función:
MCL
// Call function "myFct"
// Parameter "in1" - optional (default value is specified in the declaration)
// Parameter "in2" - mandatory (default value is not specified in the declaration)
myVar1 := myFct( in1 := 1.0, in2 := 2.0, out => myVar3 );
myVar2 := myFct( in2 := 10.0 );
// Call function "mySub"
mySub( in := 1.0, out => myVar3 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


136 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

5.7.6 Valores de retorno de funciones (S7-1500T)

Descripción
Para los valores de retorno de las funciones MCL existen dos posibilidades:
• Una función puede definirse con y sin valor de retorno. Esto se determina a través del tipo
de retorno en la declaración de la función. Si se ha especificado el tipo de retorno con
VOID, la función no posee ningún valor de retorno.
• Las funciones sin valor de retorno no pueden utilizarse en operaciones de asignación. Las
funciones con valor de retorno se pueden utilizar en cualquier expresión. El valor de
retorno de la función se utiliza de forma equivalente a una variable para calcular la
expresión.

Ejemplo
El siguiente ejemplo muestra un valor de retorno en una expresión:

MCL
//return value in an expression
(*result of functions FLOOR and myFct is written by assignment of the
function identifier to myVar*)

myVar := FLOOR( 123.4 + myFct( in1 := 2.0, in2 := 4.0 ) );

Retorno de arrays y estructuras


El valor de retorno de una función está disponible tras la llamada. Para el valor de retorno de
las funciones se permiten todos los tipos de datos. También se soporta el retorno de arrays y
estructuras. Para manipular el valor de retorno en una expresión se aplican las mismas reglas
que para una variable del mismo tipo de datos. Si el valor de retorno de una función es una
estructura o un array, puede asignarse a una variable del tipo de datos adecuado.

Ejemplos
El siguiente ejemplo muestra el uso de los valores de retorno de los tipos array o estructura:

MCL
FUNCTION myFctStruct : TO_Struct_Ipr_Position
//…
END_FUNCTION
FUNCTION myFctArray : ARRAY[0..1] OF LREAL
//…
END_FUNCTION
PROGRAM main
VAR
posVar: TO_Struct_Ipr_Position;
arrayVar : ARRAY[0..1] OF LREAL;
END_VAR

posVar := myFctStruct();
arrayVar := myFctArray();

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 137
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

MCL
END_PROGRAM

El valor de retorno se proporciona en la implementación de la función mediante la asignación


de un valor al nombre de la función. Esto también es válido si el valor de retorno es una
estructura o un array. En tal caso, se puede acceder a componentes individuales.
El siguiente ejemplo muestra cómo se define el valor de retorno de una función como
estructura o array en la implementación de la función propiamente dicha. El valor de retorno
de una función puede asignarse elemento a elemento en el caso de elementos individuales
de la estructura o del array o por agregado, es decir, la combinación de varios elementos para
formar un nuevo elemento estructurado.

MCL
// example for a structure as return value
FUNCTION myFctStruct : TO_Struct_Ipr_Position
// by a tag value
myFctStruct := globalStruct;
// by single components
myFctStruct.x := 100.0;
myFctStruct.y := 100.0;
// using an aggregate:
myFctStruct := ( x := 100.0, y := 100.0, z := 100.0,
A := 100.0, B := 100.0, C := 100.0 );
END_FUNCTION
// example for an array as return value
FUNCTION myFctArray : ARRAY[0..1] OF LREAL
// by a variabel value

myFctArray := globArray;

// by single components
myFctArray [0] := 100.0;
myFctArray [1] := 101.0;

END_FUNCTION

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


138 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.7 Estructura del programa MCL (S7-1500T)

5.7.7 Finalización prematura de funciones (S7-1500T)

Descripción
La instrucción RETURN finaliza la función actual en el punto en el que se encuentre esta
instrucción. Tras finalizar la función, el procesamiento del programa continúa en el punto
desde el que se llamó la función actual. Encontrará más información en el capítulo
"Instrucción RETURN (Página 107)".

Ejemplo
El siguiente ejemplo muestra la finalización de una función:

MCL
FUNCTION MySub : VOID
VAR_TEMP
i : DINT;
END_VAR
// statement part
//...
IF i > 100 THEN
RETURN;
END_IF;
END_FUNCTION

5.7.8 Palabras clave reservadas (S7-1500T)

Descripción
Para garantizar la compatibilidad de programas tras posibles ampliaciones de MCL, las
unidades de organización del programa no soportadas están reservadas sintácticamente.
Las siguientes posibilidades de estructuración del programa están reservadas
sintácticamente:
• Bloques de función (FUNCTION_BLOCK)
• Bloques de organización (ORGANIZATION_BLOCK)
• Bloques de datos (DATA_BLOCK)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 139
Crear el programa MCL (S7-1500T)
5.8 Trabajar con el editor de programación (S7-1500T)

5.8 Trabajar con el editor de programación (S7-1500T)

5.8.1 Estructura del editor de programación para programas intérprete


(S7-1500T)
El editor de programación sirve para crear y editar programas intérprete. El programa
intérprete abierto puede acceder a los parámetros de los objetos tecnológicos Intérprete y
Mapeo de intérprete seleccionados en la lista de herramientas, así como los objetos
tecnológicos asociados en cada caso, p. ej., Cinemática.
Desde la entrada "Editor" del árbol del proyecto, se abre el editor de programación de un
objeto tecnológico Programa intérprete.
El siguiente gráfico muestra la estructura del editor de programación:

 

① Barra de herramientas
② Ventana de programación
③ Barra de estado
④ Visualización 3D de la cinemática

Barra de herramientas ①
La barra de herramientas situada en el margen superior del editor de programación ofrece las
siguientes funciones:

Botón Función
Activar/desactivar observación
Observar ejecución del programa
Navegar a la función anterior
Visualización de la función actual/navegar a la función selecciona­
da
Navegar a la siguiente función
Poner marca de comentario

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


140 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.8 Trabajar con el editor de programación (S7-1500T)

Botón Función
Quitar marca de comentario
Activar/retirar marcadores
Navegar al marcador anterior
Navegar al siguiente marcador
Cerrar todos los cuadros de diálogo de parametrización
Seleccionar el objeto tecnológico Intérprete

Seleccionar el objeto tecnológico Mapeo de intérprete

Ir a la configuración de mapeo
Navegar al error anterior
Navegar a los errores
Indicación del número del error actual/número total de errores

Navegar al siguiente error

Ventana de programación ②
En la ventana de programación, se crea y edita un programa intérprete.
La ventana de programación está dividida en las siguientes áreas:
• Izquierda: numeración de líneas, plegado de código, acciones rápidas, marcadores
• Centro: área de programación
• Derecha: pequeña vista preliminar del área de programación con marcas de colores
Como ayuda para la programación, la ventana de programación ofrece los denominados
"cuadros de diálogo de parametrización (Página 144)", que simplifican la especificación de los
parámetros de la instrucción. Asimismo, la ventana de programación contiene funciones de
autocompletar, comprobar sintaxis, etc.
Encontrará más información sobre cómo trabajar con la ventana de programación en el
capítulo "Funciones disponibles en la ventana de programación del editor de programación
(Página 142)".

Barra de estado ③
La barra de herramientas situada en el margen inferior del editor de programación ofrece las
siguientes funciones:

Botón Función
Indicación de línea y posición de la marca de entrada

Zoom de tamaño del texto

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 141
Crear el programa MCL (S7-1500T)
5.8 Trabajar con el editor de programación (S7-1500T)

Visualización 3D de la cinemática ④
La visualización 3D contiene una representación de la cinemática vinculada al objeto
tecnológico Intérprete seleccionado. Para mostrar la cinemática vinculada en la visualización
3D, elija un objeto tecnológico Intérprete en la barra de herramientas del editor de
programación, en la lista de selección "Seleccionar intérprete".
Encontrará más información sobre cómo trabajar con la visualización 3D del objeto
tecnológico Cinemática en el capítulo "Visualización 3D" de la documentación "S7‑1500T
Funciones cinemáticas" (Página 11).

5.8.2 Funciones disponibles en la ventana de programación del editor de


programación (S7-1500T)
En la ventana de programación del editor de programación, se crea y edita un programa
intérprete. Para ello, se dispone de las siguientes funciones:
• Acciones rápidas
• Plegado de código
• Función de autocompletar
• Buscar y reemplazar
• Comprobación de sintaxis
• Combinaciones de teclas

Acciones rápidas
Si todavía no hay ninguna instrucción MCL en una línea, además del número de línea se
muestra el símbolo . Para insertar una nueva instrucción MCL en la línea, haga clic en el
símbolo y, en el menú, elija la instrucción MCL que desee insertar.
Si hay una instrucción MCL en una línea, además del número de línea se muestra el símbolo
respectivo. Si se hace clic en el símbolo correspondiente de una instrucción MCL, se abre el
menú con las acciones rápidas.
Se ofrecen las acciones rápidas siguientes:

Símbolo Acción rápida Descripción


Insertar Inserta una nueva instrucción MCL en la línea vacía actual o bajo la instruc­
ción MCL actual. Elija la nueva instrucción MCL en el menú.
Duplicar Duplica la instrucción MCL actual. Los comentarios que pueda haber en la lí­
nea actual no se duplican.
Borrar Borra la instrucción MCL actual. Los comentarios que pueda haber en la línea
actual no se borran.
Modificar Cambia la instrucción MCL actual por una instrucción MCL nueva. Elija la nue­
va instrucción MCL en el menú.
Los valores de los parámetros de la instrucción MCL actual que ya estén guar­
dados se aplican en la instrucción MCL nueva en la medida de lo posible.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


142 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.8 Trabajar con el editor de programación (S7-1500T)

Plegado de código
Si, además del número de línea, aparece el símbolo , puede contraerse la sección del
programa. Las secciones que pueden contraerse empiezan por una palabra clave. También es
posible contraer comentarios de bloque.
Las secciones contraídas se reconocen por el símbolo junto al número de línea y por la
marca azul en la línea.

Función de autocompletar
La combinación de teclas <CTRL + barra espaciadora> activa la función de autocompletar.
La función de autocompletar hace las siguientes sugerencias:
• Palabras clave
• Instrucciones MCL
• Funciones
• Instrucciones de control
• Variables
• Tipos de datos
• Identificadores definidos en bloques de declaración
• Identificadores definidos en la configuración del objeto tecnológico Mapeo de intérprete
seleccionado en la barra de herramientas

Buscar y reemplazar
La función "Buscar y reemplazar" se encuentra en la Task Card "Tareas".
Opciones de búsqueda disponibles:
• Buscar solo palabra completa
• Mayúsculas/minúsculas
• Buscar en estructuras subordinadas
• Buscar en textos ocultos
• Utilizar comodines
• Utilizar expresiones regulares
Opciones de reemplazo disponibles:
• Todo el documento
• Desde posición actual
• Selección

Comprobación de sintaxis
Al editar el programa intérprete, la sintaxis se comprueba permanentemente en segundo
plano. La comprobación de sintaxis detecta errores de sintaxis y errores semánticos.
Los errores y advertencias detectados se indican en forma abreviada directamente en la
ventana de programación. Se muestra una lista de todos los mensajes de error con
información detallada en la ventana de inspección, en "Información > Sintaxis".
Desde la lista o la barra de herramientas se puede navegar a los errores en el programa
intérprete.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 143
Crear el programa MCL (S7-1500T)
5.8 Trabajar con el editor de programación (S7-1500T)

Combinaciones de teclas
En la ventana de programación están disponibles las siguientes combinaciones de teclas:

Combinación de teclas Función


Ctrl + G Ir a línea
Ctrl + Mayús + W Formatear selección
Ctrl + Mayús + Y Poner marca de comentario
Ctrl + Mayús + U Quitar marca de comentario
Ctrl + barra espaciadora Mostrar función de autocompletar
Ctrl + Mayús + M Activar/retirar marcadores
Ctrl + Mayús + 5 Navegar al marcador anterior
Ctrl + Mayús + 6 Navegar al siguiente marcador

5.8.3 Trabajar con los cuadros de diálogo de parametrización de instrucciones


MCL (S7-1500T)
Para programar instrucciones MCL se dispone de los denominados "cuadros de diálogo de
parametrización". Los cuadros de diálogo de parametrización ayudan a especificar valores de
parámetros. Los cuadros de diálogo de parametrización se muestran incrustados en la
ventana de programación.
En los cuadros de diálogo de parametrización, los parámetros obligatorios tienen un fondo
rojo, y los opcionales, un fondo naranja, hasta que se haya introducido al menos un valor.

Abrir el cuadro de diálogo de parametrización


Cuando se inserta una nueva instrucción MCL en el programa intérprete mediante las
acciones rápidas (Página 142), se abre automáticamente el cuadro de diálogo de
parametrización que corresponda.
Para abrir un cuadro de diálogo de parametrización, haga lo siguiente:
1. Haga clic en el símbolo junto al nombre de la instrucción MCL.

Cerrar cuadros de diálogo de parametrización individuales


Para cerrar un cuadro de diálogo de parametrización, haga lo siguiente:
1. En el cuadro de diálogo de parametrización, haga clic en el botón "Cerrar". También puede
hacer clic en el símbolo junto al nombre de la instrucción MCL.

Cerrar todos los cuadros de diálogo de parametrización


Para cerrar todos los cuadros de diálogo de parametrización, haga lo siguiente:
1. En la barra de herramientas, haga clic en el símbolo .

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


144 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.8 Trabajar con el editor de programación (S7-1500T)

Aplicar los valores de posición del punto de operación de la herramienta de la cinemática


Al especificar coordenadas se pueden aplicar los valores actuales de posición del punto de
operación de la herramienta (TCP) de la cinemática vinculada al intérprete seleccionado en la
barra de herramientas. La función solamente está disponible si, en la barra de herramientas,
se ha seleccionado un objeto tecnológico vinculado a un objeto tecnológico Cinemática.
Para aplicar las coordenadas del punto de operación de la herramienta, haga lo siguiente:
1. Para aplicar el valor actual de posición de una coordenada, haga clic en el símbolo
junto al campo de entrada correspondiente.
2. Para aplicar los valores actuales de posición de todas las coordenadas, haga clic en el
símbolo situado encima de los campos de entrada.

5.8.4 Trabajar con marcadores (S7-1500T)


Los marcadores permiten marcar puntos del programa en programas intérprete extensos para
encontrarlos fácilmente con el fin de retocarlos posteriormente. Los marcadores se muestran
en la columna izquierda de la ventana de programación, al lado de los números de línea.
Es posible utilizar marcadores incluso en el modo protegido contra escritura.

Activar marcadores
Para activar un marcador, haga lo siguiente:
1. Sitúe el cursor en la línea correspondiente.
2. En la barra de herramientas del editor de programación, haga clic en el símbolo .
También puede seleccionar la entrada "Activar marcador" del menú contextual en la
columna izquierda de la ventana de programación.

Eliminar marcadores individuales


Para eliminar un marcador, haga lo siguiente:
1. Sitúe el cursor en la línea correspondiente.
2. En la barra de herramientas del editor de programación, haga clic en el símbolo .
También puede seleccionar la entrada "Eliminar marcador" del menú contextual en la
columna izquierda de la ventana de programación.

Eliminar todos los marcadores


Para eliminar todos los marcadores, haga lo siguiente:
1. Seleccione la entrada "Eliminar todos los marcadores" del menú contextual en la columna
izquierda de la ventana de programación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 145
Crear el programa MCL (S7-1500T)
5.9 Llamada de instrucciones MCL (S7-1500T)

Navegar a los marcadores


Si hay un marcador en una sección de programa contraída, no se muestra el marcador. Si se
navega a un marcador oculto, se amplía automáticamente la sección de programa.
Para navegar a los marcadores, haga lo siguiente:
1. Para navegar al siguiente marcador, en la barra de herramientas del editor de
programación, haga clic en el símbolo .
2. Para navegar al marcador anterior, en la barra de herramientas del editor de
programación, haga clic en el símbolo .

5.9 Llamada de instrucciones MCL (S7-1500T)

5.9.1 Estructura de una llamada de instrucción (S7-1500T)


La estructura general de una instrucción MCL consta de los nombres de función, seguidos de
posibles parámetros de función (entre paréntesis), separados por una coma.
Para parametrizar una instrucción en un programa MCL existen tres tipos de parámetros:
• Parámetros necesarios
• Parámetros opcionales con valor modal
• Parámetros opcionales con valor predeterminado

Sintaxis
MCL
instrName( <nVal1>,…, <nValN> [,omPara1 := <val1>] [,…,omParaN := <valN>] );

Elemento sintáctico Descripción


instrName Nombre simbólico de la función
() Parámetros de instrucción (entre paréntesis)
nVal1…nValN Lista de los valores para parámetros necesarios. Para los parámetros necesarios
solamente se indica el valor (en orden definido)
omPara1…omParaN Lista de parámetros opcionales o modales con identificadores de parámetro
(nombres de parámetro)
val1…valN Expresión (valor)
:= Operador de asignación
, Símbolo para la delimitación de parámetros en la lista de parámetros
; Las llamadas de función acaban con un punto y coma

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


146 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.9 Llamada de instrucciones MCL (S7-1500T)

Reglas
• Los parámetros necesarios se sitúan en primer lugar de la lista de parámetros. Su orden
está definido.
• Estos parámetros pueden seguir a parámetros opcionales o modales, que constan de
identificador de parámetro (nombre de parámetro), un operador de asignación y una
expresión. El orden de los parámetros modales y opcionales dentro de la lista de
parámetros es variable.
• Algunas instrucciones no pueden contener parámetros. En estos casos, al nombre siguen
los paréntesis y un punto y coma al final.

5.9.2 Tipos de parámetros (S7-1500T)


Cada instrucción consta de un identificador de instrucción y de los parámetros siguientes. Los
parámetros están especificados por el respectivo tipo de instrucción.
El orden de los parámetros solo está definido para los parámetros necesarios. No está
definido para parámetros opcionales.

Parámetros necesarios
La especificación de parámetros es necesaria para la correspondiente instrucción. Un ejemplo
es la especificación de posición para instrucciones de posicionamiento. Los parámetros
necesarios no tienen identificador de parámetro.

MCL

// "position_1" - necessary parameter;
// "trans" – optional parameter with modal value (modal parameter)
linAbs( position_1, trans := 0 );
// "$A1" and "20.0" - necessary parameters
posAbs( $A1, 20.0 );

Parámetros opcionales con valor modal (parámetros modales)


Los parámetros opcionales con valor modal son parámetros que pertenecen a instrucciones
lógicamente, pero no necesariamente deben especificarse en la llamada de la instrucción
MCL. Los parámetros opcionales con valor modal se inicializan al iniciarse un programa MCL
con los valores predeterminados de los objetos de cinemática y de los ejes. Conservan su
valor hasta que este sea modificado por una instrucción set para parámetros modales en el
programa MCL.
Encontrará más información en el capítulo "Parámetros modales (Página 152)"

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 147
Crear el programa MCL (S7-1500T)
5.9 Llamada de instrucciones MCL (S7-1500T)

Parámetros opcionales con valor predeterminado


Los parámetros opcionales con valor predeterminado deben especificarse con el
correspondiente identificador de parámetro (nombre de parámetro) y el operador de
asignación.
Si el parámetro no está especificado en la instrucción, se utiliza el valor predeterminado.

MCL

home( $A1 ); // direct absolute homing to 0.0
// use default values for non
// specified optional parameters

home( $A2, mode := 1, p := 10.0 ); // direct relative homing to 10.0


// with specification of optional
// parameters "mode" and "p"

5.9.3 Transferencia de parámetros (S7-1500T)


Existen varias posibilidades para transferir parámetros durante la llamada de una instrucción
en el programa MCL.

Uso de variables y valores


Como parámetro de instrucciones MCL pueden utilizarse tanto variables como valores
numéricos. Los tipos de datos de las variables deben coincidir con el tipo de datos del
parámetro:

MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
accelKin : LREAL := 5000.0;
END_VAR

(* using variables "Pos1", "accelKin" and numeric value for parameters


transfer *)
linAbs( Pos1, v := 1000.0, a := accelKin );
END_PROGRAM
Como parámetro de instrucciones MCL también pueden utilizarse elementos de arrays y
estructuras:

MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
myArray : ARRAY [0..6] OF LREAL;
ax : ARRAY [0..5] OF AXIS_OBJECT;
myStruct : STRUCT
v : LREAL := 2000.0;
a : LREAL := 6000.0;
d : LREAL := 6000.0;
j : LREAL := 10000.0;
END_STRUCT;
END_VAR
ax[2] := $A3;
myArray[1] := 1000.0;
myArray[2] := 5000.0;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


148 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.9 Llamada de instrucciones MCL (S7-1500T)

MCL
// using elements of ARRAY for parameters transfer
linAbs( Pos1, v := myArray[1], a := myArray[2] );
posAbs( ax[2], 20.0 );
// using elements of STRUCT for parameters transfer
linAbs( Pos1, v := myStruct.v, j := myStruct.j );
END_PROGRAM

Uso de agregados
Para indicar la posición en instrucciones MCL pueden utilizarse agregados.
El siguiente ejemplo muestra el uso de un agregado para el parámetro "Target position" con el
tipo de datos "TO_Struct_Ipr_Position":

MCL
// complete target position specification as aggregate
linAbs( ( x := 10.0, y := 20.0, z := 0.1,
A := 25.0, B:= 45.0, C := 0.0 ) );
El orden de los elementos del agregado no está determinado. No es necesario utilizar todos
los elementos del agregado para indicar la posición en la instrucción MCL.

Uso de una expresión aritmética


Como parámetro de instrucciones MCL también puede utilizarse una expresión aritmética. El
resultado de la expresión debe coincidir con el tipo de datos del parámetro:

MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
myVar : LREAL;
END_VAR

// using arithmetic expression for parameter transfer


linAbs( Pos1, v := 10 * myVar, j := 10000.0 );

// using arithmetic expression for parameter transfer in aggregate


linAbs( ( x := 100.0 + myVar, z := 25.0 + myVar * cos( 30.0 ) ) );
END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 149
Crear el programa MCL (S7-1500T)
5.9 Llamada de instrucciones MCL (S7-1500T)

Uso de literales
Como parámetro para instrucciones MCL pueden utilizarse literales del sistema o variables a
las que se acceda a través de literales del sistema.
Los literales del sistema "$A1", "$A2", "$A3", "$A4", "$A5", "$A6" para instrucciones de eje
individual pueden utilizarse como parámetros "Axis instance":

MCL
// using literals for single axis commands
posAbs( $A1, 10.0 );
Como parámetros en llamadas de comando MCL pueden utilizarse las variables a las que se
accede a través de los literales del sistema "$IPR" y "$KIN":

MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
END_VAR
// using literal $IPR to transmit clipboard tag
linAbs( Pos1, v := $IPR.Clipboard.CbLreal[1] );

// using literal $KIN


linAbs( Pos1, v := $KIN.DynamicDefaults.Path.Velocity );
END_PROGRAM

Uso de alias de la tabla de mapeado


Como parámetros en llamadas de comando MCL pueden utilizarse alias de la tabla de
mapeado, que se configuran en el objeto tecnológico "InterpreterMapping"
("TO_InterpreterMapping").
El siguiente ejemplo muestra el uso del alias "myAchse", mapeado al objeto tecnológico de un
eje individual (p. ej., "TO_PositioningAxis"), y del alias "myPos", mapeado a una variable LREAL
del bloque de datos global (ver también los capítulos "Mapeo de variables de un bloque de
datos global (Página 35)" y "Mapeo de un objeto tecnológico (Página 36)"):

MCL
// using alias-names from mapping table
posAbs( myAchse, myPos );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


150 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.9 Llamada de instrucciones MCL (S7-1500T)

5.9.4 Especificación de posición de destino absoluta y relativa (S7-1500T)


Existen diferencias entre las órdenes de movimiento absolutas y relativas al utilizar valores
estándar para el parámetro "Target position".

Posicionamiento absoluto
Si no se utilizan algunos elementos del agregado en una orden de movimiento de la
cinemática para el posicionamiento absoluto, la orden se ejecuta sin cambiar las coordenadas
no utilizadas en la llamada. Los valores de las coordenadas faltantes no se cambian por los
valores estándar.
La última orden del siguiente ejemplo se ejecuta sin cambiar la coordenada "x" a los valores
estándar ("x" = 0).

MCL
PROGRAM main
// position specification as aggregate in an absolute positioning command
// target position is (10.0, 10.0, 10.0)
linAbs( ( x := 10.0, y := 10.0, z := 10.0 ) );

// incomplete specification of aggregate members for target position


// target position is (100.0, 10.0, 10.0), movement along x
linAbs( ( x := 100.0 ) );

//target position is (100.0, 100.0, 10.0),


//"x"-position remains unchanged, movement only along y
linAbs( ( y := 100.0 )
END_PROGRAM
La cinemática se desplaza, p. ej., solamente a lo largo del eje de coordenadas y.

Posicionamiento relativo
Si no se utilizan algunos elementos del agregado en la orden de movimiento de la cinemática
para el posicionamiento relativo, la orden se ejecuta teniendo en cuenta los valores estándar
para cada coordenada no indicada. Puesto que el valor estándar de cada coordenada es 0.0
("x" = 0.0, "y" = 0.0, "z" = 0.0, "A" = 0.0, "B" = 0.0, "C" = 0.0), el posicionamiento relativo
solamente se ejecuta en las coordenadas indicadas.

MCL
PROGRAM main
// target position is as before (unchanged), there is no relative move-
ment
linRel( ( x := 0.0, y := 0.0, z := 0.0 ) );
linRel( ( x := 100.0 ); // only x is changed relative to prev. position
linRel( ( y := 100.0 ); // only y is changed relative to prev. position

END_PROGRAM

La cinemática se desplaza, p. ej., solamente a lo largo del eje de coordenadas y.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 151
Crear el programa MCL (S7-1500T)
5.10 Parámetros modales (S7-1500T)

5.10 Parámetros modales (S7-1500T)


Los parámetros modales se inicializan al cargar un programa MCL con los valores
predeterminados de los objetos de cinemática y de los ejes del correspondiente bloque de
datos de objeto tecnológico y conservan su valor hasta que se modifique mediante
instrucciones específicas en el programa MCL.
Por ejemplo, el valor inicial de la velocidad en el movimiento de trayectoria de cinemática se
inicializa desde la variable "<TO_Kinematics>.DynamicDefaults.Path.Velocity".

5.10.1 Parámetros modales para instrucciones de eje individual (S7-1500T)


La tabla siguiente muestra los parámetros modales que actúan sobre el objeto tecnológico
Eje, y las instrucciones MCL (instrucciones set de parámetros modales) con las que se ajustan:
Valor dinámico modal para Tipo de datos Pará­ Instrucción MCL Valor predeterminado en el inicio del pro­
instrucciones de eje individual metro grama MCL
MCL
Velocidad LREAL v setAxisDyn "<TO_Axis>.DynamicDefaults.Velocity"
(Página 274)
Aceleración LREAL a "<TO_Axis>.DynamicDefaults.Acceleration"
Deceleración LREAL d "<TO_Axis>.DynamicDefaults.Deceleration"
Tirón LREAL j "<TO_Axis>.DynamicDefaults.Jerk"
Velocidad máxima1) LREAL v setAxisDynMax "<TO_Axis>.DynamicLimits.MaxVelocity"
(Página 277)
Aceleración máxima1) LREAL a "<TO_Axis>.DynamicLimits.MaxAcceleration"
Deceleración máxima1) LREAL d "<TO_Axis>.DynamicLimits.MaxDeceleration"
Tirón máximo1) LREAL j "<TO_Axis>.DynamicLimits.MaxJerk"
1) Programable únicamente en las instrucciones set de parámetros modales

5.10.2 Parámetros modales para movimientos de la cinemática (S7-1500T)


Las tablas siguientes muestran los parámetros modales que actúan sobre el objeto
tecnológico Cinemática, y las instrucciones MCL (instrucciones set de parámetros modales)
con las que se ajustan:

Movimiento de trayectoria

Valor dinámico modal para Tipo de datos Pará­ Instrucción MCL Valor predeterminado en el inicio del pro­
movimientos de la cinemática metro grama MCL
MCL
Velocidad LREAL v setDyn (Página "<TO_Kinematics>.DynamicDefaults.Path.Velo
207) city"
Aceleración LREAL a "<TO_Kinematics>.DynamicDefaults.Path.Acce
leration"
Deceleración LREAL d "<TO_Kinematics>.DynamicDefaults.Path.Dece
leration"
Tirón LREAL j "<TO_Kinematics>.DynamicDefaults.Path.Jerk"
1) Programable únicamente en las instrucciones set de parámetros modales

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


152 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.10 Parámetros modales (S7-1500T)

Valor dinámico modal para Tipo de datos Pará­ Instrucción MCL Valor predeterminado en el inicio del pro­
movimientos de la cinemática metro grama MCL
MCL
Velocidad máxima1) LREAL v setDynMax "<TO_Kinematics>.DynamicLimits.Path.Velo­
(Página 216) city"
Aceleración máxima1) LREAL a "<TO_Kinematics>.DynamicLimits.Path.Accele­
ration"
Deceleración máxima1) LREAL d "<TO_Kinematics>.DynamicLimits.Path.Dece­
leration"
Tirón máximo1) LREAL j "<TO_Kinematics>.DynamicLimits.Path.Jerk"
Plano principal 2D DINT plane setPlane (Página 0 (plano XZ)
234)
Sentido de trayectoria circular DINT cDir setCircDir 0 (sentido de giro positivo/segmento circular
(Página 240) positivo más corto)
Modo de la adaptación DINT da setDynAdapt "<TO_Kinematics>.DynamicDefaults.Dynami­
dinámica1) (Página 247) cAdaption"
1) Programable únicamente en las instrucciones set de parámetros modales

Movimiento de orientación

Valor dinámico modal para Tipo de datos Pará­ Instrucción MCL Valor predeterminado en el inicio del pro­
movimientos de la cinemática metro grama MCL
MCL
Velocidad1) LREAL v setOriDyn "<TO_Kinematics>.DynamicDefaults.Orienta­
(Página 210) tion.Velocity"
Aceleración1) LREAL a "<TO_Kinematics>.DynamicDefaults.Orienta­
tion.Acceleration"
Deceleración1) LREAL d "<TO_Kinematics>.DynamicDefaults.Orienta­
tion.Deceleration"
Tirón1) LREAL j "<TO_Kinematics>.DynamicDefaults.Orienta­
tion.Jerk"
Velocidad máxima1) LREAL v setOriDynMax "<TO_Kinematics>.DynamicLimits.Orientation.
(Página 218) Velocity"
Aceleración máxima1) LREAL a "<TO_Kinematics>.DynamicLimits.Orientation.
Acceleration"
Deceleración máxima1) LREAL d "<TO_Kinematics>.DynamicLimits.Orientation.
Deceleration"
Tirón máximo1) LREAL j "<TO_Kinematics>.DynamicLimits.Orientation.
Jerk"
Sentido del movimiento de DINT oDirA setOriDirA 3 (recorrido más corto)
orientación (Página 236)
1) Programable únicamente en las instrucciones set de parámetros modales

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 153
Crear el programa MCL (S7-1500T)
5.10 Parámetros modales (S7-1500T)

Movimiento sPTP

Valor dinámico modal para Tipo de datos Pará­ Instrucción MCL Valor predeterminado en el inicio del pro­
movimientos de la cinemática metro grama MCL
MCL
Factor de velocidad LREAL v setPtpDyn "<TO_Kinematics>.DynamicDefaults.MoveDi­
(Página 213) rect.VelocityFactor"
Factor de aceleración LREAL a "<TO_Kinematics>.DynamicDefaults.MoveDi­
rect.AccelerationFactor"
Factor de deceleración LREAL d "<TO_Kinematics>.DynamicDefaults.MoveDi­
rect.DecelerationFactor"
Factor de tirón LREAL j "<TO_Kinematics>.DynamicDefaults.MoveDi­
rect.JerkFactor"
Espacio de la posición de desti­ DWORD lc setLc (Página 16#FFFF_FFFF (conservar el estado actual del
no de la articulación 244) enlace)
Rango de posición de la articula­ DINT tj1 setTurnJoint 0 (recorrido más corto)
ción 1 (Página 238)
Rango de posición de la articula­ DINT tj2 0 (recorrido más corto)
ción 2
Rango de posición de la articula­ DINT tj3 0 (recorrido más corto)
ción 3
Rango de posición de la articula­ DINT tj4 0 (recorrido más corto)
ción 4
Rango de posición de la articula­ DINT tj5 0 (recorrido más corto)
ción 5
Rango de posición de destino de DINT tj6 0 (recorrido más corto)
la articulación 6

Sistema de coordenadas

Valor dinámico modal para Tipo de datos Pará­ Instrucción MCL Valor predeterminado en el inicio del pro­
movimientos de la cinemática metro grama MCL
MCL
Sistema de coordenadas de refe­ DINT cs setCs (Página 0 (WCS)
rencia 255)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


154 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.10 Parámetros modales (S7-1500T)

Suavizado de la transición

Valor dinámico modal para Tipo de datos Pará­ Instrucción MCL Valor predeterminado en el inicio del pro­
movimientos de la cinemática metro grama MCL
MCL
Transición del movimiento DINT trans setTrans (Página 0 (añadir movimiento, sin suavizar la transi­
221) ción)
Modo de suavizado de transi­ DINT blend setBlend (Página 2 (suavizado de transición polinomial)
ción 224)
Distancia de suavizado de transi­ LREAL blend­ setBlendDist -1.0 (longitud máxima de suavizado de tran­
ción Dist (Página 227) sición de la cinemática)
Factor de suavizado de transi­ LREAL blend­ setBlendFactor "<TO_Kinematics>.Transition.FactorBlendin­
ción1) Factor (Página 230) gLength"
1) Programable únicamente en las instrucciones set de parámetros modales

Corrección del programa

Valor dinámico modal para Tipo de datos Pará­ Instrucción MCL Valor predeterminado en el inicio del pro­
movimientos de la cinemática metro grama MCL
MCL
Corrección del programa1) LREAL overri­ setOvr (Página "<TO_Kinematics>.Parameter.ProgramOverri­
de 300) de"
1) Programable únicamente en las instrucciones set de parámetros modales

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 155
Crear el programa MCL (S7-1500T)
5.10 Parámetros modales (S7-1500T)

5.10.3 Uso de parámetros modales en programas MCL (S7-1500T)


Los parámetros modales son opcionales para instrucciones MCL.
Si utiliza parámetros modales para movimientos en instrucciones MCL, debe indicar los
parámetros modales con el correspondiente identificador de parámetro y operador de
asignación delante de su valor. Si un parámetro modal se indica directamente en la
instrucción MCL para el movimiento, el valor modal existente del parámetro modal no se
sobrescribe.
Solamente se ejecuta la instrucción MCL con el valor indicado en la que se ha indicado el
parámetro modal.

Ejemplo de uso de una instrucción con parámetros de dinámica modales


En el siguiente ejemplo se indican parámetros de dinámica modales (a, d, j) con la instrucción
"setDyn()". La velocidad de la cinemática (v) se indica en la instrucción de movimiento
"linAbs()". La cinemática se mueve con los valores de estos parámetros de dinámica si estos
valores se encuentran por debajo de los límites indicados con "setDynMax()".
Si en la instrucción no se especifica ningún parámetro modal, se utiliza el último valor
definido por la instrucción MCL específica.
MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
END_VAR

// set max. values for dynamic


setDynMax( v := 100.0, a := 10000.0, d := 10000.0, j := 10000.0 );

// set dynamic parameters modally


setDyn( a := 2000.0, d := 3000.0, j := 10000.0 );

// linear movement of Kinematics to Pos1 with modal parameters (a, d, j),


// specified with "setDyn()" and velocity specified in "linAbs()"
linAbs( Pos1, v := 50.0 );

END_PROGRAM

Ejemplos del preajuste de parámetros de dinámica modales con una instrucción especial
En el siguiente ejemplo se utiliza la instrucción "linAbs()" sin indicar parámetros de dinámica
modales (solo se indica el parámetro necesario "Pos1"). Los parámetros de dinámica modales
se establecen con la instrucción MCL especial "setDyn()" delante de la instrucción
MCL "linAbs()".
La cinemática se mueve con los valores ajustados en "setDyn()".
MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
END_VAR

// set dynamic parameters modally


setDyn( v := 10.0, a := 2000.0, d := 3000.0, j := 10000.0 );
// linear movement of Kinematics to Pos1 with modal parameters set
// by instruction "setDyn()" before instruction "linAbs()"
linAbs( Pos1 );

END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


156 Manual de funciones, 11/2023, A5E53131983-AA
Crear el programa MCL (S7-1500T)
5.10 Parámetros modales (S7-1500T)

Si en la instrucción MCL no se indica ningún parámetro modal y no se ha utilizado ninguna


instrucción especial para cambiarlo antes de la llamada, se utiliza el valor predeterminado
como valor de este parámetro modal.

Ejemplo de uso de valores iniciales para parámetros de dinámica modales


En el siguiente ejemplo se utiliza la instrucción "linAbs()" sin indicar los parámetros de
dinámica modales (solo se indica el parámetro necesario "Pos1").
Delante de esta orden MCL no se utiliza ninguna orden MCL especial que pueda cambiar el
valor del parámetro de dinámica modal. Si, p. ej., el valor inicial de velocidad para la
cinemática es 10.0 ("<TO_Kinematics>.DynamicDefaults.Path.Velocity" = 10.0), la cinemática
se mueve con este valor de velocidad ("v" = 10.0).
MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
END_VAR
// movement of Kinematics to Pos1 with initial values of modal parameters
linAbs( Pos1 );

END_PROGRAM

Consulte
también
Parámetros modales para instrucciones de eje individual (Página 152)
Parámetros modales para movimientos de la cinemática (Página 152)

5.10.4 Valores límite de parámetros de dinámica modales (S7-1500T)


Los valores límite de los parámetros de dinámica modales son parámetros modales. Se
inicializan con el inicio del programa MCL y pueden ajustarse con las siguientes instrucciones
MCL especiales:
• setAxisDynMax()
• setDynMax()
• setOriDynMax()

Encontrará más información en los capítulos "Parámetros modales para instrucciones de eje
individual (Página 152)" y "Parámetros modales para movimientos de la cinemática (Página
152)".
Los valores de los parámetros de dinámica en el programa MCL están limitados a los valores
más pequeños entre los siguientes:
• Valor del bloque de datos de objeto tecnológico:
– Objeto tecnológico Cinemática "<TO_Kinematics>.DynamicLimits.*"
– Objeto tecnológico Eje "<TO_Axis>.DynamicLimits.*"
• Valor modal del parámetro de dinámica modal establecido con una orden MCL especial.
• Valor del parámetro de dinámica modal que se indica en la orden MCL para el movimiento
del objeto tecnológico.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 157
Crear el programa MCL (S7-1500T)
5.10 Parámetros modales (S7-1500T)

Ejemplos de limitación de parámetros de dinámica modales


Los siguientes ejemplos muestran la limitación de la velocidad para el movimiento lineal de la
cinemática sobre la base del valor de la siguiente variable en el bloque de datos del objeto
tecnológico:
• "<TO_Kinematics>.DynamicLimits.Path.Velocity" = 100.0 mm/s.
El ajuste de velocidad de 100 mm/s tiene efecto en el bloque de datos del objeto tecnológico
y se aplica durante la carga como valor máximo para movimientos de trayectoria en el
programa MCL. El ajuste a 120,0 mm/s en "setDynMax()" o a 110,0 mm/s en "linAbs()" no
produce un cambio, pues sigue siendo efectivo el valor más pequeño del bloque de datos del
objeto tecnológico.
La velocidad resultante es de 100 mm/s.

MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
END_VAR
setDynMax( v := 120.0 ); // set limit for velocity
linAbs( Pos1, v := 110.0 ); // linear movement with v = 100.0 mm/s

END_PROGRAM
El siguiente ejemplo muestra la limitación de la velocidad para el movimiento lineal de la
cinemática sobre la base del valor que se ajusta con una instrucción MCL especial
("setDynMax()").
La velocidad resultante es de 70.0 mm/s.

MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
END_VAR
setDynMax( v := 70.0 ); // set limit for velocity
linAbs( Pos1, v := 110.0 ); // linear movement with v = 70.0 mm/s

END_PROGRAM

El siguiente ejemplo muestra la limitación de la velocidad para el movimiento lineal de la


cinemática sobre la base del valor que se indica en la orden MCL para el movimiento lineal
("linAbs()").
La velocidad resultante es de 55.0 mm/s.

MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
END_VAR
setDynMax( v := 70.0 ); // set limit for velocity
linAbs( Pos1, v := 55.0 ); // linear movement with v = 55.0 mm/s

END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


158 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T) 6
6.1 Movimientos de la cinemática (S7-1500T)

6.1.1 linAbs(): Posicionar la cinemática de forma absoluta con movimiento de


trayectoria lineal (S7-1500T)

Descripción
Con la instrucción MCL "linAbs()" se desplaza una cinemática hasta una posición absoluta con
un movimiento lineal.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la posición de destino absoluta (dependiendo de la cinemática, esto significa una
especificación cartesiana de la posición de destino (x, y, z) y una orientación en el espacio
(A, B, C)).
• Definir la dinámica
• Definir la transición del movimiento
• Definir el modo de suavizado de transición
La instrucción MCL "linAbs()" finaliza cuando la cinemática alcanza la posición final absoluta o
cuando comienza el suavizado de la transición con la siguiente orden. Se permite el inicio
síncrono de esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 159
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Sintaxis
MCL
linAbs( <pos> [,v := <value>] [,a := <value>] [,d := <value>] [,j := <value>]
[,trans := <value>] [,blend := <value>] [,blendDist := <value>] [,cs := <value>]
[,oDirA := <value>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "linAbs()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
pos TO_Struct_Ipr_Position - Posición de destino absoluta en el sistema de coordenadas de referen­
cia predeterminado
x LREAL 0.0 Coordenada x
y LREAL 0.0 Coordenada y
z LREAL 0.0 Coordenada z
A LREAL 0.0 Coordenada A
B LREAL 0.0 Coordenada B1)
C LREAL 0.0 Coordenada C1)
v LREAL - Velocidad2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Velocity".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
a LREAL - Aceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Acceleration".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
d LREAL - Deceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Deceleration".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
j LREAL - Tirón2)
1) Solo es relevante con más de 4 ejes de cinemática interpolantes.
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


160 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
j LREAL - - Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Jerk".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
= 0.0 Sin limitación de tirón
< 0.0 No admisible
trans DINT - Transición de movimiento a la siguiente orden2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro valor de
forma modal.
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de ambas ór­
denes
2 Suavizar la transición con la mayor velocidad de ambas ór­
denes
blend DINT - Modo de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"blend" tiene preajustado el valor "2".
Con setBlend() (Página 224) se puede ajustar otro valor de
forma modal.
0 Suavizar la transición en la dinámica de la trayectoria (sua­
vizado directo)
1 Reservado
2 Suavizado de transición geométrico con trayectoria polinó­
mica
blend­ LREAL - Distancia de suavizado de transición2)
Dist
- Se utiliza el valor modal. De forma estándar, el parámetro
"blendDist" tiene preajustado el valor "-1.0".
Con setBlendDist() (Página 227) se puede ajustar otro valor
de forma modal.
≥ 0.0 Se utiliza el valor especificado
< 0.0 Se utiliza la máxima distancia posible de suavizado de tran­
sición
cs DINT - Sistema de coordenadas de referencia2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"cs" tiene preajustado el valor "0".
Con setCs() (Página 255) se puede ajustar otro valor de for­
ma modal.
0 Sistema de coordenadas universal (WCS)
1 Sistema de coordenadas del objeto 1 (OCS 1)
1) Solo es relevante con más de 4 ejes de cinemática interpolantes.
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 161
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
cs DINT - 2 Sistema de coordenadas del objeto 2 (OCS 2)
3 Sistema de coordenadas del objeto 2 (OCS 3)
oDirA DINT - Sentido de movimiento de la orientación cartesiana A2).
Solo relevante con hasta 4 ejes de cinemática interpolantes.
- Se utiliza el valor modal. De forma estándar, el parámetro
"oDirA" tiene preajustado el valor "3".
Con setOriDirA() (Página 236) se puede ajustar otro valor
de forma modal.
1 Sentido positivo
2 Sentido negativo
3 Recorrido más corto
Si la orientación de destino puede alcanzarse mediante dos
trayectorias de igual longitud, el movimiento se realiza en
sentido positivo.
1) Solo es relevante con más de 4 ejes de cinemática interpolantes.
2) Parámetro modal

Instrucciones de Motion Control comparables


• "MC_MoveLinearAbsolute": Posicionamiento de la cinemática con movimiento de
trayectoria lineal

Ejemplo: Posicionamiento de la cinemática con movimiento de trayectoria lineal


En el siguiente ejemplo, una cinemática debe alcanzar tres posiciones.
La cinemática debe desplazarse, partiendo de la parada, desde Pos1 hasta Pos2 y detenerse
en Pos2 (A1).
Desde Pos2, la cinemática debe desplazarse, con la distancia de suavizado de transición
"blendingDist", hasta Pos3 (A2) y desde allí hasta Pos4 (A3).
1PT " 1PT
"

1PT 1PT
[ "

Z Y

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


162 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
VAR
Pos2, Pos3, Pos4 : TO_Struct_Ipr_Position;
blendingDist : LREAL;
END_VAR
// A1 - Exact stop in Pos2
linAbs( Pos2, trans := 0, cs := 0 );
// A2 - Blending high velocity in Pos3
linAbs( Pos3, trans := 2, blend := 2, blendDist := blendingDist, cs := 0 );
// A3 - Exact stop in Pos4
linAbs( Pos4, trans := 0, cs := 0 );

Consulte
también
Tipo de datos TO_Struct_Ipr_Position (Página 60)

6.1.2 linRel(): Posicionar la cinemática de forma relativa con movimiento de


trayectoria lineal (S7-1500T)

Descripción
Con la instrucción MCL "linRel()" se desplaza una cinemática con un movimiento lineal
respecto de la posición que tenía al iniciar el procesamiento de la orden.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la posición de destino relativa (dependiendo de la cinemática, esto significa una
especificación cartesiana de la posición de destino (x, y, z) y una orientación en el espacio
(A, B, C)).
• Definir la dinámica
• Definir la transición del movimiento
• Definir el modo de suavizado de transición
La instrucción MCL "linRel()" finaliza cuando la cinemática alcanza la posición final relativa o
cuando comienza el suavizado de la transición con la siguiente orden. Se permite el inicio
síncrono de esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 163
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

Sintaxis
MCL
linRel( <pos> [,v := <value>] [,a := <value>] [,d := <value>] [,j := <value>]
[,trans := <value>] [,blend := <value>] [,blendDist := <value>] [,cs := <value>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "linRel()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
pos TO_Struct_Ipr_Position - Posición de destino relativa en el sistema de coordenadas de referen­
cia predeterminado
x LREAL 0.0 Coordenada x
y LREAL 0.0 Coordenada y
z LREAL 0.0 Coordenada z
A LREAL 0.0 Coordenada A
B LREAL 0.0 Coordenada B1)
C LREAL 0.0 Coordenada C1)
v LREAL - Velocidad2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Velocity".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
a LREAL - Aceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Acceleration".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


164 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
a LREAL - > 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
d LREAL - Deceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Deceleration".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
j LREAL - Tirón2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Jerk".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado.
= 0.0 Sin limitación de tirón
< 0.0 No admisible
trans DINT - Transición de movimiento a la siguiente orden2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro valor de
forma modal.
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de ambas ór­
denes
2 Suavizar la transición con la mayor velocidad de ambas ór­
denes
blend DINT - Modo de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"blend" tiene preajustado el valor "2".
Con setBlend() (Página 224) se puede ajustar otro valor de
forma modal.
0 Suavizar la transición en la dinámica de la trayectoria (sua­
vizado directo)
1 Reservado
2 Suavizado de transición geométrico con trayectoria polinó­
mica
blendDist LREAL - Distancia de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"blendDist" tiene preajustado el valor "-1.0".
Con setBlendDist() (Página 227) se puede ajustar otro va­
lor de forma modal.
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 165
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
blendDist LREAL - ≥ 0.0 Se utiliza el valor especificado
< 0.0 Se utiliza la máxima distancia posible de suavizado de
transición
cs DINT - Sistema de coordenadas de referencia2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"cs" tiene preajustado el valor "0".
Con setCs() (Página 255) se puede ajustar otro valor de
forma modal.
0 Sistema de coordenadas universal (WCS)
1 Sistema de coordenadas del objeto 1 (OCS 1)
2 Sistema de coordenadas del objeto 2 (OCS 2)
3 Sistema de coordenadas del objeto 2 (OCS 3)
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal

Instrucciones de Motion Control comparables


• "MC_MoveLinearRelative": Posicionar la cinemática de forma relativa con movimiento de
trayectoria lineal

Ejemplo: Posicionar la cinemática de forma relativa con movimiento de trayectoria lineal


En el siguiente ejemplo, una cinemática debe desplazarse de forma relativa desde la posición
inicial Pos1.
La cinemática debe desplazarse, partiendo de la parada, el valor de Dist2 desde Pos1 hasta
Pos2 y detenerse en Pos2 (A1).
Desde Pos2, la cinemática debe desplazarse, con la distancia de suavizado de transición
"blendingDist", el valor de Dist3 hasta Pos3 (A2) y desde allí el valor de Dist4 hasta Pos4 (A3).
1PT " 1PT
"

1PT 1PT
[ "

Z Y

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


166 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
VAR
Pos2, Pos3, Pos4 : TO_Struct_Ipr_Position;
blendingDist : LREAL;
END_VAR
// A1 - Exact stop in position 2 with coordinate Pos2 relative to position 1
linRel( Pos2, trans := 0, cs := 0 );
// A2 - Blending high velocity in position 3 with coordinate Pos3 relative to position 2
linRel( Pos3, trans := 2, blend := 2, blendDist := blendingDist, cs := 0 );
// A3 - Exact stop in position 4 with coordinate Pos4 relative to position 3
linRel( Pos4, trans := 0, cs := 0 );

6.1.3 circAbs(): Posicionar la cinemática de forma absoluta con movimiento


circular de la trayectoria (S7-1500T)

Descripción
Con la instrucción MCL "circAbs()" se desplaza una cinemática hasta una posición absoluta
con un movimiento circular.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la trayectoria circular:
– Definir la trayectoria circular en el espacio a través de punto intermedio y posición de
destino
– Definir la trayectoria circular en un plano principal a través de centro y ángulo
– Definir la trayectoria circular en un plano principal a través de radio y posición de
destino
• Definir la dinámica
• Definir la transición del movimiento
• Definir el modo de suavizado de transición
La instrucción MCL "circAbs()" finaliza cuando la cinemática alcanza la posición final absoluta
o cuando comienza el suavizado de la transición con la siguiente orden. Se permite el inicio
síncrono de esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 167
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

Sintaxis
MCL
circAbs( <pos> [,auxPos := <val>] [,mode := <val>] [,arc := <val>] [,cr := <val>]
[,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] [,plane := <val>] [,cDir := <val>]
[,oDirA := <val>] [,trans := <val>] [,blend := <val>] [,blendDist := <val>] [,cs := <val>]
);

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "circAbs()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
pos TO_Struct_Ipr_Position - Posición de destino absoluta en el sistema de coordenadas de referen­
cia predeterminado
Si "mode" = 1, la posición de destino solo es relevante para la orienta­
ción
x LREAL 0.0 Coordenada x
y LREAL 0.0 Coordenada y
z LREAL 0.0 Coordenada z
A LREAL 0.0 Coordenada A
B LREAL 0.0 Coordenada B1)
C LREAL 0.0 Coordenada C1)
auxPos TO_Struct_Ipr_Position - Centro absoluto de la trayectoria circular en el sistema de coordena­
das de referencia especificado3) 4), cuando "mode" = 0
Centro absoluto de la trayectoria circular3) 4), si "mode" = 1

No relevante si "mode" = 2

1) Solo es relevante con más de 4 ejes interpolantes.


2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


168 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
x LREAL 0.0 Coordenada x
y LREAL 0.0 Coordenada y
z LREAL 0.0 Coordenada z
A LREAL 0.0 Coordenada A
B LREAL 0.0 Coordenada B1)
C LREAL 0.0 Coordenada C1)
mode DINT 0 Tipo de interpolación3)
0 3D: Definir la trayectoria circular a través de punto inter­
medio y posición de destino
1 2D: Definir la trayectoria circular a través de centro y ángu­
lo
2 2D: Definir la trayectoria circular a través de radio y posi­
ción de destino
arc LREAL 0.0 Ángulo del movimiento circular3)
Solo relevante para "mode" = 1

cr LREAL 0.0 Radio del movimiento circular3)


Solo relevante para "mode" = 2

v LREAL - Velocidad2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Velocity".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
a LREAL - Aceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Acceleration".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
d LREAL - Deceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Deceleration".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 169
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
d LREAL - ≤ 0.0 No admisible
j LREAL - Tirón2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Jerk".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
= 0.0 Sin limitación de tirón
< 0.0 No admisible
plane DINT - Plano principal de la trayectoria circular2)
Solo relevante para "mode" = 1 y "mode" = 2
- Se utiliza el valor modal. De forma estándar, el parámetro
"plane" tiene preajustado el valor "0".
Con setPlane() (Página 234) se puede ajustar otro valor de
forma modal.
0 Plano XZ
1 Plano YZ
2 Plano XY
cDir DINT - Orientación de la trayectoria circular2)
Solo relevante para "mode" = 1 y "mode" = 2
- Se utiliza el valor modal. De forma estándar, el parámetro
"cDir" tiene preajustado el valor "0".
Con setCircDir() (Página 240) se puede ajustar otro valor
de forma modal.
0 Sentido de rotación positivo (para "mode" = 1)
Segmento circular positivo más corto (para "mode" = 2)
1 Sentido de rotación negativo (para "mode" = 1)
Segmento circular negativo más corto (para "mode" = 2)
2 Segmento circular positivo más largo (para "mode" = 2)
3 Segmento circular negativo más largo (para "mode" = 2)
oDirA DINT - Sentido de movimiento de la orientación cartesiana A2).
Solo relevante con hasta 4 ejes de cinemática interpolantes y eje de
orientación con funcionalidad Operación módulo.
- Se utiliza el valor modal. De forma estándar, el parámetro
"oDirA" tiene preajustado el valor "3".
Con setOriDirA() (Página 236) se puede ajustar otro valor
de forma modal.
1 Sentido positivo
2 Sentido negativo
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


170 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
oDirA DINT - 3 Recorrido más corto
Si la orientación de destino puede alcanzarse mediante
dos trayectorias de igual longitud, el movimiento se realiza
en sentido positivo.
trans DINT - Transición de movimiento a la siguiente orden2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro valor de
forma modal.
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de ambas ór­
denes
2 Suavizar la transición con la mayor velocidad de ambas ór­
denes
blend DINT - Modo de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"blend" tiene preajustado el valor "2".
Con setBlend() (Página 224) se puede ajustar otro valor de
forma modal.
0 Suavizar la transición en la dinámica de la trayectoria (sua­
vizado directo)
1 Reservado
2 Suavizado de transición geométrico con trayectoria polinó­
mica
blendDist LREAL - Distancia de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"blendDist" tiene preajustado el valor "-1.0".
Con setBlendDist() (Página 227) se puede ajustar otro va­
lor de forma modal.
≥ 0.0 Se utiliza el valor especificado
< 0.0 Se utiliza la máxima distancia posible de suavizado de tran­
sición
cs DINT - Sistema de coordenadas de referencia2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"cs" tiene preajustado el valor "0".
Con setCs() (Página 255) se puede ajustar otro valor de
forma modal.
0 Sistema de coordenadas universal (WCS)
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 171
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
cs DINT - 1 Sistema de coordenadas del objeto 1 (OCS 1)
2 Sistema de coordenadas del objeto 2 (OCS 2)
3 Sistema de coordenadas del objeto 3 (OCS 3)
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

Instrucciones de Motion Control comparables


• "MC_MoveCircularAbsolute": Posicionamiento de la cinemática con movimiento circular de
la trayectoria

Ejemplo: Posicionamiento de la cinemática con movimiento circular de la trayectoria


En el siguiente ejemplo, una cinemática debe alcanzar dos posiciones.
La cinemática debe desplazarse, partiendo de la parada, desde Pos1 (punto final de la orden
precedente) hasta Pos2 y desde allí hasta Pos3 y detenerse en Pos3 (A1).
Desde Pos3, la cinemática debe desplazarse, con un recorrido circular definido y un radio
definido ("circRadius"), y con la orientación del segmento circular negativo más largo ("cDir" =
3), hasta Pos4 (A2).
"
1PT

1PT
1PT
DJSD3BEJVT

1PT
EJVT
DJSD3B

$FOUSPEFMD­SDVMP

"
Z Y

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


172 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
VAR
Pos1, Pos2, Pos3, Pos4 : TO_Struct_Ipr_Position;
circRadius : LREAL;
END_VAR
// A1 – circular movement through Pos2 with defined dynamics, exact stop in Pos3
circAbs( Pos3, auxPos := Pos2, mode := 0, v := 15.0, a := 2000.0, d := 3000.0, j :=
10000.0, trans := 0, cs := 0 );
// A2 - circular movement to Pos4 with defined radius and longer negative circle segment
// the modal values of dynamics will be used
circAbs( Pos4, mode := 2, cr := circRadius, plane := 0, cDir := 3, trans := 0, cs := 0 );

6.1.4 circRel(): Posicionamiento relativo de la cinemática con movimiento circular


de la trayectoria (S7-1500T)

Descripción
Con la instrucción MCL "circRel()" se desplaza una cinemática con un movimiento circular
respecto a la posición que tenía al iniciar el procesamiento de la orden.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la trayectoria circular:
– Definir la trayectoria circular en el espacio a través de punto intermedio y posición de
destino
– Definir la trayectoria circular en un plano principal a través de centro y ángulo
– Definir la trayectoria circular en un plano principal a través de radio y posición de
destino
• Definir la dinámica
• Definir la transición del movimiento
• Definir el modo de suavizado de transición
La instrucción MCL "circRel()" finaliza cuando la cinemática alcanza la posición final relativa o
cuando comienza el suavizado de la transición con la siguiente orden. Se permite el inicio
síncrono de esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 173
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

Sintaxis
MCL
circRel( <pos> [,auxPos := <val>] [,mode := <val>] [,arc := <val>] [,cr := <val>]
[,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] [,plane := <val>]
[,cDir := <val>] [,trans := <val>] [,blend := <val>] [,blendDist := <val>] [,cs := <val>]
);

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "circRel()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
pos TO_Struct_Ipr_Position - Posición de destino relativa a la posición inicial en el sistema de coor­
denadas de referencia predeterminado
Si "mode" = 1, la posición de destino solo es relevante para la orienta­
ción
x LREAL 0.0 Coordenada x
y LREAL 0.0 Coordenada y
z LREAL 0.0 Coordenada z
A LREAL 0.0 Coordenada A
B LREAL 0.0 Coordenada B1)
C LREAL 0.0 Coordenada C1)
auxPos TO_Struct_Ipr_Position - Punto intermedio de la trayectoria circular relativo a la posición
inicial3) 4), cuando "mode" = 0
Centro de la trayectoria circular referido a la posición inicial3) 4), cuan­
do "mode" = 1

No relevante si "mode" = 2

1) Solo es relevante con más de 4 ejes interpolantes.


2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


174 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
x LREAL 0.0 Coordenada x
y LREAL 0.0 Coordenada y
z LREAL 0.0 Coordenada z
A LREAL 0.0 Coordenada A
B LREAL 0.0 Coordenada B1)
C LREAL 0.0 Coordenada C1)
mode DINT 0 Tipo de interpolación3)
0 3D: Definir la trayectoria circular a través de punto inter­
medio y posición de destino
1 2D: Definir la trayectoria circular a través de centro y án­
gulo
2 2D: Definir la trayectoria circular a través de radio y posi­
ción de destino
arc LREAL 0.0 Ángulo del movimiento circular3)
Solo relevante para "mode" = 1

cr LREAL 0.0 Radio del movimiento circular3)


Solo relevante para "mode" = 2

v LREAL - Velocidad2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Velocity".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
a LREAL - Aceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Acceleration".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
d LREAL - Deceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Deceleration".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 175
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
d LREAL - ≤ 0.0 No admisible
j LREAL - Tirón2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Kinematics>.DynamicDefaults.Path.Jerk".
Con setDyn() (Página 207) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
= 0.0 Sin limitación de tirón
< 0.0 No admisible
plane DINT - Plano principal de la trayectoria circular2)
Solo relevante para "mode" = 1 y "mode" = 2
- Se utiliza el valor modal. De forma estándar, el parámetro
"plane" tiene preajustado el valor "0".
Con setPlane() (Página 234) se puede ajustar otro valor de
forma modal.
0 Plano XZ
1 Plano YZ
2 Plano XY
cDir DINT - Orientación de la trayectoria circular2)
Solo relevante para "mode" = 1 y "mode" = 2
- Se utiliza el valor modal. De forma estándar, el parámetro
"cDir" tiene preajustado el valor "0".
Con setCircDir() (Página 240) se puede ajustar otro valor
de forma modal.
0 Sentido de rotación positivo (para "mode" = 1)
Segmento circular positivo más corto (para "mode" = 2)
1 Sentido de rotación negativo (para "mode" = 1)
Segmento circular negativo más corto (para "mode" = 2)
2 Segmento circular positivo más largo (para "mode" = 2)
3 Segmento circular negativo más largo (para "mode" = 2)
trans DINT - Transición de movimiento a la siguiente orden2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro valor de
forma modal.
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de ambas ór­
denes
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


176 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
trans DINT - 2 Suavizar la transición con la mayor velocidad de ambas ór­
denes
blend DINT - Modo de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"blend" tiene preajustado el valor "2".
Con setBlend() (Página 224) se puede ajustar otro valor de
forma modal.
0 Suavizar la transición en la dinámica de la trayectoria (sua­
vizado directo)
1 Reservado
2 Suavizado de transición geométrico con trayectoria poli­
nómica
blendDist LREAL - Distancia de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"blendDist" tiene preajustado el valor "-1.0".
Con setBlendDist() (Página 227) se puede ajustar otro va­
lor de forma modal.
≥ 0.0 Se utiliza el valor especificado
< 0.0 Se utiliza la máxima distancia posible de suavizado de
transición
cs DINT - Sistema de coordenadas de referencia2)
- Se utiliza el valor modal. De forma estándar, el parámetro
"cs" tiene preajustado el valor "0".
Con setCs() (Página 255) se puede ajustar otro valor de
forma modal.
0 Sistema de coordenadas universal (WCS)
1 Sistema de coordenadas del objeto 1 (OCS 1)
2 Sistema de coordenadas del objeto 2 (OCS 2)
3 Sistema de coordenadas del objeto 3 (OCS 3)
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado
4) Solo relevante para coordenadas cartesianas; se ignora la orientación.

Instrucciones de Motion Control comparables


• "MC_MoveCircularRelative": Posicionamiento relativo de la cinemática con movimiento
circular de la trayectoria

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 177
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplo: Posicionamiento relativo de la cinemática con movimiento circular de la trayectoria


En el siguiente ejemplo, una cinemática debe alcanzar dos posiciones.
La cinemática debe desplazarse, partiendo de la parada, desde Pos1 (punto final de la orden
precedente) hasta Pos2 y desde allí hasta Pos3 y detenerse en Pos3 (A1). Las coordenadas
para Pos2 y Pos3 son relativas a la posición inicial Pos1.
Desde Pos3, la cinemática debe desplazarse a la posición de destino (A2) definida por el
centro de la trayectoria circular ("centerPoint" relativo a Pos3) y el ángulo del movimiento
circular ("circAngle") con la orientación positiva más corta del segmento circular ("cDir" = 0).
"
1PT

"
1PTJDJ³OEFEFTUJOP

1PT DJSD"OHMF

DFOUFS1PJOU

Z Y

MCL
VAR
Pos1, Pos2, Pos3, centerPoint : TO_Struct_Ipr_Position;
circAngle : LREAL;
END_VAR
// A1 – circular movement through Pos2 with defined dynamics, exact stop in Pos3
circRel( Pos3, auxPos := Pos2, mode := 0, trans := 0, cs := 0 );

//A2 - circular movement to the target position, defined by circle center point and angle

// the modal values of dynamics will be used


circRel( (A := 0.0, B := 0.0, C := 0.0), auxPos := centerPoint, mode := 1, arc :=
circAngle,
cDir := 0, trans := 0, cs := 0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


178 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.5 ptpAbs(): Desplazar la cinemática a coordenadas de destino cartesianas


absolutas con movimiento sPTP (S7-1500T)

Descripción
La instrucción MCL "ptpAbs()" desplaza una cinemática hasta posiciones absolutas en un
movimiento "punto a punto" síncrono (movimiento sPTP). Al hacerlo, todos los ejes de la
cinemática se mueven al mismo tiempo. Los ejes inician simultáneamente el movimiento de
desplazamiento y alcanzan la posición de destino al mismo tiempo.
La evolución del movimiento del punto de operación de la herramienta (TCP) resulta de los
valores de dinámica de los ejes. El eje de la cinemática con el tiempo de desplazamiento más
largo determina el tiempo de desplazamiento del movimiento sPTP y, con ello, el tiempo de
desplazamiento de los demás ejes de la cinemática. La posición del TCP resulta de las
posiciones de los ejes de la cinemática.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la posición de destino absoluta (dependiendo de la cinemática, esto significa una
especificación cartesiana de la posición de destino (x, y, z) y una orientación en el espacio
(A, B, C)).
• Definir la dinámica
• Definir la transición del movimiento
• Definir la distancia de suavizado de transición
La instrucción MCL "ptpAbs()" finaliza cuando la cinemática alcanza la posición final absoluta
o cuando comienza el suavizado de transición con la orden. Se permite el inicio síncrono de
esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 179
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Sintaxis
MCL
ptpAbs( <pos> [,posMode := <val>] [,lc := <val>] [,cs := <val>] [,v := <val>]
[,a := <val>] [,d := <val>] [,j := <val>] [,trans := <val>] [,blendDist := <val>]
[,oDirA := <val>] [,tj1 := <val>] [,tj2 := <val>] [,tj3 := <val>] [,tj4 := <val>]
[,tj5 := <val>] [,tj6 := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "ptpAbs()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
pos TO_Struct_Ipr_Position - Posición de destino cartesiana absoluta en el sistema de coordenadas
de referencia indicado ("posMode" = 1).
Posición de destino cartesiana absoluta y orientación cartesiana relati­
va ("posMode" = 2)
x LREAL 0.0 Coordenada x
y LREAL 0.0 Coordenada y
z LREAL 0.0 Coordenada z
A LREAL 0.0 Coordenada A
B LREAL 0.0 Coordenada B1)
C LREAL 0.0 Coordenada C1)
posMode DINT 1 Tipo de orientación A para posición de destino cartesiana absoluta
("pos")3)
1 Posición de destino cartesiana absoluta y orienta­
ción cartesiana absoluta A
2 Posición de destino cartesiana absoluta y orienta­
ción cartesiana relativa A
Solo relevante para tipos de cinemática con orientación A.
Con más de 4 ejes de cinemática interpolantes: Irrelevante
lc DWORD - Espacio de posición de destino de la articulación2)
El espacio de posición de la articulación depende del tipo de cinemáti­
ca.
- Se utiliza el valor modal. De forma estándar, el
parámetro "lc" tiene preajustado el valor
"16#FFFF_FFFF".
Con setLc() (Página 244) se puede ajustar otro
valor de forma modal.
16#0000_0000 El valor indicado se interpreta como campo de
≤ lc < bits. El significado de los bits depende del tipo de
16#FFFF_FFFF cinemática. 6 ejes ($A1, $A2, $A3, $A4, $A5,
$A6) corresponden a los 6 primeros bits (bit 0 ...
bit 5). Los demás bits se ignoran.
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


180 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
lc DWORD - 16#FFFF_FFFF Conservar el espacio de posición actual de la arti­
culación
cs DINT - Sistema de coordenadas de referencia2)
- Se utiliza el valor modal. De forma estándar, el
parámetro "cs" tiene preajustado el valor "0".
Con setCs() (Página 255) se puede ajustar otro
valor de forma modal.
0 Sistema de coordenadas universal (WCS)
1 Sistema de coordenadas del objeto 1 (OCS 1)
2 Sistema de coordenadas del objeto 2 (OCS 2)
3 Sistema de coordenadas del objeto 2 (OCS 3)
v LREAL - Factor porcentual para la velocidad de los movimientos de ejes con
respecto a la velocidad máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxVelocity")2).
- Se utiliza el valor modal. El valor modal se inicia­
liza con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.
VelocityFactor".
Con setPtpDyn() (Página 213) se puede ajustar
otro valor de forma modal.
1.0 ≤ v ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
< 1.0 No admisible
a LREAL - Factor porcentual para la aceleración de los movimientos de ejes con
respecto a la aceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxAcceleration")2).
- Se utiliza el valor modal. El valor modal se inicia­
liza con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.
AccelerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar
otro valor de forma modal.
0.0 < a ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
d LREAL - Factor porcentual para la deceleración de los movimientos de ejes con
respecto a la deceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxDeceleration")2).
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 181
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
d LREAL - - Se utiliza el valor modal. El valor modal se inicia­
liza con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.
DecelerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar
otro valor de forma modal.
0.0 < d ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
j LREAL - Factor porcentual para el tirón de los movimientos de ejes con respec­
to al tirón máximo de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxJerk")2).
- Se utiliza el valor modal. El valor modal se inicia­
liza con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.
JerkFactor".
Con setPtpDyn() (Página 213) se puede ajustar
otro valor de forma modal.
10.0 ≤ j ≤ 90.0 Se utiliza el valor indicado.
= 0.0 Sin limitación de tirón
< 10.0 (excepto No admisible
0.0)
> 90.0 No admisible
trans DINT - Transición de movimiento a la siguiente orden2)
- Se utiliza el valor modal. De forma estándar, el
parámetro "trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar
otro valor de forma modal.
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de
ambas órdenes
2 Suavizar la transición con la mayor velocidad de
ambas órdenes
Si "trans" = 1 o "trans" = 2: siempre suavizado de transición polinomial
entre movimientos sPTP y de trayectoria
blendDist LREAL - Distancia de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el
parámetro "blendDist" tiene preajustado el valor
"-1.0".
Con setBlendDist() (Página 227) se puede ajus­
tar otro valor de forma modal.
≥ 0.0 Se utiliza el valor especificado
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


182 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
blendDist LREAL - < 0.0 Se utiliza la máxima distancia posible de suavi­
zado de transición
oDirA DINT - Sentido de movimiento de la orientación cartesiana A2).
Solo relevante con:
- hasta 4 ejes de cinemática interpolantes
- "posMode" = 1
- tipos de cinemática con orientación A y funcionalidad de módulo ac­
tivada
- Se utiliza el valor modal. De forma estándar, el
parámetro "oDirA" tiene preajustado el valor "3".
Con setOriDirA() (Página 236) se puede ajustar
otro valor de forma modal.
1 Sentido positivo
2 Sentido negativo
3 Recorrido más corto
Si la orientación de destino puede alcanzarse con
dos trayectorias de igual longitud, el movimiento
se realiza en sentido positivo.
tj1,...,tj6 DINT - Rango de posición de destino de la articulación J1, ..., J62)
Solo relevante para cinemáticas cuyo sistema de coordenadas de la ar­
ticulación soporte rangos de posición de destino de la articulación.
- Se utiliza el valor modal. De forma estándar, los
parámetros "tj1", ..., "tj6" tienen preajustado el
valor "0".
Con setTurnJoint() (Página 238) se puede ajustar
otro valor de forma modal.
m -180o + m * 360o ≤ posición < 180o + m * 360o
(m < 0)
… …
-2 -900o ≤ posición < -540o
-1 -540o ≤ posición < -180o
0 Recorrido más corto
1 -180o ≤ posición < 180o
2 180° ≤ posición < 540°
3 540° ≤ posición < 900°
… …
n -180o + (n - 1) * 360o ≤ posición < 180o + (n - 1)
(n > 0) * 360o
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal
3) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 183
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Instrucciones de Motion Control comparables


• "MC_MoveDirectAbsolute": Desplazamiento absoluto de la cinemática con movimiento
síncrono "punto a punto"

Ejemplo: Posicionar la cinemática en coordenadas de destino cartesianas absolutas con


movimiento sPTP
En el siguiente ejemplo, una cinemática debe alcanzar dos posiciones absolutas.
La cinemática debe desplazarse, partiendo de la parada, desde Pos1 (punto final del comando
precedente) pasando por Pos2 (A1), con suavizado de transición, a alta velocidad ("trans" = 2)
y utilizando la distancia de suavizado de transición ("blendDist" = d), hasta Pos3 (A2).
1PT


" 

&#

" 4 #

1PT 1PT
E

SB Inicio del segmento de suavizado de transición


EB Fin del segmento de suavizado de transición

MCL
VAR
Pos2, Pos3 : TO_Struct_Ipr_Position;
d : LREAL;
END_VAR

// A1 – sPTP movement with blending with high velocity through Pos2


// max. sPTP dynamics without jerk limitation and coord. system WCS
ptpAbs( Pos2, cs := 0, v := 100.0, a := 100.0, d := 100.0,
j := 0.0, trans := 2, blendDist := d );

// A2 – sPTP movement to Pos3, without blending and modal dynamics


ptpAbs( Pos3, cs := 0, trans := 0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


184 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.6 ptpRel(): Desplazar la cinemática a coordenadas de destino cartesianas


relativas con movimiento sPTP (S7-1500T)

Descripción
La instrucción MCL "ptpRel()" desplaza una cinemática hasta posiciones relativas en un
movimiento "punto a punto" síncrono (movimiento sPTP). Al hacerlo, todos los ejes de la
cinemática se mueven al mismo tiempo. Los ejes inician simultáneamente el movimiento de
desplazamiento y alcanzan la posición de destino al mismo tiempo.
La evolución del movimiento del punto de operación de la herramienta (TCP) resulta de los
valores de dinámica de los ejes. El eje de la cinemática con el tiempo de desplazamiento más
largo determina el tiempo de desplazamiento del movimiento sPTP y, con ello, el tiempo de
desplazamiento de los demás ejes de la cinemática. La posición del TCP resulta de las
posiciones de los ejes de la cinemática.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la posición de destino relativa (dependiendo de la cinemática, esto significa una
especificación cartesiana de la posición de destino (x, y, z) y una orientación en el espacio
(A, B, C)).
• Definir la dinámica
• Definir la transición del movimiento
• Definir la distancia de suavizado de transición
La instrucción MCL "ptpRel()" finaliza cuando la cinemática alcanza la posición final relativa o
cuando comienza el suavizado de transición con la orden. Se permite el inicio síncrono de
esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 185
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Sintaxis
MCL
ptpRel( <pos> [,lc := <val>] [,cs := <val>] [,v := <val>] [,a := <val>] [,d := <val>]
[,j := <val>] [,trans := <val>] [,blendDist := <val>] [,tj1 := <val>] [,tj2 := <val>]
[,tj3 := <val>] [,tj4 := <val>] [,tj5 := <val>] [,tj6 := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "ptpRel()":
Parámetro Tipo de datos Valor pre­ Descripción
determina­
do
pos TO_Struct_Ipr_Position - Posición de destino cartesiana relativa en el sistema de coordenadas de
referencia indicado
x LREAL 0.0 Coordenada x
y LREAL 0.0 Coordenada y
z LREAL 0.0 Coordenada z
A LREAL 0.0 Coordenada A
B LREAL 0.0 Coordenada B1)
C LREAL 0.0 Coordenada C1)
lc DWORD - Espacio de posición de destino de la articulación2)
El espacio de posición de la articulación depende del tipo de cinemáti­
ca.
- Se utiliza el valor modal. De forma estándar, el pa­
rámetro "lc" tiene preajustado el valor
"16#FFFF_FFFF".
Con setLc() (Página 244) se puede ajustar otro va­
lor de forma modal.
16#0000_0000 El valor indicado se interpreta como campo de
≤ lc < bits. El significado de los bits depende del tipo de
16#FFFF_FFFF cinemática. 6 ejes ($A1, $A2, $A3, $A4, $A5, $A6)
corresponden a los 6 primeros bits (bit 0 ... bit 5).
Los demás bits se ignoran.
16#FFFF_FFFF Conservar el espacio de posición actual de la arti­
culación
cs DINT - Sistema de coordenadas de referencia2)
- Se utiliza el valor modal. De forma estándar, el pa­
rámetro "cs" tiene preajustado el valor "0".
Con setCs() (Página 255) se puede ajustar otro va­
lor de forma modal.
1 Sistema de coordenadas del objeto 1 (OCS 1)
2 Sistema de coordenadas del objeto 2 (OCS 2)
3 Sistema de coordenadas del objeto 2 (OCS 3)
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


186 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determina­
do
v LREAL - Factor porcentual para la velocidad de los movimientos de ejes con res­
pecto a la velocidad máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxVelocity")2).
- Se utiliza el valor modal. El valor modal se iniciali­
za con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.V­
elocityFactor".
Con setPtpDyn() (Página 213) se puede ajustar
otro valor de forma modal.
1.0 ≤ v ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
< 1.0 No admisible
a LREAL - Factor porcentual para la aceleración de los movimientos de ejes con
respecto a la aceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxAcceleration")2).
- Se utiliza el valor modal. El valor modal se iniciali­
za con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.
AccelerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar
otro valor de forma modal.
0.0 < a ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
d LREAL - Factor porcentual para la deceleración de los movimientos de ejes con
respecto a la deceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxDeceleration")2).
- Se utiliza el valor modal. El valor modal se iniciali­
za con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.
DecelerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar
otro valor de forma modal.
0.0 < d ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
j LREAL - Factor porcentual para el tirón de los movimientos de ejes con respecto
al tirón máximo de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxJerk")2).
- Se utiliza el valor modal. El valor modal se iniciali­
za con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.J­
erkFactor".
Con setPtpDyn() (Página 213) se puede ajustar
otro valor de forma modal.
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 187
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determina­
do
j LREAL - 10.0 ≤ j ≤ 90.0 Se utiliza el valor indicado.
= 0.0 Sin limitación de tirón
< 10.0 (excepto No admisible
0.0)
> 90.0 No admisible
trans DINT - Transición de movimiento a la siguiente orden2)
- Se utiliza el valor modal. De forma estándar, el pa­
rámetro "trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro
valor de forma modal.
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de
ambas órdenes
2 Suavizar la transición con la mayor velocidad de
ambas órdenes
Si "trans" = 1 o "trans" = 2: siempre suavizado de transición polinomial
entre movimientos sPTP y de trayectoria
blendDist LREAL - Distancia de suavizado de transición2)
- Se utiliza el valor modal. De forma estándar, el
parámetro "blendDist" tiene preajustado el valor
"-1.0".
Con setBlendDist() (Página 227) se puede ajus­
tar otro valor de forma modal.
< 0.0 Se utiliza la máxima distancia posible de suavi­
zado de transición
tj1,...,tj6 DINT - Rango de posición de destino de la articulación J1, ..., J62)
Solo relevante para cinemáticas cuyo sistema de coordenadas de la arti­
culación soporte rangos de posición de destino de la articulación.
- Se utiliza el valor modal. De forma estándar, los
parámetros "tj1", ..., "tj6" tienen preajustado el va­
lor "0".
Con setTurnJoint() (Página 238) se puede ajustar
otro valor de forma modal.
m -180o + m * 360o ≤ posición < 180o + m * 360o
(m < 0)
… …
-2 -900o ≤ posición < -540o
-1 -540o ≤ posición < -180o
0 Recorrido más corto
1 -180o ≤ posición < 180o
2 180° ≤ posición < 540°
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


188 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determina­
do
tj1,...,tj6 DINT - 3 540° ≤ posición < 900°
… …
n -180o + (n - 1) * 360o ≤ posición < 180o + (n - 1) *
(n > 0) 360o
1) Solo es relevante con más de 4 ejes interpolantes.
2) Parámetro modal

Instrucciones de Motion Control comparables


• "MC_MoveDirectRelative": Desplazamiento relativo de la cinemática con movimiento
síncrono "punto a punto"

Ejemplo: Posicionar la cinemática en coordenadas de destino cartesianas relativas con


movimiento sPTP
En el siguiente ejemplo, una cinemática debe alcanzar dos posiciones relativas.
La cinemática debe desplazarse, partiendo de la parada, desde Pos1 (punto final del comando
precedente) pasando por Pos2 (A1), con suavizado de transición, a baja velocidad ("trans" =
1) y utilizando la distancia de suavizado de transición ("blendDist" = d) (A1), hasta Pos3
relativa.
1PT

" 

&#

" 4 #

1PT 1PT
E

SB Inicio del segmento de suavizado de transición


EB Fin del segmento de suavizado de transición

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 189
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
VAR
Pos2, Pos3 : TO_Struct_Ipr_Position;
d : LREAL;
END_VAR

// A1 – sPTP movement with blending with low velocity through Pos2 with coordinate Pos2
// relative to Pos1
ptpRel( Pos2, cs := 0, v := 100.0, a := 100.0, d := 100.0, j := 0.0,
trans := 1, blendDist := d );

// A2 – sPTP movement to Pos3 with coordinate Pos3 relative to Pos2


// without blending and modal dynamics
ptpRel( Pos3, cs := 0, trans := 0 );

6.1.7 ptpAxAbs(): Desplazar la cinemática a posiciones absolutas del eje con


movimiento sPTP (S7-1500T)

Descripción
La instrucción MCL "ptpAxAbs()" desplaza una cinemática hasta posiciones de eje absolutas
en el sistema de coordenadas de la máquina en un movimiento "punto a punto" síncrono
(movimiento sPTP). Al hacerlo, todos los ejes de la cinemática se mueven al mismo tiempo.
Los ejes inician simultáneamente el movimiento de desplazamiento y alcanzan la posición de
destino del eje al mismo tiempo.
La evolución del movimiento del punto de operación de la herramienta (TCP) resulta de los
valores de dinámica de los ejes. El eje de la cinemática con el tiempo de desplazamiento más
largo determina el tiempo de desplazamiento del movimiento sPTP y, con ello, el tiempo de
desplazamiento de los demás ejes de la cinemática. La posición del TCP resulta de las
posiciones de los ejes de la cinemática.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la posición de destino absoluta del eje en el sistema de coordenadas de la máquina
• Definir la dinámica
• Definir la transición del movimiento
• Definir la distancia de suavizado de transición
La instrucción MCL "ptpAxAbs()" finaliza cuando la cinemática alcanza la posición final
absoluta o cuando comienza el suavizado de transición con la orden. Se permite el inicio
síncrono
de esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


190 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

Sintaxis
MCL
ptpAxAbs( <axPos> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] [,trans := <val>]
[,blendDist := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "ptpAxAbs()":
Parámetros Tipo de datos Valor pre­ Descripción
determi­
nado
axPos TO_Struct_Ipr_AxPosition - Posición de destino absoluta del eje en el sistema de coordenadas de má­
quina (MCS)
a1 LREAL 0.0 Posición de destino absoluta del eje A1 de la cinemática en el MCS (coor­
denadas de eje)
a2 LREAL 0.0 Posición de destino absoluta del eje A2 de la cinemática en el MCS (coor­
denadas de eje)
a3 LREAL 0.0 Posición de destino absoluta del eje A3 de la cinemática en el MCS (coor­
denadas de eje)
a4 LREAL 0.0 Posición de destino absoluta del eje A4 de la cinemática en el MCS (coor­
denadas de eje)
a5 LREAL 0.0 Posición de destino absoluta del eje A5 de la cinemática en el MCS (coor­
denadas de eje)
a6 LREAL 0.0 Posición de destino absoluta del eje A6 de la cinemática en el MCS (coor­
denadas de eje)
v LREAL - Factor porcentual para la velocidad de los movimientos de ejes con res­
pecto a la velocidad máxima de los ejes en cuestión
(<TO_Axis>.DynamicLimits.MaxVelocity)1).
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 191
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetros Tipo de datos Valor pre­ Descripción


determi­
nado
v LREAL - - Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Ve­
locityFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
1.0 ≤ v ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
< 1.0 No admisible
a LREAL - Factor porcentual para la aceleración de los movimientos de ejes con res­
pecto a la aceleración máxima de los ejes en cuestión
(<TO_Axis>.DynamicLimits.MaxAcceleration)1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Ac­
celerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
0.0 < a ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
d LREAL - Factor porcentual para la deceleración de los movimientos de ejes con
respecto a la deceleración máxima de los ejes en cuestión
(<TO_Axis>.DynamicLimits.MaxDeceleration)1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.De­
celerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
0.0 < d ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
j LREAL - Factor porcentual para el tirón de los movimientos de ejes con respecto al
tirón máximo de los ejes en cuestión
(<TO_Axis>.DynamicLimits.MaxJerk)1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Jerk
Factor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
10.0 ≤ j ≤ 90.0 Se utiliza el valor indicado.
= 0.0 Sin limitación de tirón
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


192 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetros Tipo de datos Valor pre­ Descripción


determi­
nado
j LREAL - < 10.0 No admisible
(excepto 0.0)
> 90.0 No admisible
trans DINT - Transición de movimiento a la siguiente orden1)
- Se utiliza el valor modal. De forma estándar, el pará­
metro "trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro
valor de forma modal.
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de am­
bas órdenes
2 Suavizar la transición con la mayor velocidad de am­
bas órdenes
Si "trans" = 1 o "trans" = 2: siempre suavizado de transición polinomial en­
tre movimientos sPTP y de trayectoria
blendDist LREAL - Distancia de suavizado de transición1)
- Se utiliza el valor modal. De forma estándar, el pa­
rámetro "blendDist" tiene preajustado el valor
"-1.0".
Con setBlendDist() (Página 227) se puede ajustar
otro valor de forma modal.
≥ 0.0 Se utiliza el valor especificado
< 0.0 Se utiliza la máxima distancia posible de suavizado
de transición
1) Parámetro modal

Instrucciones de Motion Control comparables


• "MC_MoveDirectAbsolute": Desplazamiento absoluto de la cinemática con movimiento
síncrono "punto a punto" (si "CoordSystem" = 100)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 193
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplo: Posicionar la cinemática en posiciones de destino absolutas del eje en el sistema de


coordenadas de máquina con movimiento sPTP
En el siguiente ejemplo, una cinemática debe alcanzar tres posiciones de destino absolutas
del eje en el sistema de coordenadas de máquina.
La cinemática debe desplazarse, partiendo de la parada, desde la posición 1 (punto final del
comando precedente) pasando por la posición 2, con suavizado de transición, a alta velocidad
("trans" = 2) y utilizando la distancia de suavizado de transición ("blendDist" = d) (A1), hasta la
posición 3, y desde allí, con suavizado de transición a baja velocidad ("trans" = 1) y utilizando
la distancia de suavizado de transición ("blendDist" = d) (A2), hasta la posición 4 y debe
añadirse el movimiento ("trans" = 0) a dicha posición (A3).

1PT E

E 1PT
" 
"

"

1PT 1PT

MCL
VAR
Pos2, Pos3, Pos4 : TO_Struct_Ipr_AxPosition;
d : LREAL;
END_VAR
// A1 – sPTP movement with blending with high velocity
// through Pos2 (abs. target Pos in MCS)
// with max. sPTP dynamics without jerk limitation
ptpAxAbs( Pos2, v := 100.0, a := 100.0, d := 100.0, j := 0.0, trans := 2, blendDist := d );
// A2 – sPTP movement with blending with low velocity
// through Pos3 (abs. target Pos in MCS)
// with defined sPTP dynamics without jerk limitation
ptpAxAbs( Pos3, v := 75.0, a := 80.0, d := 90.0, j := 0.0, trans := 1, blendDist := d );
// A3 – sPTP movement to Pos4 in machine coordinate system, without blending
ptpAxAbs( Pos4, trans := 0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


194 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.8 ptpAxRel(): Desplazar la cinemática a posiciones relativas del eje con


movimiento sPTP (S7-1500T)

Descripción
La instrucción MCL "ptpAxRel()" desplaza una cinemática hasta una posición de destino
relativa del eje en el sistema de coordenadas de máquina en un movimiento "punto a punto"
síncrono (movimiento sPTP). Al hacerlo, todos los ejes de la cinemática se mueven al mismo
tiempo. Los ejes inician simultáneamente el movimiento de desplazamiento y alcanzan la
posición de destino del eje al mismo tiempo.
La evolución del movimiento del punto de operación de la herramienta (TCP) resulta de los
valores de dinámica de los ejes. El eje de la cinemática con el tiempo de desplazamiento más
largo determina el tiempo de desplazamiento del movimiento sPTP y, con ello, el tiempo de
desplazamiento de los demás ejes de la cinemática. La posición del TCP resulta de las
posiciones de los ejes de la cinemática.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir las posiciones relativas del eje en el sistema de coordenadas de máquina
• Definir la dinámica
• Definir la transición del movimiento
• Definir la distancia de suavizado de transición
La instrucción MCL "ptpAxRel()" finaliza cuando la cinemática alcanza la posición final relativa
o cuando comienza el suavizado de transición con la orden. Se permite el inicio síncrono de
esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 195
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Sintaxis
MCL
ptpAxRel( <axPos> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] [,trans := <val>]
[,blendDist := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "ptpAxRel()":
Parámetro Tipo de datos Valor pre­ Descripción
determi­
nado
axPos TO_Struct_Ipr_AxPosition - Posición de destino relativa del eje en el sistema de coordenadas de má­
quina (MCS)
a1 LREAL 0.0 Posición de destino relativa del eje A1 de la cinemática en el MCS (coorde­
nadas de eje)
a2 LREAL 0.0 Posición de destino relativa del eje A2 de la cinemática en el MCS (coorde­
nadas de eje)
a3 LREAL 0.0 Posición de destino relativa del eje A3 de la cinemática en el MCS (coorde­
nadas de eje)
a4 LREAL 0.0 Posición de destino relativa del eje A4 de la cinemática en el MCS (coorde­
nadas de eje)
a5 LREAL 0.0 Posición de destino relativa del eje A5 de la cinemática en el MCS (coorde­
nadas de eje)
a6 LREAL 0.0 Posición de destino relativa del eje A6 de la cinemática en el MCS (coorde­
nadas de eje)
v LREAL - Factor porcentual para la velocidad de los movimientos de ejes con res­
pecto a la velocidad máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxVelocity")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Ve­
locityFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
1.0 ≤ v ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
< 1.0 No admisible
a LREAL - Factor porcentual para la aceleración de los movimientos de ejes con res­
pecto a la aceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxAcceleration")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Ac­
celerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


196 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determi­
nado
a LREAL - 0.0 < a ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
d LREAL - Factor porcentual para la deceleración de los movimientos de ejes con
respecto a la deceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxDeceleration")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.De­
celerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
0.0 < d ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
j LREAL - Factor porcentual para el tirón de los movimientos de ejes con respecto al
tirón máximo de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxJerk")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Jerk
Factor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
10.0 ≤ j ≤ 90.0 Se utiliza el valor indicado.
= 0.0 Sin limitación de tirón
< 10.0 No admisible
(excepto 0.0)
> 90.0 No admisible
trans DINT - Transición de movimiento a la siguiente orden1)
- Se utiliza el valor modal. De forma estándar, el pará­
metro "trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro
valor de forma modal.
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de am­
bas órdenes
2 Suavizar la transición con la mayor velocidad de am­
bas órdenes
Si "trans" = 1 o "trans" = 2: siempre suavizado de transición polinomial en­
tre movimientos sPTP y de trayectoria
blendDist LREAL - Distancia de suavizado de transición1)
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 197
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determi­
nado
blendDist LREAL - - Se utiliza el valor modal. De forma estándar, el pa­
rámetro "blendDist" tiene preajustado el valor
"-1.0".
Con setBlendDist() (Página 227) se puede ajustar
otro valor de forma modal.
≥ 0.0 Se utiliza el valor especificado
< 0.0 Se utiliza la máxima distancia posible de suavizado
de transición
1) Parámetro modal

Instrucciones de Motion Control comparables


• "MC_MoveDirectRelative": Desplazamiento relativo de la cinemática con movimiento
síncrono "punto a punto" (si "CoordSystem" = 100)

Ejemplo: Posicionar la cinemática en posiciones de destino relativas del eje en el sistema de


coordenadas de máquina con movimiento sPTP
En el siguiente ejemplo, una cinemática debe alcanzar tres posiciones relativas del eje en el
sistema de coordenadas de máquina.
La cinemática debe desplazarse, partiendo de la parada, desde la posición 1 (punto final del
comando precedente) pasando por la posición 2, con suavizado de transición, a alta velocidad
("trans" = 2) y utilizando la distancia de suavizado de transición ("blendDist" = d) (A1), hasta la
posición 3, y desde allí, con suavizado de transición a baja velocidad ("trans" = 1) y utilizando
la distancia de suavizado de transición ("blendDist" = d) (A2), hasta la posición 4 y debe
añadirse el movimiento ("trans" = 0) a dicha posición (A3).

1PT E

E 1PT
" 
"

"

1PT 1PT

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


198 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
VAR
Pos2, Pos3, Pos4 : TO_Struct_Ipr_AxPosition;
d : LREAL;
END_VAR
// A1 – sPTP movement with blending with high velocity
// through Pos2 with coordinate Pos2
// relative to Pos1 in MCS with max. sPTP dynamics without jerk limitation
ptpAxRel( Pos2, v := 100.0, a := 100.0, d := 100.0, j := 0.0, trans := 2, blendDist := d );
// A2 – sPTP movement with blending with low velocity through Pos3 with coordinate Pos3
// relative to Pos2 in MCS with defined sPTP dynamics without jerk limitation
ptpAxRel( Pos3, v := 75.0, a := 80.0, d := 90.0, j := 0.0, trans := 1, blendDist := d );
// A3 – sPTP movement to Pos4 with coordinate Pos4
// relative to Pos3 in MCS, without blending
ptpAxRel( Pos4, trans := 0 );

6.1.9 ptpJtAbs(): Desplazar la cinemática a posiciones absolutas de la articulación


con movimiento sPTP (S7-1500T)

Descripción
La instrucción MCL "ptpJtAbs()" desplaza una cinemática hasta posiciones de destino
absolutas de la articulación en el sistema de coordenadas de la articulación (JCS) en un
movimiento "punto a punto" síncrono (movimiento sPTP). Al hacerlo, todos los ejes de la
cinemática se mueven al mismo tiempo. Los ejes inician simultáneamente el movimiento de
desplazamiento y alcanzan la posición de destino de la articulación al mismo tiempo.
La evolución del movimiento del punto de operación de la herramienta (TCP) resulta de los
valores de dinámica de los ejes. El eje de la cinemática con el tiempo de desplazamiento más
largo determina el tiempo de desplazamiento del movimiento sPTP y, con ello, el tiempo de
desplazamiento de los demás ejes de la cinemática. La posición del TCP resulta de las
posiciones de los ejes de la cinemática.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir posiciones de destino absolutas de la articulación en el sistema de coordenadas de
la articulación (JCS)
• Definir la dinámica
• Definir la transición del movimiento
• Definir la distancia de suavizado de transición
La instrucción MCL "ptpJtAbs()" finaliza cuando la cinemática alcanza la posición final
absoluta o cuando comienza el suavizado de transición con la orden. Se permite el inicio
síncrono de esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 199
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

Sintaxis
MCL
ptpJtAbs( <jtPos> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] [,trans := <val>]
[,blendDist := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "ptpJtAbs()":
Parámetro Tipo de datos Valor pre­ Descripción
determi­
nado
jtPos TO_Struct_Ipr_JtPosition - Posiciones de destino absolutas de la articulación en el sistema de coor­
denadas de la articulación (JCS)
j1 LREAL 0.0 Posición de destino absoluta de la articulación J1 en el JCS
j2 LREAL 0.0 Posición de destino absoluta de la articulación J2 en el JCS
j3 LREAL 0.0 Posición de destino absoluta de la articulación J3 en el JCS
j4 LREAL 0.0 Posición de destino absoluta de la articulación J4 en el JCS
j5 LREAL 0.0 Posición de destino absoluta de la articulación J5 en el JCS
j6 LREAL 0.0 Posición de destino absoluta de la articulación J6 en el JCS
v LREAL - Factor porcentual para la velocidad de los movimientos de ejes con res­
pecto a la velocidad máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxVelocity")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Ve­
locityFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
1.0 ≤ v ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
< 1.0 No admisible
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


200 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determi­
nado
a LREAL - Factor porcentual para la aceleración de los movimientos de ejes con res­
pecto a la aceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxAcceleration")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Ac­
celerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
0.0 < a ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
d LREAL - Factor porcentual para la deceleración de los movimientos de ejes con
respecto a la deceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxDeceleration")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.De­
celerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
0.0 < d ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
j LREAL - Factor porcentual para el tirón de los movimientos de ejes con respecto
al tirón máximo de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxJerk")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Jerk­
Factor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
10.0 ≤ j ≤ 90.0 Se utiliza el valor indicado.
= 0.0 Sin limitación de tirón
< 10.0 No admisible
(excepto 0.0)
> 90.0 No admisible
trans DINT - Transición de movimiento a la siguiente orden1)
- Se utiliza el valor modal. De forma estándar, el pará­
metro "trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro va­
lor de forma modal.
0 Añadir un movimiento
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 201
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determi­
nado
trans DINT - 1 Suavizar la transición con la menor velocidad de am­
bas órdenes
2 Suavizar la transición con la mayor velocidad de am­
bas órdenes
Si "trans" = 1 o "trans" = 2: siempre suavizado de transición polinomial en­
tre movimientos sPTP y de trayectoria
blendDist LREAL - Distancia de suavizado de transición1)
- Se utiliza el valor modal. De forma estándar, el pa­
rámetro "blendDist" tiene preajustado el valor
"-1.0".
Con setBlendDist() (Página 227) se puede ajustar
otro valor de forma modal.
≥ 0.0 Se utiliza el valor especificado
< 0.0 Se utiliza la máxima distancia posible de suavizado
de transición
1) Parámetro modal

Instrucciones de Motion Control comparables


• "MC_MoveDirectAbsolute": Desplazamiento relativo de la cinemática con movimiento
síncrono "punto a punto" (si "CoordSystem" = 101)

Ejemplo: Posicionar la cinemática en posiciones de destino absolutas de la articulación en el


sistema de coordenadas de la articulación con movimiento sPTP
En el siguiente ejemplo, una cinemática debe alcanzar dos posiciones de destino absolutas de
la articulación en el sistema de coordenadas de la articulación.
La cinemática debe desplazarse, partiendo de la parada, desde la posición 1, con la distancia
de suavizado de transición ("blendDist" = d) y alta velocidad ("trans" = 2), hasta la posición 2
(A1) y desde allí hasta la posición 3 (A2) ("trans" = 0).

1PT

E 1PT
" 
"

1PT

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


202 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
VAR
Pos2, Pos3 : TO_Struct_Ipr_JtPosition;
d : LREAL;
END_VAR
// A1 – sPTP movement with blending
// with high velocity in Pos2 (absolute target position in JCS)
// with max. sPTP dynamics without jerk limitation
ptpJtAbs( Pos2, v := 100.0, a := 100.0, d := 100.0, j := 0.0, trans := 2, blendDist := d );
// A2 – sPTP movement without blending to Pos3 (abs. target position in JCS)
// Exact stop in Pos3
ptpJtAbs( Pos3, trans := 0 );

6.1.10 ptpJtRel(): Desplazar la cinemática a posiciones relativas de la articulación


con movimiento sPTP (S7-1500T)

Descripción
La instrucción MCL "ptpJtRel()" desplaza una cinemática hasta posiciones de destino relativas
de la articulación en el sistema de coordenadas de la articulación (JCS) en un movimiento
"punto a punto" síncrono (movimiento sPTP). Al hacerlo, todos los ejes de la cinemática se
mueven al mismo tiempo. Los ejes inician simultáneamente el movimiento de
desplazamiento y alcanzan la posición de destino de la articulación al mismo tiempo.
La evolución del movimiento del punto de operación de la herramienta (TCP) resulta de los
valores de dinámica de los ejes. El eje de la cinemática con el tiempo de desplazamiento más
largo determina el tiempo de desplazamiento del movimiento sPTP y, con ello, el tiempo de
desplazamiento de los demás ejes de la cinemática. La posición del TCP resulta de las
posiciones de los ejes de la cinemática.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir posiciones de destino relativas de la articulación en el sistema de coordenadas de
la articulación (JCS)
• Definir la dinámica
• Definir la transición del movimiento
• Definir la distancia de suavizado de transición
La instrucción MCL "ptpJtRel()" finaliza cuando la cinemática alcanza la posición final relativa
o cuando comienza el suavizado de transición con la orden. Se permite el inicio síncrono de
esta instrucción con otras instrucciones.
Al contrario de las instrucciones de Motion Control, en las órdenes de movimiento MCL se
especifica el suavizado de transición en la orden precedente, no en la subsiguiente.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 203
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Requisitos
• Los objetos tecnológicos siguientes se han configurado correctamente:
– Cinemática
– Ejes de la cinemática
– Intérprete
– Programa intérprete
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados con la cinemática están habilitados.
• Ninguno de los ejes interconectados con la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

Sintaxis
MCL
ptpJtRel( <jtPos> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] [,trans := <val>]
[,blendDist := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "ptpJtRel()":
Parámetro Tipo de datos Valor pre­ Descripción
determi­
nado
jtPos TO_Struct_Ipr_JtPosition - Posiciones de destino relativas de la articulación en el sistema de coorde­
nadas de la articulación (JCS)
j1 LREAL 0.0 Posición de destino relativa de la articulación J1 en el JCS
j2 LREAL 0.0 Posición de destino relativa de la articulación J2 en el JCS
j3 LREAL 0.0 Posición de destino relativa de la articulación J3 en el JCS
j4 LREAL 0.0 Posición de destino relativa de la articulación J4 en el JCS
j5 LREAL 0.0 Posición de destino relativa de la articulación J5 en el JCS
j6 LREAL 0.0 Posición de destino relativa de la articulación J6 en el JCS
v LREAL - Factor porcentual para la velocidad de los movimientos de ejes con res­
pecto a la velocidad máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxVelocity")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Ve­
locityFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
1.0 ≤ v ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
< 1.0 No admisible
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


204 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determi­
nado
a LREAL - Factor porcentual para la aceleración de los movimientos de ejes con res­
pecto a la aceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxAcceleration")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Ac­
celerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
0.0 < a ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
≤ 0.0 No admisible
d LREAL - Factor porcentual para la deceleración de los movimientos de ejes con
respecto a la deceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxDeceleration")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.De­
celerationFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
0.0 < d ≤ 100.0 Se utiliza el valor indicado
> 100.0 No admisible
<= 0.0 No admisible
j LREAL - Factor porcentual para el tirón de los movimientos de ejes con respecto
al tirón máximo de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxJerk")1).
- Se utiliza el valor modal. El valor modal se inicializa
con
"<TO_Kinematics>.DynamicDefaults.MoveDirect.Jer­
kFactor".
Con setPtpDyn() (Página 213) se puede ajustar otro
valor de forma modal.
10.0 <= j ≤ 90.0 Se utiliza el valor indicado.
= 0.0 Sin limitación de tirón
< 10.0 No admisible
(excepto 0.0)
> 90.0 No admisible
trans DINT - Transición de movimiento a la siguiente orden1)
- Se utiliza el valor modal. De forma estándar, el pará­
metro "trans" tiene preajustado el valor "0".
Con setTrans() (Página 221) se puede ajustar otro
valor de forma modal.
0 Añadir un movimiento
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 205
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetro Tipo de datos Valor pre­ Descripción


determi­
nado
trans DINT - 1 Suavizar la transición con la menor velocidad de am­
bas órdenes
2 Suavizar la transición con la mayor velocidad de am­
bas órdenes
Si "trans" = 1 o "trans" = 2: siempre suavizado de transición polinomial en­
tre movimientos sPTP y de trayectoria
blendDist LREAL - Distancia de suavizado de transición1)
- Se utiliza el valor modal. De forma estándar, el pa­
rámetro "blendDist" tiene preajustado el valor
"-1.0".
Con setBlendDist() (Página 227) se puede ajustar
otro valor de forma modal.
≥ 0.0 Se utiliza el valor especificado
< 0.0 Se utiliza la máxima distancia posible de suavizado
de transición
1) Parámetro modal

Instrucciones de Motion Control comparables


• "MC_MoveDirectRelative": Desplazamiento relativo de la cinemática con movimiento
síncrono "punto a punto" (si "CoordSystem" = 101)

Ejemplo: Posicionar la cinemática en posiciones de destino relativas de la articulación en el


sistema de coordenadas de la articulación con movimiento sPTP
En el siguiente ejemplo, una cinemática debe alcanzar dos posiciones de destino relativas de
la articulación en el sistema de coordenadas de la articulación.
La cinemática debe desplazarse, partiendo de la parada, desde la posición 1, con la distancia
de suavizado de transición ("blendDist" = d) y alta velocidad ("trans" = 2), hasta la posición 2
(A1) y desde allí hasta la posición 3 (A2) ("trans" = 0).

1PT

E 1PT
" 
"

1PT

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


206 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
VAR
Pos2, Pos3 : TO_Struct_Ipr_JtPosition;
d : LREAL;
END_VAR
// A1 – sPTP movement with blending with high velocity
// through Pos2 with coordinate Pos2
// relative to Pos1 in JCS with max. sPTP dynamics without jerk limitation
ptpJtRel( Pos2, v := 100.0, a := 100.0, d := 100.0, j := 0.0, trans := 2, blendDist := d );
// A2 – sPTP movement without blending to Pos3
// with coordinate Pos3 relative to Pos2 in JCS
// Exact stop in Pos3
ptpJtRel( Pos3, trans := 0 );

6.1.11 setDyn() Definir los ajustes predeterminados de dinámica para movimientos


de trayectoria de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setDyn()" se establecen los valores modales para el ajuste
predeterminado de dinámica del movimiento de trayectoria. Si no se especifica ningún otro
valor dinámico para una orden de movimiento MCL, estos valores dinámicos modales se
utilizan para el movimiento de la cinemática.
Existe la posibilidad de especificar uno o varios valores dinámicos. La especificación es posible
como valor absoluto o porcentual referido a la máxima dinámica.
Indique un valor para al menos uno de los parámetros de la dinámica.
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()

Sintaxis
MCL
setDyn( [v := <value>] [,a := <value>] [,d := <value>] [,j := <value>] [,rel := <value>] );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 207
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setDyn()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
v LREAL - Valor modal de la velocidad del movimiento de trayectoria
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Kinematics>.DynamicDefaults.Path.Velo­
city).
Si el valor no se establece en el código del programa, se
utiliza el valor inicializado.
> 0.0 Para rel := FALSE:
ajuste predeterminado absoluto de la velocidad

0.0 < v ≤ Si rel := TRUE:


100.0 ajuste predeterminado porcentual del último valor máximo
de velocidad válido

≤ 0.0 No admisible
a LREAL - Valor modal de la aceleración del movimiento de trayectoria
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Kinematics>.DynamicDefaults.Path.Acce­
leration).

Si el valor no se establece en el código del programa, se


utiliza el valor inicializado.
> 0.0 Si rel := FALSE:
ajuste predeterminado absoluto de la aceleración

0.0 < a ≤ Si rel := TRUE:


100.0 ajuste predeterminado porcentual del último valor máximo
de aceleración válido

≤ 0.0 No admisible
d LREAL - Valor modal de la deceleración del movimiento de trayectoria
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Kinematics>.DynamicDefaults.Path.Dece­

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


208 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
d LREAL - leration).

Si el valor no se establece en el código del programa, se


utiliza el valor inicializado.
> 0.0 Si rel := FALSE:
ajuste predeterminado absoluto de la deceleración

0.0 < d ≤ Si rel := TRUE:


100.0 ajuste predeterminado porcentual del último valor máximo
de deceleración válido

≤ 0.0 No admisible
j LREAL - Valor modal de tirón del movimiento de trayectoria
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Kinematics>.DynamicDefaults.Path.Jerk).

Si el valor no se establece en el código del programa, se


utiliza el valor inicializado.
> 0.0 Si rel := FALSE:
ajuste predeterminado absoluto del tirón

0.0 < j ≤ Si rel := TRUE:


100.0 ajuste predeterminado porcentual del último valor máximo
de tirón válido

= 0.0 Sin limitación de tirón


< 0.0 No admisible
rel BOOL FALSE Modo de especificación del valor modal1)
FALSE Especificación absoluta
TRUE Especificación porcentual
1) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 209
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplos
Ajuste de valores dinámicos modales:

MCL
setDyn( rel := FALSE,
v := 100.0,
a := 1000.0,
d := 1000.0,
j := 0.0 );
Ajustar la aceleración del movimiento de trayectoria al 50 % del último valor máximo de
velocidad válido:

MCL
setDyn( a := 50.0, rel := TRUE );
Definir valores dinámicos modales para a y d:

MCL
setDyn( a := 10.0, d := 10.0 );

6.1.12 setOriDyn(): Definir los ajustes predeterminados de dinámica para


movimientos de orientación de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setOriDyn()" se definen los valores modales para el ajuste
predeterminado de dinámica del movimiento de orientación.
Puede indicar los valores para uno o varios parámetros modales de la dinámica. La indicación
es posible como valor absoluto y como valor relativo en porcentaje referido a la máxima
dinámica de orientación (ver instrucción "setOriDynMax()"). Todos los valores dinámicos no
indicados en la instrucción permanecen inalterados.
Indique un valor para al menos uno de los parámetros.
Encontrará más información sobre los ajustes predeterminados de dinámica en el capítulo
"Parámetros modales (Página 152)".
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática con orientación

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


210 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()

Sintaxis
MCL
setOriDyn( [v := <value>] [,a := <value>] [,d := <value>] [,j := <value>] [,rel := <value>]
);

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setOriDyn()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
v LREAL - Valor modal de la velocidad del movimiento de orientación
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el
valor de configuración guardado en "Parámetros
avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.Orientation.Velocity).
Si el valor no se establece en el código del programa, se
utiliza el valor inicializado.

> 0.0 Si rel := FALSE:


Ajuste predeterminado absoluto de la velocidad

0.0 < v ≤ Si rel := TRUE:


100.0 Ajuste predeterminado porcentual del último valor máxi­
mo de velocidad válido
≤ 0.0 No admisible
a LREAL - Valor modal de la aceleración del movimiento de orientación
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el
valor de configuración guardado en "Parámetros
avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.Orientation.Accelera­
tion).
Si el valor no se establece en el código del programa, se
utiliza el valor inicializado.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 211
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
a LREAL - > 0.0 Si rel := FALSE:
Ajuste predeterminado absoluto de la aceleración

0.0 < a ≤ Si rel := TRUE:


100.0 Ajuste predeterminado porcentual del último valor máxi­
mo de aceleración válido
≤ 0.0 No admisible
d LREAL - Valor modal de la deceleración del movimiento de orientación
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el
valor de configuración guardado en "Parámetros
avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.Orientation.Decelera­
tion).
Si el valor no se establece en el código del programa, se
utiliza el valor inicializado.

> 0.0 Ajuste predeterminado absoluto del valor límite de la de­


celeración

0.0 < d ≤ Si rel := TRUE:


100.0 Ajuste predeterminado porcentual del último valor máxi­
mo de deceleración válido
≤ 0.0 No admisible
j LREAL - Valor modal de tirón del movimiento de orientación
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el
valor de configuración guardado en "Parámetros
avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.Orientation.Jerk).

Si el valor no se establece en el código del programa, se


utiliza el valor inicializado.
> 0.0 Si rel := FALSE:
Ajuste predeterminado absoluto del tirón

0.0 < j ≤ Si rel := TRUE:


100.0 Ajuste predeterminado porcentual del último valor máxi­
mo de tirón válido
= 0.0 Sin limitación de tirón
< 0.0 No admisible
1) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


212 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
rel BOOL FALSE Modo de especificación del valor modal1)
FALSE Especificación absoluta
TRUE Especificación porcentual
1) Parámetro opcional con valor predeterminado

Ejemplo
MCL
// set orientation dynamic modally, absolute values
setOriDyn( rel := FALSE,
v := 100.0,
a := 1000.0,
d := 1000.0,
j := 0.0 );
// orientation movement will be done with the modal orientation dynamic
linAbs( myPos1 );
// set the value of the orientation deceleration to absolute 2000.0
setOriDynMax( d := 2000.0 );
// set modally deceleration for orientation movement
// in % related to the maximal value of deceleration for orientation movement
// all other dynamics parameters (v, a, j) are not changed
setOriDyn( rel := TRUE, d := 25.0 );
// orientation movement will be done with deceleration 500.0 – absolute value
linAbs( myPos2 );

6.1.13 setPtpDyn(): Definir los ajustes predeterminados de la dinámica para


movimientos sPTP de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setPtpDyn()()", se establecen los valores modales para el ajuste
predeterminado de la dinámica de los movimientos sPTP. Si no se especifica ningún otro valor
dinámico para una orden de movimiento MCL, estos valores dinámicos modales se utilizan
para los movimientos sPTP de la cinemática.
Puede indicar los valores para uno o varios parámetros modales de la dinámica. Todo valor
dinámico que no se indique en la instrucción permanece inalterado.
Indique un valor para al menos uno de los parámetros de la dinámica.
Encontrará más información sobre los ajustes predeterminados de la dinámica en el capítulo
"Parámetros modales (Página 152)".
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 213
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• ptpAbs()
• ptpRel()
• ptpJtAbs()
• ptpJtRel()
• ptpAxAbs()
• ptpAxRel()

Sintaxis
MCL
setPtpDyn( [v := <value>] [,a := <value>] [,d := <value>] [,j := <value>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setPtpDyn()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
v LREAL - Valor modal del factor porcentual para la velocidad del movimiento sPTP
con respecto a la velocidad máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxVelocity").
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código
del programa.
Al cargar el programa, el valor modal se inicializa con el
valor de configuración guardado en "Parámetros
avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.MoveDirect.Velo­
cityFactor).
Si el valor no se establece en el código del programa, se
utiliza el valor inicializado.
1.0 ≤ v ≤ 100.0 Valor porcentual de la velocidad máxima del eje
< 1.0 No admisible
> 100.0 No admisible
a LREAL - Valor modal del factor porcentual para la aceleración del movimiento sPTP
con respecto a la aceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxAcceleration").
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código
del programa.
Al cargar el programa, el valor modal se inicializa con el
valor de configuración guardado en "Parámetros
avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.MoveDirect.Acce­
lerationFactor).

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


214 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
a LREAL - Si el valor no se establece en el código del programa, se
utiliza el valor inicializado.
0.0 < a ≤ 100.0 Valor porcentual de la aceleración máxima del eje

≤ 0.0 No admisible
> 100.0 No admisible
d LREAL - Valor modal del factor porcentual para la deceleración del movimiento
sPTP con respecto a la deceleración máxima de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxDeceleration").
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código
del programa.
Al cargar el programa, el valor modal se inicializa con el
valor de configuración guardado en "Parámetros
avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.MoveDirect.Dece­
lerationFactor).
Si el valor no se establece en el código del programa, se
utiliza el valor inicializado.
0.0 < d ≤ 100.0 Valor porcentual de la deceleración máxima del eje

≤ 0.0 No admisible
> 100.0 No admisible
j LREAL - Valor modal del factor porcentual para el tirón del movimiento sPTP con
respecto al tirón máximo de los ejes en cuestión
("<TO_Axis>.DynamicLimits.MaxJerk").
- El valor modal no cambia.
Al cargar el programa, el valor modal se inicializa con el
valor de configuración guardado en "Parámetros
avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.MoveDirect.Jerk­
Factor).
Si el valor no se establece en el código del programa, se
utiliza el valor inicializado.
10.0 ≤ j ≤ 90.0 Valor porcentual del tirón máximo del eje

< 10.0 No admisible


(excepto 0.0)
> 90.0 No admisible
= 0.0 Sin limitación de tirón

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 215
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplo

MCL
// set the modal factor of dynamics of a sPTP-motion without jerk limita-
tion
setPtpDyn( v := 10.0, a := 20.0, d := 30.0, j := 0.0 );

// set the modal factor of the velocity of a sPTP-motion to 75.0%
setPtpDyn( v := 75.0 )

6.1.14 setDynMax(): Definir los límites de dinámica para movimientos de


trayectoria de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setDynMax()" se configuran los límites máximos para los parámetros
de dinámica modales para movimientos lineales y circulares de la trayectoria.
Puede especificar los valores dinámicos máximos para uno o varios parámetros modales. La
especificación de los valores dinámicos máximos solamente es posible en valores absolutos.
Todo valor dinámico que no se indique en la instrucción permanece inalterado.
Indique un valor para al menos uno de los parámetros.
Encontrará más información sobre los ajustes predeterminados de la dinámica en el capítulo
"Parámetros modales (Página 152)".
Encontrará más información sobre los movimientos lineales y circulares de la trayectoria en
los capítulos "Desplazamiento lineal de la cinemática" y "Desplazamiento circular de la
cinemática" de la documentación "S7-1500T Funciones cinemáticas (Página 11)".

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()

Sintaxis
MCL
setDynMax( [v := <value>] [,a := <value>] [,d := <value>] [,j := <value>] );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


216 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setDynMax()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
v LREAL - Valor modal de la velocidad máxima del movimiento de trayectoria

- El valor modal no cambia.


Se utiliza el último valor válido ajustado en el código de pro­
grama.
Al cargar el programa, el valor modal se inicializa con el valor
de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Kinematics>.DynamicLimits.Path.Velocity).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Ajuste predeterminado absoluto de los límites de la veloci­
dad
≤ 0.0 No admisible
a LREAL - Valor modal de la aceleración máxima del movimiento de trayectoria
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el valor
de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Kinematics>.DynamicLimits.Path.Accelera­
tion).
Si el valor no se ajusta en el código del programa, se utiliza
el valor inicializado.

> 0.0 Ajuste predeterminado absoluto de los límites de la acelera­


ción
≤ 0.0 No admisible
d LREAL - Valor modal de la deceleración máxima del movimiento de trayectoria
- El valor modal no se modifica.
Se utiliza el último valor válido ajustado en el código del pro­
grama.
Al cargar el programa, el valor modal se inicializa con el valor
de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Kinematics>.DynamicLimits.Path.Decelera­
tion).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.

> 0.0 Ajuste predeterminado absoluto de los límites de la decelera­


ción
≤ 0.0 No admisible
j LREAL - Valor modal del tirón máximo del movimiento de trayectoria

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 217
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
j LREAL - - El valor modal no se modifica.
Se utiliza el último valor válido ajustado en el código del pro­
grama.
Al cargar el programa, el valor modal se inicializa con el valor
de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Kinematics>.DynamicLimits.Path.Jerk).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.

> 0.0 Ajuste predeterminado absoluto de los límites del tirón


= 0.0 Sin limitación de tirón
< 0.0 No admisible

Ejemplo
MCL
// set the maximum value of the path velocity to absolute 10.0
setDynMax( v := 10.0 );
linAbs( Pos1, v := 8.0 ); // Path movement with velocity = 8.0
// set the maximum value of the path acceleration and deceleration
setDynMax( a := 1000.0, d := 1000.0 );
// path movement with v = 10.0, a = 1000.0 and d = 800.0
// dynamics are limited by setDynMax()- instruction
// in the following instruction v is limited to 10.0 and a is limited to 1000.0
linAbs( Pos1, v := 15.0, a := 2000.0, d := 800.0 );

6.1.15 setOriDynMax(): Definir los límites de dinámica para movimientos de


orientación de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setOriDynMax()" se configuran los límites máximos para los
parámetros de dinámica modales de movimientos de orientación.
Puede indicar los valores dinámicos máximos para uno o varios parámetros de dinámica
modales. La indicación solamente es posible en valores absolutos. Todo valor dinámico que
no se indique en la instrucción permanece inalterado.
Indique un valor para al menos uno de los parámetros.
Encontrará más información sobre los valores límite máximos en el capítulo "Parámetros
modales (Página 152)".
Encontrará más información sobre movimientos de orientación en el capítulo "Resumen de
los movimientos de la cinemática" de la documentación "S7-1500T Funciones cinemáticas
(Página 11)".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


218 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Se aplica a
• Cinemática con orientación

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()

Sintaxis
MCL
setOriDynMax( [v := <value>] [,a := <value>] [,d := <value>] [,j := <value>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setOriDynMax()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
v LREAL - Valor modal de la velocidad máxima del movimiento de orientación
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el valor
de configuración guardado en "Parámetros avanzados >
Dinámica"
(<TO_Kinematics>.DynamicLimits.Orientation.Velocity).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.

> 0.0 Ajuste predeterminado absoluto del valor límite de la veloci­


dad

≤ 0.0 No admisible
a LREAL - Valor modal de la aceleración máxima del movimiento de orientación
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el valor
de configuración guardado en "Parámetros avanzados >
Dinámica"
(<TO_Kinematics>.DynamicLimits.Orientation.Acceleration).
Si el valor no se ajusta en el código del programa, se utiliza
el valor inicializado.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 219
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
a LREAL - > 0.0 Ajuste predeterminado absoluto del valor límite de la acele­
ración

≤ 0.0 No admisible
d LREAL - Valor modal de la deceleración máxima del movimiento de orientación
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el valor
de configuración guardado en "Parámetros avanzados >
Dinámica"
(<TO_Kinematics>.DynamicLimits.Orientation.Deceleration).
Si el valor no se ajusta en el código del programa, se utiliza
el valor inicializado.

> 0.0 Ajuste predeterminado absoluto del valor límite de la decele­


ración

≤ 0.0 No admisible
j LREAL - Valor modal del tirón máximo del movimiento de orientación
- El valor modal no se modifica.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el valor
de configuración guardado en "Parámetros avanzados >
Dinámica"
(<TO_Kinematics>.DynamicLimits.Orientation.Jerk).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.

> 0.0 Ajuste predeterminado absoluto del valor límite del tirón

= 0.0 Sin limitación de tirón


< 0.0 No admisible

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


220 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplos

MCL
// set max. of jerk
// max. values for velocity, acceleration and deceleration
// used from technology object data block if not set before in the program
setOriDynMax( j := 10000.0 );

MCL
setOriDynMax( v := 100.0, // set max. orientation dynamic
a := 2000.0,
d := 2500.0,
j := 0.0 );

6.1.16 setTrans(): Definir la transición para movimientos de trayectoria y de sPTP


lineales y circulares de forma modal (S7-1500T)

Descripción
La instrucción MCL "setTrans()" permite definir la dinámica de suavizado de transición entre
dos movimientos de forma modal. Puede elegirse entre "Añadir movimiento", "Suavizar la
transición con la menor velocidad de ambas órdenes" o "Suavizar la transición con la mayor
velocidad de ambas órdenes".
Para la dinámica de suavizado de transición, se utiliza el último valor válido establecido en el
código del programa para la especificación del movimiento de trayectoria y sPTP lineal y
circular. De forma estándar, está preajustado "Añadir movimiento" ("trans" = 0).
Encontrará más información sobre el suavizado de transición en los capítulos
"Desplazamiento lineal de la cinemática", "Desplazamiento circular de la cinemática" y
"Desplazamiento de la cinemática con un movimiento síncrono "punto a punto"" de la
documentación "S7-1500T Funciones cinemáticas (Página 11)".

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()
• ptpAbs()
• ptpRel()
• ptpJtAbs()
• ptpJtRel()
• ptpAxAbs()
• ptpAxRel()

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 221
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Sintaxis
MCL
setTrans( <trans> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setTrans()":
Pará­ Tipo de datos Valor Descripción
metro predeter­
minado
trans DINT - Valor modal para la transición del movimiento a la siguiente orden de
los movimientos de trayectoria y sPTP
0 Añadir un movimiento
1 Suavizar la transición con la menor velocidad de ambas órde­
nes
2 Suavizar la transición con la mayor velocidad de ambas órde­
nes

Ejemplo: Suavizar la transición de un movimiento con la menor y la mayor velocidad


En el siguiente ejemplo, una cinemática debe alcanzar cinco posiciones absolutas con
especificaciones distintas para la transición del movimiento.
La cinemática debe desplazarse, partiendo de la parada, desde la posición 1 hasta la posición
2 y detenerse en la posición 2 (A1).
Desde la posición 2, la cinemática debe desplazarse con la distancia de suavizado de
transición 10.0 y a baja velocidad hasta la posición 3 (A2) y desde allí hasta la posición 4 y
detenerse allí (A3).
Desde la posición 4, la cinemática debe desplazarse con la distancia de suavizado de
transición 15.0 y a alta velocidad hasta la posición 5 (A4) y desde allí hasta la posición 2 y
detenerse en dicha posición 2 (A5).
1PT " 1PT
&
%


"

'

"

# # (
" "
1PT 1PT " 1PT
[

Z Y

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


222 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

La velocidad del movimiento de la cinemática en determinadas secciones del recorrido


corresponde a los siguientes valores:
,*/4UBUVT1BUI7FMPDJUZ















" # $ % & ' ( #

MCL
PROGRAM main
VAR
Pos2, Pos3, Pos4, Pos5 : TO_Struct_Ipr_Position;
END_VAR
// set dynamics modally
setDyn( v := 100.0, a := 200.0, d := 200.0, j := 3000.0 );

// set blending dynamics modally to the movement without blending


setTrans( 0 );

// A1 - Exact stop in Pos2


linAbs( Pos2, cs := 0 ); // linear movement without blending

// A2 - Blending with lower velocity (v = 200.0) and blending distance 10.0 in Pos3
linAbs( Pos3, v := 300.0, trans := 1, blendDist := 10.0, cs := 0 );

// A3 – Movement to Pos4 with v = 200.0. Exact stop in Pos4, no blending


linAbs( Pos4, v := 200.0, trans := 0 );

// A4 - Blending higher velocity (v = 600.0) with blending distance 15.0 in Pos5


linAbs( Pos5, v := 500.0, trans := 2, blendDist := 15.0, cs := 0 );
// A5 - Exact stop in Pos2, trans = 1 is ignored because this is the last command
linAbs( Pos2, v := 600.0, trans := 1, cs := 0 );
END_PROGRAM

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 223
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.17 setBlend(): Definir el modo de suavizado de transición para movimientos


lineales y circulares de la trayectoria de forma modal (S7-1500T)

Descripción
Si se cambian los parámetros modales para el suavizado de transición entre dos órdenes de
trayectoria, estos siempre causan efecto sobre las instrucciones subsiguientes.
Para el suavizado de transición se utiliza el último modo válido establecido en el código de
programa. El modo "Polynomial" está preajustado de forma estándar ("blend" = 2).
Encontrará más información sobre el suavizado de transición de movimientos en los capítulos
"Desplazamiento lineal de la cinemática" y "Desplazamiento circular de la cinemática" de la
documentación "S7-1500T Funciones cinemáticas (Página 11)".

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()

Sintaxis
MCL
setBlend( <blend> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setBlend()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
Valor modal para el modo de suavizado de transición

0 Directo
El suavizado de transición tiene lugar en la dinámica de trayectoria
sin correcciones geométricas. La geometría en el punto de suaviza­
do de transición no se modifica. La cinemática pasa directamente
por el punto de suavizado de transición

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


224 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
blend DINT - 1 Reservado
2 Polinomial
Suavizado de transición geométrico con trayectoria polinómica.
Una trayectoria polinómica se utiliza como transición entre dos ele­
mentos geométricos dentro de la distancia de suavizado de transi­
ción (ver también "setBlendDist()")

Ejemplo 1
El ejemplo siguiente muestra cómo se desplaza la cinemática a dos posiciones.
1PT W



"

"
1PT 1PT 1PT 1PT 1PT
[

Z Y

Desde la posición de parada Pos1, la cinemática ("v" = 1000.0) se desplaza, con suavizado de
transición directo ("blend" = 0) y baja velocidad ("trans" = 1, "v" = 800.0), hasta Pos2 (A1) y
desde allí hasta Pos3 (A3).

MCL
VAR
Pos2, Pos3 : TO_Struct_Ipr_Position
END_VAR
setBlend( 0 ); // modal specification for direct blending
// A1 – Direct blending with low velocity (v = 800.0) in Pos2
linAbs( Pos2, v := 1000.0, trans := 1, cs := 0 );

// A2 – Direct stop in Pos3


linAbs( Pos3, v := 800.0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 225
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplo 2
El ejemplo siguiente muestra cómo se desplaza la cinemática a dos posiciones.
Desde la posición de parada Pos1, la cinemática ("v" = 1000.0) se desplaza, con suavizado de
transición polinomial ("blend" = 2), alta velocidad ("trans" = 2, "v" = 1000.0) y distancia de
suavizado de transición, hasta Pos2 (A1) y desde allí hasta Pos3 (A3). SB es el punto inicial del
segmento de suavizado de transición, EB es el punto final de dicho segmento.

1PT

"


&#


1PT


CMFOE%JT U

"


4 # 1PT 1PT 4 # &# 1PT


[ 

E %JTU 
CMFO

Z Y

SB start blending
EB end blending

MCL
VAR
Pos2, Pos3 : TO_Struct_Ipr_Position;
END_VAR
setBlend( 2 ); // modal specification for polynomial blending
// A1 – Polinom blending with high velocity (v = 1000.0) in Pos2
circAbs( Pos2, v := 1000.0, trans := 2, blendDist := 10.0, cs := 0 );

// A2 – Direct stop in Pos3


circAbs( Pos3, v := 800.0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


226 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.18 setBlendDist(): Definir la distancia de suavizado de transición para


movimientos de trayectoria y sPTP lineales y circulares de forma modal
(S7-1500T)

Descripción
Con la instrucción MCL "setBlendDist()" se define la distancia de suavizado de transición de
movimientos sPTP lineales y circulares como valor absoluto de forma modal.
Para la distancia de suavizado de transición se utiliza el último valor válido ajustado en el
código de programa. De forma estándar está preajustada la distancia máxima posible de
suavizado de transición ("blendDist" = -1.0).
Encontrará más información sobre la distancia máxima posible de suavizado de transición de
movimientos en los capítulos "Resumen de los movimientos de la cinemática",
Desplazamiento lineal de la cinemática", "Desplazamiento circular de la cinemática" y
"Desplazamiento de la cinemática con un movimiento síncrono "punto a punto"" de la
documentación "S7-1500T Funciones cinemáticas (Página 11)".

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()
• ptpAbs()
• ptpRel()
• ptpJtAbs()
• ptpJtRel()
• ptpAxAbs()
• ptpAxRel()

Sintaxis
MCL
setBlendDist( < blendDist> );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 227
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setBlendDist()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
blend­ LREAL - Valor modal para el suavizado de transición (para movimientos lineales
Dist de la trayectoria y sPTP)/la trayectoria radial del suavizado de transición
(para movimientos circulares de la trayectoria)

≥ 0.0 Se utiliza el valor absoluto especificado


< 0.0 Se utiliza la distancia máxima posible de suavizado de transi­
ción parametrizada con "blendingFactor" (ver también a este
respecto la instrucción "setBlendFactor()")

Ejemplos
Los dos ejemplos siguientes muestran el mismo movimiento de la cinemática con el mismo
proceso de suavizado de transición. La diferencia entre los ejemplos es la especificación del
modo de suavizado de transición y de la distancia de suavizado de transición. En el primer
ejemplo, se ajusta el modo de suavizado de transición mediante "setBlend()" y la distancia de
suavizado de transición mediante "setBlendDist()". En el segundo ejemplo, estos parámetros
se ajustan mediante la instrucción de movimiento de trayectoria "linAbs()".
Con el modo "Suavizado de transición geométrico" se realiza la transición de las instrucciones
dentro de una distancia de suavizado de transición especificada. En el ejemplo 1, esto
también se realiza mediante la instrucción "setBlendDist()", y en el ejemplo 2, mediante la
instrucción "linAbs()".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


228 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

La distancia máxima de suavizado de transición está definida como la longitud del tramo de la
primera orden (A1) entre el punto final de la trayectoria (pos B) y el punto de suavizado de
transición A', o como la longitud del tramo de la segunda orden (A2) entre el punto final de la
trayectoria (pos B) y el punto de suavizado de transición C' Cuando se alcanza la distancia de
suavizado de transición, el movimiento actual pasa con suavidad al nuevo movimiento. El
sistema utiliza automáticamente la transición geométrica.
CMFO
E % JT
U
 

QPT#
CMFOE%JTU

$

"

"
QPT$
"

QPT"

pos A Punto inicial de la cinemática


pos B Punto final de la primera orden (A1)
pos C Punto final de la segunda orden (A2)
blend­ Punto final de la segunda orden (A2)
Dist

MCL (ejemplo 1)
setBlend( 2 ); // modally setting for polynomial blending
setBlendDist( 10.0 ); // modally setting for blending distance
linAbs( posB, trans := 1 ); // blending active (command A1)
linAbs( posC, trans := 0 ); // exact stop at command end (command A2)

MCL (ejemplo 2)
// using path-movements instruction linAbs()
// as an alternative way of setting blending mode and blending distance
linAbs( posB, trans := 1, blend := 2, blendDist := 10.0 ); // (command A1)
linAbs( posC ); // (command A2)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 229
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.19 setBlendFactor(): Definir la distancia máxima de suavizado de transición


para movimientos de trayectoria y sPTP lineales y circulares de forma modal
(S7-1500T)

Descripción
Con la instrucción MCL "setBlendFactor()" se define de forma modal el factor de la distancia
máxima de suavizado de transición de la cinemática para movimientos de la trayectoria, así
como movimientos sPTP, lineales y circulares.
Este factor permite una distancia de suavizado de transición mayor que la mitad del recorrido
del movimiento sPTP.
La distancia de suavizado de transición de entrada y de salida en el punto de suavizado no se
modifica.
Este factor solo se tiene en cuenta si la distancia de suavizado de transición para el
movimiento está ajustada a la distancia máxima posible de suavizado de transición
("blendDist" = -1.0, ver al respecto también la instrucción "setBlendDist()").
Para el factor se utiliza el último valor válido ajustado en el código del programa. Al cargar el
programa, el valor modal se inicializa con el valor de configuración guardado en "Parámetros
avanzados > Cadena de órdenes" (<TO_Kinematics>.Transition.FactorBlendingLength). Si el
valor no se establece en el código del programa, se utiliza el valor inicializado.
Encontrará más información sobre el suavizado de transición de movimientos y el factor de
distancia de suavizado de transición en los capítulos "Desplazamiento lineal de la cinemática"
y "Desplazamiento circular de la cinemática" de la documentación "S7-1500T Funciones
cinemáticas (Página 11)".

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()
• ptpAbs()
• ptpRel()
• ptpJtAbs()
• ptpJtRel()
• ptpAxAbs()
• ptpAxRel()

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


230 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Sintaxis
MCL
setBlendFactor( <blendFactor> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setBlendFactor()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
blend­ LREAL - Valor modal del factor de suavizado de transición
Factor
= 0.0 Sin suavizado de la transición
0.0 < blendFactor < Ajuste predeterminado porcentual del factor pa­
100.0 ra el suavizado de transición del movimiento
= 100.0 Distancia máxima posible de suavizado de la
transición

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 231
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplo 1
El siguiente ejemplo muestra un movimiento lineal con el factor 90.0 % de la distancia
máxima posible de suavizado de transición. Este factor se tiene en cuenta si está ajustada la
distancia máxima posible de suavizado de transición para el movimiento. En este ejemplo se
ajusta la distancia máxima posible de suavizado de transición de forma modal mediante la
instrucción "setBlendDist()".



 
# $






%

"

① Distancia máxima de suavizado de transición, orden de movimiento BC


② Distancia máxima de suavizado de transición, orden de movimiento CD

MCL
setBlend( 2 ); // modal specification for polynomial blending
setBlendFactor( 90.0 ); // 90.0 % of path length for blending
setBlendDist( -1.0 ); // set max. blending distance, here 90.0%
linAbs( posB, v := 200.0, trans := 1 ); // path-movement with blending
linAbs( posC, v := 300.0 ); // path-movement with blending
linAbs( posD, v := 400.0, trans := 0 ); // path-movement without blending

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


232 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplo 2
El siguiente ejemplo muestra un movimiento lineal con el factor 25.0 % de la distancia
máxima posible de suavizado de transición. Este factor se tiene en cuenta si está ajustada la
distancia máxima posible de suavizado de transición para el movimiento. En este ejemplo se
ajusta la distancia máxima posible de suavizado de transición de forma modal mediante la
instrucción "linAbs()" (parámetro "blendDist" = -1.0).



 
# $




"

① Distancia máxima de suavizado de transición, orden de movimiento BC


② Distancia máxima de suavizado de transición, orden de movimiento CD

MCL
setBlend( 2 ); // modal specification for polynomial blending
setBlendFactor( 25.0 ); // 25.0 % of path length for blending
linAbs( posB, v := 200.0, trans := 1, blendDist := -1.0 ); // path-movement with blending
linAbs( posC, v := 300.0 ); // path-movement with blending
linAbs( posD, v := 400.0, trans := 0 ); // path-movement without blending

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 233
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.20 setPlane(): Definir el plano principal de la trayectoria circular para


movimientos circulares de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setPlane()" se ajusta el plano principal 2D de forma modal para un
movimiento circular de la trayectoria.
Este ajuste del plano principal es relevante cuando la trayectoria circular está definida para
movimientos circulares absolutos o relativos de uno de los tipos siguientes:
• Definición mediante el centro del círculo y ángulo en el plano principal ("mode" = 1).
• Definición mediante el radio del círculo y el punto final en el plano principal ("mode" = 2).
Si no se ha definido ningún movimiento circular absoluto o relativo de la trayectoria en una
cinemática 3D a través del punto intermedio y el punto final ("mode" = 0), se ignora el ajuste
del plano principal ("plane").
Encontrará más información sobre movimientos circulares absolutos y relativos de la
trayectoria en los capítulos "circAbs(): Posicionar la cinemática de forma absoluta con
movimiento circular de la trayectoria (Página 167)" y "circRel(): Posicionar la cinemática de
forma relativa con movimiento circular de la trayectoria (Página 173)".
Para el plano principal de un movimiento circular de la trayectoria se utiliza el último valor
válido ajustado en el código del programa. El plano principal XZ está preajustado de forma
estándar ("plane" = 0).
Encontrará más información sobre el plano principal de un movimiento circular de la
trayectoria en la documentación "S7-1500T Funciones cinemáticas (Página 11)".

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• circAbs()
• circRel()

Sintaxis
MCL
setPlane( <plane> );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


234 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setPlane()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
plane DINT - Valor modal para el plano principal de la trayectoria circular

0 Plano XZ
1 Plano YZ
2 Plano XY

Ejemplo 1
En el siguiente ejemplo, se ajusta de forma modal el plano principal a XZ para un movimiento
circular de la trayectoria mediante la instrucción MCL "setPlane()".

MCL
setPlane( 0 ); // modal specification main plane XZ

// absolute circular motion in main plane XZ


circAbs( endPos, auxPos := centerPoint, mode := 1, blend := 2 );

Ejemplo 2
En el siguiente ejemplo, se ajusta de forma modal el plano principal a XY para un movimiento
circular de la trayectoria mediante la instrucción MCL "setPlane()".

MCL
setPlane( 2 );

// relative circular motion in main plane XY

circRel( endPos, auxPos := centerPoint, mode := 2,


cDir := 3, blend := 2 );

Ejemplo 3
En el siguiente ejemplo, el plano principal para el movimiento circular de la trayectoria no es
relevante, pues el parámetro "mode" está ajustado a 0 en la orden de movimiento de la
trayectoria "circAbs()" ("mode" = 0, movimiento de la trayectoria en una cinemática 3D
definido mediante punto intermedio y punto final).

MCL
setPlane( 1 ); // modal specification main plane YZ

// absolute circular motion in 3D (parameter "mode" = 0)


circAbs( endPos, auxPos := centerPoint, mode := 0, blend := 2 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 235
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.21 setOriDirA(): Definir el sentido de movimiento de la orientación cartesiana A


para movimientos de trayectoria y sPTP lineales y circulares de forma modal
(S7-1500T)

Descripción
Con la instrucción MCL "setOriDirA()" se ajusta de forma modal la indicación del sentido de
movimiento de la orientación cartesiana alrededor de A. Esta indicación solamente es
relevante para cinemáticas 2D/3D con orientación A cartesiana y para instrucciones de
movimiento de trayectoria lineal, circular y sPtP con indicación de posición absoluta.
Con esta instrucción, el sentido de movimiento puede ajustarse al sentido positivo, al sentido
negativo ("regla de la mano derecha") o al movimiento por el trayecto más corto.
Para la indicación del sentido de movimiento de la orientación cartesiana alrededor de A para
movimiento de trayectoria y sPTP lineal y circular se utiliza el último valor válido ajustado en
el código del programa. El trayecto más corto del movimiento está preajustado de forma
estándar ("oDirA" = 3).

[
" QPT
Z
" OFH

Encontrará más información sobre los movimientos de orientación en la documentación


"S7-1500T Funciones cinemáticas (Página 11)".

Se aplica a
• Cinemática 2D/3D con orientación A cartesiana y funcionalidad de módulo

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• circAbs()
• ptpAbs()

Sintaxis
MCL
setOriDirA( <oDirA> );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


236 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setOriDirA()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
oDirA DINT - Valor modal para el sentido de movimiento de la orientación cartesiana
A

1 Sentido positivo
2 Sentido negativo
3 Recorrido más corto
Si la posición de destino puede alcanzarse a través de dos recorridos de
la misma longitud, el movimiento transcurre en sentido positivo

Ejemplo 1
En el siguiente ejemplo, la instrucción "setOriDirA()" ajusta el sentido negativo de la
orientación cartesiana A (alrededor del eje Z) para el movimiento de orientación:

Z
" OFH

MCL
// set the modal value of the direction of the cartesian orientation
// around A to 2 (negative direction)
setOriDirA( 2 );
ptpAbs( myPos1, posMode := 1, cs := 0 );
ptpAbs( myPos2, posMode := 1, cs := 0 );

Ejemplo 2
En el siguiente ejemplo, la instrucción "setOriDirA()" ajusta el sentido positivo de la
orientación cartesiana A (alrededor del eje Z) para el movimiento de orientación:

" QPT Z

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 237
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
// set the modal value of the direction of the cartesian orientation
// around A to 1 (positive direction)
setOriDirA( 1 );
linAbs( myPos1, cs := 1, trans := 1, blend := 2 );
linAbs( myPos2 );

6.1.22 setTurnJoint(): Definir los rangos de la posición de destino de la articulación


para movimientos sPTP de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setTurnJoint()", se ajusta el rango de posición de cada articulación de
forma modal. Estos ajustes solo son relevantes para comandos sPTP con especificación
cartesiana del destino y cinemáticas con sistema de coordenadas de la articulación.
Si no se especifica ningún otro valor dinámico para una orden de movimiento MCL, estos
valores dinámicos modales se utilizan para el movimiento de la cinemática.
Todos los parámetros de esta instrucción son opcionales. Puede indicar los valores para uno o
varios parámetros modales. Todo valor que no se indique en la instrucción permanece
inalterado. Indique un valor para al menos uno de los parámetros.
Para los rangos de posición de destino de la articulación de movimientos sPTP, se utiliza el
último valor válido establecido en el código del programa. De forma estándar, cada
articulación tiene preajustado el tipo "Recorrido más corto" (parámetros "tj1", ..., "tj6" = 0).
Encontrará más información en la documentación "S7-1500T Funciones cinemáticas (Página
11)".

Se aplica a
• Cinemática con sistema de coordenadas de la articulación y con más de 4 ejes

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• ptpAbs()
• ptpRel()
Los valores modales para el rango de la posición de destino de la articulación también pueden
programarse con estos comandos MCL.

Sintaxis
MCL
setTurnJoint( [,tj1 := <val>] [,tj2 := <val>] [,tj3 :=<val>] [,tj4 := <val>]
[,tj5 := <val>] [,tj6 :=<val>] );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


238 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setTurnJoint()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
tj1, ..., DINT - Valor modal para el rango de la posición de destino de las articulaciones
tj6 J1, ..., J6
- El valor modal no cambia.
De forma estándar, los parámetros "tj1", ..., "tj6" tienen prea­
justado el valor "0".
m -180o + m * 360o ≤ posición < 180o + m * 360o
(m < 0)
… …
-2 -900o ≤ posición < -540o
-1 -540o ≤ posición < -180o
0 Recorrido más corto
1 -180o ≤ posición < 180o
2 180° ≤ posición < 540°
3 540° ≤ posición < 900°
… …
n -180o + (n - 1) * 360o ≤ posición < 180o + (n - 1) * 360o
(n > 0)

Ejemplo

MCL
// set the modal value of the turn joint position range of joint 1 to -2
// (-900 <= range < -540)
setTurnJoint( tj1 := -2 );
// set the modal values of the turn joint position range of joint 2 to 1
// (-180 <= range < 180) and joint 4 to 2 (180 <= range < 540)
setTurnJoint( tj2 := 1, tj4 := 2 );
// set the modal values of the turn joint position range of joint 5 to -11
// (-4140 <= range < -3780)
setTurnJoint( tj5 := -11 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 239
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

6.1.23 setCircDir(): Definir la orientación circular de la trayectoria para


movimientos circulares de la trayectoria de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setCircDir()" se ajusta el sentido (orientación) de un movimiento
circular absoluto o relativo de la trayectoria en el plano principal de forma modal. Este
sentido puede ser positivo o negativo.
La figura siguiente muestra el sentido de un movimiento circular de la trayectoria en los
diferentes planos principales 2D:

[ Z [

Z Y [ Y Y Z

Sentido de giro positivo


Sentido de giro negativo

El sentido solo es relevante para movimientos 2D circulares si el movimiento está definido


como sigue:
• a través del centro del círculo y el ángulo ("mode" = 1) en un plano principal, o bien
• a través del radio del círculo y el punto final ("mode" = 2) en un plano principal
Si un movimiento circular absoluto o relativo de la trayectoria de una cinemática 3D está
definido mediante un punto intermedio y un punto final ("mode" = 0), se ignora el ajuste
predeterminado del sentido para este movimiento ("cDir").
Para el sentido de un movimiento circular se utiliza el último valor válido ajustado en el
código del programa. De forma estándar, el ajuste predeterminado es el segmento circular
positivo más corto (sentido de giro positivo) de la cinemática ("cDir" = 0).
Encontrará más información sobre movimientos circulares de la trayectoria definidos
mediante un centro y un ángulo en función del sentido ("cDir") en un plano principal ("mode"
= 1), y sobre movimientos circulares de la trayectoria definidos mediante un radio y un punto
final en función del sentido ("cDir") en un plano principal ("mode" = 2), en la documentación
"S7-1500T Funciones cinemáticas (Página 11)".
Encontrará más información sobre los parámetros "mode" de un movimiento circular de la
trayectoria en los capítulos "circAbs(): Posicionar la cinemática de forma absoluta con
movimiento circular de la trayectoria (Página 167)" y "circRel(): Posicionamiento relativo de la
cinemática con movimiento circular de la trayectoria (Página 173)". Encontrará información
sobre el ajuste del plano principal en el capítulo "setPlane(): Definir el plano principal de la
trayectoria circular para movimientos circulares de forma modal (Página 234)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


240 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• circAbs()
• circRel()

Sintaxis
MCL
setCircDir( <cDir> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setCircDir()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
cDir DINT - Valor modal para la orientación de la trayectoria circular

0 Sentido de giro positivo ("mode" = 1)


Segmento circular positivo más corto ("mode" = 2)
1 Sentido de giro negativo ("mode" = 1)
Segmento circular negativo más corto ("mode" = 2)
2 Segmento circular positivo más largo ("mode" = 2)
3 Segmento circular negativo más largo ("mode" = 2)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 241
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplo 1
En el siguiente ejemplo se ajusta el sentido del movimiento circular de la trayectoria en un
sentido de giro positivo en el plano principal XZ de forma modal mediante la instrucción
MCL "setCircDir()".
D%JS NPEF

BSDp
QPT

BVY1PT
1PTJDJ³OJOJDJBM

QPT
BSDp

[
D%JS NPEF
Z Y

MCL
setPlane( 0 ); // modal specification XZ main plane
setCircDir( 0 ); // modal specification positive rotation direction

// circular path-motion with interpolation over circle center point and angle ("mode" = 1)
// with positive rotation direction in XZ main plane
circAbs( posOri, auxPos := centerPoint, mode := 1, arc := 135.0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


242 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Ejemplo 2
En el siguiente ejemplo se ajusta el sentido del movimiento circular de la trayectoria al del
segmento circular negativo más largo. El sentido se ajusta mediante la instrucción
MCL "circAbs()" únicamente para esta indicación:
D%JS 
NPEF

FOE1PT
DS

D%JS
NPEF TUBSU1PT
[

Z Y

MCL
setPlane( 0 ); // modal specification XZ main plane

// circular motion with interpolation over circle radius and endpoint ("mode" = 2)
// with longer negative circle segment ("cDir" = 3) in XZ plane
circAbs( endPos, mode := 2, cr := 15.0, plane := 0, cDir := 3 );

Ejemplo 3
En el siguiente ejemplo se ajusta el sentido del movimiento circular de la trayectoria al del
segmento circular negativo más corto ("cDir" = 1). El sentido se ajusta de forma modal
mediante la instrucción MCL "setCircDir()":
FOE1PT D%JS NPEF

DS

TUBSU1PT

D%JS NPEF
[

Z Y

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 243
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
setPlane( 0 ); // modal specification main plane XZ
setCircDir( 1 ); // shorter negative circle segment

// circular motion with interpolation over radius ("cr" = 25.0) and endpoint ("mode" = 2)
// with shorter negative circle segment ("cDir" = 1) in XZ plane
circAbs( endPos, mode := 2, cr := 25.0 );

Ejemplo 4
En el siguiente ejemplo, el sentido del movimiento circular de la trayectoria no es relevante,
pues el parámetro "mode" está ajustado a 0 en la orden de movimiento de trayectoria
"circAbs()" ("mode" = 0). El movimiento circular de la trayectoria en una cinemática 3D está
definido por el punto intermedio y el punto final.
MCL
setPlane( 0 ); // modal specification main plane XZ
setCircDir( 2 ); // positive circle direction for 2D-circle - not relevant for next command

// circular motion in 3D via intermediate and endpoint


circAbs( endPos, auxPos := centerPoint, mode := 0, blend := 2 );

6.1.24 setLc(): Definir el espacio de la posición de destino de la articulación para


movimientos sPTP de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setLc()", se configura el espacio de la posición de destino de la
articulación de forma modal para el movimiento sPTP. El espacio de la posición de la
articulación se define en función del tipo de cinemática respectivo.
El parámetro necesario "lc" se interpreta como campo de bits. 6 ejes ($A1, $A2, $A3, $A4,
$A5, $A6) corresponden a los 6 primeros bits (bit 0 ... bit 5). El significado de los bits
depende del tipo de cinemática. Encontrará más información sobre los tipos de cinemática en
el capítulo "Tipos de cinemática" de la documentación "S7-1500T Funciones cinemáticas
(Página 11)".
Para el espacio de la posición de destino de la articulación, se utiliza el último valor válido
ajustado en el código del programa. De forma estándar, está preajustado "Mantener posición
actual de la articulación" ("lc" = 16#FFFF_FFFF).
Encontrará más información sobre el movimiento sPTP en el capítulo "Desplazamiento de la
cinemática con un movimiento síncrono "punto a punto"" de la documentación "S7-1500T
Funciones cinemáticas (Página 11)".

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


244 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• ptpAbs()
• ptpRel()
También puede ajustarse el espacio de la posición de destino de la articulación de forma
modal con estas instrucciones MCL.

Sintaxis
MCL
setLc( <lc> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setLc()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
lc DWORD - Valor modal del espacio de la posición de destino de la articulación
0 Constelación de conexión negativa
16#FFFF_FFFF Mantener posición actual de la articulación
Bit 0 Ángulo α1 del eje A1 en la zona anterior/posterior
(zona estándar/zona por encima de la cabeza)
0 El origen del FCS se encuentra en la zona anterior
(zona estándar) de las rectas de la posición de arti­
culación para el eje A1.
α1 = arctan(yFCS/xFCS)
En caso de brazo articulado de 6 ejes con mano
central (KinPlus):
El punto de la muñeca se encuentra en la zona an­
terior (zona estándar) de las rectas de la posición de
articulación para la articulación J1.
1 El origen del FCS se encuentra en la zona posterior
(zona por encima de la cabeza) de las rectas de po­
sición de articulación para el eje A1.
α1 = -arctan(yFCS/xFCS)
En caso de brazo articulado de 6 ejes con mano
central (KinPlus):
El punto de la muñeca se encuentra en la zona pos­
terior (zona por encima de la cabeza) de las rectas
de la posición de articulación para la articulación J1.
Bit 1 Ángulo α2 del eje A2 positivo/negativo teniendo en
cuenta el acoplamiento mecánico de los ejes
0 α2 positivo
1 α2 negativo

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 245
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
lc DWORD - Bit 2 Ángulo α3 del eje A3 positivo/negativo teniendo en
cuenta el acoplamiento mecánico de los ejes
0 α3 positivo
En caso de brazo articulado de 6 ejes con mano
central (KinPlus):
El punto de la muñeca se encuentra en la zona es­
tándar por encima o, en la zona por encima de la
cabeza, por debajo de las rectas de posición de arti­
culación para la articulación J3.
1 α3 negativo
En caso de brazo articulado de 6 ejes con mano
central (KinPlus):
El punto de la muñeca se encuentra en la zona es­
tándar por debajo o, en la zona por encima de la ca­
beza, por encima de las rectas de posición de articu­
lación para la articulación J3.
Bit 3 Ángulo α4 del eje A4 positivo/negativo teniendo en
cuenta el acoplamiento mecánico de los ejes
0 α4 negativo
1 α4 negativo
Bit 4 Posición geométrica de la articulación J5 (KinPlus)
0 α5 positivo
1 α5 negativo o α5 = 0°
Bit 5 Posición geométrica de la articulación J6 (KinPlus)
0 α6 positivo
1 α6 negativo
Bit 6 ... 31 Irrelevante

Ejemplo
El siguiente ejemplo muestra cómo ajustar el espacio de la posición de destino de la
articulación:

MCL

// set target joint position space modally
setLc( 0 ); // negative link constellation


// set target joint position space modally
setLc( 16#3E ); // "front area" for $A1, "negative angle" for $A2...$A6


// set target joint position space modally
setLc( 16#FFFF_FFFF ); // keep current link constellation


//set target joint position in MCL command

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


246 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.1 Movimientos de la cinemática (S7-1500T)

MCL
ptpAbs( myPos4, posMode := 1, lc := 16#34, cs := 0 );
END_PROGRAM

6.1.25 setDynAdapt(): Definir la adaptación dinámica para movimientos de


trayectoria de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setDynAdapt()" se ajusta el modo para la adaptación dinámica de
forma modal, a fin de planificar la dinámica teniendo en cuenta los límites de dinámica de los
ejes de la cinemática.
La adaptación dinámica limita la dinámica de la trayectoria a la dinámica del eje. Con la
adaptación dinámica activada, se calcula un perfil de velocidad para el movimiento de la
cinemática, que tiene en cuenta lo siguiente:
• Especificaciones de la dinámica o ajustes predeterminados de la dinámica y límites de
dinámica del movimiento de la cinemática
• Velocidad máxima, aceleración máxima y deceleración máxima de los ejes de la
cinemática
Además, se tienen en cuenta los ajustes predeterminados de dinámica y los límites de
dinámica para la velocidad, aceleración y deceleración del movimiento de orientación.
Para el modo de adaptación dinámica, se utiliza el último valor válido establecido en el código
del programa. Al cargar el programa, el valor modal se inicializa con el valor de configuración
guardado en "Parámetros avanzados > Dinámica"
(<TO_Kinematics>.DynamicDefaults.DynamicAdaption). Si el valor no se establece en el
código del programa, se utiliza el valor inicializado.
Encontrará más información sobre los diferentes modos de la adaptación dinámica en la
documentación "S7-1500T Funciones cinemáticas (Página 11)".

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()

Sintaxis
MCL
setDynAdapt( <da> );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 247
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setDynAdapt()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determi­
nado
da DINT - Valor modal para adaptación dinámica

0 Sin adaptación dinámica


1 Limitar con segmentación de los movimientos de trayectoria
2 Limitar sin segmentación de los movimientos de trayectoria

Ejemplo
El siguiente ejemplo muestra la activación y desactivación de la adaptación dinámica
mediante el ajuste modal de la instrucción MCL "setDynAdapt()".
MCL
// activation dynamic adaption modally - dynamic adaption with path segmentation
setDynAdapt( 1 );
linAbs( myPos1 ); // linear movement to myPos1
linRel( myPos2, v := 200.0, trans := 0 ); // linear movement to myPos2
setDynAdapt( 0 ); // deactivation dynamic adaption modally
circAbs( myPos3, auxPos := ( x := 220.0, y := 0.0, z := 250.0,
a := 0.0, b := 0.0, c := 0.0 ) );
linAbs( myPos1, cs := 1, trans := 1, blend := 2 );

6.2 Sistemas de coordenadas (S7-1500T)

6.2.1 defOcs() Redefinir los sistemas de coordenadas de objeto (S7-1500T)

Descripción
Con la instrucción MCL "defOcs()" se define la posición de un sistema de coordenadas de
objeto (OCS) referida al sistema de coordenadas universal (WCS).
La orden "defOcs()" se incorpora a la cadena de órdenes del intérprete, con lo que solo se
activa para las órdenes de movimiento posteriores.
Las variables siguientes del bloque de datos del objeto tecnológico Cinemática contienen las
coordenadas actuales de los sistemas de coordenadas de objeto:
• <TO>.StatusOcsFrame[1..3].x
• <TO>.StatusOcsFrame[1..3].y
• <TO>.StatusOcsFrame[1..3].z
• <TO>.StatusOcsFrame[1..3].a
• <TO>.StatusOcsFrame[1..3].b
• <TO>.StatusOcsFrame[1..3].c
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


248 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.

Sintaxis

MCL
defOcs( <ocs>, <frame> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "defOcs()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
ocs DINT - Sistema de coordenadas de objeto
1 OCS1
2 OCS2
3 OCS3
frame TO_Struct_Ipr_Frame - Coordenadas con respecto al WCS

Instrucciones de Motion Control comparables


"MC_SetOcsFrame": Redefinir los sistemas de coordenadas de objeto

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 249
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

6.2.2 defTool() Redefinir la herramienta (S7-1500T)

Descripción
Con la instrucción MCL "defTool()" se vuelve a definir el frame de una herramienta. Los
valores iniciales configurados en "<TO_Kinematics>.Tool[1..3]" no se sobrescriben.
Una orden "defTool()" interrumpe la preparación del programa. La preparación del programa
se reinicia tras haber finalizado la orden "defTool()".
Parametrice las coordenadas en función del tipo de cinemática empleado.

Tipo de cinemática Coordenadas parametrizables Coordenadas predefinidas con


"0.0"
2D sin orientación x, z y, A, B, C
con orientación z, A x, y, B, C
3D sin orientación x, y, z A, B, C
con orientación x, y, z, A B, C
con 2 orientaciones x, y, z, B A, C
con 3 orientaciones x, y, z, A, B, C -
con mano central
Las variables siguientes del bloque de datos del objeto tecnológico de la cinemática
conectada contienen las coordenadas de las herramientas 1 a 3:
• <TO>.StatusTool.Frame[1..3].x
• <TO>.StatusTool.Frame[1..3].y
• <TO>.StatusTool.Frame[1..3].z
• <TO>.StatusTool.Frame[1..3].a
• <TO>.StatusTool.Frame[1..3].b
• <TO>.StatusTool.Frame[1..3].c
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.
• Ninguno de los ejes interconectados en la cinemática tiene activada una orden de eje
individual (p. ej., "move()").
• La cinemática está parada.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


250 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

Sintaxis

MCL
defTool( <tool>, <frame> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "defTool()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
tool DINT - Número de la herramienta para la que debe definirse el frame
1 Herramienta 1
2 Herramienta 2
3 Herramienta 3
frame TO_Struct_Ipr_Frame - Coordenadas con respecto al FCS

Instrucciones de Motion Control comparables


"MC_DefineTool": Redefinir la herramienta

Ejemplo: definición del frame


En el siguiente ejemplo de programa se define un frame "myToolFrame" para la
herramienta 1 en una cinemática "Delta Picker 3D con 2 orientaciones A, B". La herramienta
está girada B = -90° con respecto al FCS y desplazada en sentidos "x" y "z".


)&6

[
] 7&6
% ƒ

① Frame de la herramienta

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 251
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

MCL
VAR
//Declare frame variable
myToolFrame : TO_Struct_Ipr_Frame;
END_VAR
//x coordinate of tool frame
myToolFrame.x := 20.0;
//z coordinate of tool frame
myToolFrame.z := 100.0;
//b coordinate of tool frame
myToolFrame.b := -90.0;
//Define tool frame
defTool( 1, myToolFrame );
En el bloque de datos del objeto tecnológico de la cinemática conectada se muestran las
coordenadas de la herramienta 1 como sigue:
• <TO_Kinematics>.StatusTool.Frame[1].x := 20.0
• <TO_Kinematics>.StatusTool.Frame[1].y := 0.0
• <TO_Kinematics>.StatusTool.Frame[1].z := 100.0
• <TO_Kinematics>.StatusTool.Frame[1].a := 0.0
• <TO_Kinematics>.StatusTool.Frame[1].b := -90.0
• <TO_Kinematics>.StatusTool.Frame[1].c := 0.0

6.2.3 trackIn() Iniciar el seguimiento de cinta (S7-1500T)

Descripción
La instrucción MCL "trackIn()" permite iniciar un seguimiento de cinta. Para ello se asigna un
OCS a un objeto tecnológico apto para valores conductores que representa a la cinta
transportadora. El OCS se asigna a un objeto de la cinta con el frame OCS ("origin") y la
"initPos". A continuación, el OCS sigue al objeto en sentido x.
Con la siguiente orden de movimiento de la cinemática con posición de destino en este OCS,
la cinemática se desplaza a la posición indicada en el OCS y sigue la posición de la cinta.
La variable "<TO>.StatusConveyor[1..3].TrackingState" del bloque de datos del objeto
tecnológico Cinemática contiene el estado del seguimiento de la cinta.
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.
• Ninguno de los ejes interconectados en la cinemática tiene activada una orden de eje
individual (p. ej., "move()").

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


252 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

Sintaxis

MCL
trackIn( <axis>, <origin> [,initPos := <val>] [,ocs := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "trackIn()":

Pará­ Tipo de datos Valor Descripción


metro prede­
termina­
do
axis AXIS_OBJECT - Objeto tecnológico apto para valores conductores al que
sigue el OCS.
Posibles objetos tecnológicos aptos para valores conducto­
res:
• Eje de posicionamiento
• Eje sincronizado
• Encóder externo
• Sustituto del eje conductor
origin TO_Struct_Ipr_Frame - Frame para posición de referencia del OCS en la cinta
initPos TO_Struct_Ipr_Frame 0.0 "initPos.x" contiene la diferencia respecto a la posición de
la cinta para determinar la posición de seguimiento del
OCS respecto a la posición de referencia del OCS.
Valores permitidos:
• "initPos.x" <=> 0.0
• "initPos.y" = 0.0
• "initPos.z" = 0.0
• "initPos.a" = 0.0
• "initPos.b" = 0.0
• "initPos.c" = 0.0
ocs DINT 1 Número del OCS en seguimiento
1 OCS1
2 OCS2
3 OCS3

Instrucciones de Motion Control comparables


"MC_TrackConveyorBelt": Iniciar el seguimiento de cinta

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 253
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

Ejemplo
La cinemática sigue a un producto sobre la cinta transportadora con el seguimiento de cinta.
El manipulador toma el producto en la posición predeterminada y lo coloca sobre un palé de
productos.
Para el ejemplo se cumplen los siguientes requisitos, y no se representan en el código del
programa:
• Se ha mapeado el objeto tecnológico apto para valores conductores que representa a la
cinta transportadora ("Belt").
• La detección del producto y el cálculo de "initPos" se realizan en el programa de usuario. El
resultado de la detección del producto se proporciona a través de las dos variables de
mapeo siguientes:
– "productDetected" Detección de producto finalizada (BOOL)
– "initObjectPos" contiene la diferencia respecto a la posición de la cinta para determinar
la posición de seguimiento del OCS en relación con la posición de referencia del OCS
(LREAL)
La cinta transportadora se mueve con una orden "move()". Con una orden "trackIn()", se
asigna el OCS1 al objeto tecnológico apto para valores conductores "Belt" que representa a la
cinta transportadora. El estado del seguimiento de cinta ("TrackingState") cambia de 0 a 1.
Mediante una orden "linAbs()", la cinemática se desplaza a la posición indicada en el OCS1.
Cuando la cinemática alcanza la posición del objeto, el estado del seguimiento de cinta
("TrackingState") cambia de 1 a 2. Cuando la cinemática sigue la posición del objeto, el estado
del seguimiento de cinta cambia de 2 a 3. A continuación, se desplaza la cinemática hacia el
producto con otra orden "linAbs()". El producto se recoge en la posición de destino.
La cinemática se desplaza en el WCS con una orden "linAbs()" y finaliza el seguimiento de
cinta en el OCS1 desplazado. Cuando la cinemática alcanza la posición en el WCS, el
"TrackingState" cambia de 3 a 4. Con 2 órdenes de movimiento adicionales, se desplaza la
cinemática hasta la posición de colocación en el palé en el OCS2. Después de haber colocado
el producto sobre el palé, se abre el manipulador, y la cinemática se desplaza hasta la
posición de espera en el WCS.

MCL
MCL
//move conveyor belt
move(Belt, 100.0 );
// wait for measuring result (product detected)
waitEvent( productDetected = TRUE );
//start conveyor tracking
trackIn( Belt, (x:=50.0, z:=0.0), initPos := (x:=initObjectPos) );
//syncronize TCP to tracked OCS
linAbs( (x:=0.0, z:=200.0), cs := 1 );
//movement inside tracked OCS
linAbs( (x:=0.0, z:=50.0), trans := 1, blendDist := 20.0, cs := 1 );
//grip product (activate gripper)
writeVar( gripper , TRUE);
//desynchronize TCP from tracked OCS (to WCS)
linAbs( (z:=200.0), cs := 0 );
linAbs( posAbovePlace, cs := 2 );
linAbs( posPlace, cs := 2 );
//release product (deactivate gripper)
writeVar( gripper, FALSE);
//move back to wait position
linAbs( (x:=0.0, y:=0.0, z:=0.0, a:=0.0, b:=0.0, c:=0.0), trans := 1, blendDist := 50.0
);

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


254 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

6.2.4 setCs(): Definir el sistema de coordenadas de referencia para movimientos


de trayectoria y sPTP lineales y circulares de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setCs()" se configura el sistema de coordenadas de referencia de
forma modal para movimientos de la cinemática.
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()
• ptpAbs()
• ptpRel()

Sintaxis

MCL
setCs( <cs> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "setCs()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
cs DINT - Sistema de coordenadas
0 WCS
1 OCS1
2 OCS2
3 OCS3

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 255
Instrucciones MCL (S7-1500T)
6.2 Sistemas de coordenadas (S7-1500T)

Instrucciones de Motion Control comparables


El sistema de coordenadas de referencia para movimientos lineales y circulares de la
trayectoria y movimientos sPTP se parametriza en las instrucciones de Motion Control en el
parámetro "CoordSystem".

Ejemplo: Desplazar la cinemática en diferentes sistemas de coordenadas de referencia


Para rotular un producto, la cinemática se desplaza desde una posición de espera "pos3" en el
WCS hasta las posiciones "pos1" y "pos2" en OCS1. Para órdenes de movimiento se ajusta el
OCS1 como sistema de coordenadas de referencia de forma modal con la instrucción
MCL "setCs()". El sistema de coordenadas de referencia WCS se indica para el movimiento a la
posición de espera "pos3" en la instrucción MCL "linAbs()" (A4).

"
QPT
QPT "
" "

QPT

0$4

8$4

MCL
setCs(1);
// A1 to pos1 in OCS1
linAbs( pos1, trans := 1 );
// A2 to pos2 in OCS1
linAbs( pos2, trans := 0 );
writeVar(insertLabel;
waitEvent(labelInserted);
// A3 to pos1 in OCS1
linAbs( pos1, trans := 1 );
// A4 to pos3 in WCS
linAbs( pos3, cs := 0);

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


256 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

6.3 Zonas (S7-1500T)

6.3.1 defWsZone(): Definir la zona del espacio de trabajo (S7-1500T)

Descripción
Con la instrucción MCL "defWsZone()" se define una zona del espacio de trabajo referida al
sistema de coordenadas universal o a un sistema de coordenadas de objeto. Como
consecuencia, las zonas definidas en el objeto tecnológico Cinemática
(<TO>.WorkspaceZone[1..10]) no se modifican y vuelven a estar disponibles tras reiniciar el
objeto tecnológico. La variable "<TO>.StatusWorkspaceZone" del bloque de datos del objeto
tecnológico de la cinemática conectada contiene las zonas del espacio de trabajo que están
activas actualmente.
La orden "defWsZone()" se incorpora a la cadena de órdenes en el objeto tecnológico
Cinemática, con lo que se activa para las órdenes de movimiento posteriores.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la geometría de la zona
• Definir el desplazamiento y la rotación en el sistema de coordenadas de referencia
Es posible definir un máximo de 10 zonas del espacio de trabajo.
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.

Sintaxis
MCL
defWsZone( <ztype>, <nr>, <geometry> [,p1 := <val>] [,p2 := <val>] [,p3 := <val>] [refCs :=
<val>] [,fr := <val>] );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 257
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "defWsZone()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
ztype DINT - Tipo de zona
0 Zona de bloqueo
1 Zona de trabajo
2 Zona de señalización
nr DINT - Número de zona
1 … 10 Zona 1 … 10
geo­ DINT -
metry Tipo de geometría de la zona
0 Cubo
1 Esfera
2 Cilindro
p1 LREAL 0.0 Longitud x 1)
Si "geometry" = 1 o 2:
Radio 1)
p2 LREAL 0.0 Longitud y 1)
Si "geometry" = 2:
altura 1)
p3 LREAL 0.0 Longitud z 1)
refCs DINT 0 Sistema de referencia 1)
0 Sistema de coordenadas universal (WCS)
1 Sistema de coordenadas del objeto 1 (OCS 1)
2 Sistema de coordenadas del objeto 2 (OCS 2)
fr TO_Struct_Ipr_Frame - Decalaje del origen de la zona con respecto al sistema de referencia
1) Parámetro opcional. Se utiliza el valor absoluto del valor indicado. Si no se utiliza este parámetro en la llamada del coman­
do, se utiliza el valor predeterminado.

Instrucciones de Motion Control comparables


"MC_DefineWorkspaceZone": Definir la zona del espacio de trabajo

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


258 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

6.3.2 defKinZone(): Definir una zona de la cinemática (S7-1500T)

Descripción
Con la instrucción MCL "defKinZone()" se define una zona de la cinemática referida al sistema
de coordenadas de la herramienta o brida. Como consecuencia, las zonas definidas en el
objeto tecnológico Cinemática (<TO>.KinematicsZone[2..10]) no se modifican y vuelven a
estar disponibles tras reiniciar el objeto tecnológico.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la geometría de la zona
• Definir el desplazamiento y la rotación en el sistema de coordenadas de referencia
La orden "defKinZone()" se incorpora a la cadena de órdenes del intérprete, con lo que se
activa para las órdenes de movimiento posteriores.
La variable "<TO>.StatusKinematicsZone" del bloque de datos del objeto tecnológico de la
cinemática conectada contiene las zonas de la cinemática que están activas actualmente.
Pueden definirse hasta 9 zonas de la cinemática. La zona de cinemática 1 es el punto de
operación de la herramienta (TCP) y no se puede modificar.
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.

Sintaxis
MCL
defKinZone( <nr>, <geometry> [,p1 := <val>] [,p2 := <val>] [,p3 := <val>] [refCs := <val>]
[,fr := <val>] );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 259
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "defKinZone()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
nr DINT - Número de zona
2 … 10 Zona 2 … 10
geo­ DINT -
metry Tipo de geometría de la zona
0 Cubo
1 Esfera
2 Cilindro
p1 LREAL 0.0 Longitud x 1)
Si "geometry" = 1 o 2:
radio
p2 LREAL 0.0 Longitud y 1)
Si "geometry" = 2:
altura
p3 LREAL 0.0 Longitud z 1)
refCs DINT 0 Sistema de referencia
0 Sistema de coordenadas de brida (FCS)
1 Sistema de coordenadas de la herramienta (TCS)
fr TO_Struct_Ipr_Frame - Decalaje del origen de la zona con respecto al sistema de referencia
1) Parámetro opcional. Se utiliza el valor absoluto del valor indicado. Si no se utiliza este parámetro en la llamada del coman­
do, se utiliza el valor predeterminado.

Instrucciones de Motion Control comparables


"MC_DefineKinematicsZone": Definir la zona de la cinemática

6.3.3 setWsZoneActive(): Activar la zona del espacio de trabajo (S7-1500T)

Descripción
Con la instrucción MCL "setWsZoneActive" se activa la vigilancia de zonas para una o varias
zonas ya definidas del espacio de trabajo.
Con el parámetro "mode" se determina si deben activarse una o varias zonas del espacio de
trabajo. Con el parámetro "nr" se define para "mode" = 0 el número de la zona del espacio de
trabajo que debe activarse. Si en la orden "setWsZoneActive" se especifica una zona que no se
ha definido aún, se rechaza la orden y se dispara la alarma tecnológica 1008. Si no se
especifica ninguno de los dos parámetros, se activa la zona del espacio de trabajo definida 1.
La orden "setWsZoneActive" se incorpora a la cadena de órdenes del intérprete, con lo que se
activa para las órdenes de movimiento posteriores.
Las variables "<TO>.StatusWorkspaceZone[1..10].Active" del bloque de datos del objeto
tecnológico de la cinemática conectada contienen el estado de activación actual de las zonas.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


260 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

Pueden estar activas al mismo tiempo varias zonas de bloqueo y zonas de señalización
definidas. En cada momento solo puede haber activa una zona de trabajo definida.
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.

Sintaxis

MCL
setWsZoneActive( [mode := <val>] [,nr := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "setWsZoneActive()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
mode DINT 0 Selección de una zona del espacio de trabajo o de un tipo de zona 1)
0 Activar la zona del espacio de trabajo definida en el paráme­
tro "nr"
1 Reservado
2 Activar todas las zonas de bloqueo definidas
3 Activar todas las zonas de señalización definidas
nr DINT 1 Número de zona 1)
1 … 10 Zona 1 … 10
Con "mode" > 0: El parámetro "nr" no se tiene en cuenta
1) Parámetro opcional. Se utiliza el valor absoluto del valor indicado. Si no se utiliza este parámetro en la llamada del coman­
do, se utiliza el valor predeterminado.

Instrucciones de Motion Control comparables


"MC_SetWorkspaceZoneActive": Activar la zona del espacio de trabajo

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 261
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

6.3.4 setWsZoneInactive(): Desactivar una zona del espacio de trabajo (S7-1500T)

Descripción
Con la instrucción MCL "setWsZoneInactive()" se desactiva la vigilancia de zonas para una o
varias zonas activas del espacio de trabajo.
Con el parámetro "mode" se determina si deben desactivarse una o varias zonas del espacio
de trabajo. Con el parámetro "nr" se define para "mode" = 0 el número de la zona del espacio
de trabajo que debe desactivarse. Si no se especifica ninguno de los dos parámetros, se
desactiva la zona del espacio de trabajo definida 1.
La orden "setWsZoneInactive()" se incorpora a la cadena de órdenes del intérprete, con lo que
se activa para las órdenes de movimiento posteriores.
Las variables "<TO>.StatusWorkspaceZone[1..10].Active" del bloque de datos del objeto
tecnológico de la cinemática conectada contienen el estado de activación actual de las zonas.
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.

Sintaxis

MCL
setWsZoneInactive( [mode := <val>] [,nr := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "setWsZoneInactive()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
mode DINT 0 Selección de una zona del espacio de trabajo o de un tipo de zona 1)
0 Desactivar el número de zona definido en el parámetro "nr"
1 Todas las zonas del espacio de trabajo activas
1) Parámetro opcional. Se utiliza el valor absoluto del valor indicado. Si no se utiliza este parámetro en la llamada del coman­
do, se utiliza el valor predeterminado.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


262 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

Paráme­ Tipo de datos Valor pre­ Descripción


tro determina­
do
mode DINT 0 2 Desactivar todas las zonas de bloqueo activas
3 Desactivar todas las zonas de señalización activas
4 Desactivar la zona de trabajo activa
nr DINT 1 Número de zona 1)
1 … 10 Zona 1 … 10
Con "mode" > 0: El parámetro "nr" no se tiene en cuenta
1) Parámetro opcional. Se utiliza el valor absoluto del valor indicado. Si no se utiliza este parámetro en la llamada del coman­
do, se utiliza el valor predeterminado.

Instrucciones de Motion Control comparables


"MC_SetWorkspaceZoneInactive": Desactivar la zona del espacio de trabajo

6.3.5 setKinZoneActive(): Activar la zona de la cinemática (S7-1500T)

Descripción
Con la instrucción MCL "setKinZoneActive()" se activa la vigilancia de zonas para una o todas
las zonas ya definidas de la cinemática.
Con el parámetro "mode" se determina si deben activarse una o todas las zonas de la
cinemática. Con el parámetro "nr" se define para "mode" = 0 el número de la zona de la
cinemática que debe activarse. Si no se especifica ninguno de los dos parámetros, se activa la
zona de la cinemática definida 2. Si en la orden "setKinZoneActive()" se especifica una zona
que no se ha definido aún, se rechaza la orden y se dispara la alarma tecnológica 1008.
La orden "setKinZoneActive()" se incorpora a la cadena de órdenes del intérprete, con lo que
se activa para las órdenes de movimiento posteriores.
Las variables "<TO>.StatusKinematicsZone[2..10].Active" del bloque de datos del objeto
tecnológico de la cinemática conectada contienen el estado de activación actual de las zonas
de la cinemática.
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 263
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

Sintaxis

MCL
setKinZoneActive( [mode := <val>] [,nr := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "setKinZoneActive()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
mode DINT 0 Selección de una o varias zonas de la cinemática 1)
0 Activar la zona de la cinemática definida en el parámetro "nr"
1 Todas las zonas de la cinemática
nr DINT 2 Número de zona 1)
2 … 10 Zona 2 … 10
Con "mode" > 0: El parámetro "nr" no se tiene en cuenta
1) Parámetro opcional. Se utiliza el valor absoluto del valor indicado. Si no se utiliza este parámetro en la llamada del coman­
do, se utiliza el valor predeterminado.

Instrucciones de Motion Control comparables


"MC_SetKinematicsZoneActive": Activar la zona de la cinemática

6.3.6 setKinZoneInactive(): Desactivar zonas de la cinemática (S7-1500T)

Descripción
Con la instrucción MCL "setKinZoneInactive()" se desactiva la vigilancia de zonas para una o
todas las zonas activas de la cinemática.
Con el parámetro "mode" se determina si deben desactivarse una o todas las zonas activas de
la cinemática. Con el parámetro "nr" se define para "mode" = 0 el número de la zona de la
cinemática que debe desactivarse. Si no se especifica ninguno de los dos parámetros, se
desactiva la zona de la cinemática definida 2.
La orden "setKinZoneInactive()" se incorpora a la cadena de órdenes del intérprete, con lo que
se activa para las órdenes de movimiento posteriores.
Las variables "<TO>.StatusKinematicsZone[2..10].Active" del bloque de datos del objeto
tecnológico de la cinemática conectada contienen el estado de activación actual de las zonas
de la cinemática.
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


264 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.3 Zonas (S7-1500T)

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.

Sintaxis

MCL
setKinZoneInactive( [mode := <val>] [,nr := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "setKinZoneInactive()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
mode DINT 0 Selección de una o varias zonas de la cinemática 1)
0 Desactivar la zona de la cinemática definida en el parámetro
"nr"
1 Todas las zonas de la cinemática
nr DINT 2 Número de zona 1)
2 … 10 Zona 2 … 10
Con "mode" > 0: El parámetro "nr" no se tiene en cuenta
1) Parámetro opcional. Se utiliza el valor absoluto del valor indicado. Si no se utiliza este parámetro en la llamada del coman­
do, se utiliza el valor predeterminado.

Instrucciones de Motion Control comparables


"MC_SetKinematicsZoneInactive": Desactivar la zona de la cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 265
Instrucciones MCL (S7-1500T)
6.4 Herramientas (S7-1500T)

6.4 Herramientas (S7-1500T)

6.4.1 setTool(): Cambiar la herramienta activa (S7-1500T)

Descripción
Con la instrucción MCL "setTool()" se activa una herramienta.
Una orden "setTool()" interrumpe la preparación del programa. La preparación del programa
se reinicia tras haber finalizado la orden "setTool()".
Encontrará más información en la documentación de "S7-1500 Funciones cinemáticas"
(Página 11).

Se aplica a
• Cinemática

Requisitos
• Los objetos tecnológicos (Cinemática, Intérprete, Programa intérprete) se han configurado
correctamente.
• La cinemática está vinculada con el intérprete.
• Los ejes interconectados en la cinemática están habilitados.
• Ninguno de los ejes interconectados en la cinemática tiene activada una orden de eje
individual (p. ej., "move()").
• La cinemática está parada.
• No hay ningún movimiento de la cinemática activo.

Sintaxis

MCL
setTool( <toolNr> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "setTool()":
Paráme­ Tipo de datos Valor pre­ Descripción
tro determina­
do
toolNr DINT - Número de la herramienta que debe activarse
1 Herramienta 1
2 Herramienta 2
3 Herramienta 3

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


266 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Instrucciones de Motion Control comparables


"MC_SetTool": Cambiar la herramienta activa

Ejemplo: Cambiar la herramienta activa


En el siguiente ejemplo de programa se ajusta la herramienta 2 como herramienta activa.

MCL
//Set active tool
setTool( 2 );
En el bloque de datos del objeto tecnológico de la cinemática conectada se muestra el
número de la herramienta activa en la siguiente variable:
<TO_Kinematics>.StatusTool.ActiveTool := 2

6.5 Ejes (S7-1500T)

6.5.1 move(): Mover el eje a la velocidad lineal/velocidad de giro especificada


(S7-1500T)

Descripción
La instrucción MCL "move()" mueve un eje a una velocidad lineal/de giro constante.
"move()" finaliza cuando se alcanza la consigna de velocidad lineal/de giro. Entonces, el eje
sigue moviéndose con la consigna de velocidad lineal/de giro.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la consigna de velocidad lineal/de giro para el proceso de movimiento
• Definir el modo para la regulación de posición
• Definir el sentido de movimiento
• Definir la dinámica
Se permite el inicio síncrono de esta instrucción con otras instrucciones. Para detener el
movimiento del eje al final del programa, utilice la instrucción "setControlledByInterpreter()"
(Página 298).
Encontrará más información en la documentación "S7-1500/S7-1500T Funciones de eje
(Página 11)".

Se aplica a
• Eje de velocidad de giro
• Eje de posicionamiento
• Eje sincronizado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 267
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Requisitos
• El objeto tecnológico Eje se ha configurado correctamente.
• El objeto tecnológico Eje está habilitado.
• El objeto tecnológico Eje está referenciado.

Sintaxis
MCL
move( <axis>, <v> [,pCtrl := <val>] [,a := <val>] [,d := <val>] [,j := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "move()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT - Objeto tecnológico
v LREAL - Consigna de velocidad lineal/de giro
El signo de la velocidad lineal determina el sentido de movimiento.
pCtrl DINT 1 Modo para la regulación de posición1)
Si se utiliza un eje de velocidad de giro, el parámetro se ignora.
0 Funcionamiento sin regulación de posición
1 Funcionamiento con regulación de posición
a LREAL - Aceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Acceleration".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
d LREAL - Deceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Deceleration".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
j LREAL - Tirón2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Jerk".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
1) Parámetro opcional con valor predeterminado
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


268 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
j LREAL - > 0.0 Se utiliza el valor indicado
= 0.0 Sin limitación de tirón
< 0.0 No admisible
1) Parámetro opcional con valor predeterminado
2) Parámetro modal

Instrucciones de Motion Control comparables


• MC_MoveVelocity: Mover el eje a la velocidad lineal/velocidad de giro especificada

Ejemplo: Mover un eje con especificación de velocidad lineal


El siguiente ejemplo muestra cómo puede acelerarse un eje hasta la consigna de velocidad
lineal indicada o frenarse.
MCL
// The mapping of <TO_Axis> to "myAxis" tag is done in the <TO_InterpreterMapping>
// "myAxis" is accelerated to the velocity setpoint 75.0
// and modal dynamics values for parameters a, d, j
move( myAxis, 75.0, pCtrl := 0 );

// "myAxis" goes to standstill with defined dynamics
move( myAxis, 0.0, d := 3000.0, j := 10000.0 );
// Kinematics axis $A1 is accelerated to the velocity setpoint 10.0
// with negative direction.
// AXIS_OBJECT Literal ($A1) for parameter "axis" is used
move( $A1, -10.0, a := 100.0, d := 1000.0, j := 20000.0 );

6.5.2 posAbs(): Posicionamiento absoluto del eje (S7-1500T)

Descripción
La instrucción MCL "posAbs()" mueve un eje hasta una posición absoluta.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la posición de destino absoluta
• Definir el sentido de movimiento
• Definir la dinámica
Se permite el inicio síncrono de esta instrucción con otras instrucciones.
Encontrará más información en la documentación "S7-1500/S7-1500T Funciones de eje
(Página 11)".

Se aplica a
• Eje de posicionamiento
• Eje sincronizado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 269
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Requisitos
• El objeto tecnológico Eje se ha configurado correctamente.
• El objeto tecnológico Eje está habilitado.
• El objeto tecnológico Eje está referenciado.

Sintaxis
MCL
posAbs( <axis>, <p> [,dir := <val>] [,v := <val>] [,a := <val>] [,d := <val>]
[,j := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "posAbs()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT - Objeto tecnológico
p LREAL - Posición de destino absoluta
dir DINT 1 Sentido de movimiento del eje1)
Este parámetro solo se evalúa si la función módulo está activada.
1 Sentido positivo
2 Sentido negativo
3 Recorrido más corto
v LREAL - Velocidad2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Velocity".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
a LREAL - Aceleración2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Acceleration".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
d LREAL - Deceleración2)
1) Parámetro opcional con valor predeterminado
2) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


270 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
d LREAL - - Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Deceleration".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
j LREAL - Tirón2)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Jerk".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
= 0.0 Sin limitación de tirón
< 0.0 No admisible
1) Parámetro opcional con valor predeterminado
2) Parámetro modal

Instrucciones de Motion Control comparables


• MC_MoveAbsolute: Posicionamiento absoluto del eje

Ejemplo: Posicionamiento absoluto del eje


El siguiente ejemplo muestra cómo mover un eje a las posiciones de destino absolutas
indicadas.
MCL
VAR
Pos1 : LREAL := 150.0;
END_VAR

// The mapping of <TO_Axis> to "myAxis" tag is done in the <TO_InterpreterMapping>
// Absolute positioning "myAxis" to position 50.0
posAbs( myAxis, 50.0 );
// Absolute positioning "myAxis" to Pos1 with negative direction and defined dynamics
posAbs( myAxis, Pos1, dir := 2, v := 100.0, a := 2000.0, d := 3000.0, j := 30000.0 );
// Absolute positioning to position 250.0.
// AXIS_OBJECT Literal ($A2) for parameter "axis" is used
posAbs( $A2, 250.0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 271
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

6.5.3 posRel(): Posicionamiento relativo del eje (S7-1500T)

Descripción
La instrucción MCL "posRel()" mueve un eje respecto de la posición existente al iniciar el
procesamiento de la orden.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la posición de destino relativa
• Definir la dinámica
Se permite el inicio síncrono de esta instrucción con otras instrucciones.
Encontrará más información en la documentación "S7-1500/S7-1500T Funciones de eje
(Página 11)".

Se aplica a
• Eje de posicionamiento
• Eje sincronizado

Requisitos
• El objeto tecnológico Eje se ha configurado correctamente.
• El objeto tecnológico Eje está habilitado.
• El objeto tecnológico Eje está referenciado.

Sintaxis
MCL
posRel( <axis>, <p> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "posRel()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT - Objeto tecnológico
p LREAL - Recorrido de posicionamiento (negativo o positivo)
El signo del valor determina el sentido de movimiento.
v LREAL - Velocidad1)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Velocity".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
1) Parámetro modal

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


272 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
v LREAL - > 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
a LREAL - Aceleración1)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Acceleration".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
d LREAL - Deceleración1)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Deceleration".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
≤ 0.0 No admisible
j LREAL - Tirón1)
- Se utiliza el valor modal. El valor modal se inicializa con
"<TO_Axis>.DynamicDefaults.Jerk".
Con setAxisDyn() (Página 274) se puede ajustar otro valor de
forma modal.
> 0.0 Se utiliza el valor indicado
= 0.0 Sin limitación de tirón
< 0.0 No admisible
1) Parámetro modal

Instrucciones de Motion Control comparables


• MC_MoveRelative: Posicionamiento relativo del eje

Ejemplo: Posicionamiento relativo del eje


El siguiente ejemplo muestra cómo mover un eje a las posiciones de destino indicadas
respecto de la posición actual.
MCL
VAR
Pos1 : LREAL := 150.0;
END_VAR

// The mapping of <TO_Axis> to "myAxis" tag is done in the <TO_InterpreterMapping>
// "myAxis" is positioned relatively to the current position,
// using the relative target position
posRel( myAxis, 50.0 );
// "myAxis" is positioned relatively to the current position,

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 273
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

MCL
// using the relative target position with defined dynamics
posRel( myAxis, Pos1, v := 100.0, a := 2000.0, d := 3000.0, j := 30000.0 );
// "myAxis" is positioned relatively to the current position,
// using the relative target position with negative direction
// AXIS_OBJECT Literal ($A2) for parameter "axis" is used
posRel( $A2, -250.0 );

6.5.4 setAxisDyn(): Definir los ajustes predeterminados de dinámica para


movimientos de un eje individual de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setAxisDyn()", se establecen los valores modales para el ajuste
predeterminado de dinámica de los movimientos de un eje individual. Si no se especifica
ningún otro valor dinámico para una orden de movimiento MCL, estos valores dinámicos
modales se utilizan para los movimientos de un eje individual.
Puede indicar los valores para uno o varios parámetros modales de la dinámica. Todo valor
dinámico que no se indique en la instrucción permanece inalterado.
Indique un valor para al menos uno de los parámetros de la dinámica.
Encontrará más información sobre los valores límite máximos en el capítulo "Parámetros
modales (Página 152)".

Se aplica a
• Eje de posicionamiento
• Eje sincronizado

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• posAbs()
• posRel()
• move()

Sintaxis
MCL
setAxisDyn( <axis> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>]
[,rel := <val>] );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


274 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setAxisDyn()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT - Objeto tecnológico
v LREAL - Valor modal de la velocidad de movimiento del eje individual
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Axis>.DynamicDefaults.Velocity).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Si rel := FALSE:
Ajuste predeterminado absoluto de la velocidad
0.0 < v ≤ Si rel := TRUE:
100.0 Ajuste predeterminado porcentual referido al último valor
máximo de velocidad válido
≤ 0.0 No admisible
a LREAL - Valor modal de la aceleración del movimiento del eje individual
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Axis>.DynamicDefaults.Acceleration).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Si rel := FALSE:
Ajuste predeterminado absoluto de la aceleración
0.0 < a ≤ Si rel := TRUE:
100.0 Ajuste predeterminado porcentual referido al último valor
máximo de aceleración válido
≤ 0.0 No admisible
d LREAL - Valor modal de la deceleración del movimiento del eje individual
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Axis>.DynamicDefaults.Deceleration).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Si rel := FALSE:
Ajuste predeterminado absoluto de la deceleración
1) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 275
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
d LREAL - 0.0 < d ≤ Si rel := TRUE:
100.0 Ajuste predeterminado porcentual referido al último valor
máximo de deceleración válido
≤ 0.0 No admisible
j LREAL - Valor modal de tirón del movimiento del eje individual
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Axis>.DynamicDefaults.Jerk).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Si rel := FALSE:
Ajuste predeterminado absoluto del tirón
0.0 < j ≤ Si rel := TRUE:
100.0 Ajuste predeterminado porcentual referido al último valor
máximo de tirón válido
= 0.0 Sin limitación de tirón
< 0.0 No admisible
rel BOOL FALSE Modo de especificación del valor modal1)
FALSE Especificación absoluta
TRUE Especificación porcentual
1) Parámetro opcional con valor predeterminado

Ejemplo
El ejemplo siguiente muestra cómo ajustar los valores modales de los parámetros de dinámica
de un eje individual.
MCL
// The mapping of <TO_Axis> to "myAxis" tag is done in the <TO_InterpreterMapping>
// Set the modal values of the dynamic parameters of "myAxis"
setAxisDyn( myAxis, v := 120.0, a := 1000.0, d := 1000.0, j := 0.0 );
// Set the modal value of axis velocity to absolute 10.0
setAxisDyn( $A1, v := 10.0 );
// Set modal value of axis acceleration to 50% of maximum value
setAxisDyn( $A2, a := 50.0, rel := TRUE );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


276 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

6.5.5 setAxisDynMax(): Definir los límites de dinámica para movimientos de eje


individual de forma modal (S7-1500T)

Descripción
Con la instrucción MCL "setAxisDynMax()", se configuran los límites máximos para los
parámetros de dinámica modales de movimientos de un eje individual.
Puede especificar los valores dinámicos máximos para uno o varios parámetros modales. La
especificación de los valores dinámicos máximos solamente es posible en valores absolutos.
Todo valor dinámico que no se indique en la instrucción permanece inalterado.
Indique un valor para al menos uno de los parámetros de la dinámica.
Encontrará más información sobre los ajustes predeterminados de dinámica en el capítulo
"Parámetros modales (Página 152)".

Se aplica a
• Eje de posicionamiento
• Eje sincronizado

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• posAbs()
• posRel()
• move()

Sintaxis
MCL
setAxisDynMax( <axis> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 277
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setAxisDynMax()":
Pará­ Tipo de datos Valor pre­ Descripción
metros determina­
do
axis AXIS_OBJECT - Objeto tecnológico
v LREAL - Valor modal de la velocidad máxima del movimiento de un eje indivi­
dual
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Axis>.DynamicLimits.MaxVelocity).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Ajuste predeterminado absoluto de los límites de la veloci­
dad
≤ 0.0 No admisible
a LREAL - Valor modal de la aceleración máxima del movimiento de un eje indivi­
dual
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Axis>.DynamicLimits.MaxAcceleration).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Ajuste predeterminado absoluto de los límites de la acelera­
ción
≤ 0.0 No admisible
d LREAL - Valor modal de la deceleración máxima del movimiento de un eje indivi­
dual
- El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Axis>.DynamicLimits.MaxDeceleration).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Ajuste predeterminado absoluto de los límites de la decele­
ración
≤ 0.0 No admisible
j LREAL - Valor modal del tirón máximo del movimiento de un eje individual

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


278 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metros determina­
do
j LREAL - - El valor modal no cambia.
Se utiliza el último valor válido establecido en el código del
programa.
Al cargar el programa, el valor modal se inicializa con el va­
lor de configuración guardado en "Parámetros avanzados >
Dinámica" (<TO_Axis>.DynamicLimits.MaxJerk).
Si el valor no se establece en el código del programa, se utili­
za el valor inicializado.
> 0.0 Ajuste predeterminado absoluto de los límites del tirón
= 0.0 Sin limitación de tirón
< 0.0 No admisible

Ejemplo
El ejemplo siguiente muestra cómo ajustar los valores límite máximos de los parámetros de
dinámica de un eje individual.
MCL
// The mapping of <TO_Axis> to "myAxis" tag is done in the <TO_InterpreterMapping>
// Set the maximum values of the dynamic parameters of "myAxis"
setAxisDynMax( myAxis, v := 500.0, a := 10000.0, d := 10000.0, j := 70000.0 );
// Set the maximum value of axis velocity to absolute 10.0
setAxisDynMax( $A1, v := 10.0 );

6.5.6 powerOn(): Habilitar un eje (S7-1500T)

Descripción
La instrucción MCL "powerOn()" permite habilitar un eje o todos los ejes conectados de la
cinemática, así como modificar el modo de regulación de posición.
Encontrará más información en la documentación "S7-1500/S7-1500T Funciones de eje
(Página 11)".

Se aplica a
• Eje de velocidad de giro
• Eje de posicionamiento
• Eje sincronizado
• Todos los ejes conectados de la cinemática

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 279
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Requisitos
• El objeto tecnológico Eje se ha configurado correctamente.
• "Accionamiento listo" está ajustado en el accionamiento
("<TO_Axis>.StatusDrive.InOperation" = TRUE).
• La comunicación cíclica por el bus entre el controlador y el encóder se ha establecido
("<TO_Axis>.StatusSensor[1..4].CommunicationOK" = TRUE).
• La comunicación cíclica por el bus entre el controlador y el accionamiento se ha
establecido ("<TO_Axis>.StatusDrive.CommunicationOK" = TRUE).
• El estado del encóder activo es válido ("<TO_Axis>.StatusSensor[1..4].State" = 2).
• La adaptación de datos opcional ha finalizado ("<TO>.StatusDrive.AdaptionState" = 2 y
"<TO>.StatusSensor[1..4].AdaptionState" = 2).

Comportamiento de relevo
• "powerOn()" no puede cancelarse con ninguna otra orden de Motion Control.
• "powerOn()" habilita un objeto tecnológico y no cancela ninguna otra instrucción de
Motion Control.

Sintaxis
MCL
powerOn( [axis := <val>] [,mode := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "powerOn()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT NULL Objeto tecnológico1)
Si no se ha indicado el parámetro opcional "axis" o tiene el valor NULL,
la instrucción se refiere a todos los ejes asignados de la cinemática.
mode DINT 1 Modo para la regulación de posición1)
Si se utiliza un eje de velocidad de giro, el parámetro se ignora.
0 Funcionamiento sin regulación de posición
1 Funcionamiento con regulación de posición
1) Parámetro opcional con valor predeterminado

Instrucciones de Motion Control comparables


• MC_Power: Habilitar objeto tecnológico (si "Enable" = TRUE)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


280 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Ejemplo
El siguiente ejemplo muestra cómo pueden activarse un eje individual y todos los ejes
asignados de la cinemática.
MCL
// The mapping of <TO_Axis> to "myAxis" tag is done in <TO_InterpreterMapping>
// enable mapped "myAxis" and change the control mode to non-position controlled mode
powerOn( axis := myAxis, mode := 0 );

// enable axis $A3. AXIS_OBJECT Literal ($A3) for parameter "axis" is used
powerOn( axis := $A3 );

// enable all assigned kinematics axes
powerOn();

6.5.7 powerOff(): Bloquear un eje (S7-1500T)

Descripción
La instrucción MCL "powerOff()" permite bloquear un eje o todos los ejes conectados de la
cinemática conforme al modo de parada seleccionado.
"powerOff()" genera una parada de preparación (preHalt) implícita en la ejecución del
programa.
Encontrará más información en la documentación "S7-1500/S7-1500T Funciones de eje
(Página 11)".

Se aplica a
• Eje de velocidad de giro
• Eje de posicionamiento
• Eje sincronizado
• Todos los ejes conectados de la cinemática

Requisitos
• El objeto tecnológico Eje se ha configurado correctamente.
• "Accionamiento listo" está ajustado en el accionamiento
("<TO_Axis>.StatusDrive.InOperation" = TRUE).
• La comunicación cíclica por el bus entre el controlador y el encóder se ha establecido
("<TO_Axis>.StatusSensor[1..4].CommunicationOK" = TRUE).
• La comunicación cíclica por el bus entre el controlador y el accionamiento se ha
establecido ("<TO_Axis>.StatusDrive.CommunicationOK" = TRUE).
• El estado del encóder activo es válido ("<TO_Axis>.StatusSensor[1..4].State" = 2).
• La adaptación de datos opcional ha finalizado ("<TO>.StatusDrive.AdaptionState" = 2 y
"<TO>.StatusSensor[1..4].AdaptionState" = 2).

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 281
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Comportamiento de relevo
• "powerOff()" no puede cancelarse con ninguna otra orden de Motion Control.
• "powerOff()" cancela todas las órdenes de movimiento en el objeto tecnológico
correspondiente conforme al "Modo de parada" seleccionado. El usuario no puede
cancelar este proceso.

Sintaxis
MCL
powerOff( [axis := <val>] [,mode := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "powerOff()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT NULL Objeto tecnológico1)
Si no se ha indicado el parámetro opcional "axis" o tiene el valor NULL,
la instrucción se refiere a todos los ejes asignados de la cinemática.
mode DINT 0 Modo de parada1)
0 Parada de emergencia
Al bloquear el objeto tecnológico, el eje reduce la velocidad
sin limitación de tirón con la deceleración de parada de
emergencia configurada en "Objeto tecnológico >
Configuración > Parámetros avanzados > Parada de
emergencia", hasta alcanzar la velocidad cero. A continua­
ción, se desconecta el accionamiento y se bloquea el objeto
tecnológico.
(<TO_Axis>.DynamicDefaults.EmergencyDeceleration)
1 Desconexión inmediata
Al bloquear un objeto tecnológico se emite la consigna cero.
En función de la configuración, el eje se decelera en el accio­
namiento hasta la velocidad cero. A continuación, se desco­
necta el accionamiento y se bloquea el objeto tecnológico.
2 Parada con valores dinámicos máximos
Al bloquear el objeto tecnológico, el eje reduce la velocidad
con la deceleración máxima configurada en "Objeto
tecnológico > Configuración > Parámetros avanzados >
Límites dinámicos", hasta la velocidad cero. En este caso, se
tiene en cuenta el tirón máximo configurado. A continua­
ción, se desconecta el accionamiento y se bloquea el objeto
tecnológico.
(<TO_Axis>.DynamicLimits.MaxDeceleration;
<TO_Axis>.DynamicLimits.MaxJerk)
1) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


282 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
mode DINT 0 3 Parada con dinámica especificada
Al bloquear el objeto tecnológico, el accionamiento se des­
conecta de la tensión (supresión de impulsos) y cambia al es­
tado Bloqueo de conexión. A continuación, el accionamiento
ejecuta una parada natural.
Si utiliza un accionamiento con interfaz de consigna analógi­
ca, se desactivará la salida de habilitación y la señal de salida
analógica se establecerá en 0.0.
1) Parámetro opcional con valor predeterminado

Instrucciones de Motion Control comparables


• MC_Power: Habilitar objeto tecnológico (si "Enable" = FALSE)

Ejemplo
MCL
// The mapping of <TO_Axis> to "myAxis" tag is done in <TO_InterpreterMapping>
// disabling mapped axis "myAxis" with max. dynamics values
powerOff( axis := myAxis, mode := 2 );

// disabling axis $A3 with emergency stop.
// AXIS_OBJECT Literal ($A3) for parameter "axis" is used
powerOff( axis := $A3 );

// disable all assigned kinematics axes
powerOff();

6.5.8 home(): Referenciar eje, establecer punto de referencia (S7-1500T)

Descripción
La instrucción MCL "home()" establece la referencia entre la posición del eje y la posición
mecánica. El valor de posición del eje se asigna a una marca de referencia. Dicha marca
representa una posición mecánica conocida.
Con referenciado activo, para los valores dinámicos aceleración, deceleración y tirón, se
utilizan los valores predeterminados en "Parámetros avanzados > Preajuste de dinámica".
"home()" finaliza cuando se establece o se alcanza la posición de referencia conforme al
modo seleccionado.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir la posición del punto de referencia
• Ajustar el modo de referenciado
Se permite el inicio síncrono de esta instrucción con otras instrucciones.
Encontrará más información en la documentación "S7-1500/S7-1500T Funciones de eje
(Página 11)".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 283
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Se aplica a
• Eje de posicionamiento
• Eje sincronizado

Requisitos
• El objeto tecnológico Eje se ha configurado correctamente.
• El objeto tecnológico Eje está habilitado (para "mode" = 3, 5).
• Los valores reales del encóder son válidos ("<TO_Axis>.StatusSensor[1..4].State" = 2 para
"mode" = 6, 7, 11, 12, 13).
• El eje funciona en el modo de regulación de posición (para "mode" = 0, 1, 6, 7).

Sintaxis
MCL
home( <axis> [,mode := <val>] [,sensor := <val>] [,p := <val>] );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "home()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT - Objeto tecnológico
mode DINT 0 Modo de referenciado1)
0 Referenciado directo (absoluto)
La posición actual del objeto tecnológico se ajusta al valor
del parámetro "p".

Nota:En el caso de un eje con varios encoders, cuando se co­


rrige la posición con el parámetro "mode" = 0, el desplaza­
miento de la posición se aplica en los sensores de todos los
encoders. De este modo se previene la disparidad de los sen­
sores.
1 Referenciado directo (relativo)
La posición actual del objeto tecnológico se mueve conforme
al valor del parámetro "p".

Nota:En el caso de un eje con varios encoders, cuando se co­


rrige la posición con el parámetro "mode" = 1, el desplaza­
miento de la posición se aplica en los sensores de todos los
encoders. De este modo se previene la disparidad de los sen­
sores.
1) Parámetro opcional con valor predeterminado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


284 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Pará­ Tipo de datos Valor pre­ Descripción


metro determina­
do
mode DINT 0 3 Referenciado activo
El objeto tecnológico ejecuta un movimiento de referenciado
conforme a la configuración. Una vez concluido el movi­
miento, el eje está en el valor del parámetro "p".
5 Referenciado activo (coordenada del punto de referencia, pa­
rámetro "p" sin efecto)
El objeto tecnológico ejecuta un movimiento de referenciado
conforme a la configuración. Una vez concluido el movi­
miento, el eje está en el punto de referencia configurado en
"Objeto tecnológico > Configuración > Parámetros avanzados
> Referenciado > Referenciado activo"
(<TO_Axis>.Homing.HomePosition).
6 Ajuste del encóder absoluto (relativo)
La posición actual se desplaza de acuerdo con el valor del pa­
rámetro "p". El offset calculado del valor absoluto se guarda
de forma remanente en la CPU.
(<TO_Axis>.StatusSensor[1..4].AbsEncoderOffset)
7 Ajuste del encóder absoluto (absoluto)
La posición actual se ajusta al valor del parámetro "p". El off­
set calculado del valor absoluto se guarda de forma rema­
nente en la CPU.
(<TO_Axis>.StatusSensor[1..4].AbsEncoderOffset)
11 Ajuste de la consigna de posición (absoluto)
La consigna de posición del objeto tecnológico se ajusta al
valor del parámetro "p". La distancia de seguimiento se con­
serva.
12 Desplazamiento de la consigna de posición (relativa)
La consigna de posición del objeto tecnológico se mueve
conforme al valor del parámetro "p". La distancia de segui­
miento se conserva.
13 Ajuste del encóder incremental
La posición actual se ajusta al valor del parámetro "p".
sensor DINT 0 Selección del encóder absoluto ("mode" = 6, 7) o encóder incremental
("mode" = 13) que se va a calibrar1)
0 Encóder operativo
1..4 Encóder 1..4
p LREAL 0.0 Coordenada del punto de referencia1)
El valor indicado se utiliza conforme al "mode" seleccionado.
1) Parámetro opcional con valor predeterminado

Instrucciones de Motion Control comparables


• MC_Home: Referenciar objeto tecnológico, establecer punto de referencia

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 285
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Ejemplo: Referenciar eje


El siguiente ejemplo muestra la ejecución de un desplazamiento al punto de referencia con
los ajustes configurados.
MCL
// The mapping of <TO_Axis> to "myAxis" tag is done in the <TO_InterpreterMapping>
// Homing "myAxis" with default values
home( myAxis );

// Parameter p is not relevant for this MCL-command
// Position is taken from "myAxis.Homing.HomePosition"
home( myAxis, mode := 5 );

// The current position of kinematics axis $A3 is set to the value 100.0
home( $A3, mode := 0, p := 100.0 );

6.5.9 torqueLimitOn(): Activar la limitación de fuerza/par o la detección de tope


fijo (S7-1500T)

Descripción
Con la instrucción MCL "torqueLimitOn()", se activa y parametriza una limitación de fuerza/par
o una detección de tope fijo. Junto con una orden de movimiento con regulación de posición,
la detección de tope fijo permite realizar un "Desplazamiento a tope fijo". En la configuración
del eje, puede definirse si la limitación de fuerza/par debe referirse al lado del accionamiento
o al lado de la carga.
"torqueLimitOn()" puede activarse antes de una orden de movimiento activa y durante esta.
"torqueLimitOn()" finaliza cuando se activa la limitación de fuerza/par o la detección de tope
fijo. Si se detecta un tope fijo, se cancela el comando de desplazamiento en curso. Entonces,
el puntero del programa cambia a la siguiente línea.
"torqueLimitOn()" no puede cancelarse con ningún otro comando MCL o MC.
La instrucción MCL ofrece las posibilidades siguientes:
• Definir el valor de la limitación de fuerza/par
• Definir el modo de la limitación de fuerza/par
No se permite el inicio síncrono de esta instrucción con otras instrucciones.
Encontrará más información en la documentación "S7-1500/S7-1500T Funciones de eje
(Página 11)".

La limitación de fuerza/par se aplica a


• Eje de velocidad de giro
• Eje de posicionamiento
• Eje sincronizado

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


286 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Requisitos para la limitación de fuerza/par


• El eje y el par de referencia del accionamiento se han configurado correctamente.
• El eje está habilitado.
• El accionamiento debe soportar la reducción de fuerza/par. Solo los accionamientos
PROFIdrive con telegrama 10x de SIEMENS soportan la limitación de fuerza/par.
• Interconexión en el accionamiento SINAMICS:
– P1522 a un valor fijo de 100 %
– p1523 a un valor fijo de –100 %, (p. ej., mediante interconexión al parámetro de valor
fijo p2902[i])
– p1544: valoración para la reducción de par/fuerza en el desplazamiento a tope fijo al
100 % (ajuste predeterminado)
– p2194: umbral para el parámetro "InLimitation" <100 % (ajuste predeterminado 90 %)

La detección de tope fijo se aplica a


• Eje de posicionamiento
• Eje sincronizado

Requisitos para la detección de tope fijo


• La detección de tope fijo solo puede aplicarse a ejes con regulación de posición. Para la
detección de tope fijo, el eje debe estar habilitado con regulación de posición. Las órdenes
de movimiento deben ejecutarse con regulación de posición.
• El eje se ha configurado correctamente.
• Si se utilizan un accionamiento y un telegrama que soporten la limitación de fuerza/par, el
par de referencia del accionamiento deberá estar correctamente configurado en el eje.
• El eje no presenta ningún error que impida su habilitación (el eje debe estar habilitado).

Sintaxis
MCL
torqueLimitOn( <axis>, [,limit := <val>] [,mode := <val>] );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 287
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "torqueLimitOn()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT - Objeto tecnológico
limit LREAL -1.0 Valor de la limitación de fuerza/par (en la unidad configurada)1)
Si ni el accionamiento ni el telegrama soportan la limitación de fuer­
za/par, el valor indicado es irrelevante.
≥0 Se utiliza el valor indicado en el parámetro.
<0 Se utiliza el valor configurado en la ventana de configura­
ción "Limitación de par".
Variable Valor límite de par:
<TO_Axis>.TorqueLimiting.LimitDefaults.Torque
Variable Valor límite de fuerza:
<TO_Axis>.TorqueLimiting.LimitDefaults.Force
mode DINT 0 Modo de limitación de fuerza/par1)
Si ni el accionamiento ni el telegrama soportan la limitación de fuer­
za/par, el valor indicado es irrelevante.
0 Limitación de fuerza/par
1 Detección de tope fijo
Solo relevante para ejes con regulación de posición.
1) Parámetro opcional con valor predeterminado

Instrucciones de Motion Control comparables


• MC_TorqueLimiting: Activar/desactivar la limitación de fuerza/par o la detección de tope
fijo (si "Enable" = TRUE)

Ejemplo: Activar la detección de tope fijo


El siguiente ejemplo muestra la activación de la detección de tope fijo.
MCL
// The mapping of <TO_Axis> to "myAxis" tag is done in the <TO_InterpreterMapping>
// The axis is enabled as position-controlled
// The torque limit with fixed stop detection of the "myAxis" is activated
torqueLimitOn( myAxis, limit := -1.0, mode := 1 );
// "myAxis" is moved to fixed stop. When the following error limit is reached,
// the positioning is aborted
posAbs( myAxis, 100.0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


288 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.5 Ejes (S7-1500T)

6.5.10 torqueLimitOff(): Desactivar la limitación de fuerza/par o la detección de


tope fijo (S7-1500T)

Descripción
Con la instrucción MCL "torqueLimitOff()", se desactiva una limitación de fuerza/par o una
detección de tope fijo.
"torqueLimitOff()" puede activarse antes de una orden de movimiento activa y durante esta.
"torqueLimitOff()" finaliza cuando se desactiva la limitación de fuerza/par o la detección de
tope fijo. Si se detecta un tope fijo, se cancela el comando de desplazamiento en curso.
Después, el puntero del programa cambia a la siguiente línea.
"torqueLimitOff()" no puede cancelarse con ningún otro comando MCL o MC.
No se permite el inicio síncrono de esta instrucción con otras instrucciones.
Encontrará más información en la documentación "S7-1500/S7-1500T Funciones de eje
(Página 11)".

Se aplica a
• Eje de velocidad de giro
• Eje de posicionamiento
• Eje sincronizado

Sintaxis
MCL
torqueLimitOff( <axis> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "torqueLimitOff()":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
axis AXIS_OBJECT - Objeto tecnológico

Instrucciones de Motion Control comparables


• MC_TorqueLimiting: Activar/desactivar la limitación de fuerza/par o la detección de tope
fijo (si "Enable" = FALSE)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 289
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Ejemplo: Desactivación de la limitación de par


El siguiente ejemplo muestra la desactivación de la limitación de par para un eje.
MCL
// The mapping of <TO_Axis> to "myAxis" tag is done in the <TO_InterpreterMapping>
// The torque limit of the "myAxis" is deactivated
torqueLimitOff( myAxis );

6.6 Otras instrucciones (S7-1500T)

6.6.1 writeVar() Escribir variable PLC mapeada o variable de bloque de datos de


objeto tecnológico (S7-1500T)

Descripción
La instrucción "writeVar" del programa intérprete escribe el valor de una expresión en una
variable en el contexto de la ejecución del programa. La expresión en el argumento
<expression> se evalúa al preparar el programa y se guarda de forma temporal, y luego se
utiliza para la asignación de valor durante la ejecución del programa.
Tenga en cuenta que la operación asignada se ejecuta con el operador ":=" en la preparación
del programa.

Se aplica a
• Variable de bloque de datos del objeto tecnológico del intérprete u objetos asignados
• Variable PLC mapeada

Sintaxis
MCL
writeVar( <var>, <expression> );

Parámetro Declaración Tipo de datos Valor predeter­ Descripción


minado
var INPUT - - Variable que debe escribirse:
• Variable de bloque de datos del objeto tecnológico del in­
térprete u objetos asignados
• Variable PLC mapeada
expression INPUT - - El valor de una expresión en la que se escribe una variable

Reglas
• La escritura está limitada a un único acceso a los datos.
• No se permite el uso de la instrucción "writeVar" en el bloque SYNC entre dos instrucciones
de un movimiento de trayectoria, con o sin suavizado de transición (ver ejemplo 2 y
capítulo "Instrucción SYNC (Página 107)").

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


290 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Ejemplo 1
En este ejemplo, la variable del portapapeles "$IPR.clipboard.cbDint[1]" se escribe con la
instrucción "writeVar" en la ejecución del programa.
MCL

linAbs( pos1 );

// execute in the main task; kinematics has reached position pos1


writeVar( $IPR.clipboard.cbDint[1], 2 );

Ejemplo 2
En este ejemplo, "plcVar" tiene el valor "1" en la preparación del programa (línea 1). Este valor
se guarda temporalmente y se utiliza en la ejecución del programa para escribir la variable
"CbDint[1]" en los comandos "writeVar" (línea 2 y línea 4) antes de que la ejecución del
programa asigne el valor "2" a la variable "plcVar" (línea 3). El valor resultante de "CbDint[1]"
es "1".
MCL
...

plcVar := 1; // line 1, plcVar – mapped PLC variable

writeVar( $IPR.Clipboard.CbDint[1], plcVar ); // 2

writeVar( plcVar, 2 ); // 3

writeVar( $IPR.Clipboard.CbDint[1], plcVar); // 4

...

Ejemplo 3
En este ejemplo se programan acciones síncronas disparadas por posición en un movimiento
de trayectoria con suavizado de transición. La programación de la instrucción "writeVar" no es
válida. En el objeto tecnológico Intérprete se produce un mensaje de error y el programa
intérprete se interrumpe.
MCL
SYNC // line 1
linAbs( myPos, trans := 0 ); // 2 path movement
writeVar( $IPR.clipboard.cbDint[1], 1 ); // 3 invalid command between SYNC and ON_POS
linAbs( myPos2, trans := 0 ); // 4
ON_POS sType := 2, p := 25.0, t := T#-1s DO // 5 referred to line 2
writeVar( $IPR.clipboard.cbDint[1], 2 ); // 6 execute at position
ON_POS sType := 2, p := 50.0, t := T#1s DO // 7 referred to line 2
writeVar( $IPR.clipboard.cbDint[1], 4 ); // 8 execute at the end
END_SYNC;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 291
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

6.6.2 waitTime(): Interrumpir la ejecución del programa durante un intervalo de


tiempo determinado (S7-1500T)

Descripción
La instrucción "waitTime" en el programa intérprete permite interrumpir la ejecución de dicho
programa durante el intervalo de tiempo especificado en el parámetro de la instrucción.

Se aplica a
• Unidad de organización del programa "Programa principal" del programa intérprete
• Unidad de organización del programa "Función" del programa intérprete

Sintaxis
MCL
waitTime( <time> );

Parámetro Declara­ Tipo de datos Valor predetermi­ Descripción


ción nado
time INPUT TIME - Tiempo de espera

Regla
• Los intervalos de tiempo negativos dan lugar a un error en tiempo de ejecución
• La resolución temporal máxima es 1 ciclo del tiempo de ciclo del "MC_Interpolator" (TIPO)

Ejemplo
En el siguiente ejemplo, el programa intérprete se interrumpe durante 3 segundos:

MCL
// interruption of command interpretation for 3 s
waitTime( T#3000ms );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


292 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

6.6.3 waitEvent(): Interrumpir la ejecución del programa hasta un determinado


evento (S7-1500T)

Descripción
La instrucción "waitEvent" detiene la ejecución del programa hasta que se produzca un
evento externo específico, o bien hasta que transcurra un intervalo de tiempo opcional
programable. Esta instrucción se puede utilizar en el programa intérprete para lo siguiente:
• Ejecución de movimientos tras el disparo de una señal externa
• Adición de órdenes de movimiento a un movimiento activo, dependiendo de un evento
externo

Variables de evento admisibles del tipo BOOL:


• Variable de bloque de datos del objeto tecnológico del intérprete u objetos asignados
• Variable PLC mapeada
Las expresiones no se permiten como parámetros event. Si fuera necesario manejar procesos
más complejos, se pueden evaluar en el programa del PLC, y utilizar como evento el resultado
a través de la correspondiente variable del sistema de la interfaz de variables del usuario del
objeto Intérprete ("$IPR.Clipboard").

Sintaxis
MCL
waitEvent( <event> [,mode := <val>] [,timeout := <val>] [,timeoutState => <val>] );

Parámetro Declaración Tipo de datos Valor pre­ Descripción


determina­
do
event INPUT BOOL - Condición de evento
mode INPUT DINT 0 Modo de procesamiento1)
0 Comprobación del evento solo en la ejecución
del programa
1 Además de mode = "0", comprobación del re­
sultado en la preparación y en la ejecución del
programa
timeout INPUT TIME T#-1ms Tiempo de espera máximo1)

Tiempo de espera a partir de la ejecución de la instrucción en


el programa tras el cual continúan otras tareas de preparación
y ejecución independientemente de la condición del evento.
< T#0ms No se considera el tiempo de espera
= T#0ms Ejecución inmediata del programa
> T#0ms Tiempo de espera máximo
timeoutState OUTPUT BOOL FALSE Variable de salida1)
FALSE No hay rebase por exceso del tiempo de espera
TRUE Rebase por exceso del tiempo de espera
1) Opcional

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 293
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Reglas
• El parámetro "timeout" es efectivo si no se cumple la condición del evento en la
preparación. La ejecución posterior del programa se detiene hasta que se cumpla la
condición de evento (parámetro "event"), o hasta que haya transcurrido el tiempo de
espera definido en el parámetro "timeout". El tiempo de espera comienza con el final de la
orden anterior en la ejecución del programa. Una vez transcurrido tiempo especificado,
continúan la preparación y la ejecución con independencia de la condición del evento.
• Si se ajusta el parámetro "timeout" a T#0ms, no se espera a que se cumpla la condición del
evento, y la ejecución del programa continúa inmediatamente.
• Si se determina un parámetro "timeout" negativo, se espera indefinidamente a que se
cumpla la condición del evento en la ejecución del programa.
• Con el parámetro de salida "timeoutState" puede comprobarse si se ha producido un
"timeout". Si es ese el caso, la variable de salida correspondiente devuelve TRUE.
• Si se cumple la condición del evento mientras "waitEvent" se encuentra en la preparación
del programa con el parámetro "mode" = 1, continúa la preparación del programa
inmediatamente. Si la condición del evento no se cumple durante la preparación, se activa
"waitEvent" y, con ello, la comprobación cíclica del evento en la ejecución del programa.
• Si "waitEvent" con "mode" = 1 sigue a una orden de movimiento con suavizado de
transición, está definido el siguiente comportamiento:
– Si la condición del evento se cumple a tiempo, antes de que haya finalizado la orden de
movimiento precedente, se ejecuta el movimiento de suavizado de transición
programado como corresponda a la secuencia de programación.
– Si la condición del evento se cumple demasiado tarde, se ejecuta una parada precisa.
• Si "waitEvent" con "mode" = 0 sigue a una orden de movimiento con suavizado de
transición, se ejecuta una parada precisa.

Ejemplo 1
En este ejemplo, se ha programado waitEvent (parámetro "mode" = 0 como valor
predeterminado) tras una orden de trayectoria con suavizado de transición. El suavizado de
transición de la instrucción no es posible, pues "waitEvent" se ejecuta en el programa. Tras
una parada precisa en pos1 la ejecución pone en pausa las posteriores instrucciones hasta
que la variable de interfaz $IPR.Clipboard.cbBool[1] devuelva TRUE.

MCL
linAbs( pos1, trans := 1 );
waitEvent( $IPR.Clipboard.cbBool[1] );
linAbs( pos2, trans := 0 );

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


294 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Ejemplo 2
En este ejemplo, "waitEvent" aparece con "mode" = 1 programado tras una instrucción con
suavizado de transición. Si el resultado (la variable $IPR.Clipboard.cbBool[1] devuelve TRUE)
se cumple a tiempo durante el movimiento actual, puede ejecutarse el movimiento de la
trayectoria hacia pos3 con suavizado de transición como corresponda a la programación; en
caso contrario, se ejecuta una parada precisa.
Si no se produce la condición de avance durante el movimiento actual, se ejecuta una parada
precisa en pos2. En este caso, el sistema espera en pos2 hasta que la variable de sistema del
intérprete $IPR.Clipboard.cbBool[1] devuelva TRUE, o hasta que transcurra la duración del
tiempo de espera.
Si la ejecución del programa está bloqueada durante más de 3 segundos debido a que no se
cumple la condición de avance ("timeout" = T#3s), continúan la descodificación del programa
y la ejecución con independencia de la condición de avance. En este caso, se ejecuta el
movimiento de la posición 1, pasando por la posición 2, hasta la posición 3, sin suavizado de
transición.

MCL
setBlend( 2 );
linAbs( pos1, trans := 1 );
linAbs( pos2, trans := 1 );
waitEvent( $IPR.Clipboard.cbBool[1], mode := 1,
timeout := T#3s, timeoutState => isTimeout );
linAbs( pos3, trans := 0 );

Ejemplo 3
En este ejemplo, la cinemática se mueve a una posición de espera pWait. Mediante la
escritura de la variable PLC mapeada plcOpenGripper se abre el manipulador.
A continuación, "waitEvent" espera la respuesta plcIsGripperOpened del manipulador. Tras la
apertura del manipulador, la cinemática se mueve a una posición de recogida (pick) pPick y el
manipulador se cierra mediante la escritura de la variable PLC mapeada plcCloseGripper.
Tras ello, waitEvent"" espera la respuesta plcIsGripperClosed del manipulador. Tras el cierre
del manipulador, la cinemática se mueve a una posición de colocación (place) pPlace y el
manipulador se vuelve a abrir.
[
Q
 Q







 Q8BJU

Q1JDL Q1MBDF

           Y

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 295
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

MCL
VAR

pWait : TO_Struct_Ipr_Position := ( x := 10.0, y := 0.0, z := 10.0 );

pPick : TO_Struct_Ipr_Position := ( x := 10.0, y := 0.0, z := 0.0 );


pPlace : TO_Struct_Ipr_Position := ( x := 110.0, y := 0.0, z := 0.0 );
p1 : TO_Struct_Ipr_Position := ( x := 10.0, y := 0.0, z := 50.0 );
p2 : TO_Struct_Ipr_Position := ( x := 110.0, y := 0.0, z := 50.0 );

END_VAR

setBlend( 2 ); // set modal values
setBlendDist( 30.0 );
setTrans( 0 );
setCs( 0 ); // set wcs modally

linAbs( pWait );
writeVar( plcOpenGripper, TRUE );
waitEvent( plcIsGripperOpened ); // wait for gripper opened
linAbs( pPick );
writeVar( plcOpenGripper, FALSE );
writeVar( plcCloseGripper, TRUE );
waitEvent( plcIsGripperClosed ); // wait for gripper closed
linAbs( p1, trans := 1, blend := 2 );
linAbs( p2, trans := 1, blend := 2 );
linAbs( pPlace );
writeVar( plcOpenGripper, TRUE );
waitEvent( plcIsGripperOpened ); // wait for gripper opened

,*/4UBUVT
1BUI7FMPDJUZ
U

QMD0QFO(SJQQFS
U

QMD$MPTF(SJQQFS

QMDMT(SJQQFS0QFOFE
U

QMDMT(SJQQFS$MPTFE

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


296 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Ejemplo 4
En este ejemplo, en la primera ejecución del bucle (i = 1) de la instrucción FOR se produce un
evento externo al ejecutar el movimiento lineal de la cinemática. La variable de portapapeles
Clipboard Variable $IPR.clipboard.cbBool[1] registra el evento externo.
El evento (ajuste de la variable $IPR.Clipboard.cbBool[1] a TRUE) se produce durante el
movimiento actual ("linAbs()" hacia "p1"), para ejecutar la siguiente instrucción y suavizar la
transición al movimiento lineal ("linAbs()" hacia "p2"). A continuación, se ejecuta un
movimiento lineal ("linAbs()" hacia "(x = 0, y = 0, z = 0)").
Sin embargo, en la segunda ejecución del bucle de la instrucción FOR (i = 2), si no se ha
producido el evento externo durante el movimiento actual ("linAbs()" hacia "p1"), se ejecuta
el movimiento hacia "p1" y se detiene allí.
"waitEvent" espera entonces hasta el momento programado del rebase de tiempo ("timeout"
= T#1s) a que se ejecute la condición del evento en la ejecución del programa. Puesto que el
evento no se produce en el plazo de 1 segundo, la variable de salida "isTimeout" se ajusta a
TRUE. La siguiente instrucción "preHalt" es necesaria para sincronizar la ejecución y la
preparación.
*OMPPQSVO
*13DMJQCPBSEDC#PPM<>USVF

         Q Y










 Q
[

① In loop run 1
② In loop run 2

MCL
VAR
i : DINT := 0;
isTimeout : Bool := FALSE;
p1 : TO_Struct_Ipr_Position;
p2 : TO_Struct_Ipr_Position;
END_VAR

p1 := ( x := 100.0, y := 0.0, z := 0.0, A := 0.0 );
p2 := ( x := 100.0, y := 0.0, z := -50.0, A := 0.0 );

setBlendDist( 30.0 );
setBlend( 2 );
setTrans( 0 );
setCs( 0 );

FOR i := 1 TO 2 DO
preHalt(); // synchronize execution and preparation

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 297
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

MCL

isTimeout := FALSE; // reset timeout tag


writeVar($IPR.clipboard.cbBool[1], FALSE ); // reset event before start of movement

linAbs( p1, blend := 2, trans := 1 ); // start movement


waitEvent( $IPR.clipboard.cbBool[1], mode := 1, // wait for event, check
timeout := T#1s, timeoutState => isTimeout); // starts in preparation

IF isTimeout THEN
linAbs( (x := 0.0, y := 0.0, z := 0.0) );
ELSE
linAbs( p2 );
linAbs( (x := 0.0, y := 0.0, z := 0.0) );
END_IF;
END_FOR;

5JNFPVUT

1BUIWFMPDJUZ

*13DMJQCPBSE
DC#PPM<>
U

6.6.4 setControlledByInterpreter(): Activar el bit "ControlledByInterpreter" para un


objeto tecnológico (S7-1500T)

Descripción
La instrucción "setControlledByInterpreter" permite activar o desactivar el bit de estado
"ControlledByInterpreter" (<TO>.StatusInterpreterMotion.StatusWord.X0) de objetos
tecnológicos.
El "ControlledByInterpreter"-Status-Bit indica si el correspondiente objeto tecnológico (eje o
cinemática) es controlado por el objeto tecnológico Intérprete (mediante instrucciones MCL).
La interacción de instrucciones MCL del programa intérprete con instrucciones PLCopen
depende del estado del ControlledByInterpreter en los ejes/de la cinemática.
El estado del "ControlledByInterpreter" = TRUE significa que hay una orden de movimiento
activa en el objeto tecnológico o que el estado se ha establecido mediante la correspondiente
instrucción MCL. Si en el programa PLC debe utilizarse un eje o cinemática con instrucciones
PLCopen y al mismo tiempo con el intérprete, se puede sincronizar el acceso a través de la
instrucción "setControlledByInterpreter".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


298 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Estado del eje:


Estado Descripción
<TO>.StatusInterpreterMotion.StatusWord. • 0 (FALSE): El eje no es controlado por el objeto tecnológico Intérprete (ningu­
X0 na instrucción MCL activa).
(ControlledByInterpreter) • 1 (TRUE): El eje es controlado por el objeto tecnológico Intérprete (una ins­
trucción MCL está activa o el bit se ha activado de forma permanente a través
de "setControlledByInterpreter").
Si se activa una instrucción PLCopen en el eje, se dispara una alarma en el ob­
jeto tecnológico Intérprete que produce la cancelación del objeto tecnológico
Intérprete y, con ello, de la ejecución del programa MCL.

Estado de la cinemática conectada:


Estado Descripción
<TO>.StatusInterpreterMotion.StatusWord. • 0 (FALSE): La cinemática no es controlada por el objeto tecnológico Intérpre­
X0 te (ninguna instrucción MCL activa).
(ControlledByInterpreter) • 1 (TRUE): La cinemática es controlada por el objeto tecnológico Intérprete
(una instrucción MCL está activa o el bit se ha activado de forma permanente
a través de "setControlledByInterpreter").
Si se activa una instrucción PLCopen en la cinemática, se dispara una alarma
en el objeto tecnológico Intérprete que produce la cancelación de dicho obje­
to tecnológico y, con ello, de la ejecución del programa MCL.

Se aplica a
• Cinemática conectada
• Eje individual

Sintaxis
MCL
setControlledByInterpreter( [ obj := <val> ] [ ,ctrl := <val> ] );

Parámetro Tipo de datos Valor predeterminado Descripción


obj AXIS_OBJECT NULL Instancia del eje1)
ctrl BOOL TRUE Valor que debe ajustarse en el bit de estado1)
FALSE Ajuste del valor del bit de estado
ControlledByInterpreter a FALSE
TRUE Ajuste del valor del bit de estado
ControlledByInterpreter a TRUE
1) Opcional

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 299
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Reglas
• Si no se ha especificado el parámetro opcional "obj" o tiene el valor NULL, la instrucción se
refiere a la cinemática conectada.
• Si el bit <TO>.StatusInterpreterMotion.StatusWord.X0 (ControlledByInterpreter) de una
cinemática se ajusta a TRUE, el sistema ajusta el bit
<TO>.StatusInterpreterMotion.StatusWord.X0 (ControlledByInterpreter) de los ejes
asignados automáticamente a la cinemática a TRUE.
• El bit de estado puede ser leído por el PLC y por el intérprete.

Ejemplo
MCL
// set ControlledByInterpreter at connected kinematics and linked axes
setControlledByInterpreter();
// same behaviour as previous command
setControlledByInterpreter( ctrl := TRUE );
// reset ControlledByInterpreter at connected kinematics and linked axes
setControlledByInterpreter( ctrl := FALSE );
// set ControlledByInterpreter at a single axis
setControlledByInterpreter( obj := myAxis );
// same behaviour as previous command
setControlledByInterpreter( obj := myAxis, ctrl := TRUE );
// reset ControlledByInterpreter at a single axis
setControlledByInterpreter( obj := myAxis, ctrl := FALSE );

6.6.5 setOvr(): Definir la corrección del programa (S7-1500T)

Descripción
Con la instrucción MCL "setOvr()" se establece de forma modal el factor de corrección del
programa, que actúa sobre cinemáticas y movimientos de ejes individuales como factor
porcentual para la velocidad y la aceleración.
El factor de corrección del programa se tiene en cuenta durante la preparación del programa
intérprete.
Para el factor de corrección del programa se utiliza el último valor válido ajustado en el código
del programa. Al cargar el programa, el valor modal se inicializa con el valor de configuración
guardado en "Parámetros avanzados > Preparación del programa"
(<TO_Interpreter>.Parameter.ProgramOverride). Si el valor no se establece en el código del
programa, se utiliza el valor inicializado.
Para que, en caso de modificaciones de override, no se modifique la trayectoria original, la
corrección del programa se aplica en primer lugar a las velocidades de eje. Tras ello, se adapta
la aceleración de los ejes a las velocidades resultantes. Los valores de override de velocidad
que se ajustan en los bloques de datos de objeto tecnológico de los ejes o cinemáticas
también son efectivos y afectan a las dinámicas de los movimientos activos.
Puede utilizar esta instrucción en su programa MCL para la puesta en marcha, a fin de seguir
un movimiento (p. ej., en el punto de transición) con velocidad y aceleración reducidas.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


300 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Se aplica a
• Cinemática
• Eje individual

Efecto sobre otras instrucciones MCL


Los parámetros modales son válidos para las siguientes instrucciones MCL:
• linAbs()
• linRel()
• circAbs()
• circRel()
• ptpAbs()
• ptpRel()
• ptpJtAbs()
• ptpJtRel()
• ptpAxAbs()
• ptpAxRel()
• move()
• posAbs()
• posRel()

Sintaxis
MCL
setOvr( <override> );

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "setOvr":
Pará­ Tipo de datos Valor pre­ Descripción
metro determina­
do
overri­ LREAL - Valor modal del factor de la corrección del programa
de
< 1.0 No admisible
1.0 ≤ Ajuste predeterminado porcentual de la corrección del pro­
override ≤ grama
100.0
> 100.0 No admisible

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 301
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Ejemplo
El siguiente ejemplo muestra cómo ajustar la corrección del programa:

MCL
// set dynamics modally
setDyn( v := 100.0, a := 5000.0, d := 6000.0, j := 10000.0 );
// linear movement using dynamics which were set by previous command
linAbs ( ( x := 20.0, y := 30.0, z := 40.0 ) );

// set program override to 50%


setOvr( 50.0 );
// linear movement with override 50% (v = 50.0, a = 2500.0, d = 3000.0)
linAbs ( ( x := 45.0 ) );
// set program override to 30%
setOvr( 30.0 );
// linear movement with override 30% (v = 15.0, a = 1500.0, d = 1800.0)
linAbs ( ( x := 75.0 ), v := 50.0 );

6.6.6 preHalt(): Detener la preparación del programa (S7-1500T)

Descripción
El objeto tecnológico Intérprete cumple las siguientes tareas de procesamiento:
• Interpretación de las instrucciones del programa intérprete
• Preparación de los movimientos para el objeto tecnológico Cinemática y el objeto
tecnológico Eje con anticipación (preparación del programa)
• Ejecución de las tareas del intérprete optimizada en cuanto a tecnología y tiempo
(ejecución del programa)
La tarea de preparación puede detenerse y dispararse de forma selectiva o condicionada. En
la preparación del programa se preparan instrucciones y se guardan en la cadena de órdenes
del intérprete. Cuando la cadena de órdenes del intérprete está llena, se cancela la
preparación del programa. En la ejecución del programa, se procesan las instrucciones de la
cadena de órdenes del intérprete.
Tan pronto como una instrucción de la cadena de órdenes del intérprete se haya procesado,
vuelve a haber espacio en la cadena de órdenes del intérprete. La preparación del programa
prepara la siguiente instrucción y la guarda en la cadena de órdenes del intérprete. Puesto
que la preparación del programa proporciona instrucciones mientras se ejecuta una secuencia
de movimiento en el programa, el número de instrucciones de una secuencia de movimiento
no está limitado por el tamaño de la cadena de órdenes del intérprete.
Una de las posibilidades de las que dispone el usuario para parar explícitamente la
interpretación y preparar el movimiento en la preparación del programa consiste en utilizar la
función de sistema especial "preHalt" en el programa intérprete. La función "preHalt" detiene
la tarea de preparación.
Tras sincronizar la preparación y la ejecución del programa, la preparación continúa
automáticamente, es decir, otras instrucciones adicionales se preparan una vez finalizadas
todas las instrucciones anteriores.

Puede utilizarse en
• Unidad de organización del programa "Programa principal" del programa intérprete
• Unidad de organización del programa "Función" del programa intérprete

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


302 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Sintaxis
MCL
preHalt();

Parámetro

Parámetro Declaración Tipo de datos Valor predeter­ Descripción


minado
ninguno - - - -

Reglas
• La detención de la interpretación y preparación en la preparación del programa con la
función "preHalt" siempre da lugar a la detención del movimiento.
• El suavizado de la transición de un movimiento no puede tener lugar más allá de la
función "preHalt".
• La función "preHalt" es necesaria para sincronizar las tareas de ejecución y la preparación
del programa intérprete.

Ejemplo
En el siguiente ejemplo, la función "preHalt" detiene la preparación de más instrucciones. La
preparación de las instrucciones tras "preHalt" se efectúa una vez finalizadas todas las
instrucciones anteriores. De forma correspondiente, la primera función linAbs se ejecuta con
una parada precisa ("velocidad" = 0), aunque la primera función linAbs se haya programado
con suavizado de transición ("trans" = 1). Tras ejecutar la primera función linAbs, siguen la
preparación y la ejecución de la segunda función linAbs. La asignación del valor a "myVar1" se
realiza utilizando previamente "preHalt()" en la preparación del programa.
MCL
linAbs( pos1, trans := 1, blend := 2 ); // polynomial blending
preHalt();
// Preprocessing evaluates further instructions only after all
// preceding instructions have been completed.
myVar1 := 5.1; // the value is not assigned in preprocessing because of preHalt()
linAbs( pos2, trans := 0 ); // exact stop

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 303
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

6.6.7 Control de tiempo de la lectura y escritura de variables (S7-1500T)


La lectura y escritura de variables de programa y de variables de bloques de datos del objeto
tecnológico se ejecutan de forma estándar como parte de la preparación.
De forma adicional, es posible controlar la especificación de tiempo para el acceso de lectura
y escritura a variables de programa y variables de bloque de datos de objeto tecnológico.

Control de tiempo de la lectura de variables


La lectura de variables de bloque de datos de objeto tecnológico puede tener lugar en
diferentes contextos. La tabla siguiente muestra los diferentes contextos de la lectura de
variables de bloque de datos de objeto tecnológico en el programa MCL:
Contexto de la lectura Ejemplo
Lectura de variables de bloques de ...
datos del objeto tecnológico en el // $A1.ActualPosition is 0.0 in preprocessing
posAbs( $A1, 20.0 );
contexto de la preparación del pro­ posAbs( $A1, 40.0 );
grama intérprete ...
(* reading value of "ActualPosition" at the time of
preprocessing of the assignment *)
myVar := $A1.ActualPosition; // myVar := 0.0
...
Lectura de variables de bloques de ...
datos del objeto tecnológico tras posAbs( myExtAxis, 20.0 );
...
sincronizar la preparación/ejecu­ preHalt(); // Stop preprocessing
ción del programa mediante una myVar := myExtAxis.ActualPosition; // myVar := 20.0
función preHalt previa ...

Control de tiempo de la escritura de variables

Contexto de la escritura Ejemplo


Escritura de variables de bloques de ...
datos del objeto tecnológico en el posAbs( $A1, 20.0 );
posAbs( $A1, 40.0 );
contexto de una operación de asig­ ...
nación que se realiza durante la // executed in preprocessing
preparación del programa intérpre­ $IPR.Clipboard.cbBool[1] := TRUE;
te ...
Escritura de variables de bloques de ...
datos del objeto tecnológico tras posAbs( $A1, 20.0 );
...
sincronizar la preparación/ejecución preHalt(); // stop preprocessing
del programa mediante una fun­ ...
ción preHalt previa (* assigment value "0" to variable "cbDint[1]" executed in
preprocessing, but after finishing the posAbs command because of
the preHalt command. Without preHalt command the assigment would
already take place before posAbs execution *)
$IPR.Clipboard.cbDint[1] := 0;
...
Escritura de variables de bloque de ...
datos de objeto tecnológico en el writeVar( $IPR.Clipboard.cbDint[1], 2 ); // execute in main run
...
contexto de la ejecución del progra­
ma mediante el uso de la función
writeVar

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


304 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Si se escriben variables durante la ejecución del programa, son posibles diferentes situaciones
respecto al tiempo de la ejecución:
• Ejecución dentro del procesamiento secuencial del programa (ejemplo 1)
• Ejecución en paralelo a instrucciones en curso (ver capítulo "Descripción general del inicio
síncrono de instrucciones y secuencias de instrucciones (Página 109)"):
– Inicio síncrono con orden de movimiento (ejemplo 2)
– Inicio síncrono en el punto de suavizado de transición de una secuencia de movimiento
(ejemplo 3)
– Ejecución dentro del contexto de la acción síncrona

Ejemplo 1
En este ejemplo, la variable $IPR.Clipboard.cbDint[1] se ajusta a 1 durante la preparación del
programa intérprete. La asignación tiene lugar antes de que la ejecución del programa haya
llegado a la función anterior. En la ejecución del programa, la función writeVar ajusta la
variable $IPR.Clipboard.cbDint[1] del valor 1 (valor tras el bucle de preparación) al valor 2 tras
finalizar el movimiento hasta Pos2.

MCL
linAbs( pos1, trans := 1, blend := 2 );
linAbs( pos2, trans := 0 );
writeVar( $IPR.Clipboard.cbDint[1], 2 ); // execute in main run
$IPR.Clipboard.cbDint[1] := 1; // execute in preprocessing

Ejemplo 2
Este ejemplo muestra la ejecución de la función writeVar (escritura de las variables
$IPR.Clipboard.cbDint[1]) de forma síncrona al inicio de la función "posAbs". Tras ejecutar
todas las instrucciones en el bloque SYNC/END_SYNC, la variable $IPR.Clipboard.cbDint[1]
tiene el valor 2.

MCL
$IPR.Clipboard.cbDint[1] := 0; // execute in preprocessing
SYNC
posAbs( $A1, 20.0 );
ON_START
writeVar( $IPR.Clipboard.cbDint[1], 2 ); // execute in main run
END_SYNC;
$IPR.Clipboard.cbDint[1] := 1; // execute in preprocessing

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 305
Instrucciones MCL (S7-1500T)
6.6 Otras instrucciones (S7-1500T)

Ejemplo 3
En este ejemplo, la variable $IPR.Clipboard.cbDint[1] se ajusta al valor 1 en la preparación del
programa intérprete. A continuación, la variable $IPR.Clipboard.cbDint[1] se ajusta al valor 2
en la ejecución del programa, en el punto de suavizado de la transición del movimiento lineal
de Pos1 a Pos2.

MCL
$IPR.Clipboard.cbDint[1] := 1; // execute in preprocessing

linAbs( pos1, trans := 1, blend := 2 );


SYNC
linAbs( pos2, trans := 0 );
ON_START
writeVar( $IPR.Clipboard.cbDint[1], 2 ); // execute in main run
END_SYNC;

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


306 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.7 Instrucciones de cadena de bits (S7-1500T)

6.7 Instrucciones de cadena de bits (S7-1500T)

Descripción
Cada función estándar Bitstring tiene dos parámetros de entrada, denominados IN y N. La
función Bitstring permite rotar o desplazar el patrón de bits n posiciones hacia la izquierda o
hacia la derecha. Los parámetros de entrada que deben desplazarse pueden ser del tipo
DWORD. El resultado de la instrucción se devuelve en el operando como valor de función. La
tabla siguiente muestra los nombres de función y los tipos de datos de ambos parámetros de
entrada, así como el tipo de datos del valor de la función.

Sintaxis
Explicación de los parámetros de entrada:
• Parámetro de entrada IN: búfer en el que se ejecutan operaciones Bitstring.
• Parámetro de entrada N: número de ciclos de la función de búfer cíclica ROL y ROR, o
número de cifras que deben desplazarse en caso de SHL y SHR.
El tipo de parámetro de entrada determina el tipo del resultado de la función.

Nombre Tipo de datos del Tipo de datos del Tipo de datos Descripción
de parámetro de parámetro de del valor de
función entrada entrada función
(IN) (N) (RESULT)
ROL DWORD UDINT DWORD El valor del parámetro IN se rota hacia
la izquierda el número de posiciones
de bit indicado en el contenido del
parámetro N
ROR DWORD UDINT DWORD El valor del parámetro IN se rota hacia
la derecha el número de posiciones
de bit indicado en el contenido del
parámetro N
SHL DWORD UDINT DWORD El valor del parámetro IN se desplaza
exactamente tantas posiciones hacia
la izquierda como posiciones de bit se
hayan sustituido por 0 en el lado de­
recho, lo que se determina en el pará­
metro N
SHR DWORD UDINT DWORD El valor del parámetro IN se desplaza
exactamente tantas posiciones hacia
la derecha como posiciones de bit se
hayan sustituido por 0 en el lado iz­
quierdo, lo que se determina en el pa­
rámetro N

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 307
Instrucciones MCL (S7-1500T)
6.8 Funciones matemáticas (S7-1500T)

Ejemplo

Llamada de función Resultado


RESULT := ROL ( IN := 2#1101_0011, N := 5 ); 2#0111_1010
(= 122 decimal)
RESULT := ROR ( IN := 2#1101_0011, N := 2 ); 2#1111_0100
(= 244 decimal)
RESULT := SHL ( IN := 2#1101_0011, N := 3 ); 2#1001_1000
(= 152 decimal)
RESULT := SHR ( IN := 2#1101_0011, N := 2 ); 2#0011_0100
(= 52 decimal)

6.8 Funciones matemáticas (S7-1500T)

Descripción
Las funciones matemáticas ejecutan cálculos sobre la base de los valores de entrada
(parámetros de entrada) y devuelven valores numéricos.

Sintaxis
La siguiente tabla describe un grupo de funciones matemáticas predefinidas junto con
nombres de función y tipos de datos:

Nombre de Tipo de datos del parámetro Tipo de datos del valor Descripción
función de entrada de función
(IN) (RESULT)
ABS DINT, LREAL DINT, UDINT, LREAL Valor absoluto
SQR ANY_INT, LREAL LREAL Cuadrado
SQRT ANY_INT, LREAL LREAL Raíz cuadrada
SIN ANY_INT, LREAL LREAL Seno en radianes
COS ANY_INT, LREAL LREAL Coseno en radianes
TAN ANY_INT, LREAL LREAL Tangente en radianes
EXP ANY_INT, LREAL LREAL Función exponencial
ASIN ANY_INT, LREAL LREAL Arcoseno
ACOS ANY_INT, LREAL LREAL Arcocoseno
ATAN ANY_INT, LREAL LREAL Arcotangente
LN ANY_INT, LREAL LREAL Logaritmo natural
FRAC ANY_INT, LREAL LREAL Devuelve el valor de los deci­
males
Las abreviaturas tienen el siguiente significado:
ANY_INT para tipos de datos DINT, UDINT

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


308 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.8 Funciones matemáticas (S7-1500T)

Nombre de Tipo de datos del parámetro Tipo de datos del valor Descripción
función de entrada de función
(IN) (RESULT)
MIN IN1 ANY_INT, ANY_INT, Define el mínimo entre un mí­
LREAL LREAL nimo de 2 hasta un máximo
de 32 valores.
IN2 ANY_INT,
LREAL • IN1 – Primer valor de en­
trada
INn ANY_INT, • IN2 – Segundo valor de en­
LREAL trada
• INn – Variables de entrada
agregadas adicionalmente
cuyos valores se comparan
MAX IN1 ANY_INT, ANY_INT, Define el máximo entre un mí­
LREAL LREAL nimo de 2 hasta un máximo
de 32 valores.
IN2 ANY_INT,
LREAL • IN1 – Primer valor de en­
trada
INn ANY_INT, • IN2 – Segundo valor de en­
LREAL trada
• INn – Variables de entrada
agregadas adicionalmente
cuyos valores se comparan
LIMIT MN ANY_INT, ANY_INT, Un valor transferido está limi­
LREAL LREAL tado a un determinado valor
mínimo o máximo.
IN ANY_INT,
LREAL • MN – Límite inferior
• IN – Valor de entrada
MX ANY_INT, • MX – Límite superior
LREAL
Las abreviaturas tienen el siguiente significado:
ANY_INT para tipos de datos DINT, UDINT

Ejemplo

Llamada de función Resultado


RESULT := ABS( -5 ); 5
RESULT := SQRT( 81.0 ); 9.0 (LREAL)
RESULT := SQR( 23 ); 529.0 (LREAL)
RESULT := EXP( 4.1 ); 60.340 ...
RESULT := LN( 2.718281 ); 0.99999…..
PI := 3.141592; 0.5
RESULT := SIN( PI / 6 );
RESULT := ACOS( 0.5 ); 1.047197
RESULT := FRAC( 34536.7 ); 0.7
RESULT := MIN( in1 := 2, in2 := 255, in3 := -4 ); -4
RESULT := MAX( in1 := 2, in2 := 255, in3 := -4 ) ; 255

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 309
Instrucciones MCL (S7-1500T)
6.9 Conversiones (S7-1500T)

Llamada de función Resultado


RESULT := LIMIT( mn := 0, in := 10, mx := 300 ); 10
RESULT := LIMIT( mn := 0, in := -10, mx := 300 ); 0
RESULT := LIMIT( mn := 0, in := 500, mx := 300 ); 300

6.9 Conversiones (S7-1500T)

Descripción
La siguiente tabla describe un grupo de funciones de conversión predefinidas junto con sus
nombres de función y tipo de datos.

Sintaxis

Nombre de Tipo de datos del parámetro Tipo de datos del Descripción


función de entrada valor de función
(IN) (RESULT)
FLOOR LREAL DINT Redondea un valor al siguiente ente­
ro más pequeño.
CEIL LREAL DINT Redondea un valor al siguiente ente­
ro más grande.
ROUND LREAL DINT Redondea un valor al siguiente ente­
ro. Si el valor de entrada se encuen­
tra entre un número par y un núme­
ro impar, se selecciona el número
par
TRUNC LREAL DINT Selecciona la parte entera y la de­
vuelve sin decimales
SCALE_X MIN ANY_INT, ANY_INT, LREAL Escala un valor sobre la base de la si­
LREAL guiente ecuación:
RESULT = [VALUE ∗ (MAX - MIN)] +
VALUE ANY_INT,
MIN
LREAL
• MIN – Límite inferior del rango
MAX ANY_INT, de valores
LREAL • MAX – Límite superior del rango
de valores
• VALUE – Valor que se va a escalar
Las abreviaturas tienen el siguiente significado:
ANY_INT para tipos de datos DINT, UDINT

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


310 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones MCL (S7-1500T)
6.9 Conversiones (S7-1500T)

Nombre de Tipo de datos del parámetro Tipo de datos del Descripción


función de entrada valor de función
(IN) (RESULT)
NORM_X MIN LREAL LREAL Normaliza un valor sobre la base de
la siguiente ecuación:
VALUE LREAL
RESULT = (VALUE – MIN) / (MAX –
MAX LREAL MIN)
• MIN – Límite inferior del rango
de valores
• MAX – Límite superior del rango
de valores
• VALUE – Valor que se va a nor­
malizar
Las abreviaturas tienen el siguiente significado:
ANY_INT para tipos de datos DINT, UDINT

Ejemplo

Llamada de función Resultado


RESULT := FLOOR( 5.34 ); 5
RESULT := FLOOR( -5.34 ); -6
RESULT := CEIL( 5.34 ); 6
RESULT := CEIL( -5.34 ); -5
RESULT := ROUND( -7.64 ); -8
RESULT := ROUND( -7.14 ); -7
RESULT := TRUNC( -7.64 ); -7
RESULT := SCALE_X( min := 5, value := 25, max := 105 ); RESULT = [25 ∗ (105 - 5)] + 5 = 2505.0
RESULT := NORM_X( min := 5, value := 25, max := 105 ); RESULT = (25 – 5) / (105 – 5) = 0.2

Consulte
también
Conversiones de tipos de datos (Página 68)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 311
Diagnóstico (S7-1500T) 7
La descripción del diagnóstico de Motion Control se limita al visor de diagnóstico de los
objetos tecnológicos en el TIA Portal, las alarmas tecnológicas y los identificadores de error en
las instrucciones de Motion Control.
Encontrará las siguientes descripciones en la documentación "S7-1500/S7-1500T Alarmas e
identificadores de error de Motion Control" (Página 11):
• Concepto de diagnóstico
• Alarmas tecnológicas
• Identificadores de error en las instrucciones de Motion Control
Encontrará una descripción completa del diagnóstico de sistema de la CPU S7‑1500 en el ma­
nual de funciones "Diagnóstico"
(https://support.industry.siemens.com/cs/ww/es/view/59192926).

7.1 Objeto tecnológico Intérprete (S7-1500T)

7.1.1 Bits de estado y de error (S7-1500T)


La función de diagnóstico "Objeto tecnológico > Diagnóstico > Bits de estado y error" permite
monitorear los avisos de estado y error del objeto tecnológico en el TIA Portal. La función de
diagnóstico está disponible en modo online.
En las tablas siguientes se explica el significado de los avisos de estado y error. Entre
paréntesis se indica la variable correspondiente del objeto tecnológico.

Estado del intérprete


La tabla siguiente muestra los posibles estados del objeto tecnológico Intérprete:

Estado Descripción
Activo El objeto tecnológico está en funcionamiento.
(<TO>.StatusWord.X0 (Control))
Error El objeto tecnológico está habilitado. Puede desplazar el eje con órdenes de
movimiento.
(<TO>.StatusWord.X1 (Error))
Reinicio activo El objeto tecnológico se reinicializa.
(<TO>.StatusWord.X2 (RestartActive))
Reinicio necesario Se han modificado datos relevantes para el reinicio. Los cambios solo se apli­
can cuando se reinicia el objeto tecnológico.
(<TO>.StatusWord.X3 (OnlineStartValuesChanged))

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


312 Manual de funciones, 11/2023, A5E53131983-AA
Diagnóstico (S7-1500T)
7.1 Objeto tecnológico Intérprete (S7-1500T)

Estado del programa intérprete


La tabla siguiente muestra los posibles estados del programa intérprete en el objeto
tecnológico Intérprete:

Estado Descripción
Cargando El objeto tecnológico carga el programa intérprete. La preparación del pro­
grama intérprete está en curso.
(<TO>.StatusWord.X9 (Loading))
Cargado El programa intérprete se ha cargado y preparado.
(<TO>.StatusWord.X10 (Loaded))
En curso El objeto tecnológico ejecuta un programa intérprete.
(<TO>.StatusWord.X5 (InRun))
Done (ninguna orden ac­ La ejecución del programa intérprete ha finalizado.
tiva) (<TO>.StatusWord.X6 (Done))
Detener La ejecución del programa intérprete se está deteniendo o se ha detenido.
(<TO>.StatusWord.X7 (Stopping))

Error
La tabla siguiente muestra los posibles errores:

Error Descripción
Sistema Se ha producido un error interno del sistema.
(<TO>.ErrorWord.X0 (SystemFault))
Configuración Se ha producido un error de configuración.
Uno o varios parámetros de configuración son incoherentes o no permitidos.
El objeto tecnológico se ha configurado erróneamente o bien se han modifi­
cado incorrectamente datos de configuración modificables durante el tiempo
de ejecución del programa de usuario.
(<TO>.ErrorWord.X1 (ConfigFault))
Programa de usuario Se ha producido un error en una instrucción de Motion Control o en su utili­
zación en el programa de usuario.
(<TO>.ErrorWord.X2 (UserFault))
Orden rechazada Una orden no puede ejecutarse.
No se pueden ejecutar instrucciones de Motion Control, ya que no se cum­
plen los requisitos necesarios.
(<TO>.ErrorWord.X3 (CommandNotAccepted))
Programa intérprete ac­ Se ha producido un error en el programa intérprete actual.
tual (<TO>.ErrorWord.X4 (UserProgramFault))
Mapeo actual Se ha producido un error en el mapeo de intérprete actual.
(<TO>.ErrorWord.X5 (UserMappingFault))

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 313
Diagnóstico (S7-1500T)
7.1 Objeto tecnológico Intérprete (S7-1500T)

Advertencias
La tabla siguiente muestra las posibles advertencias:

Advertencia Descripción
Sistema Se ha producido una advertencia interna del sistema.
(<TO>.WarningWord.X0 (SystemWarning))
Configuración Uno o varios parámetros de configuración se adaptan internamente de modo
temporal.
(<TO>.WarningWord.X1 (ConfigWarning))
Programa de usuario Se ha producido una advertencia en el programa de usuario.
(<TO>.WarningWord.X2 (UserWarning))
Orden rechazada La orden no puede ejecutarse.
No se pueden ejecutar instrucciones de Motion Control, ya que no se cum­
plen los requisitos necesarios.
(<TO>.WarningWord.X3 (CommandNotAccepted))
Programa intérprete ac­ Se ha producido una advertencia en el programa intérprete actual.
tual (<TO>.WarningWord.X4 (UserProgrammWarning))
Mapeo actual Se ha producido una advertencia en el mapeo de intérprete actual.
(<TO>.WarningWord.X5 (UserMappingWarning))

Visor de avisos
Para obtener más información y para confirmar el error, acceda la ventana de inspección a
con el enlace "Visor de avisos".

Más información
En el capítulo "Evaluar StatusWord, ErrorWord y WarningWord" de la documentación
"S7-1500/S7-1500T Sinopsis de Motion Control" (Página 11) se describe una posibilidad para
evaluar los distintos bits de estado.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


314 Manual de funciones, 11/2023, A5E53131983-AA
Diagnóstico (S7-1500T)
7.1 Objeto tecnológico Intérprete (S7-1500T)

7.1.2 Estado del intérprete (S7-1500T)


La función de diagnóstico "Objeto tecnológico > Diagnóstico > Estado del intérprete" permite
vigilar el estado del intérprete en el TIA Portal. La función de diagnóstico está disponible en
modo online.

Área "Programa intérprete cargado actualmente"


La tabla siguiente describe el significado de la información de estado:

Estado Descripción
Nombre del programa Nombre del programa intérprete cargado
<TO>.ProgramName
Modo de programa Modo de operación de la ejecución del programa intérprete
<TO>.StatusInterpreter.ProgramMode
Estado del programa Estado del programa intérprete cargado

Mapeo de intérprete Nombre del objeto tecnológico Mapeo de intérprete utilizado


<TO>.MappingName

Área "Disparo de error"


La tabla siguiente describe el significado de la información de error:

Estado Descripción
Nombre del programa Nombre del programa intérprete cargado
<TO>.ProgramName
Línea Número de línea del error que se ha producido
<TO>.ErrorDetail.LineNumber
Detalles del error Información adicional sobre el error
<TO>.ErrorDetail.ErrorInfo

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 315
Instrucciones (S7-1500T) 8
8.1 Intérprete (S7-1500T)

8.1.1 MC_LoadProgram V8 (S7-1500T)

8.1.1.1 MC_LoadProgram: Carga/descarga del programa intérprete V8 (S7-1500T)

Descripción
La instrucción "MC_LoadProgram" de Motion Control carga un programa intérprete en el
objeto tecnológico Intérprete. El intérprete prepara el programa intérprete para su ejecución.
Para poder cargar un programa intérprete modificado o distinto en el objeto tecnológico
Intérprete, en primer lugar descargue el programa intérprete cargado del objeto tecnológico
Intérprete. A continuación, puede cargar el programa intérprete modificado o uno nuevo en
el objeto tecnológico Intérprete.
Esta instrucción de Motion Control permite lo siguiente:
• Cargar un programa intérprete en el objeto tecnológico Intérprete (Página 43)
• Descargar un programa intérprete del objeto tecnológico Intérprete (Página 43)

Se aplica a
• Intérprete

Requisitos
• El objeto tecnológico Intérprete se ha configurado correctamente.
• No hay ninguna orden de Motion Control activa en el objeto tecnológico Intérprete
("<TO>.StatusWord.X0" = FALSE (Control)).

Comportamiento de relevo
Una nueva orden "MC_LoadProgram" no cancela ninguna orden de Motion Control en curso.
Una orden "MC_LoadProgram" es cancelada por una orden "MC_StopProgram".
El comportamiento de relevo de las órdenes "MC_LoadProgram" se describe en el capítulo
"Comportamiento de relevo V8: órdenes de intérprete (Página 328)".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


316 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones (S7-1500T)
8.1 Intérprete (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "MC_LoadProgram" de Motion
Control:
Parámetro Declara­ Tipo de datos Valor pre­ Descripción
ción determina­
do
Interpreter INPUT TO_Interpreter - Objeto tecnológico Intérprete
Execute INPUT BOOL FALSE TRUE Inicio de la orden con flanco ascendente
Program INPUT STRING - Si "Mode" = 0:
Irrelevante
Si "Mode" = 1:
Nombre del objeto tecnológico Programa intérprete
ProgramSource INPUT DINT 1 Si "Mode" = 0:
Irrelevante
Si "Mode" = 1:
Fuente del programa intérprete
1 Objeto tecnológico Programa intérprete
2 Reservado
Mapping INPUT STRING - Si "Mode" = 0:
Irrelevante
Si "Mode" = 1:
Nombre del objeto tecnológico Mapeo de intérpre­
te
MappingSource INPUT DINT 1 Si "Mode" = 0:
Irrelevante
Si "Mode" = 1:
Fuente del Mapeo de intérprete
1 Objeto tecnológico Mapeo de intérprete
2 Reservado
3 Reservado
Mode INPUT DINT 1 Modo de carga
0 Descargar un programa intérprete del ob­
jeto tecnológico Intérprete
1 Cargar un programa intérprete en el obje­
to tecnológico Intérprete
El programa intérprete está bloqueado
contra modificaciones.
Done OUTPUT BOOL FALSE TRUE La orden ha finalizado.
Busy OUTPUT BOOL FALSE TRUE La orden está en proceso.
CommandAborted OUTPUT BOOL FALSE TRUE La orden ha sido cancelada por otra du­
rante su procesamiento.
Error OUTPUT BOOL FALSE TRUE Ha ocurrido un error al ejecutar la orden.
La orden se rechaza. La causa del error se
puede consultar en el parámetro
"ErrorID".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 317
Instrucciones (S7-1500T)
8.1 Intérprete (S7-1500T)

Parámetro Declara­ Tipo de datos Valor pre­ Descripción


ción determina­
do
ErrorID OUTPUT WORD 16#0000 Identificador de error del parámetro "ErrorID"
Encontrará más información en el capítulo
"Identificadores de error" de la documentación
"S7-1500/S7-1500T Alarmas e identificadores de
error de Motion Control" (Página 11).

8.1.2 MC_RunProgram V8 (S7-1500T)

8.1.2.1 MC_RunProgram: Iniciar la ejecución del programa intérprete V8 (S7-1500T)

Descripción
La instrucción "MC_RunProgram" de Motion Control inicia la ejecución de un programa
intérprete que se carga o está cargado en el objeto tecnológico Intérprete.
Esta instrucción de Motion Control permite lo siguiente:
• Iniciar la ejecución del programa intérprete (Página 44)

Se aplica a
• Intérprete

Requisitos
• El objeto tecnológico Intérprete se ha configurado correctamente.
• El programa intérprete que se va a ejecutar se carga o está cargado en el objeto
tecnológico Intérprete ("<TO>.StatusWord.X9" = TRUE (Loading) o
"<TO>.StatusWord.X10" = TRUE (Loaded)).
• No hay ninguna otra orden "MC_RunProgram" activa en el objeto tecnológico Intérprete.
• No hay ninguna orden "MC_Stop" activa en el objeto tecnológico Intérprete.

Comportamiento de relevo
Una nueva orden "MC_RunProgram" no cancela ninguna orden de Motion Control en curso.
Una orden "MC_RunProgram" es cancelada por una orden "MC_StopProgram".
El comportamiento de relevo de las órdenes "MC_RunProgram" se describe en el capítulo
"Comportamiento de relevo V8: órdenes de intérprete (Página 328)".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


318 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones (S7-1500T)
8.1 Intérprete (S7-1500T)

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "MC_RunProgram" de Motion
Control:
Parámetros Declara­ Tipo de datos Valor pre­ Descripción
ción determina­
do
Interpreter INPUT TO_Interpreter - Objeto tecnológico Intérprete
Execute INPUT BOOL FALSE TRUE Inicio de la orden con flanco ascendente
Done OUTPUT BOOL FALSE TRUE La orden ha finalizado.
El programa intérprete se ha ejecutado y
preparado para una nueva ejecución.
Busy OUTPUT BOOL FALSE TRUE La orden está en proceso.
Active OUTPUT BOOL FALSE TRUE Se ejecuta el programa intérprete.
CommandAborted OUTPUT BOOL FALSE TRUE La orden ha sido cancelada por otra du­
rante su procesamiento.
Error OUTPUT BOOL FALSE TRUE Ha ocurrido un error al ejecutar la orden.
La orden se rechaza. La causa del error se
puede consultar en el parámetro
"ErrorID".
ErrorID OUTPUT WORD 16#0000 Identificador de error del parámetro "ErrorID"
Encontrará más información en el capítulo
"Identificadores de error" de la documentación
"S7-1500/S7-1500T Alarmas e identificadores de
error de Motion Control" (Página 11).

8.1.3 MC_StopProgram V8 (S7-1500T)

8.1.3.1 MC_StopProgram: Detener la ejecución del programa intérprete V8 (S7-1500T)

Descripción
La instrucción "MC_StopProgram" de Motion Control detiene la ejecución de un programa
intérprete en el objeto tecnológico Intérprete. Un eje individual/una cinemática controlados
por el programa intérprete se detienen en función del modo especificado
("<TO>.StatusInterpreterMotion.StatusWord.X0" = TRUE (ControlledByInterpreter)). A
continuación, el objeto tecnológico correspondiente del eje individual/cinemática deja de
estar controlado por el objeto tecnológico Intérprete.

NOTA
Órdenes de movimiento sin fin
Tenga en cuenta que, para las órdenes de movimiento que no finalizan automáticamente,
p. ej., "move()", se ajusta la variable "<TO>.StatusInterpreterMotion.StatusWord.X0"
(ControlledByInterpreter) del objeto tecnológico correspondiente a "FALSE" en cuanto el
objeto tecnológico ha alcanzado el estado especificado.
Para poder cancelar dichas órdenes de movimiento también con una orden
"MC_StopProgram", utilice la instrucción MCL "setControlledByInterpreter()".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 319
Instrucciones (S7-1500T)
8.1 Intérprete (S7-1500T)

Esta instrucción de Motion Control permite lo siguiente:


• Detener la ejecución del programa intérprete (Página 44)

Se aplica a
• Intérprete

Requisitos
• El objeto tecnológico Intérprete se ha configurado correctamente.
• No hay ninguna otra orden "MC_StopProgram" activa con un modo de dinámica de igual o
mayor prioridad en el objeto tecnológico Intérprete.

Comportamiento de relevo
Una nueva orden "MC_StopProgram" con "Mode" = 0 cancela una orden "MC_StopProgram"
en curso con "Mode" = 1 o 2.
Una nueva orden "MC_StopProgram" con "Mode" = 1 cancela una orden "MC_StopProgram"
en curso con "Mode" = 2.
El comportamiento de relevo de las órdenes "MC_StopProgram" se describe en el capítulo
"Comportamiento de relevo V8: órdenes de intérprete (Página 328)".

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "MC_StopProgram" de Motion
Control:
Parámetros Declara­ Tipo de datos Valor pre­ Descripción
ción determina­
do
Interpreter INPUT TO_Interpreter - Objeto tecnológico Intérprete
Execute INPUT BOOL FALSE TRUE Inicio de la orden con flanco ascendente
Mode INPUT DINT 0 Modo para el comportamiento dinámico
0 Detener eje individual/cinemática con di­
námica máxima
1 Detener eje individual/cinemática con la
dinámica de la orden de movimiento que
debe interrumpirse
2 Detener eje individual/cinemática des­
pués de la orden de movimiento actual o
de la secuencia de movimiento actual
Done OUTPUT BOOL FALSE TRUE La orden ha finalizado. La ejecución del
programa intérprete se ha detenido.
Busy OUTPUT BOOL FALSE TRUE La orden está en proceso.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


320 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

Parámetros Declara­ Tipo de datos Valor pre­ Descripción


ción determina­
do
CommandAborted OUTPUT BOOL FALSE TRUE La orden ha sido cancelada por otra du­
rante su procesamiento.
Error OUTPUT BOOL FALSE TRUE Ha ocurrido un error al ejecutar la orden.
La orden se rechaza. La causa del error se
puede consultar en el parámetro
"ErrorID".
ErrorID OUTPUT WORD 16#0000 Identificador de error del parámetro "ErrorID"
Encontrará más información en el capítulo
"Identificadores de error" de la documentación
"S7-1500/S7-1500T Alarmas e identificadores de
error de Motion Control" (Página 11).

8.2 Comportamiento de relevo de órdenes de Motion Control V8


(S7-1500T)

8.2.1 Comportamiento de relevo V8: Órdenes de referenciado y de movimiento


(S7-1500T)
La tabla siguiente muestra qué efecto tiene una nueva orden de Motion Control sobre las
órdenes de referenciado y de movimiento en curso:
⇒ Orden en curso MC_Home MC_Home MC_Halt MC_Stop MC_MoveSu­ MC_MotionIn­
⇓ Nueva orden "Mode" = 2, 8, "Mode" = 3, 5 MC_MoveAb­ perimposed Velocity
10 solute MC_MotionIn­ MC_MotionIn­
MC_MoveRela­ Superimposed Position
tive MC_HaltSuper­
MC_MoveVelo­ imposed
city
MC_MoveJog
MC_Home A A A - A A
"Mode" = 3, 5
MC_Home A - - - - -
"Mode" = 9
A La orden en curso se cancela con "CommandAborted" = TRUE.
B Una orden "MC_Stop" es cancelada por otra orden "MC_Stop" con una reacción de parada igual o superior.
- Sin efecto. La orden en curso sigue ejecutándose.
1) El estado "Busy" = TRUE, "StartSync" = FALSE o "InSync" = FALSE equivale a un sincronismo en espera.
2) El estado "Busy" = TRUE, "StartSync" o "InSync" = TRUE equivale a un sincronismo activo.
3) El estado "Busy" = TRUE, "StartSyncOut" = FALSE equivale a una orden de desincronización en espera.
4) El estado "Busy" = TRUE, "StartSyncOut" = TRUE equivale a una orden de desincronización activa.
5) Una orden "MC_CamIn" con "SyncProfileReference" = 5 no cancela ninguna orden "MC_[...]Superimposed". La orden en
curso sigue ejecutándose.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 321
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

⇒ Orden en curso MC_Home MC_Home MC_Halt MC_Stop MC_MoveSu­ MC_MotionIn­


⇓ Nueva orden "Mode" = 2, 8, "Mode" = 3, 5 MC_MoveAb­ perimposed Velocity
10 solute MC_MotionIn­ MC_MotionIn­
MC_MoveRela­ Superimposed Position
tive MC_HaltSuper­
MC_MoveVelo­ imposed
city
MC_MoveJog
MC_Halt - A A - A A
MC_MoveAbsolute
MC_MoveRelative
MC_MoveVelocity
MC_MoveJog
MC_MotionInVelocity
MC_MotionInPosition
MC_MoveSuper­ - - - - A -
imposed
MC_MotionInSuper­
imposed
MC_HaltSuper­
Imposed
MC_Stop A A A B A A
MC_GearIn - A A - A -
MC_GearInVelocity
MC_GearInPos - - - - - -
MC_CamIn
en espera1)
MC_GearInPos - A A - A5) -
MC_CamIn
activa2)
MC_LeadingValue­ - - - - - -
Additive
MC_GearOut - - - - - -
MC_CamOut
en espera3)
MC_GearOut - - - - A -
MC_CamOut
activa4)
A La orden en curso se cancela con "CommandAborted" = TRUE.
B Una orden "MC_Stop" es cancelada por otra orden "MC_Stop" con una reacción de parada igual o superior.
- Sin efecto. La orden en curso sigue ejecutándose.
1) El estado "Busy" = TRUE, "StartSync" = FALSE o "InSync" = FALSE equivale a un sincronismo en espera.
2) El estado "Busy" = TRUE, "StartSync" o "InSync" = TRUE equivale a un sincronismo activo.
3) El estado "Busy" = TRUE, "StartSyncOut" = FALSE equivale a una orden de desincronización en espera.
4) El estado "Busy" = TRUE, "StartSyncOut" = TRUE equivale a una orden de desincronización activa.
5) Una orden "MC_CamIn" con "SyncProfileReference" = 5 no cancela ninguna orden "MC_[...]Superimposed". La orden en
curso sigue ejecutándose.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


322 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

NOTA
Comportamiento de relevo con tope fijo activo
Con una limitación de fuerza/par activa con "MC_TorqueLimiting" se cancelan las órdenes en
curso si el accionamiento se mantiene en el tope fijo con "InClamping" = TRUE.

8.2.2 Comportamiento de relevo V8: Órdenes de sincronismo (S7-1500T)


La tabla siguiente muestra el efecto que tiene una nueva orden de Motion Control de
movimiento del eje sobre las órdenes de sincronismo en curso:
⇒ Orden en MC_Ge­ MC_Gear­ MC_Gear­ MC_Gear­ MC_Pha­ MC_Offset­ MC_Lea­ MC_Gear­ MC_Gear­
curso arIn InVelocity InPos InPos singAbso­ Absolute dingValue­ Out Out
⇓ Nueva or­ MC_CamIn MC_CamIn lute MC_Offset­ Additive MC_Cam­ MC_Cam­
den en espera1) activa2) MC_Pha­ Relative Out Out
singRelati­ en espera3) activa4)
ve
MC_Home A A - - - - - - -
"Mode" = 3, 5
MC_Halt A A - A A A - A A
MC_Move­ A A - A A A - A A
Absolute
MC_Move­
Relative
MC_Move­
Velocity
MC_MoveJog
MC_MotionIn A A A A A A - A A
Velocity
MC_MotionIn
Position
A La orden en curso se cancela con "CommandAborted" = TRUE.
N No permitido. La orden en curso sigue ejecutándose. Se rechaza la nueva orden.
- Sin efecto. La orden en curso sigue ejecutándose.
1) Una orden de sincronismo en espera ("Busy" = TRUE, "StartSync" = FALSE, "InSync" = FALSE) no cancela ninguna orden en
curso. La cancelación es posible con una orden "MC_Power".
2) El estado "Busy" = TRUE, "StartSync" o "InSync" = TRUE equivale a un sincronismo activo.
3) Una orden de desincronización en espera ("Busy" = TRUE, "StartSyncOut" = FALSE) no cancela ninguna orden en curso. La
cancelación es posible con una orden "MC_Power".
4) El estado "Busy" = TRUE, "StartSyncOut" = TRUE equivale a una orden de desincronización activa.
5) Si el eje conducido se encuentra en modo con regulación de posición, la orden en curso sigue ejecutándose. Si el eje con­
ducido se encuentra en modo sin regulación de posición, la nueva orden se rechaza.
6) Una orden "MC_GearOut" únicamente cancela una orden "MC_Gear[...]". Una orden "MC_CamOut" únicamente cancela
una orden "MC_Cam[...]".
7) Una orden con "SyncProfileReference" = 5 cancela un sincronismo en espera. La cancelación de un sincronismo en espera
no afecta a un sincronismo activo.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 323
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

⇒ Orden en MC_Ge­ MC_Gear­ MC_Gear­ MC_Gear­ MC_Pha­ MC_Offset­ MC_Lea­ MC_Gear­ MC_Gear­
curso arIn InVelocity InPos InPos singAbso­ Absolute dingValue­ Out Out
⇓ Nueva or­ MC_CamIn MC_CamIn lute MC_Offset­ Additive MC_Cam­ MC_Cam­
den en espera1) activa2) MC_Pha­ Relative Out Out
singRelati­ en espera3) activa4)
ve
MC_MoveSu­ - -/N5) - - - - - - -
perimposed
MC_MotionIn
Super­
imposed
MC_Halt­
Super­
Imposed
MC_Stop A A A A A A - A A
MC_GearIn A A A A A A - A A
MC_GearIn­
Velocity
MC_GearIn­ - - A - - - - A -
Pos
MC_CamIn
en espera1)
MC_GearIn­ A A5) A A A A - A A
Pos
MC_CamIn
activa2)
MC_Phasing­ - N - - A N - - -
Absolute
MC_Phasing­
Relative
MC_Offset­ - N - - N A - - -
Absolute
MC_Offset­
Relative
A La orden en curso se cancela con "CommandAborted" = TRUE.
N No permitido. La orden en curso sigue ejecutándose. Se rechaza la nueva orden.
- Sin efecto. La orden en curso sigue ejecutándose.
1) Una orden de sincronismo en espera ("Busy" = TRUE, "StartSync" = FALSE, "InSync" = FALSE) no cancela ninguna orden en
curso. La cancelación es posible con una orden "MC_Power".
2) El estado "Busy" = TRUE, "StartSync" o "InSync" = TRUE equivale a un sincronismo activo.
3) Una orden de desincronización en espera ("Busy" = TRUE, "StartSyncOut" = FALSE) no cancela ninguna orden en curso. La
cancelación es posible con una orden "MC_Power".
4) El estado "Busy" = TRUE, "StartSyncOut" = TRUE equivale a una orden de desincronización activa.
5) Si el eje conducido se encuentra en modo con regulación de posición, la orden en curso sigue ejecutándose. Si el eje con­
ducido se encuentra en modo sin regulación de posición, la nueva orden se rechaza.
6) Una orden "MC_GearOut" únicamente cancela una orden "MC_Gear[...]". Una orden "MC_CamOut" únicamente cancela
una orden "MC_Cam[...]".
7) Una orden con "SyncProfileReference" = 5 cancela un sincronismo en espera. La cancelación de un sincronismo en espera
no afecta a un sincronismo activo.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


324 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

⇒ Orden en MC_Ge­ MC_Gear­ MC_Gear­ MC_Gear­ MC_Pha­ MC_Offset­ MC_Lea­ MC_Gear­ MC_Gear­
curso arIn InVelocity InPos InPos singAbso­ Absolute dingValue­ Out Out
⇓ Nueva or­ MC_CamIn MC_CamIn lute MC_Offset­ Additive MC_Cam­ MC_Cam­
den en espera1) activa2) MC_Pha­ Relative Out Out
singRelati­ en espera3) activa4)
ve
MC_Leading­ - - - - - - A - -
Value­
Additive
MC_GearOut - N A6) 7) - - - - A6) -
MC_CamOut
en espera3)
MC_GearOut A6) N A6) 7) A6) A A - A6) -
MC_CamOut
activa4)
A La orden en curso se cancela con "CommandAborted" = TRUE.
N No permitido. La orden en curso sigue ejecutándose. Se rechaza la nueva orden.
- Sin efecto. La orden en curso sigue ejecutándose.
1) Una orden de sincronismo en espera ("Busy" = TRUE, "StartSync" = FALSE, "InSync" = FALSE) no cancela ninguna orden en
curso. La cancelación es posible con una orden "MC_Power".
2) El estado "Busy" = TRUE, "StartSync" o "InSync" = TRUE equivale a un sincronismo activo.
3) Una orden de desincronización en espera ("Busy" = TRUE, "StartSyncOut" = FALSE) no cancela ninguna orden en curso. La
cancelación es posible con una orden "MC_Power".
4) El estado "Busy" = TRUE, "StartSyncOut" = TRUE equivale a una orden de desincronización activa.
5) Si el eje conducido se encuentra en modo con regulación de posición, la orden en curso sigue ejecutándose. Si el eje con­
ducido se encuentra en modo sin regulación de posición, la nueva orden se rechaza.
6) Una orden "MC_GearOut" únicamente cancela una orden "MC_Gear[...]". Una orden "MC_CamOut" únicamente cancela
una orden "MC_Cam[...]".
7) Una orden con "SyncProfileReference" = 5 cancela un sincronismo en espera. La cancelación de un sincronismo en espera
no afecta a un sincronismo activo.

NOTA
Comportamiento de relevo con tope fijo activo
Con una limitación de fuerza/par activa con "MC_TorqueLimiting" se cancelan las órdenes en
curso si el accionamiento se mantiene en el tope fijo con "InClamping" = TRUE.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 325
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

8.2.3 Comportamiento de relevo V8: Órdenes del detector (S7-1500T)


La tabla siguiente muestra qué nuevas órdenes de Motion Control relevan las órdenes de
detector en curso:
⇒ Orden en curso MC_MeasuringInput MC_MeasuringInputCyclic
⇓ Nueva orden
MC_Home B B
"Mode" = 2, 3, 5, 8, 9, 10
MC_Home - -
"Mode" = 0, 1, 6, 7, 11, 12
MC_MeasuringInput A A
MC_MeasuringInputCyclic
MC_AbortMeasuringInput
A La orden en curso se cancela con "CommandAborted" = TRUE.
B La orden en curso se cancela con "ErrorID" = 16#80A3.
- Sin efecto. La orden en curso sigue ejecutándose.

8.2.4 Comportamiento de relevo V8: Órdenes de movimiento de la cinemática


(S7-1500T)
Las órdenes de ejes individuales no son relevadas por órdenes de cinemáticas.
La tabla siguiente muestra qué efecto tiene una nueva orden de Motion Control sobre las
órdenes de movimiento de cinemática en curso:
⇒ Orden en curso MC_MoveLinearAbsolute MC_GroupInterrupt MC_GroupStop
⇓ Nueva orden MC_MoveLinearRelative
MC_MoveCircularAbsolute
MC_MoveCircularRelative
MC_MoveDirectAbsolute
MC_MoveDirectRelative
MC_TrackConveyorBelt
MC_DefineWorkspaceZone
MC_DefineKinematicsZone
MC_SetWorkspaceZoneActive
MC_SetWorkspaceZoneInactive
MC_SetKinematicsZoneActive
MC_SetKinematicsZoneInactive
MC_SetOcsFrame
MC_Home N N N
MC_MoveSuperimposed
MC_GearOut
MC_CamOut
A La orden en curso se cancela con "CommandAborted" = TRUE.
B La orden en curso se cancela o continúa.
C La sincronización del OCS con la cinta transportadora se cancela con "MC_SetOcsFrame" = TRUE.
N No permitido. La orden en curso sigue ejecutándose. Se rechaza la nueva orden.
- Sin efecto. La orden en curso sigue ejecutándose. Una nueva orden de cinemática se incorpora a la cadena de órdenes.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


326 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

⇒ Orden en curso MC_MoveLinearAbsolute MC_GroupInterrupt MC_GroupStop


⇓ Nueva orden MC_MoveLinearRelative
MC_MoveCircularAbsolute
MC_MoveCircularRelative
MC_MoveDirectAbsolute
MC_MoveDirectRelative
MC_TrackConveyorBelt
MC_DefineWorkspaceZone
MC_DefineKinematicsZone
MC_SetWorkspaceZoneActive
MC_SetWorkspaceZoneInactive
MC_SetKinematicsZoneActive
MC_SetKinematicsZoneInactive
MC_SetOcsFrame
MC_Halt A A A
MC_MoveAbsolute
MC_MoveRelative
MC_MoveVelocity
MC_MoveJog
MC_Stop
MC_GearIn
MC_GearInPos
MC_GearInVelocity
MC_CamIn
MC_MotionInVelocity
MC_MotionInPosition
MC_GroupStop A A N
MC_GroupInterrupt B A N
MC_GroupContinue
MC_MoveLinearAbsolute - - N
MC_MoveLinearRelative
MC_MoveCircularAbsolute
MC_MoveCircularRelative
MC_MoveDirectAbsolute
MC_MoveDirectRelative
MC_TrackConveyorBelt
MC_DefineWorkspaceZone
MC_DefineKinematicsZone
MC_SetWorkspaceZoneActive
MC_SetWorkspaceZoneInactive
MC_SetKinematicsZoneActive
MC_SetKinematicsZoneInactive
MC_SetOcsFrame C, - - N
A La orden en curso se cancela con "CommandAborted" = TRUE.
B La orden en curso se cancela o continúa.
C La sincronización del OCS con la cinta transportadora se cancela con "MC_SetOcsFrame" = TRUE.
N No permitido. La orden en curso sigue ejecutándose. Se rechaza la nueva orden.
- Sin efecto. La orden en curso sigue ejecutándose. Una nueva orden de cinemática se incorpora a la cadena de órdenes.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 327
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

8.2.5 Comportamiento de relevo V8: órdenes de intérprete (S7-1500T)


La tabla siguiente muestra qué efecto tiene una nueva orden de Motion Control sobre las
órdenes de intérprete en curso:
⇒ Orden en curso MC_LoadProgram MC_RunProgram MC_StopProgram
⇓ Nueva orden
MC_LoadProgram - - -
MC_RunProgram -1) - -
MC_StopProgram A A A2)
MC_Reset - - -
A La orden en curso se cancela con "CommandAborted" = TRUE.
- Sin efecto. La orden en curso sigue ejecutándose.
1) Sin efecto. La orden en curso sigue ejecutándose. La nueva orden también se ejecuta.
2) Una nueva orden "MC_StopProgram" con "Mode" = 0 cancela una orden "MC_StopProgram" en curso con "Mode" = 1 o 2.
Una nueva orden "MC_StopProgram" con "Mode" = 1 cancela una orden "MC_StopProgram" en curso con "Mode" = 2.

Comportamiento de relevo de objetos tecnológicos controlados por el intérprete


La tabla siguiente muestra qué efecto tiene una nueva orden de Motion Control sobre un
objeto tecnológico controlado por el intérprete durante la ejecución de un programa
intérprete ("<TO>.StatusInterpreterMotion.StatusWord.X0" = TRUE (ControlledByInterpreter)):
⇓ Nueva orden Se ejecuta la nueva orden. La nueva orden cancela la ejecución
del programa intérprete.
MC_Power ✓ ✓
con bloquear/habilitar objeto tecnológico
MC_Reset ✓ ✓
con "Restart" = TRUE
MC_Reset ✓ -
con "Restart" = FALSE
MC_Home ✓ ✓
MC_Halt
MC_Stop
MC_MoveAbsolute ✓ ✓
MC_MoveRelative
MC_MoveVelocity
MC_MoveJog
MC_SetAxisSTW ✓ -
MC_WriteParameter
MC_MoveSuperimposed - -
MC_MotionInSuperimposed
MC_HaltSuperimposed
MC_MotionInVelocity ✓ ✓
MC_MotionInPosition
1) Al inicio de la sincronización/desincronización, se cancela la ejecución del programa intérprete.
2) Cuando se emite una alarma tecnológica a causa de un tope fijo, se cancela la ejecución del programa intérprete.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


328 Manual de funciones, 11/2023, A5E53131983-AA
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

⇓ Nueva orden Se ejecuta la nueva orden. La nueva orden cancela la ejecución


del programa intérprete.
MC_GearIn ✓ ✓1)
MC_GearInPos
MC_GearInVelocity
MC_GearOut
MC_CamIn
MC_CamOut
MC_PhasingRelative - -
MC_PhasingAbsolute
MC_LeadingValueAdditive ✓ -
MC_OffsetRelative - -
MC_OffsetAbsolute
MC_TorqueAdditive ✓ -
MC_TorqueRange
MC_TorqueLimiting ✓ -/✓2)
MC_SynchronizedMotionSimulation ✓ -
MC_MoveLinearAbsolute - -
MC_MoveLinearRelative
MC_MoveCircularAbsolute
MC_MoveCircularRelative
MC_MoveDirectAbsolute
MC_MoveDirectRelative
MC_GroupInterrupt - -
MC_GroupContinue
MC_GroupStop ✓ ✓
MC_KinematicsMotionSimulation ✓ -
MC_TrackConveyorBelt - -
MC_DefineTool - -
MC_SetTool
MC_SetOcsFrame
MC_KinematicsTransformation ✓ -
MC_InverseKinematicsTransformation
MC_DefineWorkspaceZone - -
MC_SetWorkspaceZoneActive
MC_SetWorkspaceZoneInactive
MC_DefineKinematicsZone
MC_SetKinematicsZoneActive
MC_SetKinematicsZoneInactive
1) Al inicio de la sincronización/desincronización, se cancela la ejecución del programa intérprete.
2) Cuando se emite una alarma tecnológica a causa de un tope fijo, se cancela la ejecución del programa intérprete.

NOTA
MC_Power
Tenga en cuenta que una orden "MC_Power" con "Enable" = FALSE siempre bloquea el objeto
tecnológico especificado aunque el objeto tecnológico se haya habilitado mediante un
programa intérprete con "powerOn()".

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 329
Instrucciones (S7-1500T)
8.2 Comportamiento de relevo de órdenes de Motion Control V8 (S7-1500T)

NOTA
MC_Stop
Tenga en cuenta que al inicio de un movimiento controlado por el intérprete no debe estar
activa ninguna orden "MC_Stop" porque, de lo contrario, la orden de movimiento se
cancelará.

NOTA
MC_GroupStop
Tenga en cuenta al inicio de un movimiento de cinemática controlado por el intérprete no
debe estar activa ninguna orden "MC_GroupStop" porque, de lo contrario, la orden de
movimiento se cancelará.
Una orden "MC_GroupStop" solo tiene efecto en los movimientos de la cinemática activos o
cuando el intérprete controla el objeto tecnológico Cinemática
("<TO>.StatusInterpreterMotion.StatusWord.X0" = TRUE (ControlledByInterpreter)).

Consulte
también
Comportamiento de relevo V8: Órdenes de referenciado y de movimiento (Página 321)
Comportamiento de relevo V8: Órdenes de sincronismo (Página 323)
Comportamiento de relevo V8: Órdenes de movimiento de la cinemática (Página 326)

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


330 Manual de funciones, 11/2023, A5E53131983-AA
Variables de los bloques de datos del objeto
tecnológico (S7-1500T) 9
9.1 Variables del objeto tecnológico Intérprete (S7-1500T)

9.1.1 Leyenda (S7-1500T)

Variable Nombre de la variable


Tipo de datos Tipo de datos de la variable
Valores Rango de valores de la variable: valores mínimo a máximo
(L = indicación lineal, R = indicación rotativa)
Sin una indicación de valores específica rigen los límites del rango de valores del tipo
de datos correspondiente o la indicación bajo "Descripción".
W Efectividad de los cambios en el bloque de datos tecnológico
DIR Directo:
Los cambios de valor se realizan mediante asignación directa y se aplican al
iniciarse el siguiente MC_Servo.
CAL Con llamada de la instrucción de Motion Control:
Los cambios de valores se realizan mediante asignación directa y, después de
llamar la correspondiente instrucción de Motion Control en el programa de
usuario, se aplican al iniciarse el siguiente MC_Servo.
RES Reinicio:
El valor inicial de la memoria de carga se cambia con la instrucción avanzada
"WRIT_DBL" (escribir en la memoria de carga del DB). Los cambios no son
efectivos hasta que se reinicializa el objeto tecnológico.
RON Read only:
No se puede o no se debe modificar la variable durante el tiempo de ejecu­
ción del programa de usuario.
Descripción Descripción de la variable
El acceso a las variables se realiza por medio de "<TO>.<nombre de variable>". El comodín
<TO> representa el nombre del objeto tecnológico.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 331
Variables de los bloques de datos del objeto tecnológico (S7-1500T)
9.1 Variables del objeto tecnológico Intérprete (S7-1500T)

9.1.2 Programa intérprete y mapeo de intérprete (intérprete) (S7-1500T)


Las siguientes variables muestran información sobre el programa intérprete y el mapeo de
intérprete.

Variables
Leyenda (Página 331)
Variable Tipo de da­ Valores W Descripción
tos
ProgramName STRING - RON Nombre del objeto tecnológico Programa intérprete carga­
do actualmente
MappingName STRING - RON Nombre del objeto tecnológico Mapeo de intérprete carga­
do actualmente
ProgramSource DINT 0…2 RON Fuente del programa intérprete cargado actualmente
0 Ningún programa intérprete cargado
1 Objeto tecnológico Programa intérprete
2 Reservado
MappingSource DINT 0…3 RON Fuente del mapeo de intérprete cargado actualmente
0 Ningún mapeo de intérprete cargado
1 Objeto tecnológico Mapeo de intérprete
2 Reservado
3
ActualLineNumber UDINT 0… RON Número de la línea de programa ejecutada actualmente o
4294967295 de la última línea ejecutada del programa

9.1.3 Variable "Parameter" (intérprete) (S7-1500T)


La estructura de variables "<TO>.Parameter.<nombre de variable>" contiene parámetros para
preparar el programa intérprete.

Variables
Leyenda (Página 331)
Variable Tipo de da­ Valores W Descripción
tos
Parameter TO_Struct_Interpreter_Parameter
MaxNumberOfCom­ DINT 10 … 100 RON Número máximo de órdenes que deben prepararse en la
mands cadena de órdenes del intérprete
StartTimeout LREAL 0.0 … 2.0 DIR Tiempo de espera máximo
Intervalo de tiempo máximo entre el inicio posible y el ini­
cio real de una orden en [s]
Una vez transcurrido el tiempo de espera máximo, se inicia
una secuencia de movimiento no preparada por completo.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


332 Manual de funciones, 11/2023, A5E53131983-AA
Variables de los bloques de datos del objeto tecnológico (S7-1500T)
9.1 Variables del objeto tecnológico Intérprete (S7-1500T)

Variable Tipo de da­ Valores W Descripción


tos
StartTimeout LREAL 0.0 … 2.0 DIR 0.0 Las secuencias de movimiento solamente se ini­
cian cuando están preparadas por completo o
cuando se ha alcanzado el número máximo de
órdenes que deben prepararse en la cadena de
órdenes del intérprete.
ProgramOverride LREAL 1.0 … 100.0 CAL Valor inicial de la corrección del programa en [%]
El factor porcentual actúa como valor inicial del parámetro
modal durante la preparación de los perfiles de dinámica
de movimientos de eje y de la cinemática.

9.1.4 Variable "Clipboard" (intérprete) (S7-1500T)


La estructura de variables "<TO>.Clipboard.<nombre de variable>" contiene las variables del
portapapeles del objeto tecnológico Intérprete.

Variables
Leyenda (Página 331)
Variable Tipo de da­ Valores W Descripción
tos
Clipboard TO_Struct_Interpreter_Clipboard Variables del portapapeles
CbBool ARRAY - DIR Área para intercambiar datos con el programa intérprete
[1..300] of para variables BOOL
BOOL
CbDint ARRAY -2147483648 … DIR Área para intercambiar datos con el programa intérprete
[1..100] of 2147483647 para variables DINT
DINT
CbLreal ARRAY -1.7977e+308 .. DIR Área para intercambiar datos con el programa intérprete
[1..100] of 1.7977e+308 para variables LREAL
LREAL

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 333
Variables de los bloques de datos del objeto tecnológico (S7-1500T)
9.1 Variables del objeto tecnológico Intérprete (S7-1500T)

9.1.5 Variable "StatusInterpreter" (intérprete) (S7-1500T)


La estructura de variables "<TO>.StatusInterpreter.<nombre de variable>" contiene
información de estado del objeto tecnológico.

Variables
Leyenda (Página 331)
Variable Tipo de da­ Valores W Descripción
tos
StatusInterpreter TO_Struct_Interpreter_StatusInter­
preter
ProgramMode DINT 0…3 RON Modo de operación de la ejecución del programa intérpre­
te
0 Automático
AssignedKinematics DB_ANY 0 … 65535 RON Bloque de datos del objeto tecnológico Cinemática asigna­
do
LevelOfPreparedCom­ LREAL 0.0 … 100.0 RON Utilización de la cadena de órdenes del intérprete en [%],
mands en pasos del 5 %

9.1.6 Variable "StatusWord" (intérprete) (S7-1500T)


La variable "<TO>.StatusWord" contiene información de estado del objeto tecnológico
Intérprete.
Encontrará indicaciones para evaluar los diferentes bits (p. ej., bit 2 "RestartActive") en el
capítulo "Evaluar StatusWord, ErrorWord y WarningWord" de la documentación
"S7-1500/S7-1500T Sinopsis de Motion Control" (Página 11).

Variables
Leyenda (Página 331)
Variable Tipo de da­ Valores W Descripción
tos
StatusWord DWORD - RON
Bit 0 - - - "Control"
Hay una orden de Motion Control activa en el objeto tec­
nológico Intérprete.
Bit 1 - - - "Error"
Hay un error.
Bit 2 - - - "RestartActive"
Hay un reinicio activo. El objeto tecnológico se reinicializa.
Bit 3 - - - "OnlineStartValuesChanged"
Las variables de reinicio se han modificado. Para aplicar los
cambios es necesario reinicializar el objeto tecnológico.
Bit 4 - - - Reservado
Bit 5 - - - "InRun"
El objeto tecnológico ejecuta un programa intérprete.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


334 Manual de funciones, 11/2023, A5E53131983-AA
Variables de los bloques de datos del objeto tecnológico (S7-1500T)
9.1 Variables del objeto tecnológico Intérprete (S7-1500T)

Variable Tipo de da­ Valores W Descripción


tos
Bit 6 - - - "Done"
La ejecución del programa intérprete ha finalizado.
Bit 7 - - - "Stopping"
La ejecución del programa intérprete se está deteniendo o
se ha detenido.
Bit 8 - - - Reservado
Bit 9 - - - "Loading"
El objeto tecnológico carga el programa intérprete. La pre­
paración del programa intérprete está en curso.
Bit 10 - - - "Loaded"
El programa intérprete se ha cargado y preparado.
Bit 11 ... - - - Reservado
Bit 31

9.1.7 Variable "ErrorWord" (intérprete) (S7-1500T)


La variable "<TO>.ErrorWord" señala errores en el objeto tecnológico (alarmas tecnológicas).
Encontrará indicaciones para evaluar los diferentes bits (p. ej., bit 3 "CommandNotAccepted")
en el capítulo "Evaluar StatusWord, ErrorWord y WarningWord" de la documentación
"S7-1500/S7-1500T Sinopsis de Motion Control" (Página 11).

Variables
Leyenda (Página 331)
Variable Tipo de da­ Valores W Descripción
tos
ErrorWord DWORD - RON
Bit 0 - - - "SystemFault"
Se ha producido un error interno del sistema.
Bit 1 - - - "ConfigFault"
Error de configuración
Uno o varios parámetros de configuración son incoheren­
tes o no permitidos.
Bit 2 - - - "UserFault"
Error en una instrucción de Motion Control o en su utiliza­
ción en el programa de usuario
Bit 3 - - - "CommandNotAccepted"
Orden no ejecutable.
Una instrucción de Motion Control no se puede ejecutar
porque no se cumplen las condiciones necesarias.
Bit 4 - - - "UserProgramFault"
Error en el programa intérprete actual
Bit 5 - - - "UserMappingFault"
Error en el mapeo de intérprete actual
Bit 6 … - - - Reservado
Bit 31

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 335
Variables de los bloques de datos del objeto tecnológico (S7-1500T)
9.1 Variables del objeto tecnológico Intérprete (S7-1500T)

9.1.8 Variable "ErrorDetail" (intérprete) (S7-1500T)


La estructura de variables "<TO>.ErrorDetail.<nombre de variable>" contiene el número de
alarma y la reacción local efectiva a la alarma tecnológica actualmente presente en el objeto
tecnológico.
Encontrará una lista de las alarmas tecnológicas y las reacciones a alarmas en el capítulo
"Sinopsis de las alarmas tecnológicas" de la documentación "S7-1500/S7-1500T Alarmas e
identificadores de error de Motion Control" (Página 11).

Variables
Leyenda (Página 331)
Variable Tipo de da­ Valores W Descripción
tos
ErrorDetail TO_Struct_Interpreter_ErrorDetail
Number UDINT - RON Número de la alarma
Reaction DINT 0, 14, 15 RON Reacción efectiva a alarma
0 Sin reacción (solo advertencias)
14 Detención de la ejecución del programa intérpre­
te con opción de diagnóstico
15 Detener la ejecución del programa intérprete
LineNumber UDINT 0… RON Número de la línea errónea del programa intérprete o del
4294967295 mapeo de intérprete
ErrorInfo STRING - RON Información adicional de error

9.1.9 Variable "WarningWord" (intérprete) (S7-1500T)


La variable "<TO>.WarningWord" muestra las advertencias presentes en el objeto tecnológico.
Encontrará indicaciones para evaluar los diferentes bits (p. ej., bit 2 "UserWarning") en el
capítulo "Evaluar StatusWord, ErrorWord y WarningWord" de la documentación
"S7-1500/S7-1500T Sinopsis de Motion Control" (Página 11).

Variables
Leyenda (Página 331)
Variable Tipo de da­ Valores W Descripción
tos
WarningWord DWORD - RON
Bit 0 - - - "SystemWarning"
Se ha producido un error interno del sistema.
Bit 1 - - - "ConfigWarning"
Error de configuración
Uno o varios parámetros de configuración son incoheren­
tes o no permitidos.
Bit 2 - - - "UserWarning"
Error en una instrucción de Motion Control o en su utiliza­
ción en el programa de usuario

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


336 Manual de funciones, 11/2023, A5E53131983-AA
Variables de los bloques de datos del objeto tecnológico (S7-1500T)
9.1 Variables del objeto tecnológico Intérprete (S7-1500T)

Variable Tipo de da­ Valores W Descripción


tos
Bit 3 - - - "CommandNotAccepted"
Orden no ejecutable.
Una instrucción de Motion Control no se puede ejecutar
porque no se cumplen las condiciones necesarias.
Bit 4 - - - "UserProgramWarning"
Error en el programa intérprete actual
Bit 5 - - - "UserMappingWarning"
Error en el mapeo de intérprete actual
Bit 6 … - - - Reservado
Bit 31

9.1.10 Variable "ControlPanel" (intérprete) (S7-1500T)


La estructura de variables "<TO>.ControlPanel.<nombre de la variable>" no contiene datos
relevantes para el usuario. Esta estructura de variables se utiliza internamente.

9.1.11 Variable "InternalToTrace" (intérprete) (S7-1500T)


La estructura de variables "<TO>.InternalToTrace.<nombre de la variable>" no contiene datos
relevantes para el usuario. Esta estructura de variables se utiliza internamente.

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 337
Índice alfabético

A L
Acción síncrona, 29 Literales, 51
Llamada de la función, 135
C
Cadena de órdenes M
Intérprete, 38
MC_LoadProgram, 316
Cadena de órdenes del intérprete, 38
MC_RunProgram, 318
Comentarios, 53
MC_StopProgram, 319
Corrección del programa
Programa intérprete, 39 MCL, 48

D O
Objeto tecnológico
Definición de conceptos, 29
Eje de posicionamiento, 312
defKinZone, 259
defOcs(), 248 P
defTool(), 250
Parámetros, 134
defWsZone(), 257
Preparación del programa, 29
Cadena de órdenes del intérprete, 38
E Tiempo de espera máximo, 38
Corrección del programa, 39
Ejecución del programa, 29
Variables, 42
Iniciar, 44
Detener, 44 Programa intérprete, 39
Variables, 47 Corrección del programa, 39
Eje de posicionamiento Cargar, 43
Diagnóstico, 312 Descargar, 43
Ejecutar, 44
Estructura, 125 Detener, 44
Expresiones, 53 Programa principal, 128

I S
Identificadores, 50 Sección de declaración, 128
Secuencia de movimiento, 29
J
setCs(), 255
Juego de caracteres, 48 setKinZoneActive(), 263
setKinZoneInactive(), 264
setTool(), 266

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


338 Manual de funciones, 11/2023, A5E53131983-AA
Índice alfabético

setWsZoneActive, 260
setWsZoneInactive(), 262

T
Tiempo de espera máximo
Preparación del programa, 38
Tipo de datos, 54
trackIn(), 252

V
Valores de retorno, 137
Variables
Preparación del programa, 42
Ejecución del programa, 47

S7-1500T Funciones de intérprete V8.0 a partir de STEP 7 V19


Manual de funciones, 11/2023, A5E53131983-AA 339

También podría gustarte