Documentos de Académico
Documentos de Profesional
Documentos de Cultura
."/6"-%&'6/$*0/&4
4*."5*$
4
45'VODJPOFTEFJOU©SQSFUF7BQBSUJSEF45&17
TVQQPSUJOEVTUSZTJFNFOTDPN
Introducción (S7-1500T)
1
Información de seguridad
(S7-1500T)
2
Diagnóstico (S7-1500T)
7
Instrucciones (S7-1500T)
8
Variables de los bloques de
datos del objeto tecnológico 9
(S7-1500T)
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.
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
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
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.
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).
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.
Consulte también
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
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)
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
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
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)
$POHVSBDJ³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
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)
0CKFUPUFDOPM³HJDP
.BOFKBSQSPEVDUP *OU©SQSFUF
1SPHSBNBEFVTVBSJP
1SFQBSBDJ³OEFM $BSHBSEFTDBSHBS
*OUFSQSFUFS1SPHSBN@
%FTDBS QSPHSBNBJOU©SQSFUF QSPHSBNB.$-
# $ HBS
1SPHSBNBTFDVFODJBMQBSB $POUSPMTFDVFODJBM
% *OJDJBSEFUFOFS
" QSPEVDUP $BSHBSEFTDBSHBS
QSPHSBNB.$-
MJO"CT FTQFDJDBDJPOFTEF
QPTJDJ³O
&WBMVBDJ³OEFFTUBEPT
.BOFKBSQSPEVDUP
*OUFSQSFUFS1SPHSBN@
$BSHBS
#
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.
$POHVSBDJ³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)
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).
Sistemas de coordenadas
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
sistemas de coordenadas (Página 248).
Zonas
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
zonas (Página 257).
Herramientas
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
herramientas (Página 266).
Funciones de eje
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
funciones de eje (Página 267).
Otras instrucciones
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
otras instrucciones (Página 290).
Instrucciones de control
La siguiente tabla contiene las instrucciones MCL soportadas por el programa intérprete para
instrucciones de control (Página 96).
Funciones matemáticas
El programa intérprete soporta funciones matemáticas.
Conversiones
El programa intérprete soporta conversiones.
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
Número de variables
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.
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.
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".
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".
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.
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
Comparación
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".
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.
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.
Consulte
también
Ejemplos de preparación y ejecución de un programa intérprete (Página 40)
Preparación activa
Ejecución activa
Preparación activa
Ejecución activa
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
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".
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".
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.
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.
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.
Caracteres especiales
La tabla siguiente muestra los caracteres especiales utilizados en MCL y sus descripciones:
Clases
La tabla siguiente muestra la división en distintas clases de los identificadores según su
significado:
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
Ejemplo
En los siguientes ejemplos se muestran identificadores estándar reservados:
MCL
Timer
Left
Lower_Bound
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
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
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
Ejemplo
El siguiente ejemplo muestra comentarios en MCL:
MCL
(*
This program is written in MCL.
*)
myVar1 := 0; // this is a line comment
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
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>;
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];
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
MCL
VAR
<VAR_Name> : STRUCT
<Comp1_name> : <Type> [:= <InitValue_1>];
<Comp2_name> : <Type> [:= <InitValue_2>];
………
<CompN_name> : <Type> [:= <InitValue_N>];
END_STRUCT;
END_VAR
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
MCL
TYPE
<Type_Name> : STRUCT
<Comp1_name> : <Type> [:= <InitValue_1>];
<Comp2_name> : <Type> [:= <InitValue_2>];
………
<CompN_name> : <Type> [:= <InitValue_N>];
END_STRUCT;
END_TYPE
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>;
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
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:
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.
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 );
...
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:
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:
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:
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
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:
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:
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:
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
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:
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:
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:
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:
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
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
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:
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)".
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.
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.
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.
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.
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
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.
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)".
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)".
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.
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.
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
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:
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.
Ejemplo
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.
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:
Consulte
también
Declaración de variables y parámetros de función (Página 72)
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
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).
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
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í.
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.
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;
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>
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]
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.
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;
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
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.
Expresión Valor
i+j 8
i-j 14
i*j -33
i MOD j -2
i/j -3
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
La tabla siguiente muestra las combinaciones permitidas de tipos de datos para ambos
operandos y operadores de comparación:
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;
MCL
//technological structured type - AXIS_OBJECT
IF myAxis <> NULL THEN
...
END_IF
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:
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.
Ejemplos
Los siguientes ejemplos muestran el uso de operadores lógicos:
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
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;
...
MCL
END_PROGRAM
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
<> 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
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-
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.
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;
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
-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.
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
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".
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:
*EFOUJDBEPSEFWBSJBCMF
'03 &YQSFTJ³O
7BSJBCMFEFJUFSBDJ³O
7BSJBCMFMPDBM
UJQPEFEBUPT%*/5
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.
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.
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.
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.
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;
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.
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;
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
*)
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
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;
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;
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
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.
Sintaxis
4:/$ 4FDDJ³OEF
JOTUSVDDJPOFT
0/@45"35 4FDDJ³OEF
JOTUSVDDJPOFT
&/%@4:/$
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;
• 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.
,*/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 );
,*/"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;
,*/"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 );
,*/"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 );
,*/"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 );
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;
1PTJDJ³OJOJDJBM
5SBZFDUPSJBQSPHSBNBEB
1PTJDJ³OOBM
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.
Consulte
también
preHalt(): Detener la preparación del programa (Página 302)
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.
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;
Q Q
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 );
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 );
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
MCL
myAxPos := myFct(); // determining the position using user-function
SYNC
linAbs( myPos );
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;
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
MCL
EXIT_SYNC;
END_IF;
END_FOR;
END_SYNC;
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
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)
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.
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/
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 (✓).
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)
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"
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.
VAR
……
END_VAR
VAR_IPR
……
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
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.
'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.
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
VAR_OUTPUT
out : LREAL;
END_VAR
// statement part
...
END_FUNCTION
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
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).
① Lista de parámetros
② Nombre de la función
③ Parámetro de entrada 1
④ Parámetro de entrada 2
⑤ Parámetro de salida
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 );
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*)
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();
MCL
END_PROGRAM
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
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
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)
① 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
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
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
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
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).
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:
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.
Combinaciones de teclas
En la ventana de programación están disponibles las siguientes combinaciones de teclas:
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.
Sintaxis
MCL
instrName( <nVal1>,…, <nValN> [,omPara1 := <val1>] [,…,omParaN := <valN>] );
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.
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 );
…
MCL
…
home( $A1 ); // direct absolute homing to 0.0
// use default values for non
// specified optional parameters
MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
accelKin : LREAL := 5000.0;
END_VAR
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;
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.
MCL
PROGRAM main
VAR
Pos1 : TO_Struct_Ipr_Position;
myVar : LREAL;
END_VAR
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] );
MCL
// using alias-names from mapping table
posAbs( myAchse, myPos );
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 ) );
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
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
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
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)
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
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
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
END_PROGRAM
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)
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.
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
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
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()").
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
1PT 1PT
[ "
Z Y
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)
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
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
1PT 1PT
[ "
Z Y
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 );
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
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
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.
1PT
1PT
DJSD3BEJVT
1PT
EJVT
DJSD3B
$FOUSPEFMDSDVMP
"
Z Y
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 );
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
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
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.
"
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
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()").
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
"
&#
" 4 #
1PT 1PT
E
MCL
VAR
Pos2, Pos3 : TO_Struct_Ipr_Position;
d : LREAL;
END_VAR
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()").
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
&#
" 4 #
1PT 1PT
E
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 );
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
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
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 );
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()").
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
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 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 );
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
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
1PT
E 1PT
"
"
1PT
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 );
…
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
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
1PT
E 1PT
"
"
1PT
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 );
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
Sintaxis
MCL
setDyn( [v := <value>] [,a := <value>] [,d := <value>] [,j := <value>] [,rel := <value>] );
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 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).
≤ 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
≤ 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).
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 );
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
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.
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 );
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
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).
≤ 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
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 )
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
Sintaxis
MCL
setDynMax( [v := <value>] [,a := <value>] [,d := <value>] [,j := <value>] );
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
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 );
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)".
Se aplica a
• Cinemática con orientación
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 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.
≤ 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 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
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 );
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
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
"
'
"
# # (
" "
1PT 1PT " 1PT
[
Z Y
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 );
// 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 );
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
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
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 );
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
"
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 );
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
Sintaxis
MCL
setBlendDist( < blendDist> );
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)
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()".
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"
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)
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
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
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()".
# $
%
"
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
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).
# $
"
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
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
Sintaxis
MCL
setPlane( <plane> );
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
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 );
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
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
Se aplica a
• Cinemática 2D/3D con orientación A cartesiana y funcionalidad de módulo
Sintaxis
MCL
setOriDirA( <oDirA> );
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
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 );
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
Sintaxis
MCL
setTurnJoint( [,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 "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 );
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
Se aplica a
• Cinemática
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
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 );
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
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
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
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
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
MCL
ptpAbs( myPos4, posMode := 1, lc := 16#34, cs := 0 );
END_PROGRAM
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
Sintaxis
MCL
setDynAdapt( <da> );
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
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 );
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).
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
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.
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.
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
)&6
[
] 7&6
%
① Frame de la herramienta
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
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()").
Sintaxis
MCL
trackIn( <axis>, <origin> [,initPos := <val>] [,ocs := <val>] );
Parámetros
La tabla siguiente muestra los parámetros de la instrucción MCL "trackIn()":
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
);
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
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
"
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);
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>] );
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.
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>] );
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.
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.
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.
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.
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.
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.
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
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.
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
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
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
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
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
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
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
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 );
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
Sintaxis
MCL
setAxisDyn( <axis> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>]
[,rel := <val>] );
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
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 );
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
Sintaxis
MCL
setAxisDynMax( <axis> [,v := <val>] [,a := <val>] [,d := <val>] [,j := <val>] );
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
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 );
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
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
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();
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).
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
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();
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)".
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".
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)".
Sintaxis
MCL
torqueLimitOn( <axis>, [,limit := <val>] [,mode := <val>] );
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
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
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> );
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)").
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 );
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
...
writeVar( plcVar, 2 ); // 3
...
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;
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> );
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 );
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
Sintaxis
MCL
waitEvent( <event> [,mode := <val>] [,timeout := <val>] [,timeoutState => <val>] );
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 );
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
MCL
VAR
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
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
MCL
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
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".
Se aplica a
• Cinemática conectada
• Eje individual
Sintaxis
MCL
setControlledByInterpreter( [ obj := <val> ] [ ,ctrl := <val> ] );
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 );
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.
Se aplica a
• Cinemática
• Eje individual
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
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 ) );
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
Sintaxis
MCL
preHalt();
Parámetro
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
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
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
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
Ejemplo
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
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
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
Ejemplo
Consulte
también
Conversiones de tipos de datos (Página 68)
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))
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))
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.
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
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
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)".
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".
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)".
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).
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()".
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.
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.
⇒ 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.
⇒ 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.
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()".
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)
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
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.
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
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 %
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.
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
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
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
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
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