You are on page 1of 180

www.infoPLC.

net

Doc. Nb:

LMC001

Knowledge Base
Motion Pro: Conceptos Bsicos

VERSION

Autores :

V6.3

Departamento:

Nombre:

Fecha:

D.C.I.

Santiago Pava Amposta

28-02-2008

Advertencia de la propiedad: Este documento contiene informacin propiedad de Schneider Electric S.A., y ni el documento ni la
informacin que contiene pueden ser publicadas, reproducidas, copiadas o usadas bajo ningn concepto salvo permiso escrito por un
representante vlido de la compaa.
Motion Pro: Conceptos Bsicos

pgina 1/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Documentacin asociada
Control de versiones
Mes-Ao
Rev
Autor
1
03-09-2007 Santi Pava
2
12-09-2007 Santi Pava
3
13-09-2007 Santi Pava
4
25-09-2007 Santi Pava
5

03-10-2007 Santi Pava

30-11-2007 Santi Pava

6.1
6.2

04-11-2007 Santi Pava


01-02-2008 Santi Pava

6.3

28-02-2008 Santi Pava

Lista de cambios
Modificaciones
Primera revisin con formato estndar
Aadido Captulo relativo al CNC
Correccin y ampliacin del captulo CNC
Aadido captulo relativo a las tareas (se renumeran captulos)
Correccin apartado Marcas del captulo CNC
Aadido mtodo adicional para crear eje virtual
Se crea un captulo especfico para hablar del CNC
Aadido apartado dedicado a la inicializacin de parmetros
Aadido apartado dedicado a las macros
Aadido apartado uso de $valor$ en pantallas visualizacin.
Se reestructura captulo CNC
Aadida explicacin detallada bloques CNC
Aadido apartado relativo al SMC_NCDecoder
Aadido captulo referente a tablas CAM
Renumeracin captulos
Se traspasa lo referente a CAM y CNC de otros captulos a los nuevos.
Aadido captulo dedicado a las comunicaciones.
Aadido en el captulo Problemas y Errores el captulo 13.4
Adaptacin libreras a la versin V1940
Aadida indicacin librera necesaria en captulo 6.3.2
Revisin Captulo tablas CAM / Tappets
Aadido Captulo dedicado a la conexin de mltiples encoders
master.
Aadido en captulo El lenguaje SFC o Graphet explicacin relativa a
las acciones de entrada y salida de tareas.
Aadido en el captulo Problemas y Errores el subcaptulo La tabla
CAM hace que el eje Vibre
Modificados captulos tablas CAM sustituyendo referencias a
estructuras con tipos de variables UINT por LREAL ya que son ms
precisas.
Aadida explicacin de entrada dOverride para variar velocidad
trayectoria ONLINE en captulo El SMC_Interpolator.
Intercalado subcaptulo Creando estructuras propias en el captulo
Las Levas y las Tablas CAM
Dividido captulo Las variables de usuario en dos para explicar tanto
los tipos como la volatilidad de las variables.

Motion Pro: Conceptos Bsicos

pgina 2/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

INDICE DE CONTENIDOS
1.- CONFIGURACION BASICA MOTION PRO............................................. 6
1.1.- Cambiar idioma entorno de trabajo .........................................................................6
1.2.- Crear un nuevo proyecto con Lexium 05 ................................................................8
1.3.- Entorno de trabajo.....................................................................................................9
1.4.- Gestin de libreras imprescindibles.....................................................................11
1.5.- Otros ajustes (LREAL >> REAL).............................................................................11

2.- CONFIGURACION BASICA DRIVES .................................................... 12


2.1.- Lexium 05 .................................................................................................................12
2.2.- Lexium 15 MP...........................................................................................................13

3.- CONEXIN CON LEXIUM CONTROLLER ........................................... 16


3.1.- Conexin a travs de RS485...................................................................................16
3.2.- Conexin a travs de Ethernet ...............................................................................19

4.- TAREAS Y PRIORIDADES.................................................................... 26


4.1.- Tiempo de ejecucin vs Tiempo de disparo .........................................................26
4.2.- Prioridades de ejecucin ........................................................................................27
4.3.- Creacin de tareas y su configuracin..................................................................28
4.4.- Estados y Tiempos ejecucin de Tareas y Grupos de ejes .................................32

5.- PARAMETRIZACIN INICIAL DRIVE. .................................................. 33


5.1.- Creacin de listas de parmetros ..........................................................................33
5.2.- Edicin archivo externo XML .................................................................................36

6.- PROGRAMACION ................................................................................. 37


6.1.- Los diferentes lenguajes de programacin ..........................................................37
6.1.1.- El lenguaje SFC o Graphet................................................................................37
6.1.2.- El lenguaje CFC o Complex Flow Chart ..........................................................42
6.1.3.- El lenguaje ST o Structured Text .....................................................................44
6.2.- Las variables de usuario.........................................................................................45
6.2.1.- Los diferentes Tipos .........................................................................................45
6.2.2.- Volatilidad de las variables...............................................................................49
6.3.- Uso de un eje virtual................................................................................................50
6.3.1.- Va bloque SMC_TimeAxisFB...........................................................................50
6.3.2.- Va Dummy Axis.................................................................................................51
6.4.- Uso de un encoder externo ....................................................................................54
6.5.- Uso de varios encoders externos ..........................................................................57
6.6.- Las macros...............................................................................................................58
6.6.1.- Creacin de un bloque de funciones...............................................................58
6.6.2.- Creacin de una macro .....................................................................................60

Motion Pro: Conceptos Bsicos

pgina 3/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7.- PRIMER PROGRAMA SIMPLE ............................................................. 64


7.1.- Creacin Programa Principal .................................................................................64
7.2.- Declaracin del eje a controlar ..............................................................................66
7.3.- Programa habilitacin y movimiento absoluto .....................................................70
7.4.- Compilacin y Transmisin programa. .................................................................75
7.5.- Resumen de conceptos y consejos .......................................................................77

8.- EL CNC Y LA INTERPOLACIN........................................................... 78


8.1.- Estructura de un programa CNC.........................................................................78
8.2.- Identificadores ......................................................................................................79
8.3.- Instrucciones preparatorias G.............................................................................80
8.4.- Funciones M..........................................................................................................86
8.5.- Puntos H o Switch Points ....................................................................................88
8.6.- Elementos de Programacin ...............................................................................89
8.6.1.- Libreras Necesarias ....................................................................................................................89
8.6.2.- El SMC_Interpolator .....................................................................................................................89
8.6.3.- El SMC_Trafo_Gantry2 ................................................................................................................92
8.6.4.- El SMC_ControlAxisByPos .........................................................................................................93

8.7.- Creacin de Trayectorias.....................................................................................95


8.7.1.- Herramientas de Diseo ..............................................................................................................95
8.7.2.- Herramientas informativas ........................................................................................................100
8.7.3.- Herramientas edicin.................................................................................................................101
8.7.4.- Herramientas importacin/exportacin ...................................................................................105

8.8.- Ejemplos de Programacin ...............................................................................107


8.8.1.- Trayectoria Fija...........................................................................................................................107
8.8.2.- Trayectoria Variable ...................................................................................................................112
8.8.3.- Modificar un programa en ejecucin .......................................................................................118

8.9.- La estructura SMC_GEOINFO ...........................................................................121

9.- LAS LEVAS Y LAS TABLAS CAM .......................................................124


9.1.- Introduccin...........................................................................................................124
9.2.- Las estructuras necesarias ..................................................................................125
9.3.- Creando estructuras propias................................................................................127
9.4.- Levas desde entorno grfico................................................................................128
9.5.- Levas mediante tablas ..........................................................................................132
9.6.- Ejecucin de una leva ...........................................................................................135
9.7.- Gestin de mltiples levas ...................................................................................137
9.8.- Desfasado de eje esclavo .....................................................................................139
9.9.- Los Tappets ...........................................................................................................140

10.- PANTALLAS VISUALIZACION...........................................................142


10.1.- Introduccin.........................................................................................................142
10.2.- Creacin de una pgina ......................................................................................142
10.3.- Formato y uso de variables ................................................................................146
10.4.- Los Placeholders.................................................................................................149
10.4.1.- Creacin de una pantalla secundaria ..........................................................149
10.4.2.- Uso de los placeholders ...............................................................................151
10.5.- Mostrar y ocultar objetos....................................................................................156
Motion Pro: Conceptos Bsicos

pgina 4/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.6.- Modificar color de fondo.....................................................................................156


10.7.- Modificar color de texto ......................................................................................156
10.8.- Comportamiento ante un evento........................................................................156
10.9.- Uso de Bitmaps ...................................................................................................156
10.10.- Reutilizacin pantallas......................................................................................156

11.- EXPORTACION / IMPORTACION PROYECTOS FORMATO ASCII..156


11.1.- Exportacin..........................................................................................................156
11.2.- Importacin ..........................................................................................................156

12.- COMUNICACIONES ...........................................................................156


12.1.- Modbus RS485.....................................................................................................156
12.2.- Conexin HMI por RS485 ....................................................................................156
12.3.- I/O Scanning.........................................................................................................156

13.- PROBLEMAS Y ERRORES................................................................156


13.1.- Errores de representacin en pantallas Visualizacin ....................................156
13.2.- Prdida inexplicable de las comunicaciones....................................................156
13.3.- Error inexplicable tipo b404 en los Lexium05...................................................156
13.4.- Se corta la comunicacin al transmitir un proyecto ........................................156
13.5.- La tabla CAM hace que el eje Vibre ................................................................156

Motion Pro: Conceptos Bsicos

pgina 5/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

1.- CONFIGURACION BASICA MOTION PRO


1.1.- Cambiar idioma entorno de trabajo
Mediante un doble clic sobre el icono Motion Pro y tras el proceso de inicializacin, aparecer el entorno de
trabajo el cual tendr un aspecto similar al mostrado por la siguiente imagen:

Motion Pro: Conceptos Bsicos

pgina 6/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Como se puede observar el entorno de trabajo se encuentra en ingls. Es posible cambiarla a castellano con
tan slo seguir los siguientes pasos:
1.- En men superior Project seleccionar opcin Options

2.- En el cuadro que aparecer ir directamente a la opcin Desktop


3.- Y donde pone Language cambiarlo de English a espaol
4.- Pulsar sobre botn OK.

NOTA: A partir de este punto se utilizar el entorno traducido al castellano en el resto del manual.

Motion Pro: Conceptos Bsicos

pgina 7/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

1.2.- Crear un nuevo proyecto con Lexium 05


En el men superior se pulsa sobre Fichero y se escoge la opcin Nuevo. Aparecer un nuevo cuadro de
seleccin:

Se abren las opciones de configuracin existentes (slo hay una) y se escoge Lexium Controller V01.
Acto seguido aparecer una serie de subopciones. Se aceptan los valores por defecto pulsando sobre el
botn Aceptar.

Mediante la ejecucin de estos pasos se autoconfigurar el entorno de trabajo para poder trabajar con un
Lexium Controller apareciendo una ltima pantalla en la cual podr escogerse el lenguaje de programacin
con el cual se podr desarrollar la aplicacin.

Aunque es posible escoger entre seis tipos distintos de lenguajes de programacin se recomienda, para
empezar, escoger CFC pues est basado en bloques de funcin y resulta ms sencillo.

Motion Pro: Conceptos Bsicos

pgina 8/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

1.3.- Entorno de trabajo


El entorno, despus de todos estos pasos, pasar a adoptar el siguiente aspecto:

rea
Declaracin
Variables

rea
Navegador
Programa

rea Programacin

rea
Mensajes y
Avisos

Pestaas
Seleccin
Navegador

El entorno siempre es el mismo independientemente del tipo de lenguaje utilizado. A este entorno se le llama
CODESYS. Dicho entorno de desarrollo est dividido en varias zonas y quizs las ms importantes sean las
correspondientes al rea de Programacin, que es donde se desarrollar el programa, y al rea de
Navegacin del Programa, que es el que permitir ir accediendo a todas las funcionalidades del entorno
CODESYS.

Motion Pro: Conceptos Bsicos

pgina 9/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Existen hasta cuatro tipos de navegadores segn se selecciones por las pestaas de seleccin:

De izquierda a derecha puede observarse el navegador en modo


Programa:
Variables:
Visualizacin:
Recursos:

Donde aparecen todos los programas, rutinas y subrutinas utilizadas


Donde aparece un listado de las variables utilizadas por el programa
Donde pueden crearse pantallas para monitorizar y controlar el valor de variables
Donde se tiene acceso a diferentes funcionalidades del entorno Codesys como gestin de
libreras, configuracin de tareas de programa, acceso a diseador de tablas CAM o CNC,
etc.

Motion Pro: Conceptos Bsicos

pgina 10/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

1.4.- Gestin de libreras imprescindibles


Es especialmente importante el navegador de Recursos y la subopcin Library Manager pues segn el tipo
de programa a realizar debern aadirse unas u otras libreras. Por defecto son necesarias una serie de
libreras para la gestin de variables, puerto CAM, lenguaje PLCOpen, etc. Las mnimas libreras
imprescindibles con el fin de controlar un eje en posicin de forma bsica son las siguientes:














SM_PLCOpen_V1940.lib
SM_Can_V1940.lib
LexiumCanDrive_V1940.lib
SM_Error_V1940.lib
SM_DriveBasic_V1940.lib
SysLibCallBack.lib
SysLibFileSubst.lib
SysLibTime.lib
LMC_Encoder_V1002.lib
3S_CanDrv.lib
LexiumControllerBusInterface_V1008.lib
LMC_SysBasic_V2001.lib
Standard.lib

(1)
(1)
(1)
(1)
(1)
(2)
(2)
(2)
(2)
(2)
(2)
(2)
(3)

Las libreras pueden encontrarse hasta en 3 carpetas distintas. Utilizar el siguiente cdigo identificativo:
1.- C:\Schneider Electric\Motion Control\CoDeSys V2.3\Targets\Schneider Electric\Shared Files\Library\Motion
2.- C:\Schneider Electric\Motion Control\CoDeSys V2.3\Targets\Schneider Electric\Lexium Controller V0103\Library
3.- C:\Schneider Electric\Motion Control\CoDeSys V2.3\Library

Segn si se desea realizar operaciones ms complejas como tablas CAM, utilidades CNC u otras debern
aadirse las libreras correspondientes. Estas son las mnimas.

1.5.- Otros ajustes (LREAL >> REAL)


Se ha presentado un problema a la hora de realizar el proceso de compilado de bloques que incluyen en sus
definiciones internas variables del tipo LREAL y es que el entorno Codesys no es capaz de reconocerlas. La
nica forma conocida es que a la hora de compilar lo haga tomando como REAL todas aquellas variables
que son LREAL. La forma de hacerlo es tal como muestra la siguiente imagen:

Motion Pro: Conceptos Bsicos

pgina 11/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

2.- CONFIGURACION BASICA DRIVES


2.1.- Lexium 05
Se trata de configurar un Lexium 05 para poder ser controlado desde el puerto CANSync de la Lexium
Controller. Para este cometido se recomienda seguir los siguientes pasos:
1.- Pasar a parmetros por defecto. Este paso es importante pues lo primero que tendremos que decirle al
equipo es la forma en la que ser controlado:
drC- -> FCS -> yES
2.- Tras pulsar la tecla ENT el equipo mostrar la palabra FSu- para indicarnos que es necesario una
configuracin inicial. Pulsamos de nuevo la tecla ENT y cambiamos los siguientes parmetros:
dEVC
ioPi
CoAd
Cobd
ioLt
SAVE

=
=
=
=
=

Cano
Ab
3
500
SOU

(Control por CanOpen)


(No afecta a comunicaciones, configurar segn aplicacin)
(Nodo CanOpen, en este ejemplo es el 3 pero depende de la aplicacin)
(Velocidad comunicaciones CanOpen, en este ejemplo es 500 Kbauds)
(No afecta a comunicaciones, configurar segn aplicacin)
(Grabar parmetros en memoria).

3.- Apagamos y reencendemos el equipo para que los cambios tengan validez
4.- Dado que se han pasado a parmetros de fbrica previamente no olvidar de repetir el autotune tras
volver e encender el equipo siguiendo el siguiente proceso:
tun- -> Strt
5.- Tras pulsar la tecla INT el equipo empezar a realizar el proceso de autoajuste mostrando la palabra
donE tras finalizarlo correctamente.. El equipo ya quedar preparado para ser controlado va CANSync
desde el Motion Controller.

Motion Pro: Conceptos Bsicos

pgina 12/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

2.2.- Lexium 15 MP
Se trata de configurar un Lexium 15MP para poder ser controlado desde el puerto CANSync de la Lexium
Controller. Para este cometido se recomienda seguir los siguientes pasos:
1.- Asegurarse de pasar a parmetros por defecto mediante el uso del software Unilink MH. Tan slo se ha
de establecer comunicacin con el Lexium 15MP y pulsar sobre el botn Cargar Parmetros Default en la
RAM/EEPROM. Tras unos instantes el equipo quedar a sus valores de fbrica.

2.- Pulsamos el botn Configuracin bsica y nos aseguramos de que los parmetros de Drive y
Comunicacin son los adecuados. En este caso se ha cambiado Voltaje mx. de la red a 230V,
Alimentacin de potencia a Ningn Mensaje, Direccin a 5, Baudrate del bus CAN a 500kBaud y
Auto Enable a On .

Motion Pro: Conceptos Bsicos

pgina 13/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3.- Nos aseguramos de escoger el tipo de motor adecuado prestando atencin a la posibilidad de si tiene o
no freno. El tipo de motor debe encontrase en la lista de motores disponibles:

4.- Nos aseguramos de escoger el tipo de realimentacin de velocidad adecuado segn el tipo de motor
utilizado:

Motion Pro: Conceptos Bsicos

pgina 14/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

5.- Es necesario que la palabra de control se encuentre a su valor por defecto. Si no lo estuviera deberemos
cambiarla a mano programando el valor 1575210 mediante el modo terminal (slo es posible cambiar la
configuracin con el equipo no habilitado):

6.- Para acabar, y aunque este proceso parece que tiene lugar automticamente tan pronto el drive detecta
trama CANSync tras ser encendido, cambiamos el OPMODE a modo 5: Tarea movim. Ext. Y finalmente
grabamos los cambios en la EEPROM:

Motion Pro: Conceptos Bsicos

pgina 15/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3.- CONEXIN CON LEXIUM CONTROLLER


3.1.- Conexin a travs de RS485
El primer paso para poder conectar con la Lexium Controller es a travs del puerto Modbus mediante el
mismo cable que se utiliza con el Power Suite para la configuracin del Lexium 05. Este paso es
imprescindible aunque el objetivo final sea conectarse a travs del puerto Ethernet puesto que inicialmente la
Lexium Controller no tiene, y de hecho no est, porque encontrarse con el puerto Ethernet configurado para
conectar a travs de l.

Puerto RS485
(Necesario Cable PowerSuite Ref. VW3A8106)

Una vez establecida la conexin fsica entre el puerto serie del PC y el Lexium Controller es necesario
realizar una pequea configuracin en el entorno Motion Pro.

Motion Pro: Conceptos Bsicos

pgina 16/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

1.- Dirigirse al men superior y escoger la opcin En Lnea

2.- Dentro de la opcin En Lnea escoger Parmetros de comunicacin y aparecer un cuadro de


configuracin parecido al siguiente:

Este cuadro muestra todos los medios de comunicacin disponibles para acceder desde el PC hacia la
Lexium Controller. De momento, como se puede apreciar, no existe declarado ningn medio de
comunicacin. Para crear uno se ha de pulsar sobre el botn New

Motion Pro: Conceptos Bsicos

pgina 17/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3.- Tras pulsar sobre el botn New aparece una nueva ventana donde podremos escoger el protocolo de
comunicaciones. En este caso el que emplearemos ser el RS232 tal cual por lo que seleccionaremos
Serial(RS232), modificaremos el nombre del protocolo a RS232 y pulsaremos sobre el botn OK.
NOTA : Escogemos un puerto RS232 aunque la LMC dispone de un puerto RS485 ya que el cable de
conexin a utilizar es en realidad un conversor RS232-RS485
Nombre de la conexin.
Cambiar el nombre
sugerido por RS232

Protocolo a seleccionar.

4.- Tras pulsar sobre el botn OK nos aparecer el nuevo protocolo dentro de la ventana de conexiones
disponibles:

Mediante este procedimiento ya es posible intentar la conexin desde el PC hacia la Lexium Controller. La
comunicacin RS485 mediante el puerto Modbus se encuentra disponible en toda la gama de Lexium
Controller.

Motion Pro: Conceptos Bsicos

pgina 18/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3.2.- Conexin a travs de Ethernet


Si se desea un medio de comunicacin ms rpido que mediante el puerto RS232 o bien simplemente
queremos dejar disponible el puerto RS232 para conectar una Terminal de operador u otro elemento externo
podemos emplear el puerto de comunicaciones Ethernet.
El puerto de comunicaciones Ethernet se encuentra disponible en toda la gama de Lexium Controller a
excepcin del modelo LC10:

Puerto Ethernet
DISPONIBLE

Puerto Ethernet
NO DISPONIBLE

Para la conexin va Ethernet se ha de preparar tanto la Lexium Controller como el propio PC pero vayamos
por partes, primero se ha de aadir el protocolo de conexin por Ethernet del mismo modo que se hizo para
el protocolo RS232 en el captulo anterior.

Motion Pro: Conceptos Bsicos

pgina 19/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

1.- Dirigirse al men superior y escoger la opcin En Lnea

2.- Dentro de la opcin En Lnea escoger Parmetros de comunicacin y aparecer un cuadro de


configuracin parecido al siguiente:

Esto es as porque previamente hemos tenido que configurar la conexin RS232 para poder, ahora,
despus de configurar la conexin Ethernet variar el nmero de IP de la Lexium Controller.
Evidentemente no podemos variar va Ethernet la IP para de ese modo conectar por puerto Ethernet
porque no podemos conectar por el puerto Ethernet hasta que cambiemos el valor de dicha IP por lo
que tendremos que hacerlo va RS232).

Motion Pro: Conceptos Bsicos

pgina 20/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3.- Pulsaremos sobre el botn New y aparecer la ventana de seleccin de protocolos de comunicacin
donde escogeremos el Tcp/Ip (Level 2), modificaremos el nombre del protocolo a Ethernet y
pulsaremos sobre el botn OK.
Nombre de la conexin.
Cambiar el nombre
sugerido por Ethernet

Protocolo a seleccionar.

4.- Tras pulsar sobre el botn OK volveremos a la pantalla anterior donde deberemos especificar el
nmero de IP hacia la cual, cuando utilicemos el protocolo de comunicaciones Ethernet intentar
conectarse:

Asegurarse, por tanto, que la direccin IP sea 192.160.68.202 y que el tamao de los paquetes sea de
1400 (para mejorar la velocidad de comunicaciones).

NOTA: Esto no configura la Lexium Controller lo nico que hace es que el software Motion Pro
buscar va Ethernet una Lexium Controller cuyo IP sea 192.160.68.202. An falta programar la IP
dentro de la Lexium Controller para que coincida con la que se ha programado en la
configuracin del puerto Ethernet del software Motion Pro.

Motion Pro: Conceptos Bsicos

pgina 21/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

5.- Ahora disponemos de dos mtodos de conectar con la Lexium Controller: RS232 y Ethernet. Para
escoger uno u otro tan slo se ha de seleccionar en la ventana de protocolos de conexin y pulsar
sobre el botn OK. Seleccionamos el protocolo RS232.

6.- Utilizando el protocolo de comunicaciones RS232 deberemos ponernos ONLINE con el Lexium
Controller y una vez conectados nos dirigimos hacia la ventana Explorador PLC la cual tiene un
aspecto similar al mostrado por la siguiente figura:

Zona respuestas de
rdenes ejecutadas

Zona introduccin
rdenes.

Motion Pro: Conceptos Bsicos

pgina 22/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Esta pantalla hace las veces de modo Terminal y nos permite introducir y ejecutar toda una serie de
instrucciones directas de entre las cuales se destacan las tres que utilizaremos para configurar el puerto
Ethernet:
ETHINF: Nos muestra la configuracin actual de Ethernet de la Lexium Controller. En la imagen anterior
vemos como se nos indica que la IP no se encuentra configurada (0.0.0.0).
IP: Nos permite introducir una nueva IP para la Lexium Controller:

MASK: Nos permite introducir una mscara para la Lexium Controller

Una vez introducida la IP y la Mscara podemos ejecutar de nuevo la instruccin ETHINF para
comprobar que dichos parmetros han sido aceptados:

NOTA: Llegados a este punto ya tenemos el Motion Pro configurado para buscar una Lexium
Controller cuya IP sea la 192.160.68.202 y la Lexium Controller configurada con una IP idntica
por lo que ya sera posible acceder a la Lexium Controller a travs de un cable Ethernet cruzado
estndar.

Motion Pro: Conceptos Bsicos

pgina 23/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7.- Pero an falta configurar el PC de modo que el puerto Ethernet quede reservado para conectar con la
Lexium Controller, esto se hace del siguiente modo:

En el escritorio de Windows abrir Inicio > Configuracin > Conexiones de Red

Clic con el botn derecho sobre el icono Conexin de rea local y seleccionar Propiedades

Motion Pro: Conceptos Bsicos

pgina 24/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Seleccionar Protocolo Internet (TCP/IP) y pulsar sobre botn Propiedades

Seleccionar Usar la siguiente direccin IP e introducir como direccin IP el valor 192.160.68.200 y


como mscara 255.255.255.0 para finalizar aceptando estos valores pulsando sobre el botn Aceptar.
NOTA: Observar como la IP del PC es 192.160.68.200 y no 192.160.68.202. La IP del PC debe ser
diferente de la de la Lexium Controller. Todos los nodos de la red deben tener el mismo
direccionamiento salvo el cuarto valor que debe cambiar nico para cada nodo.
8.- Ahora ya podemos conectar va Ethernet con el Lexium Controller para ello seleccionamos como
protocolo de comunicaciones el Ethernet y pulsamos sobre el botn OK.

9.- Al entrar ONLINE el Motion Pro intentar conectar va Ethernet con la Lexium Controller.

Motion Pro: Conceptos Bsicos

pgina 25/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

4.- TAREAS Y PRIORIDADES


4.1.- Tiempo de ejecucin vs Tiempo de disparo

Como se ha visto hasta el momento a la hora de estructurar una aplicacin se suele crear un programa que
contiene los diversos bloques de funciones dedicados a mover cada uno de los posibles ejes contenidos en
la aplicacin. Este programa debe encontrarse sincronizado con el bus sncrono o Motion Bus de modo que
cada cierto tiempo fijo vaya enviando a los diversos ejes la consigna de posicin que les correspondera
segn su marca de tiempo.
En este caso el programa, por contener todas las instrucciones de movimiento, debera dispararse cada
cierto tiempo de modo que se enven de forma simultnea a todos los ejes de la red las diversas consignas
de posicin.
As aparecen dos conceptos muy importantes:
Tiempo de ejecucin:

Es el tiempo que necesita un programa para ejecutarse completamente y


depende de la cantidad y complejidad del cdigo contenido en l.

Tiempo de disparo:

Indica cada cuanto tiempo se va a iniciar la ejecucin de un programa


dado.

En el siguiente diagrama podemos observar la diferencia entre un concepto y otro:

Tiempo Ejecucin

Tiempo Disparo

Como se puede observar el ciclo de scan de un programa (tiempo disparo) es nico y fijo y debe ser siempre
mayor que el tiempo de ejecucin del cdigo contenido en l el cual depende a su vez de su nivel de
complejidad (el cual puede variar entre disparo y disparo).
NOTA : El tiempo de disparo debe ser obligatoriamente mayor que el tiempo de ejecucin o de lo contrario
se generar un error por intentar ejecutar un programa cuya ejecucin an no finaliz.

Motion Pro: Conceptos Bsicos

pgina 26/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

4.2.- Prioridades de ejecucin

En la Lexium Controller es posible programar la ejecucin de programas con hasta 4 niveles distintos de
prioridad.
Un programa, por si mismo, salvo el programa de nombre especial PLC_PRG, no se ejecutan por si mismos
sino que deben vincularse previamente a una tarea. Es mediante la configuracin del nivel de prioridad de
dicha tarea como es posible modificar la prioridad del programa. Los diferentes niveles de prioridad de una
tarea, ordenados de mayor a menor son:

EVENT TASK 1
EVENT TASK 2
MOTION BUS
AUXILIARY (Tareas Cclicas)

En caso de que encontrndose ejecutando una tarea determinada se activara una tarea de mayor prioridad
la ejecucin de la primera quedara congelada en tanto se ejecute la de mayor prioridad. Ver el siguiente
diagrama para entenderlo mejor (no aparece la tarea Auxiliary pero sera la de menor prioridad).

Interuption EVT 2

Periodic Motion Application cycle

Motion application cycle


+
Event task execution time

Interruption EVT2 + EVT 1


EVT 1 higher priority
Motion application cycle time
+
both Event taskS execution time

Event TASK 1

Event TASK 2

Motion application task

Event input 2

Event input 1

Como se observa en el diagrama de tiempos existe una tarea denominada Motion Task que se va
ejecutando cclicamente cada cierto tiempo. Si en un momento determinado se dispara una tarea de
prioridad superior, por ejemplo la Event Task 2, la tarea Motion Task queda momentneamente congelada
y se pasa a atender la tarea Event Task2, al acabar de ejecutarse la tarea Event Task 2 se continua
ejecutando la tarea Motion Task desde el punto en que qued congelada. Si mientras nos encontramos
ejecutando la tarea Event Task 2 aparece la orden de ejecucin de una tarea de prioridad superior, la Event
Task 1, se repite el proceso: La tarea Event Task 2 queda congelada mientras se ejecuta la Event Task 1,
al acabar esta se prosigue la ejecucin de la Event Task 2 y slo al finalizar dicha tarea se finaliza la
ejecucin de la Motion Task.

Motion Pro: Conceptos Bsicos

pgina 27/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

4.3.- Creacin de tareas y su configuracin


Siempre debera existir un programa vinculado a una tarea sincronizada con el Motion Bus. Este programa
deber contener todas las instrucciones relacionadas con control de los diversos ejes de la aplicacin. La
creacin de esta tarea es bastante sencilla:

Pasos para la creacin de una tarea:


1.
2.
3.
4.

Ir a pestaa Recursos
Doble clic sobre Configuracin de Tareas
Clic con botn derecho sobre icono Configuracin de tareas
Clic sobre opcin Anexar Tarea

Motion Pro: Conceptos Bsicos

pgina 28/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Tras ello aparecer una nueva tarea a la cual le podemos dar un nombre cualquiera.

Observar que aunque existe una casilla para establecer el nivel de prioridad este slo puede ser 1 esto es
porque el nivel de prioridad no se establece de forma numrica sino especificando el tipo de prioridad:
Podemos decidir crear una tarea del tipo Cclico de modo que sea ejecutada cada intervalo de tiempo
determinado o bien crear una tarea que sea Controlada externamente por eventos de modo que esta se
inicie bien por entradas digitales de interrupcin %IX1.0 (Event Input 1) o %IX1.1 (Event Input 2) bien por
una marca de tiempo para la sincronizacin de varios ejes (Motion_Cycle)

NOTA : No es posible definir dos tareas controladas externamente por eventos del mismo tipo (por
ejemplo dos tareas Event Input 1) pero es posible definir tantas tareas cclicas como queramos pudiendo
ser el intervalo de disparo de las mismas igual o distinto entre si.

Motion Pro: Conceptos Bsicos

pgina 29/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Como la tarea por si misma no sirve para nada si no va vinculada a un programa el siguiente paso sera
vincular un programa a la tarea en curso:
1. Pulsamos con el botn derecho sobre el icono de la tarea recin creada. Pulsaremos sobre la opcin
Anexar Llamada de programa del cuadro que aparecer:

2. Aparecer un cuadro de dilogo donde podremos introducir el nombre del programa, si es que lo
conocemos, que queramos vincular a la tarea el cual no debe encontrarse vinculado a otra tarea
para evitar ser llamado simultneamente desde dos tareas distintas. Si no nos acordamos de los
nombres de los programas disponibles podemos pulsar sobre el botn punteado apareciendo con
ello una lista de programas.

3. Seleccionar el nombre del programa que deseemos vincular con la tarea y pulsar sobre el botn
Aceptar:

Motion Pro: Conceptos Bsicos

pgina 30/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

As la siguiente configuracin de tareas podra ser posible:

Una tarea denominada TareaPrincipal que es la encargada de ejecutar el programa Principal() donde
figuran todas las instrucciones relacionadas con el control de los diversos ejes y dos tareas cclicas la
primera denominada TareaCiclica y configurada, por ejemplo, para llamar cada segundo a los programas
Supervisin() y Calculos() y la segunda, llamada TareaMediciones, que llamar al programa
Temporizadores()cada 10mseg

Motion Pro: Conceptos Bsicos

pgina 31/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

4.4.- Estados y Tiempos ejecucin de Tareas y Grupos de ejes


Disponemos de una serie de bloques, contenidos todos ellos en la librera SysLibIecTasks.Lib, que nos
permiten obtener una serie de informacin muy til acerca del estado del Motion Bus as como del tiempo de
ejecucin de las diversas tareas:

Mediante los dos bloques anteriores podemos determinar si un Axis Group determinado se encuentra o no
en error y en caso que as fuera intentar resetearlo.

Los dos bloques anteriores permiten crear dos estructuras de variables p1 y p2 que contienen informacin
relativa al estado o tiempos de ejecucin de, en este caso, la tarea que controla el Motion Bus
(Motion_Cycle) y la auxiliar o cclica disparada cada cierto tiempo.
As:
p1.dwCount
p1.dwCycleTime
p1.dwCycleTimeAvg
p1.dwCycleTimeMax
p1.dwCycleTimeMin
p1.wMode
p1.wStatus

Nmero de veces que se ha ejecutado la tarea desde que se activ


Tiempo de ejecucin actual
Tiempo de ejecucin medio
Tiempo de ejecucin mximo
Tiempo de ejecucin mnimo
Estado actual del LC (0=RUN, 1=STOP)
Estado actual de la tarea (1=Ejecutndose, 2=Detenida (por error o no))

Motion Pro: Conceptos Bsicos

pgina 32/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

5.- Parametrizacin inicial Drive.


Existe la posibilidad de modificar el valor de una serie de parmetros de los diferentes accionamientos de
forma automtica durante el primer ciclo de scan de la LMC. El mtodo utilizado desde Codesys es la
creacin de una lista de parmetros a modificar indicando cual debe ser el valor de dichos parmetros. Esta
lista se enviar durante el primer ciclo de scan va Motion Bus hacia el nodo que corresponda (cada nodo
puede tener una lista diferente de parmetros a modificar).
Este punto es especialmente til de cara a un mantenimiento ya que es posible sustituir un equipo fcilmente
si previamente se han seguido los siguientes pasos:
1. Tras acabar la puesta en marcha obtener mediante el uso de softwares a tal fin como PowerSuite o
Unilink todos los parmetros cuyo valor haya sido modificado de cada uno de los ejes de la
aplicacin.
2. En la seccin correspondiente de Motion Pro (se explica ms adelante) crear una lista individual de
parmetros para cada eje con todos aquellos cuyo valor haya sido modificado.
3. Ya est, cada vez que se arranque el programa estos valores sern enviados hacia el equipo remoto
que corresponda.

5.1.- Creacin de listas de parmetros


Durante la configuracin de cada eje disponemos de una pestaa especfica para realizar lo mencionado:

En este punto podemos hacer varias cosas, o rellenar a mano la lista de parmetros o utilizar un fichero
externo creado a tal fin:

Motion Pro: Conceptos Bsicos

pgina 33/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Si lo quisiramos hacer a mano nada ms fcil:


1. Hacemos clic sobre el icono de la columna Insertar.

2. En la fila que se crear se ha de indicar cual es la direccin CAN del parmetro a modificar
indicando el ndice, Subndice as como la longitud del valor que se enviar en bytes y, por
supuesto, el valor que se desea para dicho parmetro. Por ejemplo, para modificar el parmetro
AT_Gain, sera:

3. Una vez creada toda la lista podramos guardarla en un fichero externo de modo que nos sirva de
Backup personal para, por ejemplo, clonar mquinas. Para ello tan slo se ha de pulsar sobre el
botn Escribir en archivo. El formato de guardado es XML con codificacin iso-8859-1.

Motion Pro: Conceptos Bsicos

pgina 34/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Si lo quisiramos cargar la lista de parmetros mediante el uso de un archivo externo previamente creado:
1. Pulsar sobre el botn Leer de Archivo.
2. Buscamos el archivo XML que contiene la lista de parmetros. Este archivo debe no slo ser tipo
XML sino compatible con el formato de codificacin iso-8859-1 o de lo contrario no se cargaran los
parmetros:

3. Cuando hayamos encontrado el fichero adecuado pulsamos sobre el botn Abrir y aparecer toda la
lista de parmetros:

NOTA: Se dispone de un archivo XML con los valores por defecto de todos los parmetros de tipo R/W del
Lexium05A, pedidlo al autor de este documento si se necesitara.

Motion Pro: Conceptos Bsicos

pgina 35/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

5.2.- Edicin archivo externo XML


Como se ha comentado en el apartado anterior es posible guardar y cargar listas de parmetros mediante el
uso de ficheros externos. No obstante se han constatado una serie de peculiaridades que hay que tener en
cuenta:
1. Aunque Excel es, aparentemente, compatible con el formato XML parece que no lo es con el
sistema de codificacin iso-8859-1 por lo que cualquier intento de emplear Excel como editor de
este tipo de ficheros provocar que estos queden inutilizados (ni siquiera hace falta modificar nada,
el fichero quedar inutilizado con tan slo abrirlo y guardarlo).
2. A este respecto se recomienda utilizar editores XML freeware que sean compatibles con el sistema
de codificacin iso-8859-1. En Internet hay bastantes si se sabe buscar como por ejemplo el
XMLNotepad cuyo aspecto es el mostrado en la siguiente figura:

Motion Pro: Conceptos Bsicos

pgina 36/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6.- PROGRAMACION
6.1.- Los diferentes lenguajes de programacin
Existen hasta 7 tipos de lenguaje de programacin que el usuario puede utilizar a su criterio. Cada uno de
los cuales tiene sus ventajas y desventajas. La norma sera que cada cual utilizara el lenguaje con el que se
sienta ms cmodo segn sus necesidades.
No obstante hay tres lenguajes que pueden destacar sobre el resto: El SFC, el CFC y el ST.

6.1.1.- El lenguaje SFC o Graphet

El primero de ellos, el SFC, es un lenguaje de programacin ms conocido como Graphet y que permite
organizar el programa mediante un diagrama de flujo. La siguiente imagen muestra un ejemplo de ello:

En la imagen anterior vemos la estructura bsica de un programa realizado en SFC. Este ejemplo tiene
varios elementos comunes a cualquier tipo de programa y que son:
Tarea Init: Esta tarea se ejecuta al iniciar el programa y en principio, salvo que se realice una llamada
posterior, no vuelve a ejecutarse.
El triangulito negro indica que
hay algn programa dentro de la
tarea

Motion Pro: Conceptos Bsicos

pgina 37/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Condiciones de entrada: Son variables tipo Bool que permiten, cuando su valor es TRUE, que el programa
pase de una tarea a otra:

Estas variables tipo Bool deben ser tratadas en la tarea precedente de modo que nicamente una de ellas se
activara a TRUE mientras que el resto deben permanecer a FALSE (para evitar entrar en dos tareas
simultneamente). En este caso el condicionante de entrada Gear se encuentra a TRUE (puede observarse
porque su color es azul) y eso ha dado paso a que pueda ejecutarse el programa de la tarea Modo_Gear
(sabemos que se est ejecutando dicho programa porque la tarea que lo contiene se encuentra resaltada en
azul).
Condiciones de salida: Son variables tipo Bool que permiten, cuando su valor es TRUE, que el programa
abandone la tarea que se encuentra ejecutando en ese momento y el programa siga fluyendo. En caso que
el valor de la variable de salida sea FALSE el programa de la tarea activa en ese momento seguir
ejecutndose cclicamente.

Saltos: Permiten, cuando se cumplan las condiciones de entrada, que el programa salte a una tarea
anterior.
Indicativo de salto
Condicionante de
entrada al salto

Tarea hacia la que se


producir el salto

En el caso de la imagen anterior cuando la condicin Parado sea TRUE el programa se dirigir hacia la
tarea Init. Una vez en la tarea Init debera tenerse la precaucin de volver a poner a FALSE la variable
Parado ya que de lo contrario, si el valor de la variable Parado no se resetea nunca, al volver a pasar por la
zona de salto este se producir automticamente de forma, quizs, indeseada.

Motion Pro: Conceptos Bsicos

pgina 38/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Tareas paralelas: Son tareas que se ejecutan paralelamente al flujo de programa, pueden existir tantas
como queramos pero hemos de tener en cuanta que cuantas ms creemos ms recursos se consumirn. Su
utilidad podra ser, por ejemplo, la de gestionar las alarmas del sistema.

Esta doble lnea indica la


existencia de una o ms
tareas paralelas (en este
caso hay dos)
En la imagen anterior vemos dos tareas paralelas Monitor y EjeVirtual que se ejecutan cclicamente tan
pronto el condicionante de entrada Inicializado sea TRUE. Para abandonar la ejecucin de estas tareas
paralelas tan slo es necesario configurar a TRUE el condicionante de salida Parado.
Tareas Alternativas: Son como las tareas paralelas pero nicamente puede ejecutarse una. Por ejemplo,
en la siguiente estructura vemos como an existiendo la posibilidad de ir por cuatro caminos
simultneamente el sistema toma el camino ms a la izquierda.

Motion Pro: Conceptos Bsicos

pgina 39/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Acciones de entrada: Es posible ejecutar un programa una sola vez, cuando se entra en una tarea
determinada, mediante la inclusin de una accin de entrada. Para ello slo debemos hacer clic con el botn
derecho del ratn sobre la tarea y seleccionar la opcin Agregar Accin de entrada:

Posteriormente el sistema preguntar que tipo de lenguaje se desea utilizar para programar la/s acciones de
entrada deseadas:

Y tras este sencillo procedimiento la tarea (en este caso la tarea Manual) tendr asociado un programa
que se ejecutar nicamente al entrar en la tarea.

Haciendo doble clic sobre el cuadradito con la letra E podremos entrar a programar lo que deseemos.
Aquello que se programe ser lo primero que se ejecute tan pronto se entre en la tarea Manual.

Motion Pro: Conceptos Bsicos

pgina 40/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Acciones de Salida: Es posible ejecutar un programa una sola vez, cuando se sale de una tarea
determinada, mediante la inclusin de una accin de salida. Para ello slo debemos hacer clic con el botn
derecho del ratn sobre la tarea y seleccionar la opcin Agregar Accin de Salida:

Posteriormente el sistema preguntar que tipo de lenguaje se desea utilizar para programar la/s acciones de
salida deseadas:

Y tras este sencillo procedimiento la tarea (en este caso la tarea Manual) tendr asociado un programa
que se ejecutar nicamente al salir de la tarea.

Haciendo doble clic sobre el cuadradito con la letra X podremos entrar a programar lo que deseemos.
Aquello que se programe ser lo ltimo que se ejecute tan pronto se salga de la tarea Manual.

Motion Pro: Conceptos Bsicos

pgina 41/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6.1.2.- El lenguaje CFC o Complex Flow Chart

Este lenguaje permite programar mediante bloques de funciones vinculados entre ellos de forma ms o
menos libre. Permiten un nivel de monitorizacin muy alto pero su punto dbil son las instrucciones de
asignacin y condicionamiento. Adems hay que prestar muchsima atencin al orden de ejecucin de los
diferentes bloques de funcin pues podra darse el caso de que se ejecutara antes un bloque indeseado que
provocara el mal funcionamiento del programa.
Hay que tener en cuenta que la posibilidad de monitorizacin del lenguaje CFC no es la panacea ya que en
ciertos momentos los valores de las variables cambian muy rpidamente y probablemente no seamos
capaces de ver o analizar porque el programa se comporta anmalamente (eso pasa si las variables se
encuentran cambiando constantemente o si estamos entrando y saliendo de un bloque de forma continuada
y rpida).

Indicativo del orden de


ejecucin.

Una Asignacin

Motion Pro: Conceptos Bsicos

pgina 42/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Evidentemente podemos cambiar el orden de ejecucin si pulsamos con el botn derecho del ratn sobre el
entorno de programa y seleccionamos la opcin Order. De los diferentes tipos de orden se recomienda
utilizar el Order everything according to data flow ya que entonces se renumerarn todos los bloques
segn el orden de ejecucin real que tendr el programa y podremos valorar si nos interesa o no. Una vez el
orden sea el deseado podemos deseleccionar la opcin Show Order para evitar que se muestre el orden de
ejecucin de los diferentes bloques (puede resultar molesto cuando se monitoricen los diferentes estados del
programa o simplemente a nivel esttico).
Aade una nueva entrada al bloque
seleccionado (til para aadir entradas a
bloques lgicos tipo AND u OR)
Permite negar una entrada o salida.
Aade una entrada de habilitacin a un bloque
que no lo tenga de forma que podemos
restringir su ejecucin a menos que dicha
entrada sea TRUE.

Motion Pro: Conceptos Bsicos

pgina 43/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6.1.3.- El lenguaje ST o Structured Text

Este lenguaje es el ms completo y potente ya que permite realizar de forma estructurada toda una serie de
procesos que en el resto de lenguajes requieren un especial cuidado o bien implican mayor complicacin.
Evidentemente es un lenguaje alejado a la habitual programacin de un PLC y requiere de un tiempo de
aprendizaje mnimo pero a cambio pone en nuestras manos una capacidad de desarrollo mucho ms
elevado.

En azul instrucciones ST
reconocidas.

En Verde comentarios de usuario.

Nmero de lnea, es posible aadir un


breakpoint para tareas de debbuging.

En Magenta constantes
reconocidas por el sistema.

Las nicas recomendaciones seran que se guardara un cierto nivel esttico (tabulando la informacin
existente dentro de los condicionantes y subrutinas que impliquen acabar con la instruccin END_) y de
ayuda incluyendo cuanto comentario haga falta para que en futuras consultas por el que realiz el programa
u otro programador sea fcil conocer que hace cada parte del programa. Observar como el programa
ejemplo de la imagen anterior dispone de comentarios en cada seccin de programa y como se hace uso de
las tabulaciones para incluir secciones de programa dentro de las instrucciones IF y FOR.

Motion Pro: Conceptos Bsicos

pgina 44/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

6.2.- Las variables de usuario


6.2.1.- Los diferentes Tipos
Se ponen a nuestra disposicin toda una serie de tipologas de variables, unas ms sencillas y otras ms
complejas. Es importante hacer un uso adecuado de las variables con el fin de optimizar tanto los recursos
consumidos por la aplicacin como la propia velocidad de ejecucin de la misma.
Las variables disponibles pueden ser de tipo sencillo:
Tipo

Valor mnimo

Valor mximo

Espacio en
Memoria

Ejemplo Asignacin

BOOL

FALSE

TRUE

Variable:=TRUE;

BYTE

255

8 Bit

Variable:=200;

WORD

65535

16 Bit

Variable:=60000;

DWORD

4294967295

32 Bit

Variable:=120000;

SINT

-128

127

8 Bit

Variable:=-100;

USINT

255

8 Bit

Variable:=10;

INT

-32768

32767

16 Bit

Variable:=-30000;

UINT

65535

16 Bit

Variable:=60000;

DINT

-2147483648

2147483647

32 Bit

Variable:=-2000000;

UDINT

4294967295

32 Bit

Variable:=120000;

1.175494351e-38

3.402823466e+38

32 Bit

Variable:=1.53;

LREAL

2.2250738585072014
e-308

1.7976931348623158
e+308

64 Bits

Variable:=-3.56;

TIME

0d0h0m0s0ms

49d17h2m47s295ms

32 Bit

Variable := t#12h34m15s

TIME_OF_DAY

00:00:00

23:59:59.999

32 Bit

Variable := tod#00:00:00

DATE

1970-00-00

2106-02-06.

32 Bit

Variable := d#1972-03-29

DATE_AND_TIME

1970-00-00-00:00:00

2106-02-06-06:28:15

32 Bit

Variable := dt#1972-03-29-00:00:00

STRING

1 Caracter

255 Caracteres

1 Byte x Caracter

Variable :=:STRING(35):='Hola';

REAL

Motion Pro: Conceptos Bsicos

pgina 45/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

O algo ms complejas:
Tipo
ARRAY
TYPE

STRUCT

Declaracin e Inicializacin
Ejemplo Declaracin y Asignacin valores por defecto
Matriz: ARRAY [0..6] OF STRING := 'Stop', 'Velocidad', 'Posicin', 'Cam', 'Gear', 'Homming','Interpolator;
Ejemplo Declaracin
TYPE TIPO_SEMAFORO: (Rojo, Ambar, Verde:=10);
END_TYPE
Ejemplo Uso
SEMAFORO1 : SEMAFORO_TIPO;
SEMAFORO1:=0; (* El valor para de la seal del SEMAFORO1 es Rojo*)
FOR i:= Rojo TO Verde DO
i := i + 1;
END_FOR;
Ejemplo Declaracin
TYPE Ejes :
STRUCT
Activar:BOOL;
Velocidad: REAL;
VelHome:DWORD;
Aceleracion: REAL;
Deceleracion: REAL;
Posicion: REAL;
Tiempo: TIME;
END_STRUCT
END_TYPE
TYPE Estructura :
STRUCT
Secuencia: INT;
Eje: ARRAY[1..2] OF Ejes;
END_STRUCT
END_TYPE
Ejemplo Asignacin valores por defecto
Secuencia: ARRAY [0..20] OF Estructura:=
(Secuencia:=0, Eje:= (Activar:=TRUE, Velocidad:=200, Aceleracion:=500, Deceleracion:=500),
(Activar:=TRUE, Velocidad:=200, Aceleracion:=500, Deceleracion:=500)),
(Secuencia:=1, Eje:= (Activar:=TRUE, Velocidad:=200, Aceleracion:=500, Deceleracion:=500,
Tiempo:=T#1m),
(Activar:=TRUE, Velocidad:=200, Aceleracion:=500, Deceleracion:=500,
Tiempo:=T#1m)),
(Secuencia:=2, Eje:= (Activar:=TRUE, Posicion:=0, Velocidad:=200, Aceleracion:=500, Deceleracion:=500),
(Activar:=TRUE, Posicion:=360, Velocidad:=200, Aceleracion:=500, Deceleracion:=500)),

Motion Pro: Conceptos Bsicos

pgina 46/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Las variables complejas del tipo TYPE y STRUCT deben ser creadas en la pantalla Tipos de Datos. Por
ejemplo, para crear una variable del tipo TYPE ejecutaremos los siguientes pasos:
1. Pulsamos con botn derecho sobre carpeta Tipo de datos y seleccionamos opcin Aadir Objeto:

2. Introducimos el nombre para la nueva variable.

3. Modificamos a mano, ya que no es posible indicar el tipo de variable que queremos crear, la
definicin de la estructura creada por otra tipo TYPE de manera que incluya las etiquetas internas
deseadas (en el ejemplo que se muestra se crean tres: Rojo, Amarillo y Verde).

4. El nuevo tipo de variable ya ha sido creado y puede ser utilizado en el resto del programa.

Motion Pro: Conceptos Bsicos

pgina 47/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Si deseamos crear una estructura (agrupacin de varios tipos distintos de variables en una nica variable) es
ms sencillo, simplemente ejecutar los siguientes pasos:
1. Pulsamos con botn derecho sobre carpeta Tipo de datos y seleccionamos opcin Aadir Objeto:

2. Introducimos el nombre para la nueva variable.

3. Una vez creada la estructura definiremos las variables internas a mano segn nuestra necesidad ya
nicamente se crea el patrn de estructura (el sistema no puede saber que deseamos incluir).

4. El nuevo tipo de variable ya ha sido creado y puede ser utilizado en el resto del programa.

Motion Pro: Conceptos Bsicos

pgina 48/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

6.2.2.- Volatilidad de las variables


Por regla general las variables que se utilizan son del tipo voltil, es decir, cuando se quita tensin de la
Lexium Motion Controller su valor se pierde. No obstante es posible definir hasta tres tipos de
comportamiento distinto segn se especifique a la hora de declarar la variable:

Si no se especifica que una variable debe ser de tipo RETAIN o PERSISTENT automticamente pasa a ser
voltil. Si se especifica uno o los dos tipos indicados la variable pasa a ser remanente, es decir, que puede
guardar su valor aunque dependiendo de la combinacin escogida se comportar de una u otra forma:
RETAIN:

Mantienen su valor tras una finalizacin incontrolada as como tambin tras un


apagado y encendido normal de la LMC (RESET). Un RESET de otro tipo (en fro u
original) o el envo de un programa harn que los valores se inicialicen.
Un ejemplo sera un contador de piezas de una instalacin de produccin que
tuviera que seguir contando en caso de fallo del sistema elctrico.

PERSISTENT:

Slo mantienen su valor en caso de enviar un nuevo programa.

PERSISTENT RETAIN: Si se desea que las variables PERSISTENT mantengan su valor tras un paro
incontrolado de la LMC tendrn que declararse tambin como RETAIN.
Un ejemplo de aplicacin sera un contador de horas de servicio que tuviera que
seguir contando tras un fallo del sistema elctrico.
La siguiente tabla ayuda a entender las diferencias entre las tres categoras de variables remanentes:
Tras Comando
Online
Reset
Reset (en fro)
Reset (original)
Cargar (=Descargar)
Modificacin en lnea

VAR

VAR RETAIN

VAR PERSISTENT

SI

SI
Si

SI
SI

VAR RETAIN PERSISTENT


VAR PERSISTENT RETAIN
SI
SI
SI

SI=Se mantiene el valor, -=se vuelve a inicializar el valor

ATENCION:
Si una variable local se declara como RETAIN en un programa, esa variable se guarda en la zona
retain (como variable retain global).
Si una variable local se declara como RETAIN en un bloque de funciones, la instancia completa de
ese bloque de funciones se guarda en la zona retain (todos los datos del mdulo), aunque solo se
trata de esa manera la variable retain declarada.
Si una variable local se declara en una funcin como RETAIN, esto no tiene ninguna consecuencia.
La variable no se guarda en la zona Retain! Si una variable local se declara como persistente en
una funcin, tampoco tiene consecuencias!
NOTA: Por defecto del actual firmware se recomienda utilizar nicamente las variables de tipo REMAIN
PERSISTENT si se desea que la informacin se mantenga en ausencia de tensin de alimentacin en la
Lexium Motion Controller.

Motion Pro: Conceptos Bsicos

pgina 49/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6.3.- Uso de un eje virtual

El uso de los ejes virtuales es una herramienta que se suele utilizar para comprobar el funcionamiento de
partes de mquina de forma autnoma al resto de la lnea de produccin. Por ejemplo, en una lnea de corte,
podemos comprobar como se comportar la seccin de la cizalla volante sin necesidad de arrancar la
seccin de alimentacin de material evitando as prdida de producto y facilitando el test.
Un eje virtual no es ms que un contador que se incrementa del mismo modo que se incrementara la
posicin de un encoder real que se encontrara traccionado por el flujo de material suministrado por una lnea
de produccin simulando as el comportamiento de esta lnea y por tanto pudiendo comprobar de una forma
cmoda de que manera se comporta la parte esclava dependiente de dicha lnea.

6.3.1.- Va bloque SMC_TimeAxisFB


Este mtodo permite una implementacin rpida de un eje virtual mediante la creacin de una variable del
tipo Axis_Ref (que es la utilizada por un eje real). Observar el siguiente ejemplo escrito en lenguaje CFC:

De esta rutina vemos lo siguiente:


1. Se introduce como variable de entrada la velocidad en RPM a la que queremos se desplace el eje
virtual mediante la variable Vel_EjeVirtual.
2. Multiplicamos Vel_EjeVirtual por el periodo del eje maestro para trabajar en las mismas unidades
que este y dividimos el resultado entre 60. As pasamos de RPM a Unidades /seg.
3. El resultado se introduce como entrada a un bloque NE de modo que cuando la velocidad calculada
sea diferente a la actual el resultado del bloque NE sea TRUE y cuando sea igual FALSE. Con esto
se consigue que el bloque SMC_TimeAxisFB se reinicie cada vez que cambiamos la velocidad.
4. A la vez se introduce la velocidad calculada en la entrada fOverride del bloque SMC_TimeAxisFB.
Este valor entrara en vigor tan pronto la entrada bExecute detecte un flanco de subida.
5. Se asigna FALSE y 0 a las entradas bPeriodic y fPeriod obligatoriamente mientras que la entrada
fRampInTime afecta a la rampa de aceleracin que se aplica para alcanzar la velocidad deseada
(en este caso se pone a 0 porque interesa que la velocidad deseada sea aplicada inmediatamente)
6. El bloque SMC_TimeAxisFB generar una variable que podremos utilizar como si de un eje real se
tratara (podemos aadirlo, por ejemplo, como eje master de un FB de sincronismo MC_GearIn).
7. Se toma la velocidad del eje recin creado, al que hemos llamado EjeVirtual, mediante el FB
MC_ReadActualVelocity. La velocidad de este eje nicamente se utiliza para compararla con la
deseada y poder actual en consecuencia sobre la entrada bExecute del bloque SMC_TimeAxisFB.
El mismo ejemplo en lenguaje ST sera:

Como se observa tampoco reviste mayor dificultad entre utilizar un lenguaje u otro.

Motion Pro: Conceptos Bsicos

pgina 50/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

6.3.2.- Va Dummy Axis


Podramos decir que este es el mtodo autntico para el uso de un eje virtual ya que el eje que es posible
crear mediante esta va tendr toda la potencia que tendra un eje real: se configura igual, puede incorporar
rampas, puede habilitarse y deshabilitarse, etc.

Es necesario la siguiente librera para el uso de ejes virtuales:

Dummydrive_V1940.lib

La librera puede encontrarse en la carpeta:


C:\Schneider Electric\Motion Control\CoDeSys V2.3\Targets\Schneider Electric\Shared Files\Library\Motion

Para utilizar un Dummy Axis este se configura del mismo modo que un eje real, es decir, desde las pantallas
de configuracin de ejes:

Los pasos seran:


1.
2.
3.
4.

Ir a pestaa Recursos.
Doble clic en opcin Configuracin del mando.
Clic con el botn derecho sobre el icono Lexium Controller V01 y aadimos un nuevo BusInterface.
Renombramos el nuevo BusInterface con el nombre BusVirtual para que no entre en conflicto con
el BusInterface que contiene el grupo de ejes reales.
5. Configuramos el BusInterface de nombre BusVirtual para que controle un accionamiento de tipo
Dummy.

Motion Pro: Conceptos Bsicos

pgina 51/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6. Clic con el botn derecho sobre el BusInterface de nombre BusVirtual y aadimos un nuevo
AxisGroup al que llamaremos VirtualGroup.

7. Enlazamos el nuevo grupo de ejes denominado VirtualGroup con la tarea TareaPrincipal ya que
esta es la misma que utiliza el grupo de ejes reales. De este modo tanto los ejes reales como el
virtual se encontrarn sincronizados con la misma base de tiempos. El tiempo de ciclo ser igual al
empleado en la configuracin del grupo de ejes reales.
8. Clic con el botn derecho sobre el grupo de ejes de nombre VirtualGroup y aadimos un nuevo eje
al que llamaremos EjeVirtual.
9. Configuramos el nuevo eje virtual del mismo modo que haramos si fuera real (incluyendo el nmero
de nodo que debe ser diferente al resto de nmeros de nodo empleados).

10. Y ya est, el eje EjeVirtual se puede utilizar y se comportar como un eje real a pesar de que no
existe en realidad.

Motion Pro: Conceptos Bsicos

pgina 52/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

En la siguiente seccin de programa se puede observar como se emplea el eje virtual recin creado como
maestro de una tabla CAM (el eje real se llama Eje2):

Para la marcha y/o paro de este eje virtual o para modificar su velocidad podemos observar la siguiente
seccin de programa:

Observar como se emplean los bloques MC_Power para habilitar o deshabilitar el eje virtual y el
MC_MoveVelocity para modificar su velocidad: igual que un eje real.

Motion Pro: Conceptos Bsicos

pgina 53/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6.4.- Uso de un encoder externo


Con el fin de sincronizar el comportamiento de los diferentes ejes controlados por el Lexium Controller existe
la posibilidad de conectar una referencia externa la cual puede ser un encoder externo. Una vez introducido
este elemento de medida externo cada uno de los ejes puede sincronizarse con diferentes ratios con l
segn las necesidades del proyecto a realizar.

La incorporacin de un encoder maestro es fcil:

Alimentar a la tensin con la que se


desea trabajar con el encoder.

Entrada de encoder
externo.

NOTA: El encoder externo puede y debe ser alimentado desde una fuente de alimentacin independiente la
cual puede ser conectada en bornas del Lexium Controller que se indican en la imagen anterior (ver manual
de usuario) estas bornas se encuentran internamente unidas a los pines adecuados del conector de alta
densidad SUB D15 donde se conecta el encoder y no se utilizan para nada ms.

Motion Pro: Conceptos Bsicos

pgina 54/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Respecto a como se declara un eje virtual nada ms fcil que seguir los siguientes pasos:

Pasos a realizar
1. Dirigirse a la pantalla Recursos.
2. Doble clic sobre la opcin Configuracin del mando.
3. Clic con el botn derecho sobre el icono Lexium Controller V01.
4. Clic sobre la opcin Anexar Subelemento del men desplegable aparecido.
5. Clic sobre la opcin MasterEncoder del submen desplegable aparecido.

El nuevo elemento quedar aadido a la lista de elementos del Lexium Controller:

Motion Pro: Conceptos Bsicos

pgina 55/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Aunque puede modificarse el nombre del encoder maestro recin introducido no se aconseja ya que
posiblemente debido a un error del Codesys no es posible hacer referencia al nuevo encoder maestro por
dicho nombre. En su lugar, para hacer referencia al encoder maestro se utilizar un formato fijo:
La mejor forma de ver como se utiliza este encoder maestro es mediante un ejemplo escrito en lenguaje ST:

En este ejemplo se puede ver como mediante el uso de la variable Secuencia[NumSeq].Eje[1].MReal es


posible utilizar como encoder maestro un encoder virtual (caso que su valor sea FALSE) o externo (caso que
sea TRUE).
Caso que el valor sea TRUE (seleccin encoder maestro externo real) vemos como simplemente se asigna
a la variable EjeVirtual1 que es del tipo AXIS_REF el valor de Encoder1.Axis la cual es una variable
reservada (de sistema, no creada por el usuario) del mismo tipo que refleja el comportamiento del encoder
maestro externo real.
En el caso de desear que la variable EjeVirtual1 sea reflejo del eje virtual mediante la asignacin de FALSE
a la variable Secuencia[NumSeq].Eje[1].MReal se recomienda dirigirse al captulo anterior donde se habla
de los ejes virtuales.

Motion Pro: Conceptos Bsicos

pgina 56/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6.5.- Uso de varios encoders externos


Hay que tener en cuentra que la LMC slo dispone de una entrada MasterEncoder as que a nivel Hardware
debera buscarse algn elemento rpido, quizs un conmutador basado el rels de estado slido o similar,
que permita dirigir las seales de un encoder u otro hacia la entrada MasterEncoder de la LMC.
Solventado este problema aparece la necesidad de poder modificar Online los ratios de la entrada
MasterEncoder ya que los diferentes encoders externos que puedan ser utilizados en la aplicacin no tienen
porqu tener el mismo factor de escalado.
Esta operacin debe realizarse de modo que no se detenga la produccin si bien, quizs, se produzca un
error debido al retardo del conmutador fsico, ciclo de scan, etc que el cliente debe asumir.
Para modificar el escalado de un eje (sea un Drive o un MasterEncoder) de forma Online existe un bloque
denominado SMC_ChangeGearingRatioEncoder y un ejemplo de su uso lo podemos observar en la
siguiente seccin de cdigo:

En el ejemplo anterior se desean utilizar dos encoders externos del mismo nmero de pulsos, 1024, (4096
flancos) pero el primero conectado a una rueda medidora de 100mm de desarrollo y el segundo a una de
200mm.
La seccin de cdigo mostrada realiza las siguientes operaciones:
1. Tenemos dos variables tipo bolean, bOrdenRatioAlto y bOrdenRatioBajo, que utilizaremos para
cargar un ratio u otro sobre la variable iRatio la cual se lleva al bloque anteriormente mencionado.
2. Mientras bOrdenRatioAlto y bOrdenRatioBajo permanecen a nivel FALSE (no deseamos
modificar el ratio) se va copiando la posicin actual de la lnea, contenida en la variable Pos_Linea,
sobre una variable auxiliar llamada AuxPosLinea, en el momento de ordenar un cambio de ratio
esta copia deja de producirse.
3. Tras la modificacin del ratio el bloque SMC_ChangeGearingRatioEncoder pone a TRUE su salida
bDone y tras un pequeo retardo configuramos la posicin actual de la lnea a la previamente
memorizada.
NOTA : El bloque SMC_ChangeGearingRatioEncoder modifica la posicin actual de la lnea segn el
escalado utilizado: Si nos encontramos, por ejemplo, en la cota 45mm con el ratio equivalente al permetro
de 100mm tras modificar al equivalente a 200mm, curiosamente, la posicin actual de la lnea pasa a ser
90mm. Por esta razn, y para evitar que el cambio de ratio afecte a la posicin actual, se aconseja la
estructura de programa anterior.

Motion Pro: Conceptos Bsicos

pgina 57/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6.6.- Las macros


Las macros son una herramienta que permiten reutilizar cdigo en diferentes partes del programa de una
forma autnoma y ahorrando recursos a Motion Pro ya que al contrario de lo que ocurre con un bloque de
funciones una macro, en realidad, no es ms que un puntero a una zona de memoria donde se encuentra el
cdigo que ejecuta. Si la macro se utiliza dos veces los recursos empleados no son el doble ya que no se
repite el cdigo involucrado disminuyendo as la carga de programa. Tambin se suelen utilizar, aunque ese
no es su cometido principal, para organizar el programa y ayudar en su mantenimiento del programa.

6.6.1.- Creacin de un bloque de funciones


Todo empieza creando un bloque de funciones pensado para ser usado de forma general:
1. Hacemos clic con botn derecho en carpeta Mdulos y escogemos opcin Insertar Objeto.

2. Creamos un nuevo mdulo tipo Bloque de funciones de nombre Sub_PowerON y tipo de lenguaje
de programacin el CFC:

Motion Pro: Conceptos Bsicos

pgina 58/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3. Podramos crear una carpeta para agrupar todos los bloques de funciones que vayamos creando.
En este caso se ha creado una llamada Funciones y se ha arrastrado dentro el Bloque de funciones
Sub_PowerON.

4. Realizamos doble clic sobre Sub_PowerON para proceder a editarlo. Observar como al ser un
bloque de funciones son necesarios una serie de parmetros de entrada, de salida e internos.

5. Un programa CFC (y la definicin de variables empleadas) podra ser, por ejemplo, el siguiente:

Motion Pro: Conceptos Bsicos

pgina 59/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6. Tras finalizar la programacin ya disponemos de un nuevo bloque de funciones que podremos


llamar desde cualquier parte del programa. A todos los efectos el nuevo bloque de funciones tendr
el siguiente aspecto tras ser incorporado en nuestro programa (lenguaje CFC).

6.6.2.- Creacin de una macro


Tras crear un bloque de funciones ya podramos utilizarlo dentro de una macro. Las macros, una vez
creadas, pueden ser utilizadas cuantas veces sea preciso en cualquier parte del programa. Para la creacin
de una macro se aconsejan seguir los siguientes pasos:
1. Creamos un bloque de funciones cualquiera sobre la superficie de programacin. Por ejemplo un
bloque AND.
2. Pulsamos con el botn derecho sobre dicho bloque y escogemos la opcin Crear Macro.

Motion Pro: Conceptos Bsicos

pgina 60/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3. El bloque AND quedar incluido en una nueva macro cuyo nombre, por defecto, es MACRO.

4. Ahora renombramos la Macro recin creada y le damos el nombre de Iniciar_Ejes. Podemos ver
qu contiene la macro (y editar su contenido) con tan slo hacer clic con el botn derecho del ratn y
escoger la opcin Saltar a Macro.

NOTA: Expandir macro quiere decir Destruir Macro, es decir, todo lo que se encuentre dentro de la
Macro se extraer fuera de ella y quedar como si fuera una seccin de cdigo normal dentro de la
zona de programacin.

5. Una vez hemos Saltado dentro de la Macro podremos ver que su contenido es precisamente el
bloque que hemos utilizado para crear la Macro. Nos quedaremos en esta vista y modificaremos su
contenido sustituyendo el bloque AND por la siguiente seccin de cdigo:

Motion Pro: Conceptos Bsicos

pgina 61/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Observar que la seccin de programa hace uso de dos instancias al bloque de funciones
Sub_PowerON creado anteriormente (en el apartado anterior). Por lo dems la macro dispone de
dos salidas indicando cuando los dos ejes (Axe_X y Axe_Y) han finalizado su bsqueda de home
(Homes_Ok) y cuando ambos se encuentran listos para ser utilizados (Drives_Ok).
Para extraer informacin de una Macro se ha utilizado una simbologa nueva:

Que como vemos tiene un aspecto redondeado. Para aadir una salida de macro tan slo se ha de
emplear el icono correspondiente de la barra de herramientas:

Crear Macro

Salida de Macro
Entrada a Macro

Si se necesita, como se observa en la imagen anterior, es posible tambin aadir entradas a la


Macro.
6. Una vez creada la macro podemos salir de ella para observar su aspecto externo. Para ello slo es
preciso realizar clic con el botn derecho sobre la zona de programacin y escoger la opcin Un
nivel de Macro Atrs (porque en nuestro caso slo hemos creado un nivel):

Motion Pro: Conceptos Bsicos

pgina 62/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7. La Macro totalmente acabada quedara del siguiente modo:

Aunque parezca un bloque de funciones en realidad una macro es como un puntero direccionado a una
agrupacin de ellos de manera que en realidad esta agrupacin slo existe una vez en memoria. Si se repite
la macro en 10 zonas distintas de programa no se consumen 10 veces ms recursos ya que una macro no
es un conjunto de cdigo sino un puntero a un conjunto de cdigo (a lo sumo necesitaremos los recursos
que Codesys necesite para realizar 10 llamadas a la misma zona de memoria donde se encuentra la seccin
de cdigo utilizada por la macro).

Motion Pro: Conceptos Bsicos

pgina 63/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7.- PRIMER PROGRAMA SIMPLE


7.1.- Creacin Programa Principal
Se supone conocimientos bsicos de Motion a nivel de movimientos monoeje. En el presente ejemplo se
realizar un simple movimiento absoluto hacia una cota determinada, para ellos se efectuar una bsqueda
de home y posteriormente un posicionado.
Si se han seguido todos los pasos explicados durante el captulo 1 el entorno tendr
definido un primer objeto vaco llamado PLC_PRG colgando de la carpeta MODULOS
dentro del NAVEGADOR DE PROGRAMAS:
Este objeto, cuyo contenido se pude ver realizando un doble clic sobre su nombre:
PLC_PRG, se considerar el contenedor del programa principal de la aplicacin.
Es posible cambiar su nombre, si as se desea, con tan
slo situar el cursor del ratn sobre el nombre
PLC_PRG, pulsar el botn derecho del ratn y escoger
la opcin Cambiar nombre del objeto de hecho, y
para tenerlo ms claro, cambiaremos el nombre de
PLC_PRG a Principal.
Se ha de considerar este objeto, denominado ahora
Principal, como contenedor del ncleo de programa de
la aplicacin. Para que este objeto pase a considerarse
como el ncleo principal de la aplicacin primero debe
ejecutarse cclicamente y para ello debe definirse una
tarea que lo vaya llamando a cada ciclo de scan del
Lexium Controller. Por tanto, el siguiente paso es crear
una tarea que vaya llamando al objeto Principal de forma
cclica.
Para crear una nueva tarea seleccionamos el Navegador de Recursos y
realizamos un doble clic sobre Configuracin de tareas

Motion Pro: Conceptos Bsicos

pgina 64/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Se abrir a la derecha del Navegador de Recursos una nueva ventana con un rbol cuya raz se denominar
Configuracin de tareas donde, de momento, slo existe un objeto colgando denominado Evento del
sistema. Llevamos el cursor sobre el texto Configuracin de tareas y mediante la pulsacin del botn
derecho seleccionamos la opcin Anexar Tarea.

Aparecer un nuevo cuadro de dilogo donde daremos nombre a la nueva tarea llamndola TareaPrincipal
configurando su llamada mediante eventos externo. El evento que llamar a la nueva tarea ser el ciclo de
scan del Lexium Controller.
Acto seguido se llevar el cursor sobre el icono de la tarea TareaPrincipal y tras hacer clic con el botn
derecho se seleccionar la opcin Anexar Llamada de programa. El programa que se llamar ser
precisamente el programa principal creado anteriormente y que se llam Principal.

Abrir un listado
de Programas
Disponibles

De esta forma ya tenemos creado un objeto denominado que contendr el programa principal de la
aplicacin el cual ser llamado cclicamente a cada ciclo de posicionado del controlador. Dentro de este
objeto, llamado Principal, es donde se deber de escribir el programa que gobernar la aplicacin a realizar.

Motion Pro: Conceptos Bsicos

pgina 65/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7.2.- Declaracin del eje a controlar


Antes de iniciar el desarrollo del programa falta por definir cuantos ejes controlar el Lexium Controller para
ellos debemos dirigirnos al icono de Configuracin de Mando dentro del Navegador de Recursos y hacer
doble clic sobre l. Con esto aparecer una nueva ventana a la derecha mostrando, mediante rbol
desplegable, un resumen del contenido hardware de la aplicacin, por el momento nicamente el Lexium
Controller con las entradas y salidas digitales que lleva de serie.

De forma parecida a como se ha hecho a la hora de crear una nueva tarea nos situaremos con el cursor
sobre el icono de la raz del rbol Lexium Controller V01 y haremos clic con el botn derecho
seleccionando Anexar Subelemento y luego BusInterface.

Motion Pro: Conceptos Bsicos

pgina 66/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

De esta forma se aadir al rbol de recursos hardware un nuevo componente denominado BusInterface y
que viene a representar el vnculo entre el controlador Lexium Controller y una posible red de
accionamientos controlados por bus CANSync. Una vez aadido el componente BusInterface se ha de
indicar que el bus ser controlado por un Lexium Controller por lo que modificaremos la opcin Controlador
de accionamiento a Lexium Controller Motion Bus.

Ahora falta especificar que lo que cuelga de este bus de campo es un conjunto de accionamientos (a pesar
de que en el presente ejemplo slo se controlar un nico accionamiento). Hacemos clic con el botn
derecho sobre el icono BusInterface y seleccionamos Anexar AxisGroup con lo que aparecer una nueva
ventana donde vincularemos este grupo de ejes con la tarea que se ha creado anteriormente TareaPrincipal,
es recomendable aadir como tiempo de ciclo 4000 us (tiempo adecuado para controlar hasta 4 ejes). Por
lo dems el nmero de nodo local (el Lexium Controller) puede dejarse a 0, la velocidad de comunicaciones
del bus CANSync a 500Kbaud (a menos que sea estrictamente necesario no se recomienda utilizar la
mxima velocidad de comunicaciones ya que suele restringir bastante la longitud del cable de
comunicaciones as como el nmero mximo de nodos) y el generador de pulsos de sincronismo en PLC.

Motion Pro: Conceptos Bsicos

pgina 67/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Por ltimo hay que aadir algn eje al grupo de ejes recin creado. Para ello volvemos a realizar clic con el
botn derecho sobre el icono AxisGroup y seleccionamos Anexar Drive. Aparecer una nueva pantalla
para configurar dicho nuevo eje:

En esta pantalla se puede definir el escalado del nuevo eje, es decir, cuantos pulsos de encoder son
necesarios para desplazar el elemento que mueve el motor una medida determinada. Como se va a trabajar
a eje libre lo que haremos ser definir cuantos pulsos son necesarios para desplazar 360 grados de eje de
motor (de esta forma la unidad bsica de medida ser el grado).

Motion Pro: Conceptos Bsicos

pgina 68/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Los parmetros ms importantes son los siguientes:


Nodo de la red CAN
Permite definir como se comportar el eje. Si se define como rotatorio el indicador
de posicin actual se resetear cada vez que se sobrepase un valor determinado
prefijable (se trabajar con el mdulo de la posicin actual con la prefijada mientras
que si se define como lineal se considerar el desplazamiento en pulsos sin
realizar el mdulo (situacin ms comn).
Incrementos:
Nmero de pulsos generados por el encoder de motor en una revolucin, siempre
son 131072
Unidades Softmotion: Que desplazamiento efectivo realiza la carga cuando el eje se ha desplazado el
nmero de pulsos introducido en Incrementos. Como queremos trabajar en
grados se configurar a 360.
Valores Mximos:
Como su nombre indica permite ajustar velocidades y rampas de aceleracin o
deceleracin mximas. Dejaremos los valores por defecto.
Drive ID:
Tipo:

Por ello la pantalla debera quedar del siguiente modo:

B
C

Se le cambia el nombre
al eje para identificarlo
mejor

A:
B:

Nmero de nodo, debe corresponder con el nodo CAN del drive que utilizaremos
Nmero de pulsos generados durante una revolucin de motor. No importa el motor que se emplee, el
valor siempre es de 131072 porque el Lexium Controller trabaja internamente con una resolucin de 17
bits (2^17=131072).
C: Unidades que se desplazar la carga fsica. Como vamos a trabajar a eje libre (sin carga) y queremos
trabajar en grados se configura a 360. Esto quiere decir que cuando el Lexium Controller cuente 131072
pulsos de encoder se considerar a efectos de unidades de usuario que se ha girado 360 grados.
Todas las unidades de desplazamiento sern, a partir de este momento, en grados.

Motion Pro: Conceptos Bsicos

pgina 69/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7.3.- Programa habilitacin y movimiento absoluto


Si se han seguido los puntos anteriores ya podemos empezar a realizar nuestro primer programa. Para ello
se intentar habilitar el eje y llevarlo en control de posicin de un punto a otro.
Volvemos al entorno de programacin haciendo clic sobre la pestaa del Navegador de Programas y
luego un doble clic sobre el programa Principal

Tras hacer doble clic sobre el nico programa existente Principal aparecer el entorno de programacin
de ese programa que, como se ha definido en lenguaje CFC, tiene una apariencia similar a la mostrada en la
figura anterior. As, bajo lenguaje CFC, tenemos en la barra superior de herramientas un conjunto de
botones para la utilizacin de bloques de funciones.

Para crear nuestro primer bloque tan slo es preciso realizar un simple clic sobre el tercer icono empezando
por la izquierda y luego hacer un clic sobre el rea de programacin por defecto aparecer el bloque de
una puerta AND. Un camino ms rpido es pulsar CTRL+B con el cursor situado sobre el rea de
programacin.

Motion Pro: Conceptos Bsicos

pgina 70/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Como este bloque no nos interesa hacemos clic sobre su nombre y pulsamos la tecla F2. De este modo se
abrir el navegador detallado de bloques disponibles. Se recomienda desactivar la opcin Representacin
estructurada pues de ese modo se obtiene un listado completo de los bloques disponibles y es mejor para
realizar una bsqueda visual.

El bloque que ahora mismo nos interesa se llama MC_POWER y se encuentra dentro de la coleccin de
bloques de funciones estndar. Una vez seleccionado se pulsa el botn Aceptar.
El anterior bloque AND quedar automticamente sustituido por el bloque MC_POWER cuyo cometido es
situar al Lexium 05 en estado de RUN. Hacemos clic sobre los interrogantes en rojo de la parte superior del
bloque y le daremos como nombre, por ejemplo, RUN_EjeControlado. Pulsamos la tecla Enter y nos
aparecer un cuadro llamado Declaracin de variables

En este caso, las opciones por defecto ya nos van bien (por lo general las opciones por defecto a la hora de
renombrar un bloque ya nos van bien siempre). Pulsamos sobre el botn Aceptar.

Motion Pro: Conceptos Bsicos

pgina 71/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Ahora es necesario activar las entradas Enable, bRegulatorOn y bDriveStart del bloque de funciones para
que el Lexium05 que controla el motor se site en estado de RUN. Para este cometido es necesario
conectar una variable de entrada hacia dichas entradas del bloque de funciones. Podemos sin embargo
utilizar como variable de entrada una constante de valor TRUE de modo que al arrancar el programa
automticamente el Lexium05 se site en RUN. Para aadir una variable de entrada podemos hacer clic
sobre el icono que representa la entrada a un bloque o bien pulsar CTRL+E.

Hacemos clic sobre los interrogantes y tecleamos TRUE. Posteriormente hacemos clic sobre el rabito del
icono de entrada y sin soltarlo lo intentamos conectar con el rabito situado como entrada Enable del bloque
MC_POWER. Volvemos ha hacer clic sobre el rabito del icono de entrada y lo conectamos a la entrada
bRegulatorOn y finalmente repetimos la operacin con la entrada bDriveStart. Si se ha realizado la
operacin descrita de forma correcta deberemos tener el siguiente bloque con las siguientes conexiones:

Ahora se le ha de decir al bloque que eje deseamos situar en RUN. Volvemos a crear una entrada pero esta
vez en lugar de hacer que sea una constante de valor TRUE tecleamos el nombre del eje que hemos
previamente definido. Conectamos esta variable en la entrada Axis.

Ahora vamos a aadir un nuevo bloque para realizar el posicionamiento propiamente dicho. El bloque a
introducir es el MC_MOVEABSOLUTE y le daremos el nombre de Mover_EjeControlado.

Motion Pro: Conceptos Bsicos

pgina 72/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Para dar la orden de moverse, de dirigirse a la cota deseada, utilizaremos una variable de entrada. Creamos
por tanto una variable de entrada que conectaremos a la entrada Execute del bloque. A esta variable de
entrada la llamaremos IR y tras introducir su nombre sobre el icono que representa una entrada y pulsar la
tecla Enter se nos preguntar de qu tipo queremos que sea:

Si en el cuadro de declaracin de variables aparecido tras pulsar la tecla Enter no aparece el tipo de variable
deseado siempre es posible desplegar de nuevo el cuadro de Tipos estndar y escogerla a mano. Si
recordamos de memoria cual es el tipo adecuado lo podemos escribir a mano en lugar de buscarlo.

Motion Pro: Conceptos Bsicos

pgina 73/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

Repetimos la operacin con otra entrada que servir para contener la posicin deseada la cual
conectaremos en la entrada Position del bloque de funciones a la que llamaremos Deseada y que
definiremos como REAL. Para las entradas Velocity, Acceleration y Deceleration utilizaremos constantes
de valor 1000, 1000, 1000. En la entrada Axis evidentemente aadiremos el eje que tenemos
EjeControlado. El bloque correctamente finalizado tendra el siguiente aspecto:

NOTA: La velocidad se expresa en unidades/segundo. Esto quiere decir que el eje, caso que llegue a la
velocidad indicada girar a 1000 grados / segundo. Como las rampas de aceleracin y deceleracin se
expresan en grados / segundo2 vemos que en realidad configurar las rampas a 1000 (igual que el valor de la
velocidad) hace que el eje invierta 1 segundo en llegar desde 0 hasta la velocidad especificada (aceleracin)
y 1 segundo en llegar desde la velocidad especificada hasta 0 (deceleracin).
Para conocer el valor de la velocidad en RPM hemos de aplicar esta simple frmula:

V (RPM ) = 1000

grados
1 Re v
60 seg

= 166,67
seg
360 grados 1 min

Por ltimo aadiremos un ltimo bloque cuyo cometido ser leer la velocidad actual de eje. Simplemente
para tareas de monitorizacin. El bloque a utilizar es el MC_ReadActualVelocity y le daremos como nombre
MON_EjeControlado, activaremos la entrada Enable siempre a TRUE y especificaremos EjeControlado
como eje sobre el que se desea leer la velocidad. Finalmente crearemos una variable de salida de nombre
VelocidadActual y de tipo REAL.

Motion Pro: Conceptos Bsicos

pgina 74/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7.4.- Compilacin y Transmisin programa.


Si todo se ha realizado correctamente podemos proceder a enviar el programa. Para el envo de programa
se ha de haber declarado previamente de que manera se establecer comunicacin con el Lexium Controller
(ver captulo 3).
Vamos al men superior En Lnea y seleccionamos Inicio de sesin. Automticamente el programa se
compilar y enviar. Si en el proceso de compilacin se detecta algn error el envo ser cancelado.

Motion Pro: Conceptos Bsicos

pgina 75/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Una vez enviado el programa ste debe ejecutarse, para ello hemos de seleccionar la orden Inicio del
men superior En Lnea o bien pulsar la tecla F5. Con ello el programa que tengamos escrito pasar a
ejecutarse.

Motion Pro: Conceptos Bsicos

pgina 76/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7.5.- Resumen de conceptos y consejos


Teclas rpidas:
Con el nombre del bloque seleccionado (hacer un nico clic sobre l) pulsar F1 para
obtener ayuda (una descripcin del bloque) o bien F2 para desplegar un listado de los
posible bloques existentes.
Si situamos el cursor sobre una entrada o salida de un bloque y no lo movemos durante un rato aparecer
una pequea descripcin de dicha entrada o salida indicndonos el tipo de variable que se acepta (INT,
REAL, BOOL, Etc) y las unidades en que trabaja dicha entrada (ms, s, u/s, u/s2, etc)
Entorno en Ingls
CTRL+B
CTRL+I
CTRL+U

Entorno en Castellano
CTRL+B
CTRL+E
CTRL+A

: Aadir Bloque
: Aadir Constante o Variable de Entrada
: Aadir Variable de Salida

Estando con el programa en RUN podemos modificar el valor de las variables haciendo doble clic sobre ellas
e introduciendo el nuevo valor. Este cambio no tendr validez hasta que pulsemos CTRL+F7 de modo que
es posible modificar el valor de 1 o ms variables de forma simultnea.
Conceptos:
La velocidad siempre se expresa en Unidades / Segundo
2
Las aceleraciones y deceleraciones siempre se expresan en Unidades / Segundo
Por lo general los bloques que disponen de una entrada de activacin del tipo ENABLE responden a seales
de nivel mientras que las que disponen de una entrada de activacin del tipo EXECUTE responden a
seales de flanco de subida.

Motion Pro: Conceptos Bsicos

pgina 77/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

8.- El CNC y la Interpolacin

Motion Pro pone a disposicin del usuario una serie de herramientas para facilitar la creacin de formas
bidimensionales sobre el plano XY bien mediante el uso directo de cdigos G bien bajo un cmodo entorno
grfico donde es posible dibujar, como si de un programa de CAD se tratara, la forma deseada.
Aunque es posible controlar hasta 8 ejes (X, Y, Z, P, Q, U, V, W) nicamente dos de ellos pueden realizar
una interpolacin bidimensional. As, si se programa una interpolacin lineal, circular, parablica, elptica o
tipo spline, el resto de ejes slo pueden realizar movimientos lineales independientes (acercar herramienta
en Z, girar torno, girar cargador herramientas, etc)
El lenguaje utilizado es compatible con el estndar DIN66025 si bien nicamente se han incorporado algunas
de las instrucciones preparatorias.

8.1.- Estructura de un programa CNC


Un programa CNC bajo entorno Motion Pro se constituye por una serie de sentencias (lneas de programa)
cada una de las cuales se forma mediante el uso de una serie de instrucciones.
La primera sentencia debe empezar obligatoriamente por la instruccin %. Este signo indica inicio de
programa y puede o no estar seguido por el nombre del programa. Si se aade un nombre de programa este
debe encontrarse separado de la instruccin % por un espacio o tabulacin.
A partir de la primera sentencia se dispondrn lnea a lnea las sentencias que compondrn el programa
CNC compuestas a su vez por una serie de instrucciones. Las instrucciones se encuentran formadas por
una letra (identificador de instruccin) seguida de un nmero (ej. G01). No importa si se usan maysculas o
minsculas o si se aaden ms o menos ceros entre el nmero y el identificador de la instruccin (G01=g1).
La primera instruccin de cada sentencia debera ser el nmero de lnea (N<nmero>), por ejemplo N01, y
aunque a efectos internos no se usa se sugiere su empleo por razones de compatibilidad.
Las diferentes instrucciones de cada sentencia deben encontrarse separadas por un espacio o por un
tabulador e internamente se ejecutan de izquierda a derecha.
Cada sentencia nicamente puede contener una instruccin de posicionado situado inmediatamente
despus de la instruccin de nmero de lnea. Si no se introduce una instruccin de posicionado en alguna
sentencia automticamente se aadir la de la anterior sentencia.
Cada instruccin de posicionado puede ser vista como un tramo de la trayectoria (lnea, arco, ). Los
parmetros de velocidad o rampas se relacionan con los tramos interpolados y no con los eje que forman
dicha interpolacin: Si imaginamos el desplazamiento de un punto a otro como un tringulo rectngulo
siendo los desplazamientos en X e Y los catetos y la hipotenusa el tramo resultante la velocidad o rampas
sern las del movimiento combinado de ambos ejes X e Y, es decir, en la hipotenusa. La velocidad durante
la transicin de dos tramos adyacentes se determina por las siguientes reglas:

Uno de los tramos es un posicionamiento (G0x) y el otro no: Velocidad de


transicin=0
El ngulo entre las tangentes de los dos objetos en la transicin es mayor que la
tolerancia del ngulo: Velocidad de transicin=0
En cualquier otro caso: La velocidad de transicin es la menor de las velocidades
de los dos tramos involucrados.

Bsicamente una instruccin de posicionado ejecuta una interpolacin desde la posicin destino del anterior
posicionado hasta la posicin destino de la actual instruccin de posicionado. La primera instruccin de
posicionado tiene lugar desde la posicin especificada como origen (en el CNC-Editor). Si la posicin no ha
sido definida se empezar desde la posicin X=0, Y=0, Z=0. Es posible establecer la posicin mediante la
instruccin G92 tanto al principio como a mitad de programa CNC.

Motion Pro: Conceptos Bsicos

pgina 78/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

8.2.- Identificadores

Como se ha comentado en el captulo precedente existen una serie de identificadores utilizados para
componer una instruccin. A continuacin se listan los identificadores compatibles con Motion Pro:
ID
D
E
F
G
H
I
J
K
L

M
N
O

P
Q
R
S
U
V
W
X
Y
Z

Descripcin
Radio herramienta para instrucciones de correccin de herramienta (G40-G42) o
Suavizado de trayectoria (G50/G51) o
Valor de la variable a modificar (G36/G37).
Mxima Aceleracin (>0)/ Deceleracin (<0) trayectoria en unidades/seg2
Velocidad trayectoria en unidades/seg
Instruccin Preparatoria (ver siguiente tabla)
Activar Switch Point (>0), Desactivar Switch Point (<0)
Coordenada X del centro de un crculo o elipse (G02/G03/G08/G09) o
Coordenada X de una parbola, tangente, interseccin, punto
Coordenada Y del centro de un crculo o elipse (G02/G03/G08/G09) o
Coordenada Y de una parbola, tangente, interseccin, punto
Direccin del trazado de una elipse en sentido matemtico (0 O, 90 N, ) o
Condicin de salto (G20) o
Valor del parmetro dT1 (funciones M)
Posicin absoluta activacin Switch Point (ver identificador H) medida desde la posicin de inicio
(>0) o final del tramo (<0) o
Condicin de salto (G20) o
Valor del parmetro dT2 (funciones M)
Funcin
Nmero de secuencia.
Proporcin de trayectoria recorrida para activacin Switch Point (ver identificador H) de 0 a 1
(nmero real) o
Variable a modificar (G36/G37)
Estructura datos para funciones M
Posicin destino del eje adicional P
Posicin destino del eje adicional Q
Radio (G02/G03) alternativamente a I, J o relacin longitud eje menor / eje mayor (G08/G09)
Activar (>0) o Desactivar (<0) rampas en S
3: Eje Z, 7: Eje P, 8: Eje Q, 9 Eje U, 10: Eje V, 11: Eje W
Posicin destino del eje adicional U
Posicin destino del eje adicional V
Posicin destino del eje adicional W
Coordenada X de la posicin destino
Coordenada Y de la posicin destino
Posicin destino del eje adicional Z

Motion Pro: Conceptos Bsicos

pgina 79/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.3.- Instrucciones preparatorias G

No todas las instrucciones preparatorias de la norma DIN66025 se encuentran implementadas y algunas de


ellas son especficas para la Lexium Controller. A continuacin se listan las instrucciones preparatorias
disponibles (las instrucciones en negrita son estndar):
Instruccin

Descripcin

G00

Movimiento de posicionado rpido utilizado para mover los ejes rpidamente entre cortes,
cambios de herramienta, etc. Debe levantarse la herramienta antes de ejecutar un
movimiento de este tipo.

G01

Interpolacin Lineal. Se usa para eliminar material mediante el movimiento de los ejes en
direcciones rectas a lo largo o a travs del material.

G02

Interpolacin Circular en sentido horario.


La descripcin de una interpolacin circular puede realizarse de dos formas: Especificando
el radio o bien el centro.

Arco definido por su radio

Arco definido por su centro


(valores incrementales)

N10 G00 X20 Y20 F50


N40 G01 X50 Y20 H4
N50 G02 X35 Y05 R15
N60 G01 X20 Y05
N70 G01 X20 Y20
N80 G00 X0 Y0

N10 G00 X20 Y20 F50


N40 G01 X50 Y20 H4
N50 G02 X35 Y05 I-15 J0
N60 G01 X20 Y05
N70 G01 X20 Y20
N80 G00 X0 Y0

NOTA: No es posible definir por radio un arco de ngulo igual o superior a 180 ya que al
realizar una definicin por radio siempre son posibles dos caminos (uno corto y otro largo).
El sistema siempre coger el arco ms corto.
G03

Interpolacin Circular en sentido anti-horario.

Para ms detalles ver descripcin instruccin G02


G05

Punto intermedio de un tramo Spline (los extremos correspondern con la posicin final del
anterior tramo y el inicial del siguiente).

Motion Pro: Conceptos Bsicos

pgina 80/180

www.infoPLC.net

Knowledge Base

G06

Motion Pro: Conceptos Bsicos

Interpolacin parablica.
Para describir una parbola son necesarios las coordenadas del punto final (X/Y) as como
las coordenadas del punto mximo de la parbola (I/J)

N0 G00 X20 Y20 F60 E600 E-600


N10 G01 Y40
N20 G06 X70 Y40 I60 J60

G08

Interpolacin elptica en sentido horario.


Para describir una elipse son necesarios las coordenadas del punto final (X/Y), el centro
(I/J), el ngulo del eje principal de la elipse (K) y el ratio entre el eje principal y el (R).

N10 G00 X100 Y100


N15 G98
N20 G08 X200 Y100 I150 J100 K45 R0.5

G09

Interpolacin elptica en sentido anti-horario.

G20

Efecta un salto condicional a la lnea L si K es distinto de cero. Ver siguiente seccin de


programa y su descripcin para entender el concepto
N1000 G36 O$contador$
N1010 G1 X100 F100 E100 E-100
N1020 G1 X0
N1030 G37 O$contador$ D-1
N1040 G20 L1010 K$contador$

G36

Contador:=5;
Desplazamiento a cota X=100
Desplazamiento a cota X=0
Contador:=Contador-1;
Si Contador es distinto de 0 salto a lnea 1010

Permite modificar el valor de variables globales. Por ejemplo, si deseamos ejecutar la


instruccin cAlto:=35 desde programa CNC deberamos insertar una sentencia en el
programa que rece as:
N010 G36 O$cAlto$ D35

G37

Permite incrementar o decrementar el valor de variables globales. Por ejemplo, si


deseamos ejecutar la instruccin cAlto:=cAlto-10 desde programa CNC deberamos
insertar una sentencia en el programa que rece as:
N010 G37 O$cAlto$ D-10

Motion Pro: Conceptos Bsicos

pgina 81/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

G40

Cancela cualquier compensacin de herramienta previa (ver G41 / G42).

G41

Aplicacin una compensacin debida al grosor de la herramienta a la izquierda del sentido


de corte. Esta caracterstica permite que la superficie terminada de la pieza de trabajo sea
el camino de la herramienta programado, y la herramienta ser automticamente
desplazada a la izquierda de este camino por una distancia igual a su radio.

Sin correccin

Aplicando Correccin herramienta


con radio 5 unidades (G41 D05)
hacia la izquierda del sentido de corte

NOTA: Ver funcin SMC_ToolCorr


G42

Aplicacin una compensacin debida al grosor de la herramienta a la derecha del sentido


de corte. Esta caracterstica permite que la superficie terminada de la pieza de trabajo sea
el camino de la herramienta programado, y la herramienta ser automticamente
desplazada a la derecha de este camino por una distancia igual a su radio.

Sin Correccin

Aplicando Correccin herramienta


con radio 5 unidades (G42 D05)
hacia la derecha del sentido de corte.

NOTA: Ver funcin SMC_ToolCorr

Motion Pro: Conceptos Bsicos

pgina 82/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

G50

Finaliza las funciones suavizado / redondeado

G51

Esta funcin permite activar el suavizado de los ngulos de una trayectoria. Esto puede
ser til en aquellas aplicaciones donde la exactitud de la trayectoria no es tan importante
como la velocidad a la que debe seguirse ya que para seguir un camino anguloso a veces
es preciso que uno de los ejes deba pasar por velocidad 0 entre un tramo de trayectoria y
otro. Por ello la instruccin G51 debe ir unida a una instruccin D que especifique el radio
de suavizacin desde el punto de interseccin de los dos tramos que crean el ngulo.

Para este propsito se traza un arco de radio determinado tomando como centro el punto de unin
de los dos tramos que forman el ngulo y se aade un spline.

Un ejemplo de programa podra ser el siguiente:


N0 G51 D10
N10 G01 X50 Y0 F50 E30 E-30
N20 G01 X0 Y10
N30 G01 X0 Y0
N40 G50

NOTA: Ver funcin SMC_SmoothPath


G52

Esta funcin permite activar el redondeado de los ngulos de una trayectoria. La filosofa
es prcticamente idntica a la de la funcin G51 sin embargo con la funcin G52 la
suavizacin tiene lugar no con una curva tipo spline sino con arcos de crculo.

Trayectoria Original
con tramos en ngulo.

Trayectoria suavizada
mediante splines (ver
funcin G51)

Trayectoria suavizada
mediante arcos.

Es importante observar como a diferencia del suavizado a base de splines el basado en


arcos slo toma, como mximo, el 50% del tramo involucrado. En el ejemplo se ha
redondeado utilizando la funcin N10 G52 D25 pero cada lado mide 40 por tanto el primero
de ellos (izquierdo) slo puede coger 20 y no 25 como radio de curvatura. Como se ha
cogido 20 el siguiente lado (superior) slo dispone de una parte recta de 20 por lo que se
coge la mitad, 10, como radio de curvatura, eso deja al lado derecho con 30 como longitud
efectiva por lo que el tercer lado redondeado utilizar un radio de 15.
NOTA: Ver funcin SMC_RoundPath

Motion Pro: Conceptos Bsicos

pgina 83/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

G60

Fin de la funcin impedir bucles.

G61

Esta funcin permite activar el filtrado de la trayectoria de forma que no pueden procesarse
aquellas en las que el camino puede formar un bucle bien por un mal diseo bien por el
radio de la herramienta.

Trayectoria sin activar el


filtrado de bucles y con
correccin de herramienta
de 2 unidades

Trayectoria sin activar el


filtrado de bucles y con
correccin de herramienta
de 5 unidades

Trayectoria con el
filtrado de bucle
activado y con correccin
de herramienta de 5
unidades.

Observar como en la figura de en medio se produce un bucle debido a que el radio de la


herramienta obliga a pasar por partes que no deben ser tratadas. En la figura de la
derecha, con el filtrado de bucles activado, se ve como se elimina la posibilidad de que la
herramienta trabaje en zonas de la pieza no permitidas (a pesar de ello la pieza tampoco
quedar bien porque no se cortar como se dise pero siempre se puede utilizar una
herramienta de menor radio para acabarla correctamente sin tener que tirarla directamente)
NOTA: Ver funcin SMC_AvoidLoop
G90

Se inicia la interpretacin de coordenadas para los ejes X/Y/Z/P-W como valores absolutos.

G91

Se inicia la interpretacin de coordenadas para los ejes X/Y/Z/P-W como valores relativos.

G92

Cambia la posicin actual por la introducida sin desplazar la herramienta. Se utiliza para
cambios en el punto de referencia.

G98

Se inicia la interpretacin de las coordenadas I/J como valores absolutos. Por ejemplo para
el ejemplo descrito en la descripcin de la instruccin G02 podemos definir las coordenadas
referentes al centro del arco como absolutas del siguiente modo:
Absoluto
N10 G00 X20 Y20 F50
N40 G01 X50 Y20 H4
N45 G98
N50 G02 X35 Y05 I35 J20
N60 G01 X20 Y05
N70 G01 X20 Y20
N70 G00 X0 Y0
N80 M30

Motion Pro: Conceptos Bsicos

pgina 84/180

Knowledge Base

G99

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Se inicia la interpretacin de las coordenadas I/J como valores relativos al punto actual
(configuracin por defecto). Por ejemplo para el ejemplo descrito en la descripcin de la
instruccin G02 podemos definir las coordenadas referentes al centro del arco como
relativas del siguiente modo:
Incremental
N10 G00 X20 Y20 F50
N40 G01 X50 Y20 H4
N45 G99
N50 G02 X35 Y05 I-15 J0
N60 G01 X20 Y05
N70 G01 X20 Y20
N70 G00 X0 Y0
N80 M30

Motion Pro: Conceptos Bsicos

pgina 85/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.4.- Funciones M

Las funciones son, por decirlo de algn modo, interrupciones al programa CNC para hacer algo. Existe una
ligera normativa que hace que cierto nmero de estas funciones sean estndar, es decir, que todo fabricante
de CNC utiliza las mismas para realizar lo mismo, sin embargo hay un gran nmero de ellas que dependen
del fabricante. En nuestro caso son totalmente configurables pues no hay ninguna definicin. El usuario
deber programar que es lo que quiere hacer con cada una de ellas.
A ttulo instructivo se listan algunas de las funciones M estndar utilizadas por un gran nmero de
fabricantes:
M00
M01
M02/M30
M03/M04/M05
M06
M19
M40-M46

Parar Programa
Paro Opcional
Fin de Programa
Control del eje de giro del soporte de la pieza en un torno (cw/ccw/stop)
Cambio de herramienta (M-code depends on PLC)
Orientacin eje de giro
Ratio reductor eje de giro

El concepto que hay que tener claro es que nicamente es posible activar una funcin M a la vez, no es
posible activar dos funciones M de forma simultnea. El programa CNC en su flujo de funcionamiento llegar
a una determinada sentencia donde se activar una marca y en ese punto el programa quedar totalmente
detenido hasta que se le indique que la marca ha sido tratada adecuadamente.
En una misma sentencia no pueden coexistir cdigos G y funciones M. Las funciones M deben aadirse en
una sentencia aparte.
Si se desean utilizar las marcas se puede seguir el siguiente proceso:
1. Se crea un programa CNC que incluya una marca.

Una Marca determinada.

Marca especfica de fin de programa.

2. La marca quedar reflejada de forma grfica mediante un punto sobre el trazado:


Marca M08

Marca M30

Motion Pro: Conceptos Bsicos

pgina 86/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3. Ya se puede arrancar el programa, cuando se ejecute la sentencia N35 M08 el trazado quedar
detenido a la espera que se realice la tarea asignada a la marca M08. El bloque de funciones
SMC_Interpolator (o similar) indicar 8 en su salida wM y esto servir para ejecutar lo que tenga que
ejecutarse. Cuando haya finalizado la operativa asignada a M08 se deber activar la entrada
bAcknM para que el programa CNC pueda proseguir.

NOTA: La primera lnea de un programa CNC no puede ser una marca

Motion Pro: Conceptos Bsicos

pgina 87/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.5.- Puntos H o Switch Points

A diferencia de las funciones M que detenan la ejecucin del programa CNC los puntos H o Switch Points
no detienen el programa sino que se activan o desactivan al llegar a una cota determinada.
Disponemos de un total de 32 Switch Points que no dejan de ser los bits de la palabra que asignemos. Es
posible tener ms de uno o incluso todos activados.
Se pueden activar de forma proporcional a la distancia recorrida. Veamos el siguiente ejemplo:
N10 G00 X20 Y20 F10 E50 E-50
N20 G01 X20 Y120
N30 G01 X70 Y120
N40 G01 X70 Y20 H1 O0.25
N50 G01 X20
N60 G00 X0 Y0

En el ejemplo anterior se activa el Switch Point 1 (H1) tras recorrer el 25% del trayecto (70,120) - (70,20). Pero
tambin podemos activar el Switch Points del siguiente modo:
N10 G00 X20 Y20 F10 E50 E-50
N20 G01 X20 Y120
N30 G01 X70 Y120
N40 G01 X70 Y20 H-2 L10
N50 G01 X20
N60 G00 X0 Y0

N10 G00 X20 Y20 F10 E50 E-50


N20 G01 X20 Y120
N30 G01 X70 Y120
N40 G01 X70 Y20 H-2 L-10
N50 G01 X20
N60 G00 X0 Y0

En la seccin de programa izquierdo se desactiva el Switch Point 2 (H-2) tras recorrer 10 unidades del trayecto
(70,120) - (70,20) mientras que en la seccin derecha lo hace cuando faltan 10 unidades para finalizar el mismo
trayecto ya que se ha especificado como cota final un valor negativo (L-10).

En cualquier de los casos se indica grficamente la inclusin de cualquier Switch Point mediante un punto en
verde (no se distingue ni el nmero ni si se activa o desactiva dicho Switch Point).

Activacin/Desactivacin de
un Switch Point

La palabra que contiene los diferentes bits correspondientes a los 32 Switch Points puede obtenerse del
bloque SMC_Interpolator (o similar) por la salida dwSwitches.

Motion Pro: Conceptos Bsicos

pgina 88/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.6.- Elementos de Programacin


8.6.1.- Libreras Necesarias
Para trabajar con las caractersticas CNC que ofrece Motion Pro es necesario el uso de un par de libreras
que aaden al entorno de programacin una serie de bloques de funciones vitales para la ejecucin de
programas CNC.
Las libreras de CNC mnimas para poder ejecutar en la prctica un programa CNC son las siguientes:

SM_CNC_V1940.lib
SM_Trafo_V1940.lib

Las libreras pueden encontrarse en la carpeta:


C:\Schneider Electric\Motion Control\CoDeSys V2.3\Targets\Schneider Electric\Shared Files\Library\Motion

Estas libreras incluyen gran cantidad de bloques de funciones relativos a funciones CNC pero slo se
describirn los ms importantes.
NOTA: Es tambin imprescindible, para la mayora de opciones explicadas en este captulo, que el firmware
de la Lexium Controller sea el 1.1IE02_B2 o superior o de lo contrario funciones como la del cambio al vuelo
de las dimensiones de una trayectoria no funcionarn.

8.6.2.- El SMC_Interpolator

Este es el bloque de funciones ms importante ya que se encarga de ejecutar un programa CNC extrayendo
de l la referencia a aplicar a cada eje, gestiona otros elementos como Marcas o Switch Points, nos da
informacin acerca de que lnea del programa CNC se encuentra ejecutndose, permite pausar el programa
CNC de varias formas, etc

Motion Pro: Conceptos Bsicos

pgina 89/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Entradas
bExecute:

Evidentemente es la entrada que pone en funcionamiento el bloque, un flanco de


subida es suficiente.

poqDataIn:

Esta entrada sirve para indicarle al bloque que programa CNC deseamos ejecutar.
El programa CNC a ejecutar no puede introducirse tal como se redacta o disea en
el entorno a tal efecto (lista de cdigos ISO) sino que debe transformarse
previamente a una estructura denominada Outqueue. Hay varias formas de hacerlo:
se puede indicar al compilador que lo haga automticamente o bien podemos
hacerlo por programa va bloque de funciones SMC_NCDecoder. De cualquier
modo en esta entrada se ha de especificar el puntero hacia dicha estructura
Outqueue generada.

bSlow_Stop:

Esta es una entrada de pausa externa con rampas. Se toman las rampas del tramo
que se encuentre ejecutando en ese momento. El programa continua su ejecucin
tan pronto esta entrada pasa a FALSE.

bEmergency_Stop:

Parecida a la entrada anterior tambin es una entrada de pausa pero sin rampas. El
programa continua su ejecucin tan pronto esta entrada pasa a FALSE.

dOverride:

Permite modificar ONLINE la velocidad de una trayectoria. Por defecto el valor de


esta entrada es 1 pero si por ejemplo se cambia a 0.5 o a 2.0 mientras los ejes
interpolados se encuentran ejecutando una trayectoria estos modificarn
inmediatamente su velocidad a la mitad o al doble de la programada.

dwIpoTime:

Sirve para indicarle al bloque cada cuanto ha de calcular y entregar una nueva
referencia de posicin a los drives remotos. Se suele indicar el mismo tiempo que se
indic al definir el tiempo de sincronizacin del AxisGroup y se recomienda introducir
este valor mediante precisamente la variable que contiene ese informacin en lugar
de hacerlo numricamente (por si posteriormente modificamos un valor y nos
olvidamos del otro). Utilizar la variable AxisGroup.dwCycle siendo AxisGroup el
nombre del grupo de ejes utilizado.

bAbort:

Aborta la ejecucin del programa CNC en ejecucin est donde est. Esta entrada
podra utilizarse a posteriori de la entrada bEmergency_stop para abortar la
ejecucin de un programa CNC despus de detener de forma controlada todos los
ejes involucrados.

bACKnM:

Permite reanudar la ejecucin de un programa CNC que se encuentra detenido por


encontrarse ejecutando una Marca. Es posible saber si el programa se encuentra
ejecutando una Marca viendo si la salida wM del bloque es diferente de 0.

Motion Pro: Conceptos Bsicos

pgina 90/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

Salidas
bDone:

Nos indica que el bloque se encuentra en ejecucin de forma adecuada, sin errores.

bError:

Nos indica que el bloque se encuentra en ejecucin pero en error.

wErrorID:

Nos indica el nmero de error caso que se haya producido alguno.

piSetPosition:

Contiene la referencia de posicin deseada para cada eje.

iStatus:

Nos indica en que estado se encuentra la ejecucin del programa CNC. En la


siguiente tabla pueden verse los estados posibles as como el valor numrico de
cada estado:
IPO_UNKNOWN
IPO_INIT
IPO_ACCEL
IPO_CONSTANT
IPO_DECEL
IPO_FINISHED
IPO_WAIT

bWorking:

0 Estado interno que podra darse si no se refresca el bloque


SMC_Interpolator adecuadamente.
1 Inicializando. El buffer interno del bloque an no se ha
llenado completamente.
2 Acelerando.
3 Desplazamiento a velocidad constante.
4 Decelerando.
5 Finalizada la ejecucin del programa CNC. No se ejecutar
ningn otro a menos que se reinicie la entrada bExecute.
6 A la espera debido a las siguientes situaciones:
Emergency_Stop = TRUE
Slow_Stop = TRUE y Velocidad = 0
Wait_At_Next_Stop = TRUE y Velocidad = 0

Esta salida es TRUE tan pronto se ha iniciado un movimiento pero an no ha


acabado (corresponde con los estados IPO_ACCEL, IPO_CONSTANT, IPO_DECEL
y IPO_WAIT) en el resto de casos es FALSE.

iActObjectSourceNo: Muestra la lnea de programa CNC que se encuentra en ese momento


ejecutndose. Si bWorking se encuentra a FALSE (porque el interpolador no se
encuentra trabajando) esta salida vale -1.
dwSwitches:

Contiene el estado de los 32 posibles Switch Points. Esta salida proporciona una
variable de 32 bits (double Word) y cada bit indica el estado de cada posible Switch
Point.

wM:

Indica el nmero de Marca activa. Si existe alguna marca activa el programa


permanecer detenido hasta que se reconozca dicha Marca activando la entrada
bAcknM en cuyo momento la salida wM volver a ser 0 y el programa proseguir su
ejecucin.

Motion Pro: Conceptos Bsicos

pgina 91/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

8.6.3.- El SMC_Trafo_Gantry2

Este bloque transforma la estructura de consignas ofrecida por el bloque SMC_Interpolator a referencias
individuales para cada eje.

No tiene mayor misterio, debe interconectarse con el bloque SMC_Interpolator del siguiente modo:

Motion Pro: Conceptos Bsicos

pgina 92/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.6.4.- El SMC_ControlAxisByPos

Este bloque es el encargado de enviar las coordenadas recibidas desde el bloque SMC_Trafo_Gantry2 hacia
cada uno de los ejes. Adems se dedica a gestionar a tiempo real cualquier discrepancia entre las
posiciones y/o velocidades deseadas y las reales y, caso de existir, lo indica mediante la activacin de la
salida digital correspondiente y, si as lo deseamos, trata de ajustarse segn ciertos parmetros.

Entradas
iStatus:

Esta entrada debe encontrarse unida con la salida homloga del bloque
SMC_Interpolator.

bEnable:

Habilitacin del bloque. Debe encontrarse unida con la salida bWorking del bloque
SMC_Interpolator de modo que cuando ste se encuentre trabajando el bloque
SMC_ControlAxisByPos tambin lo est.

bAvoidGaps:

Este bloque de funciones tambin ofrece la posibilidad de ir controlando cualquier


desviacin entre la posicin y/o velocidad real del eje y la que se supone debera
tener (GAP) y puede proceder a corregirla. Al activar esta entrada se ir modificando
la consigna de posicin enviada desde SMC_Interpolator sumndole o restndole el
error detectado. La aplicacin de esta correccin tendr lugar con la velocidad y
rampas especificadas por las entradas fGapVelocity, fGapAcceleration y
fGapDeceleration. Mientras se corrige la consigna (bStopIpo =TRUE) es necesario
pausar el bloque SMC_Interpolator, activando la entrada bEmergency_Stop.

Movimiento
Original

Se aade un GAP al
movimiento Original

Se resta un GAP del


movimiento Original

fSetPosition:

Entrada principal de referencia. Esta entrada recibe la consigna de referencia


proporcionada por el bloque SMC_Trafo_Gantry2.

fGapVelocity:

Velocidad del GAP (ver bAvoidGaps) cuanto mayor ms rpida ser la correccin.

fGapAcceleration:

Rampa de aceleracin del GAP (ver bAvoidGap) cuanto mayor sea ms rpido se
alcanzar la velocidad nominal de GAP y por tanto ms rpida ser la correccin.

fGapDeceleration:

Rampa de deceleracin del GAP (ver bAvoidGap) cuanto mayor sea ms rpido
acabar la imposicin del GAP y por tanto ms rpida ser la correccin.

Axis:

Eje a controlar.

Motion Pro: Conceptos Bsicos

pgina 93/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Salidas
bCommandAborted:

Sucede cuando desde otra parte del programa se ejecuta una orden de movimiento
que anula la presente.

bError:

Se activa cuando por lo que sea el bloque detecta un fallo bien interno o bien de
posicin.

iErrorID:

En caso de existir un error esta salida nos indica el cdigo de error.

bStopIpo:

Se activa cuando el bloque intenta corregir cualquier desviacin existente entre la


consigna de posicin/velocidad deseadas y las reales del eje. Evidentemente tiene
que encontrarse activada la entrada bAvoidGaps. Se recomienda llevar esta salida a
la entrada bEmergency_Stop del bloque SMC_Interpolator para detener la emisin
de consignas desde dicho bloque hasta que no haya acabado la correccin del GAP
por parte del bloque SMC_ControlAxisByPos (bStopIpo=FALSE).

Se necesita un bloque del tipo SMC_ControlAxisByPos por cada eje a controlar y el esquema bsico de
interconexin con los dos bloques anteriores es el siguiente:

En este ejemplo vemos una estructura prcticamente idntica a la que emplearamos en la prctica. Se
enva un puntero al programa CNC mediante el uso de la instruccin ADR que nos devuelve la direccin
(puntero) donde se encuentra ubicado el programa (en realidad la estructura en formato Outqueue que lo
contiene) y el ciclo del Motion Bus hacia el bloque SMC_Interpolator. La consigna ofrecida por este bloque se
transforma en pares de consigna XY y se enva cada una a un bloque SMC_ControlAxisByPos gracias al
bloque SMC_Trafo_Gantry2. Los bloques SMC_ControlAxisByPos tienen activada la correccin de GAPs
aplicndose en dichas correcciones valores de velocidad y rampas elevados para minimizar el tiempo de la
correccin y mientras esta tiene lugar tiene lugar un paro rpido en la emisin de nuevos valores gracias a la
activacin de la entrada bEmergency_Stop cuando alguno de los ejes tiene activada la salida bStopIpo seal
de que se encuentra corrigiendo un GAP. Observar como los bloques SMC_ControlAxisByPos se habilitan
cuando la salida bWorking del bloque SMC_Interpolator se encuentra a TRUE

Motion Pro: Conceptos Bsicos

pgina 94/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.7.- Creacin de Trayectorias


8.7.1.- Herramientas de Diseo
El entorno de programacin Motion Pro dispone de varias alternativas de cada a desarrollar un programa
CNC:

Programando a mano el programa CNC.


Dibujando la trayectoria deseada en el editor grfico disponible.
Dibujar la trayectoria deseada en un programa CAD e importarla posteriormente.

El primer paso sera por tanto la creacin de un programa que contenga la trayectoria que se desea efectuar
interpolando dos ejes. Toda esta operacin tiene lugar desde el editor de programas CNC al cual se puede
acceder de la siguiente forma:
1. Pulsar en pestaa Recursos
2. Hacer doble clic en opcin Lista de programas CNC
3. Tras esto aparecer el editor de programas CNC el cual tiene una apariencia similar a la mostrada por
la siguientes imagen:

Zona Programa CNC en


lenguaje ISO.

Zona Diseo Grfico


Trayectoria Herramienta

Motion Pro: Conceptos Bsicos

pgina 95/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

A continuacin crearemos un nuevo programa para ello seguiremos los siguientes pasos:
1. Seleccionaremos men superior Programa CNC
2. Escogeremos la opcin Nuevo Programa CNC

3. Mediante el cuadro de introduccin de texto que aparecer le daremos un nombre al nuevo


programa que deseamos crear:

Motion Pro: Conceptos Bsicos

pgina 96/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

4. Tras crear el nuevo programa el aspecto que adquirir el editor de programas CNC ser el siguiente:

Cabecera del programa


Nombre nuevo
programa

Entorno de diseo grfico

5. Ahora se ha de decidir de que forma crearemos la trayectoria XY deseada. Podemos crearla


mediante uso de instrucciones preparatorias o bien grficamente o una combinacin de ambos.
Nosotros lo haremos grficamente dado que es un mtodo ms rpido. Para ello necesitaremos
hacer uso de una serie de botones que nos ayudarn a introducir los nuevos comandos:
Renumerar
sentencias.

Permite ver como afecta


al perfil el comando G52

Instrucciones G
ms utilizadas

Permite ver como afecta


al perfil el comando G51

Centrar dibujo
en pantalla.

Permite ver como afecta al


perfil los comandos G41 y
G42 de correccin de
herramienta

Inhabilita aquellas lneas de


programa que empiecen con
el smbolo /

Ver puntos interpolacin


intermedios (dependen
del valor de F)

Permite ver como quedar


el perfil al eliminar los
bucles mediante el uso del
comando G61

Motion Pro: Conceptos Bsicos

pgina 97/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6. nicamente mediante el uso de comandos a travs de botones G1, G2 y G3 crearemos una figura
similar a la siguiente:

7. Observar como algunas lneas se muestran en color verde mientras que otras lo hacen en color
azul, los colores verde y azul muestran que tramos del recorrido se harn sin que la herramienta
tenga contacto con el material (G00) y que tramos se harn mecanizando (G01 / G02 / G03). El
programa resultante, que se va auto escribiendo mientras se van aadiendo tramos al diseo del
recorrido es el siguiente:
Sentencia

Descripcin

% Demo
N0 G00 Z100.000 F50

Instruccin Inicio Programa + Nombre Programa


Elevo herramienta hasta cota 100 y fijo velocidad a 50
unidades/seg. Como utilizo instruccin G00 este
movimiento se har sin mecanizar
Desplazo herramienta a cota X=40, Y=25 .
Desplazo herramienta a cota Z=2, es decir, a 2
unidades por encima de la superficie de mecanizado.
Como no he introducido ninguna instruccin se toma
la anterior G00.
Desplazo herramienta hasta una profundidad de 0.2
unidades y dado que estoy empleando la instruccin
G01 se inicia el mecanizado.
Mecanizo desde la cota actual Y=25 hasta la cota
Y=95.
Inicio crculo en sentido horario conectando la cota
final anterior X=40, Y=95 con la cota final X=45,
Y=100 y estableciendo que el crculo tendr un radio
de 5 unidades (no hay ms posibilidades, si se aade
un radio incorrecto el trazado no ser correcto). El
centro del crculo se encuentra a +5 de la ltima
posicin X conocida y a ms 0 de la ltima posicin Y
conocida, por eso I=5, J=0.
Desplazo eje X hasta cota X=135. La cota Y
permanece inalterada en su posicin Y=100
Otro cuarto de crculo en sentido horario. El centro
del crculo se encuentra a +0 de la ltima posicin X
conocida y a -5 de la ltima posicin Y conocida, por
eso I=0, J=-5.
Desplazamiento en Y hasta cota Y=85 manteniendo
constante la cota en X

N10 G00 X40.00 Y25.00


N20 Z2.0

N30 G01 Z-0.2


N40 Y95.000
N50 G02 X45.000 Y100.000 I5.000 J0.000

N60 G01 X135.000 Y100.000


N70 G02 X140.000 Y95.000 I0.000 J-5.000

N80 G01 X140.00 Y85.000

Motion Pro: Conceptos Bsicos

pgina 98/180

Knowledge Base

www.infoPLC.net

N90 G02 X135.000 Y80.000 I-5.000 J0.000

N100 G01 X95.000 Y80.000


N110 G03 X90.000 Y75.000 I0.000 J-5.000

N120 G01 X90.000 Y65.000


N130 G03 X95.000 Y60.000 I5.000 J0.000

N140 G01 X135.000 Y60.000


N150 G02 X140.000 Y55.000 I0.000 J-5.000

N160 G01 X140.000 Y40.000


N170 Y25.000
N180 G02 X135.000 Y20.000 I-5.000 J0.000

N190 G01 X45.000 Y20.000


N200 G02 X40.000 Y25.000 I-0.000 J5.000

N210 G00 Z2.0


N220 X105.000 Y40.000
N230 G01 Z-0.2
N240 G03 X105.000 Y40.000 I-15.000 J0.000

N250 G00 Z2.0


N260 M30

Motion Pro: Conceptos Bsicos

Otro cuarto de crculo en sentido horario. El centro


del crculo se encuentra a -5 de la ltima posicin X
conocida y a ms 0 de la ltima posicin Y conocida,
por eso I=-5, J=0.
Desplazamiento en X hasta cota X=95 sin mover la
cota en Y=80.
Cuarto de crculo en sentido anti-horario. El centro
del crculo se encuentra a +0 de la ltima posicin X
conocida y a -0 de la ltima posicin Y conocida, por
eso I=0, J=-5.
Desplazamiento en Y hasta cota Y=65 manteniendo
constante la cota en X=90.
Cuarto de crculo en sentido anti-horario. El centro
del crculo se encuentra a +5 de la ltima posicin X
conocida y a ms 0 de la ltima posicin Y conocida,
por eso I=5, J=0.
Desplazamiento en X hasta la cota X=135
manteniendo constante la cota en Y=60.
Cuarto de crculo en sentido horario. El centro del
crculo se encuentra a +0 de la ltima posicin X
conocida y a -5 de la ltima posicin Y conocida, por
eso I=0, J=-5.
Desplazamiento en Y hasta cota Y=40 manteniendo
constante la cota en X=140
Sigo desplazando en Y hasta la cota Y=25
manteniendo constante la X en X=140 (se utiliza
ltima instruccin de movimiento vlida G01)
Cuarto de crculo en sentido horario. El centro del
crculo se encuentra a -5 de la ltima posicin X
conocida y a +0 de la ltima posicin Y conocida, por
eso I=-5, J=0.
Desplazamiento en X hasta cota X=45 manteniendo
constante la cota en Y=20
Cuarto de crculo en sentido horario. El centro del
crculo se encuentra a -0 de la ltima posicin X
conocida y a +5 de la ltima posicin Y conocida, por
eso I=0, J=5.
Elevo herramienta 2 unidades por encima de la
superficie de contacto del material de forma rpida
(estoy empleando instruccin G00 en lugar de G01)
Dirijo herramienta a alta velocidad hacia punto inicio
mecanizado crculo central (un punto cualquiera de
su permetro)
Bajo herramienta hasta 0.2 unidades por debajo de la
superficie del material mecanizando ya que estoy
utilizando instruccin G01 y no G00
Realizo un crculo completo pues el punto final
corresponde con el punto de partida X=105, Y=40 de
radio 15 a la izquierda del punto de entrada de la
herramienta.
Subo herramienta a alta velocidad hasta cota Z=2.
Marca indicadora de fin de programa.

NOTA: Como se observa no existen botones para introducir el cdigo G00 por lo que la nica forma de
utilizar esta instruccin es crear todo el dibujo mediante la instruccin G01 y posteriormente editar a mano el
listado modificando aquellos cdigos que deseemos. Lo mismo ocurre con la precisin de las cotas: si
observamos que a mano alzada se ha cometido algn error podemos editar el listado del programa
ajustando las cotas a lo deseado.

Motion Pro: Conceptos Bsicos

pgina 99/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

8.7.2.- Herramientas informativas

Como herramientas informativas disponemos nicamente de una opcin que nos ofrece la siguiente
informacin:

Quizs los datos ms interesantes son, en primer lugar, la duracin del desplazamiento (el cual depende de
la velocidad de mecanizado, en este caso 50 unidades/seg ya que la primera lnea de programa indica: N0
G00 Z100.000 F50 y no hay ninguna contraorden posterior) que en este caso es de 21,22 segundos y la longitud total
del recorrido que en este caso es de 655.358 unidades. El resto de datos los introduce de hecho el usuario y son
meramente recordatorios.

Motion Pro: Conceptos Bsicos

pgina 100/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.7.3.- Herramientas edicin

Una vez disponemos del programa disponemos de una serie de herramientas que afectan a la totalidad de
este y que son:

Determinar Tamao Queue:

La Queue es una tabla que utiliza Motion Pro para la generacin de


coordenadas que posteriormente utilizan los diferentes FB de la aplicacin.
La tabla tiene un tamao predefinido por defecto pero es posible variar su
tamao (hacindolo ms pequeo para optimizar recursos o mayor si se
est creando una trayectoria compleja).

Motion Pro: Conceptos Bsicos

pgina 101/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Determinar Posicin Inicio:

Es posible desplazar el cero de mquina respecto al cero de la trayectoria


creada

Determinar Tolerancia de:


ngulo para parada

Este parmetro hace referencia a la ventana de parada orientada, es decir,


el error angular mximo tolerable para considerar que la herramienta ha
dejado de girar en un punto tal en el que es posible depositarla de nuevo en
su cargador y realizar un cambio de herramienta sin peligro.

Motion Pro: Conceptos Bsicos

pgina 102/180

Knowledge Base

Desplazar Programa:

Rotar Programa:

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Permite aadir un offset a toda la trayectoria con el fin de mover su punto de inicio
de mecanizado:

Permite girar la trayectoria rotndola desde su punto inicial

Motion Pro: Conceptos Bsicos

pgina 103/180

Knowledge Base

Extender Programa:

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Multiplica por un factor dado todas las coordenadas utilizadas en un programa.


Bsicamente es un mero escalado de la trayectoria creada.

NOTA: Aunque parezca que la figura de la derecha es igual a la de la izquierda en


realidad todo se encuentra a escalado a la mitad (observar como slo hay dos
cuadrados desde el origen de coordenadas hasta el punto de entrada a la figura
mientras que en la figura de la izquierda hay el doble)

Virar Programa:

Invierte el sentido de mecanizado de la trayectoria, en la trayectoria creada


inicialmente se mecaniza primero la parte exterior en sentido horario y finalmente se
mecaniza el crculo interno pero sin embargo, al realizar un virado de programa, el
sentido se invierte realizando primero el crculo y posteriormente la trayectoria
exterior pero en sentido antihorario.
Hay que prestar especial atencin al programa virado pues quizs se hayan virado
tambin, inadecuadamente, las marcas utilizadas.

Motion Pro: Conceptos Bsicos

pgina 104/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

8.7.4.- Herramientas importacin/exportacin

Por si el editor de programas CNC incluido en Motion Pro pudiera resultar limitado existe la posibilidad de
crear la trayectoria desde un software de terceros que facilite el trabajo en 3D como por ejemplo un Autocad
e importar el fichero (en formato DXF o TXT) a Motion Pro o bien exportar un programa CNC a formato TXT
para poder ser posteriormente ledo y/o editado mediante el uso de otros sofwares. Esta capacidad de
importacin/exportacin de programas CNC otorga a Motion Pro una gran flexibilidad y una gran portabilidad
ya que es posible la creacin de un programa determinado desde un software conocido por porte del cliente
final y llevarlo a mquina de una forma fcil y transparente (no es necesario modificar el programa interno).
Las diferentes opciones disponibles son las siguientes:

Leer Programa CNC de archivo


Permite cargar un programa externo en formato ASCII con extensin TXT. El programa debe ser vlido y
tras la carga se nos preguntar que nombre deseamos darle al nuevo programa CNC. Una vez dado el
nombre el programa cargado pasar a formar parte de la lista de programas disponibles.
Escribir Programa CNC en archivo
Permite exportar el programa CNC actualmente seleccionado (visualizado en pantalla) hacia un fichero en
formato ASCII con extensin TXT.

Motion Pro: Conceptos Bsicos

pgina 105/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Importar archivo DXF


Permite importar un programa CNC externo que se encuentra grabado en formato DXF (formato CAD ms
comn) transformndolo a lenguaje ISO automticamente.
Es posible que la importacin no sea perfecta si la fuente no rene una serie de requisitos como por ejemplo
trabajar con una nica capa u otros.
Escribir OutQueue en archivo
Escribe en un fichero con formato propio y extensin QUE la estructura de datos que posteriormente
utilizarn los diversos bloques de funciones de la aplicacin para generar el movimiento. Esta estructura de
datos se crea al compilar el programa siempre que tengamos activada la opcin apropiada en base al
programa CNC a ejecutar ya que los diferentes bloques de funciones que lanzaran el movimiento no son
capaces, por si mismos, de interpretar un programa CNC escrito en lenguaje ISO.

Este fichero no puede ser ledo posteriormente por el entorno Motion Pro pero se supone que su utilidad
reside en que puedan ser ledos mediante unos bloques de funciones especficos creados a tal fin de modo
que sea posible una utilizacin directa de dicha informacin desde el programa principal de la LMC. Este
ltimo punto, no obstante, no se ha confirmado an pues se desconoce de que forma y en que zona de
memoria debe escribirse este archivo hacia la LMC para que el programa de usuario sea capaz de trabajar
con l.

Motion Pro: Conceptos Bsicos

pgina 106/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.8.- Ejemplos de Programacin


8.8.1.- Trayectoria Fija

En este captulo crearemos un programa Motion que permita a dos ejes XY seguir la trayectoria descrita por
un programa CNC creado previamente. Se utilizar el mismo programa CNC ejemplo que se ha venido
utilizando en los captulos precedentes.
Lo primero que debera hacerse es comprobar que se encuentran cargadas las libreras necesarias para el
uso de los bloques de funciones relativos a la gestin de programas CNC:



SM_CNC_V1940.lib
SM_Trafo_V1940.lib

Las libreras pueden encontrarse en la carpeta:


C:\Schneider Electric\Motion Control\CoDeSys V2.3\Targets\Schneider Electric\Shared Files\Library\Motion

Crearemos a continuacin (si es que no lo hemos hecho ya) un programa CNC que ser el que seguirn los
dos ejes XY del proyecto Motion Pro. En el captulo 8.7.- Creacin de Trayectorias se explica al detalle
como crear el programa CNC que muestra la siguiente figura:

Motion Pro: Conceptos Bsicos

pgina 107/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

PRECAUCION : Hay que tener en cuenta que el bloque SMC_Interpolator no es capaz de reconocer el
programa CNC escrito por nosotros en cdigo ISO, lo nico que entiende son estructuras de datos bastante
complejas, del tipo SMC_GEOINFO, que bien podramos crear nosotros a mano (lo cual es extremadamente
laborioso y precisa de unos conocimientos muy altos) o indicarle a Motion Pro que lo haga por nosotros con
tan slo activar la opcin al compilar crear Outqueue accesible en el men superior Programa_CNC:

Motion Pro: Conceptos Bsicos

pgina 108/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Una vez el programa CNC, al que llamaremos Demo, ha sido creado deberemos crear un programa Motion
que permita que dos ejes XY lo sigan fielmente.

Vemos lo siguiente:
1. Con la variable Iniciar_CNC iniciamos la interpolacin.
2. Asignamos la direccin del programa Demo a la entrada poqDataIn del bloque FB_Interpolador.
3. Asignamos a la entrada dwIpoTime del bloque FB_Interpolador la base de tiempos del grupo de
ejes donde se encuentran declarados los ejes a utilizar (en este caso Eje_X y Eje_Y) para que el
clculo de coordenadas se sincronice adecuadamente.
4. Al activarse el bloque FB_Interpolador mediante la variable Iniciar_CNC ste trocear la ruta a
seguir por ambos ejes en segmentos ms pequeos los cuales ir proporcionando por la salida
piSetPosition. Para saber que el bloque FB_Interpolador se encuentra generando cotas la salida
bWorking se pondr a TRUE. Tenemos tambin la salida iStatus que ofrece informacin relativa
del estado de ejecucin del programa Demo y que luego necesitan otros bloques.
5. Se une la salida piSetPosition del bloque FB_Interpolador a la entrada del mismo nombre del
bloque FB_Trafo_XY con el fin de extraer las coordenadas individuales de cada eje.
6. Por ltimo se utilizan los bloques FB_Control_X y FB_Control_Y para iniciar el movimiento
cordinado de los ejes X e Y respectivamente segn la informacin recibida del bloque
FB_Trafo_XY. Y siempre y cuando el FB_Interpolador se encuentre trabajando y sin errores (ver
conexin de las salidas bWorking e iStatus del bloque FB_Interpolador con entradas bEnable e
iStatus de los bloques FB_Control_X y FB_Control_Y)

Motion Pro: Conceptos Bsicos

pgina 109/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Si ejecutamos este programa sin una mecnica de ejes coordenados X-Y no veremos gran cosa,
nicamente que los ejes se mueven. Disponemos de una herramienta que nos permite ver de una forma
algo ms clara cual ser el comportamiento de los ejes XY y si estos seguirn una trayectoria de movimiento
parecida al programa CNC creado.
Para hacer uso de esta herramienta se ha de incorporar un nuevo bloque al programa: El bloque
SMC_TrafoF_Gantry2 y las pantallas de visualizacin. El bloque mencionado es fcil de configurar, se
aade al programa principal, donde reside el resto de bloques relacionados con la ejecucin del programa
CNC y se indican los lmites de las coordenadas XY del programa CNC a ejecutar as como el nombre de los
dos ejes involucrados.

Motion Pro: Conceptos Bsicos

pgina 110/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Posteriormente vamos a las pantallas de visualizacin y creamos una nueva pgina con dos elementos: Un
rectngulo unido a la variable Run y que servir para dar marcha al sistema y un control que representa un
par de ejes coordenados:

Seleccionamos una visualizacin del tipo


SMC_VISU_Gantry2.

Como PlaceHolder del control


SMC_TrafoF_Gantry indicamos que queremos
vincularlo con el control del mismo tipo que se
encuentra en el programa Main y al que hemos
llamado FB_VisuTrafo.

Una vez realizados estos pasos, en la pantalla de visualizacin aparecer un control similar al siguiente

Esta representacin de ejes coordenados ir siguiendo los movimientos de los ejes X (horizontal) e Y
(vertical) dndonos la oportunidad de observar como se va siguiendo la trayectoria que hemos creado
mediante el programa CNC.

Motion Pro: Conceptos Bsicos

pgina 111/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.8.2.- Trayectoria Variable

Hasta ahora hemos visto como puede crearse un programa CNC utilizando las herramientas grficas
disponibles o bien mediante la programacin directa de cdigos ISO. Estos programas son fijos, es decir,
una vez creados las longitudes de sus segmentos as como otros parmetros importantes (velocidades o
rampas de aceleracin por ejemplo) no pueden modificarse.
Con el fin de poder modificar el valor de los diferentes parmetros que permiten definir cada uno de los
tramos de una trayectoria se propondr un sistema simple pero muy potente basado en un bloque de
funciones especficos.
Antes que nada hay que aclarar unos conceptos muy importantes:

Podremos nicamente modificar el valor de todos los parmetros que


consideremos importantes pero no el tipo de parmetro.
No ser posible modificar los valores en parmetros de programas que ya se
encuentren en ejecucin.

Aclarado esto vamos a crear un ejemplo muy sencillo:


Crearemos un programa CNC acorde al patrn de corte deseado, en este caso un cuadriltero:

Motion Pro: Conceptos Bsicos

pgina 112/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

Vemos que el programa es muy simple:


Sentencia

Descripcin

% comment
N0 G00 X20 Y20 F50

Instruccin Inicio Programa


Llevo herramienta hasta cota X=20, Y=20 a mxima velocidad (ya que he empleado la
instruccin G00).
Voy desplazando herramienta por su eje vertical hasta cota Y=120 a velocidad F50
(definida en lnea anterior)
Voy desplazando herramienta por su eje horizontal hasta cota X=70 a velocidad F50
(definida en primera lnea)
Voy desplazando herramienta por su eje vertical hasta cota Y=20 a velocidad F50
(definida en primera lnea).
Voy desplazando herramienta por su eje horizontal hasta cota X=20 a velocidad F50
(definida en primera lnea) y doy por concluida la puerta.
Vuelvo al punto inicial a alta velocidad (ya que utilizo el comando G00 en lugar del G01).

N10 G01 Y120


N20 G01 X70
N30 G01 Y20
N40 G01 X20
N50 G00 X0 Y0

Sin embargo este programa, tal como se ha diseado, nicamente sirve para cortar puertas de 50 unidades
de ancho y 100 de alto. Puede que nos interese cortar puertas con otras dimensiones, para ellos se ha de
editar a mano el programa. Esto lo haremos del siguiente modo:
Modificaremos el programa a mano dejndolo del siguiente modo
Sentencia

Descripcin

% comment
N0 G00 X20 Y20 F50

Instruccin Inicio Programa


Llevo herramienta hasta cota X=20, Y=20 a mxima velocidad (ya que he empleado la
instruccin G00).
Voy desplazando herramienta por su eje vertical hasta la cota indicada por la variable
cAlto a velocidad F50 (definida en lnea anterior)
Voy desplazando herramienta por su eje horizontal hasta la cota indicada por la variable
cAncho a velocidad F50 (definida en primera lnea)
Voy desplazando herramienta por su eje vertical hasta cota Y=20 a velocidad F50
(definida en primera lnea).
Voy desplazando herramienta por su eje horizontal hasta cota X=20 a velocidad F50
(definida en primera lnea) y doy por concluida la puerta.
Vuelvo al punto inicial a alta velocidad (ya que utilizo el comando G00 en lugar del G01).

N10 G01 Y$cAlto$


N20 G01 X$cAncho$
N30 G01 Y20
N40 G01 X20
N50 G00 X0 Y0

Observar como ahora el ancho y el alto de la puerta se definen por el valor de las variables cAncho y cAlto
y que para poder ser insertadas dentro del programa CNC es preciso que vayan encerradas entre sendos
signos $.

Motion Pro: Conceptos Bsicos

pgina 113/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Las variables cAncho y cAlto deben ser definidas como tipo REAL y con mbito global ya que van a ser
modificadas desde un programa externo al de movimiento.

Se recomienda inicializarlas a algn valor coherente de modo que el entorno grfico de diseo de programas
CNC siga mostrando la figura que se va a desear (sino con las dimensiones deseadas al menos si con la
forma deseada).

Motion Pro: Conceptos Bsicos

pgina 114/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

En este caso no vamos a decirle al compilador que transforme el programa por nosotros escrito en una
estructura SMC_GEOINFO sino que seleccionaremos la opcin al compilar crear variable de programa
ya que en este caso pasaremos directamente el listado de programa CNC a travs de un nuevo bloque
llamado SMC_NCDecoder que se encargar de crear una estructura SMC_GEOINFO que contemplar los
nuevos datos.

Como el nuevo bloque consume muchos recursos cuando transforma un programa CNC a una estructura
SMC_GEOINFO crearemos una nueva tarea llamada TareaCclica que llamar cada 8mseg al programa
Path, el cual contendr todo el cdigo relativo a la conversin. De esta forma no saturaremos el programa
cclico que se encuentra sincronizado a cada ciclo del Motion Bus.

Motion Pro: Conceptos Bsicos

pgina 115/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

El nuevo programa tendr el siguiente aspecto

Cada vez que el bloque FB_NCDecoder detecta un flanco de subida en su entrada bExecute coge el
programa al que hemos llamado Puerta y lo convierte en una estructura del tipo SMC_GEOINFO
almacenndolo en la variable Buffer.
La variable Buffer debera ser definida como una variable global del tipo adecuado del siguiente modo:
Buffer: ARRAY [0..30] OF SMC_GEOINFO;
Tras finalizar la conversion el puntero a dicha variable Buffer se envia a un segundo bloque llamado
FB_CheckVelocidades el cual se encarga de filtrar el programa traducido eliminando cualquier velocidad
que sobrepase a las especificadas como mximas en el entorno del Motion Pro evitando as
comportamientos anmalos. Al final se memoriza el puntero a la estructura Buffer en una nueva variable a
la que se ha llamado Puntero y que se ha definido como global del siguiente modo:
Puntero: POINTER TO SMC_Outqueue;
Se utiliza un bloque MOVE simplemente para evitar que el puntero se convierta en 0 cuando eliminamos la
orden Run_Decoder de la entrada tanto del bloque SMC_NCDecoder como del SMC_CheckVelocities.

Motion Pro: Conceptos Bsicos

pgina 116/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Ya tenemos pues los elementos necesarios para pasar al programa principal que ser del siguiente modo:

Como se ve es idntico al utilizado anteriormente lo nico que cambia es que esta vez la entrada poqDataIn
no es un puntero a una estructura fija creada automticamente por el compilador sino un puntero a una
estructura que se va recalculando cada vez que modificamos un valor.
Los pasos a seguir con este programa seran:
1. Modificamos los valores cAncho y cAlto segn convenga.
2. Activamos Run_Decoder para que se proceda a calcular la estructura SMC_GEOINFO teniendo en
cuenta los nuevos valores para cAncho y cAlto
3. Tan pronto Decoder_OK valga TRUE eliminamos la orden Run_Decoder.
4. Activamos Run_CNC y ambos ejes empezaran a interpolar la nueva trayectoria con los nuevos
valores.
Si deseamos modificar los valores debemos esperar a que la trayectoria anterior acabe de ejecutarse
(iStatus=IPO_FINISHED) y repetir el proceso nuevamente.

Motion Pro: Conceptos Bsicos

pgina 117/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

8.8.3.- Modificar un programa en ejecucin


Aunque es mucho ms cmodo, cada vez que se quiere lanzar una trayectoria, utilizar SMC_NCDecoder
para obtener una estructura SMC_GEOINFO a partir de un programa CNC cuyos parmetros de movimiento
pueden variarse y lanzarla mediante SMC_Interpolator (ver captulo 8.8.2.- Trayectoria Variable) en ciertas
ocasiones conviene realizar pequeos cambios en una trayectoria ya lanzada, como acortar o prolongar las
coordenadas del ltimo punto de la trayectoria porque acaba de llegar una pieza, modificar la velocidad de la
trayectoria con un potencimetro externo, etc.
La nica forma de modificar el comportamiento de una trayectoria que ya se encuentra lanzada y en
ejecucin es modificar directamente la estructura que se pasa al bloque SMC_Interpolator. Hay que tener
en cuenta la siguiente condicin:

No es posible modificar el tramo que en ese momento se encuentre ejecutndose.

Por tanto lo primero es conocer que aspecto tiene la estructura interpretada por el bloque SMC_Interpolator
y que contiene la descripcin de la trayectoria (coordenadas de cada punto, velocidades, rampas, etc). La
estructura a la que se hace referencia es del tipo:
SMC_GEOINFO
Y hay dos formas de obtenerla:
1. Tras compilar el programa con la opcin al compilar crear Outqueue activada. En este caso
veremos el aspecto de la estructura directamente en la opcin CNC Data dentro de Variables
Globales de la pestaa Recursos:

Motion Pro: Conceptos Bsicos

pgina 118/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

La estructura creada automticamente por el compilador corresponde a una trayectoria simple


compuesta por un tramo lineal:
N00 G01 X180 Y360 F100 E100 E-100

Para esta simple linea de movimiento la estructura creada sera:


_CNC0_Q : ARRAY[0..3] OF SMC_GEOINFO :=
(iObjNo:=0, iSourceLine_No:=2, iMoveType:=1,
piStartPos:= (iFrameNo:=0, wAuxData:=3, wSProfile:=0, dX:=0, dY:=0, dZ:=0, dA:=0, dB:=0, dC:=0,
dA1:=0, dA2:=0, dA3:=0, dA4:=0, dA5:=0, dA6:=0),
piDestPos:= (iFrameNo:=0, wAuxData:=3, wSProfile:=0, dX:=180, dY:=360, dZ:=0, dA:=0, dB:=0,
dC:=0, dA1:=0, dA2:=0, dA3:=0, dA4:=0, dA5:=0, dA6:=0),
dP1:=0, dP2:=0, dP3:=0, dP4:=0, dP5:=0, dP6:=0, dP7:=0, dP8:=0, dT1:=0, dT2:=1,
dToolRadius:=0, dVel:=100, dVelEnd:=0, dAccel:=100, dDecel:=100, dLength:=402.49223595,
byInternMark:=0, dHelpPos:=0.000000,0.000000,0.000000, iHelpID:=0,0,0);

Analizando ciertos datos de dicha estructura (resaltados en rojo) creada automticamente ya vemos
que dicho vector parte de las coordenadas X=0,Y=0 y finaliza en las coordenadas X=180, Y=360.
Como otros datos importantes vemos que este tramo lo har a una velocidad de dVel=100 y cuando
llegue a las coordenadas destino su velocidad ser dVelEnd=0, es decir, frenar. Las rampas que se
emplearn durante la ejecucin de este tramo sern dAccel=100 y dDecel=100.
Hay un valor muy importante calculado automticamente que corresponde a la longitud del tramo
interpolado resultante:
Longitud

Longitud =

X 2 + Y 2 = (180 0) 2 + (360 0) 2 = 32400 + 129600 = 402,4922

Este ltimo clculo es lo que realmente dificulta en gran modo la utilizacin de este mtodo cuando
el trayecto a realizar se aparta de las frmulas simples (vectores, crculos) y se adentra dentro de las
trayectorias complejas (parbolas, splines, elipsoides).
Para modificar estos parmetros podemos utilizar un cdigo de programa similar al siguiente:
_CNC0_Q[0].piStartPos.dX:=
_CNC0_Q[0].piStartPos.dY:=
_CNC0_Q[0].piDestPos.dX:=
_CNC0_Q[0].piDestPos.dY:=
_CNC0_Q[0].dLength:=

_CNC0_Q[0].dVel:=
_CNC0_Q[0].dAccel:=
_CNC0_Q[0].dDecel:=
_CNC0_Q[0].dVelEnd:=

Posicin actual del eje X;


Posicin actual del eje Y;
Nueva coordenada X para el punto destino;
Nueva coordenada Y para el punto destino;
SQRT((_CNC0_Q[0].piDestPos.dX_CNC0_Q[0].piStartPos.dX)*(_CNC0_Q[0].piDestPos.dX_CNC0_Q[0].piStartPos.dX)+(_CNC0_Q[0].piDestPos.dY_CNC0_Q[0].piStartPos.dY)*(_CNC0_Q[0].piDestPos.dY-_CNC0_Q[0].piStartPos.dY));
Velocidad deseada;
Rampa aceleracin deseada;
Rampa Deceleracin deseada;
0;

En este caso la trayectoria se compone de un nico tramo por lo que ya se ve que se ha de coger el
ndice 0 de la matriz de trayectorias creada por eso se hace referencia constantemente a
_CNC0_Q[0].

Motion Pro: Conceptos Bsicos

pgina 119/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

Hay que tener en cuenta que el interpolador trabaja nicamente con coordenadas absolutas por lo
que al desear realizar un movimiento hemos de programar como punto de partida la posicin actual
de cada eje:
_CNC0_Q[0].piStartPos.dX:= Pos_Eje1.Position;
_CNC0_Q[0].piStartPos.dY:= Pos_Eje2.Position;

Hecho esto la posicin final es simplemente la cota final deseada tambin en coordenadas
absolutas:
_CNC0_Q[0].piDestPos.dX:= Nueva coordenada X para el punto destino;
_CNC0_Q[0].piDestPos.dY:= Nueva coordenada Y para el punto destino;

Para calcular la longitud combinada a recorrer debe realizarse un pequeo clculo que depender
del tipo de movimiento a realizar (vectorial, circular, etc). En este ejemplo el movimiento es vectorial
por lo que el clculo es muy sencillo:
_CNC0_Q[0].dLength:=

SQRT((_CNC0_Q[0].piDestPos.dX_CNC0_Q[0].piStartPos.dX)*(_CNC0_Q[0].piDestPos.dX_CNC0_Q[0].piStartPos.dX)+(_CNC0_Q[0].piDestPos.dY_CNC0_Q[0].piStartPos.dY)*(_CNC0_Q[0].piDestPos.dY-_CNC0_Q[0].piStartPos.dY));

Bsicamente se calcula la hipotenusa de un tringulo rectngulo cuyos catetos son el


desplazamiento (en este caso incremental) de los ejes X e Y.
Y finalmente se han de definir la velocidad de inicio y rampas:
_CNC0_Q[0].dVel:=
_CNC0_Q[0].dAccel:=
_CNC0_Q[0].dDecel:=

Velocidad (en unidades/seg);


Aceleracin (en unidades/seg2);
Deceleracion (en unidades/seg2);

As como la velocidad a la que deseemos que queden girando ambos ejes al llegar a su destino:
_CNC0_Q[0].dVelEnd:=

0;

2. Tras compilar el programa con la opcin al compilar crear variable de programa activada. En
este caso en la opcin CNC Data dentro de Variables Globales de la pestaa Recursos veremos
una estructura diferente a la SMC_GEOINFO a la que no hemos de hacer caso. La estructura en
cuestin hemos de crearla a mano declarando una variable global de la forma:
Buffer: ARRAY [0..30] OF SMC_GEOINFO
Esta nueva variable ser un array con tantas celdas como lneas de programa tenga la trayectoria a
implementar (en la prctica son algo ms: sumar 10 al nmero de lneas de programa de la
trayectoria a ejecutar).
Una vez declarada dicha variable su contenido se utiliza igual que en el mtodo 1
Este mtodo debe emplearse conjuntamente con el bloque SMC_NCDecoder (ver captulo 8.8.2
Trayectoria Variable) ya que en ese caso lo que se hace es transformar, cuando el programador
crea oportuno, un programa de movimiento ISO con el valor adecuado para los parmetros de
movimiento en una estructura SMC_GEOINFO.

Motion Pro: Conceptos Bsicos

pgina 120/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

8.9.- La estructura SMC_GEOINFO


La estructura SMC_GEOINFO, que conviene dominar, se define del siguiente modo:
TYPE SMC_GEOINFO:
STRUCT
iObjNo:INT;
iSourceLineNo:INT;
iMoveType:MOVTYP;
piStartPos:SMC_POSINFO;
piDestPos:SMC_POSINFO;
dP1:LREAL;
dP2:LREAL;
dP3:LREAL;
dP4:LREAL;
dP5:LREAL;
dP6:LREAL;
dP7:LREAL;
dP8:LREAL;
dT1:LREAL;
dT2:LREAL;
dToolRadius:LREAL;
dVel:LREAL;
dVelEnd:LREAL;
dAccel:LREAL;
dDecel:LREAL;
dLength:LREAL;
byInternMark:BYTE;
dHelpPos: ARRAY[0..MAX_IPOSWITCHES] OF LREAL;
iHelpID: ARRAY[0..MAX_IPOSWITCHES] OF INT;
END_STRUCT
END_TYPE

DESCRIPCION
iObjNo: INT
Indice del objeto dentro de la estructura.
iSourceLineNo: INT
Nmero de lnea del programa CNC.
iMoveType: MOVTYP (INT)
Contiene los siguientes valores que identifican el tipo de movimiento a realizar:
LIN
CLW
CCLW
SPLINE
ELLCLW
ELLCCLW
LINPOS
INITPOS

1
2
3
5
8
9
100
110

MCOMMAND

120

Lineal (G01)
Circular horario (G02)
Circular antihorario (G03)
Spline o parbola (G05, G06)
Elipse horaria (G08)
Elipse antihoraria (G09)
Lineal de posicionado (G00)
Posicionado a ciegas (Punto de inicio desconocido; SMC_Interpolator aadir un
movimiento continuo)
Marca

piStartPos: SMC_POSINFO
Esta estructura describe las coordenadas iniciales de la trayectoria. (se ignorar si iMove_Type = INITPOS).
piDestPos: SMC_POSINFO
Esta estructura describe las coordenadas finales de la trayectoria.

Motion Pro: Conceptos Bsicos

pgina 121/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

dP1, ..., dP8: LREAL


Estas variables contienen, dependiendo del tipo de movimiento, informacin avanzada de la trayectoria
:
LIN
LINPOS
CLW
CCLW
SPLINE
ELLCLW, ELLCCLW

INITPOS

Irrelevante ya que la Start_Pos y Dest_Pos ofrecen toda la informacin necesaria.


dP1: Coordenada X del centro.
dP2: Coordenada Y del centro.
dP3: Radio.
Parmetro de spline.
P1: Coordenada X del centro.
P2: Coordenada Y del centro.
P3: Cordenada X del eje principal.
P4: Coordenada Y del eje principal.
P5: Longitud del eje principal.
P6: Longitud del eje secundario.
P7: Direccin del eje principal ()
P8: Correlacin P6/P5.
Irrelevante.

dT1, dT2: LREAL


Estas variables contienen la posicin inicial y final del parmetro y su significado depende del tipo de
movimiento:
LIN
LINPOS

Irrelevante ya que la Start_Pos y Dest_Pos ofrecen toda la informacin necesaria.

CLW

dT1: ngulo inicial en sentido matemtico (grados):


(0 = Este, 90 = Norte, 180 = Oeste, 360 = Sur)
dT2: Apice del crculo, longitud del arco circular (grados):
(p.e.: -90=cuarto de crculo, -180 =semicrculo)

CCLW

dT1: ngulo inicial en sentido matemtico (grados):


(0 = Este, 90 = Norte, 180 = Oeste, 360 = Sur)
dT2: Apice negativo del crculo, longitud del arco circular (grados):
(p.e.: 90=cuarto de crculo, 180 =semicrculo)

SPLINE

Valor inicio y final del parmetro "t"


Por defecto: 0 y 1.

INITPOS

Irrelevante

dToolRadius: LREAL
Esta variable contiene la informacin necesaria para el preprocesado de la trayectoria (ver SMC_ToolCorr y
SMC_RoundPath). Si los bloques indicados no son utilizados estas variables carecen de utilidad.
dVel, dVelEnd: LREAL
Estas variables, que deben ser utilizadas en cualquier caso, contienen informacin sobre el perfil de
velocidad del tramo. dVel describe la velocidad objetivo durante la trayectoria, dVelEnd describe la velocidad
que debe alcanzarse al final de la trayectoria (unidades/seg).
dAccel, dDecel: LREAL
dAccel describe la maxima aceleracin permitida, dDecel describe la mxima deceleracin permitida
(unidades/seg). Por defecto ambas variables valen "100".
dLength: LREAL
Esta variable, cuyo valor debe asignarse en cualquier caso, contiene la longitud de la trayectoria (unidades).
byIntern_Mark: BYTE

Motion Pro: Conceptos Bsicos

pgina 122/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Esta variable describe el punto de inicio y final para las acciones de preprocesado de la trayectoria:
Bit 0 set
Bit 1 set
Bit 2 set
Bit 3 set
Bit 4 set
Bit 4 set
Bit 6 set
Bit 7 set

Detener correccin radio herramienta despus de la trayectoria.


Iniciar correccin radio herramienta a la izquierda de la trayectoria.
Iniciar correccin radio herramienta a la derecha de la trayectoria.
Detener suavizado/redondeado despus de la trayectoria.
Iniciar suavizado/redondeado en la trayectoria.
Iniciar redondeado en la trayectoria
Detener impedir bucles despus de la trayectoria.
Iniciar impedir bucles en la trayectoria.

dHelpPos: ARRAY[0..MAX_IPOSWITCHES] OF LREAL,


iHelpID: ARRAY[0..MAX_IPOSWITCHES] OF INT:
Estas variables describen la posicin relativa (0: Inicio trayectoria, 1:Final trayectoria; parecido al cdigo G:
O) y el ID (como el cdigo G: H) de los switches auxiliares.
Si la trayectoria es un comando M, iHelpID[0] contendr el nmero de M.

Motion Pro: Conceptos Bsicos

pgina 123/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

9.- Las levas y las tablas CAM


9.1.- Introduccin
Una leva no deja de ser una relacin de sincronismo entre dos ejes, uno maestro y uno esclavo cuyo ratio
depende de la posicin de aquel. Por decirlo de una forma simplista una leva es un sincronismo dinmico
entre dos ejes. Entendido este punto las tablas CAM son un mtodo que permite disear levas electrnicas.
Imaginemos que deseamos crear una leva de tal modo que cuando el eje maestro se desplace 270 grados
el eje esclavo se desplace 360 (siempre en sincronismo) en ese momento el eje esclavo deber detenerse
hasta que el eje maestro no se haya desplazado otros 270 grados y posteriormente el eje esclavo deber
retroceder los 360 grados que antes avanz mientras el eje maestro avanza otros 270 grados. La tabla CAM
que resumira este perfil de movimiento sera:
Posicin
Maestro
0
270
450
720

Posicin
Esclavo
0
360
360
0

El siguiente paso es introducir esta misma tabla mediante el uso de Motion Pro. Hay bsicamente dos
formas de hacerlo:

Mediante el entorno grfico.

Introduciendo directamente sobre la tabla CAM los valores que nos interesan.

El primer mtodo es el ms cmodo (segn los gustos) ya que es bastante visual sin embargo dicho mtodo
es nicamente til cuando no se tiene previsto modificar dichas levas.
El segundo mtodo es, digamos, el avanzado. Esta pensado para permitir modificar el contenido de la tabla
CAM desde programa incluso aunque se est ejecutando en ese momento. Por ejemplo, imaginemos que
en la tabla anterior queremos modificar el desplazamiento del eje maestro al doble:
Posicin
Maestro
0
540
900
1440

Posicin
Esclavo
0
360
360
0

Con el primer mtodo tendramos que dibujar una nueva leva y mediante programa utilizar una u otra, sin
embargo, modificando directamente sobre la tabla CAM no es preciso crear un dibujo por cada variacin ya
que nos podramos limitar a modificar aquellas posiciones de la tabla que nos interesan y lanzarla. Un
ejemplo claro es una cizalla volante donde la longitud a cortar va variando entre 200 y 10000: Es evidente
que nicamente con un sola tabla es suficiente, no hace falta dibujar 9800 tablas una por medida.
Por supuesto hay formas combinadas, puede dibujarse la forma y luego interactuar con la tabla generada
por ejemplo en aquellas aplicaciones donde pueda existir una correccin por marcas (la leva va
modificndose incluso antes de que finalice su ciclo).

Motion Pro: Conceptos Bsicos

pgina 124/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

9.2.- Las estructuras necesarias

Sea de la forma en que se disee una leva podrn ser utilizadas como variables las siguientes estructuras,
las cuales conviene conocer:
Esta primera estructura es la principal, contiene la definicin de cmo ser la leva y siempre ser necesaria
una variable de este tipo:

MC_CAM_REF
Parmetro

Tipo

Descripcin

wCAMStructID

WORD

xStart, xEnd
byType

LREAL
BYTE

byVarType

BYTE

nElements

INT

byInterpolationQuality
pce

BYTE
POINTER TO
BYTE

Esta variable, que siempre tiene un valor fijo, se utilize para comprobar si la
estructura de datos, tomada como entrada por un modulo, es una estructura del tipo
MC_CAM_REF
Define los valores lmites de eje maestro.
Tipo de tabla CAM que se desea emplear:
1: Equidistante. Tabla unidimensional conteniendo las posiciones del eje
esclavo.
2: No equidistante, Tabla bidimensional conteniendo pares de posiciones
maestro-esclavo
3: Descripcin polinomial de puntos estratgicos consistentes en posicin
maestro, posicin esclavo, velocidad y aceleracin (XYVA).
Tipo de variables que contendran las tablas (slo si byType=1 o byType=2):
0: INT
1: UINT
2: DINT
3: UDINT
4: REAL
5: LREAL
Nmero de elementos en la tabla, por tanto nmero de puntos esclavo,
maestro/esclavo o puntos XYVA de la leva electrnica que desea crearse.
Grado de interpolacin a realizar (slo si byType=1 o byType=2):
1: Lineal(por defecto), 3: Cbica
Puntero que apunta a la estructura que contiene los puntos de la tabla:
Tipo
1 (Equidistante)
2 (No Equidistante)
3 (Polinomial XYVA)

nTappets
pt
strCAMName

INT
POINTER TO
SMC_CAMTappet
STRING

Estructura
SMC_CAMTable_<VarType>_<nElements>_1
SMC_CAMTable_<VarType>_<nElements>_2
ARRAY OF SMC_CAMXYVA

Nmero de puntos de control.


Puntero que apunta a la estructura que contiene la definicin de Tappets (ARRAY OF
SMC_CAMTappet).
Nombre de la tabla CAM.

Motion Pro: Conceptos Bsicos

pgina 125/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Seguidamente una de las siguientes tres estructuras ser necesaria para definir la tabla de puntos que
describir el comportamiento de la leva.

SMC_CAMXYVA
Una tabla CAM del tipo XYVA consiste en un array del tipo SMC_CAMXYVA. Cada variable del array describe un punto de la tabla
CAM va dX (posicin eje maestro), dY (posicin eje esclavo), dV (primera derivada dY/dX; correspondiente a la velocidad del eje
esclavo a velocidad constante y unitaria del maestro) y dA (segunda derivada dY/dX; correspondiente a la aceleracin del eje
esclavo a velocidad constante y unitaria del eje maestro).
Como mnimo son necesarios dos puntos: uno de inicio de tabla CAM y otro de final de tabla CAM.

SMC_CAMTable_<tipo variable>_<nm puntos>_1


En este tipo de estructura se emplea una tabla donde el incremento de posicin para el eje maestro es igual de punto en punto
(equidistante) y por tanto no es preciso ninguna tabla que permita definirlas (sabiendo el nmero de puntos y los lmites es suficiente).
En este caso es necesario indicar donde debe encontrarse el eje esclavo a cada incremento del eje maestro.
Como mnimo son necesarios dos puntos: uno de inicio de tabla CAM y otro de final de tabla CAM.
Las variables fEditorMasterMin, fEditorMasterMax, fTableMasterMin, fTableMasterMax permiten aplicar una escala a los valores
introducidos en las tablas de modo que luego, internamente, el sistema las traduzca a unidades de usuario. As es posible relacionar
el rango de actuacin (fEditorMaster, fEditorSlave) expresado en unidades de usuario con el rango de valores que aplicaremos en las
tablas (fTableMaster, fTableSlave) que puede expresarse en otras unidades o mrgenes.

SMC_CAMTable_< tipo variable >_< nm puntos >_2


Parecido al caso anterior pero con incrementos no equidistantes del eje maestro entre punto y punto. En este caso son necesarias
dos dimensiones en la tabla, una contendr la posicin del eje maestro y la otra la del esclavo.
Como mnimo son necesarios dos puntos: uno de inicio de tabla CAM y otro de final de tabla CAM.
Las variables fEditorMasterMin, fEditorMasterMax, fTableMasterMin, fTableMasterMax permiten aplicar una escala a los valores
introducidos en las tablas de modo que luego, internamente, el sistema las traduzca a unidades de usuario. As es posible relacionar
el rango de actuacin (fEditorMaster, fEditorSlave) expresado en unidades de usuario con el rango de valores que aplicaremos en las
tablas (fTableMaster, fTableSlave) que puede expresarse en otras unidades o mrgenes.

Motion Pro: Conceptos Bsicos

pgina 126/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

9.3.- Creando estructuras propias


Como se ha visto en el apartado anterior el sistema proporciona una serie de estructuras predefinidas para
trabajar con tablas CAM si bien estas estructuras suelen contener un nmero fijo de puntos (128 o 256). Si
se desea trabajar con una estructura que contenga un nmero de puntos diferentes hemos de crearla a
mano. Para ello nada ms sencillo que dirigirse a la pestaa Tipos de Datos y crear nuestra propia
estructura:

En este caso se ha creado una estructura formada por una tabla bidimensional (tabla esclava y tabla
maestra) compatible con valores LREAL de 151 puntos.
Se le ha dado el nombre de SMC_CamTabla_LREAL_151_2 nicamente para mantener la compatibilidad
sintctica con las creadas por el sistema aunque podramos haberle dado un nombre cualquiera.
IMPORTANTE : Es vital que el orden de las declaraciones sea el indicado ya que en caso de utilizar un
orden distinto el comportamiento de la tabla CAM, aunque aparentemente sea correcto (no se generar
ningn error de compilacin y el eje esclavo se desplazar siguiendo al maestro) no se comportar segn lo
especificado en las tablas.

Motion Pro: Conceptos Bsicos

pgina 127/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

9.4.- Levas desde entorno grfico


Para crear la leva del ejemplo anterior nada ms sencillo:
1. Ir Pestaa Recursos.
2. Doble Clic opcin Disco Levas.
3. Clic con botn derecho sobre Inventario de tablas CAM y seleccionar Nuevo Disco Levas.

Hacer

4. Introducir el nombre para el nuevo perfil de levas, por ejemplo CAM0.


5. Hacemos doble clic sobre el nuevo nombre y seleccionamos el fondo de escala del eje maestro y
esclavo. Para el maestro fijar 720 y para el eje esclavo 360. Tambin anularemos la propiedad
peridico.

Motion Pro: Conceptos Bsicos

pgina 128/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6. Mediante las opciones grficas existentes dibujaremos el perfil deseado (tres lneas)

7. Se recomienda hacer clic sobre el rea de dibujo y seleccionar Curva como tabla de modo que
todo lo que vayamos dibujando lo vayamos viendo expresado numricamente en forma de tabla
pudiendo as ajustar a mano los valores que se nos resistan.

NOTA: Es posible que los valores cercanos a los dos lmites (0 y 720) no puedan ser escritos, en su defecto
acercarse todo lo posible a ellos (0.001 y 719.999).

Motion Pro: Conceptos Bsicos

pgina 129/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Ahora que ya tenemos la leva dibujada y hemos ajustado la tabla para que sea igual a la deseada podemos
proceder a compilar el programa.
Antes de compilar deberemos escoger que tipo de estructura de datos vamos a utilizar (ver captulo 9.2.Las Estructuras necesarias). Para ello, encontrndonos en Disco de Levas dentro de la pestaa
Recursos, deberemos ir al men superior desplegable Herramientas y seleccionar Opciones de
compilacin:

Segn la eleccin se utilizar una estructura u otra:

Polinominal: SMC_CAMXYVA

Tabla de puntos de apoyo equidistantes: SMC_CAMTable_<VarType>_<nEle.>_1

Tabla de puntos de apoyo de elementos optimizados: SMC_CAMTable_<VarType>_<nEle.>_2

No obstante, al trabajar desde el entorno grfico deber seleccionarse, obligatoriamente, la primera de las
tres posibilidades: Polinomial

Motion Pro: Conceptos Bsicos

pgina 130/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Tras compilar Motion Pro habr creado, automticamente, la estructura de tabla CAM que posteriormente
utilizar el bloque de funciones correspondiente. Esta estructura puede verse si nos dirigimos a la pestaa
Recursos, carpeta Variables Globales, opcin CAM Data.

Observar como la tabla CAM creada utilizando este mtodo es una estructura del tipo SMC_CAMXYVA la
cual contiene 8 puntos. Esto es as porque esta estructura no contempla lneas sino puntos por lo que por
cada una de las tres lneas utilizadas en el dibujo de la leva Motion Pro extrae dos puntos, el que da inicio a
la lnea y el que le da fin, adems de los puntos inicial y final de la leva en si misma (los cuales no pueden
modificarse).
Esta estructura es una de las tres posibles estructuras existentes aunque de hecho es la ms compleja ya
que relaciona, para cada punto, posicin maestro X posicin esclavo Y Velocidad Aceleracin. Estos
dos ltimos parmetros, Velocidad y Aceleracin en el punto de tangencia, resulta de difcil clculo.
En resumen:

Tabla compuesta por 8 puntos:


CAM0_A: ARRAY[0..7] OF SMC_CAMXYVA :=
(dX := 0.000000, dY := 0.000000, dV := 0.000000, dA := 0.000000),
(dX := 0.001000, dY := 0.000000, dV := 1.333338, dA := 0.000000),
(dX := 270.000000, dY := 360.000000, dV := 1.333338, dA := 0.000000),
(dX := 270.000000, dY := 360.000000, dV := 0.000000, dA := 0.000000),
(dX := 450.000000, dY := 360.000000, dV := 0.000000, dA := 0.000000),
(dX := 450.000000, dY := 360.000000, dV := -1.333338, dA := 0.000000),
(dX := 719.999000, dY := 0.000000, dV := -1.333338, dA := 0.000000),
(dX := 720.000000, dY := 0.000000, dV := 0.000000, dA := 0.000000);

Start Point = 1
Line = 2
Line = 2
Line = 2
EndPoint = 1
Total = 8

Motion Pro: Conceptos Bsicos

pgina 131/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

9.5.- Levas mediante tablas

En ciertas ocasiones la leva debe ir modificando su forma bien porque las caractersticas del material van
variando o bien porque es necesario compensar la forma de esta debido a deslizamientos, deformidades del
material o imprecisin en la cadena cinemtica. En todos estos casos el empleo de la herramienta grfica de
Motion Pro es insuficiente y es preciso la utilizacin de tablas de puntos calculados a tiempo real mediante
frmulas matemticas.
Este mtodo es especialmente indicado cuando la forma de la leva necesita compensarse peridicamente
debido a que el material a manipular es flexible (plsticos, goma, etc) y/o es necesario interactuar sobre ellos
en puntos muy concretos (entre dos marcas, sobre un dibujo, etc) por lo que la longitud de la leva no importa
tanto como que a cada ciclo de mquina un punto de esta coincida con un punto del material (mtodo
llamado comnmente como correccin por marcas).
Lo primero que hay que hacer es declarar las variables que vamos a emplear. Slo es necesario el uso de
dos estructuras internas: La primera contendr la definicin de la leva y es del tipo MC_CAM_REF mientras
que la segunda contiene la definicin de la tabla de puntos y es del tipo SMC_CAMTable_LREAL_128_2.
Para ello iremos a la pestaa Recursos, carpeta Variables Globales y opcin Global_Variables y
escribiremos el siguiente cdigo:
(*Defino tabla CAM*)
TablaCAM: MC_CAM_REF:=(nElements:=128, byType:=2, byVarType:=5, xStart:=0, xEnd:=720);
(*Especifico lmites de tabla CAM en unidades de usuario*)
TablaCAM_A: SMC_CAMTable_LREAL_128_2:=(
fEditorMasterMin := 0, fEditorMasterMax := 720,
fTableMasterMin := 0, fTableMasterMax := 720,
fEditorSlaveMin := 0, fEditorSlaveMax := 360,
fTableSlaveMin := 0, fTableSlaveMax := 360);

En la inicializacin de la estructura MC_CAM_REF vemos que deseamos trabajar con tablas de 128 puntos
(nElements=128), de tipo bidimensional (bytype=2) para relacionar posiciones absolutas maestro-esclavo y
que se emplearn variables de tipo LREAL (byVarType=5).
Como en el momento de declarar las variables no tienen porque conocerse los valores mximos de las
tablas utilizaremos valores arbitrarios (ver valores en rojo):
(*Defino tabla CAM*)
TablaCAM: MC_CAM_REF:=(nElements:=128, byType:=2, byVarType:=5, xStart:=0, xEnd:=720);
(*Especifico lmites de tabla CAM en unidades de usuario*)
TablaCAM_A: SMC_CAMTable_LREAL_128_2:=(
fEditorMasterMin := 0, fEditorMasterMax := 720,
fTableMasterMin := 0, fTableMasterMax := 720,
fEditorSlaveMin := 0, fEditorSlaveMax := 360,
fTableSlaveMin := 0, fTableSlaveMax := 360);

Motion Pro: Conceptos Bsicos

pgina 132/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

(* Creacin de una tabla CAM *)


FOR i:=0 TO 127 DO
(*Tabla Maestra*)
TablaCAM_A.Table[i][0]:=(i / 127.0 * 720);
(*Tabla Esclava*)
TablaCAM_A.Table[i][1]:=(i / 127.0 * 360);
END_FOR;
(* Fijo lmites de las tablas *)
TablaCAM_A.fEditorMasterMin:=0;
TablaCAM_A.fEditorMasterMax:= TablaCAM_A.Table[127][0];
TablaCAM_A.fTableMasterMin:=0;
TablaCAM_A.fTableMasterMax:= TablaCAM_A.Table[127][0];
TablaCAM_A.fEditorSlaveMin:=0;
TablaCAM_A.fEditorSlaveMax:= TablaCAM_A.Table[127][1];
TablaCAM_A.fTableSlaveMin:=0;
TablaCAM_A.fTableSlaveMax:= TablaCAM_A.Table[127][1];

Posicin Esclavo: 360

Una vez declaradas e inicializadas las variables bsicas ya podemos crear una rutina que calcule el valor
para los 128 puntos de la leva. Un ejemplo simple sera un vector calculado de tal forma que cuando el eje
maestro haya recorrido 720 el esclavo haya recorrido 360. En la siguiente rutina vemos un ejemplo que va
calculando los 128 diferentes puntos para las tablas maestra y esclava:

Posicin Maestro: 720

(*Fijo lmites de la leva*)


TablaCAM.xEnd:= TablaCAM_A.Table[127][0];

Observar como al final del clculo de todos los puntos de la tabla es cuando podemos por fin fijar los lmites
tanto de la tabla como de la leva (aquellos que en el momento de la declaracin de variables se dejaron
pendientes con un valor arbitrario).
Por ltimo, con la tabla de puntos ya llena, crearemos la rutina principal encargada de lanzar el movimiento:

Vinculacin entre TablaCAM (leva) y TablaCAM_A


(tablas de puntos)

Se selecciona la leva descrita por la variable


TablaCAM

Modo de inicio de la tabla respecto a la posicin


actual del eje esclavo. Puede ser Relative o
Absolute

Es muy importante no olvidar de vincular la segunda de las variables, la tabla de puntos (TablaCAM_A), con
la primera de ellas, la leva en si misma (TablaCAM) ya que es la que en definitiva introduciremos en el
bloque MC_CamTableSelect. Esta vinculacin tiene lugar a travs del parmetro pce de la variable
TablaCAM (estructura del tipo MC_CAM_REF) y tiene que hacerse a cada ciclo del Motion Bus.

Motion Pro: Conceptos Bsicos

pgina 133/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Asimismo hay que distinguir entre dos formas de ejecutar la leva: relativa o absoluta. Si la leva se ejecuta
de forma relativa no importar en que cota se encuentre el eje esclavo, la leva tomar ese punto como
punto inicial y seguir la leva de la forma definida. Si se define como absoluta lo primero que tendr lugar es
un reposicionado del eje esclavo hacia la cota marcada por el primer elemento de la tabla y a partir de ah se
ejecutar la leva segn lo definido en sus tablas. El modo absoluto es quizs recomendable en aquellos
casos en los que la leva describa un movimiento de ida-regreso empezando con el eje esclavo en la cota 0
(es necesario realizar algn tipo de referenciado) y finalizando la ejecucin de la leva de modo que el eje
esclavo acabe en el cota 0 de nuevo.
El comportamiento del programa es bastante sencillo de describir:
1. Mediante el bloque MC_CamTablaSelect se especifica que eje ser el maestro y cual el esclavo y
que se va a emplear la leva descrita por la variable TablaCAM (la cual apunta a la tabla de puntos
TablaCAM_A).
2. Cuando el bloque MC_CamTablaSelect recibe un flanco de subida en la entrada Execute se
calcula un identificador para dicha leva y se envia al siguiente bloque MC_CamIn.
3. Con el bloque MC_CamIn, al cual le llega el identificador de la leva a ejecutar as como la orden de
inicio de ejecucin en su entrada Execute desde la salida Done del bloque anterior, se inicia la
sincronizacin entre ejes.
4. Cuando queremos abandonar la sincronizacin entre ejes debemos ejecutar el bloque MC_CamOut
pero siempre que hayamos previamente ejecutado el bloque MC_CamIn por ello se utiliza una
bscula SR que almacena por un lado la condicin de Insync del bloque MC_CamIn (seal de que
el eje esclavo inici su sincronizacin con el maestro) cuya salida se compara con el estado negado
de la orden de inicio de sincronizacin bRunEsclavo (debe mantenerse este valor a ON en tanto
queramos que ambos ejes permanezcan sincronizados, si cambia a OFF saldremos de la
sincronizacin).

Motion Pro: Conceptos Bsicos

pgina 134/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

9.6.- Ejecucin de una leva

Vamos a suponer que se ha creado una leva cualquiera bien desde el entorno grfico bien a mano y la
hemos llamado CAM_D.
Necesitaremos tener claros tres puntos clave para el uso de dicha leva:
1. Seleccin de la tabla.
2. Asignar la tabla a un eje e iniciarla.
3. Desasignar la tabla del eje.
Si al considerar que se ha finalizado el trabajo con la tabla CAM no efectuamos el tercer punto (desasignar la
tabla del eje) al querer asignar otra tabla o simplemente volver a cargar la misma tabla para efectuar un ciclo
este no se iniciar o se iniciar incorrectamente.
PRECAUCION : Hay que tener en cuenta que podemos crear y ejecutar cuantas tablas CAM deseemos,
segn la disponibilidad de recursos del sistema, pero bajo ningn concepto debemos ejecutar la misma tabla
desde dos rutinas distintas. Si se quiere que dos ejes ejecuten la misma tabla CAM debemos crear dos
tablas CAM con el mismo contenido y asociar cada una especificando ejes esclavos distintos (es posible
utilizar el mismo eje maestro)
El siguiente ejemplo muestra un ejemplo de uso de tabla CAM:

Vemos lo siguiente:
1. Con la variable Habilitar iniciamos la seleccin de la tabla a ejecutar.
2. Asignamos FALSE a las entradas MasterAbsolute y SlaveAbsolute lo cual afecta al modo en que
se ejecuta la tabla CAM. Para esos valores se tomarn los datos de la tabla CAM como relativos a la
posicin en la que se encuentre el eje maestro y esclavo.
3. Seguidamente asignamos a las entradas Master de los bloques involucrados el eje cuya posicin se
tomar como referencia para que el eje esclavo se mueva segn lo indicado por la tabla CAM. El eje
esclavo se asignar a las entradas Slave de los bloques involucrados.
4. Por ltimo se ha de indicar al bloque Seleccion_Tabla el nombre de la tabla CAM que se va a
emplear.
5. Cuando el valor de la variable Habilitar pasa a TRUE el bloque Seleccion_Tabla se ejecuta
obteniendo un nmero identificativo de tabla mediante la salida CamTablaID el cual se enva al
bloque Asignar_Tabla.
6. Como lo que se desea es que la ejecucin de los movimientos tenga lugar desde el punto actual del
eje maestro y esclavo se especifica mediante la asignacin de la palabra relative a la entrada
StartMode del bloque Asignar_Tabla.

Motion Pro: Conceptos Bsicos

pgina 135/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

7. Cuando el eje esclavo se encuentre en sincronismo se indicar mediante la salida In_Sync. Ahora
ya es posible iniciar el movimiento del eje maestro, el esclavo se mover segn lo descrito en la
tabla CAM.
8. Lo que viene a continuacin es un mtodo para asegurar que slo se desasignar una tabla CAM
que previamente haya sido asignada: Cuando el sistema se encuentre en In_Sync memorizamos
esta condicin mediante una bscula SR, la salida de esta bscula se lleva a la entrada de una
puerta AND, la otra entrada viene de la variable Habilitar negada. En sincronismo una entrada es
TRUE y la otra es FALSE (porque est negada), cuando deseamos salir la variable Habilitar pasa a
FALSE y las dos entradas de la puerta AND pasan a ser TRUE. Slo cuando la salida de la puerta
AND es TRUE se ejecuta el bloque Desasignar_Tabla permitiendo salir de la tabla CAM dejando
preparado el sistema para futuros ciclos.
9. La bscula SR se resetea cuando se haya ejecutado el bloque Desasignar_Tabla.
CONCEPTO : Otro principio bsico que debe seguirse religiosamente es la forma en que deben encontrarse
el eje maestro y el esclavo al activar y desactivar la tabla CAM. Seguir los siguientes preceptos:

Antes de desplazar el eje maestro el eje esclavo debe encontrarse con la tabla CAM lanzada y
siguindola (en sincronismo) ya que si no es as el eje maestro puede desplazarse mientras el
esclavo, al no encontrarse en sincronismo, no puede seguirlo pudiendo producirse errores de
medida.

Antes de desasignar la tabla CAM del eje esclavo debemos asegurarnos que el eje maestro se
encuentra detenido por las mismas razones anteriores.

Motion Pro: Conceptos Bsicos

pgina 136/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

9.7.- Gestin de mltiples levas

Independientemente de si se ha empleado el mtodo grfico o el de creacin de tablas a mano es posible


seleccionar de un listado de levas una en concreto asignndola a una variable auxiliar que ser la que
introduciremos en el bloque MC_CamTableSelect (ver apartado anterior). De este modo, con una misma
estructura de ejecucin de levas, podremos lanzar la leva que queramos. Utilizando el mtodo descrito en
este apartado incluso podremos seleccionar la leva a ejecutar desde las pantallas de visualizacin.
Si creamos grficamente dos levas, tras compilar, Motion Pro crear automticamente un cdigo similar al
siguiente:

En una primera aproximacin la variable que nos interesa es:


_SMC_CAM_LIST : ARRAY[0..1] OF POINTER TO MC_CAM_REF;

Nos encontramos con un array que contiene punteros que apuntan a las estructuras donde se describen
cada una de las levas creadas (el primer puntero en el ndice 0 y el segundo en el ndice 1) y que podemos
utilizar para ir asignando a nuestras variables de usuario toda la informacin relativa a una leva. En este
caso este array contiene dos elementos porque hemos creado dos tablas: CAM_D y CAM_I.
La descripcin de estas dos levas se obtiene de las siguientes variables:
CAM_I: MC_CAM_REF :=
strCAMName:='CAM_I');

(nElements := 6, byType := 3, xStart := 0.000000, xEnd := 360.000000, nTappets := 0,

CAM_D: MC_CAM_REF := (nElements := 8, byType := 3, xStart := 0.000000, xEnd := 32000.000000, nTappets := 0,


strCAMName:='CAM_D');

Aunque hay ms datos escondidos de momento nos interesan estos pues son los bsicos.

Motion Pro: Conceptos Bsicos

pgina 137/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Por ejemplo, podemos crear un elemento estructura del tipo:

El campo tabla apunta a la descripcin de la


leva (la cual apunta a la tabla CAM)

Y unir esta estructura con una pantalla de visualizacin para solicitar el nombre de la tabla que se desea
emplear:

.Main. NumSeq
.Main. NumSeq

.Main. PermisoEje1

.Main.Secuencia[.Main.IndSecuencia].Eje[1].Tabla.strCAMName

Y luego, en alguna parte del programa, realizar el resto de la asignacin:


FOR AuxTabla:=0 TO 1 DO
IF _SMC_CAM_LIST[AuxTabla]^.strCAMName =Secuencia[NumSeq].Eje[1].Tabla.strCAMName AND PermisoEje1 THEN
Secuencia[NumSeq].Eje[1].Tabla:=_SMC_CAM_LIST[AuxTabla]^;
END_IF;
END_FOR;

En esta seccin de cdigo nicamente se rastrean todos los elementos de la lista de tablas disponible hasta
encontrar uno cuyo nombre coincida con el introducido en la pantalla de visualizacin. Cuando esto ocurre
se copia la estructura que define la leva sobre nuestra variable (que es del mismo tipo) pudiendo emplearla
para ejecutarla, modificarla, etc.

Motion Pro: Conceptos Bsicos

pgina 138/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

9.8.- Desfasado de eje esclavo

Para desfasar la posicin del eje esclavo respecto el maestro en plena ejecucin se suelen emplear dos
tcnicas:

Utilizar un bloque de funciones a tal efecto.

Con este bloque, a cada orden bDesfasar recibida se aplicar un desfase absoluto, especificado
mediante la variable Desfase. Dicho desfase es absoluto cuando se aplica (dos desfases
consecutivos de 45 no equivalen a un desfase de 90 sino a uno de 45) pero incremental respecto
a la posicin donde se aplica (se suma o resta a la posicin que en ese momento posea el eje
esclavo).

Manipular los valores de la tabla que definen el movimiento de la leva.


Evidentemente siempre podr modificarse la tabla maestra y/o esclava de modo que se consiga el
desfase deseado. Al contrario de cmo suceda al emplear un bloque, cuando se hace por tabla,
podemos decidir entre que posiciones tendr lugar la aplicacin del desfase y aplicarlo, por tanto, de
una forma mas suavizada.

Motion Pro: Conceptos Bsicos

pgina 139/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

9.9.- Los Tappets

Los Tappets son marcas que pueden situarse estratgicamente en cualquier punto de una leva y que nos
permiten conocer que seccin de la leva se est ejecutando en cada momento.
Al igual que como suceda a la hora de definir la leva pueden definirse los Tappets mediante dos vas
distintas:
1. Grficamente.
2. Mediante programacin a mano.
Para definir a mano los Tappets que deseamos utilizar hay que efectuar dos operaciones simples:
Cuando defino la estructura de la leva indico cuantos Tappets voy a necesitar:
(*Defino tabla CAM*)
TablaCAM: MC_CAM_REF:=(nElements:=128, byType:=2, byVarType:=5, xStart:=0, xEnd:=720, nTappets:=8);

Y posteriormente creo una variable de tipo SMC_CAMTappet que describe como actuarn cada uno de los 8
Tappets:
(*Los tapptes hacen relacin al ancho total del perfil maestro que en este caso es 720*)
TablaTappets: ARRAY[0..7] OF SMC_CAMTappet :=
(ctt := 0, dwDelay := 0, dwDuration := 0, iGroupID := 1, x := 1.000000, cta := 0),
(ctt := 0, dwDelay := 0, dwDuration := 0, iGroupID := 1, x := 90.000000, cta := 1),
(ctt := 0, dwDelay := 0, dwDuration := 0, iGroupID := 2, x := 90.000000, cta := 0),
(ctt := 0, dwDelay := 0, dwDuration := 0, iGroupID := 2, x := 180.000000, cta := 1),
(ctt := 0, dwDelay := 0, dwDuration := 0, iGroupID := 3, x := 180.000000, cta := 0),
(ctt := 0, dwDelay := 0, dwDuration := 0, iGroupID := 3, x := 270.000000, cta := 1),
(ctt := 0, dwDelay := 0, dwDuration := 90, iGroupID := 4, x := 270.000000, cta := 0),
(ctt := 0, dwDelay := 0, dwDuration := 0, iGroupID := 4, x := 360.000000, cta := 1);

Lo ms importante es saber diferenciar entre Tappets (que en este caso se han definido 8) e iGroupId (que
en este caso slo hay 4). Un Tappet es cualquier punto insertado en la leva mientras que el iGroupId es
como el nmero de variable que va a ser manipulada.
En la seccin de cdigo mostrada vemos que primer Tappet activa a ON (cta=0 es ON y cta=1 es OFF) el
iGroupID=1 cuando la posicin del eje maestro es x=1.
El segundo Tappet, sin embargo, asigna OFF al iGroupID=1 cuando la posicin del eje maestro es x=90.
CONCEPTO : el iGroupID es la variable que luego consultaremos mientras que cada vez que se necesita
cambiar su valor ser necesario crear un Tappet distinto. Cada Tappet representa una actuacin en una
actuacin sobre un iGroupID determinado en una posicin determinada de la leva maestra.

Motion Pro: Conceptos Bsicos

pgina 140/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Una vez creados los ocho Tappets que modifican a cuatro iGroupID podremos consultar el valor de cada
iGroupID de la siguiente forma:

En el ejemplo anterior vemos como se lanza una leva y como se van consultando el estado de los cuatro
diferentes iGroupID.
No olvidar vincular a cada ciclo de Motion Bus la tabla de Tappets con la leva seleccionada. Esto permite
incluso crear diferentes tablas de Tappets para una misma leva y seleccionar una u otra segn conveniencia.

NOTA : Las posiciones de activacin/desactivacin de los Tappets se refieren a las posiciones del eje
maestro y no del esclavo.

Motion Pro: Conceptos Bsicos

pgina 141/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.- PANTALLAS VISUALIZACION


10.1.- Introduccin
Existe la posibilidad de crear toda una serie de tiles pantallas de visualizacin de gran utilidad para la
monitorizacin y/o introduccin de datos. Mediante el uso adecuado de estas pantallas es posible la creacin
de toda una compleja interface que permita al usuario interactuar con la aplicacin.

10.2.- Creacin de una pgina


Las pginas de visualizacin se crean y utilizan siempre desde el entorno de visualizacin:

Los pasos para la creacin de una pgina de visualizacin seran:


1.
2.
3.
4.

Clic sobre la pestaa Visualizaciones.


Botn derecho ratn sobre la carpeta Visualizaciones.
Seleccionar la opcin Insertar objeto.
Darle un nombre a la nueva visualizacin.

5. Pulsar sobre botn Aceptar.

Motion Pro: Conceptos Bsicos

pgina 142/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Tras seguir los pasos anteriores obtendremos el entorno adecuado para empezar a crear una visualizacin:

Entorno desarrollo.
Lo primero que vamos a realizar es disear el aspecto grfico y para ello disponemos de una serie de
herramientas agrupadas en la barra de iconos superior:

Seleccionaremos el icono de Rectngulo y dibujaremos uno sobre el entorno de desarrollo

Motion Pro: Conceptos Bsicos

pgina 143/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

El siguiente paso es darle un texto y un color de fondo a dicho rectngulo para ello haremos doble clic sobre
l y veremos que aparece un nuevo cuadro:

A continuacin pulsamos sobre la seccin Texto e introduciremos Medidas, posteriormente haremos clic
sobre el botn Fuente y escogeremos tipo de letra Negrita y tamao de la fuente a 11.

Sin hacer clic sobre el botn Aceptar pasamos directamente a la seccin Colores para pulsar sobre el botn
Interior de la categora Color. En el cuadro de colores que aparecer seleccionaremos un verde claro y
pulsaremos sobre todos los botones Aceptar hasta que desaparezcan todos los cuadros:

Motion Pro: Conceptos Bsicos

pgina 144/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

El resultado, si se han seguido los anteriores pasos correctamente, tendr la siguiente apariencia:

Continuamos aadiendo objetos de forma similar a la indicada hasta que nuestra pantalla tenga un aspecto
similar al mostrado por la siguiente figura:

Para la creacin de crculos


utilizaremos el icono

Ver siguiente apartado

Motion Pro: Conceptos Bsicos

pgina 145/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

10.3.- Formato y uso de variables


Si se incluye %s (en minsculas) dentro de un texto, entonces, el lugar que ocupa, en modo Online, ser
sustituido por el valor de la variable introducida en la celda Textdisplay dentro de la seccin Variables.
Mediante el uso del carcter s el valor se mostrar tal cual sin formato pero es posible utilizar otro tipo de
formato de representacin:
Carcter

Argumento / Salida como

d,i

Nmero decimal

Numero Octal sin signo

Nmero Hexadecimal sin signo

Nmero Decimal sin signo

Carcter sencillo

String

Valores Reales
Sintaxis: % <Alineacin><Ancho mnimo><Precisin> f
Precisin: Nmero de decimales detrs de la coma (por defecto 6)

Hacemos doble clic sobre los campos de texto que incluyen % para asociar una variable a los mismos:

Nota: Debido a un error de Motion


Pro la pantalla en idioma castellano
se muestra recortada impidiendo
ver e introducir informacin
importante, por ello se muestra la
misma pantalla pero en idioma
ingls.

En la seccin Variables vemos que tenemos varias posibilidades de las cuales se destacan la siguientes:
Invisible:

Introduciremos una variable tipo Bool con el fin de que el objeto asociado sea visible o no.
De esta forma podremos ocultarlo o mostrarlo segn el valor de dicha variable. Si no se
indica nada se toma FALSE como valor por defecto (el objeto nunca es invisible).

Input Disable:

Utilizado para impedir la modificacin del valor de la variable asociada al objeto mediante
la celda Textdisplay. En la imagen, al haberse introducido TRUE, la modificacin de la
variable asociada queda anulado pudiendo slo leer su valor.

Change Color:

Permite modificar el color del fondo del objeto mediante el uso de una variable, por
ejemplo para resaltar la aparicin de una alarma.

Textdisplay:

En esta celda se introduce la variable que se desea asociar con el objeto.

Motion Pro: Conceptos Bsicos

pgina 146/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

El uso de variables es algo peculiar: Al nombre de la variable debe anteceder siempre un punto. Si son
variables globales se hace referencia a ellas directamente (un punto y el nombre de la variable):

1.- Defino una variable global de nombre Posicion y tipo Real, para ello abro la pestaa Resources:

2.- Me dirijo a la carpeta Global Variables y la opcin Global_Variables para definir la nueva variable:

3.- Ahora abro la pestaa Visualizations

4.- En la visualizacin deseada creada anteriormente hacemos doble clic sobre el objeto que queremos
vincular a la nueva variable creada:

5.- Por ltimo vinculamos la variable Posicion de modo que se muestre en lugar de %0.1f (el valor de la
variable se presentar siempre con un decimal) . Observar como en la celda Textdisplay el nombre de la
variable se introduce con un punto delante.

Motion Pro: Conceptos Bsicos

pgina 147/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Si en lugar de global la variable es local (se encuentra definida dentro de un programa o bloque) debe
hacerse referencia a ella indicando en que bloque o programa se ha declarado:
1.- Dentro del programa Main me encuentro la variable Pos_Eje1 que es del tipo MC_ReadActualPosition
por lo que al ser un FB predefinido puedo hacer uso de todos sus parmetros de entrada y salida:

NOTA: En realidad la variable


Pos_Eje1 es un FB:

2.- Ahora abro la pestaa Visualizations

3.- En la visualizacin deseada creada anteriormente hacemos doble clic sobre el objeto que queremos
vincular a la nueva variable creada:

4.- Por ltimo vinculamos la variable .Main.Pos_Eje1.Posicion de modo que se muestre en lugar de %0.1f
(el valor de la variable se presentar siempre con un decimal) . Observar como en la celda Textdisplay el
nombre de la variable se introduce no slo con un punto delante sino tambin con el nombre del programa
donde ha sido declarada la variable Pos_Eje1.

Motion Pro: Conceptos Bsicos

pgina 148/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.4.- Los Placeholders

Si creamos una pantalla de visualizacin que, por ejemplo, muestre la posicin actual de un eje (Eje 1)
podemos luego llamarla dos veces desde una pantalla de visualizacin principal como si fuera un control
ms pero ambos controles mostrarn la posicin del mismo eje (el Eje 1) pues as fue programada dicha
pantalla de visualizacin secundaria. Sera una lstima y una prdida de recursos el hecho de tener que
crear 16 pantallas de visualizacin secundarias para mostrar la posicin de 16 ejes distintos (Eje1 a Eje16) y
ah entran en juego los Placeholders
Un Placeholder no es ms que un mtodo por el cual es posible intercambiar informacin entre una pantalla
de visualizacin secundaria y la pantalla de visualizacin principal que la utiliza. Mediante este intercambio
es posible indicar a la pantalla de visualizacin secundaria, si es llamada dos veces, que en la primera
instancia utilice, por ejemplo, un primer eje (Eje 1) y en la segunda, por ejemplo, el segundo (Eje2). De este
modo una misma pantalla de visualizacin secundaria puede ser reutilizada de una forma ms potente y
verstil.

10.4.1.- Creacin de una pantalla secundaria

Las pantallas de visualizacin secundarias se crean exactamente del mismo modo que las normales. Vamos
a crear una pantalla de visualizacin cualquiera que, por ejemplo, tenga el siguiente aspecto:

La diferencia con respecto a una pantalla de visualizacin general es que en este caso se hace uso de
variables delimitadas por el smbolo $ como parte de la ruta hacia la variable utilizada para interactuar con el
control. Observemos, por ejemplo, que hace el piloto Paro Emergencia:

Motion Pro: Conceptos Bsicos

pgina 149/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

En este control la ruta de la variable segn el valor de la cual se modificar el color del piloto es:
$Visu_axe$.FB_DriveStatus.ErrorStop
La variable Visu_axe es un marcador o variable de intercambio y se llama Visu_axe porque nosotros hemos
decidida llamarla as, de momento no significa nada, cuando esta pantalla sea llamada desde una pantalla
de visualizacin principal como si de otro control se tratara veremos la verdadera utilidad de la variable
Visu_axe.
Es posible emplear cuantos marcadores o placeholders deseemos ya que es posible que una pantalla de
visualizacin secundaria haga uso de bloques de funciones que se encuentren en secciones de programa
distintas. En este caso utilizaremos tres tipos distintos de placeholders.
Los dos siguientes Placeholder se encuentran en los siguientes lugares:

Placeholder: Visu_titulo

Placeholder: Visu_pos

Ahora compilamos el programa y ya tenemos creada la pantalla de visualizacin secundaria que, en este
caso, incluye tres Placeholders:
Visu_axe
Visu_titulo
Visu_pos

Motion Pro: Conceptos Bsicos

pgina 150/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.4.2.- Uso de los placeholders

En el apartado anterior creamos una pantalla secundaria utilizando tres placeholders. Ahora veremos como
se emplean estos placeholders de modo que la misma pantalla secundaria se utilice para mostrar
informacin de dos ejes distintos.
Los pasos seran los siguientes
1. Crear una pantalla de visualizacin nueva.
2. Aadir a la nueva pantalla un control de nombre el de la pantalla de visualizacin secundaria.

3. Repetimos la operacin aadiendo un segundo control idntico. De esta forma tendremos dos
controles uno para cada uno de los dos ejes que vamos a utilizar.

Motion Pro: Conceptos Bsicos

pgina 151/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

4. Hacemos doble clic sobre el objeto de la izquierda y aparecer una caja de configuracin del objeto.
Recordar que aunque esta pantalla de visualizacin secundaria se encuentra formada por mltiples
objetos estos no son accesibles cuando se llama como control desde otra pantalla de visualizacin:

5. Pulsamos sobre el botn Placeholder y observamos como en la ventana que aparece se muestran
precisamente los tres Placeholders que anteriormente hemos creado. Ahora vamos a asignar
variables a los tres:

Motion Pro: Conceptos Bsicos

pgina 152/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

6. Y por ltimo repetimos la operacin para el control de la derecha:

Como se ha visto en el apartado anterior a la hora de configurar el piloto relativo al Paro Emergencia
pusimos como variable que afectaba a su color la siguiente sentencia:
$Visu_axe$.FB_DriveStatus.ErrorStop
No obstante, vemos que a la hora de configurar los Placeholders desde la pantalla de visualizacin principal
configuramos el Placeholder Visu_axe como Main.Gest_X para el control relativo a la pantalla de
visualizacin secundaria de la izquierda y Main.Gest_Y para el de la derecha.
Es decir, en realidad el piloto Paro Emergencia del control de la izquierda se iluminar segn el valor de la
variable Main.Gest_X. FB_DriveStatus.ErrorStop mientras que el de la derecha lo har segn el valor de
la variable Main.Gest_Y. FB_DriveStatus.ErrorStop.

Motion Pro: Conceptos Bsicos

pgina 153/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

Los objetos Gest_X y Gest_Y son llamadas a un bloque de funciones:

Main.Gest_X

Main.Gest_Y

Este bloque de funciones contiene la siguiente secuencia de instrucciones:

Main.Gest_X.FB_DriveStatus.errorstop
o
Main.Gest_Y.FB_DriveStatus.errorstop

El segundo Placeholder, como es Eje X para el control izquierdo y Eje Y para el derecho se toman como
constantes tipo string ya que no figuran como salidas de ningn bloque de funciones.

Motion Pro: Conceptos Bsicos

pgina 154/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Respecto al campo indicador de posicin del eje la variable utilizada era $Visu_pos$.Position cuando
creamos la pantalla de visualizacin secundaria pero como a la hora de definir los Placeholder asignamos
Main.FB_PosicionX para el control izquierdo y Main.FB_PosicionY para el derecho tenemos que en
realidad el control izquierdo muestra el valor de Main.FB_PosicionX.Position y el derecho
Main.FB_PosicionY.Position.
Estos controles se encuentran en el programa principal:

El resultado es que al arrancar el programa ambos controles muestran informacin distinta: el de la izquierda
muestra informacin relativa al eje X mientras que el de la derecha al Y. No hemos tenido que crear dos
pantallas idnticas cada una con las variables de un eje u otro sino que slo hemos creado una nica
pantalla de visualizacin genrica que posteriormente hemos reutilizado para mostrar informacin de uno u
otro eje segn nos convena:

Motion Pro: Conceptos Bsicos

pgina 155/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.5.- Mostrar y ocultar objetos


Ahora vamos a jugar un poco con la visibilidad de controles. Lo primero que vamos a hacer es crear otro
objeto cuyo texto ser Activado

Hacemos clic tanto en el objeto cuyo texto es Desactivado como en el que es Activado y modificamos la
celda Invisible dentro de la seccin Variables introduciendo como variable Activar la cual se encuentra
declarada dentro del programa Main.

Como se observa en el caso del objeto Desactivado ser invisible cuando la variable Activar se encuentre
a TRUE mientras que el objeto Activado funcionar a la inversa porque la variable utilizada, la misma usada
en el otro objeto, se encuentra negada con la instruccin NOT. Si ahora arrastramos el objeto Activado
sobre el Desactivado (uno encima del otro) parecer que el texto cambia segn el valor de la variable
Activar.

Motion Pro: Conceptos Bsicos

pgina 156/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.6.- Modificar color de fondo


Tambin es posible modificar el color de fondo de un objeto segn el valor de una variable. Para ello
simplemente se ha de utilizar la celda Change Color.
1.- Hacer Clic sobre el objeto cuyo color de fondo deseamos modificar mediante el uso de una variable y tras
seleccionar Variables en el cuadro aparecido introducimos la instruccin NOT .Main.Activar (sin olvidar
aadir el punto inicial) en la celda Change Color:

2.- Posteriormente seleccionamos Color y mediante el uso de los botones Inside modificamos el Color y el
Alarm Color en verde y rojo respectivamente:

Cuando .Main.Activar sea TRUE como la expresin se encuentra negada el equivalente ser FALSE y por
tanto no se cambiar el color, el color por defecto ser Verde. Cuando .Main.Activar sea FALSE el valor
negado ser TRUE y se cambiar el color del crculo al color que se haya definido como Alarm Color, en
este caso Rojo. Por tanto, segn el valor de la variable asociada el icono que representa un piloto cambiar
a Verde para indicar que el eje se encuentra activado o bien a Rojo para indicar que se encuentra
desactivado.

Motion Pro: Conceptos Bsicos

pgina 157/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.7.- Modificar color de texto


Otras opciones interesantes seran modificar el color del texto y no del fondo. Curiosamente debe hacerse
de forma distinta, no es posible cambiar entre dos colores predefinidos mediante el uso de una variable tipo
Bool como tena lugar con el fondo sino que se hace asignando directamente el color deseado sobre la
opcin adecuada:

NOTA: En este caso la matriz ColorTexto[1]


del programa Main contiene el color que
deseamos adopte el texto en formato RGB.
Por ejemplo:
ColorTexto[1]:=16#000000 (negro)
ColorTexto[1]:=16#0000FF (rojo).
El formato es, por tanto 16#BBGGRR (siendo
BB=Azul, GG=Verde, RR=Rojo)

Motion Pro: Conceptos Bsicos

pgina 158/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.8.- Comportamiento ante un evento


Otra informacin importante es que deseamos hacer cuando se pulsa sobre un objeto, podemos cambiar el
valor de una variable, visualizar otra pgina o bien ejecutar una secuencia de rdenes. Tenemos varias
posibilidades:

NOTA: En este caso cada vez que pulsemos


sobre el objeto se invertir el valor del
contenido de la variable .Main.Habilitar. Si
originalmente es TRUE pasar a ser FALSE y
viceversa. La variable debe ser
obligatoriamente tipo Bool.

NOTA: En este caso mientras se mantenga


pulsado el ratn sobre el objeto el valor de la
variable .Main.Habilitar pasar a ser TRUE y
cuando se deje de pulsar volver a ser FALSE
(a menos que se haya seleccionado la opcin
Tap FALSE). La variable debe ser
obligatoriamente tipo Bool.

NOTA: Es de utilidad cuando se desea


navegar entre diversas pgina de
visualizacin. En este caso al pulsar sobre el
objeto la pantalla de visualizacin actual
quedar oculta y en su lugar se mostrar la de
nombre SQ_Demo. Debe indicarse como dato
el nombre de una pantalla de visualizacin
vlida.

Motion Pro: Conceptos Bsicos

pgina 159/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

NOTA: Esta opcin es bastante interesante


pues nos permite ejecutar un microprograma.
Aunque las posibilidades de este
microprograma apenas se reducen a meras
asignaciones se pueden realizar bastantes
cosas ya que podemos vincular las variables
involucradas para mostrar, ocultar, modificar
colores y saltos de pgina.

NOTA: En el desplegable superior se selecciona la instruccin


que se desea ejecutar (en este caso una asignacin).
Posteriormente aparecen los elementos necesarios para
efectuar la instruccin seleccionada. Por ejemplo podemos
escribir .Main.VerDetalle en la celda izquierda y TRUE en la
derecha. Con el botn ADD aadiremos la nueva instruccin al
programa (con los otros botones podemos eliminar una
instruccin o subir o bajar un nivel la lnea de programa
seleccionada)

OJO: La ejecucin no tiene lugar en tiempo de ejecucin por lo que si las dos ltimas lneas fueran:
.Main.IndOrden:=1
.Main.IndSecuencia:=.Main.Orden[.Main.IndOrden]
El sistema no actualizar el valor de la variable .Main.IndOrden hasta el siguiente ciclo de scan y por tanto
el valor de .Main.IndSecuencia no sera correcto ya que .Main.Orden[.Main.IndOrden] posiblemente no
valga lo mismo que .Main.Orden[1] aunque una lnea antes se ha ordenado que .Main.IndOrden:=1.

NOTA: En este caso simplemente se indica


que va a introducirse un valor cualquiera en la
variable asociada y adems con lmites de
introduccin de modo que el valor introducido
no puede ser ni menor de 1 ni mayor de 9999.
Aunque se permite la introduccin de valores
decimales no es posible el uso de caracteres.

Motion Pro: Conceptos Bsicos

pgina 160/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.9.- Uso de Bitmaps


Podemos incluir bitmaps creados por aplicaciones de terceros con objeto de mejorar estticamente la
aplicacin o bien de mostrar informacin de una forma ms clara. Disponemos para ello de una herramienta
especfica accesible desde la barra de iconos de la pantalla de visualizacin:

Icono Bitmap
Para la creacin de un objeto bitmap hay que seguir los siguientes pasos:
1. Seleccionar la herramienta Bitmap en la barra de iconos superior.
2. Hacer clic con el ratn sobre la pantalla de visualizacin y sin soltar arrastrar el ratn hasta que el
cuadro dibujado posea las dimensiones deseadas para el bitmap que se desea incluir.
3. Al soltar el botn se abrir una ventana donde podremos escoger el bitmap.
4. El bitmap quedar incorporado al objeto aadido a la pantalla de visualizacin, si no posee las
dimensiones adecuadas podemos redimensionarlo mediante el uso del ratn.
Podemos ir modificando las propiedades del objeto bitmap recin importado haciendo doble clic sobre l.
Ruta donde se encuentra el bitmap.
Con el botn Transparent Color podemos
seleccionar uno de los colores del bitmap y
hacer que este sea transparente activando
la opcin Background transparent.
Muestra u oculta los mrgenes del bitmap.

Embedded: La imagen queda incorporada al proyecto.


Link to File: La imagen se toma de un bitmap externo
(si luego se modifica su ubicacin luego Motion Pro no
podr encontrarla y el objeto bitmap no se mostrar
correctamente).
Anisotropic: Al escalar el rea del objeto el bitmap cambiar sus dimensiones adaptndolas a la nueva rea del objeto sin
conservar la proporcionalidad original entre el ancho y el alto.
Isotropic: Al escalar el rea del objeto el bitmap cambiar sus dimensiones adaptndolas a la nueva rea del objeto pero
conservando la proporcionalidad original entre el ancho y el alto.
Fixed: No importa lo mucho que escalemos el rea del bitmap, el dibujo no se escalar manteniendo el tamao original.

Un ejemplo de uso de bitmaps en una pantalla de visualizacin podra ser la siguiente:

Motion Pro: Conceptos Bsicos

pgina 161/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

10.10.- Reutilizacin pantallas


Hasta ahora se ha creado una nica pantalla pero lo cmodo es crear varias individuales de modo que
puedan ser llamadas desde una nica pantalla general. Cuando ms compleja es la aplicacin ms
necesario es la segmentacin de la pantalla que queremos visualizar en varias ms pequeas (por ejemplo
una pantalla para las alarmas, otra para la graficacin de informacin, otra para ajustar parmetros de PID,
otra para introducir datos de aplicacin, etc). Desde la pantalla de visualizacin principal y mediante el uso
de botones o controles, podremos ir llamando una subpantalla u otra.
Vamos a aadir una carpeta llamada Plantillas a fin de contener las pginas que crearemos. Para ello
pulsaremos con el botn derecho sobre la carpeta Visualizaciones y seleccionaremos la opcin Carpeta
nueva:

Una vez creada podemos modificar su nombre situndonos sobre la nueva carpeta, pulsando el botn
derecho del ratn y seleccionando la opcin Cambiar nombre del objeto. Llamaremos Plantillas a la
nueva carpeta.

Motion Pro: Conceptos Bsicos

pgina 162/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

A continuacin iremos creando una serie de pantallas de visualizacin individuales y las iremos
introduciendo en la nueva carpeta Plantillas. En el presente ejemplo disponemos de hasta cuatro pantallas
(SQ_Datos, SQ_Grafica, SQ_Info y SQ_Tareas) introducidas en la carpeta Plantillas. Una vez creadas
vamos a utilizarlas dentro de otra pantalla de visualizacin general a la que llamaremos SQ_Secuencia y que
se encuentra fuera de la carpeta Plantillas:

Hacemos doble clic sobre SQ_Secuencia y empezaremos a llamar al resto de pantallas de usuario ya
creadas. Para ello se pulsa sobre el icono Visualizacin y se crea una nueva visualizacin .

Motion Pro: Conceptos Bsicos

pgina 163/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Observar en la imagen anterior como al soltar el ratn tras dibujar un objeto de visualizacin aparece un
listado de visualizaciones disponibles donde se encuentran las cuatro que hemos creado anteriormente con
lo que podemos aadirlas en una nueva pantalla de visualizacin con la ventaja de que pueden ser
empleadas varias veces y en distintas pantallas. De las cuatro pantallas creadas utilizaremos la llamada
SQ_Tareas para incluirla dentro de la pantalla de visualizacin SQ_Secuencia:

Aadiremos el resto de pantallas individuales superpuestas unas encima de las otras a la izquierda de la
anterior y crearemos unos rectngulos que harn de botones que nos permitirn navegar entre ellas:

Aadidos empleando el icono Visualizacin:

Aadido empleando el icono Bitmap:

Aadidos empleando el icono Rectngulo:

Motion Pro: Conceptos Bsicos

pgina 164/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

NOTA: Aunque existe una herramienta especfica para la creacin de botones


se ha preferido crear los
botones con la herramienta de creacin de rectngulos ya que a un rectngulo se le puede cambiar el color
de fondo y por tanto es ms esttico que un botn.
Una vez pasemos a modo ONLINE el aspecto de la pantalla SQ_Secuencia ser parecida a la mostrada en
la siguiente imagen:

Desde esta nica pantalla de visualizacin podemos controlar la totalidad de la aplicacin de una forma ms
cmoda, rpida y sencilla.

Motion Pro: Conceptos Bsicos

pgina 165/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

11.- EXPORTACION / IMPORTACION PROYECTOS FORMATO ASCII


Existe la posibilidad de poder exportar/importar el proyecto en formato ASCII. Esto es especialmente til
cuando se desean realizar modificaciones o bien crear proyectos mediante entornos de terceras personas,
como por ejemplo el SGS, que luego puedan ser abiertos y compilados por Codesys.

11.1.- Exportacin

nicamente se utiliza la opcin Exportar del men superior Proyecto.

Tras seleccionar la opcin Exportar se abrir una ventana donde se nos preguntar que queremos exportar
y si queremos generar un nico fichero de exportacin o varios (indicamos que queremos exportar todo y
que slo nos interesa un nico fichero de exportacin). Tras pulsar el botn Aceptar se abrir otro cuadro
donde se nos preguntar con que nombre queremos exportar el fichero de proyecto en formato ASCII
(observar que tendr extensin EXP) lo cual tendr lugar tras pulsar sobre el botn Guardar.

Motion Pro: Conceptos Bsicos

pgina 166/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

El fichero creado tiene una estructura bastante particular cuyo anlisis escapa del cometido del presente
documento pero dado que es un formato ASCII puede ser descifrado y posteriormente editado mediante
programas externos para, por ejemplo, automatizar la creacin de programas desde un entorno ms
amigable que Codesys.
Por ejemplo, en la imagen siguiente, puede verse un programa denominado Habilitar formado por un FB con
dos nicas entradas (Run e Izquierdo).

La seccin del archivo en formato ASCII que describe este mismo programa es el siguiente:
(* @NESTEDCOMMENTS := 'Yes' *)
(* @PATH := '' *)
(* @SYMFILEFLAGS := '2048' *)
PROGRAM Habilitar
VAR
Lexium15: MC_Power;
END_VAR
VAR_INPUT
Run: BOOL;
END_VAR
(* @END_DECLARATION := '0' *)
_CFC_BODY
_ELEMENT
_ID: 12
_MACROID: -1
_POS: 4, 3
_TYPE: _INPUT
_TEXT: Run
_NEGATE: 0
_CONNECTOR:
_END
_ELEMENT
_ID: 10
_MACROID: -1
_POS: 8, 1
_TYPE: _BOX
_INSTANCE: 1
_INSTANCENAME: Lexium15
_TYPENAME: MC_Power
_ENENO: 0
_INPUTS: 4
_IN
_INPUTID: 12
_INPUTIDX: 0
_NEGATE: 0
_END
_IN
_INPUTID: 12
_INPUTIDX: 0
_NEGATE: 0
_END

_IN
_INPUTID: 12
_INPUTIDX: 0
_NEGATE: 0
_END
_IN
_INPUTID: 11
_INPUTIDX: 0
_NEGATE: 0
_END
_OUTPUTS: 3
_OUT
_NEGATE: 0
_CONNECTOR:
_END
_OUT
_NEGATE: 0
_CONNECTOR:
_END
_OUT
_NEGATE: 0
_CONNECTOR:
_END
_PARAMETERS: 0
_END
_ELEMENT
_ID: 11
_MACROID: -1
_POS: 6, 6
_TYPE: _INPUT
_TEXT: Izquierdo
_NEGATE: 0
_CONNECTOR:
_END
END_PROGRAM

Motion Pro: Conceptos Bsicos

pgina 167/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

11.2.- Importacin
Para importar un fichero previamente grabado (o creado) en formato ASCII tienen que tenerse en cuenta
ciertas normas bsicas:
1. Debe abrirse un nuevo proyecto vacio definiendo el tipo de PLC que se controlar el cual debe
coincidir con el mismo PLC que controla el proyecto ASCII (de lo contrario existirn libreras que no
sern cargadas adecuadamente). Si el fichero ASCII corresponde a un proyecto pensado para
Lexium Controller V01 ha de abrirse Codesys para controlar un Lexium Controller V01.

2. Tras crear el nuevo proyecto en Codesys debe eliminarse todo programa creado automticamente:

Eliminar
Programa

Motion Pro: Conceptos Bsicos

pgina 168/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

3. Eliminar todas las libreras que se crean por defecto ya que las referencias a las libreras utilizadas
se encuentran en el fichero ASCII y podran darse problemas en las versiones de las libreras
utilizadas en el proyecto vacio y en el proyecto a cargar.

Eliminar
Libreras

4. Por ltimo hay que indicar a Codesys las rutas de todas las libreras utilizadas en el archivo ASCII ya
que de lo contrario no podrn ser encontradas. Esto se hace desde el men Proyecto y opcin
Opciones:

Aadir ruta
Libreras

Motion Pro: Conceptos Bsicos

pgina 169/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

5. Llegados a este punto ya puede cargarse el proyecto en formato ASCII mediante la opcin Importar
del men Proyectos.

6. Antes de compilar el programa recin importado hay que vigilar que las opciones de compilacin
sean las deseadas pues estas no se guardan en el proyecto ASCII cuando se exporta. En especial
prestar especial atencin a la opcin Compilar LREAL como REAL ya que debera estar
seleccionada y no lo est cuando se importa un fichero ASCII

Motion Pro: Conceptos Bsicos

pgina 170/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

12.- COMUNICACIONES

En este captulo se irn tratando de las formas conocidas de comunicar un elemento externo con la Lexium
Controller de modo que puedan intercambiarse datos. Hay varias formas:

12.1.- Modbus RS485

Todos los modelos de Lexium Controller disponen de serie de un puerto RS485 que actua como Esclavo de
Modbus y que puede ser utilizado para conectar distintos tipos de perifricos.

Puerto RS485
Herramienta de Programacin: Cable PowerSuite (Ref. VW3A8106)
Conexin HMI: Rango de cables Magelis.
Terminal Grfico Remoto: Cable Terminal ATV71
Opcin Bluetooth
Solucin completa de cableado incluyendo repartidores y derivaciones

Las caractersticas del puerto pueden alterarse desde la pestaa Recursos y la opcin Explorador PLC.

Lnea de
comandos
Ventana
Respuestas

En la lnea de comandos podremos utilizar las siguientes posibilidades para ajustar el puerto RS485:
Mbusinf :
Mbaddr<n>:
Mbusbaudrate <baud>:

Muestra informacin sobre el setting actual del puerto


Direccin del puerto, en <n> ( 131) ( 0 es esclavo desactivado)
Asigna la velocidad de comunicacin (9600,19200,38400)

Para todas las configuraciones el protocolo utiliza 8 bits de datos, sin paridad y 1 bit de stop

Motion Pro: Conceptos Bsicos

pgina 171/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

Para poder acceder a las diferentes variables, bien para modificar su valor bien para leerlo, es preciso,
primero, direccionarlas adecuadamente:

Registro donde quedar


direccionada la variable de
programa

Variable de
programa

Como se observa, para direccional variables estas deben ser Globales y utilizarse la instruccin AT para
vincular una variable de programa con un registro de memoria que ser el que utilizar el elemento remoto
para la comunicacin.
Notar como aunque la variable se asigna a un registro de tipo WORD, la variable puede definirse como INT a
fin de poder trabajar con nmeros negativos. En el ejemplo tambin se observa un ejemplo de acceso al bit y
que todos los direccionamientos se realizan iniciando las variables con algn valor por defecto.

12.2.- Conexin HMI por RS485

Por poner un simple ejemplo a lo detallado en el apartado anterior para conectar un Terminal HMI va
Modbus RTU a travs del puerto RS485. La direccin del equipo destino, el LMC, puede especificarse desde
el Explorador PLC (en este caso se ha fijado a 2)

Y por tanto en Vijeo Designer:

Motion Pro: Conceptos Bsicos

pgina 172/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

12.3.- I/O Scanning

El protocolo I/O Scanning es un protocolo Modbus sobre TCP/IP que permite intercambiar 10 palabras de
entrada y 10 de salida de forma cclica entre la LMC y un dispositivo remoto que admita este servicio.

Read

Write

Ethernet TCP/IP

Write

Read

ETH_O0 AT %QW2

ETH_I0 AT %IW2

ETH_O1 AT %QW3

ETH_I1 AT %IW3

ETH_O10 AT %QW12

ETH_I10 AT %IW12

Para configurar correctamente este servicio primero hay que configurar en el navegador de dispositivos la
existencia de este servicio:

Motion Pro: Conceptos Bsicos

pgina 173/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

Los pasos a seguir seran los siguientes:


1.
2.
3.
4.
5.

Ir a pestaa Recursos.
Doble clic sobre Configuracin del Mando.
Botn derecho sobre icono Lexium Controller V01.
Seleccionar Anexar Subelemento.
Escoger Ethernet.

Tras aadir el subelemento Ethernet tendremos disponibles 10 palabras de entrada y 10 de salida que
podremos configurar como deseemos. Por defecto estas 10 palabras tienen asignado un nombre que a
todos los efectos se comporta como una variable global ETH_I0 a ETH_I10 para las entradas y ETH_O0 a
ETH_O10 para las salidas:

10 I/O de
intercambio con un
PLC con servicio I/O
scanner

Ahora se debera configurar el PLC, el cual puede ser cualquiera que ofrezca el servicio I/O Scanning:

MB addr

LMC

Premium/M340

ETH_I0

%MW100

ETH_I1

%MW101

ETH_I10

%MW110

ETH_O0

%MW0

ETH_O1

%MW1

ETH_O10

%MW10

NOTA : (ETH_I0 y ETH_O0 son palabras reservadas y no pueden ser utilizadas):

Motion Pro: Conceptos Bsicos

pgina 174/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Por ltimo hay que activar el servicio desde el Servidor Web de la LMC. Para ello utilizaremos cualquier
navegador de Internet y accederemos al Servidor Web de la LMC mediante su IP:

Como por defecto el IOScanning se encuentra desactivado lo activaremos:

USER por
defecto

Motion Pro: Conceptos Bsicos

pgina 175/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

Y por ltimo podremos activar o desactivar el servicio desde programa Motion Pro mediante la variable
IOScan_Activation que se crea automticamente al aadir el subelemento Ethernet dentro de la categora
Ethernet Parameters:

Motion Pro: Conceptos Bsicos

pgina 176/180

www.infoPLC.net

Knowledge Base

Motion Pro: Conceptos Bsicos

13.- PROBLEMAS Y ERRORES


13.1.- Errores de representacin en pantallas Visualizacin
A veces sucede que una visualizacin que a priori parece correcta se muestra de forma inadecuada, por
ejemplo, en el siguiente ejemplo se muestra a la izquierda la representacin correcta y a la derecha una
posible representacin inadecuada (desaparecen ciertos campos a pesar de que no se ha utilizado ninguna
opcin de ocultacin)

Incorrecto

Correcto

La solucin parece ser la seleccin de la opcin Apply to all visual elements dentro de la seccin Security.

Motion Pro: Conceptos Bsicos

pgina 177/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

13.2.- Prdida inexplicable de las comunicaciones

En ocasiones tras arrancar el programa mediante F5 (Run) todo parece ir bien y de pronto el PC deja de
comunicar con el Lexium Controller. Cualquier intento posterior de conexin es intil y slo queda apagar el
Lexium Controller para que ste pierda el programa y volver a transmitrselo.
Se ha detectado que esto puede ocurrir cuando el programa posee un error que no es de sintaxis (los
errores de sintaxis generalmente aparecen a la hora de compilar) como por ejemplo intentar acceder a un
ndice inexistente de un array o una divisin entre 0.
En estos casos se recomienda aadir un Breakpoint y analizar el comportamiento del programa lnea a lnea
(ejecucin paso a paso) hasta localizar primero la seccin y luego la instruccin donde se produce el error.

13.3.- Error inexplicable tipo b404 en los Lexium05

En programas muy sencillos se suele producir un error extrao en los Lexium05 tras ponerlos en RUN. Esto
suele presentarse cuando justo despus de encontrarse en RUN se intenta alguna operacin de transmisin
de informacin por el bus CAN o ejecutar una instruccin que implique movimiento.
La solucin es aplicar un retardo tras recibir el OK de Lexium05 involucrados antes de proseguir con
secciones de programa que impliquen comunicaciones o movimientos:

Pequea temporizacin antes de


seguir con el programa.

Motion Pro: Conceptos Bsicos

pgina 178/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

13.4.- Se corta la comunicacin al transmitir un proyecto

Se ha detectado que una vez compilado un programa a la hora de transmitirlo hacia la LMC la transmisin se
corta antes de finalizar generndose una prdida de comunicaciones general y necesitndose realizar un
reset de la LMC antes de volver a intentar una comunicacin con ella.
Este tipo de fallo suele presentarse cuando se utiliza un EDS y la primera direccin declarada no es correcta.
En la imagen que se observa a continuacin vemos que la primera direccin es %QB1 pero aunque a priori
parece correcta porque el programa compila correctamente en la prctica la LMC no lo acepta.
La primera palabra aceptable se puede calcular fcilmente cogiendo la primera palabra en formato Double,
%QD1 (de 32 bits), haciendo la equivalencia primero a Word, %QW2 (de 16 bits), y finalmente a Byte,
%QB4 (de 8 bits). As pues la primera palabra en formato Byte no puede ser %QB1 sino %QB4

Como en este caso %QB1 forma parte de las direcciones de salida modificamos a mano dicha direccin
introduciendo %QB4 en lugar de %QB1 y recompilamos para mover el resto de direcciones. A partir de aqu
los diferentes EDS que se vayan aadiendo, al direccionarse secuencialmente a partir de la ltima direccin
utilizada, no presentarn este problema.

Motion Pro: Conceptos Bsicos

pgina 179/180

Knowledge Base

www.infoPLC.net

Motion Pro: Conceptos Bsicos

13.5.- La tabla CAM hace que el eje Vibre

Se ha detectado que al utilizar para definir una tabla CAM la estructura SMC_CAMTable_UINT_128_2 o
cualquiera similar que utilice valores enteros (no decimales) el eje, al tener que seguir valores no reales sino
redondeados, se desplace respecto al eje maestro de forma anmala, como a golpes. Esto es as porque al
redondear los valores el comportamiento no sigue lo que la teora marca. Observar por ejemplo las
siguientes tablas:

La de la derecha es igual que la de la izquierda solo que se toman los valores como enteros en lugar de
cmo reales por lo que el eje, al intentar seguirlos, tendr un error. En los primeros puntos, por ejemplo, el
eje esclavo debera desplazarse pero sin embargo al tomar los valores como enteros en realidad se queda
quieto. Esto es tanto ms evidente cuanto ms altas sean las unidades de usuario: si se trabaja con dcimas
de milmetro la vibracin se notar menos que si se trabaja con milmetros.
Lo recomendable, en estos casos es trabajar con estructuras de tablas CAM que permitan nmeros
decimales, por ejemplo: SMC_CAMTable_LREAL_128_2.
NOTA : No utilizar la estructura SMC_CAMTable_REAL_128_2 pues el comportamiento es totalmente
errneo (si bien al compilar el programa no se genere ningn tipo de error de compilacin).

Motion Pro: Conceptos Bsicos

pgina 180/180

You might also like