0% encontró este documento útil (0 votos)
281 vistas256 páginas

Man Dds MC System

Fagor
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
281 vistas256 páginas

Man Dds MC System

Fagor
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

DDS - MC: MOTION CONTROL

SISTEMA DDS - MC
Manual

REF. 0406

(SOFT [Link])
Título Sistema DDS - MC

Tipo de documentación Descripción de los lenguajes de PLC y MC.

Denominación (Model) DDS - MC: MOTION CONTROL [CAS.]

Versión (Version) 0406

Software versión 06.03

Documento electrónico MAN_DDS_MC.pdf

Headquarters FAGOR AUTOMATION [Link].


Bº San Andrés 19, Apdo. 144
E-20500 ARRASATE-MONDRAGON
[Link]
info@[Link]

Teléfono: 34-943-719200
Fax: 34-943-771118
(Servicio de asistencia técnica)

La información descrita en este manual puede estar sujeta


a variaciones motivadas por modificaciones técnicas.
FAGOR AUTOMATION, S. Coop. se reserva el derecho de
modificar el contenido del manual, no estando obligada a
notificar las variaciones.

DDS - MC

Todos los derechos reservados. No puede reproducirse ninguna parte (SOFT [Link])
de esta documentación, transmitirse, transcribirse, almacenarse en un
sistema de recuperación de datos o traducirse a ningún idioma sin per-
miso expreso de Fagor Automation [Link].

3
Evolución

Versión Hechos

0002 Versión preliminar en CD - ROM

0103 Primera versión 04.01


Programación PLC
Programación MC
Cam Switch

0112 Versión 04.02


Sincronización de ejes
Index
Protocolo DNC50 para el regulador digital

0406 Versión 06.03


Protocolo ModBus para el regulador digital
Leva electrónica
Editor de levas

DDS - MC

(SOFT [Link])

4
Documentación relacionada

Selección de productos

Inglés Fagor Motors and Drives Ordering Handbook

Referencia rápida

Inglés Fagor Modular Drives and Motors Quick Reference

Inglés Fagor Compact Drives and Motors Quick Reference

Descripción, instalación y ajuste de servoaccionamientos

Castellano Sistema de regulación DDS


Inglés DDS Drive System

Castellano Fagor Motion Control DDS - MC


Inglés DDS - MC System

Descripción e instalación de motores

Castellano Motor AC de cabezal: SPM


Inglés SPM AC Spindle Motor

Castellano Motor AC de cabezal: FM7


Inglés FM7 AC Spindle Motor

Castellano Motores AC de eje: FXM y FKM


Inglés FXM and FKM AC Axis Motor

DDS - MC

(SOFT [Link])

5
Condiciones de garantía

GARANTÍA INICIAL

Todo producto fabricado o comercializado por FAGOR tiene una garantía de 12 meses para el
usuario final.

Para que el tiempo que transcurre entre la salida de un producto desde nuestros almacenes
hasta la llegada al usuario final no juegue en contra de estos 12 meses de garantía, el fabricante
o intermediario debe comunicar a FAGOR el destino, identificación y fecha de instalación de la
máquina a través de la Hoja de Garantía que acompaña a cada producto.

La fecha de comienzo de la garantía para el usuario será la que figura como fecha de insta-
lación de la máquina en la Hoja de Garantía.

Este sistema nos permite asegurar los 12 meses de garantía al usuario.

FAGOR da un plazo de 12 meses al fabricante o intermediario para la instalación y venta del pro-
ducto, de forma que la fecha de comienzo de garantía puede ser hasta un año posterior a la de sal-
ida del producto de nuestros almacenes, siempre y cuando se nos haya remitido la hoja de garantía.
Esto supone en la practica la extensión de la garantía a dos años desde la salida del producto de los
almacenes de Fagor. En caso de que no se haya enviado la citada hoja, el periodo de garantía final-
izará a los 15 meses desde la salida del producto de nuestros almacenes.

FAGOR se compromete a la reparación o sustitución de un producto desde su lanzamiento, y hasta


8 años después de la fecha de su desaparición de catálogo.

Compete exclusivamente a FAGOR el determinar si la reparación entra dentro del marco definido
como garantía.

CLÁUSULAS EXCLUYENTES

La reparación se realizará en nuestras dependencias. Por tanto, quedan fuera de la citada garantía
todos los gastos de transporte, o los ocasionados en el desplazamiento de su personal técnico para
realizar la reparación de un equipo, aún estando éste dentro del período de garantía antes citado.

La citada garantía se aplicará siempre que los equipos hayan sido instalados de acuerdo con
instrucciones, no hayan sido maltratados o sufrido desperfectos por accidente o negligencia, y no
hayan sido intervenidos por personal no autorizado por FAGOR.

Si una vez realizada la asistencia o reparación, la causa de la avería no es imputable a nuestro pro-

6 ducto, el cliente está obligado a cubrir todos los gastos ocasionados, ateniéndose a las tarifas
vigentes.

No están cubiertas otras garantías implícitas o explícitas y FAGOR AUTOMATION no se hace


responsable bajo ninguna circunstancia de otros daños o perjuicios que pudieran ocasionarse.

DDS - MC CONTRATOS ASISTENCIA

Están a disposición del cliente Contratos de Asistencia y Mantenimiento tanto para el periodo de garantía
como fuera de él.

(SOFT [Link])

6
! ! ! índice

Índice general
1. INTRODUCCIÓN ................................................................................................................ 1
Consideraciones generales .............................................................................................. 1

2. ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC.................................................... 1


Introducción ...................................................................................................................... 1
Edición de programas de PLC y MC ................................................................................ 1
Compilación de programas de PLC y MC ........................................................................ 7
Envío de programas de PLC y MC al regulador ............................................................... 9
ANEXO 1. PROGRAMA ESTÁNDAR DE PLC.............................................................. 10
ANEXO 2. PROGRAMA ESTÁNDAR DE MC ............................................................... 19

3. INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]............................................... 1


Propiedades generales..................................................................................................... 1
Recursos del PLC............................................................................................................. 2
Estructura modular del programa de PLC ........................................................................ 3
Ejecución del programa de PLC ....................................................................................... 7

4. RECURSOS DEL PLC........................................................................................................ 1


Entradas ........................................................................................................................... 1
Salidas .............................................................................................................................. 1
Marcas .............................................................................................................................. 2
Variables ........................................................................................................................... 3
Registros........................................................................................................................... 4
Temporizadores ................................................................................................................ 5
Modo de funcionamiento del temporizador....................................................................... 9
Reloj interno.................................................................................................................... 17
Contadores ..................................................................................................................... 18

5. PROGRAMACIÓN DEL PLC .............................................................................................. 1


Estructura de un módulo................................................................................................... 1
Proposiciones directivas ................................................................................................... 2
Instrucciones de consulta ................................................................................................. 7
Operadores ..................................................................................................................... 10
Instrucciones de acción .................................................................................................. 12
DDS - MC
Instrucciones de acción binarias..................................................................................... 13
Instrucciones de acción de ruptura de secuencia........................................................... 15
Instrucciones de acción aritméticas ................................................................................ 17
Instrucciones de acción lógicas ...................................................................................... 22
Instrucciones de acción específicas ............................................................................... 24
(SOFT [Link])
Resumen de los comandos de programación del PLC .................................................. 25
Listado de errores de compilación interna del PLC ........................................................ 30
Listado de errores de ejecución en el PLC ..................................................................... 32
ANEXO 1 ........................................................................................................................ 34

i
! ! ! índice

6. CAM SWITCH..................................................................................................................... 1

7. INTRODUCCIÓN AL SISTEMA MOTION CONTROL [MC] ............................................... 1


Introducción ...................................................................................................................... 1
Modos de funcionamiento ( manual - automático ) .......................................................... 1
Ejecución del programa de MC ........................................................................................ 4

8. PROGRAMACIÓN EN LENGUAJE MC ............................................................................. 1


Estructura y elementos del programa............................................................................... 1
Elementos reservados...................................................................................................... 3
Variables, constantes y parámetros ................................................................................. 5
Operadores....................................................................................................................... 6
Expresiones...................................................................................................................... 8
Sentencias........................................................................................................................ 9
Señales START, STOP, RESET y ABORT.................................................................... 26
Funciones de habilitación ............................................................................................... 28
Resumen de comandos de programación de MC .......................................................... 29
ANEXO 1 ........................................................................................................................ 30
ANEXO 2 ........................................................................................................................ 32
ANEXO 3 ........................................................................................................................ 33
ANEXO 4 ........................................................................................................................ 34
ANEXO 5 ........................................................................................................................ 35
ANEXO 6 ........................................................................................................................ 36
ANEXO 7 ........................................................................................................................ 37
ANEXO 8 ........................................................................................................................ 38
ANEXO 9 ........................................................................................................................ 39

9. EJEMPLOS DE PROGRAMACIÓN.................................................................................... 1
Configuración hardware ................................................................................................... 1
Módulo manual del programa de MC ............................................................................... 2
Ejemplo 111...................................................................................................................... 7
Ejemplo 222...................................................................................................................... 8
Ejemplo 333.................................................................................................................... 10
Ejemplo 444.................................................................................................................... 13
Ejemplo 555.................................................................................................................... 15
Ejemplo 666.................................................................................................................... 18
Ejemplo 777.................................................................................................................... 20
Ejemplo 888.................................................................................................................... 22
IV
10. SINCRONIZACIÓN........................................................................................................... 1
Consideraciones iniciales ................................................................................................. 1
Posición del eje maestro .................................................................................................. 1
DDS - MC Relaciones de sincronización ........................................................................................... 2
Sentencias de sincronización ........................................................................................... 8
Efecto de sentencias en el ritmo de ejecución ................................................................. 9
Efecto de las señales de control..................................................................................... 12

(SOFT [Link])
11. INDEX............................................................................................................................... 1
Introducción ...................................................................................................................... 1
Comandos, variables y parámetros.................................................................................. 1
Modo de trabajo................................................................................................................ 4

ii
! ! ! índice

ANEXO 1 .......................................................................................................................... 7

12. PROTOCOLO DE COMUNICACIÓN DNC50................................................................... 1


Función, capacidades y limitaciones ................................................................................ 1
Protocolo DNC.................................................................................................................. 1
Transmisión de un mensaje.............................................................................................. 5
Comunicación ................................................................................................................... 7
Órdenes ............................................................................................................................ 8
Lectura / escritura de variables de PLC y MC ................................................................ 11

13. PROTOCOLO DE COMUNICACIÓN MODBUS............................................................... 1


Comunicación mediante protocolo MobBus ..................................................................... 1
Selección del protocolo de comunicación......................................................................... 1
Estructura de los mensajes en ModBus ........................................................................... 2
Recursos........................................................................................................................... 6

14. LEVA ELECTRÓNICA ...................................................................................................... 1


Consideraciones iniciales ................................................................................................. 1
Posición del eje maestro................................................................................................... 1
Relación de sincronización de levas................................................................................. 2
Perfil de leva ..................................................................................................................... 4
Modo de operación ........................................................................................................... 4
Sentencias de sincronización de levas ............................................................................. 7
Efecto de sentencias en el ritmo de ejecución ............................................................... 10
Efecto de las señales de control ..................................................................................... 12

15. EDITOR DE LEVAS.......................................................................................................... 1


Introducción ...................................................................................................................... 1
Enfoque inicial de diseño .................................................................................................. 1
Condiciones de diseño ..................................................................................................... 2
Interfaz de usuario ............................................................................................................ 4

DDS - MC

(SOFT [Link])

iii
! ! ! índice

DDS - MC

(SOFT [Link])

iv
INTRODUCCIÓN
1
Consideraciones generales

Un regulador gobierna el comportamiento de un motor mediante un


software de control, controlando el accionamiento obedeciendo unas
consignas de posición. Tanto el autómata programable como el
software de MC trabajan conjuntamente para establecer dicho
software de control.

El autómata programable (PLC) está pensado para que el regulador


trabaje junto al software de MC sin necesidad de un PLC externo o
un CNC que lo controle.

Con la finalidad de eliminar esta dependencia y hacer trabajar al


sistema regulador unido al software de Motion Control de forma
autónoma se introduce el PLC. Así, el software de Motion Control será
el encargado de generar la consigna de posición para el regulador
cuando funciona en estado autónomo y, como el software MC no tiene
ningún acceso de manera directa a las entradas y salidas del sistema
regulador necesitará del PLC para establecer una interacción con el
entorno mediante marcas y variables de control.

La consigna de posición de una aplicación MC será establecida en


base a un perfil de movimiento especificado a través de las
aplicaciones de MC que el usuario haya generado previamente en un
PC y que posteriormente se hayan cargado en el sistema regulador
mediante una línea serie.

La generación de una aplicación MC será definida mediante un


lenguaje de programación específico desarrollado por Fagor,
combinando sentencias que especifican movimientos simples para la
generación del perfil del movimiento deseado.
Esta aplicación será transformada en un pseudocódigo de tipo
interpretado quedando almacenado en la memoria del sistema
regulador.

La comunicación del PLC con el sistema regulador, con otros


módulos cargados en él y con el kernel se establecerá a través de un
programa PLC , pudiendo leer y escribir en los parámetros y variables
del regulador.
DDS - MC
Tanto del autómata programable (PLC) como del lenguaje de
programación Motion Control se hará un estudio exhaustivo en los
capítulos siguientes con la finalidad de conocer de manera profunda
su esencia estructural, propiedades, funcionalidad y aplicabilidad.

(SOFT [Link])

1
! ! ! Introducción

1.
INTRODUCCIÓN

DDS - MC

(SOFT [Link])

2
ENTORNO EDICIÓN DE
PROGRAMAS DE PLC Y MC 2
Introducción

Fagor proporciona al programador un entorno integrado de desarrollo


de programas de PLC / MC que facilita tanto la edición de programas
como su compilación y transmisiones posteriores.

Existe una aplicación específica para la edición de aplicaciones de


PLC y MC. Esta aplicación es un editor de texto que:
! permite crear nuevos ficheros fuente tanto de PLC como de MC
y abrir o modificar ficheros ya existentes.
! permite la realización de un proyecto. Crear ficheros fuente de
PLC y de MC asociados al proyecto y abrir o modificar los ya
[Link] de ficheros estándar de PLC y MC asociados
a un proyecto y un asistente de edición.
! ofrece la capacidad de reconocer la sintaxis específica de los
lenguajes de programación para PLC y MC.
! ofrece la posibilidad de personalizar o configurar la visualización
de los distintos elementos del lenguaje como palabras
reservadas, comentarios,...

Edición de programas de PLC y MC

Edición de ficheros fuente de PLC y MC

Mediante la aplicación - editor de texto - el usuario puede editar


ficheros fuente tanto de PLC como de MC de forma individual, sin
necesidad de que estén asociados a ningún proyecto.
Para editar un fichero fuente, se abre el programa de aplicación
[Link] y desde la ventana Editor se activa New del menú File.
Emerge otra ventana con nombre - sin título - donde el usuario podrá
editar código de programa.

DDS - MC

(SOFT [Link])

1
! ! ! Entorno edición de programas de PLC y MC

Editado el programa, según sea un fichero fuente de PLC o MC


deberán considerarse las siguientes indicaciones antes de activar
Save o Save as del menú File.
! Los ficheros fuente para aplicaciones de PLC tienen la forma
nombre .plc donde .plc es la extensión.
! Los ficheros fuente para aplicaciones de MC tienen la forma
nombre .mc donde .mc es la extensión.
! Se admite como nombre cualquier combinación de 8 caracteres

2. y/o dígitos válidos para nombrar ficheros en el sistema operativo


DOS.
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
Edición en la realización de un proyecto

Edición en la realización de un proyecto

Dentro de la aplicación Editor es posible generar los ficheros fuente


de PLC y MC asociados a un proyecto.
En la edición de un proyecto además de los ficheros fuente *.plc y
*.mc se genera un fichero con extensión *. mca donde se informa al
usuario del tipo de proyecto y de todos los ficheros asociados al
mismo.
Además, como ayuda a la edición de programas de movimiento se
puede acceder a diferentes posiciones almacenadas en tablas del
fichero *.mcp mediante un asistente a la edición o Editor de tablas.
El objetivo fundamental de este asistente a la edición es facilitar la
labor al usuario en la definición de una aplicación de MC sin
necesidad de manipular ficheros de código ni manejar lenguajes de
programación del PLC ni de MC.
Los ficheros fuente tanto de PLC como de MC pueden ser editados
por el usuar io o bien utilizar los ficheros fuente estandar
suministrados por FAGOR.
A continuación se describen estas dos posibilidades:
Para crear una aplicación de MC, abierto ya la aplicación [Link],
seleccionar File > New application del editor.
Seleccionada esta opción emerge en pantalla la ventana New
application donde podrá seleccionarse:
! User defined: Creación de un directorio con ficheros fuente *.mc
y *.plc vacíos dispuestos para ser editados por el usuario.
! Table: Creación de un directorio con los ficheros fuente
estándares suministrados por FAGOR. Se visualizan en ventana
minimizados tanto el fichero *. mc como el *.plc. - Véanse anexos

22 1 y 2 al final del capítulo - . Además, emerge el asistente para la


edición de tablas que permite definir perfiles de movimiento.

DDS - MC

(SOFT [Link])

fichero estándar en código fuente de MC


fichero estándar en código fuente de PLC

2
! ! ! Entorno edición de programas de PLC y MC

En la ventana New application se le da nombre a la aplicación y se


guarda en el directorio deseado.

La ventana New application se muestra en la siguiente figura:

2.

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


Edición en la realización de un proyecto
! Si la aplicación es del tipo User defined, al abrir esta aplicación
de MC seleccionando File > Open Application se abrirán los
ficheros asociados al mismo.
! Si la aplicación es del tipo Table, emerge la ventana para definir
cada bloque de movimiento y la configuración de las entradas
-salidas además de dos ficheros fuente estándares con
extensiones *.mc y *.plc.

La ventana que aparece por defecto es la que se muestra con la


pestaña activada Table Block Definition y es una ventana de edición
en la cual puede establecerse el modo de comportamiento de cada
bloque de movimiento.

Los cuadros de diálogo y campos de los que dispone son:

Nº de bloque actual: Dispone por defecto de 128 bloques de


posicionamiento y en este cuadro se especifica el nº de bloque en el
que se considerarán todos los parámetros que definen el movimiento
establecido en los campos definidos más abajo.

Copiar valores de bloque: Permite copiar los parámetros de


movimiento de otro bloque en el bloque que se está definiendo como DDS - MC
actual.

Nº de repeticiones: Indica el nº de veces que se ha de repetir el


bloque actual.

Nº de bloque siguiente: Especifica el nº de bloque que se ejecutará (SOFT [Link])

después del bloque actual. Si se selecciona en este cuadro - es último


bloque - trás ejecutar el bloque actual finalizará la ejecución.

3
! ! ! Entorno edición de programas de PLC y MC

Modo:
! No se mueve hasta señal (IFAST_INPUT)
! Absoluto
! Relativo
! Movimiento positivo hasta señal (IFAST_INPUT)
! Movimiento negativo hasta señal (IFAST_INPUT)
! No hacer movimiento
2. Enlace entre movimientos:
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
Edición en la realización de un proyecto

! Velocidad nula
! Velocidad del siguiente bloque
! Espera en 0
! Velocidad del bloque actual

Perfil de velocidad: El diagrama velocidad / tiempo muestra,


atendiendo a los valores introducidos en los campos que definen el
movimiento, su perfil. Se observa como se establece el enlace entre
el movimiento definido por el bloque actual (n) y el siguiente (n+1).

Posición de destino: Este campo sólo aparece cuando se


selecciona en el campo Modo un posicionamiento absoluto e indica
la posición en la que debe posicionarse.

Distancia: Este campo aparece sólo cuando se selecciona en el


campo Modo un posicionamiento relativo. Se establece la distancia
desde la posición actual hasta la indicada en este campo.

Terminar bloque si señal (IFAST_INPUT): Únicamente es activable


si en el campo - Nodo - se ha seleccionado la opción -absoluto o
relativo - , en otro caso; no habrá posibilidad de activar esta opción.
Establece la posibilidad de finalizar la ejecución de este bloque si
recibe la señal IFAST_INPUT antes de haber recorrido la distancia o
la posición de destino según el caso.
22 Velocidad: Se establece la velocidad del movimiento en el bloque
actual.

Aceleración: Se establece la aceleración del movimiento en el


bloque actual.
DDS - MC Aceleración previa: Activando este campo se desactiva el de
aceleración y toma como aceleración el valor establecido con
anterioridad.

Jerk: Se establece el Jerk del movimiento en el bloque actual.


(SOFT [Link])
Jerk previo: Activando este campo se desactiva el de Jerk y toma
como Jerk el valor establecido con anterioridad.

4
! ! ! Entorno edición de programas de PLC y MC

Esperar después de posicionamiento: Establece el tiempo de


espera que debe transcurrir después del posicionamiento definido
por el bloque actual hasta que se inicia la ejecución del siguiente
bloque definido en el campo Nº de bloque siguiente.

Escribir Salida: Habilita / deshabilita hasta 5 salidas. Estas salidas


corresponden a las salidas físicas del regulador definidas en
OUTPUTS que aparecen en la ventana trás activar la pestaña Digital
InputOutput configuration situada en la parte superior de esta
ventana.

Su ventana correspondiente puede verse en la siguiente figura:


2.

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


Edición en la realización de un proyecto
Dispone de un cuadro de configuración de entradas INPUTS donde
el usuario selecciona mediante la ventana desplegable por flecha a
que entrada física del regulador corresponde cada una de las señales
que aparecen.

El significado de estas entradas es:

I_START: Señal de marcha.


I_JOG_POS1: Señal de entrada de Jog positivo a velocidad 1. DDS - MC
I_JOG_POS2: Señal de entrada de Jog positivo a velocidad 2.
I_JOG_NEG1: Señal de entrada de Jog negativo a velocidad 1.
I_JOG_NEG2: Señal de entrada de Jog negativo a velocidad 2.
I_HOMING: Señal de entrada de búsqueda de cero.
(SOFT [Link])
I_FAST_INPUT: Señal de entrada rápida.

I_HOME_SWITCH: Señal de entrada del micro de referencia


máquina.

5
! ! ! Entorno edición de programas de PLC y MC

I_LINE_SELECT_1:
I_LINE_SELECT_2:
I_LINE_SELECT_3: Señales de entrada de selección de línea
I_LINE_SELECT_4: de programa.
I_LINE_SELECT_5:
I_LINE_SELECT_6:

2. I_FEEDBACK_SELECT: Entrada de señal de selección de


captación motor o captación directa.
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
Edición en la realización de un proyecto

Dispone también de un cuadro de configuración de salidas


OUTPUTS donde el usuario selecciona mediante la ventana
desplegable por flecha a que salida física del regulador corresponde
cada una de las señales lógicas que aparecen.

El significado de estas salidas es:

O_LINE_1:
O_LINE_2:
O_LINE_3: Salidas lógicas desde línea de programa
O_LINE_4: definidas en cada bloque.
O_LINE_5:

O_PROG_1:
O_PROG_2: Salidas lógicas adicionales programables.
O_PROG_3:

Nota: ¡ No puede asignarse una misma salida física del regu-


lador a dos salidas lógicas desde línea de programa o adi-
cionales programables diferentes con el fin de no crear
situaciones de conflicto !

22 Las salidas lógicas adicionales programables pueden activarse


atendiendo a las siguientes condiciones de activación que se
muestran en el cuadro desplegable por flecha:

Undefined: Se selecciona cuando no se va a utilizar la salida


lógica adicional programable.

DDS - MC
0: Por esta salida obtenemos siempre un 0 lógico.

1: Por esta salida obtenemos siempre un 1 lógico.

(SOFT [Link])
P > Px (TP2) La salida será un 1 lógico si se supera el umbral
de potencia dado por el usuario como una
fracción del valor nominal de la potencia del
motor.

6
! ! ! Entorno edición de programas de PLC y MC

In Position La salida será un 1 lógico cuando el accionamien-


to alcanza la posición final.

T > Tx (TP1) La salida será un 1 lógico si se supera el umbral


de par dado por el usuario como una fracción del
valor nominal del par del motor.

n feedback < nx (SP40) La salida será un 1 lógico cuando la velocidad


real del motor no supere el nivel de velocidad
determinado por SP40. 2.

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


Compilación de programas de PLC y MC
n feedback = 0 La salida será un 1 lógico cuando la velocidad
real del motor es nula.

n feedback = n command La salida será un 1 lógico cuando la velocidad


real del motor ha alcanzado la consigna
suministrada dentro de unos márgenes dados
por SP41.

UserCode Permite generar código de programa de plc


estableciendo otra condición particular deseada
por el usuar io para la salida adicional
programable seleccionada.

Al seleccionar esta opción - UserCode - se habilita este icono.


Activándolo, se despliega una ventana donde puede programarse el
código correspondiente para establecer la condición particular que el
usuario desea para la salida donde se ha seleccionado el UserCode
- en la selección aparece en pantalla con un sombreado -.

Compilación de programas de PLC y MC

El propio entorno de edición ofrece la función de compilación de los


ficheros fuente [Link] y [Link] de la aplicación para
transformarlos en un fichero MC y un fichero PLC compilados con el
DDS - MC
mismo nombre que el fichero fuente y con extensiones .mcc y .pcd
respectivamente. En otro fichero [Link] quedarán registrados
los errores detectados en la compilación del programa en el caso de
que se produzcan.
(SOFT [Link])
La función de compilación se activa desde el entorno de edición
mediante el correspondiente icono de la tabla de herramientas o
también mediante [CTRL + la tecla de función F7].

7
! ! ! Entorno edición de programas de PLC y MC

El editor ejecuta la función de llamar al compilador de MC y no al de


PLC atendiendo a la extensión del fichero fuente que se desea
compilar.

Finalizada la compilación se visualizará una ventana informativa para


el usuario indicando el número de warnings y errores detectados
durante el proceso.

Si no existen errores se genera el correspondiente fichero de


aplicación como salida; si, por el contrario, se detectan errores en el
2. proceso de compilación no se generará el fichero de aplicación y la
ventana de información mostrará un listado de errores y warnings
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
Compilación de programas de PLC y MC

detectados, indicando por cada warning y/o error la línea de fichero


fuente donde se ha detectado.

Nótese que el icono de compilación de un fichero fuente individual


abierto en el editor es equivalente a la opción Compile del menú
Build del editor.

Si este fichero está asociado a algún proyecto , el editor dispone de


la opción Build > Compile MC application para compilar la
aplicación en su totalidad, es decir, todos los ficheros fuente que
forman el proyecto. También puede ejecutarse esta opción mediante
la tecla de función F7.

22
Seguidamente, emerge una ventana especificando si se han
producido errores de compilación y warnings. El número de errores
aparece en el cuadro errors.
DDS - MC

(SOFT [Link])

8
! ! ! Entorno edición de programas de PLC y MC

Mediante el botón Go To y seleccionado uno de los paths que


aparecen se accede directamente al fichero fuente para modificar los
errores.

Envío de programas de PLC y MC al regulador

El envío de la aplicación al regulador se realiza activando el icono del


que dispone el editor para acceder al [Link].
2.
Súbitamente aparece la ventana Backup PC File ---> Drive y en el

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


Envío de programas de PLC y MC al regulador
campo Buscar en se muestra directamente el directorio de la
aplicación que contiene el fichero de definición del proyecto con
extensión *.mca.

Se seleccionan de toda la aplicación los ficheros compilados con


extensiones *mcc , *pcd y el fichero de la tabla de datos *.mcp y se
envían al regulador.

A través de la línea serie, el fichero con extensión .mcc y .pcd deben


almacenarse en la memoria flash del regulador. Estos ficheros objeto
gobernarán el funcionamiento de la máquina en modo automático y
manual ya que contiene el código correspondiente a ambos modos.

La memoria flash es una memoria no volátil, que mantiene sus datos


aún sin alimentación eléctrica.

Ejecución

En el encendido, el regulador actúa del siguiente modo:


! El regulador comprueba que se le ha transmitido el programa de
[Link] no ser así se informará con error 900.
! Las señales START, STOP, RESET y ABORT gobiernan la puesta
en marcha y parada del sistema en todo momento, tanto en el
modo de funcionamiento automático como manual.
! La variable [F2313] definida en el fichero [Link] como
K_OPER_MODE determina el modo de funcionamiento,
automático o manual.
! El regulador realiza una interpretación línea a línea del programa
y las va ejecutando una tras otra.

DDS - MC

(SOFT [Link])

9
! ! ! Entorno edición de programas de PLC y MC

ANEXO 1. PROGRAMA ESTÁNDAR DE PLC

; Programa estándar de PLC

#INCLUDE « MOTION. INC «

; inputs & outputs

2. #INCLUDE " [Link]"


ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
ANEXO 1. PROGRAMA ESTÁNDAR DE PLC

DEF N_JOG_POS1 1
DEF N_JOG_POS2 2
DEF N_JOG_NEG1 4
DEF N_JOG_NEG2 8

; plc marks

DEF M_HOME M1
DEF M_CICLE_START M2
DEF M_FAST_INPUT M3
DEF M_NEW_LINE M4
DEF M_INFINITE_MOV M5
DEF M_VEL_MODO_JOG M6

DEF M_ENABLES M32


DEF M_INTERPRETER_ST M33
DEF M_POS_JOG_NEG M34
DEF M_TEMP_2 M35
DEF M_AUX_TIMER M36

; plc registers

DEF R_LINE R1
DEF R_DIG_OUT R2
DEF B0_R_DIG_OUT B20R2
DEF B1_R_DIG_OUT B21R2
DEF B2_R_DIG_OUT B22R2
22 DEF B3_R_DIG_OUT B23R2
DEF B4_R_DIG_OUT B24R2

DEF R_STATE_ENABLES R20L


DEF R_STATE_I_START R21L
DDS - MC DEF R_TEMP R22
DEF R_TEMP_L R22L
DEF R_TEMP_H R22H
DEF R_MOV_END R23L
(SOFT [Link])
DEF R_JOG_MOVE_ST R24L
DEF R_STATE_JOG R25L
DEF R_MODE R26L
DEF R_CHANGING_MODE R27L
DEF R_STATE_AUTO R28L

10
! ! ! Entorno edición de programas de PLC y MC

DEF R_CAPT_CHANGE R29L

; timers

DEF N_T_ENABLES 1
DEF T_ENABLES T1
DEF N_T_START 2
DEF T_START T2
DEF N_T_MOV_END 3 2.
DEF T_MOV_END T3

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


ANEXO 1. PROGRAMA ESTÁNDAR DE PLC
DEF N_T_CHANGE_MODE 4
DEF T_CHANGE_MODE T4

; sercos vars

DEF ENABLE1 B14S135


DEF ENABLE2 B15S135
DEF S_KERNEL_RUNNING S35098

DEF N_KERNEL_STOPPED 0

; enable state machine


DEF N_STATE_ENABLES_DW 10
DEF N_STATE_ENABLES_UP 20
DEF N_STATE_ENABLES_DW_1 1
DEF N_STATE_ENABLES_UP_1 6
DEF N_STATE_ENABLES_UP_2 7

; start state machine


DEF N_START_DW 5
DEF N_START_UP 6
DEF N_START_UP_1 11
DEF N_START_UP_2 12
DEF N_START_UP_3 13

; auto mode state machine


DEF N_AUTO_STOPPED 1
DEF N_AUTO_RUNNING 2
DEF N_AUTO_NO_OK 3
DEF N_AUTO_STARTING 4
DEF N_AUTO_STOPPING 5

DDS - MC
; mov end state machine
DEF N_MOV_END_0 10
DEF N_MOV_END_1 11
DEF N_MOV_END_2 12
DEF N_MOV_END_3 13 (SOFT [Link])

11
! ! ! Entorno edición de programas de PLC y MC

; jog state machine


DEF N_JOG_DW_NO_OK 1
DEF N_JOG_MOVING 3
DEF N_JOG_STARTING 4
DEF N_JOG_DW_OK 10

; mode state machine


2. DEF N_MODE_AUTO 1
DEF N_MODE_MAN 2
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
ANEXO 1. PROGRAMA ESTÁNDAR DE PLC

DEF N_MODE2MAN 3
DEF N_MODE2AUTO 4
DEF N_MODE_STOPPING 5
DEF N_MODE_NO_ENABLES 6

; mode change state machine


DEF N_CHANGE_MODE_1 1
DEF N_CHANGE_MODE_2 2
DEF N_CHANGE_MODE_3 3
DEF N_CHANGE_MODE_4 4
DEF N_CHANGE_MODE_5 5
DEF N_CHANGE_MODE_6 6
DEF N_CHANGE_MODE_7 7

; captation change state machine


DEF N_CAPT_CHANGE_DIS 20
DEF N_CAPT_CHANGE2SECOND_1 1
DEF N_CAPT_CHANGE2FIRST_1 2
DEF N_CAPT_CHANGE_FIRST 10
DEF N_CAPT_CHANGE_SECOND 11
DEF S_AP1 S32
DEF S_GP10 S33487
DEF S_CHANGE_CAPT S34771

; k_oper_mode values
DEF N_K_MODE_AUTO 0

22 DEF N_K_MODE_MAN 1

CY1

() = MOV N_STATE_ENABLES_DW R_STATE_ENABLES 16


() = MOV N_MODE_AUTO R_MODE 16
DDS - MC
() = MOV N_AUTO_STOPPED R_STATE_AUTO 16
() = MOV N_STATE_ENABLES_DW R_STATE_ENABLES 16
() = MOV N_START_DW R_STATE_I_START 16

(SOFT [Link]) () = AND S_AP1 7 R_TEMP


CPS S_GP10 EQ 0 OR CPS R_TEMP_L NE 5
= MOV N_CAPT_CHANGE_DISR_CAPT_CHANGE 16
= NOT MOV N_CAPT_CHANGE_FIRSTR_CAPT_CHANGE 16

12
! ! ! Entorno edición de programas de PLC y MC

END
PGR

DFU I_HOME_SWITCH = MOV 1 S400 16


DFD I_HOME_SWITCH = MOV 0 S400 16
() = CAL HOME_SWITCH
() = CAL ENABLES
() = CAL READ_START
() = CAL CHANGE_MODE 2.
() = CAL CAPT_CHANGE

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


ANEXO 1. PROGRAMA ESTÁNDAR DE PLC
; digital programmable outputs
#INCLUDE " [Link]"
END

; Cambio de modo de la máquina de estados

CHANGE_MODE:
CPS R_MODE EQ N_MODE AUTO = JMP MODE_AUTO
CPS R_MODE EQ N_MODE_MAN = JMP MODE_MAN
CPS R_MODE EQ N_MODE2MAN = JMP CHANGING_MODE
CPS R_MODE EQ N_MODE2AUTO = JMP CHANGING_MODE
CPS R_MODE EQ N_MODE_STOPPING = JMP CHANGING_MODE
CPS R_MODE EQ N_MODE_NO_ENABLES = JMP CHANGING_MODE
END

CHANGING_ MODE:
CPS R_CHANGING_MODE EQ N_CHANGE_MODE_1 = JMP CHANGE_MODE_1
CPS R_CHANGING_MODE EQ N_CHANGE_MODE_2 = JMP CHANGE_MODE_2
CPS R_CHANGING_MODE EQ N_CHANGE_MODE_3 = JMP CHANGE_MODE_3
CPS R_CHANGING_MODE EQ N_CHANGE_MODE_4 = JMP CHANGE_MODE_4
CPS R_CHANGING_MODE EQ N_CHANGE_MODE_5 = JMP CHANGE_MODE_5
END

CHANGE_ MODE_1:
() = MOV 0 K_RESET_SIG 16 = MOV 0 K_START_SIG 16
B3TIME_ = TRS N_T_CHANGE_MODE = TG1 N_T_CHANGE_MODE 30
T_CHANGE_MODE = MOV N_CHANGE_MODE_2 R_CHANGING_MODE 16
END

CHANGE_ MODE_2:
T_CHANGE_MODE = RET
DDS - MC
() = MOV 1 K_RESET_SIG 16
() = MOV N_CHANGE_MODE_3 R_CHANGING_MODE 16
END

CHANGE_ MODE_3: (SOFT [Link])

CPS S_KERNEL_RUNNING NE N_KERNEL_STOPPED = RET


() = MOV 0 K_RESET_SIG 16
B3TIME_ = TRS N_T_CHANGE_MODE = TG1 N_T_CHANGE_MODE 50

13
! ! ! Entorno edición de programas de PLC y MC

T_CHANGE_MODE = MOV N_CHANGE_MODE_4 R_ CHANGING_MODE 16


END

CHANGE_ MODE_4:
T_CHANGE_MODE = RET
CPS R_MODE EQ N_MODE2MAN =MOV N_K_MODE_MAN K_OPER_MODE 16
CPS R_MODE EQ N_MODE2AUTO =MOV N_K_MODE_AUTO K_OPER_MODE 16
B3TIME_ = TRS N_T_CHANGE_MODE = TG1 N_T_CHANGE_MODE 50
2. T_CHANGE_MODE = MOV N_CHANGE_MODE_5 R_ CHANGING_MODE 16
END
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
ANEXO 1. PROGRAMA ESTÁNDAR DE PLC

CHANGE_ MODE_5:
T_CHANGE_MODE = RET
CPS R_MODE EQ N_MODE_STOPPING OR CPS R_MODE EQ N_MODE_NO_ENABLES
= MOV N_JOG_DW_NO_OK R_STATE_JOG 16
= MOV N_AUTO_NO_OK R_STATE_AUTO 16
= NOT MOV N_JOG_DW_OK R_STATE_JOG 16
= NOT MOV N_AUTO_STOPPED R_STATE_AUTO 16
CPS R_MODE EQ N_MODE_NO_ENABLES
= MOV N_STATE_ENABLES_DW R_STATE_ENABLES 16
() = RES M_NEW_LINE
CPS K__OPER_MODE EQ N_K_MODE_MAN = MOV N_MODE_MAN R_MODE 16 = RET
CPS K_OPER_MODE EQ N_K_MODE_AUTO = MOV N_MODE_AUTO R_MODE 16 = RET
END

; Enables de la máquina de estados

ENABLES:
ENABLE1 AND ENABLE2 = M_ENABLES
M_ENABLES AND CPS R_STATE_ENABLES EQ N_STATE_ENABLES_DW
= MOV N_STATE_ENABLES_UP_ 1 R_STATE_ENABLES 16
NOT M_ENABLES AND CPS R_STATE_ENABLES EQ N_STATE_ENABLES_UP
= MOV N_STATE_ENABLES_DW_1 R_STATE_ENABLES 16
= MOV N_MODE_NO_ENABLES R_MODE 16
= MOV N_CHANGE_MODE_1 R_CHANGING_MODE 16

CPS R_STATE_ENABLES EQ N_STATE_ENABLES_UP_1 = JMP ENABLES_UP_1


22 CPS R_STATE_ENABLES EQ N_STATE_ENABLES_UP_2 = JMP ENABLES_UP_2
END

ENABLES_UP_1:
B3TIME_ = TRS N_T_ENABLES = TG1 N_T_ENABLES 150
DDS - MC T_ENABLES = MOV N_STATE_ENABLES_UP_2 R_STATE_ENABLES 16
END

ENABLES_UP_2:
T_ENABLES = RET
(SOFT [Link])
() = MOV N_STATE_ENABLES_UP R_STATE_ENABLES 16
END

14
! ! ! Entorno edición de programas de PLC y MC

; Modo automático de la máquina de estados

MODE_AUTO:
CPS R_STATE_ENABLES NE N_STATE_ENABLES_UP = RET

I_START OR I_HOMING = M_INTERPRETER_ST

CPS R_STATE_AUTO EQ M_AUTO_STOPPED AND


2.

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


ANEXO 1. PROGRAMA ESTÁNDAR DE PLC
(I_JOG_POS1 OR I_JOG_POS2 OR I_JOG_NEG1 OR I_JOG_NEG2)
= MOV N_MODE2MAN R_MODE 16
= MOV N_CHANGE_MODE_1 R_CHANGING_MODE 16 = RET
B0_R_DIG_OUT = O_LINE_1
B1_R_DIG_OUT = O_LINE_2
B2_R_DIG_OUT = O_LINE_3
B3_R_DIG_OUT = O_LINE_4
B4_R_DIG_OUT = O_LINE_5

M_INTERPRETER_ST AND CPS R_STATE_AUTO EQ N_AUTO_STOPPED


= MOV N_AUTO_STARTING R_STATE_AUTO 16
= MOV N_START_UP_1 R_STATE_I_START 16
NOT M_INTERPRETER_ST AND CPS R_STATE_AUTO EQ N_AUTO_RUNNING
= MOV N_AUTO_STOPPING R_STATE_AUTO 16
= MOV N_MODE_STOPPING R_MODE 16
= MOV N_CHANGE_MODE_1 R_CHANGING MODE 16
NOT M_INTERPRETER_ST AND CPS R_STATE_AUTO EQ N_AUTO_NO_OK
= MOV N_AUTO_STOPPED R_STATE_AUTO 16
CPS R_STATE_AUTO EQ M_AUTO_STARTING = JMP AUTO_STARTING
END

AUTO_STARTING:
I_HOMING = M_HOME
NOT M_HOME AND I_START = M_CICLE_START
CPS R_STATE_I_START NE N_START_UP = RET
() = MOV N_AUTO_RUNNING R_STATE_AUTO 16
END

; i_start de la máquina de estados

READ_START:
CPS R_STATE_I_START EQ N_START_UP_1 = JMP START_UP_1
CPS R_STATE_I_START EQ N_START_UP_2 = JMP START_UP_2
DDS - MC
CPS R_STATE_I_START EQ N_START_UP_3 = JMP START_UP_3
END

START_UP_1: (SOFT [Link])

() = MOV 0 R_LINE
I_LINE_SELECT_1 = B0R_LINE
I_LINE_SELECT_2 = B1R_LINE

15
! ! ! Entorno edición de programas de PLC y MC

I_LINE_SELECT_3 = B2R_LINE
I_LINE_SELECT_4 = B3R_LINE
I_LINE_SELECT_5 = B4R_LINE
I_LINE_SELECT_6 = B5R_LINE

() = MOV 0 K_START_SIG 16
() = RES M_CICLE_START = RES M_HOME
() = RES M_FAST_INPUT = MOV N_MOV_END_0 R_MOV_END 16
2. () = MOV 0 JOG_POS 16 = MOV 0 JOG_NEG 16
() = RES M_AUX_TIMER
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
ANEXO 1. PROGRAMA ESTÁNDAR DE PLC

; B2TIME_
START_UP_1_TEN:
M_AUX_TIMER = TRS N_T_START = TG1 N_T_START 20
= NOT SET M_AUX_TIMER = NOT JMP START_UP_1_TEN
T_START = MOV N_START_UP_2 R_STATE_I_START 16
END

START_UP_2:
T_START = RET
() = M_NEW_LINE
() = MOV 1 K_START_SIG 16
B2TIME_ = TRS N_T_START = TG1 N_T_START 50
T_START = MOV N_START_UP_3 R_STATE_I_START 16
END

START_UP_3:
T_START = RET
() = MOV 0 K_START_SIG 16
() = MOV N_START_UP R_STATE_I_START 16
END

; Modo manual de la máquina de estados

MODE_MAN:
CPS R_STATE_I_JOG EQ N_JOG_DW_OK AND (I_START OR I_HOMING)
= MOV N_MODE2AUTO R_MODE 16

22 = MOV N_CHANGE_MODE_1
CPS R_STATE_JOG EQ N_JOG_DW_NO_OK
R_CHANGING_MODE 16 = RET
= JMP JOG_DW_NO_OK
CPS R_STATE_JOG EQ N_JOG_DW_OK = JMP JOG_DW_OK
CPS R_STATE_JOG EQ N_JOG_STARTING = JMP JOG_STARTING
CPS R_STATE_JOG EQ N_JOG_MOVING = JMP JOG_MOVING
END
DDS - MC
I_JOG_READ:
() = MOV 0 R_TEMP
I_JOG_POS1 = B0R_TEMP
(SOFT [Link]) I_JOG_POS2 = B1R_TEMP
I_JOG_NEG1 = B2R_TEMP
I_JOG_NEG2 = B3R_TEMP
END

16
! ! ! Entorno edición de programas de PLC y MC

JOG_DW_NO_OK:
NOT I_JOG_POS1 AND NOT I_JOG_POS2
AND NOT I_JOG_NEG1 AND NOT I_JOG_NEG2
= MOV N_JOG_DW_OK R_STATE_JOG 16
END

JOG_DW_OK:
() = CAL I_JOG_READ
CPS R_TEMP_L EQ N_JOG_POS1=SET M_JOG_POS_NEG=RES M_TEMP_2 = JMP JOG_OK
2.

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


ANEXO 1. PROGRAMA ESTÁNDAR DE PLC
CPS R_TEMP_L EQ N_JOG_POS2=SET M_JOG_POS_NEG=RES M_TEMP_2 = JMP JOG_OK
CPS R_TEMP_L EQ N_JOG_NEG1=SET M_JOG_POS_NEG=RES M_TEMP_2 = JMP JOG_OK
CPS R_TEMP_L EQ N_JOG_NEG2=SET M_JOG_POS_NEG=RES M_TEMP_2 = JMP JOG_OK
() = RET

JOG_OK:
() = MOV R_TEMP R_JOG_MOVE_ST 16
M_TEMP_2 = M_VEL_MODO_JOG
() = MOV N_JOG_STARTING R_STATE_JOG 16
() = MOV N_START_UP_1 R_STATE_I_START 16
END

JOG_STARTING:
CPS R_STATE_I_START NE N_START_UP = RET
M_JOG_POS_NEG = MOV 1 JOG_POS 16
= NOT MOV 1 JOG_NEG 16
() = MOV N_JOG_MOVING R_STATE_JOG 16
END

JOG_MOVING:
() CAL I_JOG_READ
CPS R_TEMP_L NE R_JOG_MOVE_ST
= MOV N_MODE_STOPPING R_MODE 16
= MOV N_CHANGE_MODE_1 R_CHANGING_MODE 16
END

; i_fast_input de la máquina de estados

PE 1:
I_FAST_INPUT AND M_INFINITE_MOV AND
CPS R_MOV_END EQ N_MOV_END_0
= MOV N_MOV_END_2 R_MOV_END 16
CPS R_MOV_END EQ N_MOV_END_2 = JMP MOV_END_2
DDS - MC
CPS R_MOV_END EQ N_MOV_END_3 = JMP MOV_END_3
END

MOV_END_2:
(SOFT [Link])
() MOV 1 K_ABORT_SIG 16
B3TIME_ = TRS N_T_MOV_END = TG1 N_T_MOV_END 50
T_MOV_END = MOV N_MOV_END_3 R_MOV_END 16
END

17
! ! ! Entorno edición de programas de PLC y MC

MOV_END_3:
T_MOV_END = RET
I_FAST_INPUT = RET ; to detect the flank
() = MOV 0 K_ABORT_SIG 16
() = MOV N_MOV_END_0 R_MOV_END 16
END

2. ; i_home_switch
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
ANEXO 1. PROGRAMA ESTÁNDAR DE PLC

HOME_SWITCH:
DFU I_HOME_SWITCH = MOV 1 S400 16
DFD I_HOME_SWITCH = MOV 0 S400 16
END

; Cambio de captación de la máquina de estados

CAPT_CHANGE:
I_FEEDBACK_SELECT AND CPS R_CAPT_CHANGE EQ N_CAPT_CHANGE_FIRST
= MOV N_CAPT_CHANGE2SECOND_1 R_CAPT_CHANGE 16

NOT I_FEEDBACK_SELECT AND CPS R_CAPT_CHANGE EQ N_CAPT_CHANGE_SECOND


= MOV N_CAPT_CHANGE2FIRST_1 R_CAPT_CHANGE 16

CPS R_CAPT_CHANGE EQ N_CAPT_CHANGE2SECOND_1 = JUMP CAPT_CHANGE2SECOND_1


CPS R_CAPT_CHANGE EQ N_CAPT_CHANGE2FIRST_1 = JUMP CAPT_CHANGE2FIRST_1
END

CAPT_CHANGE2SECOND_1:
() = MOV 3 S_CHANGE_CAPT 16
() = MOV N_CAPT_CHANGE_SECOND R_CAPT_CHANGE 16
END

CAPT_CHANGE2FIRST_1:
() = MOV 0 S_CHANGE_CAPT 16
() = MOV N_CAPT_CHANGE_FIRST R_CAPT_CHANGE 16
END

22

DDS - MC

(SOFT [Link])

18
! ! ! Entorno edición de programas de PLC y MC

ANEXO 2. PROGRAMA ESTÁNDAR DE MC

; Programa estándar de MC

#INCLUDE « MOTION. INC «

; tabla mc
#INCLUDE " [Link]"
2.

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


ANEXO 2. PROGRAMA ESTÁNDAR DE MC
DEF N_LINES 128
; move_chars bits

;---- links type between movements


DEF N_MASK_LINK $7

;---- movement type


DEF N_DIV_MOV_TYPE $8
DEF N_MASK_MOV_TYPE $38
DEF N_NO_MOV $0
DEF N_ABS_MOV $1
DEF N_REL_MOV $2
DEF N_INF_MOV $3

;---- next line


DEF N_MASK_NEXT_LINE $0FFF00
DEF N_DIV_NEXT_LINE 256
DEF N_MASK_END $40

;---- digital outputs


DEF N_MASK_DIG_OUT $80
DEF N_MASK_DIG_OUT_VAL $0FF00000
DEF N_SHIFT_DIG_OUT_VAL $14

;---- acceleration and jerk


DEF N_MASK_JERK_BIT $20000000
DEF N_MASK_ACCEL_BIT $10000000

;---- finish move


DEF N_MASK_FINISH_MOVE $40000000 ; b30

; plc marks
DEF M_HOME M1 DDS - MC
DEF M_MARCHA M2
DEF M_FAST_INPUT M3
DEF M_NEW_LINE M4
DEF M_INFINITE_MOV M5 (SOFT [Link])
DEF M_VEL_MODO_JOG M6

19
! ! ! Entorno edición de programas de PLC y MC

; plc registers
DEF R_LINE R1
DEF R_DIG_OUT #R2
DEF R_PROG_DIG_OUT1 R3
DEF R_PROG_DIG_OUT2 R4
DEF R_PROG_DIG_OUT3 R5

PAR DISTANCE [N_LINES]


2. PAR SPEED [N_LINES]
PAR ACCEL [N_LINES]
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
ANEXO 2. PROGRAMA ESTÁNDAR DE MC

PAR JERK_ [N_LINES]


PAR TEMP [N_LINES]
PAR REP [N_LINES]
PAR MOVE_CHARS [N_LINES]
PAR VERSION_1
PAR APPTYPE_TABLE
PAR DIG_IN_INFO1, DIG_IN_INFO2, DIG_IN_INFO3, DIG_IN_INFO4
PAR DIG_OUT_INFO1, DIG_OUT_INFO2
PAR DIG_PROGOUT_INFO1

DIM LINE
DIM LOOP
DIM TYPE_MOV
DIM VELOCIDAD, DISTANCIA
DIM BRK_LINE_95

PROGRAM
IF (M_HOME)
HOME
M_HOME = 0
ENDIF

WHILE (M_MARCHA)
IF (M_NEW_LINE)
LINE = R_LINE

22 M_NEW_LINE = 0
ENDIF
TYPE_MOV = (MOVE_CHARS[LINE] BAND N_MASK_MOV_TYPE) / N_DIV_MOV_TYPE
TYPE_MOV = TYPE_MOV + 1
LINK = (MOVEV_CHARS[LINE] BAND N_MASK_LINK) * 10000
M_INFINITE_MOV = 0
DDS - MC
FOR LOOP = 0, REP [LINE], 1
IF ( MOVE_CHARS[LINE] BAND N_MASK_ACCEL_BIT)
ACC = ACCEL[LINE]
(SOFT [Link]) ENDIF

20
! ! ! Entorno edición de programas de PLC y MC

IF ( MOVE_CHARS[LINE] BAND N_MASK_JERK_BIT)


JERK = JERK_[LINE]
ENDIF
CALL TYPE_MOV SUB_MOVE_VEL_0, SUB_ABS_MOVE,
SUB_REL_MOVE, SUB_INF_MOVE, SUB_NO_MOVE
IF ( MOVE_CHARS[LINE] BAND N_MASK_DIG_OUT)
R_DIG_OUT = MOVE_CHARS[LINE]
ENDIF
IF ( TEMP[LINE] NE 0)
DWELL TEMP[LINE]
2.

ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC


ANEXO 2. PROGRAMA ESTÁNDAR DE MC
ENDIF
ENDFOR
IF ( ( MOVE_CHARS[LINE] BAND N_MASK_END) EQ 0 )
M_MARCHA = 0
ELSE
LINE=( (MOVE_CHARS[LINE] BAND N_MASK_NEXT_LINE) / N_DIV_NEXT_LINE) * 10000
ENDIF
ENDWHILE
END

SUB SUB_NO_MOVE
ENDSUB

SUB SUB_MOVE_VEL_0
M_INFINITE_MOV = 1
MOVE D = 10 V = 0
M_INFINITE_MOV = 0
ENDSUB

SUB SUB_ABS_MOVE
IF (MOVE_CHARS[LINE] BAND N_MASK_FINISH_MOVE)
M_INFINITE_MOV = 1
ENDIF
MOVE P = DISTANCE[LINE] V = SPEED[LINE]
IF (MOVE_CHARS[LINE] BAND N_MASK_FINISH_MOVE)
M_INFINITE_MOV = 0
ENDIF
ENDSUB

SUB SUB_REL_MOVE
IF (MOVE_CHARS[LINE] BAND N_MASK_FINISH_MOVE)
M_INFINITE_MOV = 1
ENDIF DDS - MC
MOVE D = DISTANCE[LINE] V = SPEED[LINE]
IF (MOVE_CHARS[LINE] BAND N_MASK_FINISH_MOVE)
M_INFINITE_MOV = 0
ENDIF (SOFT [Link])
ENDSUB

21
! ! ! Entorno edición de programas de PLC y MC

SUB SUB_INF_MOVE
M_INFINITE_MOV = 1
IF (DISTANCE[LINE] GE 0
MOVE D = INF V = SPEED[LINE] L = NEXT
ELSE
MOVE D = - INF V = SPEED[LINE] L = NEXT
ENDIF
M_INFINITE_MOV = 0
2. ENDSUB
ENTORNO EDICIÓN DE PROGRAMAS DE PLC Y MC
ANEXO 2. PROGRAMA ESTÁNDAR DE MC

JOG

IF (JOG_POS OR JOG_NEG)
IF (M_VEL_MODO_JOG)
VELOCIDAD = 2 * JOG_VEL
ELSE
VELOCIDAD = JOG_VEL
ENDIF
IF (JOG_POS)
DISTANCIA = 10000
ELSE
DISTANCIA = - 10000
ENDIF
WHILE (1)
MOVE D = DISTANCIA V = VELOCIDAD L = PRESENT
ENDWHILE
ENDIF
END

22

DDS - MC

(SOFT [Link])

22
INTRODUCCIÓN AL AUTÓMATA
PROGRAMABLE [PLC] 3
El regulador gobierna las corrientes por el motor mediante un
software de control y obedeciendo a unas consignas de velocidad o
posición, controla ese accionamiento. Sobre este software de control
trabajan los paquetes de Motion Control (MC) y de Autómata
Programable (PLC).

El programa de MC emula a un Control Numérico CNC. Es capaz de


generar una secuencia de movimientos en el accionamiento.

El programa de PLC, en base a unas condiciones lógicas editadas por


el usuario, controla las entradas y salidas eléctricas digitales del
regulador. Tiene acceso además a las variables internas del software
de control en el regulador.

Propiedades generales

El PLC puede manejar hasta 32 entradas y 32 salidas lógicas. Aunque


dependiendo de la tarjeta (o tarjetas) de I/Os instaladas en el
regulador, sólo algunos de estos recursos tendrán representación
eléctrica externa.

Dispone de 64 marcas de tipo binario para la señalización de eventos


en el programa.

Tiene acceso permanente a las variables del regulador, que gestiona


de igual forma que los 32 registros de 32 bits cada uno.

Maneja contadores de eventos y temporizadores.

Ofrece un reloj Interno para la activación de acciones periódicas.

Dispone de toda una gama de instrucciones lógicas, aritméticas y de


control del flujo de programa.

Además existe un intercambio de información permanente entre el


software de control del regulador y el PLC que le permiten realizar:
! La lectura y modificación de variables del regulador desde el
PLC.
! La monitorización en pantalla del DDS Prog Module de los DDS - MC
recursos PLC.
! El acceso a todos los recursos del PLC desde un ordenador, a
través de la línea serie.

(SOFT [Link])

1
! ! ! Introducción al autómata programable (PLC)

Recursos del PLC

Entradas (I)

Son variables lógicas que, asociadas a unas entradas eléctricas,


permiten al programa de PLC conocer la activación o desactivación

3. de los distintos dispositivos eléctricos.

El PLC puede manejar hasta 32 entradas lógicas. Se representan


INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]
Recursos del PLC

mediante la letra I seguida del número identificativo, I1, I2 ... I32.

Salidas (O)

Son variables lógicas que, asociadas a unas salidas eléctricas,


permiten al programa de PLC activar o desactivar distintos
dispositivos eléctricos.

El PLC puede manejar hasta 32 salidas lógicas. Se representan


mediante la letra O seguida del número identificativo, O1, O2 ... O32.

Marcas (M)

Son elementos capaces de memorizar en un bit (como si fuera un relé


interno) el estado de las distintas variables booleanas del regulador
(gracias a la comunicación regulador-PLC) y el estado de las diversas
variables del PLC.

El PLC puede manejar hasta 64 marcas lógicas. Se representan


mediante la letra M seguida del número identificativo, M1, M2 ... M64.

Estas marcas no mantienen su valor ante una pérdida de la


alimentación.

Variables

El PLC tiene acceso a todas las variables y parámetros del regulador.


El PLC tiene el nivel de acceso OEM, por tanto le es imposible escribir

10 sobre variables o parámetros que requieran nivel "Fagor". Si esto


ocurre se dará el error E55-307-.

Estas variables son tratadas por el PLC de forma idéntica a la de los


Registros.
Se nombran en el programa de PLC por su nomenclatura Sercos®
en el regulador, es decir Sxxxxx ó Fxxxxx donde xxxxx es un número
DDS - MC decimal entre 0 y 32767.

Registros (R)
(SOFT [Link])
Son elementos de 32 bits que permiten almacenar un valor numérico,
que es considerado como un número entero con signo. Así su rango
de valores está en ±2147483647. Se puede acceder a su parte alta
y baja de forma separada.

2
! ! ! Introducción al autómata programable (PLC)

El PLC puede manejar hasta 32 registros. Se representan mediante


la letra R seguida del número identificativo, R1, R2 ... R32.

Temporizadores (T)

Son elementos que controlan el estado de una variable digital


temporizando su activación o desactivación en función de la
activación y/o desactivación de una entrada o marca lógica.

El PLC puede manejar hasta 16 temporizadores. Se representan


3.

INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]


Temporizadores (T)
mediante la letra T seguida del número identificativo, T1, T2 ... T16.

Cada temporizador puede trabajar en cuatro modos diferentes:


! Monoestable.
! Retardo a la conexión.
! Retardo a la desconexión.
! Limitador de la señal.

Contadores (C)

Son elementos capaces de contar o descontar el número de sucesos


acontecidos en entradas o marcas lógicas. El valor de estos
contadores está almacenado en registros de memoria de 32 bits. Así
su rango de valores está comprendido en ±2147483647.

El PLC puede manejar hasta 16 contadores. Se representan


mediante la letra C seguida del número identificativo, C1, C2 ... C16.

Estructura modular del programa de PLC

El programa a ejecutar por el AUTÓMATA, consiste en una serie de


MODULOS convenientemente definidos mediante PROPOSICIONES
DIRECTIVAS.

Los módulos que pueden formar el programa son:


• Módulo del primer ciclo (CY1)
• Módulo principal (PRG)
• Módulo de ejecución periódica (PE)

Todos estos módulos operan, por defecto, con los valores reales de
los recursos I, O, M.

Véase el apartado: Memoria Real vs Memoria Imagen.


DDS - MC

Módulo de Primer Ciclo (CY1)

CY1
Este módulo es opcional y se ejecuta una única vez en el momento
en el que se pone en marcha el AUTÓMATA. Sirve para inicializar los (SOFT [Link])
diferentes recursos y variables con sus valores iniciales antes de
proceder a la ejecución del resto del programa.
END

3
! ! ! Introducción al autómata programable (PLC)

En un programa solamente puede haber un módulo CY1. No es


necesario que se encuentre ubicado al comienzo del programa,
aunque deberá estar siempre precedido por la directiva CY1.

El proceso de ejecución del módulo de primer ciclo (CY1) es el


siguiente:
! El PLC lee las tensiones eléctricas que llegan a los pines de
entrada (conectores de la tarjeta de I/Os) y lee también el valor
de las variables del regulador. Estos dos grupos forman lo que

3. se denomina entradas físicas.

Conforma la memoria de valores reales.


INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]
Módulo principal (PRG)

! Ejecuta las instrucciones del módulo una tras otra, y de arriba a


abajo. Modifica los valores reales de las variables de salida y de
las marcas en función de las instrucciones. Para la evaluación de
las instrucciones, únicamente puede tomar valores de la
memoria real.
! Refleja el valor de los recursos "O" en las tensiones eléctricas de
los pines de salida. Actualiza las variables del regulador que el
programa haya modificado.
! Da por finalizada la ejecución de CY1 y continúa con el módulo
principal PRG.

El módulo de primer ciclo CY1 siempre trabaja sobre la memoria de


valores reales.

Módulo principal (PRG)

Este módulo contiene el programa de usuario, y será el encargado de


PRG
analizar y modificar las entradas y salidas del PLC.

Este módulo principal se ejecuta repetidamente cada período de


END tiempo dado por el parámetro AP5 [F2001] PlcPrgScanTime.

En un programa solamente puede haber un módulo PRG. Debe estar


precedido por la directiva PRG, aunque no es obligatoria si este
módulo comienza en la primera línea del programa.

El procesamiento del módulo principal (PRG) se repite


periodicamente y se desarrolla de la siguiente forma:

El proceso cíclico de ejecución del módulo principal (PRG) es el


siguiente:
10 ! El PLC lee las entradas físicas.
Conforma la memoria de valores reales. Asigna a los recursos
de entrada "I" del PLC los valores que determinan las entradas
eléctricas y guarda una copia de las variables del regulador.
P. ej, si por el pin correspondiente al recurso I2 se reciben cero
voltios (entrada física), el PLC asigna a la variable I2 el valor
DDS - MC "0" (valor real).
La variable [F709] del regulador (Power Bus On) es otro
ejemplo de dato entrada para el PLC.
! Ejecuta las instrucciones del módulo una tras otra, y de arriba a
(SOFT [Link]) abajo. Modifica los valores reales de las variables de salida y de
las marcas en función de las instrucciones. Para la evaluación de
las instrucciones, puede tomar valores tanto de la memoria real
como de la imagen.

4
! ! ! Introducción al autómata programable (PLC)

El próximo apartado de este mismo capítulo indica cómo está


estructurado el programa de PLC y cuales son sus módulos de
ejecución.
! Realiza una copia de la memoria de valores reales en la memoria
de valores Imagen.
Se almacenan valores imagen únicamente de los recursos:
1 ... I32, O1 ... O32 y M1 ...M64.
! Los valores de los recursos de salida "O", quedan reflejados en
las tensiones eléctricas que ofrecen los pines de salida en los
conectores de la tarjeta de I/Os. Actualiza las variables del
3.

INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]


Módulo de ejecución periódica (PE t)
regulador que el programa haya modificado.
P. ej, si la variable O5 tiene el valor "0", el PLC pondrá la salida
física O5 a cero voltios.
Concluye la ejecución del programa.
! Transcurrido desde que se inició este proceso, el tiempo indicado
por AP5 [F2001] PlcPrgScanTime, se repite el procedimiento
desde el punto primero.

Tensiones Eléctricas
&
AP5 -F2001- Parámetros Regulador

Valores Reales de los Recursos.


PRG
IMA REA
Valores Imagen de los Recursos.

END

Tensiones Eléctricas
&
Parámetros Regulador

fig. 3 - 1

Módulo principal (PRG).

Módulo de ejecución periódica (PE t)

E ste m ódulo es opci onal y s e uti liz a para tratar c ier tas
PE t
entradas/salidas críticas que requieren ser evaluadas con una
frecuencia superior a la del módulo principal.

END El módulo PE debe ser breve.

Se ejecuta periódicamente cada t milisegundos, interrumpiendo la


ejecución del módulo principal. Se puede programar un valor de t
DDS - MC
entre 1 y 65535 ms (1 min).

Ejemplo:
PE 15 ; Define el comienzo del módulo periódico PE que se ;
(SOFT [Link])
ejecutará cada 15 milisegundos.

5
! ! ! Introducción al autómata programable (PLC)

El proceso de ejecución del módulo periódico (PE) es el siguiente:


1. Si el módulo principal está en ejecución, lo interrumpe.
2. El PLC lee las entradas físicas y modifica la memoria de
valores reales.
3. Ejecuta las instrucciones del módulo una tras otra, y de arriba
a abajo. Modifica los valores reales de las variables de salida
y de las marcas en función de las instrucciones. Para la
evaluación de las instrucciones, únicamente puede tomar

3. valores de la memoria real.


4. Refleja el valor de los recursos "O" en las tensiones eléctricas
INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]
Orden de ejecución de los módulos del PLC.

de los pines de salida. Actualiza las variables del Regulador


que el programa haya modificado.
5. Da por finalizada la ejecución de PE y continúa la ejecución del
Módulo Principal donde la dejó.
6. Transcurrido el tiempo t desde que se inició este proceso, se
repite desde el punto primero.

El módulo periódico PE modifica el estado de los recursos del PLC. Por


lo tanto, puede interferir en la ejecución del programa principal si ambos
comparten algún recurso.
El módulo periódico PE siempre trabaja sobre la memoria de valores
reales.

Orden de ejecución de los módulos del PLC.

Cada vez que se arranca el programa del PLC el primer módulo en


ejecutarse es el Módulo de primer ciclo (CY1).

Una vez finalizada su ejecución se continuará con el Módulo Principal


(PRG).

Este módulo se ejecuta repetidamente, con un periodo indicado por


AP5 [F2001] PlcPrgScanTime.

El módulo periódico (PE) se ejecuta repetidamente, con el periodo


indicado en la proposición directiva “PE t”. La cuenta de este periodo
comienza con la ejecución del Módulo Principal (la primera vez).

La ejecución del módulo PE interrumpe la ejecución del Módulo


Principal, que se restablece después.
10
CY1

END

DDS - MC

PRG PE t

AP5 -F2001- t

(SOFT [Link]) END END

fig. 3 - 2

Orden de ejecución de los módulos del PLC.

6
! ! ! Introducción al autómata programable (PLC)

En los instantes en que coincide el comienzo de la ejecución del


módulo PE y la del módulo PRG, es el módulo de ejecución periódica
el que se ejecuta primero.

Sólo si el tiempo que dura la ejecución del módulo PRG se alarga


demasiado, se dará la interrupción del PRG por parte del PE.

CY1

PRG
3.

Ejecución del programa de PLC


INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]
AP5 -F2001- = 4 ms AP5 -F2001- = 4 ms

PE 2
2 ms

fig. 3 - 3

Orden de ejecución de los módulos del PLC. Interrupción del PRG

Ejecución del programa de PLC

En la ejecución del programa de PLC se han de tener en cuenta tres


aspectos fundamentales, que son:
! La ejecución de las instrucciones es secuencial, es decir, se
evalúan una tras otra y de arriba a abajo.
! El PLC maneja dos espacios de memoria interna muy diferentes.
Son las llamadas memoria de valores reales y memoria de
valores Imagen.
! El período de ejecución repetitiva de los módulos PE y PRG es
seleccionable. El tiempo consumido en la ejecución de los
módulos PE y PRG es vigilado por el sistema.

Ejecución secuencial.

Se debe tener en cuenta siempre que la ejecución de las


instrucciones es secuencial, y el resultado de cada una de ellas
depende de los resultados de las instrucciones anteriores.
Ejemplo.

; suponiendo que al inicio del ciclo el recurso M33 vale "0":


M33 AND I7 = O3 ; El recurso M33 vale "0". O3 vale "0".
I10 = M33 ;El recurso M33 toma el valor del recurso I10.
DDS - MC
M33 AND I8 = M55 ; El valor que toma M55 depende del valor
; dado a M33 en la instrucción anterior.

Véase el siguiente apartado a cerca de la memoria imagen.

(SOFT [Link])

7
! ! ! Introducción al autómata programable (PLC)

Memoria real vs memoria imagen

El PLC dispone de dos memorias separadas para almacenar el


estado de los recursos. Son la memoria real y la memoria imagen.
Todos los pasos explicados hasta ahora trabajan con la memoria
Real. Es lo mismo decir: "valor del recurso tal" o "valor real del
recurso tal".
La Memoria imagen contiene una copia de los valores que tenían
3. los recursos al finalizar el ciclo anterior. Esta copia la efectúa el
PLC al finalizar el ciclo.
INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]
Memoria real vs memoria imagen

Los recursos que disponen de valor imagen son:


I1 ... I32, O1 ... O32 y M1 ...M64.

El módulo de primer ciclo y el módulo periódico (CY1 y PE) siempre


trabajan sobre la memoria de valores reales.

DRIVE PLC DRIVE CONTROL SOFT

REAL MEMORY

Variables Variables
Beginning

End

I Real Cycle
Beginning Physical
I1 - I32
Input

M Real O Real Cycle


End Physical
M1 - M64 O1 - O32
Output

I/O BOARD
PRG PRG PRG
Cycle Cycle Cycle
End End End

I1 - I32
I Image

M1 - M64 O1 - O32
M Image O Image

IMAGE MEMORY

fig. 3 - 4

10 Memoria real vs memoria imagen.

Los siguientes ejemplos muestran el diferente modo en el que actúa


el PLC trabajando con valores reales, o con valores imagen. La
primera línea de programa indica que se le asigna el valor "1" al
recurso M1.
DDS - MC
Con valores reales:

Los datos considerados para la evaluación del primer miembro de las


instrucciones son los almacenados en la memoria real. Su ejecución
modifica también el valor de estos datos.
(SOFT [Link])

8
! ! ! Introducción al autómata programable (PLC)

El orden de las instrucciones hace que en el primer ciclo de


ejecución todos los recursos modifiquen su valor.

Effects on Real Values


PLC Program M1 M2 M3 O5
Beginning 0 0 0 0
() = M1 After first scan 1 1 1 1
M1 = M2 After second scan 1 1 1 1
M2 = M3 After third scan 1 1 1 1
M3 = O5 After fourth scan 1 1 1 1
3.
fig. 3 - 5

INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]


Memoria real vs memoria imagen
Con valores reales.

Con valores imagen:

Los datos considerados para la evaluación del primer miembro de las


instrucciones son los almacenados en la memoria imagen. Su
ejecución modifica los valores en la memoria real.
Tras cada ciclo de ejecución se actualiza la memoria imagen.
El primer ciclo sólo altera el valor de M1, ya que sólo cuando el ciclo
acaba, el valor imagen de M1 será "1".

Effects on Image Values


PLC Program M1 M2 M3 O5
Beginning 0 0 0 0
() = M1 After first scan 1 0 0 0
IMA M1 = M2 After second scan 1 1 0 0
IMA M2 = M3 After third scan 1 1 1 0
IMA M3 = O5 After fourth scan 1 1 1 1

fig. 3 - 6

Con valores imagen.

Como puede observarse, el sistema es más rápido cuando se trabaja


con valores reales de los recursos.

El trabajar con valores imagen permite analizar un mismo recurso a


lo largo del programa con el mismo valor, independientemente del
valor real que en ese momento disponga.
Ejemplo.

M1

..... I1
M1 AND I1 = SET M2
= RES M1 M2 O13
M2 AND I2 = SET M3
= RES M2 I2
..... DDS - MC
M2 = O13
M3

fig. 3 - 7 (SOFT [Link])

Máquina de estados mediante programa de PLC.

Se ha implementado esta máquina de estados por medio de un


programa de PLC.

9
! ! ! Introducción al autómata programable (PLC)

La ejecución de este programa atendiendo a los valores reales de


los recursos provoca un comportamiento anómalo en el caso de
que las entradas I1 e I2 estén activas en el estado M1. La salida
O13 no es activada en ningún instante a pesar de que la máquina
ha pasado por su estado M2.
Sin embargo, la ejecución sobre los valores imagen activará la
salida O13 durante un tiempo igual al período de ejecución del
programa.

3.
Periodo de ejecución y Watch-Dog
INTRODUCCIÓN AL AUTÓMATA PROGRAMABLE [PLC]
Periodo de ejecución y Watch-Dog

El módulo principal se ejecuta con un periodo indicado por AP5


[F2001] PlcPrgScanTime, y el módulo PE t cada t milisegundos.

El tiempo que invierte el PLC en la ejecución de cada módulo se


denomina tiempo de ciclo y puede variar en los sucesivos ciclos de
un mismo programa, ya que las condiciones en que se ejecuta no son
las mismas.

n Cycle n+1 Cycle n+2 Cycle n+3 Cycle

AP5 -F2001- AP5 -F2001- AP5 -F2001- AP5 -F2001-

fig. 3 - 8

Tiempo de ciclo.

Si la ejecución de un ciclo del programa principal PRG se prolonga


por un tiempo excesivo el PLC detiene la ejecución y muestra el error
de "Watch-Dog" E68.

Igualmente, para el programa de ejecución periódica, se dará el error


de "Watch-Dog" E69.

De este modo se evita que se ejecuten ciclos que por su duración


alteren el funcionamiento de la máquina o que el autómata quede
atrapado en un ciclo que no tiene fin por una mala programación.

WatchDog Time Limit

10 t

WatchDog Error t

DDS - MC
fig. 3 - 9

Error Watch - Dog.

(SOFT [Link])

10
RECURSOS DEL PLC
4
Entradas

Son elementos que proporcionan información al PLC de las señales


que se reciben del exterior. Se representan mediante la letra I seguida
del número de entrada que se desea referenciar, por ejemplo I1, I2,
I22, ...

El PLC puede controlar 32 entradas aunque al comunicarse con el


exterior, está limitado por el número de pines del conector en el
Regulador.

El PLC conoce el número y denominación de las I/O digitales de que


dispone el regulador en sus "slots" SL1 y SL2. Comunicará el error
E55-300 si el programa PLC pretende acceder a una entrada que no
existe físicamente.

Las entradas digitales pueden admitir señales eléctricas digitales


dadas en 24 Vdc. Consultar el capítulo 1 y el anexo A del manual
general, parámetro IP5 [F00909] DigitalInputsVoltage.

La numeración de las entradas respecto a los pines de los conectores


se indica en el gráfico de la página siguiente.

Salidas

Son elementos que permiten al PLC activar o desactivar los distintos


dispositivos del armario eléctrico. Se representan mediante la letra O
seguida del número de salida que se desea referenciar, por ejemplo
O1, O2, O12, ...

El PLC puede controlar 32 salidas aunque al comunicarse con el


exterior, está limitado por el número de pines del conector en el
Regulador.

El PLC conoce el número y denominación de las I/O digitales de que


dispone el Regulador en sus "slots" SL1 y SL2. Comunicará el error
E55-301 si el programa PLC pretende acceder a una salida que no
existe físicamente. DDS - MC
Consultar el capítulo 1 del manual general.

La numeración de las salidas respecto a los pines de los conectores


se indica en el gráfico de la página siguiente.
(SOFT [Link])

1
! ! ! Recursos del PLC

El módulo regulador puede albergar tres placas de I/O diferentes en


cada uno de sus dos slots. Son posibles todas las combinaciones
excepto ubicar la placa A1 en el slot SL2.

Pin Pin
1 1 Pin
2 2 1
1 3 3

DIG. INs

DIG. INs
2
4 1 4 3
5 5 4
6 6 5
7 7 6
X8 9 8 X11 8 7
9 9 8
(Phoenix, 9
1 9

4.
3.5 mm)
X6 10

DIG. INs
1 1 11
8I-16O 2

DIGITAL I/Os
1 12
2 3 13
3 4
4 X12 5

DIG. OUTs
1
5 9 6 (Phoenix,
RECURSOS DEL PLC
Marcas

6 7 13 3.5 mm)
(Phoenix, 8
7
3.5 mm) 9
8 P2
9
X9 9 16I-8O P1

1 1 A1

DIG. OUTs

DIG. OUTs
1
2 1 2
3 3 1
4 4 X7
5 5

ANALOG I/Os
X10 9 6 X13 6 Analog I/O
7 9 7
(Phoenix, 8 8
3.5 mm) 9 (Phoenix, 9
3.5 mm) 11

fig. 4 - 1

Placas I/O en los slots SL1 y SL2.

La numeración de los pines según la nomenclatura de los recursos


del PLC sigue las siguientes pautas:
! La placa ubicada en el slot SL1 numera los pines a partir de I1 y O1.
! La placa ubicada en el slot SL2 numera los pines a partir de I17
y O17 independientemente de la numeración dada en el slot SL1.
! Los pines se numeran de arriba a abajo.

Drive Module (example) Drive Module (example)

SL2 SL1 SL2 SL1

1 1 1 1 I1
I17 I1 I17 I2
I18 I2 I18 I3
I19 I3 I19 I4
X11 I20 I4 I20
I21 I5 I21
X8 I6 X8 X6 O1
I22 I22
I23 I7 I23
I8 O2
9 I24 9 9 I24
8I-16O 8I-16O O3
1
I25 1 1 O4
I26 O1 13
O17
I27 O2 O18
X12 I28 O3 O19 P2
I29 X9 O4 X9 O20
I30 O5
P1
O21
I31 O6 O22 A1
9 I32 O7 O23
9 O8 9 O24 1
16I-8O
1 1 1
O17 O9 O25
O18 O10 O26
O19 O11 O27 X7
X13 O20 X10 O12 X10 O28
O21 O13 O29
O22 O14 O30
O23 O15 O31

20
9 O24 9 O16 9 O32 11

fig. 4 - 2

Numeración de pines de las placas I/O en los slots SL1 y SL2.

DDS - MC
Marcas

Son elementos capaces de memorizar en un bit (como si fuera un relé


interno) la información definida por el usuario.
(SOFT [Link])
Estas marcas son mantenidas, de modo que si los circuitos de control
del regulador pierden su alimentación (24 Vdc), no se perderán los
valores que almacenan restaurándolos en un nuevo arranque.

Se almacenan todas las marcas.

2
! ! ! Recursos del PLC

Se programará mediante la letra M seguida del número de marca que


se desea referenciar, p. ej: M1, M25, M60, ...

El PLC controla hasta 64 marcas de usuario M1 - M64.

Variables

El PLC trabaja sobre una copia de las variables del regulador.


Acabado el ciclo del programa PLC, actualiza sus valores en el 4.
regulador.

RECURSOS DEL PLC


Variables
El PLC tiene acceso a todas las variables y parámetros del regulador.
El PLC tiene el nivel de acceso OEM, por tanto le es imposible escribir
sobre variables o parámetros que requieran nivel "Fagor". Si esto
ocurre se dará el error E55-307-.

Estas variables son tratadas por el PLC de forma idéntica a la de los


Registros.

Se nombran en el programa de PLC por su nomenclatura Sercos® en


el regulador, es decir Sxxxxx ó Fxxxxx donde xxxxx es un número
decimal entre 0 y 32767.

Ejemplos.

I3 = TG4 11 F235 ; el parámetro F235 del regulador tiene


; por nombre OverloadTimeLimit.

( ) = CPR 8 F907 ; el parámetro F907 del regulador tiene


; por nombre DigitalInputsValues.

Variables de 16 Bits

Se puede acceder tanto a la parte alta como a la parte baja de cada


variable, usándolas como variables de 16 bits. Su valor estará en el
rango ±32767.

Ejemplo.
F907L se refiere a la parte baja (low) de la variable F907.
F907H se refiere a la parte alta (high) de la variable F907.

Bit a bit

Se puede hacer referencia a un BIT de la VARIABLE anteponiendo


la letra B y el número de bit (0/31) a la varible seleccionada.
DDS - MC
El PLC considera al bit 0 como el de menor peso (LSB).

(SOFT [Link])

3
! ! ! Recursos del PLC

Ejemplo.
B28F907 se refiere al Bit 28 de la variable F907.

bit 31
bit 30
B28F907

bit 2
bit 1
bit 0
4. 1 0 0 1 0 0 1 ... 0 1 1 0 1 1 0
RECURSOS DEL PLC

F907H F907L
Registros

B28F907 B12F907H

fig. 4 - 3

Referencia a un bit de una variable.

Registros

Son elementos que almacenan en 32 bits una variable numérica. El


valor almacenado en cada registro será considerado por el PLC como
un número entero con signo. Así su valor estará en el rango
±2147483647.

Estos registros no son mantenidos salvo R1, R2, R3 y R4 que sí lo


son, de modo que si los circuitos de control del regulador pierden su
alimentación (24 Vdc), se perderán los valores que almacenan.

Si el usuario desea salvar información (p. ej: contadores de piezas)


deberá mantenerla en alguno de los registros R1, R2, R3 o R4 para
restaurarla en un nuevo arranque.

No disponen de valores imagen y se representan mediante la letra R,


seguida del número de registro que se desea referenciar, por ejemplo
R1, R25, ...

El PLC controla hasta 32 registros de usuario R1 - R32

El valor almacenado en un registro puede ser representado


! como número decimal,
! como número hexadecimal (precedido por el carácter “$”),
20 ! como número binario (precedido por el carácter “B”).

Ejemplos de distintas representaciones de un mismo dato:


Decimal 156
Hexadecimal $9C
DDS - MC
Binario B1001 1100

Bit a bit.
(SOFT [Link])
Se puede hacer referencia a un BIT del REGISTRO anteponiendo la
letra B y el número de bit (0/31) al registro seleccionado.

4
! ! ! Recursos del PLC

El PLC considera al bit 0 como el de menor peso (LSB).

Ejemplo.

B7R8 se refiere al Bit 7 del registro 8

Registros de 16 bits

Se puede acceder aleatoriamente a la parte alta o baja de cada


registro, usándolos así como registros de 16 bits. Así su valor estará
4.

RECURSOS DEL PLC


Registros de 16 bits
en el rango ±32767.

Ejemplo.
R5L se refiere a la parte baja (low) del registro R5.
R8H se refiere a la parte alta (high) del registro R8.
bit 31
bit 30

bit 2
bit 1
bit 0
R8: 1 0 0 1 0 0 1 ... 0 1 1 0 1 1 0

R8H R8L

fig. 4 - 4

Acceso a la parte alta o baja de un registro.

Temporizadores

Son elementos que controlan el estado de una variable digital


temporizando su activación o desactivación en función de la
activación y/o desactivación de una entrada o marca lógica.

La salida de estado del temporizador se representa mediante la letra


T, seguida de su número identificativo, por ejemplo T1, T2, T8, etc.
No disponen de valores imagen.

El registro del tiempo se almacena en una variable de 32 bits (sin


signo), así, su valor puede estar comprendido entre 0 y 4294967295
milisegundos, lo que equivale a 1193 horas (casi 50 días).

El PLC tiene 16 temporizadores. Dispone cada uno de ellos de la


salida de estado T y de las entradas TEN, TRS, TG1, TG2, TG3 y TG4.
Es posible además consultar en cualquier momento el tiempo que
lleva transcurrido desde que se activó el mismo.

Enable TEN DDS - MC


Reset TRS
TIMER
TG1 T1 / T16 Output
Start TG2
Modes TG3 (SOFT [Link])
TG4 T1 / T16 Time

fig. 4 - 5

Temporizadores.

5
! ! ! Recursos del PLC

Entrada de enable (TEN)

Es la entrada de habilitación del temporizador.

Para habilitar el contaje del tiempo la entrada TEN debe estar a nivel
lógico “1”.

Por defecto, y cada vez que se activa un temporizador, el PLC asigna


a esta entrada un nivel lógico “1”.
4. Si se hace TEN = 0, se detiene la temporización, aunque se conserva
el valor del contaje de tiempo. Cuando se hace TEN = 1 continúa la
RECURSOS DEL PLC
Entrada de enable (TEN)

cuenta desde el valor en el que se detuvo.

Se representa mediante las letras TEN seguidas del número


identificativo del temporizador, por ejemplo TEN 1, TEN 2, TEN 8, ...

TEN

fig. 4 - 6

Entrada de Enable (TEN).

Ejemplo.

I2 = TEN 10
; La entrada I2 habilita el temporizador T10.
; Cero volt. en el pin correspondiente a I2 detendrá la cuenta.

Entrada de reset (TRS)

Es la entrada de inicialización del temporizador, Reset.

El Reset del temporizador significa poner su cuenta a cero, y poner


a "0" la salida de estado T. Además el temporizador queda
desactivado, y sólo es posible reactivar la cuenta mediante sus
20 entradas TG.

El Reset del temporizador se ejecuta cuando se produce una


transición del nivel lógico de la entrada TRS de “0” a “1” (flanco de
subida). Por defecto y cada vez que se active un temporizador el PLC
asignará a esta entrada un nivel lógico “0”.
DDS - MC

(SOFT [Link])

6
! ! ! Recursos del PLC

Se representa mediante las letras TRS seguidas del número


identificativo del temporizador, por ejemplo TRS 1, TRS 2, TRS 13, ...

TRS

t
4.

RECURSOS DEL PLC


Entradas de activación (TG1, TG2, TG3, TG4)
fig. 4 - 7

Entrada de Reset (TRS).

Ejemplo.

I3 = TRS 10
; La entrada I3 controla el reset del temporizador T10.
; Un flanco de subida en el pin correspondiente a I3,
; reseteará la cuenta.

Entradas de activación (TG1, TG2, TG3, TG4)

Son las entradas de activación del temporizador.

TG1, TG2, TG3 y TG4 representan cuatro modos diferentes de


funcionamiento del temporizador.
! TG1 activa el temporizador en el modo MONOESTABLE
! TG2 activa el temp. en el modo RETARDO A LA CONEXION
! TG3 activa el temp. en modo RETARDO A LA DESCONEXION
! TG4 activa el temp. en el modo LIMITADOR DE LA SEÑAL

La instrucción para la activación consta del comando TG1, TG2, TG3,


o TG4, seguido del número identificativo del temporizador, y de la
Constante de Tiempo de la temporización.

El valor de la constante de tiempo se define en milésimas de segundo,


pudiendo indicarse la misma mediante un valor numérico explícito, a
través de un registro R, o de un parámetro del Regulador.

Ejemplos.

I3 = TG1 12 100 ; I3 activa el temp. monoestable T12 con


; una constante de tiempo de 100 ms.
I3 = TG2 8 R30 ; I3 activa el temp. T8 con retardo a la
; conexión con una constante de tiempo
; que vendrá definida (en milésimas de DDS - MC
; segundo) por el valor que tenga el
; registro R30 cuando se ejecute la
; instrucción.
I3 = TG4 11 F720 ; I3 activa el temporizador T11 en modo
; de limitación de la señal con la (SOFT [Link])
; constante de tiempo dada por el
; parámetro F720 del regulador.

7
! ! ! Recursos del PLC

El arranque del temporizador se ejecuta cuando se produce una


transición en el nivel lógico de la señal de activación.
Flanco de subida en los modos TG1, TG2 y TG4.
Flanco de bajada en el modo TG3 de retraso a la desconexión.

El modo de funcionamiento de cada una de estas entradas de


activación se explica en apartados posteriores de este capítulo.

4. Salida de estado (T)


RECURSOS DEL PLC
Salida de estado (T)

Esta salida indica el estado lógico del temporizador.

Se representa mediante la letra T seguida del número identificativo


del temporizador, por ejemplo T1, T2, T16, ...

Tiempo transcurrido (T)

Esta salida indica el tiempo transcurrido en el temporizador desde


que se activó el mismo.

Se representa mediante la letra T seguida del número identificativo


del temporizador, p. ej: T1, T2, T16, ...

Aunque la representación del tiempo transcurrido coincide con la de


la salida de estado, su empleo en instrucciones de tipo distinto las
identifica en cada caso.
En las instrucciones de tipo binario el nombre T12 hace referencia
al estado lógico del temporizador.
T12 = M10
; Asigna a la marca M10 el estado (0/1) del Temporizador 12.

En las instrucciones de tipo aritmético y de comparación el nombre


T12 hace referencia al tiempo transcurrido en el temporizador desde
que se activó el mismo.
I2 = MOV T12 R20
; Transfiere el tiempo de T12 al registro R20
CPS T12 GT 1000 = M1
; Comprueba si el tiempo transcurrido en T12 es mayor de
; 1000 ms, en cuyo caso activa la marca M10.
20 El registro del tiempo se almacena en una variable de 32 bits (sin
signo). Así, su valor puede estar comprendido entre 0 y 4294967295
milisegundos, lo que equivale a 1193 horas (casi 50 días).

No se puede trabajar separadamente con la parte alta (H) y baja (L)


del registro de tiempo T como se hace con los registros R.
DDS - MC

(SOFT [Link])

8
! ! ! Recursos del PLC

Modo de funcionamiento del temporizador

El modo de funcionamiento de un temporizador se selecciona


mediante la activación de una de las entradas de arranque TG1, TG2,
TG3, TG4.
! La entrada TG1 activa el temp. en el modo MONOESTABLE
! TG2 activa el temp. en el modo RETARDO A LA CONEXION
! TG3 activa el temp. en modo RETARDO A LA DESCONEXION
! TG4 activa el temp. en el modo LIMITADOR DE LA SEÑAL
4.

RECURSOS DEL PLC


Modo de funcionamiento del temporizador
Modo monoestable. Entrada TG1

En este modo, la salida de estado del temporizador se mantiene a


nivel lógico alto ( T=1 ) desde la activación de la entrada TG1 y
mientras transcurre el tiempo indicado por la constante de tiempo.

TG1

fig. 4 - 8

Modo monoestable. Entrada TG1.

El temporizador se activa con un flanco de subida en la entrada TG1.


En este momento la salida de estado toma el valor "1" y comienza
la temporización.

fig. 4 - 9
DDS - MC
Activación del temporizador por flanco de subida en la entrada TG1.

Transcurrido el tiempo indicado por la constante de tiempo, la salida


de estado toma el valor "0" y el tiempo transcurrido mantiene su valor.

Cualquier alteración que se produzca en la entrada TG1 (flanco de (SOFT [Link])


subida o de bajada) durante la temporización no produce ningún
efecto.

9
! ! ! Recursos del PLC

Si una vez finalizada la temporización se desea activar nuevamente


el temporizador, deberá producirse un nuevo flanco de subida en la
entrada TG1.

Efecto de la entrada TRS en este modo

Si se produce un flanco de subida en la entrada TRS en cualquier


momento, durante la temporización o después de ella, el PLC pone
su cuenta a cero, y pone a "0" la salida de estado T. Además el

4. temporizador queda desactivado, y sólo es posible reactivar la cuenta


mediante la entrada TG.
RECURSOS DEL PLC
Modo de retardo a la conexión. Entrada TG2

fig. 4 - 10

Efecto de la entrada TRS en modo monoestable.

Efecto de la entrada TEN en este modo

Si se hace TEN = 0, se detiene la temporización, aunque se conserva


el valor del contaje de tiempo. Cuando se hace TEN = 1 continúa la
cuenta desde el valor en el que se detuvo.

20
fig. 4 - 11

Efecto de la entrada TEN en modo monoestable.

DDS - MC

Modo de retardo a la conexión. Entrada TG2

Este modo de funcionamiento permite realizar un retardo entre la


activación de la entrada de arranque TG2 y la activación de la salida
(SOFT [Link])
de estado T del temporizador.

10
! ! ! Recursos del PLC

La duración de este retardo, está determinada por la constante de


tiempo.

electrical
equivalent
TG2 T

4.

RECURSOS DEL PLC


Modo de retardo a la conexión. Entrada TG2
fig. 4 - 12

Modo de retardo a la conexión. Entrada TG2.

El temporizador se activará al producirse un flanco de subida en la


entrada TG2. En este momento comienza la temporización desde 0.

Una vez transcurrido el tiempo especificado por la constante de


tiempo se activará la salida de estado del temporizador (T=1)
manteniéndose en ese valor hasta que se produzca un flanco de
bajada en la entrada de arranque TG2.

El tiempo transcurrido se mantendrá en su valor una vez finalizada


la temporización.

fig. 4 - 13

Entradas TG2, TRS y TEN.

Si una vez finalizada la temporización se desea activar nuevamente


el temporizador, deberá producirse un nuevo flanco de subida en la
entrada TG2.

Si el flanco de bajada de TG2 se produce antes de haber transcurrido


el tiempo especificado por la constante de tiempo, el PLC dará por
finalizada la temporización, manteniendo el valor del tiempo
transcurrido.
DDS - MC

(SOFT [Link])

11
! ! ! Recursos del PLC

Efecto de la entrada TRS en este modo

Si se produce un flanco de subida en la entrada TRS en cualquier


momento, durante la temporización o después de ella, el PLC pone
su cuenta a cero, y pone a "0" la salida de estado T. Además el
temporizador queda desactivado, y sólo es posible reactivar la cuenta
mediante la entrada TG.

4.
RECURSOS DEL PLC
Modo de retardo a la desconexión. Entrada TG3

fig. 4 - 14

Efecto de la entrada TRS en el modo de retardo a la conexión.

Efecto de la entrada TEN en este modo

Si se hace TEN = 0, se detiene la temporización, aunque se conserva


el valor del contaje de tiempo. Cuando se hace TEN = 1 continúa la
cuenta desde el valor en el que se detuvo.

fig. 4 - 15

Efecto de la entrada TEN en el modo de retardo a la conexión.

20
Modo de retardo a la desconexión. Entrada TG3

Este modo de funcionamiento permite realizar un retardo entre la


desactivación de la entrada de arranque TG3 y la desactivación de
la salida T del temporizador.
DDS - MC

(SOFT [Link])

12
! ! ! Recursos del PLC

La duración del retardo, está determinada por la constante de tiempo.

electrical
equivalent
TG3 T

4.

RECURSOS DEL PLC


Modo de retardo a la desconexión. Entrada TG3
fig. 4 - 16

Modo de retardo a la desconexión. Entrada TG3.

El temporizador se activará al producirse un flanco de subida en la


entrada TG3. En este momento la salida de estado del temporizador
tomará el valor "1".

El temporizador esperará un flanco de bajada de TG3 para comenzar


la cuenta a partir del valor 0.

Una vez transcurrido el tiempo especificado por la constante de


tiempo se desactivará la salida de estado del temporizador (T=0).

El tiempo transcurrido se mantendrá en su valor una vez finalizada


la temporización.

fig. 4 - 17

Entradas TG3, TRS y TEN.

Si una vez finalizada la temporización se desea activar nuevamente


el temporizador, deberá producirse un nuevo flanco de subida en la
entrada TG3.

Si antes de haber transcurrido el tiempo especificado mediante la


constante de tiempo se produce un nuevo flanco de subida de la
entrada de arranque TG3, el PLC considerará que es una nueva DDS - MC
activación del temporizador, manteniendo su estado ( T=1 ) e
inicializando la temporización desde 0.

(SOFT [Link])

13
! ! ! Recursos del PLC

Efecto de la entrada TRS en este modo

Si se produce un flanco de subida en la entrada TRS en cualquier


momento, durante la temporización o después de ella, el PLC pone
su cuenta a cero, y pone a "0" la salida de estado T. Además el
temporizador queda desactivado, y sólo es posible reactivar la cuenta
mediante la entrada TG.

4.
RECURSOS DEL PLC
Modo de retardo a la desconexión. Entrada TG3

fig. 4 - 18

Efecto de la entradas TRS en el modo de retardo a la desconexión.

Efecto de la entrada TEN en este modo

Si se hace TEN = 0, se detiene la temporización, aunque se conserva


el valor del contaje de tiempo. Cuando se hace TEN = 1 continúa la
cuenta desde el valor en el que se detuvo.

fig. 4 - 19

Efecto de la entradas TEN en el modo de retardo a la desconexión.

20

DDS - MC

(SOFT [Link])

14
! ! ! Recursos del PLC

Modo limitador de la señal. Entrada TG4

En este modo de funcionamiento el estado del temporizador se


mantiene a nivel lógico alto ( T=1 ) desde que se activa la entrada TG4
y mientras transcurre el tiempo indicado por la constante de tiempo,
o hasta que se produzca un flanco de bajada en la entrada TG4.

TG4 4.

RECURSOS DEL PLC


Modo limitador de la señal. Entrada TG4
t

fig. 4 - 20

Modo limitador de la señal. Entrada TG4.

El temporizador se activará al producirse un flanco de subida en la


entrada TG4. En este momento la Salida de Estado del temporizador
(T) cambia de estado ( T=1 ) y comienza la temporización desde el
valor 0.

fig. 4 - 21

Entradas TG4, TRS y TEN.

Una vez consumido el tiempo especificado por la Constante de


Tiempo, la Salida de Estado del temporizador (T) se pone a "0"
manteniendo el valor del Tiempo Transcurrido.

Si se produce un flanco de bajada de la entrada de arranque TG4, el


PLC dará por finalizada la temporización desactivando la Salida de
Estado ( T=0 ) manteniendo el valor del Tiempo Transcurrido.

Si una vez finalizada la temporización se desea activar nuevamente


el temporizador, deberá producirse un nuevo flanco de subida en la
entrada TG4. DDS - MC

(SOFT [Link])

15
! ! ! Recursos del PLC

Efecto de la entrada TRS en este modo

Si se produce un flanco de subida en la entrada TRS en cualquier


momento, durante la temporización o después de ella, el PLC pone
su cuenta a cero, y pone a "0" la salida de estado T. Además el
temporizador queda desactivado, y sólo es posible reactivar la cuenta
mediante la entrada TG.

4.
RECURSOS DEL PLC
Modo limitador de la señal. Entrada TG4

fig. 4 - 22

Efecto de la entradas TRS en el modo limitador de la señal.

Efecto de la entrada TEN en este modo

Si se hace TEN = 0, se detiene la temporización, aunque se conserva


el valor del contaje de tiempo. Cuando se hace TEN = 1 continúa la
cuenta desde el valor en el que se detuvo.

fig. 4 - 23

Efecto de la entradas TEN en el modo limitador de la señal.

20

DDS - MC

(SOFT [Link])

16
! ! ! Recursos del PLC

Reloj interno

Un reloj interno realiza un contaje del tiempo en fracciones de 1


milisegundo. El tiempo se contabiliza en un registro de 32 bits llamado
TIME_.

A través de este registro TIME_ el Autómata ofrece la posibilidad de


activar de forma periódica y automática alguna de sus salidas
digitales.
4.
1 ms

RECURSOS DEL PLC


Reloj interno
B0TIME_
t

B1TIME_ t

2 ms

fig. 4 - 24

Registro TIME_.

Ejemplo.

DFU B8TIME_ = M15

512 ms

M15
t

Ejemplo.

B2TIME_ AND B3TIME_ AND B4TIME_ = M11


; la marca se activa cada 32 ms (durante 4 ms)

4 ms

B2TIME_ t

B3TIME_ t

B4TIME_ t

M11 t

DDS - MC
El registro TIME_ se maneja de forma idéntica al resto de registros
de 32 bits. Admite también su partición en registros de 16 bits.
() = AND TIME_L MASK R12L
() = MOV TIME_ R1 0032 ;se trata como a un registro
(SOFT [Link])

17
! ! ! Recursos del PLC

Contadores

Son elementos capaces de contar o descontar una cantidad


determinada de sucesos. El PLC dispone de 16 contadores que se
representan mediante la letra C, seguida del número identificativo del
contador, por ejemplo C1, C2, C12, ...

El valor numérico de un contador se almacena en una variable de 32

4. bits, po r l o que su valor pue de es tar c ompr endid o entr e


±2147483647.
RECURSOS DEL PLC
Contadores

Dispone cada uno de ellos de una salida de estado C y de las entradas


de control CUP, CDW, CEN y CPR. Es posible además consultar en
cualquier momento el valor de su cuenta.

Enable CEN

Reset CPR
COUNTER
C1 / C16 Output
Count UP CUP
Count DOWN CDW
C1 / C16 Time

fig. 4 - 25

Contadores.

Entrada de contaje (CUP)

Cada vez que se produce un flanco de subida en esta entrada CUP,


se incrementa en una unidad la cuenta del contador.

Se representa mediante las letras CUP seguidas del número


identificativo del contador, por ejemplo CUP1, CUP2, CUP12, ...

Ejemplo.

I2 = CUP 10
; Cada vez que se produce un flanco de subida en la
; entrada I2 se incrementa en una unidad la cuenta del
; contador C10.

20
Entrada de descontaje (CDW)

Cada vez que se produce un flanco de subida en esta entrada CDW,


se decrementa en una unidad la cuenta del contador.
DDS - MC
Se representa mediante las letras CDW seguidas del número
identificativo del contador, por ejemplo CDW1, CDW2, CDW12, ...

Ejemplo.
(SOFT [Link])
I3 = CDW 20
; Cada vez que se produce un flanco de subida en la
; entrada I3 se decrementa en una unidad la cuenta del
; contador C20.

18
! ! ! Recursos del PLC

Entrada de preselección (CPR)

Esta entrada permite fijar un valor numérico determinado en el


contador. El contador se preselecciona con el valor indicado en la
línea del programa de PLC cuando se produce un flanco de subida
en la entrada CPR.

El valor de esa preselección puede indicarse mediante un valor


numérico explícito, a través de un registro R, o de un parámetro del
Regulador. 4.
Se representa mediante las letras CPR seguidas del número

RECURSOS DEL PLC


Entrada de preselección (CPR)
identificativo del contador y del valor que se desea asignar a la cuenta
del contador.

Ejemplo.

( ) = CPR 12 30 ; Preselecciona el contador C12 con el


; valor 30.

( ) = CPR 2 R20 ; Preselecciona el contador C2 con el


; valor del registro R20 cuando se ejecute
; la instrucción.

( ) = CPR 8 F907 ; Preselecciona el contador C8 con el


; valor del parámetro F907 del regulador.

Entrada de enable (CEN)

Esta es la entrada de habilitación del contador. Sólo es posible


modificar el valor del contaje cuando CEN tiene el nivel lógico "1".

Si se selecciona CEN = 0 el PLC detiene la cuenta del contador, no


haciendo caso a las entradas CUP y CDW hasta que dicha entrada
lo permita (CEN = 1).

El PLC asigna automáticamente un "1" a esta señal de enable CEN


cuando se preselecciona el contador.

Se representa mediante las letras CEN seguidas del número


identificativo del contador, p. ej: CEN 1, CEN 2, CEN12, ...

DDS - MC

(SOFT [Link])
fig. 4 - 26

Entrada de enable (CEN).

19
! ! ! Recursos del PLC

Ejemplo.
I10 = CEN 12 ; Cuando el pin correspondiente a la
; entrada I10 tenga un valor lógico alto el
; contador C12 estará habilitado para la
; cuenta.

4. Salida de estado (C)

Esta salida indica el estado lógico del contador.


RECURSOS DEL PLC
Salida de estado (C)

Se representa mediante la letra C seguida del número identificativo


del contador, por ejemplo C1, C2, C12, ...

El estado lógico del contador será C =1 cuando el valor de la cuenta


sea cero y C =0 en el resto de los casos.

Valor de la cuenta (C)

Esta salida indica el valor numérico del contador.

Se representa mediante las letras C seguidas del número


identificativo del contador, por ejemplo C1, C2, C12, ...

Aunque la representación del valor de la cuenta coincide con la de la


salida de estado, su empleo en instrucciones de tipo distinto las
identifica en cada caso.

En las instrucciones de tipo binario el nombre C12 hace referencia al


estado lógico del contador.
C12 = M10
; Asigna a la marca M10 el estado (0/1) del Contador 12.

En las instrucciones de tipo aritmético y de comparación la función


C12 hace referencia a la cuenta interna del contador.
I2 = MOV C12 R20
; Transfiere la cuenta de C12 al registro R20.

CPS C12 GT 1999 = M10


; Comprueba si la cuenta de C12 es mayor que 1999,
; en cuyo caso activa la marca M10.

20 El valor numérico de un contador se almacena en una variable de 32


bits, po r l o que su valor pue de es tar c ompr endid o entr e
±2147483647.

No se puede trabajar separadamente con la parte alta (H) y baja (L)


del registro de contaje C como se hace con los registros R.
DDS - MC

(SOFT [Link])

20
PROGRAMACIÓN DEL PLC
5
Estructura de un módulo

Los módulos que forman parte del programa de PLC, módulo


principal (PRG), módulo de ejecución periódica (PE) y el módulo de
primer ciclo (CY1), están compuestos por una serie de Proposiciones
que dependiendo de su funcionalidad se pueden dividir en:
! Proposiciones directivas.
! Proposiciones ejecutables.
Las proposiciones directivas proporcionan información al PLC sobre
el tipo de módulo y sobre la forma en que debe ejecutarse el mismo.

Las proposiciones ejecutables permiten consultar y/o alterar el


estado de los recursos del PLC (I,O,M,R,T,C) y están compuestas
por:
! Una expresión lógica (booleana 0 /1).
! Una o varias instrucciones de acción.

Action

Logic Expresion Action

Action

fig. 5 - 1

Composición de proposiciones ejecutables.

Una expresión lógica está formada por:


! Una o varias instrucciones de consulta del estado de los
recursos.
! Uno o varios operadores.

Por lo tanto, la estructura de un módulo se resume de la siguiente


forma:

Proposición directiva
DDS - MC
Operador
(PRG) (AND)
Módulo PLC Expresión lógica
(I1 AND I2) Instrucción de Consulta
(I1)
Proposición ejecutable
(I1 AND I2 = O2)
Instrucción de acción
(SOFT [Link])
(= O2)

fig. 5 - 2

Estructura de un módulo.

1
! ! ! Programación del PLC

El PLC permite incluir en el programa cualquier tipo de información


a modo de comentario. Cada comentario comienza por el carácter “;”
y todo el texto incluido entre el signo " punto y coma " y el final de línea
es irrelevante en la ejecución del programa.

Ejemplo de programación.

PRG Mi programa

5. ; I10 = M12 Esta línea es toda ella un comentario.

M12 AND I3 ; Expresión Lógica


PROGRAMACIÓN DEL PLC
Proposiciones directivas

= O2 ; Instrucciones de Acción
= O12

I3 ; Instrucción de consulta ( I3 )
AND I10 ; Operador ( AND ) e Instrucción de
; consulta ( I10 )
= M10 ; Instrucción de Acción

END

Es muy recomendable incluir abundantes comentarios que hagan


más sencilla la comprensión del programa y su mantenimiento
posterior.

El compilador de PLC permite en el texto de comentario cualquier


carácter.

Proposiciones directivas

Proporcionan información al PLC sobre el tipo de módulo y sobre la


forma en que debe ejecutarse el mismo.

Las proposiciones directivas de que dispone el PLC para su


programación son PRG, PE, CY1, END, L, DEF, IRD, OWR y TRACE.

PRG, PE, CY1

36 Definen el tipo de módulo.


PRG Módulo principal.
CY1 Módulo de primer ciclo.
PE t Módulo periódico. Se ejecutará periódicamente
cada periodo de tiempo t (en milisegundos)
indicado en la misma proposición directiva.
DDS - MC
Por ejemplo: PE 100 ; Se ejecutará cada 100
ms.

(SOFT [Link])

2
! ! ! Programación del PLC

END

Indica el final del módulo. Si no se usa, el PLC entiende que dicho


módulo finaliza con el comienzo del siguiente módulo o el fin del
programa.

Ejemplo. (no se utiliza la proposición directiva END).

CY1 ; Comienzo del módulo CY1 5.


——-

PROGRAMACIÓN DEL PLC


END
——-
PRG ; Comienzo del módulo PRG
——-
——-
PE 100 ; Comienzo del módulo PE
——-
—— ; Final de los módulos CY1, PRG y PE

Etiquetas

Sirven para identificar una línea dentro del programa. Se utiliza


normalmente cuando se realizan referencias o saltos de programa.

Las etiquetas pueden estar formadas por hasta treinta y dos letras
mayúsculas y/o cifras, seguidas del carácter "dos puntos (:)".
Deberán empezar siempre por una letra o un "guión bajo (_)".

Ejemplos.

POINT:
NOT M14 AND NOT I9 = M15

_1234: M14 = O8

No pueden escribirse dos etiquetas iguales.

Sólo se puede colocar una etiqueta en las líneas de programa que


están dentro de los módulos CY1, PRG, PE y dentro de las subrutinas.
El comienzo de subrutina es una etiqueta.

DEF

Definición de símbolo. Asocia un símbolo a cualquier recurso del PLC.


A lo largo del programa es posible referirse a ese recurso por medio DDS - MC
de su símbolo asociado.

Esta es una herramienta de ayuda a la programación, sin


implicaciones en la compilación y funcionamiento del programa. Es
muy recomendable incluir abundantes definiciones que hagan más
(SOFT [Link])
sencilla la comprensión del programa y su mantenimiento posterior.

3
! ! ! Programación del PLC

Ejemplo.
DEF EMERG I1 ; Asigna el símbolo EMERG a la entrada
; I1, por lo que cualquier referencia a lo
; largo del programa a EMERG será
; interpretada por el PLC.
; como una referencia a I1.

También se permite asociar un símbolo a cualquier número, pudiendo

5. estar el mismo expresado en notación decimal, con o sin signo, en


notación hexadecimal, precedido por el carácter “$” o en modo
binario, precedido por el carácter “B”.
PROGRAMACIÓN DEL PLC
#INCLUDE

Ejemplo.

DEF MASK $AAAA ; Asigna el símbolo MASK al


; conjunto de bits
; B1010101010101010.

( ) = AND R14 MASK R14 ; Emplea la plantilla MASK


; para poner a cero algunos
; bits de R14.

El PLC permite realizar hasta 1000 definiciones de símbolos, que se


colocarán siempre en las primeras líneas del programa, antes que
ninguna otra proposición.

Un símbolo estará formado por una secuencia de hasta 32


caracteres, no pudiendo coincidir con ninguna de las palabras
reservadas para instrucciones, ni pudiendo estar formadas por los
caracteres espacio “ “, igual “=”, abrir y cerrar paréntesis “(" ")”, coma,
y punto y coma “," " ;”.

No se puede asociar más de un recurso a un mismo símbolo.

Sin embargo, sí se permite asociar más de un símbolo a un mismo


recurso.

Ejemplo.
DEF EMRGOUT O1
DEF WRNGOUT O1

Véase el siguiente apartado "#INCLUDE"

36
#INCLUDE

Esta sentencia permite incluir en una sola línea de programa, una


referencia a un fichero que contiene definiciones de recursos.

DDS - MC Facilita la organización del programa y la claridad del mismo.

Ejemplo.

#INCLUDE "path fichero"


(SOFT [Link])
Donde path fichero indica la ubicación del fichero en el disco del
Ordenador Personal PC, o incluso a través de una red de PCs.

4
! ! ! Programación del PLC

Ejemplo.
#INCLUDE "C:\Editor\MyFiles\PLCFiles\[Link]"
o solamente
#INCLUDE "[Link]"
si el fichero de programa .plc y el de definiciones [Link] están
en el mismo directorio.

La directiva "#INCLUDE" se ubica siempre al comienzo del programa,


junto a las definiciones "DEF". 5.

PROGRAMACIÓN DEL PLC


REA, IMA
El fichero de texto "[Link]" debe estar redactado con las mismas
normas sintácticas que se exigen a cualquier programa.

Existen ficheros preparados con las definiciones más habituales.


Estos "ficheros de cabecera" son suministrados dentro del mismo
paquete de software. Ver anexo a este capítulo.

[Link] Contiene defines de los parámetros básicos para


la configuración y el control del funcionamiento
del PLC en su conexión con el programa de MC.

ad_da.inc Contiene defines útiles para el manejo de las


entradas y salidas analógicas.

[Link] Contiene defines útiles para manejar el


generador interno de funciones.

[Link] Fichero de includes propios de los programas de


MC, no de PLC. Contiene defines para las
variables Sercos y Fagor más relevantes, y
algunas constantes.

REA, IMA

Estas no son exactamente unas proposiciones directivas, sino unos


modificadores de la sentencia.
Indican al PLC que las consultas definidas a continuación se
realizarán sobre los valores reales (REA) o imagen (IMA) de los
recursos I, O, M. Los registros, temporizadores y contadores no
disponen de valores imagen.

Estos modificadores se refieren siempre a la consulta de recursos


para la evaluación de las expresiones lógicas (primer miembro) ya
que las instrucciones de acción ( =O15 ) se ejecutan siempre sobre
los valores reales.

Ejemplo.
DDS - MC
IMA I3 AND M4 = O2 ; Realiza la operación lógica
; AND entre el valor imagen de
; I3 y el real de M4.

Por defecto, las consultas de recursos para la evaluación se toman (SOFT [Link])
de la memoria de valores [Link] modificador IMA afecta
únicamente a la consulta inmediatamente posterior a él.

5
! ! ! Programación del PLC

IRD

Lee las entradas físicas, señales eléctricas y parámetros del


regulador, y actualiza los valores reales de las entradas del PLC.

Se debe tener cuidado al utilizar esta directiva ya que, en ese punto


del programa, los valores reales de las entradas serán sobreescritas.

5. OWR
PROGRAMACIÓN DEL PLC
IRD

Actualiza las salidas físicas (eléctricas y parámetros) con los valores


reales que, en ese punto, tienen las salidas O.

TRACE

Directiva no disponible todavía en eL PLC.

Esta directiva se debe utilizar cuando se trabaja con el analizador


lógico y permite realizar una captura de datos durante la ejecución del
ciclo de PLC.

Se debe tener en cuenta que el analizador lógico realiza una captura


de datos al comienzo de cada ciclo (PRG y PE). Lo hace exactamente
después de leer las entradas físicas y antes de comenzar la ejecución
del programa.

Si además se desea realizar una captura de datos durante la


ejecución del ciclo de PLC se debe utilizar la directiva "TRACE".

Ejemplo. (utilización de la directiva "TRACE").

PRG
-----------
-----------
TRACE ; Captura de datos
-----------
-----------
TRACE ; Captura de datos

36 -----------
-----------
TRACE ; Captura de datos
-----------
-----------
DDS - MC
END
PE 5
-----------
TRACE ; Captura de datos
(SOFT [Link])
-----------
END

6
! ! ! Programación del PLC

La captura de datos durante la ejecución de la traza, en este


programa, se produce:
! Al comienzo de cada ciclo PRG.
! Cada vez que se ejecute el módulo periódico (cada 5
milisegundos).
! En 3 ocasiones dentro del módulo PRG.
! En 1 ocasión dentro del módulo PE.

De esta forma, mediante el uso de la directiva "TRACE", se puede


aumentar la frecuencia de captura de datos, realizando dicha captura
5.
en los puntos que se consideran críticos. En cualquier caso, aunque

PROGRAMACIÓN DEL PLC


Instrucciones de consulta
no se incluya en el programa una directiva TRACE, siempre se realiza
una captura de datos por defecto al comienzo de cada ciclo PRG.

La directiva "TRACE" se debe utilizar únicamente cuando se está


depurando el programa de PLC y es conveniente eliminar dicha
directiva una vez finalizada la depuración.

Instrucciones de consulta

Las instrucciones de consulta permiten al PLC evaluar el estado de


los distintos recursos del PLC (entrada, salida, marca, temporizador,
contador) y se dividen en:
! Instrucciones de consulta simples
! Instrucciones de consulta de detección de flancos
! Instrucciones de consulta de comparación

Todas las instrucciones de consulta admiten el operador previo NOT,


que invierte el resultado lógico de la consulta a la que precede.

Ejemplo.

NOT I3 ; Esta consulta devolverá un 0 si la entrada I3


; está a 1, y un 1 cuando la entrada I3 está a 0.

Instrucciones de consulta simples

Son instrucciones que testean el estado de los recursos del PLC,


entradas, salidas, marcas, temporizadores, contadores y bit de
registro, devolviendo su estado lógico.

Ejemplo.

I12 ; Devolverá un 1 si la entrada I12 está activa,


; y un 0 en caso contrario.
DDS - MC

(SOFT [Link])

7
! ! ! Programación del PLC

Instrucciones de consulta de un bit

Permiten evaluar en una expresión lógica, el valor de un bit concreto


ubicado dentro de un registro o variable. El PLC considera al bit 0
como el de menor peso.

Ejemplo.

5. B13R8
B5R8H
; Devolverá el valor del bit 13 del registro 8.
; Devolverá el valor del bit 21 del registro 8.
PROGRAMACIÓN DEL PLC
Instrucciones de consulta de un bit

bit 31
bit 30

bit 2
bit 1
bit 0
R8: 1 0 0 1 0 0 1 ... 0 1 1 0 1 1 0

R8H R8L

Instrucciones de consulta de detección de flancos

Son instrucciones que analizan si se ha producido un cambio de


estado en la entrada, salida o marca especificada.

Esta comparación puede efectuarse con valores reales y con valores


imagen de los recursos y se realizará entre el valor actual del recurso
especificado y el valor que disponía dicho recurso cuando se ejecutó
esta línea de programa por última vez.

Existen dos tipos de instrucciones de consulta de detección de


flancos:

DFU: Detecta si se ha producido un flanco de subida, cambio de


estado de 0 a 1, en el recurso especificado. Devolverá un “1” si se ha
producido.

DFD: Detecta si se ha producido un flanco de bajada, cambio de


estado de 1 a 0, en el recurso especificado. Devolverá un “1” si se ha
producido.

El formato de programación de las diferentes combinaciones es:

36 DFU
DFD
I 1/32
O 1/32
M 1/64

Teniendo en cuenta que estas instrucciones pueden evaluar valores


reales y valores imagen, es conveniente recordar los siguientes
puntos:
DDS - MC ! El PLC actualiza los valores reales de las entradas al iniciarse
el ciclo, tomando para ello los valores de las entradas físicas.
! Los valores imagen de las entradas, salidas y marcas son
actualizadas tras ejecutarse el ciclo de programa.
(SOFT [Link])

8
! ! ! Programación del PLC

Ejemplo.

I3 = M8 DFU M8 = O3
DFU IMA M8 = O9

PRG t

I3
electrical
real
image 5.

PROGRAMACIÓN DEL PLC


Instrucciones de consulta de comparación
M8 real
image

O3 real
image

O9 real
image

Instrucciones de consulta de comparación

El PLC dispone de la instrucción CPS que per mite realizar


comparaciones entre registros de 32 bits (con signo) que pueden ser
! El valor de un registro (R).
! El valor de una variable.
! El tiempo transcurrido de un temporizador (T).
! La cuenta interna de un contador (C).
! Un número entero comprendido entre ±2147483647

Admite también la comparación por separado de la parte alta o baja


de esos registros (16 bits con signo).

Si se cumple la condición requerida, la instrucción de consulta


devolverá el valor lógico “1”, y si no se cumple el valor “0”.

Estos son los diferentes tipos de comparación posibles:

GT (Greater than)
Devuelve un "1" si el primer operando es MAYOR que el segundo.

GE (Greater equal)
Devuelve un "1" si el primer operando es MAYOR O IGUAL que
el segundo.

EQ (Equal)
Devuelve un "1" si el primer operando es IGUAL al segundo.

NE (Not equal) DDS - MC


Devuelve un "1" si el primer operando es DISTINTO al segundo.

LE (Less equal)
Devuelve un "1" si el primer operando es MENOR O IGUAL que
el segundo. (SOFT [Link])

LT (Less than)
Devuelve un "1" si el primer operando es MENOR que el segundo.

9
! ! ! Programación del PLC

La comparación puede realizarse con números expresados en


alguno de estos formatos:
Decimal: Cualquier número entero entre ±2147483647.
Hexadecimal: Precedido por el signo $ y entre 0 y FFFFFFFF.
Binario: Precedido por la letra B y hasta 32 bits ( 1 ó 0 ).

Ejemplos de programación.

5. CPS C12 EQ -1999 = M10


; Si la cuenta interna del contador C12 es IGUAL
PROGRAMACIÓN DEL PLC
Operadores

; a -1999, el PLC asignará a la marca M10 el valor "1",


; y el valor "0" en caso contrario.

CPS T2 GE 100 = TG1 5 2000


; Cuando el tiempo transcurrido en el
; temporizador T2 sea MAYOR O IGUAL a 100 ms, se
; activará el temporizador T5 en modo monoestable y
; con una constante de tiempo de 2 segundos.

CPS R3L LT $990E = M22


; Si la parte baja de R3 es MENOR de $990E
; se activa la marca M22. Tener en cuenta que $990E
; representa un número negativo.
; Así R3L=$0000, haría M22=0.

Operadores

Un operador es un símbolo que indica las manipulaciones lógicas que


se deben llevar a cabo dentro de una expresión lógica, entre las
distintas Instrucciones de consulta. El PLC dispone de los siguientes
operadores:

NOT

Invierte el resultado de la instrucción de consulta que precede.

36 NOT I2 = O3 ; La salida O3 mostrará el estado negado


; de la entrada I2.

I2 O3
I2 0 1
DDS - MC 1 0
O3

(SOFT [Link])

10
! ! ! Programación del PLC

AND

Realiza la función lógica “Y” entre instrucciones de consulta.


I4 AND I5 = O6 ; La salida O6 mostrará el nivel lógico
; alto cuando la entrada I4 y la entrada I5
; tengan nivel lógico alto.

I4
I4 I5 O6
0
0
0
1
0
0
5.
I5

PROGRAMACIÓN DEL PLC


AND
1 0 0
O6 1 1 1

OR

Realiza la función lógica “O” entre instrucciones de consulta.


I7 OR I8 = O9 ; La salida O9 mostrará el nivel lógico alto
; cuando la entrada I7 o la entrada I8
; tengan nivel lógico alto.

I7 I8 O9
I7 I8 0 0 0
0 1 1
1 0 1
O9
1 1 1

XOR

Realiza la función lógica “O EXCLUSIVO” entre instrucciones de


consulta.
I10 XOR I11 = O12 ; La salida O12 mostrará el nivel lógico
; alto cuando las entradas I10 y I11
; tengan niveles lógicos distintos.

I10 I11 O12


I10 0 0 0
0 1 1
I11 1 0 1
1 1 0 DDS - MC
O12

(SOFT [Link])

11
! ! ! Programación del PLC

Prioridades

La asociatividad de todos estos operadores es de izquierda a derecha


y las prioridades que marca el PLC para su utilización, ordenadas de
mayor a menor son:

NOT
AND
5. XOR
OR
PROGRAMACIÓN DEL PLC
Prioridades

Paréntesis

Además, el PLC permite utilizar los operadores “(“ y“ )” para clarificar


y seleccionar el orden en que se produce la evaluación de la expresión
lógica.

Ejemplo.

(I2 OR I3) AND (I4 OR (NOT I5 AND I6)) = O7

I2 I3

I6
I4
I5

O7

El PLC puede manejar en una sola expresión lógica, un máximo de


16 niveles sucesivos de paréntesis "(...(...( ... )))".

Una instrucción de consulta formada únicamente por los operadores


“(“ y “)” siempre tiene valor “1”, es decir:

36 ( ) = O2; La salida O2 mostrará siempre el valor lógico “1”.

DDS - MC Instrucciones de acción

Introducción
(SOFT [Link])
Las Instrucciones de acción permiten alterar el estado de los recursos
del PLC (I,O,M,R,T,C), en función del resultado obtenido en la
Expresión lógica.

12
! ! ! Programación del PLC

Una proposición ejecutable está formada por una expresión lógica y


una o varias instrucciones de acción, debiendo estar todas las
instrucciones de acción precedidas del símbolo igual (=).

Todas las instrucciones de acción admiten un NOT previo, que invierte


el resultado de la expresión para esa acción.

Ejemplo.

I2 = O3 = NOT M10 = NOT TG1 2 100 = CPR 1 100


; La salida O3 mostrará el estado de la entrada I2.
5.

PROGRAMACIÓN DEL PLC


Instrucciones de acción binarias
; La marca M10 mostrará el estado negado de la entrada I2.
; Un flanco de bajada (subida negada) en la entrada I2.
; activará la entrada de arranque TG1 del temporizador T2.
; Un flanco de subida en la entrada I2 preseleccionará el
; contador C1 con el valor 100.

Las Instrucciones de acción se dividen en:

! Instrucciones de acción binarias


! Instrucciones de acción de ruptura de secuencia
! Instrucciones de acción aritméticas
! Instrucciones de acción lógicas
! Instrucciones de acción específicas

Instrucciones de acción binarias

Las instrucciones de acción binarias se dividen en:


! Instrucciones de acción binarias de asignación
! Instrucciones de acción binarias condicionadas

Instrucciones de acción binarias de asignación

Este tipo de acciones binarias asignan al recurso del PLC (entrada,


salida, marca, temporizador, contador y bit de registro) especificado
el valor obtenido en la evaluación de la Expresión lógica (0/1).

Ejemplo.

I3 = TG1 4 100
; El PLC asigna a la entrada de arranque TG1 del temp. T4
; el estado de la entrada I3, por lo que un flanco de subida
; en la entrada I3 activará la entrada de arranque TG1 del T4. DDS - MC

(I2 OR I3) AND (I4 OR (NOT I5 AND I6)) = M11


; El PLC asigna a la marca M11 el valor obtenido en la
; evaluación de la expresión lógica (SOFT [Link])
; (I2 OR I3) AND (I4 OR (NOT I5 AND I6)).

El PLC puede manejar en una sola expresión lógica, un máximo de


16 niveles sucesivos de paréntesis "(...(...( ... )))".

13
! ! ! Programación del PLC

Instrucciones de acción binarias condicionadas

El PLC dispone de tres instr ucciones de acción binar ias


condicionadas, SET, RES y CPL, que permiten modificar el estado de
la entrada, salida, marca o bit de registro especificado.

El formato de programación de las mismas es:

SET I 1/32
5. RES
CPL
O 1/32
M 1/64
PROGRAMACIÓN DEL PLC
Instrucciones de acción binarias condicionadas

B 0/31 R 1/32

= SET

Si el resultado obtenido en la evaluación de la expresión lógica es un


“ 1” esta acción asigna un “ 1” a la entrada, salida, marca o bit de
registro especificado. Si el resultado es un “ 0 ” lógico, esta acción no
modificará el estado del recurso especificado.

Ejemplo.

CPS T2 EQ 100 = SET B0R10


; Cuando el tiempo que lleve transcurrido el temp. T2 sea
; igual a 100, se activará (se pondrá a “1”) el bit 0 de R10.

= RES

Si el resultado obtenido en la evaluación de la expresión lógica es un


“ 1 ” esta acción asigna un “ 0 ” a la entrada, salida, marca o bit de
registro especificado. Si el resultado es un “0” lógico, esta acción no
modificará el estado del recurso especificado.

Ejemplo.

I12 OR NOT I22 = RES M5


= NOT RES M6
; Cuando la expresión lógica I12 OR NOT I22 tenga como
; resultado un “1”, el PLC asignará un “0” a la marca M5 y no
; modificará la marca M6.
; Por el contrario, si la expresión lógica tiene como

36 ; resultado un “0”, el PLC no modificará la marca M5 y


; asignará un “0” a la marca M6.

= CPL

Si el resultado obtenido en la evaluación de la expresión lógica es un


DDS - MC “ 1 ” esta acción complementa el estado de la entrada, salida, marca
o bit de registro especificado. Si el resultado es un “ 0 ” lógico, esta
acción no modificará el estado del recurso especificado.

Ejemplo.
(SOFT [Link])
DFU I8 OR DFD M2 = CPL B12R3
; Cada vez que se detecte un flanco de subida en la entrada
; I8 o un flanco de bajada en la marca M2 el PLC
; complementará el estado del bit 12 del Registro R3.

14
! ! ! Programación del PLC

Instrucciones de acción de ruptura de secuencia

Estas acciones interrumpen la secuencia de un programa,


continuando su ejecución a partir de otra proposición ejecutable
indicada mediante una etiqueta (SomeText). Esta etiqueta podrá
estar situada antes o después de la proposición ejecutable en la que
se indica la acción.

Se denomina subrutina a una par te de programa que


convenientemente identificada, puede ser llamada desde cualquier
proposición ejecutable.
5.

PROGRAMACIÓN DEL PLC


Instrucciones de acción de ruptura de secuencia
La primera proposición ejecutable de una subrutina estará indicada
mediante una etiqueta (SomeText) y tras la última proposición
ejecutable de la misma se programará la proposición directiva END.

Si no se programa END como final de subrutina el PLC continuará la


ejecución hasta el final del módulo END o hasta el final del programa,
dando por finalizada la ejecución de la subrutina en dicho punto.

Es aconsejable colocar las subrutinas tras el END del programa ya


que si éstas se ponen al comienzo el PLC comenzará a ejecutarlas
e interpretará el END de final de subrutina como END de final de
módulo, dando por finalizado el mismo ya que no se produjo llamada
a subrutina.

= JMP SomeText

Salto Incondicional

Si el resultado obtenido en la evaluación de la expresión lógica es un


“ 1 ” esta acción provoca un salto a la etiqueta especificada,
continuando la ejecución del programa en la proposición ejecutable
indicada por dicha etiqueta. Si el resultado es un “ 0 ” lógico, esta
acción será ignorada por el PLC.

Ejemplo.

; ————————
I8 = JMP _JUMP; Si I8=1 el programa continúa a
; partir de la etiqueta _JUMP
NOT M14 AND
NOT B7R120 = O8 ; ; Si I8 =1 no se ejecuta esta línea
CPS T2 EQ 2000 = O12; ; Si I8 =1 no se ejecuta esta línea
;————————
_JUMP:
(I12 AND I23) OR M54 = O6
DDS - MC
;————————

(SOFT [Link])

15
! ! ! Programación del PLC

= CAL SomeText

Llamada a Subrutina

Si el resultado obtenido en la evaluación de la expresión lógica es un


“1” esta acción ejecutará la subrutina indicada.

5. Una vez finalizada la ejecución de la subrutina, el PLC ejecutará la


instrucción de acción o la proposición ejecutable que se encuentra
PROGRAMACIÓN DEL PLC
= CAL SomeText

programada tras el comando CAL SomeText.

Si el resultado obtenido en la evaluación de la expresión lógica es un


“0” esta acción será ignorada por el PLC, continuando el programa sin
ejecutar dicha subrutina.

Ejemplos.

I2 = CAL L5 = O2
; Si la entrada I2 vale 1 se ejecutará la subrutina L5 y,
; una vez finalizada ésta,
; el PLC asignará a la salida O2 el valor de la entrada I2 (1).

PRG
————————
I9 = CAL L15 ; Si I9=1 ejecuta la subrutina L15
————————
END ; Fin del programa principal
L15: ; Comienzo de la subrutina L15
————————
(I12 AND I23) OR M5 = O6
NOT M14 AND NOT B7R10 = O8
CPS T2 EQ 2000 = O12
————————
END ; Fin de la subrutina L15

36 = RET

Retorno o final de subrutina

Si el resultado obtenido en la evaluación de la expresión lógica es un


“ 1 ” esta acción será tratada por el PLC como si se tratara de la
DDS - MC proposición directiva END, y dará por finalizada la subrutina. Si el
resultado es un “ 0 ” lógico, esta acción será ignorada por el PLC.

Si no se programa END como final de subrutina y si no se ejecuta


ningún RET el PLC continuará la ejecución hasta el final del módulo
END o hasta el final del programa, dando por finalizada la ejecución
(SOFT [Link])
de la subrutina en dicho punto.

16
! ! ! Programación del PLC

Instrucciones de acción aritméticas

El PLC dispone de las siguientes instrucciones de acción aritméticas,


MOV, NGU, NGS, ADS, SBS, MLS, DVS y MDS, que permiten operar
con los recursos del PLC especificados.

= MOV

Transfiere los estados lógicos del origen al destino indicados.


5.

PROGRAMACIÓN DEL PLC


Instrucciones de acción aritméticas
Esta transferencia será de 4, 8, 12, 16, 20, 24, 28 o 32 bits
(seleccionable).

El origen o fuente de información puede estar expresado en código


binario o BCD y puede seleccionarse entre los recursos:

I Grupo de entradas a partir de la seleccionada.


O Grupo de salidas a partir de la seleccionada.
M Grupo de marcas a partir de la seleccionada.
T Tiempo transcurrido del temporizador seleccionado.
C Valor de la cuenta del contador seleccionado.
R Valor del registro seleccionado
# Número expresado en formato decimal, hexadecimal o
binario.

El destino o lugar en el que se deja la información transmitida puede


estar expresado en código binario o BCD y puede seleccionarse
entre:

I Grupo de entradas a partir de la seleccionada.


O Grupo de salidas a partir de la seleccionada.
M Grupo de marcas a partir de la seleccionada.
R Valor del registro seleccionado

Su formato de programación es:

Código Código Nº bits a


Origen Destino
Origen Destino transmitir

MOV I 1/32 I 1/32 0 (Bin) 0 (Bin) 32


O 1/32 O 1/32 1 (BCD) 1 (BCD) 28
M 1/64 M 1/64 24
T 1/16 R 1/32 20
C 1/16 Variables 16
R 1/32 12
Variables 08
# 04
DDS - MC

Los códigos de origen y destino será obligatorio definirlos siempre.

También el número de bits a transmitir, a excepción del caso en que (SOFT [Link])
se desee transmitir de Bin a Bin y en 32 bits (0032) en cuyo caso no
es necesario.

17
! ! ! Programación del PLC

Ejemplos.

MOV I12 M10 de Bin a Bin en 32 bits


MOV O1 R10 0012 de Bin a Bin en 12 bits
MOV C2 O2 0108 de Bin a BCD en 08 bits
MOV $CF M11 1020 de BCD a Bin en 20 bits

5. Cuestiones a tener muy en cuenta (MOV)


PROGRAMACIÓN DEL PLC
Cuestiones a tener muy en cuenta (MOV)

El movimiento de datos que vienen dados en diferente tamaño y


codificación binaria, genera algunas situaciones en las que hay que
vigilar el efecto exacto de la ejecución de esta instrucción MOV.

Organización de la memoria

Cualquier operación MOV que tenga como origen o destino un


elemento de un tamaño (nº de bits) menor que el número de bits
trasladados, puede afectar a los bits próximos en la memoria.

I32 .... I17


I
I16 .... I1

O32 .... O17


O
O16 .... O1

M64 .... M49


M ....
M16 .... M1

B31R32 .... B16R32


R32:
B15R32 .... B0R32
R31H
R31:
R31L
....
R1H
R1:
R1L

fig. 5 - 3

Organización de la memoria en grupos (arrays).

Ejemplos.

( ) = MOV I1 R3 0004 ; Mueve el valor de las cuatro


; primeras entradas al registro R3.

( ) = MOV R7H R5 ; Mueve el valor de la parte alta de


36 ; R7 a R5. Y como el MOV es de 32
; bits, arrastra también los datos
; próximos a R7H en la memoria
; (R8L).

NC
DDS - MC R3:
NC I4 I3 I2 I1

R8L
R5:
R7H

NC: No Change.
(SOFT [Link])

18
! ! ! Programación del PLC

Si el movimiento de datos pudiera afectar a un grupo (array) de


recursos diferente al mencionado en la instrucción, se dará un error
en la compilación del programa. Ver archivo "[Link]".

Ejemplo.

( ) = MOV I1 M60 0008


; Error en la compilación, ya que sólo se
; dispondrían de las marcas M60-M64 para
; mover 8 bits. 5.

PROGRAMACIÓN DEL PLC


= NGU R 0/31
Binario a BCD

El dato transferido puede necesitar, en BCD, más bits para su


representación. Si ocurre esto, el PLC despreciará los dígitos de
mayor peso.

Ejemplos.

( ) = MOV 125 R11 0108


; mover el número 125 al R11 en bits
El número 125 se expresa en binario: B01111101 que cabe en 8
bits.
Pero en BCD sería: 000100100101 que requiere al menos 12 bits.
El resultado de la operación MOV será:

NC
R11:
NC 0 0 1 0 0 1 0 1
NC: No Change.

Para evitar la pérdida de estos dígitos, se sugiere realizar la


transferencia ampliando el número de bits. Utilizar otros registros en
operaciones intermedias si son necesarios más de 32 bits.

= NGU R 0/31

Complementación de todos los bits de un registro.

Esta acción realiza una complementación de los 32 bits del registro


especificado (cambia el estado de cada uno de los bits). Admite la
referencia a la parte alta o baja de los registros.

Ejemplo.

I15 = NGU R15


DDS - MC
; Si la entrada I15 vale “1” el PLC
; complementa los 32 bits de R15

1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1
R15: (SOFT [Link])
1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0

0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0
R15:
0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1

19
! ! ! Programación del PLC

= NGS R 0/31

Cambio de signo del contenido de un registro.

Esta acción cambia de signo al contenido del registro especificado.


Esta operación se realiza mediante la complementación del registro
y la suma de una unidad. Admite la referencia a la parte alta o baja
de los registros.

5. Ejemplo.
PROGRAMACIÓN DEL PLC
= NGS R 0/31

I16 = NGS R8
; Si la entrada I16 vale “1” el PLC cambia
; de signo el contenido del registro R8.

1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1
R8:
1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0
$B5B5DAD8 = -1246373160

0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0
R8:
0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0
$4A4A2528 = 1246373160

= ADS, =SBS, = MLS, = DVS, = MDS

Estas acciones permiten realizar las operaciones de suma (ADS),


resta (SBS), multiplicación (MLS), división (DVS) y módulo o resto de
la división (MDS), entre contenido de registros o entre contenidos de
registro y número. El resultado siempre se colocará en un registro
especificado.

Su formato de programación es:


“Tipo de operación” “1er oper.” “2º oper.” “registro destino”.

El tipo de operación será ADS, SBS, MLS, DVS o MDS.

1º operando 2º operando destino


ADS R 1/32 R 1/32 R 1/32
36 SBS Variable Variable Variable
MLS # #
DVS
MDS

DDS - MC
Ejemplo.

Si los registros R9 y R1 valen: R9 =1234 y R1=100:


()
(SOFT [Link])
= ADS R9 R1 R2; R2 = 1234 + 100 = 1334
= SBS R9 R1 R3; R3 = 1234 - 100 = 1134
= MLS R9 R1 R4; R4 = 1234 x 100 = 123400

20
! ! ! Programación del PLC

= DVS R9 R1 R5; R5 = 1234 : 100 = 12


= MDS R9 R1 R6; R6 = 1234 MOD 100 = 34
()
= ADS 1563 R1 R2; R2 = 1563 + 100 = 1663
= SBS R9 1010 R3; R3 = 1234 - 1010 = 224
= MLS 1000 R1 R4; R4 = 1000 x 100 = 100000
= DVS R9 1000 R5; R5 = 1234 : 1000 = 1
= MDS R9 1000 R6; R6 = 1234 MOD 1000 = 234 5.

PROGRAMACIÓN DEL PLC


Cuestiones a tener muy en cuenta (ADS, SBS, MLS, DVS, MDS)
Si se efectúa una división por 0 en la operación DVS, o en la
operación MDS, se dará el error E67 y se detendrá la ejecución
del PLC.

Cuestiones a tener muy en cuenta (ADS, SBS, MLS,


DVS, MDS)

Con la ejecución de este grupo de instrucciones aritméticas, el


resultado puede requerir un número de bits mayor que los operandos,
y tanto unos como otros pueden ser datos registrados en 16 o 32 bits.

Esto provoca algunas situaciones que hay que vigilar.

Tamaño de la operación

La operación indicada por la instrucción puede ser ejecutada por el


PLC sobre registros de memoria de 16 o 32 bits.
Regla: Si alguno de los dos operandos, o el destino de la
operación, es de 32 bits, la operación será ejecutada sobre
registros de memoria de 32 bits.
Sólo cuando los dos operandos y el destino sean de 16 bits, la
ejecución se hará sobre 16 bits.

Tamaño del destino


Destino de 32 bits.
La operación se habrá ejecutado sobre registros de memoria
de 32 bits. Si el resultado de la operación supera los 32 bits no
se comunicará ningún error.
Destino de 16 bits.
Si la operación ha sido de 32 bits recortará el resultado
conservando sólo la parte baja del mismo.

Es muy importante vigilar que el resultado de una operación


entra dentro del registro de destino.
DDS - MC

(SOFT [Link])

21
! ! ! Programación del PLC

Ejemplos.

Errores que habitualmente pueden cometerse:


( ) = MLS R3 R2L R4
; Sea R3 = 9000000 = $895440
; y R2L = 400 = $190
; 9000000 x 400 = 3600000000 =

5. ; $D693A400 > $7FFFFFFF


; Así que el resultado es erróneo ya que
PROGRAMACIÓN DEL PLC
Instrucciones de acción lógicas

; $D693A400 = - 694967296

( ) = DVS R5 R6L R7L


; Sea R5 = 1000000 y R6L = 11
; La operación es de 32 bits
; 1000000 : 11 = 90909 = $1631D
; Pero R7L = $631D = 25373

Instrucciones de acción lógicas

El PLC dispone de las siguientes Instrucciones de Acción lógicas,


AND, OR, XOR, RR y RL.

= AND, = OR, = XOR

Estas acciones permiten realizar bit a bit las operaciones lógicas


AND, OR y XOR entre contenido de registros o entre contenidos de
registro y número. El resultado siempre se colocará en un registro
especificado.

Su formato de programación es:


“Tipo de operación” “1er oper.” “2º oper.” “registro o variable
destino”.

El tipo de operación será AND, OR o XOR.

Como primer y segundo operandos se permitirá definir registros

36 (R1/32) o números expresados en formato decimal, hexadecimal o


binario.

En el registro destino se depositará el resultado de la operación. Sólo


puede definirse aquí uno de los 32 registros (R1/32).

Ejemplos.
DDS - MC
Si los registros R20=B10010010 R21=B01000101
()
= AND R20 R21 R22; R22 = B0
(SOFT [Link]) = OR R20 R21 R23; R23 = B11010111
= XOR R20 R21 R24; R24 = B11010111

22
! ! ! Programación del PLC

()
= AND B1111 R21 R25; R25 = B00000101
= OR R20 B1111 R26; R26 = B10011111
= XOR B1010 B1110 R27; R27 = B00000100

= RR, = RL Rotación de registros

Estas acciones permiten realizar rotaciones de un registro. Se


permite rotar a derechas (RR) o a izquierdas (RL) y existen dos tipos
de rotaciones: tipo 1 (RR1 o RL1) y tipo 2 (RR2 o RL2). Admite la
5.

PROGRAMACIÓN DEL PLC


= AND, = OR, = XOR
referencia a la parte alta o baja de los registros.

Tipo de rotación 1 (RL1 ó RR1):


Rotación a izquierdas (RL1) o derechas (RR1) introduciendo un
bit CERO en el hueco creado. El valor del último bit desaparece.

RL1 RR1
0 0

Tipo de rotación 2 (RL2 ó RR2):


Rotación circular a izquierdas (RL2) o derechas (RR2)
introduciendo en el hueco creado el bit saliente por el otro extremo
del registro.

RL2 RR2

Su formato de programación es:


“Tipo de operación” “origen” “Nº repeticiones” “destino”

El tipo de operación será RR1, RR2, RL1 o RL2.

Tanto el origen como el destino deben ser registros (R1/32). Si los


registros origen y destino coinciden es necesario definir ambos en la
instrucción.

El número de repeticiones indica las rotaciones sucesivas que se


aplican al registro.

Ejemplos.

( ) = RR1 R10 1 R20


; Una rotación a derechas tipo 1 de
DDS - MC
; R10 dejando el resultado en R20.

( ) = RL2 R10H 4 R11


; Cuatro rotaciones a izquierdas
; tipo 2 de la parte alta de R10 (SOFT [Link])

; dejando el resultado en R11.

23
! ! ! Programación del PLC

; Pone a cero los bits de R11H.

R10: 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0

R20: 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0

R10: 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0

5. R11: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1
PROGRAMACIÓN DEL PLC
(AND, OR, XOR, RR, RL)

(AND, OR, XOR, RR, RL)

Sirven aquí las mismas advertencias que se hacen en el apartado


anterior para las operaciones aritméticas y:
para un destino de 32 bits, si la operación ha sido de 16 bits
ampliará el tamaño del resultado completando con ceros la parte
alta del registro.

Es muy importante vigilar que el resultado de una operación


entra dentro del registro de destino.

Instrucciones de acción específicas

= ERA

Borrado en bloque

Esta acción permite borrar un grupo de entradas, salidas, marcas o


registros, o bien inicializar el estado de un grupo de temporizadores
o contadores.

Si se borra un grupo de entradas, salidas, marcas o registros el PLC


asignará el valor 0 a los recursos especificados.

Si se borra un grupo de temporizadores equivale a realizar un Reset

36 de los mismos y si se borra un grupo de contadores es similar a


realizar una preselección con valor 0 de los mismos.

Su formato de programación es:

Range
ERA I 1/32 1/32
DDS - MC
O 1/32 1/32
M 1/64 1/64
T 1/16 1/16
C 1/16 1/16
(SOFT [Link]) R 1/32 1/32

24
! ! ! Programación del PLC

Esta acción está especialmente indicada para ser ejecutada en el


módulo del primer ciclo (CY1) con el fin de poner los recursos
deseados en condiciones iniciales de trabajo.

Ejemplos.

( ) = ERA O5 12
; El PLC asignará el valor 0 a las
; salidas O5 a O12, ambas inclusive.

( ) = ERA C15 18
5.

PROGRAMACIÓN DEL PLC


Resumen de los comandos de programación del PLC
; El PLC preseleccionará a 0 los ;
; contadores C15, C16, C17 y C18

Resumen de los comandos de programación del PLC

Recursos de que dispone el PLC

Entradas: I 1/32
Salidas: O 1/32
Marcas de usuario: M 1/64
Temporizadores: T 1/16
Contadores: C 1/16
Registros de usuario R 1/32

El valor almacenado en cada registro será considerado por el PLC


como un número entero con signo, pudiendo referenciarse el
mismo en uno de los siguientes formatos:

Decimal: Cualquier número entero en el rango


±2147483647.
Hexadecimal: Precedido por el signo $ y entre 0 y
FFFFFFFF.
Binario: Precedido por la letra B y formado por
hasta 32 bits.

Proposiciones directivas

PRG Módulo principal.


CY1 Módulo de primer ciclo.
PE t Módulo periódico. Cada t
milisegundos.
END Final del módulo.
LABEL Etiqueta.
DEF Definición de símbolo.
REA Las consultas se realizarán sobre
los valores reales. DDS - MC
IMA Las consultas se realizarán sobre
los valores imagen.
IRD Actualiza los recursos I con los
valores de las entradas físicas.
(SOFT [Link])
OWR Actualiza las salidas físicas con los
valores reales de los recursos O.
TRACE Realiza una captura de datos para
el analizador lógico durante la
ejecución del ciclo de PLC.

25
! ! ! Programación del PLC

Instrucciones de consulta simples

I 1/32 Entradas
O 1/32 Salidas
M 1/64 Marcas
T 1/16 Temporizadores
C 1/16 Contadores
B 0/31 R 1/32 Bit de Registro

5.
PROGRAMACIÓN DEL PLC
Instrucciones de consulta simples

Instrucciones de consulta de detección de flancos

DFU I 1/32
DFD O 1/32
M 1/64

DFU Detección de flanco de subida.


DFD Detección de flanco de bajada.

Instrucciones de consulta de comparación

CPS Permite realizar comparaciones.

1º operando orden 2º operando


CPS T 1/16 GT T 1/16
C 1/16 GE C 1/16
R 1/32 EQ R 1/32
# EN #
LE
LT

Operadores

NOT Invierte el resultado de la Instrucción de Consulta


36 que le precede.
AND Realiza la función lógica “Y” entre instrucciones de
consulta.
OR Realiza la función lógica “O” entre instrucciones de
consulta.
DDS - MC XOR Realiza la función lógica “O EXCLUSIVO” entre
instrucciones de consulta.

(SOFT [Link])

26
! ! ! Programación del PLC

Instrucciones de acciones binarias de asignación

= I 1/32 Entradas
=O 1/32 Salidas
=M 1/64 Marcas
= TEN 1/16 Temporizadores
= TRS 1/16
= TGn 1/16 n/R
= CUP
= CDW
1/16
1/16
Contadores
5.
= CEN 1/16

PROGRAMACIÓN DEL PLC


Instrucciones de acciones binarias de asignación
= CPR 1/16 n/R
= B 0/31 R 1/32 Bit de Registro

Instrucciones de acciones binarias condicionadas

= SET Asigna un “1” al recurso.


= RES Asigna un “0” al recurso.
= CPL Complementa el estado del recurso.

SET I 1/32
RES O 1/32
CPL M 1/64
B 0/31 R 1/32

Instrucciones de acción de ruptura de secuencia

= JMP LABEL Salto Incondicional.


= RET Retorno o Final de Subrutina.
= CAL LABEL Llamada a Subrutina.

Instrucciones de acción aritméticas

= MOV Transfiere los estados lógicos del origen


indicado al destino especificado.

Código Código Nº bits a


Origen Destino
Origen Destino transmitir
MOV I 1/32 I 1/32 0 (Bin) 0 (Bin) 32
O 1/32 O 1/32 1 (BCD) 1 (BCD) 28
M 1/64 M 1/64 24
T 1/16 R 1/32 20
C 1/16 Variables 16
R 1/32 12
Variables 08
DDS - MC
# 04

= NGU R 1/32 Complementación de todos los bits de un


(SOFT [Link])
registro.
= NGS R 1/32 Cambio de signo del contenido de un
registro.

27
! ! ! Programación del PLC

= ADS Suma entre registros o entre registro y


número.
= SBS Resta entre registros o entre registro y
número.
= MLS Multiplicación entre registros o entre
registro y número.
= DVS División entre registros o entre registro y
número.

5. = MDS Módulo de la división entre registros o


entre registro y número.
PROGRAMACIÓN DEL PLC
Instrucciones de acción lógicas

1º operando 2º operando destino


ADS R 1/32 R 1/32 R 1/32
SBS Variable Variable Variable
MLS # #
DVS
MDS

Instrucciones de acción lógicas

= AND Operación lógica AND entre registros o entre


registro y número.
= OR Operación lógica OR entre registros o entre registro
y número.
= XOR Operación lógica XOR entre registros o entre
registro y número.

1º operando 2º operando destino


AND R 1/32 R 1/32 R 1/32
OR # #
XOR

= RR 1/2 Rotación de registro a derechas.


= RL 1/2 Rotación de registro a izquierdas.

1º operando 2º operando destino


RR1 R 1/32 1/31 R 1/32

36 RL1
RR2 R 1/32 1/31 R 1/32
RL2

Instrucciones de acción específicas


DDS - MC
= ERA Borrado en bloque

Range
ERA I 1/32 1/32
(SOFT [Link]) O 1/32 1/32
M 1/64 1/64
T 1/16 1/16
C 1/16 1/16
R 1/32 1/32

28
! ! ! Programación del PLC

Comienzo módulo CY1, PRG, PE Definiciones DEF, INCLUDE


Fin de módulo END
Directivas Real, imagen REA, IMA
Salto y retorno JMP LABEL, RET
Subrutina CAL LABEL Actualiza I/O IRD, OWR

Entrada, Salida, Registro I, O, R 1/32

Simples
Marca
Temporizador, Contador
Bit-Registro
M
T, C
B( )R( )
1/64
1/16
0/31 1/32
5.

PROGRAMACIÓN DEL PLC


Instrucciones de acción específicas
Variables Sxx, Fxx
Consulta Reloj interno TIME_

Subida DFU I
Detección
O
de flancos Bajada DFD M
GT
R GE R
Comparación T EQ T
CPS
con signo C NE C
num LE num
LT

Función NO NOT
Función Y AND
Función O exclusiva XOR R R
Lógicos R
Función O OR num num
Abrir-cerrar paréntesis ()

Rotaciones RR1, RL1


R 1/31 R
RR2, RL2
I
Activación SET
Lógicos O
Desactivación RES
Flip-flop M
Complemento booleano CPL
B( )R( )

Suma ADS
Resta SBS R R
Multiplicación MLS num num R
División DVS
Operadores Módulo MDS
Aritméticos 32
I, O, R I 28
M O 24
T, C M 0 0 20
Transferencia MOV
Sxx, Fxx R 1 1 16
num Sxx, Fxx 12
08
Complemento a uno NGU 04
R
Cambio signo NGS

I, O, R
Borrado en bloque ERA M num
T, C

Salida T
Control de Habilitación TEN
Temporizadores Reset TRS
1/16 DDS - MC
Modos TG1, TG2, TG3, TG4

Salida C
Control de Habilitación CEN
Contadores 1/16
Cuenta arriba, abajo CUP, CDW
Preselección CPR (SOFT [Link])

29
! ! ! Programación del PLC

Listado de errores de compilación interna del PLC

En el encendido, el regulador realiza una segunda compilación


interna del programa .pcd. Si se produce un error durante esa
compilación, el Status Display indicará un error (E50 - E55), y no será
posible ejecutar el programa de PLC ni mover el motor.

Los errores de compilación no son reseteables.

5. Algunos de estos errores pueden tener distintos significados. Los 16


bits más significativos de la variable GV37 [F2012] definen con más
PROGRAMACIÓN DEL PLC
Listado de errores de compilación interna del PLC

precisión el error. El programa WinDDSSetUp muestra esta variable


en formato hexadecimal.

E50 - Error interno

F2012H = 25 ($19)
Checksum del código de programa cargado incorrecto.
Cargar de nuevo el programa en el Regulador. Si persiste el
problema es posible que la memoria Flash o Ram sean defectuosas,
o que el código cargado sea defectuoso.
Contactar con Fagor Automation.

F2012H <> 25 ($19)


Error interno.
Contactar con Fagor Automation.

E51 - Insuficientes recursos

F2012H = 101 ($65)


El programa tiene demasiadas etiquetas.
Modificar el programa para corregir este exceso.

F2012H = 102 ($66)


Demasiadas sentencias TRACE
Modificar el programa para corregir este exceso.

F2012H = 103 ($67)


El programa requiere demasiados recursos de memoria.
36 Reducir el tamaño del programa.

E52 - Insuficiente memoria

DDS - MC F2012H = 150 ($96)


El programa generado por la compilación no cabe en la memoria
destinada al efecto.
Reducir el tamaño del programa.

(SOFT [Link])

30
! ! ! Programación del PLC

E53 - No hay programa .pcd

F2012H = 200 ($C8)


No se ha cargado en el regulador el fichero con extensión .pcd.
Cargar el programa en el regulador.

E54 - Programa .pcd no válido

F2012H = 250 ($FA)


5.

PROGRAMACIÓN DEL PLC


E53 - No hay programa .pcd
El fichero con extensión .pcd cargado en el regulador no es válido.
No ha sido compilado correctamente por el editor en el PC.
Compilar nuevamente el programa PLC desde el editor y cargar el
fichero .pcd en el regulador.

E55 - Acceso a recursos

F2012H = 300 ($12C)


Error al acceder a una entrada. El PLC conoce a través del fichero
de configuración "[Link]" el número y denominación de las
I/O digitales de que dispone el Regulador en sus "slots" SL1 y SL2.
El programa PLC pretende acceder a una entrada que no existe
físicamente.
Modificar el programa para corregir este error en el acceso.

F2012H = 301 ($12D)


Error al acceder a una salida.
Modificar el programa para corregir este error en el acceso.

F2012H = 302 ($12E)


Error al acceder a una marca.

F2012H = 303 ($12F)


Error al acceder a un temporizador.

F2012H = 304 ($130)


Error al acceder a un contador.

F2012H = 305 ($131)


Error al acceder a un registro.

F2012H = 306 ($132)


Error al acceder a uno de los parámetros o variables del software de
control del regulador (no existe).
Comprobar la existencia y el nombre correcto de ese parámetro o
variable.
DDS - MC
F2012H = 307 ($133)
Nivel insuficiente al acceder a alguno de los parámetros o variables
del software de control del regulador.
El PLC tiene el nivel de acceso OEM, por tanto le es imposible
escribir sobre variables o parámetros que requieran nivel "Fagor". (SOFT [Link])

F2012H = 308 ($134)


Error de escritura sobre alguno de los parámetros o variables del
software de control del regulador. Ese recurso no es escribible.

31
! ! ! Programación del PLC

F2012H = 309 ($135)


Error de lectura sobre alguno de los parámetros o variables del
software de control del regulador. Ese recurso no es legible.

F2012H = 310 ($136)


En una instrucción MOV entre bloques de recursos, se ha producido
un error de acceso debido a las dimensiones del primer operando
(origen).
Modificar el programa para corregir este error en el acceso.
5. F2012H = 311 ($137)
PROGRAMACIÓN DEL PLC
Listado de errores de ejecución en el PLC

En una instrucción MOV entre bloques de recursos, se ha producido


un error de acceso debido a las dimensiones del segundo operando
(destino).
Modificar el programa para corregir este error en el acceso.

F2012H = 312 ($138)


En una instrucción ERA se ha producido un error de acceso debido
a las dimensiones de bloque a borrar.

Listado de errores de ejecución en el PLC

Tras la compilación interna del programa .pcd el programa se pone


en ejecución. El Status Display indicará los errores ocurridos durante
la ejecución como E66 - E69.

Estos errores detendrán la ejecución del PLC y el giro del motor.

Los errores de ejecución son reseteables.

Algunos de estos errores pueden tener distintos significados.

Los 16 bits más significativos de la variable GV37 [F2012] definen


con más precisión el error. El programa WinDDSSetUp muestra esta
variable en formato hexadecimal.

E66 - Error interno

F2012H = 32768 ($8000)


Error de ejecución interno.
Contactar con Fagor Automation.

36 E67 - División por


cero

F2012H = 32784 ($8010)


El programa ha intentado hacer una división por cero.
DDS - MC Modificar el programa para que no vuelva a suceder.

E68 - PRG watchdog

F2012H = 32800 ($8020)


(SOFT [Link])
Límite de "watchdog" del módulo PRG superado. El módulo PRG
tiene un tiempo de ejecución demasiado grande.
Reducir la longitud del módulo PRG.

32
! ! ! Programación del PLC

E69 - PE watchdog

F2012H = 32816 ($8030)


Límite de "watchdog" del módulo PE superado. El módulo PE tiene
un tiempo de ejecución demasiado grande.
Reducir la longitud del módulo PE.

5.

PROGRAMACIÓN DEL PLC


Listado de errores de ejecución en el PLC

DDS - MC

(SOFT [Link])

33
! ! ! Programación del PLC

ANEXO 1

Ficheros de cabecera
"ad_da.inc"
Contiene defines útiles para el manejo de las entradas
y salidas analógicas.

5. ; AD_DA.INC
;
PROGRAMACIÓN DEL PLC
ANEXO 1

;
; Defines de las dos entradas analógicas
;
DEF ANA_IN_1 F00905L ; valor de la entrada analog1
DEF ANA_IN_2 F00906L ; valor de la entrada analog 2
;
; Defines de las dos salidas analógicas
;
DEF ANA_OUT_1 F01408L ; valor de la salida analog 1
DEF ANA_OUT_2 F01409L ; valor de la salida analog 2
;
; Defines de las dos ganancias para las salidas analógicas
;
DEF ANA_OUT_1_GAIN F01402
; valor con el cual la salida analog 1 va a sacar 10 voltios

DEF ANA_OUT_2_GAIN F01403


; valor con el cual la salida analog 2 va a sacar 10 voltios

"[Link]"
Contiene defines útiles para manejar el generador
interno de funciones.

; [Link]
;
;
; Defines de los parámetros del Regulador que definen la forma de
36 ; onda.
;
DEF GEN_SHAPE F01800L
DEF GEN_PERIOD F01801L
DEF GEN_AMPLITUDE F01802L
DEF GEN_TYPE F01803L
DDS - MC DEF GEN_OUTPUT F01804L
DEF GEN_DUTY_CYCLE F01805L
DEF GEN_N_WAVES F01806L
DEF GEN_ON F01807L
DEF GEN_OFFSET F01808L
(SOFT [Link])

;
; Defines de los valores que puede darse al parámetro GEN_SHAPE

34
! ! ! Programación del PLC

; que define la forma de onda.


;
DEF GEN_SINEWAVE 0
DEF GEN_SQUAREWAVE 1
DEF GEN_TRIANGULAR 2
DEF GEN_CONTINUOUS 3
DEF GEN_CNT_ABS_ACC 4

"[Link]"
Contiene defines de los parámetros básicos para la
5.
configuración y el control del funcionamiento del

PROGRAMACIÓN DEL PLC


ANEXO 1
sistema.

; [Link]
;
;
; Defines de los parámetros necesarios para establecer el modo
; principal y submodo de trabajo.
;
DEF K_OPER_MODE F02313L
; modo de operacion principal
; 0 - automático
; 1 - manual
DEF K_AUTO_SUBMODE F02314L
; submodo del modo automático
; 0 - continuo
; 1 - bloque a bloque
; 2 - instrucción a instrucción
DEF K_MAN_SUBMODE F02319L
; submodo del modo manual
; 0 - continuo
; 1 - incremental
DEF K_START_SIG F02315L
; un flanco de subida hace que
; se ponga en marcha el programa
DEF K_STOP_SIG F02316L
; un flanco de subida hace que
; se pare el programa
DEF K_RESET_SIG F02317L
; hace un reset en el programa
DEF K_ABORT_SIG F02318L
; aborta el bloque en ejecución
;
; Defines de los parámetros empleados para el movimiento de jog
;
DEF JOG_POS F02320L
; movimiento manual en sentido positivo
DDS - MC

DEF JOG_NEG F02321L


; movimiento manual en sentido negativo
(SOFT [Link])

35
! ! ! Programación del PLC

5.
PROGRAMACIÓN DEL PLC

DDS - MC

(SOFT [Link])

36
CAM SWITCH
6
El Cam Switch o conmutador de levas consta de 8 levas en las cuales
se pueden definir los puntos denominados ON y OFF para cada una
de ellas.

El valor de referencia para el Cam Switch se transmite desde el


programa de PLC y debe ser necesariamente un número de 32 bits
con signo.

Las ocho levas pueden dividirse en dos grupos, pudiéndose de esta


forma conseguir dos Cam Switch, sumando siempre 8 levas entre
ambos grupos. Para conseguir esta división se utiliza el parámetro
LP1 (SecondCamSwitchStart) que determina qué leva es la primera
del segundo Cam Switch. Este parámetro puede tomar valores de 0
a 8 ; tomando el valor 0 para señalar que sólo existe el primer Cam
Switch definido y tomando el valor 1 cuando lo que se quiere señalar
es únicamente la existencia del segundo Cam Switch. Si muestra otro
valor estará indicando la existencia de ambos Cam Switch.

Los parámetros que determinan los puntos ON y OFF de las levas son
los que van desde LP60 [S60] hasta LP75 [S75]. Así, cada pareja de
parámetros consecutivos que comience por cifra par estará
definiendo puntos ON el primero de ellos y puntos OFF el segundo.

Cada punto a los que se hace referencia viene dado por una tira de
32 bits con signo que posteriormente será comparado con el valor de
referencia representada por otra tira de 32 bits con signo,
estableciéndose que:
! si el valor de referencia es mayor o igual que el valor del punto
ON y menor que el valor del punto OFF, el valor de la leva
correspondiente será un 1 lógico.
! en otro caso será un 0 lógico.

El valor de salida del Cam Switch se calculará cada vez que desde
el PLC se ejecute la instrucción :

CAM_SRC (número_de_CamSwitch, valor_de_referencia)

Al término de esta instrucción el valor de cada leva estará en la


variable del PLC CAM_OUT_1 en el caso de que se procese el Cam
Switch 1 o en CAM_OUT_2 en el caso del procesamiento del Cam
Switch 2. DDS - MC
El valor devuelto en estas variables es un número cuyos bits
representan el estado de cada leva. Así, el bit 0 será el estado de la
leva 1, el bit 1 el estado de la leva 2 y así sucesivamente para todas
las levas.
(SOFT [Link])
Si los valores de los puntos ON y OFF de alguna de las levas fuesen
iguales, dicha leva se considerará como no definida y no se tendrá
en consideración.

1
! ! ! Cam Switch

Cuando desde el programa de PLC se desea obtener la salida de un


Cam Switch que no tiene definida ninguna leva aparecerá un error de
ejecución en el programa de PLC.

Si en algún momento, se cambia alguno de los puntos ON u OFF de


alguna leva, el regulador debe ser informado de que ya puede leer los
valores de los parámetros modificados. Este informe le vendrá dado
mediante escritura en la variable LV2 (CamSwitchCompile) del
regulador.

6. De no hacerse así los cambios en los parámetros S60 a S75 no se


tendrán en consideración.
CAM SWITCH

Los valores de los puntos ON y OFF de cada leva se pueden definir


mediante los parámetros S60 a S75 que están almacenados en el
regulador o bien modificar desde el mismo programa de [Link]
obstante, el proceso de preparación de los datos que se lleva a cabo
al escribir en la variable LV2 puede tener una duración superior al
tiempo de scan del PLC, dependiendo de las tareas que en ese
momento este ejecutando el regulador, y pudiéndose dar un error de
WATCHDOG del PLC. Sin embargo, si la escritura en la variable LV2
se ejecuta desde el módulo inicial del PLC o desde el DNC este
problema no existirá.

De no modificarse los parámetros S60 a S75 y de tomarse los valores


almacenados en el regulador, no será necesario escribir nada en la
v a r i a b l e LV 2 y a q u e e l r e g u l a d o r r e a l i z a r á e s t a l a b o r
automáticamente.

Ejemplo.

El siguiente programa de PLC establece las salidas digitales


correspondientes a las levas que dependen de la posición. Si, se
considerara de interés, que los puntos ON y OFF de las mismas
fuesen los almacenados en los parámetros, únicamente deberían
suprimirse las instrucciones pertenecientes al módulo de primer ciclo
(CY1).

#INCLUDE "[Link]"
PRG

() = MOV S51 R1 =DVS R1 10000 R1


() = CAM_SRC (1,R1)
() = MOV CAM_OUT_1 O1 8
4 END

; se lee la posición y se hace la división por 10000


; se suministra el dato al Cam Switch
; se escribe en las salidas digitales la salida del Cam Switch
DDS - MC
CY1

() = MOV 10000 260 = MOV 15000 S61


() = MOV 500 S62 = MOV -100 S63
(SOFT [Link]) () = MOV 100 S64 = MOV 200 S65
() = MOV 5000 S66 = MOV 4000 S67
() = MOV 0 S68 = MOV -100 S69
() = MOV 40 S70 = MOV 10000 S71
() = MOV 30 S72 = MOV 0 S73

2
! ! ! Cam Switch

() = MOV 0 S74 = MOV 0 S75


() = MOV 1 CAM_SWITCH_COMPILE

END

; se definen nuevos valores para las levas


; se prescinde de una leva igualando ON = OFF
; se obliga a considerar los cambios

; definiciones de los parámetros de las levas


6.

CAM SWITCH
DEF CAM_COMPILE S35070
DEF SECOND_CAM_FIRST_SWITCH S35069

; definiciones de los puntos de ON y de OFF de las levas

DEF CAM1_ON S60


DEF CAM1_OFF S61
DEF CAM2_ON S62
DEF CAM2_OFF S63
DEF CAM3_ON S64
DEF CAM3_OFF S65
DEF CAM4_ON S66
DEF CAM4_OFF S67
DEF CAM5_ON S68
DEF CAM5_OFF S69
DEF CAM6_ON S70
DEF CAM6_OFF S71
DEF CAM7_ON S72
DEF CAM7_OFF S73
DEF CAM8_ON S74
DEF CAM8_OFF S75

DDS - MC

(SOFT [Link])

3
! ! ! Cam Switch

6.
CAM SWITCH

DDS - MC

(SOFT [Link])

4
INTRODUCCIÓN AL SISTEMA
MOTION CONTROL [MC] 7
Introducción

El regulador gobierna las corrientes por el motor mediante un


software de control. Y obedeciendo a unas consignas de posición,
controla ese accionamiento. Sobre este software de control trabajan
los paquetes de Motion Control (MC) y de autómata programable
(PLC).

El programa de PLC, en base a unas condiciones lógicas editadas por


el usuario, controla las entradas y salidas eléctricas digitales del
regulador.

El funcionamiento del software de MC está estrechamente ligado al


del PLC, ya que el software de MC no tiene acceso directo a las
entradas y salidas eléctricas del regulador, de forma que la
interacción con el exterior se realiza a través del PLC, mediante
marcas y variables de control.

El programa de MC emula a un Control Numérico CNC.

Es capaz de generar, mediante consignas de posición internas, una


secuencia de movimientos en el motor.

Además tiene acceso a los parámetros internos del software de


control.

La secuencia de movimientos vendrá dada por el programa de MC.


Y puede ser condicionada por las entradas y salidas digitales del
regulador que gestiona el PLC.

Modos de funcionamiento ( manual - automático )

Se establecen dos modos de funcionamiento para el regulador.

El paso de un modo de funcionamiento a otro lo determina la


variable LV13 [F2313] KernelOperationMode:

F2313 = 0 modo automático, por defecto.


F2313 = 1 modo manual. DDS - MC

Ambos modos de funcionamiento se gestionan mediante dos


módulos diferentes dentro del mismo fichero objeto con extensión
*.mcc .
(SOFT [Link])

1
! ! ! Introducción al sistema de Motion Control

El formato atiende a la siguiente estructura:


...
PROGRAM

sentencia 1
sentencia 2
...
END

7. ...
JOG
sentencia 1
INTRODUCCIÓN AL SISTEMA MOTION CONTROL [MC]
Modo de funcionamiento automático

sentencia 2
...
END
...

siendo indiferente el orden de los módulos.

Las señales START, STOP, RESET y ABORT gobiernan la puesta en


marcha y parada del sistema en todo momento, tanto en el modo de
funcionamiento automático como manual. En el capítulo 8 se indica
el funcionamiento exacto de estas señales de control.

En ambos modos de funcionamiento es necesario que el programa


de PLC gestione estas señales de control, ya que sólo el PLC tiene
acceso a las entradas y salidas eléctricas.

Modo de funcionamiento automático

Tras el arranque, se establece siempre el modo de funcionamiento


automático.

Para la puesta en marcha del programa automático es necesario


activar la señal START.

El fichero objeto con extensión .mcc (fruto de la compilación de un


fichero .mc) especifica la secuencia de movimientos del motor. En
condiciones normales esta secuencia se ejecutará de forma
repetitiva. Al concluir el programa, saltará automáticamente al
principio y reanudará la ejecución.

Las señales JOG+ y JOG- (propias del modo de funcionamiento


manual) no influyen en el modo automático.
8
Submodos de operación automática

Dentro del modo de funcionamiento automático se diferencian


varios submodos de operación.
DDS - MC
Submodo continuo

Las sentencias establecidas por el programa de MC se ejecutan una


tras otra. Tras la activación de la señal de START, la ejecución no se
(SOFT [Link]) detiene hasta que se active la señal de STOP o RESET.

Es el submodo más habitual.

2
! ! ! Introducción al sistema de Motion Control

Submodo bloque a bloque

En este modo de operación, tras la señal de START continúa la


ejecución del programa hasta el primer bloque de movimiento que
encuentre, lo ejecuta y se detiene. Es decir, que con cada señal de
Start se ejecuta un sólo bloque de movimiento.

Está indicado para la ejecución controlada del programa en la fase


de depuración.

Submodo instrucción a instrucción 7.


Es similar al submodo bloque a bloque pero con cada señal de START

INTRODUCCIÓN AL SISTEMA MOTION CONTROL [MC]


Modo de funcionamiento manual
se ejecuta una sola instrucción, sea un bloque de movimiento u otra.
Está indicado para la ejecución controlada del programa en una fase
de depuración de más bajo nivel.

El paso de un submodo de funcionamiento a otro lo establece la


variable LV14 [F2314] KernelAutoMode:
F2314 = 0 submodo continuo, por defecto
F2314 = 1 submodo bloque a bloque
F2314 = 2 submodo instrucción a instrucción

Modo de funcionamiento manual

A veces el usuario necesita mover el accionamiento manualmente,


mediante pulsadores de avance-retroceso. El módulo JOG del fichero
con extensión .mcc gestiona el funcionamiento de este modo.

En los anexos del capítulo 8 de este manual se muestra el módulo


JOG sugerido.

Igual que en el modo automático, para la puesta en marcha del


programa manual es necesario activar la señal START.

La ejecución del programa en el modo de funcionamiento manual se


controla desde el PLC a través de los parámetros del Regulador:
Señal de JOG+, LV20 [F02320] JogPositiveSignal
Señal de JOG-, LV21 [F02321] JogNegativeSignal

JOG +

La señal JOG+ hace girar el motor en sentido horario, (avance).

JOG -

La señal JOG- gira el motor en sentido antihorario, (retroceso).

El modo en el que estas señales manejan el accionamiento lo


determina el módulo JOG del fichero *.mcc
DDS - MC

(SOFT [Link])

3
! ! ! Introducción al sistema de Motion Control

Submodos de operación manual

Dentro del modo de funcionamiento manual se diferencian varios


submodos de operación.

Submodo continuo

Con cada señal de JOG, se genera un movimiento a velocidad


constante durante el tiempo que dicha señal permanezca activa.
7. Submodo incremental
INTRODUCCIÓN AL SISTEMA MOTION CONTROL [MC]
Submodos de operación manual

Con cada señal de JOG, se genera un desplazamiento a velocidad


constante pero de amplitud fija.

El paso de un submodo de funcionamiento a otro lo establece la


variable LV19 [F2319] KernelManualMode:
F2319 = 0 submodo continuo, por defecto.
F2319 = 1 submodo incremental.

En ambos submodos la velocidad de desplazamiento es la que se


establece en el parámetro [F2322] JogVelocity, cuyo valor por defecto
es de 5 m/min.

Para el submodo incremental la amplitud del desplazamiento viene


dada por el parámetro [F2323] JogIncrementalPosition, cuyo valor
por defecto es de 1 mm.

Todo esto según determina el módulo JOG del fichero .mcc

Ver anexos al capítulo 8.

Ejecución del programa de MC

En la ejecución del programa de MC se han de tener en cuenta los


siguientes aspectos:
! La interpretación de sentencias se adelanta a su ejecución.
! Unidades físicas empleadas en los datos numéricos.
! La precisión máxima es de 1/10000 de estas unidades.
! Asignación de una constante numérica a una variable.
! Rango de valores admisible.
8
Interpretación adelantada

El lenguaje MC es un lenguaje interpretado. Esto es, cada instrucción


DDS - MC se traduce a un sub-lenguaje, que forma realmente el código
ejecutado por el microprocesador.

Durante la ejecución de una instrucción de movimiento se realiza la


interpretación de las instrucciones siguientes, y una ejecución
"virtual" de las mismas.
(SOFT [Link])
Este modo de funcionamiento es el que hace posible que los
sucesivos movimientos del motor indicados por el programa queden
enlazados dinámicamente. Por ejemplo, que el primer movimiento
llegue a su cota de destino a la velocidad indicada por el segundo.

4
! ! ! Introducción al sistema de Motion Control

También requiere que el programador sea consciente en todo


momento de esa "Ejecución virtual Adelantada". Debe vigilar
especialmente el modo en que se ejecutan instrucciones como
DWELL, ZERO y HOME, y las instrucciones de asignación.
Ver los apartados correspondientes en el capítulo 8.

Unidades físicas

Las unidades físicas empleadas para la expresión de los datos 7.


numéricos en las instrucciones son:

INTRODUCCIÓN AL SISTEMA MOTION CONTROL [MC]


Unidades físicas
! Posición lineal en milímetros
! Posición angular en grados
! Velocidad lineal en metros por minuto

Precisión, diezmilésima

El tratamiento interno de estos datos numéricos se realiza con una


precisión máxima de diezmilésimas de esas unidades físicas.
! La posición lineal se almacena en décimas de micra
! La posición angular se almacena en diezmilésimas de grado
! La velocidad lineal se almacena en décimas de micra por
minuto
! ...

Ejemplo.

MOVE P =1 V=0.05 L =NULL


Es un movimiento a la cota final de 1 mm con velocidad de 50
mm/min y velocidad final nula. Sin embargo los datos manejados
por el microprocesador serán 10000 y 500.

Constantes numéricas

En formato hexadecimal
Hay que tener cuidado cuando se asigna una constante numérica en
formato hexadecimal a una variable.

En ese caso, la variable se carga con ese valor exactamente.

No se aplica aquí el almacenamiento de los datos en diez- milésimas


de unidad.
DDS - MC
Ejemplo.

VAR = $186A0 :$186A0 = 100000


MOVE D =VAR L =NEXT
(SOFT [Link])
Es un movimiento de 10 mm desde la posición actual, a la velocidad
por defecto [F2312] y enlazado en velocidad con la instrucción
siguiente.

5
! ! ! Introducción al sistema de Motion Control

En formato decimal

En la asignación de una constante numérica en formato decimal a una


variable sí se aplica ese tratamiento interno de los datos con una
precisión de diezmilésima de unidad.
Ejemplo.

VAR = 6

7. MOVE D =VAR L =NEXT

Es un movimiento de 6 mm desde la posición actual, a la velocidad


Manejo de registros del PLC
INTRODUCCIÓN AL SISTEMA MOTION CONTROL [MC]

por defecto [F2312] y enlazado en velocidad con la instrucción


siguiente.

Parte entera - decimal

Por otra parte, la expresión en formato decimal de la constante


numérica no puede superar los 5 dígitos en su parte entera ni los 4
dígitos en su parte decimal. Así, para la asignación de una constante
superior a 99999.9999 se debe usar alguna expresión aritmética o la
expresión hexadecimal de esa constante.
Ejemplo.

VAR = 150 * 1000

VAR = $59682F00 ;$59682F00 = 150 * 1000 * 10000

Dos formas diferentes de dar el valor 150000 a la variable VAR.

Manejo de registros del PLC

Cuando se emplea un registro del PLC para la transferencia de


información al programa MC, esta puede ser considerada como un
dato "entero" o como "decimal".

Como dato entero

Sintácticamente, sin ningún carácter adicional.


Ejemplo.

;Sea el registro R1 = 200

8 MOVE D = R1
Es un movimiento de 200 mm desde la posición actual.

Como dato decimal

Con el carácter # por delante.


DDS - MC Ejemplo.

;Sea el registro R1 = 200


MOVE D = #R1

(SOFT [Link])
Es un movimiento de 0.0200 mm desde la posición actual.

6
! ! ! Introducción al sistema de Motion Control

Tamaño de las variables

El espacio de memoria en el que se almacena el valor de una variable


es de 32 bits. Así, el rango de valores admisible es:
en formato hexadecimal: $7FFFFFFF ... $80000000
en formato decimal: 2147483647 ... - 2147483648

Si el compilador detecta que se supera este rango de valores,


mostrará el error de desbordamiento interno E008.
7.
Si la ejecución del programa provoca el desbordamiento de este

INTRODUCCIÓN AL SISTEMA MOTION CONTROL [MC]


Tamaño de las variables
rango de valores, mostrará el error E907.

DDS - MC

(SOFT [Link])

7
! ! ! Introducción al sistema de Motion Control

7.
INTRODUCCIÓN AL SISTEMA MOTION CONTROL [MC]

DDS - MC

(SOFT [Link])

8
PROGRAMACIÓN EN LENGUAJE
MC 8
Estructura y elementos del programa

El programa MC a ejecutar por el regulador consta de tres apartados


básicos que son:
! Definición de recursos
! Declaración de variables
! Módulos de ejecución
No es obligatoria la presencia de los dos primeros apartados, pero
siempre debe respetarse ese orden dentro del programa.

Definición de recursos

Para simplificar la lectura y mantenimiento de los programas es


posible asignar nombres a los recursos que van a ser empleados a
lo largo del programa mediante la sentencia DEF.

La sentencia INCLUDE permite incluir en una sola línea de programa,


una referencia a un "fichero de cabecera" que contiene únicamente
definiciones de recursos. No está permitido referirse a un fichero de
cabecera dentro de otro.

En el anexo 3 de este capítulo se muestra el fichero ‘[Link]’.


Contiene defines para las variables Sercos® y Fagor más relevantes.
También incluye defines para algunas constantes. Este fichero es
suministrado dentro del mismo paquete de software.

El compilador admite hasta 1000 definiciones por programa.

Declaración de variables

Si el programa va a emplear variables, es necesario declararlas


previamente. Esto es, darles un nombre y reservar para ellas un
espacio de memoria.

Para la declaración de variables y arrays se emplea la sentencia DIM DDS - MC


y para la declaración de parámetros la sentencia PAR.

El sistema ofrece memoria suficiente para la declaración de 1000


variables.
(SOFT [Link])

1
! ! ! Programación en lenguaje MC

Módulos de ejecución

Después de la definición de recursos y la declaración de variables y


parámetros se encuentran los módulos de ejecución.

El programa de MC estará formado por un módulo obligatorio que


comienza con la sentencia PROGRAM y finaliza con la sentencia
END y otro módulo, también obligatorio, que comienza con la
sentencia JOG y finaliza con la sentencia END definiendo cada uno
8. de ellos el modo de funcionamiento, AUTOMATICO o MANUAL.

Y puede ir acompañado de otros módulos opcionales (subrutinas).


PROGRAMACIÓN EN LENGUAJE MC
Módulos de ejecución

Cada uno de ellos comienza con la sentencia SUB name y finaliza


con la sentencia ENDSUB. Donde la cadena "name" identifica a la
subrutina.

instrucciones

Las instrucciones estarán siempre dentro de los módulos de


ejecución. Cada instrucción del programa finaliza con un retorno de
carro (return), siendo necesario incluso en la última línea o sentencia
del fichero.

Etiquetas

Sirven para identificar una línea dentro del programa. Se utiliza


normalmente cuando se realizan referencias o saltos de programa.

Las etiquetas pueden estar formadas por hasta treinta y dos


caracteres (letras mayúsculas, cifras y el "guión bajo (_)" ), seguidas
del caracter "dos puntos (:)". Deberán empezar siempre por una letra
o un "guión bajo (_)".

Ejemplo.

POINT:
MOVE D =300 L =NULL
---
---
40 GOTO POINT

Además de las letras comprendidas entre la ‘A’ y la ‘Z’ (set de


caracteres ANSI del 65 al 90), se admiten también como letras los
caracteres especiales comprendidos entre el 192 y el 223, que son
los siguientes: ‘À’, ‘Á’, ‘Â’, ‘Ã’, ‘Ä’, ‘Å’, ‘Æ’, ‘Ç’, ‘È’, ‘É’, ‘Ê’, ‘Ë’, ‘Ì’, ‘Í’, ‘Î’,
DDS - MC ‘Ï’, ‘Ð’, ‘Ñ’, ‘Ò’, ‘Ó’, ‘Ô’, ‘Õ’, ‘Ö’, ‘×’, ‘Ø’, ‘Ù’, ‘Ú’, ‘Û’, ‘Ü’, ‘Ý’, ‘Þ’ y ‘ß’..

No pueden escribirse dos etiquetas iguales en un mismo programa.

Sólo se puede colocar una etiqueta en las líneas de programa que


están dentro de los módulos de ejecución PROGRAM - END, JOG-
(SOFT [Link]) END y SUB name - ENDSUB.

Sólo se pueden realizar saltos a etiquetas que estén dentro del mismo
módulo.

2
! ! ! Programación en lenguaje MC

Comentarios

El MC permite incluir en el programa cualquier cadena de texto a


modo de comentario. Los comentarios comienzan por el carácter “;”,
ya que todo texto incluido entre un signo “;” (punto y coma) y el final
de línea es irrelevante en la ejecución del programa.

Ejemplo.
PROGRAM
; Inicializaciones
8.

PROGRAMACIÓN EN LENGUAJE MC
Comentarios
ACC = 12 ; Aceleración de 12 m/s2
JERK = 240 ; Jerk = Acc/ts, para ts de 50ms,
; Jerk = 240 m/s3
HOME ; Posicionarse en el origen
; MOVE P =0 V=1

Así la instrucción MOVE es irrelevante, nunca se ejecutará.

Es muy recomendable incluir abundantes comentarios que hagan


más sencilla la comprensión del programa y su mantenimiento
posterior.

El compilador de MC permite en el texto de comentario cualquier


carácter.

Elementos reservados

Todas las palabras que constituyen el lenguaje MC deben estar


escritas en letras mayúsculas.

La única excepción a este punto es el "path" del fichero de


definiciones en la sentencia #INCLUDE.

Palabras reservadas

No se pueden utilizar como etiquetas, nombre de variables o para la


definición de recursos. Son:
#INCLUDE AND BAND BNOT
BOR BXOR CALL CAM
DEF DIM DWELL ELSE
ELSEIF END ENDFOR ENDIF
ENDSUB ENDWHILE EQ FOLLOW
FOR GE GOTO GT
DDS - MC
HOME IF JOG LE
LT MOD MOVE NE
NEXT NOT NULL OFF
(SOFT [Link])
ON OR PAR PRESENT
PROGRAM SELECT SUB WAIT
WAIT_IN_POS WHILE XOR ZERO

3
! ! ! Programación en lenguaje MC

También son palabras reservadas las siguientes letras, ya que


pueden forman parte de los atributos de algunos comandos.
D L P V

Símbolos empleados

Algunos símbolos tienen un significado especial en el lenguaje de


8. programación MC. Hay que cuidar de que se empleen en la forma
adecuada, como se ve en los apartados siguientes.
PROGRAMACIÓN EN LENGUAJE MC
Símbolos empleados

( ) [ ] . , _ = + - * / : ;

Variables del Regulador (reservadas)

Todos los parámetros, variables y comandos del regulador son


variables reservadas. Estos elementos se nombran mediante las
letras "S" y "F" seguidas de un indicador numérico.

Así que, no se puede utilizar como etiqueta, como nombre de una


variable de usuario o para la definición de un recurso, ninguna cadena
de caracteres que siga esa nomenclatura ("S" y "F" seguidas de un
indicador numérico).

Ejemplos.

Nombres de variable reservados para el regulador:


S49 ; Parámetro Sercos "PositivePositionLimit"
F2313 ; Parámetro Fagor "KernelOperationMode"

En todos los casos se admite tanto la sintaxis S49 como S00049,


tanto F2313 como F02313.

Se puede acceder a todas estas variables del Regulador desde el


programa MC, algunas sólo en modo de lectura y otras en modo de
lectura y escritura.

Variables del PLC (reservadas)

Todos las marcas, registros y contadores del PLC son variables


reservadas. Estos elementos se nombran mediante las letras "M", "R"

40 y "C" seguidas de un indicador numérico.

Existen 64 marcas del PLC (M1/M64), 32 registros (R1/R32), y 16


contadores (C1/C16).

Así que, no se puede utilizar como etiqueta, como nombre de una


variable de usuario o para la definición de un recurso, ninguna cadena
DDS - MC de caracteres que siga esa nomenclatura ("M", "R" y "C" seguidas de
un indicador numérico).

Ejemplos.

Nombres de variable reservados para el PLC:


(SOFT [Link])
M13 ; Marca número 13 del PLC
R001 ; Registro número 1
C8 ; Contador número 8

4
! ! ! Programación en lenguaje MC

En todos los casos se admite tanto la sintaxis M1 como M01, tanto


R12 como R00012, etc.

Se puede acceder a todos estos recursos del PLC desde el programa


MC. Los Contadores sólo en modo de lectura, y las Marcas y
Registros en modo de lectura y escritura.

Vigilar el modo en el que el programa de MC maneja los registros del


PLC.

Variables, constantes y parámetros


8.

PROGRAMACIÓN EN LENGUAJE MC
Variables, constantes y parámetros
Variables y Arrays

Para disponer de un espacio de memoria accesible de forma


individual (variable) o indexada (array) es preciso declararlo
previamente. Se declaran por medio de la sentencia DIM en la
cabecera del programa de usuario.

Ejemplo.

DIMPOS, TABLE[5]
reserva registros de 32 bits en la memoria para la variable POS
y para el array de cinco elementos TABLE.

El nombre de las variables y arrays puede estar formado por hasta


treinta y dos caracteres (letras mayúsculas, cifras y el "guión bajo (_)"
). Estos nombres deberán empezar siempre por una letra o un "guión
bajo (_)".

El nombre que le asigna el usuario no puede coincidir con los


elementos reservados que se mencionan en el apartado anterior.
Cada variable declarada (se emplee en el programa o no), dispone
de un espacio de memoria de 32 bits.
Cada array declarado (se emplee en el programa o no), dispone
de un espacio de memoria de n·32 bits. Donde n es el número de
elementos del array, indicado entre corchetes “[n]” en su
declaración.

Se pueden reservar hasta 1000 registros de 32 bits como espacio de


memoria para las variables de propósito general y los arrays.

El siguiente dibujo muestra cómo hacer referencia a cada uno de los


elementos de un array de cinco elementos.

Este índice puede darse a través de una constante o una variable, que
contenga el resultado de una expresión aritmética.

DIM POS 32 bits DIM TABLE[5] 32 bits


POS TABLE[0]
DDS - MC
TABLE[1]
TABLE[2]
TABLE[3]
TABLE[4]
(SOFT [Link])

fig. 8 - 1

Referencia a elementos de un array.

5
! ! ! Programación en lenguaje MC

Constantes

Por otro lado se definen como constantes todos aquellos valores fijos
que no pueden ser alterados por el programa, siendo considerados
como tales:
! Los números expresados en sistema decimal.
! Los números hexadecimales.

8. P. ej: $1E2
! Las variables de solo lectura, ya que su valor no puede ser
alterado dentro de un programa.
PROGRAMACIÓN EN LENGUAJE MC
Constantes

P. ej: S51 PositionFeedback1

Parámetros

Cuando se definían los conceptos de variables y arrays como


variables de usuario declaradas mediante la sentencia DIM no se
puntualizaba en sus características de almacenamiento. Así, cuando
el regulador deja de ser alimentado por tensión inmediatamente los
valores de estas variables y arrays se eliminan tomando nuevamente
en el arranque del regulador el valor nulo.

Esta ventaja de optimización de memoria, anula la posibilidad de


almacenar variables que tomen un valor inicial determinado en el
arranque del regulador.

Con el fin de que esta posibilidad pueda existir, se define el concepto


de parámetro, que es una variable de usuario con la característica de
poder ser almacenada en memoria flash.

Verifica todas las propiedades y características de las variables de


usuario salvo que los parámetros deben declararse mediante la
sentencia PAR.

Como consecuencia de este almacenamiento en memoria flash se


genera un fichero de datos específico permitiendo así tomar unos
determinados valores iniciales cuando el regulador arranque.

En la sección " sentencias de declaración de variables " se detallan


todos los aspectos mas relevantes de la sentencia PAR y el fichero
que se genera.

40
Operadores

El operador es el símbolo que indica la función lógica o matemática


que se debe llevar a cabo. El lenguaje MC dispone de operadores
DDS - MC aritméticos, relacionales, lógicos y binarios.

Ver el siguiente apartado, "Expresiones".

(SOFT [Link])

6
! ! ! Programación en lenguaje MC

Operadores aritméticos

* : multiplicación
/ : división
MOD : resto de la división
+ : suma
- : resta

Ejemplos.

3.1415 * 2.22 = 6.9741 365 / 12 = 30.4166


8.

PROGRAMACIÓN EN LENGUAJE MC
Operadores aritméticos
365 MOD 12 = 5

Operadores binarios

Actúan como operadores binarios entre variables o constantes.


BNOT : negación binaria (complemento a uno)
BAND : AND binario
BXOR : OR exclusivo binario
BOR : OR binario

Operadores relacionales

EQ : igual que
NE : distinto que
GT : mayor que
GE : mayor o igual que
LT : menor que
LE : menor o igual que

Operadores lógicos

Actúan como operadores lógicos entre condiciones.


NOT : negación lógica
AND : AND lógico
XOR : OR exclusivo lógico
OR : OR lógico

Z0 = NOT Z1 Z0 = Z1 AND Z2 Z0 = Z1 XOR Z2 Z0 = Z1 OR Z2

Z1 Z0 Z1 Z2 Z0 Z1 Z2 Z0 Z1 Z2 Z0
0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 1 1 0 1 1 DDS - MC
1 0 0 1 0 1 1 0 1
1 1 1 1 1 0 1 1 1

fig. 8 - 2 (SOFT [Link])

Tablas de verdad.

7
! ! ! Programación en lenguaje MC

Expresiones

Una expresión es cualquier combinación válida entre operadores,


constantes y variables.

Expresiones aritméticas y binarias

8. Se forman combinando operadores aritméticos y binarios con las


constantes y variables.
X10 = (X12 * 1000) - X13
PROGRAMACIÓN EN LENGUAJE MC
Expresiones

M10 = M12 BAND (M14 BOR $F)

Expresiones condicionales

Sirven para establecer condiciones en sentencias del tipo IF, WHILE,


y se forman agrupando expresiones relacionales y lógicas. El
resultado de estas expresiones es booleano (verdadero "1" o falso
"0").

Las expresiones relacionales se forman combinando operadores


relacionales con constantes, variables y expresiones aritméticas y
binarias.
IF (R1 GE 1999)
WHILE ((R1 + 100) GT 7854)

Es posible encadenar expresiones relacionales mediante operadores


lógicos para formar una expresión mayor.
IF ((R1 GE 1999) OR ((R1 + 100) GT 7854))

No se permite la asignación del resultado de una expresión relacional


a una variable.
R0 = (R1 + 100) GT 7854 ; no es una sentencia admitida

Orden de prioridades

Es importante tener siempre en cuenta el orden de prioridades con


el que se ejecutan las distintas partes de una expresión aritmética o
lógica.

40 Prioridad de ejecución (de mayor a menor):


1. Operaciones aritméticas y binarias
• BNOT, - (signo aritmético negativo)
• *, / , MOD (multiplicación, división, resto de la división)
• +, - (suma, resta)
• BAND
DDS - MC • BXOR
• BOR
2. Operaciones relacionales (<, >, ...)
3. Operaciones lógicas
(SOFT [Link])
• NOT
• AND
• XOR
• OR

8
! ! ! Programación en lenguaje MC

La utilización de paréntesis altera el orden de ejecución de las


distintas partes de la expresión.

Ejemplos.

Las líneas señalan el orden de ejecución; las mismas expresiones


usando paréntesis son más claras:

Z0 = Z1 MOD Z2 * Z3 + Z4 * Z5 MOD Z6 - Z7

M0 = M1 BOR M2 BXOR M3 BAND M4 BOR $FF )


8.

PROGRAMACIÓN EN LENGUAJE MC
Sentencias
IF ( BNOT M1 BAND M2 - M3 GT 88 AND M4)

Z0 = (( Z1 MOD Z2 ) * Z3 ) + (( Z4 * Z5 ) MOD Z6 ) - Z7
M0 = (M1 BOR ( M2 BXOR ( M3 BAND M4 ))) BOR $FF
IF (((( BNOT M1 ) BAND ( M2 - M3 )) GT 88 ) AND M4)

Es muy recomendable incluir abundantes paréntesis que dejen claro


cual es el orden de ejecución. Además, hacen más sencilla la
comprensión del programa y su mantenimiento posterior.

El uso de paréntesis redundantes o adicionales no producirá errores


ni disminuirá la velocidad de cálculo. Existe un máximo de 16 niveles
de anidamiento permitido en la utilización de paréntesis.

Sentencias

Las sentencias de programación del lenguaje MC se pueden agrupar


en:
! Sentencias de definición de recursos.
! Sentencia de declaración de variables.
! Sentencias de definición de módulos.
! Sentencias de asignación.
! Sentencias de control de flujo.
! Sentencias de espera.
! Sentencias de movimiento.

En la descripción de las sentencias se utilizará la siguiente


nomenclatura:

<expresión> podrá ser una constante, una variable,


o una expresión aritmética y binaria.
DDS - MC
<condición> cualquier expresión condicional
delimitada por paréntesis, "(" y ")".

(SOFT [Link])

9
! ! ! Programación en lenguaje MC

Sentencias de definición de recursos

Permiten al usuario asociar nombres a recursos del sistema para


poder utilizarlos de una forma más amigable a lo largo del programa.
Existen dos sentencias de este tipo.

DEF

Esta sentencia asocia un nombre elegido por el usuario a un recurso


8. concreto. El formato de utilización es el siguiente:

DEF nombre recurso


PROGRAMACIÓN EN LENGUAJE MC
Sentencias de definición de recursos

Donde nombre es el identificador elegido.

El "nombre" puede estar formado por hasta treinta y dos caracteres


(letras mayúsculas, cifras y el "guión bajo (_)").

Deberá empezar siempre por una letra o un "guión bajo (_)".

El recurso definido puede ser una variable del regulador, o una


constante numérica.

Ejemplo.

DEF ACC S260


DEF LIMIT 100

Mediante esas sentencias se asocia el nombre ‘ACC’ a la variable del


regulador S260 PositioningAcceleration, y el nombre ‘LIMIT’ a la
constante numérica 100.

No se puede asociar más de un recurso a un mismo nombre.

Sin embargo, sí se permite asociar más de un nombre a un mismo


recurso. Genera en este caso el aviso W002.

En el anexo 3 de este capítulo se muestra el fichero ‘[Link]’.


Contiene defines para las variables Sercos® y Fagor más
relevantes. También incluye defines para algunas constantes. Este
fichero es suministrado dentro del mismo paquete de software.

#INCLUDE

Esta sentencia permite incluir en una sola línea de programa, una


referencia a un fichero que contiene definiciones de recursos.

40 Facilita la organización del programa y la claridad del mismo.

La sintaxis es la siguiente:
#INCLUDE" path fichero"

Donde path fichero indica la ubicación del fichero en el disco del


DDS - MC Ordenador Personal PC, o incluso a través de una red de PCs.

La ubicación del fichero se especificará entre comillas. ("). Debe


seguir la normativa sintáctica de MS Windows y no debe superar los

255 caracteres.
(SOFT [Link])
El nombre del fichero no puede contener ninguno de los siguientes
caracteres: ‘\’, ‘/’, ‘:’, ‘*’, ‘?’, ‘"’, ‘<’, ‘>’ ni ‘|’.

10
! ! ! Programación en lenguaje MC

Su extensión debe ser obligatoriamente ‘.INC’ o ‘.inc’.

Ejemplo.

El fichero ‘[Link]’ contiene defines para las variables Sercos y


Fagor más relevantes. Este fichero es suministrado dentro del
mismo paquete de software.
Para poder usar estas definiciones en el programa, deberá
escribirse en sus primeras líneas:
#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"
o solamente
8.

PROGRAMACIÓN EN LENGUAJE MC
Sentencia de declaración de variables
#INCLUDE "[Link]"

si el fichero de programa .mc y el de definiciones [Link] están en


el mismo directorio.

La directiva "#INCLUDE" se ubica siempre al comienzo del programa,


junto a las definiciones "DEF".

Dentro de un programa de usuario se podrán incluir tantos ficheros


de cabecera .inc como sea preciso. No está permitido referirse a un
fichero de cabecera dentro de otro.

El fichero de texto ".inc" debe estar redactado con las mismas normas
sintácticas que se exigen a cualquier programa.

El compilador admite hasta 1000 definiciones por programa.

Existen ficheros preparados con las definiciones más habituales.


Estos "ficheros de cabecera" son suministrados dentro del mismo
paquete de software. Ver anexo a este capítulo.
[Link], ad_da.inc, y [Link]
Ficheros de includes propios de los programas de PLC, no de MC.
[Link]
Contiene defines para las variables Sercos y Fagor más
relevantes, y algunas constantes.

Sentencia de declaración de variables

Si el programa va a emplear variables, es necesario declararlas


previamente. Esto es, darles un nombre y reservar para ellas un
espacio de memoria. Para la declaración de variables y arrays se
emplea la sentencia DIM.

DIM

En una misma sentencia se pueden declarar uno o más nombres de


variables y/o arrays separados por comas, ‘,’. Es indiferente el orden
en que se especifiquen. DDS - MC
La sintaxis es la siguiente:
DIM VAR1, VAR2 [num] , ...

Donde VAR1 sería el nombre de una variable, VAR2 el nombre de (SOFT [Link])
un array y num el tamaño o número total de elementos de ese array.

11
! ! ! Programación en lenguaje MC

El lenguaje MC trabaja con variables de 32 bits. Así que cada variable


declarada dispondrá de uno de estos registros de 32 bits para
almacenar su valor numérico. Igualmente un array de n elementos
dispondrá de n de estos registros de 32 bits.

El sistema ofrece memoria suficiente para la declaración de 1000


variables.

Ejemplo.

8. DIMPOS, TABLE[5]
PROGRAMACIÓN EN LENGUAJE MC
Sentencia de declaración de variables

reserva un registro de 32 bits para la variable POS y cinco registros


para el array TABLE.

DIM POS 32 bits DIM TABLE[5] 32 bits


POS TABLE[0]
TABLE[1]
TABLE[2]
TABLE[3]
TABLE[4]

PAR

La sentencia PAR y su utilización es similar a la sentencia DIM


aplicada a variables de usuario.

La sintaxis es :
PAR PAR1, PAR2 [num],...

donde PAR1 será el nombre de un parámetro, PAR2 el nombre de


un array y num el tamaño o nº total de elementos que contiene el array.

La sentencia PAR o las sentencias PAR, si existen, deberán ir


posteriormente definidas de las sentencias DEF, si existen, y
anteriores a la sentencia DIM que se introduzcan en la aplicación de
MC.

Ejemplo.
DEF NUM_POS 16
PAR TABLA_POS [NUM_POS], TIEMPO_OUTPUT
DIM INDICE, CONTADOR, TEM_AUX

40 PROGRAM
.....................
.....................

END

DDS - MC JOG
......................
......................

END
(SOFT [Link])
Los par ámetr os TABLA_PO S ( array de 32 posic iones ) y
TIEMPO_OUTPUT pueden guardarse en un fichero en memoria
flash. Así, en el arranque del regulador pueden tomar los valores de
dicho fichero.

12
! ! ! Programación en lenguaje MC

Ahora bien, INDICE, CONTADOR y TEMP_AUX son variables cuyo


valor no es preciso que se recupere en el arranque, por lo tanto no
es de interés su almacenamiento permanente y partirán con valor
nulo en la inicialización.

Para poder almacenar el valor de los parámetros en memoria flash


se introduce un comando denominado LC1 cuya función es generar
un fichero con los nombres y valores de las variables de usuario
definidas como parámetros. El fichero se denomina [Link] y tras la
ejecución del comando LC1 puede leerse (línea serie) y editarse con
el fin de modificar sus valores si así se requiere. 8.

PROGRAMACIÓN EN LENGUAJE MC
Sentencia de declaración de variables
Así, si las tres primeras posiciones del array TABLA_POS tienen los
valores 40000, 20000 y 60000, respectivamente y
TIEMPO_OUTPUT tiene el valor 5000000, el formato de dicho fichero
tras ejecutar el comando LC1 tendría para este ejemplo el siguiente
aspecto:
TABLA_POS [16] 40000 20000 60000 0 0 0 0 0 0 0 0 0 0 0 0 0 #
TIEMPO_OUTPUT 5000000

Pueden apreciarse tanto parámetros simples como arrays de


pará[Link] nombre de cada array aparecerá al principio de línea
seguido de su dimensión entre corchetes y a continuación sus valores
(limitados a 64 caracteres por línea) separados, sus valores, por
espacios en blanco y terminando la tira de valores con el carácter #.
El nombre de cada parámetro simple aparecerá al comienzo de línea
y tras un espacio en blanco el valor del mismo.

Para realizar modificaciones en los valores de los parámetros se


consideran dos opciones:
1. Modificación directa desde la ventana WATCH del programa
WinDDSSetup (escritura).
2. Modificación desde dispositivo tipo pantalla VT de ESA, pistola,..

Tras la modificación, si se desea que en posteriores arranques se


conserven los nuevos valores es necesario grabarlos con el comando
LC1.

Por otro lado, se puede editar el fichero [Link] que se genera al


grabar dichos parámetros y modificar en él los valores deseados. Con
posterioridad este fichero se carga en el regulador a través de la línea
serie.

Existe la posibilidad de cambiar el nombre de este fichero


manteniendo, eso sí, la misma extensión; tomando los nuevos valores
tras un reset en el regulador.

Es preciso tener sumo cuidado en la edición de un fichero con la


intención de modificarlo, muy especialmente con su sintaxis. Si no se
respeta, extrictamente hablando, es muy posible que el regulador no
sea capaz de interpretarlo correctamente durante la inicialización de
los parámetros, pudiendo quedar éstos mal inicializados. Se DDS - MC
recomienda, por tanto, la que se definió como primera opción para
modificar parámetros en lugar de editar el propio fichero.

(SOFT [Link])

13
! ! ! Programación en lenguaje MC

Sentencias de definición de módulos

Las sentencias que se describen a continuación sirven para definir el


inicio y final de los módulos de ejecución.

PROGRAM - END

Establecen el inicio y el final del módulo que define el modo


automático. Este módulo es el punto de arranque de la ejecución del
8. programa, pero no tiene que ser necesariamente el primero que
aparece en el código.
PROGRAMACIÓN EN LENGUAJE MC
Sentencias de definición de módulos

El formato de utilización es el siguiente:


PROGRAM
instrucción 1
instrucción 2
....................
END

JOG - END

Establecen el inicio y el final del módulo que define el modo manual.


Este módulo no tiene porque ser necesariamente el primero que
aparece en el código

El formato de utilización es el siguiente:


JOG
instrucción 1
instrucción 2
...................
END

Subrutina

Una subrutina es una porción del código identificada por un nombre.


Puede ser llamada para su ejecución desde cualquier posición del
programa mediante la instrucción CALL.

SUB - ENDSUB

Permiten definir como subrutina el conjunto de instrucciones que se


40 encuentran entre ambas. El formato es el siguiente:
SUB nombre
instrucción 1
instrucción 2
..................
DDS - MC
ENDSUB

De esta forma el conjunto de código especificado entre las sentencias


SUB y ENDSUB queda agrupado en una subrutina que se identifica
por el nombre dado.
(SOFT [Link])
El nombre de la subrutina puede estar formado por hasta treinta y dos
caracteres (letras mayúsculas, cifras y el "guión bajo (_)" ). Deberá
empezar siempre por una letra o un "guión bajo (_)". .

14
! ! ! Programación en lenguaje MC

No se permite identificar a dos subrutinas con el mismo nombre.

¡ La sentencia ENDSUB delimita el final de la subrutina. Sirve


además como comando de retorno para que la ejecución del
programa continúe en la instrucción siguiente a la que realizó
la llamada (CALL) !

Sentencias de asignación
8.
Se emplean para asignar un valor a las variables. Su sintaxis es:

PROGRAMACIÓN EN LENGUAJE MC
Sentencias de asignación
destino = <expresión>

El destino debe ser una variable declarada por el usuario, o una


variable del regulador de lectura y escritura. El valor dado a la variable
puede ser una constante, o el resultado de una operación aritmética
o binaria.

Ejemplo.

VAR1 = VAR2 * 2 + (VAR3 - 1) / 3

esta sentencia asigna a la variable VAR1 el resultado de la expresión


aritmética dada.

No se permite la asignación del resultado de una expresión relacional


a una variable.

Sentencias de control de flujo

Las sentencias IF, WHILE, FOR, evalúan los valores de las variables
del programa. Mediante esta evaluación, condicionan el flujo de la
ejecución del programa.

¿Cómo se evalúan las condiciones?

Habitualmente la evaluación de las variables se realiza mediante


operadores relacionales y lógicos:
EQ, NE, GT, ... OR, AND, ...

En el caso de que la condición sea una expresión aritmética o lógica,


se dará por CIERTA cuando el resultado de la misma sea DISTINTO
DE CERO, y falsa en el caso contrario.

Ejemplo.

(KT+T0) será cierta si la operación aritmética KT+T0 ≠0


(P3 AND P4) será cierta si la operación lógica resulta "1". DDS - MC
(ADD) será cierta si el valor de ADD ≠0

(SOFT [Link])

15
! ! ! Programación en lenguaje MC

IF - ENDIF

IF Cnd
No Instruction1
Cnd ? Instruction2
Yes ENDIF

Instruction1
Instruction2

8.
PROGRAMACIÓN EN LENGUAJE MC
Sentencias de control de flujo

fig. 8 - 3

Sentencias de control de flujo. IF - ENDIF.

IF - ELSE - ENDIF

IF Cnd
No Instruction1
Cnd ? ELSE
Yes Instruction2
ENDIF
Instruction1 Instruction2

fig. 8 - 4

Sentencias de control de flujo. IF - ELSE - ENDIF.

iF - ELSIF - ENDIF

IF Cnd1
No No Instruction1
Cnd1 ? Cnd2 ? ELSEIF Cnd2
Yes Yes Instruction2
ENDIF
Instruction1 Instruction2

fig. 8 - 5

Sentencias de control de flujo. IF - ELSIF - ENDIF.


40 Este formato de evaluación encadenada de condiciones permite un
máximo de 8 niveles de anidamiento.

WHILE

DDS - MC
WHILE Cnd
Instruction1
Yes Instruction1 Instruction2
Cnd ? ENDWHILE
Instruction2
No
(SOFT [Link])

fig. 8 - 6

Sentencias de control de flujo. WHILE.

16
! ! ! Programación en lenguaje MC

FOR

FOR M = A,B,C
A M Instruction1
Instruction2
ENDFOR
No
M<B ?

M+C M Yes 8.
Instruction1

PROGRAMACIÓN EN LENGUAJE MC
Sentencias de control de flujo
Instruction2

fig. 8 - 7

Sentencias de control de flujo. FOR.

Ejemplo. (dos programas idénticos)

FOR INDEX = 1, 5, 1 MOVE P=1 V=0.1


VAR1 = INDEX / 10 MOVE P=2 V=0.2
MOVE P=INDEX V=VAR1 MOVE P=3 V=0.3
ENDFOR MOVE P=4 V=0.4
MOVE P=5 V=0.5

GOTO

Provoca un salto incondicional dentro del programa.


El formato para su utilización es el siguiente:
GOTO ETIQUETA
En este tipo de salto no hay retorno a la posición de llamada.

¡ IMPORTANTE ! ¡ Tanto la sentencia de salto GOTO como la


ETIQUETA a la que hace referencia deben encontrarse dentro
del mismo módulo o subrutina, es decir, no se permiten saltos
fuera del propio módulo o subrutina. !

Ejemplo.

PROGRAM
TOP:
MOVE D=300 L=WAIT_IN_POS
IF (POS_FEEDBACK1 LE 20000)
GOTO TOP
ENDIF
END DDS - MC

(SOFT [Link])

17
! ! ! Programación en lenguaje MC

CALL

Esta sentencia realiza una llamada o salto a subrutina, con retorno


a la posición de llamada. Esta instrucción admite dos formatos
diferentes:

CALL subrutina
Con esta llamada se produce un salto a la subrutina indicada.
Una vez finalizada su ejecución se retorna a la instrucción de
8. código siguiente al de la línea de llamada.
PROGRAMACIÓN EN LENGUAJE MC
Sentencias de espera

CALL variable subrutina1, subrutina2, ..., subrutinaN


Este formato permite la llamada a distintas subrutinas, cuyos
nombres se indican separados por comas, “,”, en función del valor
de la variable dada. Ver ejemplo inferior.
Pero cuidado, si el valor de la variable está fuera del rango [1..N],
el flujo de programa pasa a la instrucción siguiente sin llamar a
ninguna de las subrutinas.

Ademas, dentro de una subrutina puede llamarse también a otra


subrutina, y dentro de ésta a una tercera, ..., permitiéndose un
máximo de 8 niveles de anidamiento de llamadas.

Ejemplo.

PROGRAM
----- 1 2
K76 ?
-----
CALL K76 _SBA, _SBB Any Other
----- MOVE
END MOVE P=2000 L ...
P=1000 L ...

SUB _SBB
MOVE P=2000 L=WAIT_IN_POS
ENDSUB
SUB _SBA
MOVE P=1000 L=WAIT_IN_POS
ENDSUB

40 Sentencias de espera

WAIT
Detiene la ejecución del código hasta que se cumpla una condición.
Tiene el siguiente formato:
DDS - MC WAIT <condición>

Cuando se cumpla la condición pasa a la siguiente instrucción.

La condición se evalúa de igual forma que en el caso de las sentencias


para el control del flujo de programa.
(SOFT [Link])

18
! ! ! Programación en lenguaje MC

DWELL
Se queda esperando a que transcurra un tiempo determinado.

Su formato es el siguiente:
DWELL <expresión>

Donde <expresión> puede ser una constante numérica, una variable


o una expresión aritmética, e indica cual es ese tiempo en
milisegundos.

La instrucción DWELL no se ejecuta de forma adelantada. 8.

PROGRAMACIÓN EN LENGUAJE MC
Sentencias de movimiento
Si DWELL está precedida por una instrucción de movimiento, el
tiempo de espera comenzará cuando finalice esa instrucción anterior.

Una instrucción tal que DWELL 0 serviría para detener la ejecución


adelantada en ese punto sin crear un tiempo de espera.

Ejemplo.

MOVE P =1000 V=50 L =WAIT_IN_POS


DWELL 1000
MOVE P =1500 V= 40 L =NULL

Sentencias de movimiento

En el modo de operación de interpolación interna se enlazan bloques


de movimiento sencillos para generar el perfil de movimiento
deseado.

Las sentencias relacionadas con el movimiento de interpolación


interno son las siguientes.

HOME
Inicia el proceso automático de búsqueda de cero. Una vez
encontrado el "Punto de referencia" ( ), establece el punto de "Cero
Máquina" ( ) como origen de coordenadas para los movimientos
de tipo absoluto ( MOVE P = ... ).

Su formato es, simplemente:


HOME

Antes de cualquier instrucción del tipo MOVE P =... es imprescindible


ejecutar HOME.

Proceso automático de búsqueda de cero


0 Es el punto aleatorio de encendido de la máquina. La captación
de posición S51 PositionFeedback1 toma inicialmente ese punto
como origen de coordenadas.
DDS - MC
---- (bH) = before Homing = antes de la ejecución de HOME ----

---- (aH) = after Homing = después de la ejecución de HOME ----

Cuando se ejecuta la instrucción HOME comienza un movimiento (SOFT [Link])


automático para la búsqueda del Punto de referencia, con dos
posibles comportamientos:
1 Con el home-switch liberado S400=0. Línea continua.
2 Con el home-switch pulsado S400=1. Línea discontinua.

19
! ! ! Programación en lenguaje MC

Los parámetros [S41] HomingVelocityFast y [F1300] Homing Ve-


locitySlow determinan las velocidades de búsqueda de cero en cada
fase del proceso.

S400

I0's

8.
Speed

1 0 2
Position
PROGRAMACIÓN EN LENGUAJE MC
Sentencias de movimiento

S51 (bH)
F1300 S41
S51 (aH)

S175 S173 S150

S52

fig. 8 - 8

Proceso automático de búsqueda de cero.

Es el punto con la señal de I0 buscada. Al paso por este punto,


que siempre se da a la velocidad baja F1300, el sistema registra
el valor de la captación de posición en el parámetro [S173]
MarkerPositionA.

Se activa [S408] ReferenceMarkerPulseRegistered.

Se detiene el motor.

Es el punto de "cero máquina" para las referencias absolutas.


Para el establecimiento del nuevo [S51] se determina [S175]
DisplacementParameter mediante la ecuación:
S175 = S52 - S150 - S173

Se activa [S403] PositionFeedbackStatus.

Se da a la consigna interna de posición [S47] PositionCommand el


valor de la nueva captación de posición S51.

Finalmente, el sistema de Motion Control queda listo para ejecutar los


movimientos de tipo absoluto.

¡ ATENCIÓN ! ¡ Búsquedas de cero sucesivas pueden dejar el


motor en posiciones finales diferentes. Esto es debido a que
las frenadas no han sido iguales, pero el "cero" ha sido
40 buscado correctamente. !

La instrucción HOME no se ejecuta de forma adelantada.

Si HOME está precedida por una instrucción de movimiento,


comenzará la búsqueda de cero cuando finalice esa instrucción
DDS - MC anterior.

(SOFT [Link])

20
! ! ! Programación en lenguaje MC

Cambio de ubicación del punto .


Una sustitución del captador, puede modificar la ubicación del Punto
con la señal de I0 buscada. Para conservar la misma ubicación del
Cero Máquina, ajustar el parámetro de offset S150. Determinar ese
ajuste en base a alguna cota conocida en el sistema de referencia
anterior.

¡ NOTA: Cuando la captación de posición se realiza a través de


una captación directa (conector X3 del regulador) algunos de
los parámetros citados anteriormente son sustituidos por sus
equivalentes ! 8.

PROGRAMACIÓN EN LENGUAJE MC
Sentencias de movimiento
! Atendiendo a la captación motor:
[S52] ReferenceDistance1
[S150] ReferenceOffset1
[S175] DisplacementParameter1

! Atendiendo a la captación directa:


[S54] ReferenceDistance2
[S151] ReferenceOffset2
[S176] DisplacementParameter2

Configuración de la búsqueda de cero


La conexión del home-switch al software del regulador se realiza a
través de sus entradas digitales.
Con el autómata, mediante la instrucción I1 = B0S400 en el
programa de PLC, y la conexión del home-switch a la entrada
digital asociada a ese recurso I1.
Sin autómata, mediante la asignación de la variable PV200 a
alguno de los parámetros IP10 ... IP13 (en la nomenclatura
Sercos, S400 y F901 ... F904). Y la conexión del home-switch a
la entrada digital asociada al parámetro elegido.

Dirección de búsqueda, y lógica del home-switch.


El parámetro [S147] establece con sus bits 1º y 2º cuál es la
dirección de búsqueda considerada positiva, y si la activación del
home-switch significa que cierra su contacto eléctrico, o lo abre.

B1S147 = 0 B0S147 = 0
B0S147 = 0 B1S147 = 1

S400 S400
I0s I0s

Pos Pos

B0S147 = 1 B1S147 = 1
B0S147 = 0 B0S147 = 1

S400 S400
DDS - MC
I0s I0s

Pos Pos
(SOFT [Link])

fig. 8 - 9

Configuración de la búsqueda de cero.

21
! ! ! Programación en lenguaje MC

ZERO
La ejecución de esta instrucción hace que la posición actual del
accionamiento sea a par tir de entonces el nuevo origen de
coordenadas. Los movimientos de tipo absoluto se referirán a ese
punto.

Carga el parámetro [F2326] ProgramPositionOffset con el valor de


la posición actual.

8. Su formato es, simplemente:


ZERO
PROGRAMACIÓN EN LENGUAJE MC
Sentencias de movimiento

La instrucción ZERO no se ejecuta de forma adelantada.

Si ZERO está precedida por una instrucción de movimiento, la


posición actual del accionamiento se establece como nuevo origen de
coordenadas sólo cuando finalice esa instrucción anterior.

Ejemplo de ZERO.

PROGRAM
Pos
HOME
MOVE P=0 L=NULL
MOVE P=100 L=NULL
ZERO
CALL _SIGMA
MOVE P=100 L=NULL
ZERO
CALL _SIGMA
END 100 mm 100 mm

fig. 8 - 10

Presencia de la Instrucción ZERO.

MOVE
Instrucción para el posicionamiento o movimiento de interpolación
interna.

A la instrucción MOVE la llamaremos bloque de posicionamiento ya


que en realidad supone un conjunto de comandos a posiciones de
destino sucesivas.
Hay dos tipos de movimiento:

40 ! Absoluto MOVE P = ....


! Relativo MOVE D = ....
Sintaxis:
P = <expresión1>
MOVE V = <expresión3> L = <option>
DDS - MC D = <expresión2>

P = <expresión1> movimiento de tipo absoluto hasta la


posición indicada por la expresión1.
D = <expresión2> movimiento de tipo relativo desde la
(SOFT [Link]) posición actual y a lo largo de unadistan-
cia indicada por la expresión2.

Ambos parámetros son opcionales y autoexcluyentes.

22
! ! ! Programación en lenguaje MC

Si no se establece ningún parámetro P o D, el bloque de


posicionamiento se interpreta como un movimiento absoluto hasta el
límite positivo de posición [S49] PositivePositionLimit.

Las unidades son mm en un movimiento lineal, y grados en un


movimiento giratorio. La precisión es de décima de micra en el primer
caso y de décima de miligrado en el segundo.
Véase capítulo 7.

V = <expresión3> establece la velocidad de posicionamien-


to. 8.

PROGRAMACIÓN EN LENGUAJE MC
Sentencias de movimiento
Este parámetro "V" es opcional. Si no se especifica en la instrucción,
la variable [F2312] PositioningVelocityDefault establece la
velocidad de posicionamiento por defecto.

Las unidades para este valor son m/min, con una precisión de décima
de mm/min. Véase capítulo 7.

L = <option> establece el tipo de enlace dinámico con


el siguiente bloque de posicionamiento.

Las opciones que admite este parámetro son:


PRESENT alcanza la posición de destino a la velocidad dada
en este mismo bloque de posicionamiento.
NEXT alcanza la posición de destino a la velocidad del
siguiente bloque de posicionamiento.
NULL alcanza la posición de destino a velocidad nula.
WAIT_IN_POS alcanza la posición de destino a velocidad nula.
Comprueba que ha alcanzado la posición de
destino.

El bloque MOVE ... con la opción de enlace L=WAIT_IN_POS impide


la ejecución avanzada del siguiente bloque de posicionamiento.
Espera al final de su ejecución [S342] TargetPositionAttained, y a
que el movimiento alcance su posición de destino [S336] InPosition
durante, al menos, el tiempo indicado por el parámetro [F2325]
InPositionTime.
Sólo entonces pasa al siguiente bloque.

Este parámetro "L" es opcional. Si no se especifica en la instrucción,


la variable [F2310] ProcessBlockMode determina el tipo de enlace
dinámico. El valor por defecto de [F2310] es: NULL.

¡ IMPORTANTE! ¡ El movimiento de motor tiene sus limitacio-


nes dinámicas. Está limitado en sus posibilidades de acelera-
ción y [Link] determinados casos no será posible
satisfacer la velocidad solicitada en la instrucción MOVE, o su
modo de enlace dinámico con el movimiento siguiente !

Así, en la ejecución de la instrucción MOVE existe un orden de


prioridades:
DDS - MC
! En primer lugar, su objetivo será alcanzar la cota solicitada en
la instrucción.
! Después, debe realizar el enlace dinámico con el siguiente
MOVE en el modo requerido. (SOFT [Link])

! Y finalmente, moverse durante el mayor tiempo posible a la


velocidad solicitada.

23
! ! ! Programación en lenguaje MC

Ejemplos.
1. Ejemplo genérico (sin conflictos)

ZERO
MOVE P=50 V=VEL L=PRESENT
MOVE P=100 V=VEL/2 L=NEXT
MOVE P=150 V=VEL/3 L=NULL

8. Speed

VEL
50 mm 50 mm 50 mm
PROGRAMACIÓN EN LENGUAJE MC
Sentencias de movimiento

VEL/2
VEL/3

Pos

2. Primera parte; ante el conflicto velocidad - enlace el sistema


atiende al modo de enlace dinámico aunque la velocidad solicitada
no se alcanza en ningún [Link] parte , ante el
conflicto posición - enlace el sistema no permite el
sobrepasamiento de la cota destino.

ZERO
MOVE P=40 V=VEL L=NEXT
MOVE P=150 V=VEL/3 L=PRESENT
MOVE P=40 V=VEL/3 L=NULL

Speed
40 mm 60 mm 50 mm

VEL

VEL/3

Pos

3. Movimiento cíclico con búsqueda de cero previa.

PROGRAM
HOME
WHILE(1)
MOVE P=0 L=NULL
MOVE P=100 V=VEL1 L=NEXT
MOVE D=45 V=VEL2 L=PRESENT
ENDWHILE
END

40 Speed 100 mm 45 mm

VEL1
F1300
VEL2

S41 Pos
F1312
DDS - MC

(SOFT [Link])

24
! ! ! Programación en lenguaje MC

Además de los parámetros descritos, existen otros que afectan de


forma global a todas las instrucciones de posicionamiento. Son los
siguentes:

S108 FeedrateOverride. Factor multiplicador aplicado a la


velocidad. Su valor puede estar entre 0% y el fijado por
el parámetro [F2311] FeedrateOverrideLimit. Su valor
por defecto es 100%. En cualquier caso la velocidad
quedará limitada al valor dado por [S91] VelocityLimit.
S193 PositioningJerk Límite de choque (jerk) aplicado a todas
la instrucciones de posicionamiento.
8.

PROGRAMACIÓN EN LENGUAJE MC
Sentencias de movimiento
S260 PositioningAcceleration. Limite de aceleración aplicado
a todas la instrucciones de posicionamiento.

Por otro lado, con cada instrucción de posicionamiento se actualizan


los valores de las siguientes variables y marcas:

S258 Target Position, variable que se actualiza con cada


bloque de posicionamiento con el valor de la posición
de [Link] variable permanece fija durante todo el
bloque de posicionamiento ya que no marca la posición
en cada instante.
S259 Positioning Velocity, variable que se actualiza con cada
bloque de posicionamiento con el valor de la velocidad
máxima de posicionamiento ( en valor absoluto). Esta
variable permanece fija durante todo el bloque de
posicionamiento ya que no marca la velocidad en cada
instante.
S315 PositioningVelocityGreaterThanLimit, marca que se
actualiza con cada bloque de posicionamiento,
activándose si la velocidad de posicionamiento
especificada para la instrucción en curso es superior al
límite establecido en el parámetro [S91] VelocityLimit.
S323 TargetPositionOutsideOfTravelRange marca que se
activa si la posición final especificada para la instruc-
ción en curso está fuera de los límites de posición da-
dos por los parámetros [S49] PositivePositionLimit, o
S50 NegativePositionLimit.
S342 TargetPositionAttained marca que indica que el inter-
polador ha alcanzado la posición final; es decir, se activa
cuando la consigna de posición, [S47] PositionCom-
mand es igual a [S258] TargetPosition.
S343 InterpolatorHalted marca que se activa si la posición
final no ha sido alcanzada y la consigna de posición no
varía.
F2335 BlockTravelDistance, variable que devuelve el valor de
la distancia a recorrer del bloque de posicionamiento
relativo actual.
F2336 BlochCoveredDistance, variable que indica en un DDS - MC
instante dado la distancia recorrida en el bloque de
posicionamiento [Link] valor es actualizado por el
interpolador en cada ciclo de interpolación.

(SOFT [Link])

25
! ! ! Programación en lenguaje MC

Sentencias de movimiento de sincronización

Los diferentes movimientos de sincronización podrán ser:


! Sincronización en velocidad
! Sincronización en fase o posición

Pa r a o b t e n e r i n fo r m a c i ó n a c e r c a d e l a s s e n t e n c i a s
correspondientes, véase el capítulo 10: Sincronización
8. ! Leva electrónica
PROGRAMACIÓN EN LENGUAJE MC
Sentencias de movimiento de sincronización

Pa r a o b t e n e r i n fo r m a c i ó n a c e r c a d e l a s s e n t e n c i a s
correspondientes, véase el capítulo 14: Leva electrónica

Señales START, STOP, RESET y ABORT

La puesta en marcha, parada y cancelación de cualquier programa


MC en ejecución se controla desde el PLC a través de las variables
del Regulador:

Señal de START: LV15 [F02315] KernelStartSignal


Señal de STOP: LV16 [F02316] KernelStopSignal
Señal de RESET: LV17 [F02317] KernelResetSignal
Señal de ABORT: LV18 [F02318] KernelAbortSignal

El efecto de estas señales es el mismo en los dos modos de


funcionamiento, automático y manual.

START

La señal START pone en marcha la ejecución del programa MC.

Para la ejecución del programa MC, es imprescindible la activación


de esta señal, tanto en modo automático como manual.

El programa comienza su ejecución a partir del punto en el que lo


interrumpió la señal de STOP. Tras el encendido de la máquina o tras
un RESET, el programa comenzará en su primera instrucción.

40
STOP

La señal STOP suspende la ejecución del programa, y detiene el


motor.

DDS - MC Si se está ejecutando una instrucción de movimiento, detiene el motor


y suspende momentáneamente la ejecución de esa instrucción.

(SOFT [Link])

26
! ! ! Programación en lenguaje MC

Para restablecer la ejecución es necesario activar la señal START.


Entonces, retoma la ejecución del bloque de movimiento desde el
punto en el que lo dejó.

Speed
150 mm

Stop Start
VEL

Pos
8.

PROGRAMACIÓN EN LENGUAJE MC
RESET
RESET

La señal RESET suspende la ejecución del programa, detiene el


motor, y vuelve al principio del programa MC. El sistema se queda a
la espera de la señal START.

.....
MOVE D=50 V=VEL/2 L=PRESENT
MOVE P=150 V=VEL L=NEXT
.....

150 mm
Speed
50 mm
VEL
Reset Start
VEL/2

Pos
50 mm

ABORT

La señal ABORT da por finalizada la ejecución de la instrucción de


movimiento en curso, pero la ejecución del programa continúa.

No requiere de una señal posterior de START.

En la continuación, se mantienen las condiciones de velocidad y


enlace dinámico con la siguiente instrucción de movimiento.

150 mm
Speed
80 mm
VEL
Abort
VEL/2
DDS - MC
Pos

(SOFT [Link])

27
! ! ! Programación en lenguaje MC

Funciones de habilitación

Las funciones SPEED_ENABLE y DRIVE_ENABLE controlan la


habilitación de la consigna de velocidad interna y la del lazo de
corriente. Estas son funciones básicas del Regulador DDS que se
documentan en el manual general de regulación.

El estado del regulador en cuanto a estas habilitaciones, queda

8. registrado en los bits 14 y 15 de la var iable DV31 [S135]


DriveStatusWord.
PROGRAMACIÓN EN LENGUAJE MC
Funciones de habilitación

Sólo cuando esos dos bits tienen valor "1", el sistema de Motion
control puede generar la consigna y mover el motor.

¡ La desactivación de cualquiera de esos dos bits debe


generar una señal de STOP sobre el programa MC !

De esta forma al recuperar el estado normal de funcionamiento, el


programa MC continuará su ejecución desde el punto en el que se
detuvo.

En los anexos a este capítulo se sugiere un programa de plc que


genera esa señal de STOP.

40

DDS - MC

(SOFT [Link])

28
! ! ! Programación en lenguaje MC

Resumen de comandos de programación de MC

Definición de recursos DEF, #INCLUDE


Directivas Declaración PAR, DIM
Definición de módulos PROGRAM, JOG, END, SUB, ENDSUB

8.

PROGRAMACIÓN EN LENGUAJE MC
Resumen de comandos de programación de MC
Ejecución condicional IF, ELSE, ELSEIF, ENDIF
Ejecución cíclica condicional WHILE, ENDWHILE
Control de flujo Ejecución cíclica FOR, ENDFOR
Salto GOTO
Llamada CALL

Condición WAIT
Espera
Tiempo DWELL

P NULL, NEXT
Interpolación interna HOME, ZERO, MOVE V L L = PRESENT
Movimiento D WAIT_IN_POS
Sincronización FOLLOW ON/OFF, CAM SELECT /ON/OFF

Asignación =
Suma +
Resta -
Aritméticos Multiplicación *
División /
Módulo MOD

Función NO BNOT
Función O BOR
Binarios
Función Y BAND
Función O exclusiva BXOR

Operadores
Igual EQ
Distinto NE
Mayor GT
Relacionales
Mayor o igual GE
Menor LT
Menor o igual LE
DDS - MC
Función NO NOT
Función O OR
Lógicos
Función Y AND
Función O exclusiva XOR (SOFT [Link])

Paréntesis ()

29
! ! ! Programación en lenguaje MC

ANEXO 1

Listado de errores y avisos de compilación


A continuación se muestra un listado de los errores y avisos que el
compilador es capaz de detectar.

Errores:

8. E000:
E001:
Un nombre no puede empezar por un dígito.
Nombre demasiado largo.
E002: Variable SERCOS fuera de rango.
PROGRAMACIÓN EN LENGUAJE MC
ANEXO 1

E003: Variable FAGOR fuera de rango.


E004: Marca del PLC fuera de rango.
E005: Registro del PLC fuera de rango.
E006: Contador del PLC fuera de rango.
E007: Número fuera de rango.
E008: El identificador numérico excede le tamaño permitido.

E010: Fallo al reconocer número decimal.


E011: Fallo al reconocer número hexadecimal.
E012: Fallo al reconocer número fraccionario.
E013: El número introducido produce desbordamiento
interno.
E020: Falta módulo PROGRAM.
E021: Falta módulo JOG.
E022: Subrutina indefinida.

E030: Include incorrecto.


E031: La extensión del fichero debe ser .INC o .inc.
E032: No se puede abrir el fichero.
E033: No se puede abrir un fichero de cabecera dentro de
otro.
E098: Carácter no válido.
E099: Error fatal. Línea demasiado larga.

E100: Recurso antes de símbolo.


E101: Define incorrectamente construido.
E102: Símbolo de usuario redefinido.
E103: Hay demasiados saltos en el programa (JMP, CAL).
E104: Demasiados parámetros y/o variables del Regulador.
E105: Un fichero de cabecera sólo puede contener defines.

40 E110: Se esperaba comienzo de módulo.


E111: No puede haber mas de un módulo PROGRAM.
E112: No puede haber más de un módulo JOG.
E113: Subrutina redefinida.
E114: Demasiadas subrutinas.
DDS - MC
E120: Etiqueta redefinida.
E121: Demasiadas etiquetas.
E122: Etiqueta indefinida.

(SOFT [Link]) E130: Variable o array redefinido.


E131: Demasiadas variables y/o arrays definidos.
E132: Elemento de array no definido.
E133: Elemento de array fuera de rango.
E134: Falta especificar la dimensión del array.

30
! ! ! Programación en lenguaje MC

E135: Variable o array incorrectamente especificado.


E136: Utilización de una variable no definida.
E137: Demasiadas variables del regulador definidas.
E138: Demasiadas Marcas del PLC definidas.
E139: Demasiados Registros del PLC definidos.
E140: Demasiados Contadores del PLC definidos.

E150: Falta paréntesis de cierre.


E151: Falta paréntesis de apertura.
E152: Paréntesis desparejado. 8.

PROGRAMACIÓN EN LENGUAJE MC
ANEXO 1
E160: División por cero.
E161: Desbordamiento en la expresión.
E162: Falta etiqueta de salto tras GOTO.
E163: Falta nombre de subrutina tras CALL.
E164: Sentencia de asignación incorrecta.
E165: Operador de comparación incorrecto: =.
E166: Falta la condición del WAIT.
E167: Falta el tiempo de espera.
E168: Demasiados ELSEIF anidados.
E169: Fallo al compilar la sentencia.

E170: Identificador de leva incorrecto.


E171: Falta identificador de leva.

E200: Error sintáctico.


E201: Demasiados errores.
E202: Demasiadas sentencias.

Listado de warnings

W000: Subrutina definida pero no llamada.


W001: Etiqueta definida pero no llamada.
W002: Existe más de un símbolo para el recurso o número.

DDS - MC

(SOFT [Link])

31
! ! ! Programación en lenguaje MC

ANEXO 2

Listado de errores y avisos de inicialización y ejecución


Los errores de inicialización se indican en el display del Regulador
agrupados en:
E900: Error de inicialización del programa [Link] variable
[F2327]; KernelInitError (LV27) lo identifica.

8. Errores y avisos que la inicialización del programa MC puede


generar: La variable F2327 adopta el valor:
PROGRAMACIÓN EN LENGUAJE MC
ANEXO 2

1. Aplicación AUTOMATICA no cargada en memoria.


2. Fichero de aplicación MCC no válido.
3. Fichero de aplicación MCC demasiado grande.
4. Uso de variable del regulador inexistente.
5. Demasiadas variables del regulador.
6. Recurso del PLC no accesible.
7. Demasiadas MARCAS del PLC.
8. Demasiados REGISTROS del PLC.
9. Demasiados CONTADORES del PLC.
10. Error de checksum del código.
11. Error interno al inicializar la tabla del regulador.
12. Error interno al inicializar índices de variables.
13. Error de parámetros de sincronización

A continuación se muestra un listado de los errores y avisos que la


ejecución del programa MC puede generar.

Errores:

E901 División por cero.


E902 Tamaño de array excedido.
E903 Límite de anidamiento de llamadas excedido.
E904 Error al escribir variable.
E905 Error interno al escribir variable.
E906 Error interno al leer variable.
E907 Desbordamiento al evaluar expresión.
E908 Desbordamiento de pila.
E909 Underflow de pila.

40 E910
E911
Desbordamiento al calcular posición.
Posicionamiento absoluto sin referenciar.
E912 Intento de escritura de un contador del PLC.
E913 Pcode desconocido.
E914 TargetPosition excede ModuloValue.
E915 El incremento de posición excede la mitad de
DDS - MC ModuloValue.
E916 Error durante la ejecución del comando HOME.
E917 Sobrepasamiento del límite de posición.
E918 Sobrepasamiento del límite de velocidad.
E919 Timeout de sincronización.
(SOFT [Link])
E920 Error en la inicialización de levas.
E921 Leva no preparada.
E922 MOVE con aceleración nula.

32
! ! ! Programación en lenguaje MC

ANEXO 3

Ficheros de cabecera
"[Link]"
Contiene defines para las variables Sercos y Fagor más relevantes. También incluye
defines para algunas constantes.
; [Link]
;
; Defines de variables con identificadores SERCOS
;
8.

PROGRAMACIÓN EN LENGUAJE MC
ANEXO 3
DEF POS_COMMAND S00047 ;PositionCommand
DEF LIM_POS S00049 ;PositivePositionLimit
DEF LIM_NEG S00050 ;NegativePositionLimit
DEF POS_FEEDBACK1 S00051 ;PositionFeedback1
DEF POS_FEEDBACK2 S00053 ;PositionFeedback2
DEF MODULO S00103 ;ModuleValue
DEF FEEDRATE S00108 ;FeedrateOverride
DEF JERK S00193 ;PositioningJerk
DEF TARGET_POS S00258 ;TargetPosition
DEF VELOCITY S00259 ;PositioningVelocity
DEF ACC S00260 ;PositioningAcceleration
;
; Defines de Marcas SERCOS
;
DEF VEL_GT_LIMIT S00315 ;PositioningVelocityGreaterThanLimit
DEF TARGET_GT_LIMIT S00323 ;TargetPositionOutsideOfTravelRange
DEF IN_POSITION S00336 ;InPosition
DEF POS_ATTAINED S00342 ;TargetPositionAttained
DEF INTERP_HALTED S00343 ;InterpolatorHalted
DEF POS_FEEDACK_ST S00403 ;PositionFeedbackStatus
DEF POS_COMM_ST S00404 ;PositionCommandStatus
;
; Defines de variables y marcas con identificadores de FAGOR
;
DEF LINK F02310 ; ProcessBlockMode
DEF LIM_FRO F02311 ; FeedrateOverrideLimit
DEF DF_SPEED F02312 ;PositioningVelocityDefault
DEF K_OPER_MODE F02313 ;KernelOperationMode
DEF K_AUTO_SUBMODE F02314 ; KernelAutoSubmode
DEF K_START_SIG F02315 ; KernelStartSignal
DEF K_STOP_SIG F02316 ; KernelStopSignal
DEF K_RESET_SIG F02317 ; KernelResetSignal
DEF K_ABORT_SIG F02318 ; KernelAbortSignal
DEF K_MAN_SUBMODE F02319 ; KernelManualSubmode
DEF JOG_POS F02320 ; JogPositiveSignal
DEF JOG_NEG F02321 ; JogNegativeSignal
DEF JOG_VEL F02322 ; JogVelocity
DEF JOG_INC_POS F02323 ; JogIncrementalPosition
DEF IN_POS_TIME F02325 ; InPositionTime
DEF PROG_OFFSET F02326 ; ProgramPositionOffset
DEF K_INIT_ERR F02327 ; # del error de inicialización DDS - MC
DEF K_EXEC_ERR F02328 ; # del error de ejecución
;
; Defines de constantes
;
DEF TRUE 1 (SOFT [Link])
DEF FALSE 0
DEF PI 3.1416

33
! ! ! Programación en lenguaje MC

ANEXO 4

Límites y valores máximos


Se establecen los siguientes valores máximos o límites por cada
programa de usuario:

Valores máximos por programa:

8. •

Número de defines
Memoria de usuario (variables y arrays)
1000
1000
• Número de sentencias 1000
PROGRAMACIÓN EN LENGUAJE MC
ANEXO 4

• Número de variables y parámetros del regulador 200


• Número de subrutinas 100
• Número de errores y avisos 100

Valor máximo por módulo o subrutina:


Número de etiquetas 1000

Valores máximos generales:


Longitud de una línea 512 caracteres
Número de caracteres por nombre de usuario 32
Nivel de anidamiento de sentencias IF 8

40

DDS - MC

(SOFT [Link])

34
! ! ! Programación en lenguaje MC

ANEXO 5

Módulo manual del programa de MC:


Módulo del programa MC para el funcionamiento en modo
manual sugerido por Fagor:
#INCLUDE «C:\Editor\MyFiles\MCFiles\[Link]»
; Modificar el path si es preciso
8.
JOG

PROGRAMACIÓN EN LENGUAJE MC
ANEXO 5
PROG_OFFSET = 0 ; Eliminar offset de posición programable
WHILE(1) ; Bucle infinito
WAIT(BNOTJOG_POS AND BNOTJOG_NEG)
; Esperar a que Jog+ y Jog- sean nulas
WAIT(JOG_POS OR JOG_NEG)
; Esperar a que se active alguna de las dos
IF(JOG_POS AND BNOTJOG_NEG)
; Si se activa Jog+ y no Jog-
IF(K_MAN_SUBMODE); Si es Jog incremental ...
MOVE D=JOG_INC_POS V=JOG_VEL L =NULL
ELSE ; Si es Jog continuo ...
MOVE P=(LIM_POS-1) V=JOG_VEL
ENDIF
ELSEIF(JOG_NEG AND BNOTJOG_POS)
; Si se activa Jog- y no Jog+
IF(K_MAN_SUBMODE); Si es Jog incremental ...
MOVE D=-JOG_INC_POS V=JOG_VEL L=NULL
ELSE ; Si es Jog continuo ...
MOVE P=(LIM_NEG+1) V=JOG_VEL
ENDIF
ENDIF
ENDWHILE
END

Nótese que en caso de accionamiento rotativo en formato módulo


se deshabilitarán los límites de posicionamiento, y en movimientos
lineales, para realizar un movimiento tipo absoluto deberá
comprobarse si está referenciado el cero máquina mediante la
activación de la marca ( S 403 = 1 ).
DDS - MC

(SOFT [Link])

35
! ! ! Programación en lenguaje MC

ANEXO 6

Programa "[Link]" (fracción):


Programa PLC sugerido por Fagor para la gestion de las funciones
de habilitación del Regulador (generación de la señal STOP):

8. #INCLUDE «[Link]»

DEF ENABLE1 B14S135 ;DV13 DriverStatusWord


PROGRAMACIÓN EN LENGUAJE MC
ANEXO 6

DEF ENABLE2 B15S135

DEF ENABLE_OK_BIT M10


;activa en la situación "TorqueOn" indicada por DV31 -S135-

DEF MEMORIA_START M9
; memorización de una señal de START anterior (el motor está en
; funcionamiento)

DEF NO_ENABLE M17 ;regulador no habilitado


DEF STOPGEN_IN_PROCS M18
;activa mientras se realiza el proceso de generación de STOP y hasta la
;rehabilitación del Regulador

DEF MARCA_TEMP M19

PRG

ENABLE1 AND ENABLE2 = ENABLE_OK_BIT

DFD ENABLE_OK_BIT AND MEMORIA_START


;genera señal de STOP eliminando cualquier otra posibilidad

= MOV 1 K_STOP_SIG 16= MOV 0 K_RESET_SIG 16


= MOV 0 K_START_SIG 16 = MOV 0 K_ABORT_SIG 16
= MOV 0 JOG_POS 16= MOV 0 JOG_NEG 16
= SET NO_ENABLE ; registra que el regulador está
; deshabilitado
= SET STOPGEN_IN_PROCS
= TRS 1 = TG1 1 50 ;resetea y lanza el temporizador 1

T1 = MARCA_TEMP ;fin de la temporización de la señal de STOP


DFD MARCA_TEMP = MOV 0 K_STOP_SIG 16

DFU ENABLE_OK_BIT = RES STOPGEN_IN_PROCS ;rehabilitación

40 NOT STOPGEN_IN_PROCS AND NOT MARCA_TEMP AND NO_ENABLE

; rehabilitado, temporización 1 concluida, y regulador deshabilitado


= MOV 1 K_START_SIG ;genera señal de START
= TRS 2 = TG1 2 50 ;resetea y lanza el temporizador 2
= SET STOPGEN_IN_PROCS

DDS - MC T2 = MARCA_TEMP
DFD MARCA_TEMP AND ENABLE_OK_BIT
; temporización 2 concluida, y regulador en "TorqueOn"
= MOV 0 K_START_SIG ; fin de la señal START
= RES NO_ENABLE ; registra que el regulador está
; habilitado.
(SOFT [Link])
END

36
! ! ! Programación en lenguaje MC

ANEXO 7

Programa "[Link]" (fracción):


Programa PLC sugerido por Fagor para la gestión de las señales
START, STOP, RESET y ABORT entre el programa de PLC y el
programa de MC:

;
#INCLUDE «[Link]» 8.

PROGRAMACIÓN EN LENGUAJE MC
ANEXO 7
DEF START I1 ;entradas digitales
DEF STOP I2
DEF RESET I3
DEF ABORT I4

DEF ENABLE_OK_BIT M10


;activa en la situación "TorqueOn" indicada por DV31 -S135-

DEF MEMORIA_START M9
;memorización de una señal de START anterior (el motor está en
;funcionamiento)

PRG

DFU START AND ENABLE_OK_BIT = MOV 1 K_START_SIG 16 = SET


MEMORIA_START
;con la señal START y el regulador en "TorqueOn", activa el START del
;programa
;MC y registra que el motor está en funcionamiento

DFD START = MOV 0 K_START_SIG 16


;con la caída de la señal START, desactiva el START del programa MC

;igualmente con la señal STOP


DFU STOP = MOV 1 K_STOP_SIG 16 = RES MEMORIA_START
DFD STOP = MOV 0 K_STOP_SIG 16

;igualmente con la señal RESET


DFU RESET = MOV 1 K_RESET_SIG 16 = RES MEMORIA_START
DFD RESET = MOV 0 K_RESET_SIG 16

;igualmente con la señal ABORT, el motor sigue en funcionamiento


DFU ABORT = MOV 1 K_ABORT_SIG 16
DFD ABORT = MOV 0 K_ABORT_SIG 16

END

DDS - MC

(SOFT [Link])

37
! ! ! Programación en lenguaje MC

ANEXO 8
Programa "[Link]" (fracción):
Programa PLC sugerido por Fagor para la gestión de las señales de
JOG entre el programa de PLC y el programa de MC:
;
#INCLUDE «[Link]»

8. DEF JOG_MAS
DEF JOG_MENOS
I5
I6
PROGRAMACIÓN EN LENGUAJE MC
ANEXO 8

DEF DOS_JOGS M14


;registra que previamente, las dos Jog han sido activadas
;simultáneamente

DEF MEMORIA_START M9
;memorización de una señal de START anterior (el motor está en
;funcionamiento)

DEF STOP_JOG M11


DEF MODO_JOG 1 ;Modo manual

PRG

CPS K_OPER_MODE NE MODO_JOG = RET


;fin de programa si el sistema no está en modo manual

JOG_MAS AND JOG_MENOS = NOT RES DOS_JOGS

;las dos entradas de Jog son activadas simultáneamente (conflicto)


JOG_MAS AND JOG_MENOS AND NOT DOS_JOGS
= MOV 0 JOG_POS 16;ningún comando de movimiento al MC
= MOV 0 JOG_NEG 16
= SET STOP_JOG ;hay que parar el motor
= SET DOS_JOGS ;por que las dos señales de Jog están activadas

DFU JOG_MAS AND NOT JOG_MENOS


;señal de Jog positivo activado
= MOV 1 JOG_POS 16;comando al MC
= SET MEMORIA_START;el motor está en funcionamiento

DFD JOG_MAS AND NOT JOG_MENOS


;señal de Jog positivo desactivado
= MOV 0 JOG_POS 16 ;comando al MC
= SET STOP_JOG ;hay que parar el motor

DFU JOG_MENOS AND NOT JOG_MAS ;señal de Jog negativo


= MOV 1 JOG_NEG 16
= SET MEMORIA_START

40 DFD JOG_MENOS AND NOT JOG_MAS


;señal de Jog negativo desactivado
= MOV 0 JOG_NEG 16
= SET STOP_JOG ;hay que parar el motor

DFU STOP_JOG ;hay que parar el motor


= MOV 1 K_ABORT_SIG 16
DDS - MC ; comando al MC (debe ser un ABORT, no STOP)
= TG1 3 50 ; lanza el temporizador 3
= RES MEMORIA_START ; el motor está parado

STOP_JOG AND NOT T3


;hay que parar el motor y ha acabado la temporización de la señal de
(SOFT [Link]) ABORT
= MOV 0 K_ABORT_SIG 16 ; comando al MC
= RES STOP_JOG ; el motor ha sido parado

END

38
! ! ! Programación en lenguaje MC

ANEXO 9

Programa "[Link]" (fracción):


Otros aspectos de la programación del PLC sugeridos por Fagor:

; como comunicar al programa de MC el estado del interruptor


; eléctrico "home-switch" para la ejecución de la búsqueda de I0.

DEF HOME_SWITCH I7
8.

PROGRAMACIÓN EN LENGUAJE MC
ANEXO 9
PRG

DFU HOME_SWITCH = MOV 1 S400 ; PV200 -S400- HomeSwitch


DFD HOME_SWITCH = MOV 0 S400

END

;inicialización de las señales empleadas en los programas anteriores

CY1

( ) = RES MEMORIA_START
( ) = RES NO_ENABLE
( ) = RES STOP_JOG = RES DOS_JOGS
( ) = SET STOPGEN_IN_PROCS

END

DDS - MC

(SOFT [Link])

39
! ! ! Programación en lenguaje MC

8.
PROGRAMACIÓN EN LENGUAJE MC

DDS - MC

(SOFT [Link])

40
EJEMPLOS DE PROGRAMACIÓN
9
Configuración hardware

En los ejemplos de programación que seguidamente se presentan el


regulador ha sido configurado con una tarjeta de entradas-salidas
analógicas (A1) en el slot SL1 y una tarjeta de entradas-salidas
digitales (16DI-8DO) en el slot SL2.

Drive Module (example)

SL2 SL1

1 1 I1
I17 I2
I18 I3
I19 I4
X11 I20
I21 X6 O1
I22
I23 O2
9 I24
O3
1
I25 O4
I26 13
I27
X12 I28 P2
I29
I30 P1
I31 A1
9 I32
16DI-8DO 1
1
O17
O18 X7
O19
X13 O20
O21
O22
O23
9 O24 11

fig. 9 - 1

Recursos de entradas y salidas del regulador.

Para que el compilador conozca cuales son los recursos disponibles,


hay que establecer en el fichero de configuración "[Link]" los
valores:

Digital_Inputs_SL1 = 4
Digital_Inputs_SL2 = 16
Digital_Outputs_SL1 = 4
Digital_Outputs_SL2 = 8 DDS - MC
Marks = 64
Timers = 16
Counters = 16
Registers = 32 (SOFT [Link])

1
! ! ! Ejemplos de programación

Además, para todo programa de Motion Control, deberán existir


siempre dos módulos obligatoriamente; de tal modo que si falta uno
de ellos se producirá un error de compilación:

módulo del modo automático que tendrá la siguiente estructura:

PROGRAM
sentencias
END

9. módulo del modo manual que tendrá la siguiente estructura:

JOG
EJEMPLOS DE PROGRAMACIÓN
Módulo manual del programa de MC

sentencias
END

Módulo manual del programa de MC

Este es el módulo de aplicación manual sugerido por Fagor. Es válido


para todos los ejemplos dados aquí (excepto el 555).
#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"
;Modificar el path si es preciso

DEF POS_POLRTY_PARS #S55 ;lectura sin


; transformación a coma fija
JOG
WAIT (NOT JOG_POS AND NOT JOG_NEG)
;Esperar a que Jog+ y Jog- sean nulas

WAIT (JOG_POS OR JOG_NEG)


;Esperar a que se active alguna de ellas

IF (JOG_POS AND NOT JOG_NEG)


; Si se activa Jog+ y no Jog-

IF (K_MAN_SUBMODE) ;Si es Jog incremental ...


MOVE D=JOG_INC_POS V=JOG_VEL L=NULL
;Si es Jog continuo ...
ELSEIF (POS_POLRTY_PARS BAND $00000010)
;Limites activos?
MOVE D= 36000 V=JOG_VEL
;No (formato módulo [Link].)

ELSE
MOVE P=(LIM_POS-1) V=JOG_VEL;Si

24 ENDIF

ELSEIF (JOG_NEG AND NOT JOG_POS)


; Si se activa Jog- y no Jog+

IF (K_MAN_SUBMODE) : Si es Jog incremental ...


MOVE D=-JOG_INC_POS V=JOG_VEL L=NULL
DDS - MC ;Si es Jog continuo ...
ELSEIF (POS_POLRTY_PARS BAND $00000010)
;Limites activos?
MOVE D=-36000 V=JOG_VEL ;No ( formato módulo
; [Link])
ELSE
(SOFT [Link])
MOVE P=(LIM_NEG+1) V= JOG_VEL;Si

ENDIF
ENDIF
END

2
! ! ! Ejemplos de programación

Límites al posicionamiento
Si el accionamiento va a ser rotativo en formato módulo es necesario
deshabilitar los límites de posicionamiento. Entonces los parámetros
LIM_POS y LIM_NEG pueden no estar inicializados. Para realizar
el desplazamiento de Jog continuo el programa anterior ejecuta un
movimiento de una distancia suficientemente grande (D = 36000).

Referencia para movimiento absoluto


Para realizar un movimiento de tipo absoluto será necesario
comprobar que la marca PV203 [S403] PositionFeedbackStatus está
a 1, de lo contrario la posición final no estará referenciada al cero
9.

EJEMPLOS DE PROGRAMACIÓN
Programa de PLC
máquina y , por tanto, la posición de destino no será la que se desea.

Programa de PLC

El programa de PLC gestiona las señales de habilitación, Start, Stop,


... El programa dado a continuación es común a todos los ejemplos,
(excepto al 777) que tiene el suyo propio. Algunos de los ejemplos de
programación requerirán instrucciones de PLC adicionales.

#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"

DEF ENABLE1 B14S135 ;Drive Enable


DEF ENABLE2 B15S135 ;Speed Enable
;S135 DriverStatusWord

DEF MEMORIA_START M9
; memorización de una señal de START anterior (el motor está en
; funcionamiento)

DEF ENABLE_OK_BIT M10


; activa en la situación «TorqueOn» indicada por S135

DEF STOP_JOG M11


DEF DOS_JOGS M14
; registra que previamente, las dos JOG han sido activadas
; simultáneamente

DEF NO_ENABLE M17


DEF STOPGEN_IN_PROCS M18
DEF MARCA_TEMP M19

DEF START I17 ;entradas digitales


DEF STOP I18
DEF RESET I19
DEF ABORT I20
DEF JOG_MAS I21
DEF JOG_MENOS I22
DEF HOME_SWITCH I23
DEF INCREMENTAL I24
DEF MANUAL I25
DEF INSTRUCT_VS_BLK I26
DDS - MC
DEF CONTINUOUS I27

(SOFT [Link])

3
! ! ! Ejemplos de programación

; Inicializaciones

CY1

( ) = RES MEMORIA_START
( ) = RES NO_ENABLE
( ) = RES STOP_JOG = RES DOS_JOGS
( )= SET STOPGEN_IN_PROCS

END

9.
; Programa
EJEMPLOS DE PROGRAMACIÓN
Programa de PLC

PRG

; Gestión del micro de búsqueda de I0

DFU HOME_SWITCH = MOV 1 S400 ;S400 HomeSwitch


DFD HOME_SWITCH = MOV 0 S400 ;(lógica positiva)

; Gestión de los enables

ENABLE1 = O23 ;Monitorización externa del Drive Enable


ENABLE2 = O24 ;Monitorización externa del Speed Enable

ENABLE1 AND ENABLE2 = ENABLE_OK_BIT

; Generación de STOP en una deshabilitación

DFD ENABLE_OK_BIT AND MEMORIA_START


;deshabilitación genera STOP

= MOV 1 K_STOP_SIG 16 = MOV 0 K_RESET_SIG 16


= MOV 0 K_START_SIG 16 = MOV 0 K_ABORT_SIG 16
= MOV 0 JOG_POS 16 = MOV 0 JOG_NEG 16
= SET NO_ENABLE ;registra que el regulador está deshabilitado
= SET STOPGEN_IN_PROCS ;generación de STOP en proceso
= TRS 1 = TG1 1 50 ;resetea y lanza el temporizador 1

T1 = MARCA_TEMP

DFD MARCA_TEMP = MOV 0 K_STOP_SIG 16


;fin de la temporización de STOP

24 DFU ENABLE_OK_BIT = RES STOPGEN_IN_PROCS


;rehabilitación

; Generación de START en la rehabilitación

NOT STOPGEN_IN_PROCS AND NOT MARCA_TEMP AND NO_ENABLE


;rehabilitado, temporización 1 concluida y regulador deshabilitado
DDS - MC = MOV 1 K_START_SIG ;regenera señal de START
= TRS 2 = TG1 2 50 ;resetea y lanza el temporizador 2
= SET STOPGEN_IN_PROCS

T2 = MARCA_TEMP

(SOFT [Link]) DFD MARCA_TEMP AND ENABLE_OK_BIT


;temporización 2 concluida y regulador en «Torque On»
= MOV 0 K_START_SIG ;fin de la señal START
= RES NO_ENABLE ;registra que el regulador está habilitado

4
! ! ! Ejemplos de programación

; Gestión de las señales START, RESET, ABORT Y STOP

DFU START AND ENABLE_OK_BIT = MOV 1 K_START_SIG 16 = SET


MEMORIA_START
;con la señal START y el regulador en «TorqueOn», activa
;el START del programa MC y registra que el motor está en
;funcionamiento

DFD START OR DFU RESET OR DFU ABORT = MOV 0 K_START_SIG 16


;con la caída de la señal START, desactiva el START del programa MC
9.

EJEMPLOS DE PROGRAMACIÓN
Programa de PLC
;igualmente con la señal STOP
DFU STOP = MOV 1 K_STOP_SIG 16 = RES MEMORIA_START
DFD STOP = MOV 0 K_STOP_SIG 16

;igualmente con la señal RESET


DFU RESET = MOV 1 K_RESET_SIG 16 = RES MEMORIA_START
DFD RESET = MOV 0 K_RESET_SIG 16

;igualmente con la señal ABORT, el motor sigue en funcionamiento


DFU ABORT = MOV 1 K_ABORT_SIG 16 = RES MEMORIA_START
DFD ABORT = MOV 0 K_ABORT_SIG 16

; Modo manual o automático

DFU MANUAL = MOV 1 K_OPER_MODE


;Modo de operación manual
DFD MANUAL = MOV 0 K_OPER_MODE
;Modo de oper. automático

; Gestión del modo manual

DFU INCREMENTAL = MOV 1 K_MAN_SUBMODE 16


;Modo Jog Incremental
DFD INCREMENTAL = MOV 0 K_MAN_SUBMODE 16
;Modo Jog Continuo

JOG_MAS AND JOG_MENOS = NOT RES DOS_JOGS


;las dos entradas de Jog son activadas simultáneamente
;(conflicto)

JOG_MAS AND JOG_MENOS AND NOT DOS_JOGS


= MOV 0 JOG_POS 16
;ningún comando de movimiento al MC
= MOV 0 JOG_NEG 16
= SET STOP_JOG
;hay que parar el motor DDS - MC
= SET DOS_JOGS
;por que las dos señales de Jog están activadas

DFU JOG_MAS AND NOT JOG_MENOS


(SOFT [Link])
;señal de Jog positivo
= MOV 1 JOG_POS 16 ;comando al MC
= SET MEMORIA_START ;el motor está en
;funcionamiento

5
! ! ! Ejemplos de programación

DFD JOG_MAS AND NOT JOG_MENOS


;señal de Jog positivo desactivado
= MOV 0 JOG_POS 16 ;comando al MC
= SET STOP_JOG ;hay que parar el motor

DFU JOG_MENOS AND NOT JOG_MAS


;señal de Jog negativo
=MOV 1 JOG_NEG 16
= SET MEMORIA_START
9. DFD JOG_MENOS AND NOT JOG_MAS
EJEMPLOS DE PROGRAMACIÓN
Programa de PLC

;señal de Jog negativo desactivado


= MOV 0 JOG_NEG 16
= SET STOP_JOG ;hay que parar el motor

DFU STOP_JOG ;hay que parar el motor


= MOV 1 K_ABORT_SIG 16
;comando al MC (debe ser un ABORT, no STOP)
= TG1 3 50 ;lanza el temporizador 3
= RES MEMORIA_START ;el motor está parado

STOP_JOG AND NOT T3


;hay que parar el motor y ha acabado la temporización de la
;señal de ABORT
= MOV 0 K_ABORT_SIG 16 ;comando al MC
= RES STOP_JOG ;el motor ha sido parado

; Gestión del modo automático

NOT MANUAL AND CONTINUOUS


= MOV 0 K_AUTO_SUBMODE
;Automático Continuo

NOT MANUAL AND NOT INSTRUCT_VS_BLK AND NOT CONTINUOUS


= MOV 1 K_AUTO_SUBMODE
;Automático Bloque a Bloque (Bloques de movimiento)

NOT MANUAL AND INSTRUCT_VS_BLK AND NOT CONTINUOUS


= MOV 2 K_AUTO_SUBMODE
;Automático Instrucción a Instrucción (Cualquier instrucción)

24 END

DDS - MC

(SOFT [Link])

6
! ! ! Ejemplos de programación

Ejemplo 111

Búsqueda de I0 y secuencia de movimientos a posiciones fijadas por


programa.

Pitch 10 mm

9.
0 2 3 6 9

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 111
; Módulo de modo automático del programa de MC (*)
PROGRAM

HOME ; Micro con PLC MOTION se activa con I23

WHILE ( 1 )

MOVE P=2 L = WAIT_IN_POS


MOVE P=3 L = WAIT_IN_POS
MOVE P=6 L = WAIT_IN_POS
MOVE P=9 L = WAIT_IN_POS

ENDWHILE

END

(*) Nótese que a este módulo le deberá acompañar el de modo ma-


nual, ambos necesarios en un programa de MC.

Tras el reset inicial del regulador:

! Activar la señal Start (I17).


! El motor girará en sentido horario.
! Al tocar el Home Switch (I23) invertirá el sentido de giro.
! Al dejar el Home Switch finaliza la instrucción HOME.
! Indefinidamente el accionamiento se mueve a las posiciones
2, 3, 6 y 9 deteniéndose en esos puntos.

Configuración del procedimiento HOME


El accionamiento se mueve a [S41] HomingVelocityFast y tras tocar
en el Home Switch se mueve a [F1300] HomingVelocitySlow.
El parámetro [S147] establece el sentido de giro del motor y la lógica
del Home Switch.

Relación de transmisión mecánica


DDS - MC
Los parámetros [S121] InputRevolutions, [S122] OutputRevolutions
y [S123] FeedConstant establecen la relación de transmisión
mecánica entre la rotación del motor y el movimiento lineal.
En este caso S121 = S122 = 1, y S123 = 10 mm ya que ese es el paso
de husillo.
(SOFT [Link])

7
! ! ! Ejemplos de programación

Ejemplo 222

Búsqueda de I 0 y movimientos a las posiciones fijadas por el


programa. El usuario ejecuta el movimiento (GO) y selecciona la
posición de destino (MSB, LSB).

1
0

9. MSB LSB GO
EJEMPLOS DE PROGRAMACIÓN
Ejemplo 222

0 2 3 6 9

Fichero [Link] de definiciones incluído en el programa de PLC y MC:

;Para la transmisión de señales digitales al programa de MC

DEF GO_SIGNAL M1
DEF INDICE R1

Fichero [Link]

#INCLUDE "[Link]"
#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"

PAR TABLA_POS [ 4 ]

PROGRAM

HOME ; Micro con PLC MOTION se activa con I23

WHILE ( 1 )

WAIT ( NOT GO_SIGNAL )


WAIT ( GO_SIGNAL ) ;Espera un flanco de subida
;de la marca GO_SIGNAL

IF (( INDICE GE 0) AND (INDICE LT 4))


; evita salir de la tabla definida y hacer
; movimientos a posiciones desconocidas

MOVE P = TABLA_POS [ INDICE ] L =


WAIT_IN_POS

ENDIF
24 ENDWHILE

END

JOG ; módulo en modo manual definido en la pág.2


..........
DDS - MC
END

Tras el reset inicial del regulador:


(SOFT [Link])
! Activar la señal Start (I17).
! Se ejecutará la instrucción HOME.
! Activar la señal eléctrica GO y el motor llevará el accionamiento
a la posición seleccionada por los bits LSB y MSB.

8
! ! ! Ejemplos de programación

Asignación de valores a la tabla de parámetros:


El programa *.mc deberá compilarse generando un fichero *.mcc. Se
carga en el regulador almacenándose en la variable LV33 la lista de
parámetros del programa. Para inicializar estos elementos de la tabla
de parámetros con los valores de las posiciones de destino se activa
watch desde la ventana WinDDSSetup y se hace click en la etiqueta
MC. Así podrán visualizarse todos los elementos de la tabla de
parámetros. Seleccionando cada uno de ellos y pulsando el botón +
se podrán monitorizar todos juntos activando la etiqueta monitor.
Desde los cuadros de campo correspondientes a cada elemento se
asignan los valores correspondientes a las posiciones de destino. Se
9.
validarán con un return de teclado.

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 222
Para que esta inicialización quede permanentemente registrada en
la memoria flash del regulador deberá activarse el comando LC1,
almacenando estos valores hasta que el usuario realice nuevas
modificaciones.

Líneas de programa de PLC adicionales:

#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"

DEF GO_SIGNAL_INPUT I28 ; definiciones de las entradas


DEF LSB_SIGNAL_INPUT I29 ; eléctricas digitales
DEF MSB_SIGNAL_INPUT I30

DEF GO_SIGNAL_OUTPUT O17 ; definiciones de las salidas


DEF LSB_SIGNAL_OUTPUT O18 ; eléctricas digitales
DEF MSB_SIGNAL_OUTPUT O19

; Líneas de programa
; Asignación de las marcas para la transmisión de señales digitales al
; programa de MC,
; (son marcas del PLC definidas en el fichero incluido "[Link]")
; Las salidas digitales son sólo testigos para la visualización

GO_SIGNAL_INPUT = GO_SIGNAL = GO_SIGNAL_OUTPUT


LSB_SIGNAL_INPUT = B0R1 = LSB_SIGNAL_OUTPUT
MSB_SIGNAL_INPUT = B1R1 = MSB_SIGNAL_OUTPUT

Comunicación PLC - MC
Entre los programas de MC y PLC pueden transmitirse información
a través de distintos recursos del PLC. Estos son:
Registros generales (R1, ...)
Registros de Contadores (C1, ...)
Marcas (M1, ...)

Los parámetros y variables del regulador son también accesibles


desde el programa PLC y desde los programas MC pero no deben ser
usados para la transferencia de información entre ellos.
DDS - MC
Conmutación entre modo manual y automático
Mediante la entrada I25 se conmuta entre modos. Tras la
conmutación de un modo a otro es imprescindible activar la F2315
KernelStartSignal para que el programa reanude su ejecución desde
el punto en el que la dejó. Según se puede ver en el programa de PLC, (SOFT [Link])
la señal Start (I17) realiza esta misión.

9
! ! ! Ejemplos de programación

Ejemplo 333

Proceso inicial de "Teach-in" donde conmutando a modo manual el


usuario mueve el accionamiento y fija dos posiciones en la memoria
del sistema. Tras la activación de la señal "GO" el accionamiento se
mueve a esas dos posiciones y vuelve a "Cero".

9.
1
0
GO TEACH
EJEMPLOS DE PROGRAMACIÓN
Ejemplo 333

Fichero [Link] de definiciones incluído en el programa de PLC y MC:

;Para la transmisión de señales digitales al programa de MC

DEF GO_SIGNAL M1

; Definiciones de constantes numéricas

DEF AUTOMATICO 0 ; Modo de operación AUTOMATICO


DEF MANUAL 1 ; Modo de operación MANUAL o JOG
DEF N_POS 2 ; Número de posiciones en la tabla de
;Teach-in

Módulo de modo automático para un programa de MC (*)

#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"
#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"

DIM INDEX, POS_TABLE [ N_POS ]

PROGRAM

; Inicializaciones
ACC = 12 ; Aceleración de 12 m/s^2
JERK = 240 ; Jerk = Acc/ts; para ts de 50ms, Jerk = 240 m/s^3

HOME
MOVE P = 0 L = WAIT_IN_POS ; Posicionarse en el origen

; Inicialización de la tabla de posiciones, proceso de Teach-in


FOR INDEX = 0, ( N_POS - 1 ), 1
24 ; El propio programa automático de MC conmuta el sistema
; a modo manual y espera que se restablezca el modo
; automáticopara cargar en la tabla de posiciones el feedback
; actual

K_OPER_MODE = MANUAL
DDS - MC WAIT ( K_OPER_MODE EQ AUTOMATICO )
POS_TABLE [ INDEX ] = POS_FEEDBACK1

ENDFOR

WHILE ( 1 )
(SOFT [Link])
MOVE P = 0 L = WAIT_IN_POS

WAIT ( NOT GO_SIGNAL )


WAIT ( GO_SIGNAL )
; Espera un flanco de subida de la marca GO_SIGNAL

10
! ! ! Ejemplos de programación

FOR INDEX = 0, ( N_POS - 1 ), 1


MOVE P = POS_TABLE [ INDEX ] L = WAIT_IN_POS

ENDFOR
ENDWHILE
END

(*) Nótese que a este módulo le deberá acompañar el de modo ma-


nual, ambos necesarios en un programa de MC.

Líneas de programa de PLC adicionales:


9.

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 333
#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"

DEF TEACH_SIGNAL_INPUT I28


DEF GO_SIGNAL_INPUT I29 ; entradas de eventos externos

DEF TEACH_SIGNAL_OUTPUT O17 ; definiciones de las salidas


DEF GO_SIGNAL_OUTPUT O18 ; eléctricas digitales

; Líneas de programa
; Asignación de las marcas para la transmisión de señales digitales al
; programa de MC,
; (son marcas del PLC definidas en el fichero incluido "[Link]")
; La salida digital es sólo un testigo para la visualización

GO_SIGNAL_INPUT = GO_SIGNAL = GO_SIGNAL_OUTPUT


DEF TEACH_SIGNAL_INPUT = TEACH_SIGNAL_OUTPUT

DFU TEACH_SIGNAL_INPUT = MOV AUTOMATICO K_OPER_MODE 0016

; La señal Teach conmuta al modo automático.

Tras el reset inicial del regulador,


! Realiza la búsqueda de cero
! Activar la señal de Start (modo manual)
! Mover con el Jog el accionamiento a la primera posición
! Activar la señal Teach
! Activar la señal de Start (modo automático)
! Activar la señal de Start (modo manual)
! Jog al segundo punto, Teach
! Activar la señal de Start (modo automático)
! El accionamiento irá a la posición "Cero".
! Activar la señal de GO
! El accionamiento irá a los dos puntos seleccionados y de nuevo
"Cero".

Inicialización de parámetros DDS - MC


Las instrucciones ACC = 12 y JERK = 240 inicializan las variables
[S260] PositioningAcceleration y [S193] PositioningJerk a 12 m/s2 y
240 m/s3 respectivamente. Establecen así el límite de aceleración y
de choque aplicado a todos los movimientos lineales.
(SOFT [Link])
Las variables del regulador son modificables "on-line" desde el
programa MC. Los parámetros no son modificables "on-line"

11
! ! ! Ejemplos de programación

Conmutación entre modo manual y automático


En este ejemplo son los programas de MC y PLC los que ejecutan el
cambio de modo (K_OPER_MODE se define en [Link] como la
variable [F02313] KernelOperationMode). Tras la conmutación de un
modo a otro es imprescindible activar la [F02315] KernelStartSignal
para que el programa reanude su ejecución desde el punto en el que
la dejó. Según se puede ver en el programa de PLC, la señal Start
(I17) realiza esta misión.

9.
EJEMPLOS DE PROGRAMACIÓN
Ejemplo 333

24

DDS - MC

(SOFT [Link])

12
! ! ! Ejemplos de programación

Ejemplo 444

Funcionamiento en modo rotativo. Las consignas serán dadas en


formato módulo y el movimiento del eje seguirá el camino más corto.

90 1
0
GO
180 0
9.

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 444
Módulo de modo automático para un programa de MC (*)
#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"
DEF GO_SIGNAL M1

; Para el funcionamiento en modo rotativo hay que hacer.


; Dar al parámetro S103 ModuloValue el valor 360 (su valor por defecto).
; Poner el bit 7 de S76 a 1
; MOVE D =360 significará una vuelta del motor
; MOVE D =90 será un cuarto de vuelta.
; Aumentar la ventana de posición S57 PositionWindow en la
; misma proporción S57 = 3.6 mm

; Para el funcionamiento en formato módulo hay que hacer.


; Poner el bit 7 de S76 PositionDataScalingType a 1. S76 = 194
; Poner el bit 0 = 0 y el bit 1 = 1 para escalado rotativo

PROGRAM

HOME

MOVE P = 0 L = WAIT_IN_POS
;Posicionarse en el origen

WHILE ( 1 )

WAIT ( NOT GO_SIGNAL )


WAIT ( GO_SIGNAL )
; Espera un flanco de subida de la marca GO_SIGNAL

MOVE P = 45 L = WAIT_IN_POS

;Secuencia de movimientos

MOVE P = 315 L = WAIT_IN_POS


MOVE P = 90 L = WAIT_IN_POS
MOVE P = 180 L = WAIT_IN_POS
MOVE P=0 L = WAIT_IN_POS
MOVE P = 180 L = WAIT_IN_POS
MOVE P=0 L = WAIT_IN_POS

ENDWHILE
END DDS - MC
(*) Nótese que a este módulo le deberá acompañar el de modo ma-
nual, ambos necesarios en un programa de MC.

(SOFT [Link])

13
! ! ! Ejemplos de programación

Líneas de programa de PLC adicionales:

DEF GO_SIGNAL M1
DEF GO_SIGNAL_INPUT I28 ; entradas de eventos externos
DEF GO_SIGNAL_OUTPUT O17 ; salidas de eventos externos

; Líneas de programa
; Marcas para la transmisión de señales digitales al programa de MC
; Las salidas digitales son solo testigos para la visualización

9. GO_SIGNAL_INPUT = GO_SIGNAL = GO_SIGNAL_OUTPUT


EJEMPLOS DE PROGRAMACIÓN
Ejemplo 444

Tras el reset inicial del regulador:


! Realiza la búsqueda de cero
! Se mueve a la posición "Cero"
! Activar la señal de GO
! El accionamiento ira a las posiciones 45°, 315°, 90°, 180°, 0°,
180° y 0° siempre por el camino más corto como indica el
siguiente gráfico.

90 90 90 90

0 0 0 0

Inicialización de parámetros
Para trabajar en Formato módulo hay que poner el Bit 7 de [S76]
PositionDataScalingType a 1. Es decir S76 = 194.

Para que el giro se realice por el camino más corto hay que dar a los
bits menos significativos de [S393] ModuloCommandMode el valor
10. Es decir S393 = 2.

Transmisión rotativa-lineal
Establecer por parámetro que la relación de transmisión es 1:1 y el
escalado rotativo:

S121 InputRevolutions = S122 OutputRevolutions = 1


y S76 con bit 0 = 0 y bit 1 = 1.

24 Así en las instrucciones de movimiento las distancias se darán en


grados sexagesimales.

Y las velocidades de giro en 1000/360 rpm = 2.77 rpm


( por ejemplo 100 rpm sería V = 36 ).

DDS - MC Sin límites al posicionamiento


El accionamiento va a ser rotativo en formato módulo. En este caso
es necesario deshabilitar los límites de posicionamiento.
Poner el bit 4 de [S55] PositionPolarityParameters a 0.
(SOFT [Link])

14
! ! ! Ejemplos de programación

Ejemplo 555

Procedimiento de "Teach-in" . Empleo de subrutinas. Tras la


activación de la señal "GO" el accionamiento se mueve a esas dos
posiciones y vuelve a "Cero". Las posiciones estarán inicializadas en
una tabla de parámetros.

9.
1
0
GO TEACH TEACH
PROC

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 555
0

Programa de MC

#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"

DEF POS_POLRTY_PARS #S55


DEF GO_SIGNAL M1
DEF TEACH_IN_PROCEDURE_SIGNAL M2
DEF TEACH_SIGNAL M3

PAR POS_TABLE [2] ; parámetros


DIM INDEX ; variables

; Módulo de modo automático

PROGRAM

; inicializaciones

ACC = 12 ; Aceleración de 12 m/s2


JERK = 240 ; Jerk = Acc/ts; para ts de 50ms, Jerk = 240 m/s3

HOME ; búsqueda de cero

MOVE P = 0 L = WAIT_IN_POS;
; posicionamiento en el origen

IF ( TEACH_IN_PROCEDURE_SIGNAL)
CALL TEACH_IN_PROCEDURE
WAIT ( NOTTEACH_IN_PROCEDURE_SIGNAL)
ENDIF

WHILE ( 1 ) ; siempre

; a la espera del flanco de subida de la señal GO_SIGNAL

WAIT ( NOT GO_SIGNAL )


WAIT ( GO_SIGNAL )
DDS - MC
MOVE P = POS_TABLE [0] L = WAIT_IN_POS
MOVE P = POS_TABLE [1] L = WAIT_IN_POS
MOVE P = 0 L = WAIT_IN_POS

ENDWHILE
(SOFT [Link])

END

15
! ! ! Ejemplos de programación

; Módulo de modo manual

JOG
WAIT ( NOT JOG_POS AND NOT JOG_NEG )
; espera a jog+ y jog- desactivados

WAIT ( JOG_POS OR JOG_NEG)


; espera a que se active jog+ o jog-

IF ( JOG_POS AND NOT JOG_NEG)

9. ;si se activa jog+ y no jog-

IF ( K_MAN_SUBMODE )
EJEMPLOS DE PROGRAMACIÓN
Ejemplo 555

; jog incremental
MOVE D = JOG_INC_POS V= JOG_VEL L= NULL
ELSEIF ( POS_POLRTY_PARS BAND $00000010)
; jog continuo
MOVE D = 36000 V = JOG_VEL
;límites inactivos
ELSE
MOVE P = ( LIM_POS - 1) V = JOG_VEL
;límites activos
ENDIF
ENDIF

IF ( NOT JOG_POS AND JOG_NEG)


;si no se activa jog+ y sí jog-

IF ( K_MAN_SUBMODE )
; jog incremental
MOVE D = JOG_INC_POS V = JOG_VEL L = NULL
ELSEIF ( POS_POLRTY_PARS BAND $00000010 )
; jog continuo
MOVE D = 36000 V = JOG_VEL
;límites inactivos
ELSE
MOVE P = ( LIM_NEG + 1 ) V = JOG_VEL
;límites activos
ENDIF
ENDIF
END

; subrutina para el procedimiento de Teach - in

SUB TEACH_IN_PROCEDURE

FOR INDEX = 0, 1, 1

WHILE ( NOT TEACH_SIGNAL )


CALL JOG
ENDWHILE

24 POS_TABLE [ INDEX ] = POS_FEEDBACK1


WAIT ( NOT TEACH_SIGNAL )

ENDFOR

ENDSUB

DDS - MC
Tras la búsqueda de "Cero" se sitúa en P = 0,
! Conmutar el modo manual
! Activar el Procedimiento de Teach-in.
! Con el Jog, mover el accionamiento al primer punto
(SOFT [Link])
! Activar la señal Teach
! Repetir para el segundo punto (opcional)
! Conmutar el modo automático
! Mediante la señal GO se inicia el ciclo de movimientos.

16
! ! ! Ejemplos de programación

Líneas de programa de PLC adicionales

DEF TEACH_IN_PROC_SIGNAL_INPUT I28


DEF TEACH_SIGNAL_INPUT I29
DEF GO_SIGNAL_INPUT I30

DEF TEACH_IN_PROC_SIGNAL_OUTPUT O17


DEF TEACH_SIGNAL_OUTPUT O18 ;testigos
DEF GO_SIGNAL_OUTPUT O19

DEF
DEF
DEF
GO_SIGNAL
TEACH_IN_PROCEDURE_SIGNAL
TEACH_SIGNAL
M1
M2
M3
9.

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 555
; líneas de programa
; marcas para la tansmisión de señales digitales al programa de MC

TEACH_IN_PROC_SIGNAL_INPUT
= TEACH_IN_PROCEDURE_SIGNAL
= TEACH_IN_PROC_SIGNAL_OUTPUT

TEACH_SIGNAL_INPUT
= TEACH_SIGNAL
= TEACH_SIGNAL_OUTPUT

GO_SIGNAL_INPUT
= GO_SIGNAL
= GO_SIGNAL_OUTPUT

; las salidas digitales son sólo testigos para la visualización.

DDS - MC

(SOFT [Link])

17
! ! ! Ejemplos de programación

Ejemplo 666

Funcionamiento en modo rotativo. El usuario selecciona mediante


entradas digitales el número de sectores en el que será dividida la
circunferencia. La ejecución del programa mueve el accionamiento a
esas posiciones y ejecuta una acción externa por medio de una salida
digital.

9. 90 1
0
GO B2 B1 B0
EJEMPLOS DE PROGRAMACIÓN
Ejemplo 666

180 0

Módulo de modo automático para un programa de MC (*)

#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"
DEF GO_SIGNAL M1
DEF ACTION_SIGNAL M2
DEF NSECTOR R1 ; número de sectores
DIM SECTION, INDEX

PROGRAM

HOME
MOVE P = 0 L = WAIT_IN_POS ; Posicionarse en el origen

WHILE ( 1 )

WAIT ( NOT GO_SIGNAL )


WAIT ( GO_SIGNAL )
;Espera un flanco de subida de la señal GO

IF ( NSECTOR )
;Sólo si el número de sectores es distinto de cero

MOVE P = 0 L = WAIT_IN_POS
: Posicionarse en el origen
CALL EXTERNAL_ACTION
; Acción en la posición cero

IF ( NSECTOR GT 1 ) ;Si hay más de un sector

SECTION = ( 360 / NSECTOR )


; Secuencia de movimientos
24 FOR INDEX = 1, ( NSECTOR - 1 ), 1
MOVE P = ( SECTION * INDEX ) L = WAIT_IN_POS
CALL EXTERNAL_ACTION ; Acción
ENDFOR
ENDIF
ENDIF
ENDWHILE
DDS - MC END

SUB EXTERNAL_ACTION

ACTION_SIGNAL = 1
DWELL 1000 ;Durante un segundo
ACTION_SIGNAL = 0
(SOFT [Link])

ENDSUB

(*) Nótese que a este módulo le deberá acompañar el de modo ma-


nual, ambos necesarios en un programa de MC.

18
! ! ! Ejemplos de programación

Líneas de programa de PLC adicionales

DEF GO_SIGNAL M1
DEF ACTION_SIGNAL M2
DEF NSECTOR R1 ; número de sectores
DEF GO_SIGNAL_INPUT I28 ; señal de marcha
DEF B0_SIGNAL_INPUT I29 ; bits para la definición del
; número de sectores
DEF B1_SIGNAL_INPUT I30 ; B0 (LSB), B4 (MSB)
DEF B2_SIGNAL_INPUT I31

DEF GO_SIGNAL_OUTPUT O17


; salidas de eventos externos
9.

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 666
DEF ACTION_SIGNAL_OUTPUTO18
; señal de actuación

; Líneas de programa
; Marcas para la transmisión de señales digitales al programa de MC
; Las salidas digitales son solo testigos para la visualización

GO_SIGNAL_INPUT = GO_SIGNAL = GO_SIGNAL_OUTPUT


ACTION_SIGNAL = ACTION_SIGNAL_OUTPUT

B0_SIGNAL_INPUT = B0NSECTOR ; Bits de las entradas al registro


B1_SIGNAL_INPUT = B1NSECTOR
B2_SIGNAL_INPUT = B2NSECTOR

; NSECTOR es un registro para la transferencia de un dato al programa MC


; El programa MC trabaja en coma fija ( x 10000)

( ) = AND NSECTOR $007 NSECTOR ; tres bits menos significativos


( ) = MLS 10000 NSECTOR NSECTOR

Tras la búsqueda de "Cero" se sitúa en P= 0,


! Seleccionar con los B2,B1,B0 el número de sectores
! Mediante la señal GO se inicia el ciclo de movimientos,
recorrerá el número de sectores marcado activando en cada
uno de ellos una salida digital.

1 90 90 90
0
GO B2 B1 B0

0 0 0
ACTION

DDS - MC

(SOFT [Link])

19
! ! ! Ejemplos de programación

Ejemplo 777

Configuración del regulador en modo velocidad (no posición). Una


entrada analógica controla la velocidad del motor según un patrón.
En este ejemplo no es necesario el programa de MC.

9.
EJEMPLOS DE PROGRAMACIÓN
Ejemplo 777

Speed

X_SPEED

XY_SPEED

X Y Weight

Tras el reset del regulador:


! El motor se moverá, en función del peso, a la velocidad indicada
en el gráfico.
! Superado el peso Y, el motor se detiene.
! Sólo se pondrá de nuevo en marcha activando la señal GO.

Modo velocidad
Hay que configurar el regulador para trabajar en Modo velocidad
haciendo PrimaryOperationMode S32 = 2. El programa de PLC
escribirá sobre la variable [S36] VelocityCommand.

Entrada analógica
La medida del peso debe estar dentro del rango ±10V. Esta señal
eléctrica se lleva a la entrada analógica 1. El PLC conoce el valor de
esta tensión consultando la variable F905 AnalogInput1 que se define
en el fichero "ad_da.inc" como ANA_IN_1.

Funcionamiento sin programas MC


24 Cuando sólo se desea utilizar la prestación de PLC, es posible
deshabilitar el intérprete de los programas de MC.

Contactar con Fagor Automation.

DDS - MC

(SOFT [Link])

20
! ! ! Ejemplos de programación

Programa de PLC

#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"
#INCLUDE "C:\Editor\MyFiles\PLCFiles\ad_da.inc"

DEF GO_INPUT I28 ; entrada de marcha

DEF IN_PROCESS M1

DEF LESS_THAN_X M2
DEF
DEF
DEF
LESS_THAN_Y
X_SPEED_ZONE
XY_SPEED_ZONE
M3
M4
M5
9.

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 777
DEF NULL_SPEED_ZONE M6

DEF X_SPEED_VALUE 3000000


DEF XY_SPEED_VALUE 2000000

DEF X_VALUE 6500


DEF Y_VALUE 8000

DEF VELOCITYCOMMAND_PAR S36

; ——————————————————————————
;
; Líneas de programa
; Este programa controla la velocidad del motor, es decir, modifica la
; consigna interna de velocidad SV1 [S36] VelocityCommand. Para que el
; lazo de posición no modifique esta variable hay que configurar el regulador
; en modo de velocidad AP1= 2.
;
; No es necesario ningún programa de MC.

PRG

CPS ANA_IN_1 LT X_VALUE = LESS_THAN_X


CPS ANA_IN_1 LT Y_VALUE = LESS_THAN_Y

LESS_THAN_X = X_SPEED_ZONE
LESS_THAN_Y AND NOT LESS_THAN_X = XY_SPEED_ZONE
NOT LESS_THAN_Y = NULL_SPEED_ZONE

DFU GO_INPUT = SET IN_PROCESS

X_SPEED_ZONE AND IN_PROCESS


= MOV X_SPEED_VALUE VELOCITYCOMMAND_PAR

XY_SPEED_ZONE AND IN_PROCESS


= MOV XY_SPEED_VALUE VELOCITYCOMMAND_PAR

NULL_SPEED_ZONE AND IN_PROCESS


= MOV 0 VELOCITYCOMMAND_PAR = RES IN_PROCESS

END

DDS - MC

(SOFT [Link])

21
! ! ! Ejemplos de programación

Ejemplo 888

Regulador en modo posición sin límites en su desplazamiento.


Relación de transmisión rotativa-lineal dada por el "paso de husillo"
[S123] FeedConstant.

1
3m
0

9. GO
EJEMPLOS DE PROGRAMACIÓN
Ejemplo 888

Tras el reset del regulador:


! No es necesaria en este caso una búsqueda de Cero.
! Activar la señal GO.
! El motor girará para desplazar 3 metros de material.

Sin límites al posicionamiento


El motor va a girar siempre en el mismo sentido, así que es necesario
deshabilitar los límites de posicionamiento.

Poner el bit 4 de [S55] PositionPolarityParameters a 0.

Transmisión rotativa-lineal
La relación de transmisión por la correa es de 2/5, y el perímetro del
rodillo es 37.5 cm.

S121 InputRevolutions = S122 OutputRevolutions = 1


y S123 FeedConstant = 150 mm

Se aumentará la ventana de posición S57 PositionWindow en la


misma proporción S57 = 1500.

24

DDS - MC

(SOFT [Link])

22
! ! ! Ejemplos de programación

Módulo de modo automático para un programa de MC (*)

#INCLUDE "C:\Editor\MyFiles\MCFiles\[Link]"
DEF GO_SIGNAL M1

; Aquí, inhabilitar los límites: poner el bit 4 de S55


; PositionPolarityParameters a 0.
;
; En este ejemplo la relación de transmisión es de 2/5, y el perímetro del
; rodillo es 37.5 cm
; Según esto (desplazamiento lineal / vuelta de motor ) es
; 37.5 * 2 / 5 = 15 cm/rev.
; Es decir que hay que dar al «paso de husillo» el valor S123 FeedConstant
9.

EJEMPLOS DE PROGRAMACIÓN
Ejemplo 888
; = 150 mm.
; Se aumentará la ventana de posición S57 PositionWindow en la misma
; proporción S57 = 1500.
;

PROGRAM

WHILE ( 1 )

WAIT ( NOT GO_SIGNAL )


WAIT ( GO_SIGNAL)
; Espera un flanco de subida de GO_SIGNAL

MOVE D = 3000 L = WAIT_IN_POS


; Desplazamiento de 3 metros

ENDWHILE

END

(*) Nótese que a este módulo le deberá acompañar el de modo ma-


nual, ambos necesarios en un programa de MC.

Líneas de programa de PLC adicionales

DEF GO_SIGNAL_INPUT I28 ; entradas de eventos externos


DEF GO_SIGNAL_OUTPUT O17 ; salidas de eventos externos
DEF GO_SIGNAL M1

; Líneas de programa
; Marcas para la transmisión de señales digitales al programa de MC
; Las salidas digitales son solo testigos para la visualización

GO_SIGNAL_INPUT = GO_SIGNAL = GO_SIGNAL_OUTPUT

DDS - MC

(SOFT [Link])

23
! ! ! Ejemplos de programación

9.
EJEMPLOS DE PROGRAMACIÓN

DDS - MC

(SOFT [Link])

24
SINCRONIZACIÓN
10
Consideraciones iniciales

El modo de operación de sincronización consiste en el movimiento de


un eje controlado por un regulador considerado como esclavo
sincronizando con el movimiento de otro eje controlado por otro
regulador considerado como maestro mediante una relación dada.
Existen dos tipos de movimiento de sincronización:
! sincronización en velocidad.
! sincronización en fase o posición.

El tipo de sincronización lo establece el parámetro LP40 [F2340] Syn-


chronizationMode. Sus valores permitidos son:
LP40 = 0 sincronización en velocidad
LP40 = 1 sincronización en posición (por defecto).

En ambos casos, el regulador trabaja en control de posición y es el


software de MC el encargado de generar las consignas de posición
necesarias para alcanzar el perfil de movimiento de sincronización.

Posición del eje maestro

El regulador trabaja con dos captaciones de forma que a través de la


captación motor PV51 [S51] PositionFeedback1 determina su
propia posición y con ella cierra el lazo de posición, mientras que la
captación directa PV53 [S53] PositionFeedback2 le sirve para
definir la posición del maestro.

DDS - MC

(SOFT [Link])

1
! ! ! Sincronización

Relaciones de sincronización

Sincronización en velocidad

En el modo de sincronización en velocidad, la relación que se


establece entre el eje maestro y el eje esclavo viene determinada por

10. la siguiente expresión:


SINCRONIZACIÓN
Relaciones de sincronización

Vs = ( VM * ratio * ( 1 + ajuste ) ) + Vo

VM velocidad del eje maestro


Vs velocidad del eje esclavo
Vo offset de velocidad
ajuste ajuste fino del ratio
rotaciones del eje esclavo
ratio =
rotaciones del eje maestro

fig. 10 - 1

Sincronización en velocidad. Relación de sincronización entre el eje maestro


y el eje esclavo.

Los parámetros que intervienen en el cálculo de la velocidad del eje


esclavo Vs son:

VM Velocidad del eje maestro. Se obtiene como diferencia


entre la velocidad que lleva el eje maestro en la posición
actual y la que llevaba en la posición anterior a la actual.

VO Offset de velocidad. Su valor viene dado por la variable


LV44 [F2344] SynchronizationVelocityOffset. Esta
variable permite modificar la velocidad del eje esclavo
independientemente de la velocidad con la que se
mueve el eje maestro.

ajuste Ajuste fino del ratio. Su valor viene dado por la


variable LV43 [F2343] GearRatioAdjustment y
permite ajustar la relación de transmisión durante el
movimiento.

14 ratio Ratio de transmisión. Su valor viene dado por el


cociente entre el parámetro LP237 [S237]
SlaveDriveRevolutions1 y el parámetro LP236 [S236]
LeadDrive1Revolutions.

La relación de transmisión se establece en la fase de inicialización del


DDS - MC sistema, permaneciendo su valor, constante durante toda la
operación. Si se desea modificar dicho valor, se dispone de la variable
LV43 [F2343] GearRatioAdjustment para el ajuste fino de dicho
ratio.
Cuando se inicia el modo sincronización el sistema calcula la
(SOFT [Link]) velocidad que debe alcanzar el eje esclavo en función de la que lleva
el eje maestro aplicando la ecuación dada con anterioridad.

2
! ! ! Sincronización

La adaptación desde la velocidad que tenga en ese momento el eje


esclavo hasta la velocidad de sincronización calculada se realiza
teniendo en cuenta la aceleración de sincronización dada por el
parámetro LP41 [F2341] SynchronizationAcceleration.

Ejemplo. Sincronización en velocidad.

V Vs calculada

10.

SINCRONIZACIÓN
Testeos durante la sincronización en velocidad
Vs interna

aceleración de
1 sincronización
t
ajuste de velocidad

1. Inicio de la sincronización 2
2. Alcance de la sincronización

fig. 10 - 2

Representación de la sincronización en velocidad.

En este caso se distingue un único paso o fase de adaptación de


velocidad para alcanzar la sincronización. La sincronización se
alcanza cuando la velocidad interna generada por el eje esclavo es
igual a la velocidad de sincronización calculada.

Testeos durante la sincronización en velocidad

La ventana de velocidad que determina que la sincronización en


velocidad ha sido alcanzada viene establecida por el parámetro
LP183 [S183] VelocitySynchronizationWindow. Así, si durante el
modo de sincronización en velocidad la diferencia entre la velocidad
de sincronización calculada para el eje esclavo y el feedback de
velocidad está dentro de esta ventana, se activa la marca LV46
[F2346] InSynchronization señalando que la sincronización en
velocidad ha sido alcanzada.

Justamente al inicio de la sincronización se inicia también un testeo


de l tiemp o tr ans cur r ido has ta que se a lca nza el e stado
InSynchronization. Finaliza el testeo en el mismo instante en que
se alcanza este estado.

El tiempo máximo para alcanzar el estado InSynchronization queda


determinado en el parámetro LP47 [F2347] Synchronization
Timeout, de manera que, si el estado no ha sido alcanzado en este
tiempo se genera el error E919 (Timeout de sincronización)
advirtiendo de esta situación.
¡ Recuérdese que para deshabilitar el contaje del Timeout de DDS - MC
s i n c ro n i z a c i ó n d e b e d a rs e a l p a r á m e t ro L P 4 7 [ F2 3 4 7 ]
SynchronizationTimeout el valor válido máximo (2147483647) !

La siguiente figura contempla el testeo al que se hace referencia.


(SOFT [Link])

3
! ! ! Sincronización

Ejemplo. Testeo del Timeout de sincronización.

Vs calculada
V

Vs interna al detectar el error pasa


a consigna de velocidad nula
aceleración de

10. sincronización

ajuste de velocidad t
SINCRONIZACIÓN
Ajustes durante la sincronización de velocidad

1 2

error 919

Synchronization Timeout

1. Inicio de la sincronización y del testeo del Timeout


2. Alcance de la sincronización y fin del testeo del Timeout

fig. 10 - 3

Ejemplo representativo del error E919: Timeout de sincronización.

Ajustes durante la sincronización de velocidad

Una vez alcanzada la sincronización en velocidad, cualquier


modificación del ajuste de la relación de transmisión del eje esclavo
mediante la variable LV43 [F2343] GearRatioAdjsutment y/o el
offset de velocidad LV44 [F2344] SynchronizationVelocityOffset
implica un nuevo valor de su velocidad de sincronización. Así, se
genera una nueva fase de adaptación de velocidad para alcanzar la
nueva posición de sincronización.

Ejemplo. Ajustes durante la sincronización en velocidad.

Vs calculada

aceleración de
sincronización
14
Vs interna

aceleración de 3
1
sincronización

ajuste de velocidad ajuste de t


velocidad
2
InSynchronization 4
DDS - MC

t
1. Inicio de la sincronización
2. Alcance de la sincronización
3. Variación del ajuste del ratio y/o del offset de velocidad
(SOFT [Link]) 4. Alcance de la sincronización

fig. 10 - 4

Ejemplo representativo del proceso de sincronización tras una modificación


en el ajuste del ratio y/o del offset de velocidad del eje esclavo.

4
! ! ! Sincronización

Obsérvese el comportamiento de la marca LV46 [F2346]


InSynchronization durante la sincronización y la modificación del
ajuste del ratio y/o del offset de velocidad del eje esclavo.

Las modificaciones realizadas en el offset de posición durante la


sincronización vuelven a iniciar el testeo del Timeout de
sincronización que finaliza tras ser alcanzada la sincronización en
velocidad.

Sincronización de posición
10.

SINCRONIZACIÓN
Sincronización de posición
En el modo de sincronización en fase o posición, la relación que se
establece entre el eje maestro y el eje esclavo viene determinada por
la siguiente expresión:

Xs = ( XM * ratio ) + Xo

XM posición del eje maestro


Xs posición del eje esclavo
Xo offset de posición
rotaciones del eje esclavo
ratio =
rotaciones del eje maestro

fig. 10 - 5

Sincronización en fase ó posición. Relación de sincronización entre el eje


maestro y el eje esclavo.

Los parámetros que intervienen en el cálculo de la posición del eje


esclavo Xs son:

XM Posición del eje maestro.

XO Offset de posición. Su valor viene dado por la variable


LV45 [F2345] SynchronizationPositionOffset. Esta
variable permite modificar la posición del eje esclavo
independientemente de la posición del eje maestro.

ratio Ratio de transmisión. Su valor viene dado por el


cociente entre el parámetro LP237 [S237]
SlaveDriveRevolutions1 y el parámetro LP236 [S236]
LeadDrive1Revolutions.

El ratio de transmisión se establece en la fase de inicialización del


sistema, permaneciendo su valor, constante durante toda la
operación. En este modo de operación no se contempla la posibilidad
de modificar dicho ratio durante la operación ya que este
comportamiento es más propio de una leva electrónica que de un
engranaje electrónico. DDS - MC
En este modo de funcionamiento se distinguen dos fases para
alcanzar la sincronización; una primera fase de adaptación de
velocidad y una segunda de adaptación de posición.

Al iniciar este modo de sincronización existe una primera fase de (SOFT [Link])
adaptación de velocidad en la que se pasa de la velocidad que tenga
en ese momento el eje esclavo a la velocidad de sincronización
obtenida a par tir de la del maestro aplicando la ecuación
anteriormente dada.

5
! ! ! Sincronización

Esta adaptación se realizará teniendo en cuenta la aceleración de


sincronización LP41 [F2341] SynchronizationAcceleration.

Al finalizar la fase de adaptación de velocidad existirá una diferencia


entre la sentencia de posición generada y la posición de
sincronización del eje esclavo calculada según la ecuación.

En la segunda fase de sincronización se produce el ajuste de posición


eliminando así el error de posición existente al terminar la primera
fase, superando o disminuyendo, si fuese necesario, la velocidad de
10. sincronización ya alcanzada. Para realizar este ajuste de posición se
tiene en cuenta la aceleración de sincronización establecida por el
SINCRONIZACIÓN
Testeos durante la sincronización en posición

parámetro LP41 [F2341] Synchronization Acceleration y la


velocidad de sincronización establecida por el parámetro LP42
[F2342] SynchronizationVelocity.

Esta fase concluye cuando la sentencia de posición generada


coincide con la posición calculada mediante la ecuación de
sincronización de fase.

El siguiente esquema muestra este modo de sincronización.

Ejemplo. Sincronización en posición.

dX
dt dXs calculada
dt

dXs interna aceleración de


Área = error de posición
dt sincronización al final de la (fase 1)
velocidad de
sincronización
1
t

ajuste de velocidad ajuste de posición


(fase 1) (fase 2)
2
1. Inicio de la sincronización
2. Alcance de la sincronización

fig. 10 - 6

Representación de la sincronización en posición.

14
Testeos durante la sincronización en posición

La ventana de posición que determina que la sincronización en


posición ha sido alcanzada viene establecida por el parámetro LP228
[S228] SynchronizationPositionWindow. Así, si durante el modo
DDS - MC de sincronización en posición la diferencia entre la posición de
sincronización calculada para el eje esclavo y el feedback de posición
está dentro de esta ventana, se activa la marca LV46 [F2346]
InSynchronization señalando que la sincronización en posición ha
sido alcanzada.
(SOFT [Link])
¡ Obsérvese que durante la primera fase de adaptación de
velocidad no se tendrá en cuenta este testeo !

Justamente al inicio de la sincronización se inicia también un testeo


del tiem po tra nsc urr ido h asta que s e alc anz a e l esta do

6
! ! ! Sincronización

InSynchronization. Finaliza el testeo en el mismo instante en que


se alcanza este estado.

El tiempo máximo para alcanzar el estado InSynchronization queda


determinado en el parámetro LP47 [F2347] Synchronization
Timeout, de manera que, si el estado no ha sido alcanzado en este
tiempo se genera el error E919 (Timeout de sincronización)
advirtiendo de esta situación.

Ajustes durante la sincronización de posición


10.

SINCRONIZACIÓN
Ajustes durante la sincronización de posición
Una vez alcanzada la sincronización en posición, cualquier
modificación del offset de posición mediante la variable LV45 [F2345]
SynchronizationPositionOffset implica un nuevo valor de la
posición de sincronización del eje esclavo. Así, se genera una nueva
fase de adaptación de posición para alcanzar la nueva posición de
sincronización.

Ejemplo. Ajustes durante la sincronización en posición.

dXs calculada
dt
dXs interna
dt
Aceleración de
sincronización
1

ajuste de ajuste de ajuste de t


velocidad posición posición
2 3 4
InSynchronization

1. Inicio de la sincronización
2. Alcance de la sincronización
3. Variación del offset de posición
4. Alcance de la sincronización

fig. 10 - 7

Ejemplo representativo del proceso de sincronización tras una modificación en el offset de posición del
eje esclavo.

Obsérvese el comportamiento de la marca LV46 [F2346]


InSynchronization durante la sincronización y la modificación del
offset de posición del eje esclavo. DDS - MC
Las modificaciones realizadas en el offset de posición durante la
sincronización vuelven a iniciar el testeo del Timeout de
sincronización que finaliza tras ser alcanzada la sincronización en
posición.
(SOFT [Link])

7
! ! ! Sincronización

Sentencias de sincronización

Las instrucciones disponibles en el lenguaje de MC para generar


bloques de movimiento de sincronización en velocidad y en fase o
posición son:

! Sentencia de activación de la sincronización.


! Sentencia de desactivación de la sincronización.
10. ¡ Nótese que el regulador que debe programarse es el que
controla el eje esclavo !
SINCRONIZACIÓN
Sentencias de sincronización

Sentencia de activación del movimiento de


sincronización

Esta sentencia activa el movimiento de seguimiento o sincronización


maestro/esclavo.

¡ Recuérdese que el tipo de sincronización lo establece el


parámetro LP40 [F2340] SynchronizationMode !

Su formato corresponde a la siguiente estructura:


FOLLOW ON

y tras la ejecución de esta sentencia se genera un perfil de movimiento


o trayectoria donde el eje esclavo trata de alcanzar al otro eje
(maestro) o sincronizar con el según una relación establecida.

¡ El ratio de sincronización se actualiza ON-LINE cada vez que


se activa la sincronización con FOLLOW ON !

Sentencia de desactivación del movimiento de


sincronización

Esta sentencia desactiva el movimiento de seguimiento o


sincronización maestro/esclavo.
Su formato corresponde a la siguiente estructura:

FOLLOW OFF
14
y tras la ejecución de esta sentencia se genera un perfil de movimiento
o trayectoria de deceleración con el fin de eliminar la componente de
velocidad de sincronización en curso.

DDS - MC

(SOFT [Link])

8
! ! ! Sincronización

Efecto de sentencias en el ritmo de ejecución

La ejecución de estas sentencias es en tiempo real. Esto significa


que no es posible su preparación por adelantado a la ejecución de
la aplicación de MC y, por tanto, implica que al ejecutar estas
sentencias espera a que no exista ningún bloque de posicionamiento
en ejecución ni preparado para iniciar la sincronización o finalizarla.

La sentencia FOLLOW ON de arranque de la sincronización implica


la ejecución de un paso de adaptación de velocidad (paso 1) en el
caso de sincronización en velocidad o un primer paso de adaptación
10.

SINCRONIZACIÓN
Efecto de sentencias en el ritmo de ejecución
en velocidad y un segundo paso de adaptación de posición (pasos
1 y 2) si se trata de una sincronización en posición.

Estos pasos implican un desplazamiento que tardará un cierto tiempo


en realizarse durante el cual, la ejecución real de la aplicación de MC
se detiene en dicha sentencia hasta que estos pasos hayan
concluído. Durante ese tiempo es posible la ejecución adelantada o
preparación de las sentencias siguientes de la aplicación de MC,
siempre y cuando dichas sentencias permitan su preparación por
adelantado.

En el momento en que se alcance la sincronización, es decir, al


finalizar el paso 1 en velocidad y los pasos 1 y 2 en posición, se da
por finalizada la sentencia FOLLOW ON dándose por ejecutadas las
sentencias preparadas por adelantado, sincronizándose, por tanto, la
ejecución y la preparación.

Por otra parte, tras alcanzar la sincronización, si se introducen


sentencias que modifiquen las variables de ajuste de ratio y/u offset
de velocidad en modo de sincronización en velocidad, o bien, offset
de posición en modo de sincronización de posición, volverán a
generarse los pasos 1 y/o 2 mencionados anteriormente volviendo a
adelantarse la preparación.

Tras la ejecución de la sincronización también se admiten sentencias


de movimiento MOVE que generarán un movimiento que se
superpone al de sincronización, similar al que se genera en el paso
2 de adaptación de la posición para recorrer la distancia indicada en
la sentencia de posicionamiento. Por tanto, una vez alcanzada la
sincronización en velocidad y/o en posición, a la velocidad de
sincronización que posea en ese instante se le suma una
componente de velocidad debida al bloque de posicionamiento.

Para dicho desplazamiento, se considerará la aceleración de


p o s i c i o n a m i e n t o d a d a p o r l a v a r i a b l e LV 1 6 0 [ S 2 6 0 ]
PositioningAcceleration y la velocidad de posicionamiento
especificada en la sentencia MOVE o su valor por defecto y el jerk de
posicionamiento LV193 [S193] PositioningJerk.

Finalmente, la sentencia FOLLOW OFF, finalización de la


sincronización, implica la eliminación de la velocidad de
sincronización del eje esclavo. DDS - MC
Esta frenada tardará un cierto tiempo en realizarse durante el cual la
ejecución real de la aplicación MC se detiene en dicha sentencia
hasta que dicho movimiento haya concluído. Durante este tiempo es
posible la ejecución adelantada o preparación de las sentencias (SOFT [Link])
siguientes de la aplicación MC siempre y cuando dichas sentencias
permitan su preparación por adelantado.

9
! ! ! Sincronización

La siguiente figura muestra la secuencia de ejecución para el ejemplo


de código mostrado cuando se trabaja en el modo de sincronización
en velocidad.

Ejemplo. Secuencia de ejecución en modo de sincronización en


velocidad.

10. dXs calculada


dt Velocidad de
posicionamiento
SINCRONIZACIÓN
Efecto de sentencias en el ritmo de ejecución

dXs interna Aceleración de


dt Aceleración de
posicionamiento
sincronización

Ajuste de Ajuste de
velocidad velocidad
Ajuste de
posición
t
In
Synchronization

Aplicación
... t
FOLLOW ON
DWELL ( 1000 )
F2344 = F2344 / 2
MOVE D = 10 L = NULL
FOLLOW OFF
...

fig. 10 - 8

Ejemplo de secuencias de sincronización en velocidad.

En la figura puede apreciarse la secuencia de tiempos que generarán


las sentencias mostradas, comenzando en el arranque de la
sincronización FOLLOW ON.

La siguiente sentencia es de espera DWELL y su ejecución no admite


la preparación por adelantado, esperando a que finalice la sentencia
anterior, es decir, a que se alcance la sincronización, para empezar
a contabilizar el tiempo de espera.

Transcurrida la espera, la siguiente sentencia modifica el valor del


offset de velocidad, lo que da lugar a un nuevo ajuste de velocidad
de sincronización. Durante ese ajuste la marca InSynchronization

14 se desactiva en espera de que la velocidad interna vuelva a alcanzar


la de sincronización.

Una vez alcanzada, se ejecuta la siguiente sentencia que es un


bloque de posicionamiento. En la figura se pueden observar las dos
componentes de la velocidad, una debida al movimiento de
sincronización y otra al bloque de posicionamiento.
DDS - MC
La siguiente sentencia es la de terminación de la sincronización
FOLLOW OFF, no admitiendo tampoco ejecución por adelantado,
esperando, por tanto, a que finalice el bloque de posicionamiento
previo para terminar la sincronización.
(SOFT [Link])

10
! ! ! Sincronización

La siguiente figura muestra la secuencia de ejecución generada para


otro ejemplo de código cuando se trabaja en el modo de
sincronización en posición.

Ejemplo. Secuencia de ejecución en modo de sincronización en


posición.

dXs calculada
Velocidad de
posicionamiento
10.

SINCRONIZACIÓN
Efecto de sentencias en el ritmo de ejecución
dt
Aceleración de
dXs interna posicionamiento
dt Aceleración de
sincronización

ajuste de
velocidad
ajuste
de posición
t
ajuste ajuste
ajuste de posición de velocidad
In de posición
Synchronization

Aplicación
... t
FOLLOW ON
DWELL ( 1000 )
F2345 = F2345 / 2
MOVE D = 10 L = NULL
FOLLOW OFF
...

fig. 10 - 9

Ejemplo de secuencias de sincronización en posición.

Se observa nuevamente la secuencia de tiempos que generan las


sentencias definidas comenzando en el arranque de la sincronización
FOLLOW ON.

La siguiente sentencia es de espera DWELL y su ejecución no admite


la preparación por adelantado, esperando, por tanto, la finalización de
la anterior, es decir, a que alcance la sincronización para empezar a
contabilizar el tiempo de espera.

Transcurrido el tiempo de espera, la siguiente sentencia modifica el


valor del offset de posición, obligando a realizar un nuevo ajuste de
posición. Durante ese ajuste, la marca InSynchronization se
desactiva en espera de que la posición interna vuelva a alcanzar la
de sincronización.

Una vez alcanzada la sincronización se ejecuta la siguiente sentencia


que es un bloque de posicionamiento. Las dos componentes de la
velocidad son debidas al movimiento de sincronización y al bloque de
posicionamiento.
DDS - MC
El área sombreada que encierra la segunda componente de la
velocidad se corresponde a la distancia indicada en el bloque de
posicionamiento.

La siguiente sentencia es la de terminación de la sincronización


FOLLOW OFF no admitiendo una ejecución por adelantado, (SOFT [Link])

esperando, por tanto, a la finalización del bloque de posicionamiento


previo para terminar la sincronización.

11
! ! ! Sincronización

Efecto de las señales de control

La ejecución de una aplicación de MC así como los movimientos de


sincronización se ven afectados por señales de control como START,
STOP, RESET y ABORT.
Así, si operando en modo "sincronización" se genera una señal de :
STOP: se detendrá la ejecución de la aplicación de MC así como el

10. movimiento de sincronización, pasando a velocidad nula. El sistema


permanecerá en espera hasta la activación de la señal START para
reanudar la ejecución y el movimiento justamente desde el punto en
SINCRONIZACIÓN
Efecto de las señales de control

el que se detuvo.

RESET: el comportamiento del sistema será similar a la activación de


STOP. Se diferencia en que tras la detención del movimiento se
inicializará la aplicación de MC y la reanudación de la ejecución se
realiza desde el principio de la misma.

ABORT: esta señal afecta únicamente al bloque de posicionamiento


que se está ejecutando justamente en ese instante (si hay alguno).
Esto implica que no detiene ni la ejecución de la aplicación de MC
ni el movimiento de sincronización.

Ejemplo. Efecto de las señales de control.

t
In
Synchronization

t
STOP

t
START

t
14 ABORT

t
Aplicación

...
FOLLOW ON
DDS - MC DWELL ( 1000)
MOVE D = 10 L = NULL
FOLLOW OFF
...

fig. 10 - 10
(SOFT [Link])
Ejemplo de secuencia de sincronización. Efecto de las señales de control.

12
! ! ! Sincronización

10.

SINCRONIZACIÓN

DDS - MC

(SOFT [Link])

13
! ! ! Sincronización

10.
SINCRONIZACIÓN

DDS - MC

(SOFT [Link])

14
INDEX
11
Introducción

Para la versión 04.02 del regulador se introduce el software destinado


a la aplicación Index.
Esta aplicación es una herramienta cuya función es latchear
(capturar) la cota exacta en la cual se ha producido un flanco de una
señal.
Conocida esta cota, será posible conocer el lugar exacto donde se ha
originado un evento para actuar en consecuencia.

Comandos, variables y parámetros

Los comandos, variables y parámetros que intervienen en una


aplicación INDEX son:

PC 170 - s170 - ProbingCycleProcedureCommand

Cuando el elemento maestro habilita este comando el regulador


actúa sobre las variables PV205 y PV201. Mientras el comando está
activado la unidad de control puede realizar múltiples medidas.
Si la unidad de control no desea realizar más mediciones cancela
el comando.

PC 170 = 3 comando habilitado


PC 170 = 0 comando deshabilitado

PP 169 - s169 - ProbeControlParameter

Parámetro de control del INDEX. Determina qué


flancos están activados, cual es la entrada física
del INDEX y que feedback será capturado.

( LSB )

selección de la entrada física


0 - conector X4, pines 12(+) y 3(-)
1 - conector X3, pines 5(+) y 6(-)

selección de la captación DDS - MC


0 - 2ª captación
1 - 1ª captación

flanco descendente
0 - flanco inactivo (SOFT [Link])
1 - flanco activo

flanco ascendente
0 - flanco inactivo
1 - flanco activo

1
! ! ! Index

PV 201 - s401 - Probe1

Variable utilizada para asignar un identificador a


la entrada física del INDEX (señal externa). Esto
permite asignar esta variable a un bit de estado.
El regulador comprueba y actualiza esta variable
únicamente si :
PC 170 está activo
PV 205 está activa

11. Estructura del Probe1:

Bit 0 = 0 INDEX inactivo


INDEX
Comandos, variables y parámetros

Bit 0 = 1 INDEX activo

PV 205 - s405 - Probe1Enable

Variable utilizada para asignar un identificador al


probe1Enable. Esto permite asignar esta variable
a un bit de control.
El regulador comprueba esta variable únicamente si :

PC 170 está activo

Para un nuevo ciclo con el mismo flanco de Probe1,


el control deberá activar PV201 a 1.

Estructura del Probe1Enable:

Bit 0 = 0 Probe1 inhabilitado


Bit 0 = 1 Probe1 habilitado

PV 130 - s130 - ProbeValue1PositiveEdge

Dependiendo del valor del bit 4 del parámetro PP169


el regulador almacena el valor de la 1ª o 2ª captación
de posición en esta variable tras el flanco positivo de la
señal de entrada del INDEX.

PV 131 - s131 - ProbeValue1NegativeEdge

Dependiendo del valor del bit 4 del parámetro PP169


el regulador almacena el valor de la 1ª o 2ª captación
14 de posición en esta variable tras el flanco negativo de la
señal de entrada del INDEX.

DDS - MC

(SOFT [Link])

2
! ! ! Index

PV 179 - s179 - ProbeStatus

Si el regulador almacena uno o más valores de


medición mientras PC 170 está activado, automáti-
camente fija el bit correspondiente a esta variable.

Si el control resetea PV 205, el regulador resetea los


bits 0 y 1 de esta variable.

Si el control cancela PC 170 el regulador resetea todos


los bits de esta variable.
11.
( LSB )

INDEX
Comandos, variables y parámetros
Probe1NegativeLatched
0 - no capturado
1 - capturado

Probe1PositiveLatched
0 - no capturado
1 - capturado

PV 209 - s409 - Probe1PositiveLatched

Variable utilizada para asignar un identificador al


Probe1PositiveLatched. Esto permite asignar esta
variable a un bit de estado.
El regulador pone este bit a 0 únicamente si :

PC 170 está activo


PV 205 está a 1
flanco positivo de Probe1 está capturado

El regulador almacena el valor de la captación de posición


en PV 130.

Estructura del Probe1PositiveLatched:

Bit 0 = 0 Probe1 positivo no capturado


Bit 0 = 1 Probe1 positivo capturado

PV 210 - s410 - Probe1NegativeLatched

Variable utilizada para asignar un identificador al


Probe1NegativeLatched. Esto permite asignar esta
variable a un bit de estado.
El regulador pone este bit a 0 únicamente si :

PC 170 está activo


PV 205 está a 1
flanco negativo de Probe1 está capturado

El regulador almacena el valor de la captación de posición


en PV 131. DDS - MC
Estructura del Probe1NegativeLatched:

Bit 0 = 0 Probe1 negativo no capturado


Bit 0 = 1 Probe1 negativo capturado
(SOFT [Link])

3
! ! ! Index

Modo de trabajo

Parametrización

Para establecer la captura de cotas debe inicializarse el parámetro


PP169 [S169] ProbeControlParameter. En este parámetro se define

11. el tipo de flanco que se desea capturar y se selecciona la entrada


física y el feedback de captura.
INDEX
Modo de trabajo

Ejemplo 1.

PP169 = 33 1 0 0 0 0 1 (LSB)

entrada física del Index (2ª capt.)


captura desde 2ª captación
flanco descendente desactivado
flanco ascendente activado

Ejecución

Realizada la parametrización se inicia el proceso de ejecución:

1. Se ejecuta el comando PC170 [S170] ProbingCycleProcedure


Command desde el programa de MC:

DEF REGISTER_COMM S170


REGISTER_COMM = 3

2. Se habilita el INDEX mediante la variable PV205 [S405]


Probe1Enable desde el PLC.

DEFS_INDEX_ENABLE S405
( ) = MOV 1 S_INDEX_ENABLE

3. La variable PV130 [S130] ProbeValue1PositiveEdge toma


automáticamente el valor de la posición dado por la variable PV53
en el momento de llegada del flanco ascendente.

¡ Nótese que el PLC vigila la llegada del flanco ascendente


mediante PV179 bit 0 y PV209 que se ponen a 1 en ese mismo
14 instante ! Se deshabilita automáticamente PV205.

Rearme

El PLC habilitará nuevamente el INDEX estableciéndose el mismo


proceso para la llegada de los siguientes flancos.
DDS - MC
En un nuevo ciclo de ejecución se resetean todas las variables
modificadas en la anterior captura de cotas.

(SOFT [Link])

4
! ! ! Index

Cancelación del comando

Para finalizar con la captura de cotas debe deshabilitarse mediante


una instrucción en el programa PLC que ponga a 0 la variable PV205
o mediante una instrucción en el programa MC que ponga el comando
PC 170 a 0.

Todo este proceso de ejecución viene determinado en el siguiente


diagrama lógico:

11.
3
PC170

INDEX
Parametrización
0
t

PV205 1
0
t

MARCAS
t
PV53 PV53

PV130
t

1 1
PV179. bit 0 0 0
t

1 1
PV209 0 0
t

fig. 11 - 1

Diagrama lógico del proceso.

Ejemplo 2.

Para establecer una captura de cotas por flanco ascendente y


descendente puede parametrizarse PP169 así:

PP169 = 19 0 1 0 0 1 1 (LSB)

entrada física del Index (1ª capt.)


captura desde 1ª captación
flanco descendente activado
flanco ascendente activado

Ejecución

Realizada la parametrización se inicia el proceso de ejecución:

1. Se ejecuta el comando PC170 [S170] ProbingCycleProcedure


Command desde el programa de MC:

DEF REGISTER_COMM S170 DDS - MC


REGISTER_COMM = 3

2. Se habilita el INDEX mediante la variable PV205 [S405]


Probe1Enable desde el PLC.
(SOFT [Link])

DEFS_INDEX_ENABLE S405
( ) = MOV 1 S_INDEX_ENABLE

5
! ! ! Index

3. La variable PV130 [S130] ProbeValue1PositiveEdge toma


automáticamente el valor de la posición dado por la variable PV51
en el momento de llegada del flanco ascendente y la variable
PV131 [S131] ProbeValue1NegativeEdge toma
automáticamente el valor de la posición dado por la variable PV51
en el momento de la llegada del flanco descendente..

¡ Nótese que el PLC vigila la llegada del flanco ascendente


mediante PV179 bit 0 y PV209 y la llegada del flanco descen-

11. dente mediante PV179 bit 1 y PV210 que se ponen a 1 en ese


mismo instante ! Se deshabilita automáticamente PV205.
INDEX
Parametrización

Rearme

El PLC habilitará nuevamente el INDEX estableciéndose el mismo


proceso para la llegada de los siguientes flancos.

En un nuevo ciclo de ejecución se resetean todas las variables


modificadas en la anterior captura de cotas.

Cancelación del comando

Para finalizar con la captura de cotas debe deshabilitarse mediante


una instrucción en el programa PLC que ponga a 0 la variable PV205
o mediante una instrucción en el programa MC que ponga el comando
PC 170 a 0.

Todo este proceso de ejecución viene determinado en el siguiente


diagrama lógico:

3
PC170
0
t

1 1 1
PV205
0 0 0
t
(1) (2)
MARCAS
t

PV51 PV51
PV130
t

PV51 PV51
PV131
t
1 1
PV179. bit 0 0 0
t

1 1
PV179. bit 1 0 0
t

1 1
PV209 0 0
t

14 PV210
1
0
1
0
t

fig. 11 - 2

Diagrama lógico del proceso.

DDS - MC ¡ Nótese que sólo se considera la captura de cotas estando


habilitado PC170 y PV205. Así las marcas (1) y (2) no se tie-
nen en cuenta. Además PV205 no se deshabilita hasta que
lleguen los dos flancos (ascendente y descendente) parame-
trizados en PP169 !

(SOFT [Link])

6
! ! ! Index

ANEXO 1

APLICACIÓN EN CIZALLA VOLANTE

Una bobina alimenta una línea de corte de chapa. El regulador que


controla el proceso deberá realizar el contaje de un nº determinado
de marcas en la chapa mediante el detector de marcas del material
y enviar la orden de corte a la cizalla.

En el instante de ejecución del corte ambas deben estar sincroniza-


11.

INDEX
ANEXO 1
das en velocidad y posición.

Seguidamente, la cizalla deberá incrementar su velocidad con el fin


de separar la chapa cortada del resto de la bobina.

Finalmente volverá a su posición inicial para iniciar un nuevo ciclo.

cizalla

Vf
marcas
detector de marcas
- Index -
DRIVE MODULE

X3

X4
2ª captación
NODE
X5 SE LEC T

OUT

STATU S
D ISPLA Y

IN
1 2

rueda medidora
9 10
X8
1

X1

X6

9
P1 X2
P2
1 1
GN D
DR IVE
EN ABL E
SP E E D
EN ABL E

DR . X2
O. K.

X7

0V
+2 4Vd c
8

FU SE
(250V)
11
2,5A( F)

D ANG ER
H IGH V OLTAGE
D IS CHAR GE TIM E>1Min

fig. 11 - 3

Esquema de un sistema con cizalla volante.

DEFINES DE VARIABLES CON IDENTIFICADORES SERCOS ®

DEF POS_COMMAND S00047 ; PositionCommand


DEF LIM_POS S00049 ; PositivePositionLimit
DEF LIM_NEG S00050 ; NegativePositionLimit
DEF POS_FEEDBACK1 S00051 ; PositionFeedback1
DEF POS_FEEDBACK2 S00053 ; PositionFeedback2
DEF MODULO S00103 ; ModuleValue
DEF FEEDRATE S00108 ; FeedrateOverride
DEF JERK S00193 ; PositioningJerk
DEF TARGET_POS S00258 ; TargetPosition
DEF VELOCITY S00259 ; PositioningVelocity DDS - MC
DEF ACC S00260 ; PositioningAcceleration

(SOFT [Link])

7
! ! ! Index

DEFINES DE MARCAS SERCOS ®

DEF VEL_GT_LIMIT S00315; PositioningVelocityGreaterThanLimit


DEF TARGET_GT_LIMIT S00323; TargetPositionOutsideTravelRange
DEF IN_POSITION S00336; InPosition
DEF POS_ATTAINED S00342; TargetPositionAttained
DEF INTERP_HALTED S00343; InterpolatorHalted
DEF POS_FEEDBACK_ST S00403; PositionFeedbackStatus
DEF POS_COMM_ST S00404; PositionCommandStatus
11.
DEFINES DE VARIABLES Y MARCAS CON IDENTIFICADORES FAGOR
INDEX
ANEXO 1

DEF LINK F02310 ; ProcessBlockLinkMode


DEF LIM_FRO F02311 ; FeedrateOverrideLimit
DEF DF_SPEED F02312 ; PositioningVelocityDefault
DEF K_OPER_MODE F02313 ; KernelOperationMode
DEF K_AUTO_SUBMODE F02314 ; KernelAutoSubmode
DEF K_START_SIGNAL F02315 ; KernelStartSignal
DEF K_STOP_SIGNAL F02316 ; KernelStopSignal
DEF K_RESET_SIG F02317 ; KernelResetSignal
DEF K_ABORT_SIGN F02318 ; KernelAbortSignal
DEF K_MAN_SUBMODE F02319 ; KernelManualSubmode
DEF JOG_POS F02320 ; JogPositiveSignal
DEF JOG_NEG F02321 ; JogNegativeSignal
DEF JOG_VEL F02322 ; JogVelocity
DEF JOG_INC_POS F02323 ; JogIncrementalPosition
DEF FEEDRATE_NULL F02324 ; FeedrateOverrideEqualCero

____________________________________________________________________
MOTION. INC

; Defines de los parámetros necesarios para establecer el modo principal y el submodo


;de trabajo.

DEF K_OPER_MODE F02313L ; modo de operación principal


; 0 - automático
; 1 - manual

DEF K_AUTO_SUBMODE F02314L ; submodo del modo automático


; 0 - continuo
14 ; 1 - bloque a bloque
; 2 - instrucción a instrucción

DEF K_MAN_SUBMODE F02319L ; submodo del modo manual


; 0 - continuo
; 1 - incremental
DDS - MC
DEF K_START_SIG F02315L ; un flanco de subida hace que se
; ponga en marcha el programa

DEF K_STOP_SIG F02316L ; un flanco de subida hace que se


(SOFT [Link]) ; pare el programa

DEF K_RESET_SIG F02317L ; hace un reset en el programa

DEF K_ABORT_SIG F02318L ; aborta el bloque en ejecución

8
! ! ! Index

; Defines de los parámetros necesarios para el movimiento de jog.

DEF JOG_POS F02320L ; movimiento manual en sentido


; positivo
DEF JOG_NEG F02321L ; movimiento manual en sentido
; negativo

; Defines de otras señales del FMC.

DEF K_RUNNING_FLAG F02330L


11.

INDEX
ANEXO 1
____________________________________________________________________

____________________________________________________________________

; CIZALLA VOLANTE

; Aplicación ejemplo para el uso de la señal de registro y de la sincronización.


____________________________________________________________________

#INCLUDE "C:\Fagor\Editor\[Link]"
; Definiciones para la sincronización

DEF GEAR_RATIO_NUM S237


DEF GEAR_RATIO_DEN S236
DEF SYN_MODE F2340
DEF SYN_POS_OFFSET F2345

; Definiciones para la señal de registro

DEF REGISTER_PARAM S169


DEF REGISTER_ENABLE S405
DEF REGISTER_COMM S170

; Definiciones para los movimientos independientes, no sincronizados

DEF MODO_WAIT_IN_POS2 ; modo WAIT_IN_POS

; Otras definiciones

DEF INICIO_CICLO M1
DEF CIZALLA_ABAJO M2
DEF CIZALLA_ARRIBA M3
DEF FIN_AVANCE M4
DEF FIN_CICLO M5

; Parámetros DDS - MC

PAR DISTANCIA ; distancia entre el detector de marcas del material y la


; posición de reposo de la cizalla.

(SOFT [Link])
PAR AVANCE ; avance de la cizalla tras el corte.

PAR NUM_MARCAS ; número de marcas por cada ciclo o pieza.

9
! ! ! Index

; ----------------------------- Módulo para el modo automático -----------------------------------

PROGRAM

; inicializaciones:

; pasar al PLC los valores iniciales de ‘ DISTANCIA ’ y ‘ NUM_MARCAS ’

#R1 = DISTANCIA
11. R2= NUM_MARCAS
INDEX
ANEXO 1

; establecer el modo de enlace de bloques, buscar I0 e ir hasta el origen

LINK = MODO_WAIT_IN_POS
HOME
MOVE P = 0

; establecer sincronización en posición, con ratio 1:1

SYN_MODE = 1 ; sincronización en fase


GEAR_RATIO_NUM = 1
GEAR_RATIO_DEN = 1
SYN_POS_OFFSET = 0

; el parámetro PP169 debe contener el valor adecuado

REGISTER_COMM = 3 ; arrancar el comando de la señal de registro


WAIT ( REGISTER_COM EQ 7 )
REGISTER _ENABLE = 1 ; habilitar la señal de registro

; ---------------------------------------------------------------------------------------------------------------------
; bucle del programa

WHILE (1)
WAIT (NOT INICIO_CICLO) ; esperar el inicio del ciclo
WAIT ( INICIO_CICLO)
FOLLOW ON ; arrancar la sincronización
WAIT (NOT CIZALLA_ABAJO) ; esperar a que baje la cizalla
WAIT (CIZALLA_ABAJO)
MOVE D = AVANCE ; realizar avance de separar cizalla tras corte
FIN_AVANCE = 1 ; avisar al PLC de que ya se ha realizado el
; avance
14 WAIT (NOT CIZALLA_ARRIBA); esperar a que suba la cizalla
WAIT (CIZALLA_ARRIBA)
FOLLOW OFF ; detener el movimiento de sincronización
MOVE P = 0 ; volver al origen
FIN_CICLO = 1
ENDWHILE
DDS - MC REGISTER_COMM = 0 ; detener el comando de la señal de registro

END

; ---------------------------------------------------------------------------------------------------------------------
(SOFT [Link])

10
! ! ! Index

---------------------------------------------- Programa de PLC -----------------------------------------------

#INCLUDE « MOTION. INC «

; marcas

DEF M_MARKS_TOO_FAST M25


DEF M_INDEX_TRIGGERED M26
DEF M_ERR_1 M27
DEF M_ERR_2 M28 11.

INDEX
ANEXO 1
; registros

DEF R_N_MARK R2
DEF R_MARK_COUNTER R22
DEF R_STATE_INDEX R23L
DEF R_TEMP R24
DEF R_LIM_SUP R27
DEF R_LIM_INF R28
DEF R_LATCHED_VALUE R29

; temporizadores

DEF N_T_SHARED 2
DEF T_SHARED T2
DEF N_T_INDEX 3
DEF T_INDEX T3
DEF S_FEEDBACK2 S53
DEF S_FEEDBACK1 S51
DEF S_ERR_SET S34781
DEF S_INDEX_LATCHED S409
DEF S_LATCHED_VALUE S130
DEF S_INDEX_ENABLE S405

; estados del INDEX

DEF N_INDEX_WAIT 1
DEF N_INDEX_WAIT_TRIG 2
DEF N_INDEX_ENABLE_DLY 3
DEF N_INDEX_ENABLE 4
DEF N_INDEX_WAIT_ARM 5
DEF N_INDEX_VAL_RD 6
DEF N_INDEX_WAIT_2_RD 7

;-----------------

DEF N_ERR_1 2580 ; error 70


DEF N_ERR_2 2581 ; error 71
DDS - MC
CY1

( ) = RES M_MARKS_TOO_FAST
( ) = RES M_INDEX_TRIGGERED = RES M_ERR_1 = RES M_ERR_2
( ) = RES N_INDEX_WAIT R_STATE_INDEX 16 (SOFT [Link])

END

11
! ! ! Index

PRG

M_ERR_1 = MOV N_ERR_1 S_ERR_SET 16 = RES M_ERR_1


M_ERR_2 = MOV N_ERR_2 S_ERR_SET 16 = RES M_ERR_2

( ) =CAL ENABLES ; supervisión de habilitación de potencia


( ) = CAL MODE AUTO ; máquina de estados de la cizalla
( ) = CAL INDEX_LATCH ; máquina de estados del index
11. ( ) = CAL COMPARADOR
INDEX
ANEXO 1

END

; ---------------------------------------------------------------------------------------------------------------------

ENABLES:
END

; ---------------------------------------------------------------------------------------------------------------------

; - MÁQUINA DE ESTADOS PARA CAPTURA DE COTAS - INDEX

INDEX_LATCH:

; entrada de máquina de estados. Llamar cíclicamente

CPS R_STATE_INDEX EQ N_INDEX_WAIT_TRIG = JMP INDEX_WAIT_TRIG


CPS R_STATE_INDEX EQ N_INDEX_WAIT_ARM = JMP INDEX_WAIT_ARM
CPS R_STATE_INDEX EQ N_INDEX_ENABLE_DLY = JMP INDEX_ENABLE_DLY
CPS R_STATE_INDEX EQ N_INDEX_ENABLE= JMP INDEX_ENABLE
CPS R_STATE_INDEX EQ N_INDEX_VAL_RD = JMP INDEX_VAL_RD
CPS R_STATE_INDEX EQ N_INDEX_WAIT_2_RD= JMP INDEX_WAIT_2_RD

END

INDEX_WAIT_TRIG:

; espera a la captura de una cota

CPS S_INDEX_LATCHED EQ 0 = RET ; si no hay cota, salir


() = SBS R_MARK_COUNTER 1 R_MARK_COUNTER ; contar la marca
() = MOV N_INDEX_ENABLE_DLY R_STATE_INDEX 16
CPS R_MARK_COUNTER GT 0 = RET
14 () = MOV N_INDEX_WAIT_2_RD R_STATE_INDEX 16

END

INDEX_WAIT_2_RD:

DDS - MC B3TIME_ = TRS N_T_INDEX = TG1 N_T_INDEX 20


T_INDEX = MOV N_INDEX_VAL_RD R_STATE_INDEX 16

END
(SOFT [Link])

12
! ! ! Index

INDEX_VAL_RD:

T_INDEX = RET ; esperar hasta que finalice la temporización


; espera un tiempo antes de leer la cota capturada

() = MOV S_LATCHED_VALUE R_LATCHED_VALUE ; leer el valor


() = MOV R_N_MARKS R_MARK_COUNTER ; inicializar el contador
M_MARKS_TOO_FAST = SET M_ERR_1 ; si existe overflow activa el error
() = SET M_INDEX_TRIGGERED ; indicar que hay una nueva posición
; capturada
= SET M_MARKS_TOO_FAST
11.

INDEX
ANEXO 1
() = MOV N_INDEX_ENABLE_DLY R_STATE_INDEX 16

END

INDEX_ENABLE_DLY:

; espera un poco antes de habilitar Index

B3TIME_ = TRS N_T_INDEX = TG1 N_T_INDEX 20


T_INDEX = MOV N_INDEX_ENABLE R_STATE_INDEX 16

END

INDEX_ENABLE:

T_INDEX = RET ; esperar hasta que finalice la temporización


() = MOV 1 S_INDEX_ ENABLE ; habilitar el Index nuevamente
() = MOV N_INDEX_WAIT_ARM R_STATE_INDEX 16

END

INDEX_WAIT_ARM:

; espera hasta que Index esté completamente armado.

CPS S_INDEX_LATCHED NE 0 = RET


() = MOV N_INDEX_WAIT_TRIG R_STATE_INDEX 16

END

MODE_AUTO:
END

; ---------------------------------------------------------------------------------------------------------------------

COMPARADOR:
END
DDS - MC

(SOFT [Link])

13
! ! ! Index

11.
INDEX

DDS - MC

(SOFT [Link])

14
PROTOCOLO DE COMUNICACIÓN
DNC50 12
Función, capacidades y limitaciones

El DNC50 es uno de los medios disponibles en la comunicación digital


con un PC vía línea serie RS232 o RS422.

Es el protocolo implementado (puesto en ejecución) bajo el uso de


la interfaz gráfica WINDDSSETUP que oculta los detalles de bajo
nivel de comunicación y proporciona aplicaciones para corregir
parámetros, visualizar variables del regulador mediante un
osciloscopio...

Un PC vía DNC, puede enviar o recibir desde el regulador digital:

! Programas de PLC y MC.


! Tablas de parámetros.
! Parámetros y variables.

Características funcionales

! Señal punto a punto entre un elemento maestro y un regulador


vía línea serie RS232.
! Señal multipunto entre un elemento maestro y varios
reguladores vía línea serie RS422.
! Transferencia de datos: half-duplex; aunque existen dos líneas
de datos (una transmite y otra recibe), no es posible recibir un
mensaje en una dirección mientras se envía otro mensaje en
la otra dirección. No obstante, es posible recibir caracteres de
confirmación (acuse de recibo) enviados desde el otro
extremo.
! Capacidad para abortar comunicaciones desde cualquier
extremo cuando uno de los dos así lo indique.

Protocolo DNC
DDS - MC
Seguidamente se hac e una descr ipción del protocolo de
comunicación entre un regulador digital FAGOR y un PC (u otro
dispositivo que efectúe como maestro el protocolo de ejecución) vía
DNC sin tener en cuenta la información a transmitir. Por tanto, trata
del "nivel de transmisión de datos" que garantiza la integridad de los (SOFT [Link])
datos a pesar de interferencias electromagnéticas.

1
! ! ! DNC50

Características internas

! Comunicación asíncrona.
! Protocolo orientado a carácter.
Hay una serie de caracteres especiales que no pueden
transmitirse como datos y que realizan únicamente
funciones de control.

12. No es necesario utilizar las líneas de control de datos: RTS,


DTR, CTS y DSR de una línea RS232 para funciones de
control.
PROTOCOLO DE COMUNICACIÓN DNC50
Características internas

! Potente sistema de detección de errores de transmisión.


Cada paquete de datos finaliza con unos caracteres de
chequeo según el algoritmo CRC-16 que tiene una tasa de
error no detectado de 1 en 1000 millones de errores de
transmisión.
! Recuperación automática de errores.
En líneas sometidas a interferencias electromagnéticas, el
protocolo retransmite automáticamente aquellos paquetes
que tengan errores sin necesidad de iniciar nuevamente la
comunicación.

Definición de la terminología

! Comunicación: Es la transferencia completa de una informa-


ción entre los dos elementos que enlaza el DNC.
Desde el punto de vista del maestro hay dos clases de
comunicación:
• Envío de información: Su objetivo es enviar datos al otro
elemento y requiere la transferencia de un único mensaje.
• Petición de información: Su objetivo es pedir una
información al otro elemento y de recibir la información de
respuesta que envía el esclavo. Requiere la transferencia
de dos mensajes; uno del cliente al servidor indicando la
petición y otro del servidor al cliente con la información
solicitada.
! Cliente: Es el elemento PC u otro dispositivo que inicia la
comunicación.
! Servidor: Es el elemento REGULADOR que contesta a la
18 solicitud del cliente.
! Mensaje: Es cualquier información (datos) transferida entre
maestro y esclavo.
! Mensaje de Origen: Es el mensaje que el cliente envía al
servidor.
DDS - MC Pueden ser de dos tipos: De envío o de solicitud de
información. En el paquete de cabecera, el primer carácter trás
SOH indica si es de petición de información (R) o es de envío
de información (S).
! Mensaje de Respuesta: Es el mensaje generado por el
(SOFT [Link]) servidor cuando el mensaje origen es del tipo petición de
información.

2
! ! ! DNC50

Cuando el servidor rompe la transmisión del mensaje origen,


envía al cliente un mensaje de respuesta informando de la
causa de la ruptura, aunque el mensaje origen fuera de envío
de información.
! Maestro: Es el elemento que envía un mensaje. No debe
confundirse con el concepto de cliente.
! Esclavo: Es el elemento opuesto al maestro. No debe
confundirse con el concepto de servidor.
! Paquete: Cuando un mensaje es demasiado grande (más de
1024 caracteres) se divide en paquetes. Por tanto, un mensaje 12.
puede estar compuesto por uno o más paquetes.

PROTOCOLO DE COMUNICACIÓN DNC50


Caracteres especiales
! Paquete de cabecera: Es el primer paquete de un mensaje y
define la orden que se desea ejecutar.

Caracteres especiales

El protocolo DNC usa varios caracteres ASCII de comunicaciones.


Estos no representan ninguna letra, número u otro caracter de un
teclado estandar. Para que puedan representarse se utilizan los
siguientes mnemónicos:

ENQ (Enquiry Character - carácter ASCII 5)


Realiza dos funciones:
• Inicia el protocolo DNC en un intento de control de la línea
de comunicaciones.
• Indica que ha de transmitirse nuevamente el último
reconocimiento.

SOH (Start Of Header Character - carácter ASCII 1)


Comienzo del paquete de cabecera.

STX (Start Of Text Character - carácter ASCII 2)


Comienzo del paquete de texto.

ETB (End Of Transmission Block - carácter ASCII 23)


Todos los paquetes excepto el último deben finalizar con ETB.

ETX (End Of Text Character - carácter ASCII 3)


El último y sólo el último paquete finaliza en ETX.
DDS - MC

CAN (Cancel - carácter ASCII 24)


Indica que se ha finalizado prematuramente la transferencia
de datos. Así, cuando el servidor rompa la recepción de un (SOFT [Link])
mensaje origen, seguidamente enviará un mensaje con la
causa que ha provocado dicha interrupción.

3
! ! ! DNC50

NAK (Negative Acknowledgement - carácter ASCII 21)


El servidor indica que ha detectado algún error en la
transmisión del paquete anterior.

EOT (End Of Transmission Character- carácter ASCII 4)

12. Fin de transmisión de un mensaje.


PROTOCOLO DE COMUNICACIÓN DNC50
Caracteres especiales

En el protocolo también aparecen otros caracteres ASCII


normalmente utilizados: el « ; », el 0, el 1 y las letras mayúsculas
A, B, C, ...

; (carácter ASCII 59)


Se utiliza para indicar que el DNC está activo pero no
preparado para recibir un nuevo paquete o para conectarse,
según sea el caso. Cuando el receptor esté preparado
transmitirá el reconocimiento que faltaba.

0y1 (caracteres ASCII 48 y 49)


(también escrito como ACK0 y ACK1)
Se utilizan como reconocimientos positivos alternativos de
los paquetes.

A, B, C, ...
Las letras mayúsculas A, B, C, ... se utilizan para identificar
al regulador con el cual el maestro desea comunicarse, donde
A representa el primer regulador, B el segundo, C el tercero
y así el resto.

Otros caracteres normales se utilizan para el CRC-16:

CRC-16 (Cyclic Redundancy Check characters)


Caracteres de chequeo según el algoritmo CRC-16.
Son cuatro caracteres que se transmiten inmediatamente
después del carácter de fin de paquete, sea és ETB ó ETX.
El cálculo de los caracteres de chequeo de redundancia cíclica
18 se basa en el polinomio CRC-16. El resultado del CRC.16 son
16 bits, es decir, un número hexadecimal de 4 dígitos que se
transmite como 4 caracteres ASCII realizando la siguiente
transformación:

Dígito hexadecimal Carácter ASCII


DDS - MC 0 1.....9 A B C D E F 0 1.....9 : ; < = > ?

Se transmite primero el carácter correspondiente al dígito


menos significativo.
El cálculo del CRC-16 comienza con el primer carácter
(SOFT [Link])
después de SOH o STX e incluye el ETX o el ETB.

4
! ! ! DNC50

Se utilizarán otros dos caracteres especiales: la coma y el


separador de línea. Estos no son caracteres de protocolo, sino
separadores de texto.

, (Coma - carácter ASCII 44)


Carácter separador de parámetros.

LF (Line feed - carácter ASCII 10)


Salto de línea. 12.

PROTOCOLO DE COMUNICACIÓN DNC50


Transmisión de un mensaje
Transmisión de un mensaje

En este apartado se describe la transmisión de un mensaje con un


ejemplo de comunicación sin errores.

La secuencia es la siguiente:

MAESTRO ESCLAVO

ENQ C ( 1 ) fase de conexión


( " C ", regulador 3 por ejemplo )
0 ( ACK0 )
SOH texto de cabecera ETB CRC-16 ( 2 ) paquete de cabecera
1 ( ACK1 )
STX texto ETB CRC-16 ( 3, 4, 5 ) paquetes de texto
0
...........................................
...........................................
STX texto ETX CRC-16
0ó1

EOT ( 6 ) fase de desconexión

El elemento situado a la izquierda desea transmitir un mensaje. Para


ello sigue las siguientes fases:

(1) Fase de conexión

El elemento que quiere ser maestro (generalmente un PC o


dispositivo similar) transmite el carácter de ENQ seguido por el
número de elemento con el que desea conectar, donde el carácter
ASCII A representa el regulador nº 1, el carácter ASCII B representa
el regulador nº 2, ... Si el regulador solicitado está preparado, envía
un carácter ASCII 0.
Desde este mismo instante el primer elemento es el maestro y el
segundo el esclavo.

(2) Paquete de cabecera DDS - MC


El maestro transmitirá un paquete de cabecera indicando la orden
que debe ser ejecutada.
El esclavo comprobará el CRC-16 y el significado de la orden, y si
todo es correcto reconocerá el paquete transmitiendo el carácter 1.
(SOFT [Link])

5
! ! ! DNC50

(3, 4, 5) Paquetes de texto

Si la orden en curso requiere el paso de texto tal como líneas de


programas o de tablas, se transmitirán sucesivos paquetes de texto.
El esclavo comprobará el CRC-16 y que no existen otros problemas
tales como saturación de memoria. Si todo es correcto, reconocerá
cada uno de los paquetes de texto transmitiendo alternativamente
0 y 1.

12. (6) Fase de desconexión


PROTOCOLO DE COMUNICACIÓN DNC50
Transmisión de un mensaje

El último paquete finaliza con ETX y después de ser reconocido por


el esclavo el maestro transmite el carácter EOT como final de la
transmisión del mensaje.

Podrían producirse los siguientes casos especiales:

! Reconocimiento negativo NAK:


Pudiera ser que, debido a interferencias electromagnéticas en
la línea de transmisión de datos, algún carácter llegue
modificado al esclavo e incluso no llegue. El esclavo detectará
este hecho ya que el CRC-16 que él calcula no coincide con
el recibido. El esclavo, por tanto, desechará el paquete y
av i s a r á a l m a e s t r o t r a n s m i t i e n d o e l c a r á c t e r N A K .
Seguidamente y si no se ha superado el nº máximo de intentos,
el paquete es retransmitido por el maestro.
! Reconocimiento del esclavo no válido:
Es posible que el reconocimiento de un paquete por parte del
e s c lavo, ya s e a 0 , 1 , N A K o e l c a r á c t er « ;» l l eg u e
incorrectamente al maestro. El maestro transmitirá un carácter
ENQ indicando al esclavo que debe transmitir su último
reconocimiento o el carácter «;» en su caso.
! El maestro no recibe el reconocimiento o el carácter «;»:
Cuando el maestro transmite un paquete o un ENQ, se activa
un temporizador. Si se supera un tiempo antes de que se reciba
un reconocimiento y no se ha llegado al nº máximo de intentos,
el maestro transmite un ENQ.
Pueden darse dos casos:
• El maestro no recibe el reconocimiento o el carácter «;»
p o r q u e s e h a p e r d i d o d e b i d o a i n t e r fe r e n c i a s
electromagnéticas.
18 • El esclavo todavía no ha transmitido el reconocimiento, bien
porque no ha finalizado de tratar el paquete o bien porque,
en la fase de desconexión todavía no está preparado para
conectarse.
El esclavo responderá con el carácter «;». Se transmitirá el
reconocimiento que falta cuando deje de cumplirse la
DDS - MC
condición que lo retenía.
Los «;» no incrementan la cuenta de intentos.
! Uno de los dos elementos rompe la comunicación
transmitiendo el carácter CAN:
(SOFT [Link])

6
! ! ! DNC50

Hay var ias c ausa s p or las qu e s e pu ede rom per la


comunicación:
• El esclavo la abortará cuando la orden o los datos sean
incorrectos.
• El maestro la abortará cuando se produzca un nº límite de
fallos consecutivos: NAK, reconocimientos no válidos o no
recibidos.
• El esclavo detecta que ha pasado un tiempo límite desde
el último carácter recibido.

Cuando el servidor rompe la recepción del mensaje origen,


12.

PROTOCOLO DE COMUNICACIÓN DNC50


Comunicación
automáticamente envía un mensaje indicando el error.
• Los dos extremos deciden conectarse en el mismo instante:
En este caso, ambos enviarán sendos caracteres ENQ.
Puesto que el PC tiene prioridad, desechará el ENQ que
recibe mientras que el regulador reconocerá su estado de
esclavo enviando un 0.

Comunicación

Una comunicación de envío de información sólo requiere la


transmisión de un mensaje. Una comunicación de petición de
información requiere el intercambio de dos mensajes y sigue el
siguiente esquema:

Cliente Servidor

Maestro Esclavo Mensaje origen


ENQ ID ( ID = ' A ' o ' B ' ... )
0
SOH R, orden, ETX CRC-16
1
EOT

Esclavo Maestro Mensaje respuesta

ENQ
0
SOH S, orden, ETB CRC-16
1
STX texto ETB CRC-16
0
............
.............
.............
.............
.............
.............
STX texto ETX CRC-16
0ó1 DDS - MC
EOT

Obsérvese que:
• El primer carácter, detrás del SOH en el paquete de cabecera
(SOFT [Link])
del mensaje original es una R, indicando, por tanto, una
comunicación de petición de información. Sin embargo, en el
mensaje de respuesta es una S, indicando con ello que este
segundo mensaje es de envío de información.

7
! ! ! DNC50

• La orden de ambos mensajes es idéntica. Ver esquema.


• Los papeles de maestro y esclavo cambian de una fase a otra,
mientras que permanecen los de cliente y servidor. Si el
servidor rompe la transmisión del mensaje origen, transmite un
mensaje de respuesta, aunque la comunicación fuese de envío
de información.

12. Órdenes
PROTOCOLO DE COMUNICACIÓN DNC50
Órdenes

En este apartado se describen las órdenes que pueden ejecutarse vía


DNC y el formato requerido para cada orden.

Notación

• La coma «,» es el separador de los campos del paquete de


cabecera.
• Se representa el espacio en blanco con el mnemónico SP.
Cuando en una línea de texto, ya sea de tabla, de programa o
de directorio, se pueda transmitir un espacio, también se
podrán transmitir múltiples espacios.
• Por medio de los símbolos SP y LF se indicará expresamente
cuándo es necesario transmitir un espacio o un salto de línea
durante una transmisión.
• Para representar los caracteres especiales de protocolo, se
utilizará la notación descrita en el apartado correspondiente al
protocolo.
• Cuando un campo numérico tenga longitud variable, se
indicará el nº máximo de dígitos que puede tener. Por ejemplo
se indica que un desplazamiento de origen puede tomar
valores entre 0 y 99999.99999 o 0 y -99999.99999 por medio
de la notación ± 5.5.
• Se han definido los mnemónicos que utiliza el DNC a partir de
las iniciales en inglés de sus significados.
• Todos los mnemónicos usan letras MAYÚSCULAS.

Texto del paquete de cabeza


18 El texto del paquete de cabecera especifica todos los datos
necesarios para identificar la orden que se quiere realizar. Está
compuesta de los siguientes campos terminados en coma:
• El mnemónico R o S que indica si se trata de enviar información
o de solicitarla.
DDS - MC • El mnemónico del grupo: (TAB, VAR, ...).
• El mnemónico que identifica un subgrupo.
• Diversos parámetros que especifican opciones y otras
informaciones.
(SOFT [Link])
Nótese que el último parámetro finaliza en una coma (,).

Cuando no se desee utilizar algún parámetro opcional, se suprimirá


el campo correspondiente, pero manteniendo la coma de separación
de parámetros.

8
! ! ! DNC50

Paquetes de texto

Cuando un mensaje es del tipo enviar información, los datos pueden


ir en el paquete de cabecera o, dependiendo de la orden como en el
caso de transferencia de programa, en posteriores paquetes de texto.
Un paquete de texto contendrá líneas enteras, y si la última línea no
cupiese entera, se transmitirá en el siguiente paquete.

Envío o petición
12.

PROTOCOLO DE COMUNICACIÓN DNC50


Paquetes de texto
Se ha visto ya que, hablando de protocolo, las comunicaciones
pueden ser de dos tipos:

Mnemónico Significado
S Envío de información
R Petición de información

La petición de información supone pedir una información y recibir


respuesta del otro elemento.

La respuesta no tiene ninguna diferencia con una comunicación del


tipo envío de información, que hubiese empezado en el segundo
elemento y tratase de transferir la misma información.

Grupos de órdenes

Los grupos de órdenes en un regulador digital son: TAB, VAR y DOM.

Grupo TAB

Este grupo permite leer o escribir en la tabla de parámetros del


regulador.

Ejemplo: Lectura de la tabla de parámetros del regulador:

Esclavo Maestro

ENQ ID ( ID si es multieje)
0
SOH R, TAB, [Link], ETX CRC-16
1

EOT
ENQ
0

SOH S, TAB, [Link], ETB CRC-16 DDS - MC


1
STX
AP1 valor LF
AP5 valor LF
CP1 valor LF
(SOFT [Link])
.....................
.....................
ETX CRC-16
0
EOT

9
! ! ! DNC50

ATENCIÓN: ¡Nótese que si el mensaje sombreado es más lar-


go que la longitud del buffer se dividirá en paquetes de texto!

Grupo VAR

El PC puede solicitar y en algunos casos modificar los valores de


las variables del regulador. La variable ERRDNC es especial porque
en ella, tanto el PC como el regulador indican los errores que se

12. producen durante el uso del DNC.

Ejemplo: Supóngase que el PC pide el valor de la variable SV1 y


PROTOCOLO DE COMUNICACIÓN DNC50
Grupos de órdenes

recibe la respuesta. Si SV1 tiene un valor de 4000 r.p.m.:

Maestro Esclavo

ENQ ID ( ID si es multieje )
0
SOH R, VAR, SV1, ETX CRC-16
1
EOT
ENQ
0

SOH S, VAR, SV1, 4000, ETX CRC-16


1
EOT

Grupo DOM

Este grupo permite una lectura de las variables cuya longitud es


mayor que la longitud del buffer del regulador o del PC.

Maestro Esclavo

ENQ ID ( ID si es multieje )
0
SOH R, DOM, JV5, ETX CRC-16
1
EOT
ENQ
0

SOH S, DOM, JV5, 2000, ETX CRC -16

18 1
STX

paquete 1

ETX CRC - 16

0
DDS - MC STX

paquete 2

ETX CRC - 16

1
(SOFT [Link]) STX

paquete N

ETX CRC - 16

EOT

10
! ! ! DNC50

Lectura / escritura de variables de PLC y MC

Ubicación de las variables de PLC

Los recursos del PLC están situados en direcciones que pueden


variar de una versión a otra. Para ocuparse de esta variación existe
una estructura que puede leerse desde el regulador que nos indica
dónde está almacenada la información del PLC. 12.

PROTOCOLO DE COMUNICACIÓN DNC50


Lectura / escritura de variables de PLC y MC
Esta variable es GV35 y la información que proporciona es:

Versión de parámetro: Reservada (4 caracteres)


Nº de recursos: (4 caracteres)

y para cada recurso una estructura con los datos:

Clase de recurso: (2 caracteres)

donde el nibble bajo (4 bits menos significativos) significa:

1 bit word (16 bits)


2 char (8 bits)
3 short (16 bits)
4 long (32 bits)
5 bit (1 bit)

Cuando es un bit, el nibble alto (4 bits más significativos) indica el


offset de ese bit.

Id del recurso: (2 caracteres)

identifica el recurso y para la versión 1 tiene los siguientes valores:

1 Entradas
2 Imagen de las entradas
3 Salidas
4 Imagen de las salidas
5 Marcas
6 Imagen de las marcas
7 Registros
8 Contenido de los contadores.
9 Estados de los contadores.
10 Entradas de habilitación (Cens) de los contadores. DDS - MC
11 Estados de los temporizadores
12 Entradas de habilitación (Tens) de los temporizadores.

Dirección: (8 caracteres).
(SOFT [Link])
Comienzo del recurso correspondiente
Nº de elementos: (4 caracteres)
Offset del siguiente (4 caracteres).
elemento: Diferencia entre campos correspondientes

11
! ! ! DNC50

Ejemplo.

Trás leer GV35 desde un regulador:

GV35 =
0001 versión
000C nº de recursos 12(0xC)

12. 04
07
tipo de dato
Id del dato
long
valores de los registros
PROTOCOLO DE COMUNICACIÓN DNC50
Ubicación de las variables de PLC

F28C0081 dirección 0x0081f28c


0020 nº de 32(0x20) registros
0004 anchura 4 bytes entre registros

04 tipo de dato long


08 Id del dato valores de los contadores
F30C0081 dirección 0x0081f30c
0010 nº de 16(0x10) contadores
0004 anchura 4 bytes entre contadores

01 tipo de dato bit word


0A Id del dato CEN de contadores
FDB20000 dirección 0x0000fdb2
0010 nº de 16(0x10)
0000 anchura 1 bit entre «cen« de los contadores

01 tipo de dato bit word


09 Id del dato estados de los contadores
FDB20000 dirección 0x0000fdc4
0010 nº de 16(0x10)
0000 anchura 1 bit entre estados de contadores

01 tipo de dato bit word


05 Id del dato marcas
FD880000 dirección 0x0000fd88

18 0040
0000
nº de
anchura
64(0x40)
1 bit entre marcas

y así sucesivamente hasta 12 estructuras tal y como se indica en el


segundo campo.

Todos los caracteres vienen como una cadena sin espacio o


DDS - MC
delimitadores entre campos.

(SOFT [Link])

12
! ! ! DNC50

Ubicación de las variables de MC

Como en el caso del PLC, la información de las variables de Motion


Control está organizada en una cadena que puede ser leída en el
regulador bajo el nombre de GV36. Su contenido es similar al del PLC

Esta variable es GV36 y la información que proporciona es:

Versión de parámetro: Reservada (4 caracteres)


Nº de recursos: (4 caracteres) 12.

PROTOCOLO DE COMUNICACIÓN DNC50


Ubicación de las variables de MC
y para todos los recursos una estructura con los datos:

Clase de recurso: (2 caracteres)

donde el nibble bajo (parte baja del byte) significa:

1 bit word (16 bits)


2 char (8 bits)
3 short (16 bits)
4 long (32 bits)
5 bit (1 bit)

Cuando es un bit, el nibble alto (parte alta del byte) indica el offset de
ese bit:

Id del recurso: (2 caracteres)

identifica el recurso y para la versión 1 tiene los siguientes valores:

30 Variables de usuario

Dirección: (8 caracteres).
Comienzo del recurso correspondiente
Nº de elementos: (4 caracteres)
Offset del siguiente (4 caracteres).
elemento: Diferencia entre campos correspondientes

La estructura de la información es la misma que en el PLC, pero el


recurso Id es diferente. En esta versión, sólo existe un tipo de recurso,
incluyendo arrays y variables.

DDS - MC

(SOFT [Link])

13
! ! ! DNC50

Ejemplo.

Trás leer GV36 desde un regulador:

GV36 = 00010001041E0000008204000004
0001 versión
0001 nº de recursos 1(0x01)

12. 04
1E
tipo de dato
Id del dato
long
valores de usuario
PROTOCOLO DE COMUNICACIÓN DNC50
Ejemplo de utilización de los canales % Vx

00000082 dirección 0x00820000


0400 nº de 0x400 variables
000A anchura 10 (0xA) bytes entre variables

Ejemplo de utilización de los canales % Vx

Existen algunos parámetros en los reguladores FAGOR dedicados a


leer y escribir posiciones de memoria cuyas direcciones de memoria
se conocen. Cuatro de ellos funcionan como « punteros que apuntan
a la memoria « mientras sus correspondientes compañeros son
«variables» para leer o escribir.

Los parámetros que funcionan como punteros son:

%V1, %V2, %V3 y %V4

y los contenedores son:

%V5, %V6, %V7 y %V8

Obsérvese que mientras %V1, %V2 y %V4 son punteros que apuntan
a palabras de 2 bytes, %V3 apunta a una palabra tipo long (4 bytes).

Por tanto, %V5, %V6 y %V8 son palabras mientras que %V7 es una
palabra tipo long.

Una vez se haya escrito el puntero, cada vez que se escribe en el


contenedor implica una escritura en dicha posición. Hay que prestar
atención en esto ya que aunque el método es potente encierra cierto
peligro de equivocación.

18 Así, para leer y escribir una palabra cuya dirección es 0x813242


(8467010), primero deberá introducirse un puntero:

W,%V1,8467010

pudiendo posteriormente leer y escribir valores en dichas direcciones


DDS - MC a través del correspondiente contenedor:

R,%V5, para leer.


W,%V5, 1342 para escribir 1342 (0x53E) en dicha posición.

(SOFT [Link]) Para valores tipo long, como todas las variables de Motion Control,
se utiliza un procedimiento similar con un puntero diferente.

14
! ! ! DNC50

Así, para leer y escribir una palabra tipo long cuya dirección es
0x834562 (8602978):

W,%V3,8602978 para escribir el puntero.


R,%V7, para escribir una palabra tipo long.
W,%V7, 66000 para escribir 66000 (0x101D0) en dicha
posición.

Nótese que este método es más rápido y más fácil de acceso a


variables individuales mientras que %V28 es mejor para bloques de
variables.
12.

PROTOCOLO DE COMUNICACIÓN DNC50


Ejemplo de utilización de los canales % Vx
Ejemplo 1.

Si se desea acceder a un recurso MC, por ejemplo a la décima


variable de usuario con la información leída en el ejemplo anterior
deben seguirse las siguientes líneas de actuación:

Dirección 0x00820000 + 10x10 = 0x00820064


dirección inicial 0x00820000 más 10 elementos con 10 bytes
entre elementos.

Tipo de dato long


debe, por tanto utilizarse el canal formado con el puntero %V3
y el contenedor %V7, que es el único que accede a un dato tipo
« long » .

Debe, por tanto, introducirse en %V3:

%V3 " 00820064

Si se lee la correspondiente variable contenedora %V7:

%V7 " 00002710

significa que el valor de la décima variable es 10000 (0x00002710).

Si se introduce en la variable contenedora %V7:

%V7 " 000F4240

se cambia el valor de esa variable a 1000000 (0x000F4240).

Ejemplo 2.

Si se desea acceder al 5º registro desde los recursos del PLC con la


información leída en la variable GV35 del ejemplo anteriormente
visto:
DDS - MC

Dirección 0x0081F28C + 5x4 = 0x0081F2A0


dirección inicial 0x0081F28C más 5 elementos con 4 bytes entre
elementos. (SOFT [Link])

15
! ! ! DNC50

Tipo de dato long


debe, por tanto utilizarse el canal formado con el puntero %V3
y el contenedor %V7, que es el único que accede a un dato tipo
« long » .

Debe, por tanto, introducirse en %V3:

%V3 " 0081F2A0

12. Si se lee la correspondiente variable contenedora %V7:


PROTOCOLO DE COMUNICACIÓN DNC50
Ejemplo de utilización de los canales % Vx

%V7 " 00000010

significa que el 5º valor del registro es 16 (0x00000010).

Si se introduce en la variable contenedora %V7:

%V7 " 0000000F

se cambia el valor de esa variable a 15 (0x0000000F).

Ejemplo 3.

Si se desea acceder a la 10ª marca desde los recursos del PLC


deberán realizarse cálculos adicionales. Con la información leída en
la variable GV35 del ejemplo anteriormente ya visto:

Como las marcas son de tipo bit Word, si las primeras 16 marcas (M1
a M16) están ubicadas en la dirección 0x0000FD88, las siguientes 16
marcas (M17 a M24) se encuentran en la dirección de la palabra
siguiente, 0x0000FD8A, y así sucesivamente.

Si se desea acceder a la marca nº 18, ésta se encontrará en la


dirección 0x0000FD8A y es el 2º bit menos significativo de esta
palabra.

Al ser un tipo de dato bit Word, podrán utilizarse 3 canales: el puntero


%V1 y el contenedor %V5; el puntero %V2 y el contenedor %V6; el
puntero %V4 y el contenedor %V8, ya que todos ellos pueden
acceder a datos de una palabra.

Debe, por tanto, introducirse en %V1:

18 %V1 " 0000FD8A

Si se lee la correspondiente variable contenedora %V5:

%V5 $ 0C10

DDS - MC significa que el valor de la marca 18ª es 0 (0000110000010000B).

Si se desea escribir en esa marca, no debe cambiarse el valor del


resto de las marcas contenidas en las misma palabra de un bit.

(SOFT [Link])

16
! ! ! DNC50

Para calcular el valor que debe introducirse en esa palabra podría


utilizarse una máscara de la siguiente manera.

Para activar M18


Nuevo valor = valor anterior OR 0000000000000010B

Para desactivar M18


Nuevo valor = valor anterior AND 1111111111111101B

En el ejemplo anterior, para activar la marca M18 deberá introducirse


en la variable contenedora %V5:
12.

PROTOCOLO DE COMUNICACIÓN DNC50


Ejemplo de utilización de los canales % Vx
%V5 " 0C12

DDS - MC

(SOFT [Link])

17
! ! ! DNC50

12.
PROTOCOLO DE COMUNICACIÓN DNC50

DDS - MC

(SOFT [Link])

18
PROTOCOLO DE COMUNICACIÓN
MODBUS 13
Comunicación mediante protocolo MobBus

El objetivo fundamental de disponer del protocolo de comunicación


MODBUS es establecer conexión entre los reguladores MMC/CMC
y un PC, un video terminal ESA, un PLC externo u otro dispositivo que
incorpore este protocolo.

La condición necesaria para establecer comunicación entre un


regulador digital FAGOR y algún otro dispositivo de los ya
mencionados anteriormente mediante protocolo MODBUS es
disponer de un regulador con una placa de línea serie RS422.

El número de nodo resultante que determina el regulador con el que


se va a establecer la comunicación se selecciona mediante el switch
rotativo de la placa de línea serie RS422 y el valor del parámetro
QP13, obteniéndose de la siguiente expresión:

nº nodo resultante = [ QP13 * 15 ] + nº nodo del switch

Nótese que gracias al parámetro QP13 es posible direccionar más


ejes desde la línea serie RS422 de los que permite el switch rotativo.

Selección del protocolo de comunicación

Al disponer de dos protocolos de comunicación (DNC y MODBUS) y


sus distintos modos, la selección del tipo de protocolo y el modo que
se va a utilizar se realiza mediante el parámetro QP15 y la posición
del switch rotativo de la placa línea serie RS422. Así:

Posición Valor del


Tipo de
del switch parámetro
rotativo protocolo
QP15

QP15 = -- Dnc [ RS - 232 ]


posición 0

QP15 = 0 Dnc [ RS - 422 ]

posición
no 0

QP15 = 1 ModBus (modo RTU) DDS - MC


[ RS - 422 ]
posición
no 0

ModBus (modo ASCII)


QP15 = 2
[ RS - 422 ]
posición
no 0

(SOFT [Link])
Modo RTU : codificación binaria de datos según estándar RTU
(Remote Transmission Unit).
Modo ASCII: codificación ASCII de datos.

fig.13- 1
Selección del protocolo de comunicación.

1
! ! ! ModBus

ATENCIÓN: ¡ Nótese que si en el switch rotativo se selec-


ciona la posición 0, el protocolo de comunicación será el
DNC ( RS232 ) !

Estructura de los mensajes en ModBus


13.
PROTOCOLO DE COMUNICACIÓN MODBUS
Estructura de los mensajes en ModBus

Lectura del contenido de recursos: Mensaje de petición.

LECTURA DEL CONTENIDO DE RECURSOS.


MENSAJE DE PETICIÓN - MODO RTU
1 3 5

02 03 006B 0003 74 24
2 4

1 nº de nodo del regulador con el que se establece comunicación : [regulador 2]

2 modo de operación : 03 [lectura]

3 dirección del primer recurso a leer

4 nº de recursos a leer: 3

5 CRC [P16]: control de errores en la transmisión del mensaje


calculados mediante expresión polinómica.

fig.13- 2
Lectura del contenido de recursos. Mensaje de petición (modo RTU).

LECTURA DEL CONTENIDO DE RECURSOS.


MENSAJE DE PETICIÓN - MODO ASCII
1 3 5 7

: 0 2 0 3 0 0 6 B 0 0 0 3 8 D CR LF

3A 30 32 30 33 30 30 36 42 30 30 30 33 38 44 0D 0A

10 2 4 6

1 carácter de encabezamiento

2 nº de nodo del regulador con el que se establece comunicación [regulador 2]

3 modo de operación : 03 L 30 33 [ lectura ]

4 dirección del primer recurso a leer.

DDS - MC 5 nº de recursos a leer: 3

6 CRC [16]: control de errores en la transmisión del mensaje


calculados mediante suma en módulo 16
7 caracteres de final de mensaje: CR [retorno de carro] y LF [final de línea]

* Nótese que en código ASCII se representa cada carácter por su código en hexadecimal.
Así el carácter " : " se codifica como 3A. [ : L 3A]
(SOFT [Link])

fig.13- 3
Lectura del contenido de recursos. Mensaje de petición (modo ASCII).

2
! ! ! ModBus

Lectura del contenido de recursos: Mensaje de


respuesta

LECTURA DEL CONTENIDO DE RECURSOS.


MENSAJE DE RESPUESTA - MODO RTU
1 3 5
13.
02 03 06 02 0B00 00 00 63 50 48

PROTOCOLO DE COMUNICACIÓN MODBUS


Lectura del contenido de recursos: Mensaje de respuesta
2 4

1 nº de nodo del regulador con el que se establece comunicación : [regulador 2]

2 modo de operación : 03 [ lectura ]

3 nº de bytes devueltos: [ 6 bytes ]

4 contenido de los recursos. Cada recurso contiene 2 bytes de datos.


Devuelve el contenido de los 3 recursos que se requerían en el mensaje de petición.
5 CRC [P16]: control de errores en la transmisión del mensaje
mediante expresión polinómica.

fig.13- 4
Lectura del contenido de recursos. Mensaje de respuesta (modo RTU).

LECTURA DEL CONTENIDO DE RECURSOS.


MENSAJE DE RESPUESTA - MODO ASCII
1 3 5 7

: 0 2 0 3 0 6 0 2 2 B 0 0 0 0 0 0 6 3 6 5 CR LF

3A 30 32 30 33 30 36 30 32 32 42 30 30 30 30 30 30 36 33 36 35 0D 0A

2 4 6

1 carácter de encabezamiento

2 nº de nodo del regulador con el que se establece comunicación: [regulador 2]

3 modo de operación : 03 L 30 33 [ lectura ]

4 nº de bytes devueltos: [6 bytes]

5 contenido de los recursos

6 CRC [16]: control de errores en la transmisión del mensaje


calculados mediante suma en módulo 16
7 caracteres de final de mensaje: CR [retorno de carro] y LF [final de línea]

* Nótese que en código ASCII se representa cada carácter por su código en hexadecimal.
Así el carácter " : " se codifica como 3A. [ : L 3A]

fig.13- 5
Lectura del contenido de recursos. Mensaje de respuesta (modo ASCII).
DDS - MC

(SOFT [Link])

3
! ! ! ModBus

Escritura del contenido de recursos: Mensaje de


petición

ESCRITURA DEL CONTENIDO DE RECURSOS.


MENSAJE DE PETICIÓN - MODO RTU

13. 1 3 5 7

01 10 0087 0002 04 00 0A01 021A7A


PROTOCOLO DE COMUNICACIÓN MODBUS
Escritura del contenido de recursos: Mensaje de petición

2 4 6

1 nº de nodo del regulador con el que se establece comunicación :[regulador 1]

2 modo de operación : 10 [ escritura ]

3 dirección del primer recurso a escribir

4 nº de recursos a escribir : 2

5 nº de bytes escritos : 4 [dos bytes por recurso].

6 datos escritos en los recursos

7 CRC [P16]: control de errores en la transmisión del mensaje


calculados mediante expresión polinómica.

fig.13- 6
Escritura del contenido de recursos. Mensaje de petición (modo RTU).

ESCRITURA DEL CONTENIDO DE RECURSOS.


MENSAJE DE PETICIÓN - MODO ASCII

1 3 5 7 9

: 0 1 1 0 0 0 8 7 0 0 0 2 0 4 0 0 0 A 0 1 0 2 5 5 CR LF

3A 3 0 3 1 3 1 3 0 3 0 3 0 3 8 3 7 3 0 3 0 3 0 3 2 3 0 3 4 3 0 3 0 3 0 4 1 3 0 3 1 3 0 3 2 3 5 3 5 0 D 0 A

2 4 6 8

1 carácter de encabezamiento

2 nº de nodo del regulador con el que se establece comunicación: [regulador 1]

3 modo de operación : 10 L 31 30 [ escritura ]

4 dirección del primer recurso a escribir

10 5

6
nº de recursos a escribir: 2

nº de bytes escritos: 4 [dos bytes por recurso].

7 datos escritos en los recursos

8 CRC [P16]: control de errores en la transmisión del mensaje


calculados mediante expresión polinómica.

9 caracteres de final de mensaje : CR [retorno de carro] y LF [final de línea]

* Nótese que en código ASCII se representa cada carácter por su código en hexadecimal.
DDS - MC Así el carácter " : " se codifica como 3A. [ :L 3A]

fig.13- 7
Escritura del contenido de recursos. Mensaje de petición (modo ASCII).
(SOFT [Link])

4
! ! ! ModBus

Escritura del contenido de recursos: Mensaje de


respuesta

ESCRITURA DEL CONTENIDO DE RECURSOS.


MENSAJE DE RESPUESTA - MODO RTU
1 3 5
13.
01 10 0087 0002 F1 E1

PROTOCOLO DE COMUNICACIÓN MODBUS


Escritura del contenido de recursos: Mensaje de respuesta
2 4

1 nº de nodo del regulador con el que se establece comunicación: [regulador 1]

2 modo de operación : 10 [ escritura ]

3 dirección del primer recurso a escribir

4 nº de recursos a escribir : 2

5 CRC [P16]: control de errores en la transmisión del mensaje


calculados mediante expresión polinómica.

fig.13- 8
Escritura del contenido de recursos. Mensaje de respuesta (modo RTU).

ESCRITURA DEL CONTENIDO DE RECURSOS.


MENSAJE DE RESPUESTA - MODO ASCII
1 3 5 7

: 0 1 1 0 0 0 8 7 0 0 0 2 6 6 CR LF

3A 30 31 31 30 30 30 38 37 30 30 30 32 36 36 0D 0A

2 4 6

1 carácter de encabezamiento

2 nº de nodo del regulador con el que se establece comunicación

3 modo de operación : 31 30 [ escritura ]

4 dirección del primer recurso escrito

5 nº de recursos escritos: 2

6 CRC [16]: control de errores en la transmisión del mensaje


calculados mediante suma en módulo 16
7 caracteres de final de mensaje: CR [retorno de carro] y LF [final de línea]

* Nótese que en código ASCII se representa cada carácter por su código en hexadecimal.
Así el carácter " : " se codifica como 3A. [ : L 3A]

fig.13- 9
Escritura del contenido de recursos. Mensaje de respuesta (modo ASCII).
DDS - MC

(SOFT [Link])

5
! ! ! ModBus

Recursos

El protocolo de comunicación ModBus selecciona el recurso al que


se desea acceder mediante un número de 16 bits.

En este número (dirección del recurso) se codifican los diferentes


recursos del regulador.

13. Para ello se dispone de:


! Los tres bits más significativos (de mayor peso) para
seleccionar el tipo de recurso.
PROTOCOLO DE COMUNICACIÓN MODBUS
Recursos

! Los siguientes 12 bits para definir el nº de recurso.


! El bit menos significativo (de menor peso) b0 para indicar si el
acceso es a la parte baja o alta del recurso.

Tipos de recursos

Los tipos de recursos del regulador a los que puede accederse a


través del protocolo ModBus son:
! Variables Sercos
! Variables Fagor
! Registros PLC
! Variables Motion Control

nº en binario parte baja 1


parte alta 0

b15 b14 b13 b12 ............................................. b1 b0

000 variable Sercos


001 variable Fagor
010 registro PLC
011 variable Motion Control
otros sin definir

fig.13- 10
Identificación del recurso.

Dentro de los tipos de recursos, variables Sercos y variables Fagor,


10 existen los recursos del tipo lista.

Cuando se lee uno de estos recursos, los primeros 4 bytes leídos son
una cabecera indicativa del tamaño de los datos leídos, y a
continuación se muestran los datos.

Por tanto, escribir en recursos de este tipo implica enviar esta


DDS - MC cabecera como parte de los datos.

Su estructura será:
! Byte 1. Parte baja del tamaño en bytes

(SOFT [Link])
! Byte 2. Parte alta del tamaño en bytes
! Byte 3. Parte baja del tamaño máx. del recurso en bytes
! Byte 4. Parte alta del tamaño máx. del recurso en bytes

6
! ! ! ModBus

Tratamiento y acceso a los recursos

El protocolo ModBus:
! Trata todos los recursos como recursos de 16 bits. Si se desea
acceder a un recurso que tiene 32 bits serán necesarios dos
accesos, uno para acceder a la parte baja y otro para acceder a
la parte alta.
! Puede acceder al valor de varios recursos en un sólo acceso,
incluso a recursos de más de 16 bits.
! El acceso a recursos del tipo 0 ( variables Sercos® ) y del tipo 1
13.

PROTOCOLO DE COMUNICACIÓN MODBUS


Tratamiento y acceso a los recursos
(variables Fagor) se realiza siempre como si se tratara de recursos
de 32 bits aunque sean de 16 bits. Si se accede a la parte alta se
leerá un 0 [realmente la parte alta no existe].
! En accesos a recursos del tipo 2 (registros de PLC) y del tipo 3
(variables de Motion Control) puede leerse y escribirse en la parte
baja y alta del recurso independientemente.

Ejemplos de acceso a recursos del regulador

! CODIFICACIÓN DE LA DIRECCIÓN DE RECURSOS:

1. Dirección de la variable Sercos® [S51]:

000 000000110011 0
parte alta
variable Sercos nº 51 en binario

fig.13- 11
Dirección de una variable Sercos®.

2. Dirección de la variable Fagor F300 $ S34068:

001 000100101100 0
parte alta
variable Fagor nº 300 en binario

fig.13- 12
Dirección de una variable Fagor.

3. Dirección del registro de PLC 1:

010 000000000001 0
DDS - MC
parte alta
registro PLC nº 1 en binario

fig.13- 13
Dirección del registro de PLC. (SOFT [Link])

7
! ! ! ModBus

4. Dirección de la variable de Motion Control 1:

011 000000000001 0
parte alta
variable MC nº 1 en binario

fig.13- 14

13. Dirección de una variable de MC.


PROTOCOLO DE COMUNICACIÓN MODBUS
Ejemplos de acceso a recursos del regulador

! ACCESO A LOS RECURSOS:

Acceso a un recurso tipo variable Sercos® :


El acceso a la parte alta y baja de este recurso no puede realizarse
independientemente. Así, para:
Dirección: 000 000000110011 1
b0 = 1 (parte baja de S51)
nº recursos: 3

se accede por este orden:


1. parte baja de S51
2. parte alta de S52
3. parte baja de S52

De manera análoga se accede a un recurso tipo variable Fagor.

Acceso a un recurso tipo registro de PLC:


El acceso a la parte alta y baja de este recurso puede realizarse
independientemente. Así, para:
Dirección: 010 000000000001 0
b0 = 0 (parte alta de R1)
nº recursos: 2
se accede por este orden a:
1. parte alta de R1
2. parte baja de R1

De manera análoga se accede a un recurso tipo variable MC.

10
Acceso a un recurso tipo lista:
Para:
Dirección: 000 000000011110 1
variable S30
DDS - MC nº recursos: 2
los datos que devuelve el regulador son:
0x13,0,0x20,0,v,0,4,.,0,7, ,A,x,i,s,2,3, ,S,e,p,t

(SOFT [Link])

8
! ! ! ModBus

! ESCRITURA EN LOS RECURSOS:

ATENCIÓN: ¡ deberá tenerse especial cuidado al escribir


en recursos de 32 bits (tanto en variables tipo Sercos®
como tipo Fagor) ante la posibilidad de introducir datos
erróneos !

Escritura en recurso tipo variable Sercos®:


Así, para el siguiente acceso de escritura:
13.

PROTOCOLO DE COMUNICACIÓN MODBUS


Ejemplos de acceso a recursos del regulador
Dirección: 000 000000111100 0
b0 = 0 indica parte alta de S60
nº recursos: 1
dato: 0 x 1234
Al ser S60 una variable Sercos® de 32 bits, se escribe 0 x 1234
en la parte alta y la parte baja se sustituye por 0 x 0000.

Escritura en recurso tipo variable Fagor:


Así, para el siguiente acceso de escritura:
Dirección: 001 100100100101 1
b0 = 1 indica parte baja de F2341$S35109
nº recursos: 2
dato: 0 x 1234, 0 x 5678
Al ser F2341 una variable Fagor de 32 bits, se escribe 0 x 1234
en la parte baja y 0 x 0000 en la parte alta. El nuevo dato se
escribe en el recurso siguiente, es decir, en F2342, con 0 x 5678
en la parte alta y 0 x 0000 en la parte baja.

ATENCIÓN: ¡ deberá tenerse especial cuidado al escribir


en la parte alta en recursos de 16 bits (tanto en variables
tipo Sercos® como tipo Fagor) ante la posibilidad de intro-
ducir datos erróneos !

Así, para el siguiente acceso de escritura:


Dirección: 001 001110000100 0
b0 = 0 indica parte alta de F900 $S33668
nº recursos: 1
dato: 0 x 3333
Al ser F900 un variable Fagor de 16 bits, una escritura de un valor
en la parte alta de un recurso de 16 bits provoca escribir 0 x 0000
en la parte baja y al no existir parte alta no introduce el dato, es
decir, se ha escrito 0 en lugar del dato.

Escritura en recursos tipo registro de PLC y variable MC: DDS - MC


Así, para el siguiente acceso de escritura:
Dirección: 010 000000000001 1
b0 = 0 (parte baja de R1)
nº recursos: 2
(SOFT [Link])
dato: 0 x 1234, 0 x 5678
Se escribe el dato 0 x 1234 en la parte baja de R1 y 0 x 5678 en
la parte alta de R1.

9
! ! ! ModBus

Escritura en recursos tipo lista:


Para escribir en el recurso tipo lista (p. ej. S267) :
Dirección: 000 000100001011 0
b0 = 0
nº recursos: 2
datos a enviar: 0x5,0x0,0x5,0x0,F,A,G,O,R

ATENCIÓN: ¡ nótese que el nº de recursos tipo lista siempre

13. debe ser 2 !


PROTOCOLO DE COMUNICACIÓN MODBUS
Ejemplos de acceso a recursos del regulador

10

DDS - MC

(SOFT [Link])

10
LEVA ELECTRÓNICA
14
Consideraciones iniciales

El modo de operación de una leva electrónica permite generar el


movimiento de un eje esclavo definido a partir de una tabla de
posiciones o de un perfil de leva.
Existen dos tipos de movimiento de leva:
! Posición - posición (por defecto).
! Posición - tiempo.
En los movimientos de leva " posición - posición " pueden obtenerse
relaciones no lineales de sincronización electrónica entre dos ejes.
Así, la posición del eje esclavo se sincroniza con la posición del eje
maestro mediante un perfil de leva.
En los movimientos de leva " posición - tiempo " pueden obtenerse
otros perfiles de movimiento distintos de los perfiles trapezoidales ó
en forma de S.

En ambos casos, el regulador trabaja en control de posición y es el


software de MC el encargado de generar las consignas de posición
necesarias para alcanzar el perfil de movimiento de la leva.

Posición del eje maestro

La posición del eje maestro viene dada por una de estas variables:

! PV53 [S53] PositionFeedback2


! LV245 [S245] LeadDrive1AngularPosition

El parámetro LP59 [F2359] SynchronizationMasterSource permi-


te establecer cual de estas dos variables será la fuente para obtener
la posición del eje maestro.
Así, con:
LP59 = 0 se selecciona PV53 (por defecto)
LP59 = 1 se selecciona LV245.
DDS - MC

(SOFT [Link])

1
! ! ! Leva electrónica

Relación de sincronización de levas

Levas de tipo posición - posición

En el modo de sincronización de leva electrónica, la relación que se


establece entre el eje maestro y el eje esclavo para levas del tipo

14. (posición-posición) es:

X - Xoff
LEVA ELECTRÓNICA
Relación de sincronización de levas

Y = Ks * Cam KM + Yoff

Cam tabla normalizada de la leva


Y posición del eje esclavo
X posición del eje maestro
Ks escala de la posición del eje esclavo
KM escala de la posición del eje maestro
Yoff offset de la posición del eje esclavo
Xoff offset de la posición del eje maestro

fig. 14 - 1

Levas de tipo posición - posición. Relación de sincronización entre el eje


maestro y el eje esclavo.

Los parámetros que intervienen en el cálculo de la posición del eje


esclavo Y son:

Cam [ ] Tabla normalizada de la leva electrónica.


El regulador dispone de dos tablas de leva con 1024
puntos normalizados en cada una de ellas.

X Posición del eje maestro en cada ciclo.

Xoff Offset de la posición del eje maestro.


Valor que se resta a la posición del eje maestro para
calcular la posición de entrada de la tabla.
Dependiendo de la tabla de leva a la que hace
referencia (1ª ó 2ª), su valor viene dado por la variable
LV48 [F2348] MasterOffset1 ó
LV52 [F2352] MasterOffset2, respectivamente.

KM Escala o rango de la posición del eje maestro.


14 Dependiendo de la tabla de leva a la que hace
referencia (1ª ó 2ª), su valor viene dado por la variable
LV49 [F2349] MasterScale1 ó
LV53 [F2353] MasterScale2, respectivamente.

Yoff Offset de la posición del eje esclavo.


DDS - MC Dependiendo de la tabla de leva a la que hace
referencia (1ª ó 2ª), su valor viene dado por la variable
LV50 [F2350] SlaveOffset1 ó
LV54 [F2354] SlaveOffset2, respectivamente.

KS Escala o rango de la posición del eje esclavo.


(SOFT [Link])
Dependiendo de la tabla de leva a la que hace
referencia (1ª ó 2ª), su valor viene dado por la variable
LV51 [F2351] SlaveScale1 ó
LV55 [F2355] SlaveScale2, respectivamente.

2
! ! ! Leva electrónica

Nótese que:
Los valores de Xoff y KM definen el rango de posiciones del eje
maestro en los que actúa la función de leva de forma que ésta
únicamente regula la posición del eje esclavo dentro de este rango.
Los valores de Yoff y KS permiten desplazar las posiciones del eje
esclavo fuera del rango de valores establecidos por la función de leva.

Levas de tipo posición - tiempo 14.

LEVA ELECTRÓNICA
Levas de tipo posición - tiempo
En el modo de sincronización de leva electrónica, la relación que se
establece entre el eje maestro y el eje esclavo para levas del tipo
(posición-tiempo) es:

t
Y = Ks * Cam Kt + Yoff

Cam tabla normalizada de la leva


Y posición del eje esclavo
t tiempo
Ks escala de la posición del eje esclavo
Kt escala del eje de tiempo
Yoff offset de la posición del eje esclavo

fig. 14 - 2

Levas de tipo posición - tiempo. Relación de sincronización entre el eje


maestro y el eje esclavo.

Los parámetros que intervienen en el cálculo de la posición del eje


esclavo Y son:

Cam [ ] Tabla normalizada de la leva electrónica.


El regulador dispone de dos tablas de leva con 1024
puntos normalizados en cada una de ellas.

t Tiempo transcurrido desde el inicio de la leva en cada


ciclo.

KS Escala de la posición del esclavo.


Dependiendo de la tabla de leva a la que hace
referencia (1ª ó 2ª), su valor viene dado por la variable
LV51 [F2351] SlaveScale1 ó
LV55 [F2355] SlaveScale2, respectivamente.

Kt Rango de tiempo ó duración del perfil de leva.


Dependiendo de la tabla de leva a la que hace
referencia (1ª ó 2ª), su valor viene dado por la variable
LV49 [F2349] MasterScale1 ó DDS - MC
LV53 [F2353] MasterScale2, respectivamente.

Yoff Offset de la posición del eje esclavo.


Dependiendo de la tabla de leva a la que hace
referencia (1ª ó 2ª), su valor viene dado por la variable
(SOFT [Link])
LV50 [F2350] SlaveOffset1 ó
LV54 [F2354] SlaveOffset2, respectivamente.

3
! ! ! Leva electrónica

Nótese que:
El valor de Kt define el rango de tiempo o duración total de la función
de leva.
Los valores de Yoff y KS permiten desplazar las posiciones del eje
esclavo fuera del rango de valores establecidos por la función de leva.

¡ En levas de tipo posición - tiempo el eje maestro puede dis-


poner de un offset de tiempo (mseg) . Este offset viene refle-
jado en las variables PV48 ó PV52. Así tras ejecutarse la
14. sentencia CAM ON n espera un tiempo (el offset) antes de co-
menzar la leva!
LEVA ELECTRÓNICA
Perfil de leva

Perfil de leva
En el cálculo de la posición de sincronización del eje esclavo, el
regulador puede acceder internamente a una o dos tablas
normalizadas donde cada una de ellas define un perfil de leva
determinado con un máximo de 1024 valores o puntos normalizados
equidistantes.
Por tanto, previamente a la activación de la leva, es condición
necesaria la preparación de estas tablas que definen sus perfiles.

¿Como se editan estas tablas?


Desde el editor de levas del WinDDSSetup.
Véase el capítulo 15: Editor de levas.
¿Como se transmiten y almacenan estas tablas?
Tras ser definidos los perfiles de las levas en las tablas mencionadas,
es necesario crear un archivo *.cam con ambas tablas. Este archivo
creado se cargará posteriormente vía RS-232 al regulador como
cualquier otro archivo y se almacenará en su memoria flash.
En el editor de levas del WinDDSSetup la activación del icono
[generar fichero (*.cam)] del menú de herramientas despliega una
ventana desde la cual podrá crearse el archivo (*.cam).
Véase el capítulo 15: Editor de levas.

Para obtener información sobre la sentencia de activación de la leva


así como todos los elementos necesarios que deben tenerse en
cuenta para su definición, véase el apartado: Sentencias de
sincronización de levas de este capítulo.

14 Modo de operación
Tras una iniciación en modo de sincronización de leva, el sistema
inicia el cálculo de la posición sincronizada del eje esclavo según una
de las relaciones de sincronización establecidas en los apartados
anteriores.
DDS - MC
Para alcanzar esta posición de sincronización calculada, el sistema
sigue el mismo procedimiento que en una sincronización en fase o
posición. Una primera fase de ajuste de velocidad y una segunda fase
de ajuste de posición, donde se consideran los parámetros:
(SOFT [Link]) ! Aceleración de sincronización:
LP41 [F2341] Synchronization Acceleration

! Velocidad de sincronización:
LP42 [F2342] Synchronization Velocity.

4
! ! ! Leva electrónica

Ejemplo. Sincronización de leva.

dY
dt
dY calculada
dt

aceleración de sincronización
dY interna
dt velocidad de sincronización

Área = Error de posición


14.

LEVA ELECTRÓNICA
Modos de ejecución
al final de la fase 1

1 ajuste de velocidad 2 t
( fase 1 )
ajuste de posición
( fase 2 )
1. Inicio de la sincronización
2. Alcance de la sincronización

fig. 14 - 3

Ejemplo representativo de la sincronización de una leva.

Modos de ejecución

La sincronización de una leva, a diferencia de una sincronización


"normal" donde su operatividad se mantiene activa hasta que se
ejecuta un comando de desactivación ( FOLLOW OFF ), depende del
modo de ejecución establecido para ella.

Estos modos pueden ser:

UNA VEZ La sincronización de la leva se mantiene activa


hasta alcanzar el final de su perfil.

CONTINUO La sincronización de la leva se mantiene activa


hasta ejecutarse la sentencia de desactivación de
sincronización. Tras la ejecución de esta
sentencia, la desactivación de la sincronización
se produce tras alcanzar el final de su perfil.

En ambos modos, finalizada la ejecución de la leva, el movimiento


quedará detenido si no hay preparado un nuevo perfil de leva, o
bien, se activará una nueva leva enlazando dinámicamente con la
anterior, si ya estaba previamente preparada o pendiente de
ejecución.

Testeos durante la sincronización de la leva

La ventana de posición que determina que la sincronización en


posición de la leva ha sido alcanzada viene establecida por el DDS - MC
parámetro LP228 [S228] SynchronizationPositionWindow. Así, si
durante el modo de sincronización en posición la diferencia entre la
posición de sincronización calculada para el eje esclavo y el feedback
de posición está dentro de esta ventana, se activa la marca LV46
[F2346] InSynchronization señalando que la sincronización en (SOFT [Link])
posición ha sido alcanzada.

¡ Durante la primera fase de adaptación de velocidad no se


tiene en cuenta este testeo !

5
! ! ! Leva electrónica

Iniciada la sincronización ( véase la sentencia CAM ON n ) y siempre


que el eje maestro entre en su rango de operatividad (en levas de
tiempo puede demorarse un offset de tiempo antes de entrar) se inicia
también un testeo del tiempo transcurrido justamente desde ese
mismo instante en el que entra en el rango hasta que se alcanza el
estado InSynchronization. Finaliza el testeo en el mismo instante
en que se alcanza este estado.

¡ El TimeOut de sincronización de leva empieza a testearse


cuando el master entra en el rango y no inmediatamente tras
14. ejecutar la sentencia CAM ON n !
LEVA ELECTRÓNICA
Ajustes durante la sincronización de la leva

El tiempo máximo para alcanzar el estado InSynchronization queda


determinado en el parámetro LP47 [F2347] Synchronization
Timeout, de manera que, si el estado no ha sido alcanzado en este
tiempo se genera el error E919 (Timeout de sincronización)
advirtiendo de esta situación.

Ejemplo. Testeo del Timeout de sincronización.

Detectado el error pasa


dY a consigna de velocidad nula

dt dY calculada
dt

dY interna
dt
área = error de posición
al final de la fase 1
t
1
ajuste de ajuste de posición
Error velocidad (fase 2)
(fase 1)
3
2
919

Timeout de sincronización

1. Inicio del testeo y de la sincronización


2. Activación del error
14 3. Alcance de la sincronización

fig. 14 - 4

Ejemplo representativo del error E919: Timeout de sincronización.

DDS - MC
Ajustes durante la sincronización de la leva

Una vez alcanzada la sincronización, cualquier modificación del


offset de posición del eje esclavo mediante las variables LV50
[F2350] SlaveOffset1 y/o LV54 [F2354] SlaveOffset2 implica un
(SOFT [Link])
nuevo valor de su posición de sincronización. Así, se genera una
nueva fase de adaptación de posición para alcanzar la nueva
posición de sincronización.

6
! ! ! Leva electrónica

Ejemplo. Modificación del ajuste del offset de posición.

dY calculada
dt

dY interna
dt
Aceleración de
14.

LEVA ELECTRÓNICA
Sentencias de sincronización de levas
sincronización

ajuste de ajuste de ajuste de posición t


velocidad posición

1 2 3 4

InSynchronization

t
1. Inicio de la sincronización
2. Alcance de la sincronización
3. Variación del offset de posición del eje esclavo
4. Alcance de la sincronización

fig. 14 - 5

Ejemplo representativo del proceso de sincronización tras una modificación en el ajuste del offset de
posición del eje esclavo.

Obsérvese el comportamiento de la marca LV46 [F2346]


InSynchronization durante la sincronización y la modificación del
offset de posición del eje esclavo.

Las modificaciones realizadas en el offset de posición durante la


sincronización vuelven a iniciar el testeo del Timeout de
sincronización que finaliza tras ser alcanzada la sincronización en
posición.

Sentencias de sincronización de levas

Las instrucciones disponibles en el lenguaje de MC para establecer


la sincronización de leva electrónica son:
! Sentencia de preparación del perfil.
! Sentencia de activación de la sincronización.
! Sentencia de desactivación de la sincronización
DDS - MC
! Sentencia de suma de levas

(SOFT [Link])

7
! ! ! Leva electrónica

Sentencia de preparación del perfil

Mediante esta sentencia se inicializa el perfil de la leva.


Su formato corresponde a la siguiente estructura:
CAM SELECT type exec n

donde:

14. type Tipo de leva.


Valores admitidos:
POS: posición-posición
LEVA ELECTRÓNICA
Sentencia de preparación del perfil

TIME: posición-tiempo

exec Tipo de ejecución.


Valores admitidos:
CONT: continuo
ONCE: una vez

n Tabla normalizada a la que la sentencia hace


referencia. Valores admitidos: 1 y 2.

Ejemplo.

CAM SELECT POS ONCE 1

Esta sentencia determina un perfil de leva dado por la tabla


normalizada 1, del tipo "posición-posición" y la ejecución se realizará
en modo "una vez".

A partir de estos parámetros y del fichero de leva (*.cam) almacenado


en la memoria flash del regulador, se inicializará la correspondiente
tabla normalizada con el perfil de la leva.

Cualquier situación anómala que se produzca en la inicialización (p.


ej: fichero (*.cam) no cargado en el regulador, ...) se identifica con el
error E920 (fallo en la preparación de la leva).

Sentencia de activación del movimiento de


sincronización

Mediante esta sentencia se inicia el movimiento de seguimiento o


sincronización de leva. Tras su ejecución el sistema genera un perfil
14 de movimiento o trayectoria con el objetivo de alcanzar al eje maestro
o de sincronizar con él mediante una relación establecida.
Su formato corresponde a la siguiente estructura:

CAM ON n

donde:
DDS - MC
n Tabla normalizada a la que la sentencia hace
referencia. Valores admitidos: 1 y 2.

Ejemplo.
(SOFT [Link])
CAM ON 1

Esta sentencia inicia la sincronización de leva siguiendo el perfil de


leva dado por la tabla normalizada 1.

8
! ! ! Leva electrónica

Ante la situación anómala de que la tabla normalizada con el perfil


de leva no esté preparada se identifica con el error E921 (ejecución
de la leva no preparada).

Sentencia de desactivación del movimiento de


sincronización

Mediante esta sentencia se desactiva el movimiento de seguimiento


14.

LEVA ELECTRÓNICA
Sentencia de desactivación del movimiento de sincronización
o sincronización maestro/esclavo.
Su formato corresponde a la siguiente estructura:

CAM OFF

Esta sentencia únicamente es necesaria para desactivar la


sincronización de leva con ejecución continua. Así, tras ejecutarse,
seguirá activada hasta alcanzar el final del perfil y seguidamente se
desactivará.

En el caso de ejecución "una sóla vez" esta sentencia no será


necesaria. Se desactivará automáticamente cuando el final del perfil
sea alcanzado.

Sentencia de suma de levas

Mediante esta sentencia es posible obtener un perfil de leva como


suma de dos perfiles de leva previamente diseñados.

En cada una de las levas "sumando" se contemplan los valores


tabulados para los 1024 puntos que constituyen su perfil normalizado
multiplicados por su correspondiente factor de escala.
La tabla normalizada de la leva (resultado de la suma) se obtiene de
dividir el perfil de leva obtenido de la suma entre el factor de escala
correspondiente.

¡ Nótese la diferencia entre perfil de leva y perfil de leva


normalizado. El perfil de leva es el perfil de leva normalizado
(dado por los 1024 ptos de su tabla) multiplicado por un factor
de escala !

Su formato corresponde a la siguiente estructura:

CAM ADD op1 op2 dest

donde:

op1 Leva correspondiente al primer sumando.


Valores admitidos: 1 y 2
DDS - MC
op2 Leva correspondiente al segundo sumando.
Valores admitidos: 1 y 2

dest Tabla de leva donde se almacena el resultado de la


suma. Valores admitidos: 1 y 2. (SOFT [Link])

9
! ! ! Leva electrónica

Efecto de sentencias en el ritmo de ejecución

La sentencia de preparación de leva CAM SELECT no implica la


ejecución de ningún tipo de movimiento por parte del regulador.
Únicamente, en su ejecución, se realiza la preparación de los datos
y cálculos internos.

Es por esta razón que, puede establecerse su ejecución "por

14. adelantado", es decir, puede ejecutarse preparando datos mientras


se está llevando a cabo un movimiento. Esta característica permite
enlazar solapadamente la ejecución de dos perfiles de leva
LEVA ELECTRÓNICA
Efecto de sentencias en el ritmo de ejecución

diferentes.

El inicio de la sincronización supone la ejecución de una primera fase


de adaptación de velocidad y una segunda fase de adaptación de
posición. Ambas ejecuciones necesitan un tiempo para llevarse a
cabo. Durante este tiempo la ejecución real de la aplicación de MC
se detiene en dicha sentencia hasta que ambas fases de adaptación
hayan concluído.

No obstante, es posible ejecutar de manera adelantada o de


preparación las sentencias que continúan a las anteriores en la
aplicación MC, siempre que estas sentencias permitan esta
preparación adelantada.

Cuando se alcanza la sincronización finaliza la ejecución de la


sentencia CAM ON dándose por ejecutadas las sentencias
preparadas por adelantado, sincronizándose así la ejecución y la
preparación.

Si tras alcanzar la sincronización se introducen sentencias que


modifiquen la variable de offset de posición, volverá a generarse la
fase de adaptación de posición, volviéndo a adelantarse la
preparación.

¡ Tras la ejecución de la sincronización no se admiten


sentencias de movimiento "MOVE". No tiene sentido
superponer al movimiento de sincronización de leva otro
movimiento adicional que provoque una ruptura de la
sincronización establecida !

Si durante la ejecución de un perfil de leva aparece una nueva


sentencia de inicio de leva, ésta deja preparado el segundo perfil y
en espera de que termine la ejecución del perfil actual. Alcanzado el
final del perfil de leva actual comienza la ejecución del segundo perfil
14 de leva enlazandose de forma dinámica al anterior perfil (igual al
enlace de dos bloques de posicionamiento).

Finalmente, la ejecución de la sentencia de terminación de la


sincronización de leva CAN OFF, finaliza la ejecución de la leva actual
(no de forma inmediata) a su próximo paso por el fin del perfil de la
leva.
DDS - MC
Si no existe un nuevo perfil de leva preparado y pendiente se
considera finalizado el perfil actual al alcanzar su punto final. Sin
embargo, si existe un nuevo perfil preparado implica eliminar el
movimiento de sincronización del eje esclavo (velocidad nula)
(SOFT [Link]) considerando la aceleración de sincronización.

10
! ! ! Leva electrónica

Durante el tiempo de espera hasta alcanzar el punto final del perfil


actual así como el tiempo de frenada (si la hubiere) la ejecución real
de la aplicación de MC se detiene en la sentencia. Mientras tanto, es
posible la ejecución adelantada o preparación de las siguientes
sentencias, siempre que sean susceptibles de preparación por
adelantado.

Ejemplo.

En la siguiente secuencia de sincronización de leva se establecen


dos levas de tipo "posición-tiempo". La primera de ellas de ejecución
"continua" y la segunda de ejecución "una sóla vez".
14.

LEVA ELECTRÓNICA
Efecto de sentencias en el ritmo de ejecución
posición
del esclavo

ciclo 1 ciclo 2 ciclo n


t
InSynchronization

M1
t

Aplicación t
...
CAM SELECT TIME CONT 1
CAM SELECT TIME ONCE 2
CAM ON 1
WAIT ( M1 )
CAM OFF
CAM ON 2
...

fig. 14 - 6

Ejemplo de secuencias de sincronización de leva. Presencia de dos levas.

Las sentencias CAM SELECT TIME CONT 1 y CAM SELECT TIME ONCE
2 son sentencias de preparación de dos levas.
La sentencia CAM ON 1 inicia la "sincronización de leva" .
Alcanzada la sincronización, se ejecuta la sentencia WAIT (M1).
Evalúa una condición (activación de la marca M1) y espera a su
cumplimiento.
Ahora bien, mientras espera que la marca M1 se active, se ejecuta
de forma continua el perfil de leva establecido en la primera tabla
normalizada de leva.
Activada la marca M1(se ha cumplido la condición) finaliza la espera.
Se ejecuta la siguiente sentencia CAM OFF terminando así con la
ejecución del perfil de leva actual. DDS - MC

¡ R e c u é rd e s e q u e : c o n C A M O F F e l m ov i m i e n t o d e
sincronización de leva no finaliza inmediatamente. Tras ser
ejecutado espera a alcanzar el final del perfil de leva para
concluir ! (SOFT [Link])

Mientras espera a alcanzar el final del perfil de leva actual, se prepara


la siguiente sentencia CAM ON 2 para poder enlazar dinámicamente
el nuevo perfil con el perfil anterior (cuando finalice).

11
! ! ! Leva electrónica

Finalizado el último ciclo del primer perfil de leva, se inicia la ejecución


del segundo perfil de leva. Este perfil se ejecutará "una sóla vez" ya
que así quedó establecido en su sentencia de preparación.
Tras finalizar la ejecución de esta sentencia, se continúan ejecutando
el resto de sentencias del código.

Efecto de las señales de control


14. La ejecución de una aplicación de MC así como los movimientos de
LEVA ELECTRÓNICA
Efecto de las señales de control

sincronización se ven afectados por señales de control como START,


STOP, RESET y ABORT.
Así, si operando en modo "sincronización de leva" se genera una
señal de :
STOP: se detendrá la ejecución de la aplicación de MC así como el
movimiento de sincronización de leva, pasando a velocidad nula. El
sistema permanecerá en espera hasta la activación de la señal START
para reanudar la ejecución y el movimiento justamente desde el punto
en el que se detuvo.

RESET: el comportamiento del sistema será similar a la activación de


STOP. Se diferencia en que tras la detención del movimiento se
inicializará la aplicación de MC y la reanudación de la ejecución se
realiza desde el principio de la misma.

ABORT: el comportamiento del sistema no se verá afectado ya que


esta señal afecta únicamente a bloques de posicionamiento
(sentencias de tipo MOVE) que en sincronización de leva no se
admiten.

Ejemplo. Efecto de las señales de control.


En la siguiente secuencia de sincronización de leva se establece el
comportamiento de una leva de tipo "posición-tiempo" de ejecución
"continua" donde se repite el mismo perfil de la leva varias veces
hasta ejecutar la sentencia CAM OFF.

14 InSynchronization

t
STOP

DDS - MC START

Aplicación
...
CAM ON 1
DWELL (1000)
(SOFT [Link]) ...
CAM OFF
...

fig. 14 - 7

Ejemplo de secuencia de sincronización de leva. Efecto de las señales de control.

12
! ! ! Leva electrónica

14.

LEVA ELECTRÓNICA

DDS - MC

(SOFT [Link])

13
! ! ! Leva electrónica

14.
LEVA ELECTRÓNICA

DDS - MC

(SOFT [Link])

14
EDITOR DE LEVAS
15
Introducción

El editor de levas pretende ser un elemento gráfico de ayuda que


proporcione al usuario una gran flexibilidad en el diseño de levas.
La labor y responsabilidad de elección de los parámetros y las
funciones que intervienen en el desarrollo del diseño de una leva
electrónica corresponde al usuario que deberá comprobar
rigurosamente que el diseño realizado es coherente con las
especificaciones exigidas.
Al mismo tiempo, este editor ofrece una cómoda asistencia para
analizar el comportamiento de la leva proyectada a través de las
facilidades gráficas de edición de valores de velocidad, aceleración
y jerk.

Enfoque inicial de diseño

La primera tarea a la que se enfrenta el diseñador de levas es selec-


cionar las funciones matemáticas que deben utilizarse para definir el
movimiento del seguidor (eje esclavo). Así, se diseña la leva mediante
un conjunto de funciones separadas, cada una de las cuales define
el movimiento del seguidor (eje esclavo) sobre un segmento deter-
minado de la leva (eje maestro).

El enfoque más simple y extendido para realizar esta tarea es "linea-


lizar" la leva, es decir, "desenrrollarla" de su forma original y repre-
sentarla como una función gráfica en los ejes cartesianos. Esta
función gráfica coincide con la función desplazamiento (s) del segui-
dor.

Representada la función gráfica que define la leva (función despla-


zamiento (s) del seguidor), se representan también su primera deri-
vada o función velocidad (v), su segunda derivada o función
aceleración (a) y su tercera derivada o función rapidez de aceleración
( j ) (jerk). Véase la fig. 15- 1.

Todas estas funciones estarán representadas como una función del


ángulo θ del árbol de levas entre los límites del eje de abscisas (0°- DDS - MC
360°) y en ejes alineados. Podrá considerarse también el tiempo t
como una variable del eje.

(SOFT [Link])

1
! ! ! Editor de levas

(s) función desplazamiento

(v) función velocidad

15. (a) función aceleración


EDITOR DE LEVAS
Condiciones de diseño

(j) función jerk

fig. 15- 1
Diagramas gráficos de desplazamiento (s), velocidad (v), aceleración (a) y jerk (j) de
la leva - seguidor.

Condiciones de diseño

La ley fundamental que rige el diseño de levas establece que:

¡ La función de leva debe ser continua en primera y segunda


derivadas del desplazamiento en todo el intervalo (0°- 360°) !

¡ La función de rapidez de aceleración (jerk) debe ser finita en


todo el intervalo (0°- 360°) !

En todas, incluso en la leva más simple, su programa de movimiento


no se define por una simple expresión matemática, sino que debe
definirse por varias funciones separadas, cada una de las cuales
define el movimiento del seguidor (eje esclavo) sobre un segmento
de la leva. Estas funciones deben tener continuidad de tercer orden
(la función más dos derivadas) en todas las fronteras.

¡ Las funciones de desplazamiento, velocidad y aceleración


no deben tener discontinuidades en las fronteras !

El procedimiento general para diseñar el movimiento del seguidor (eje


esclavo) de leva está basado en la norma VDI (Verein Deutscher

10 Ingenieure) 2143. Con esta normativa se pretenden evitar diseños de


trayector ias defec tuosos que puedan generar durante el
funcionamiento de la leva altos esfuerzos en la misma y su rápido
deterioro.

Para ello, partiendo de las posiciones extremas o bien de trayectorias


dadas, se divide el recorrido total de la leva en diversos segmentos
DDS - MC o intervalos (véase la fig. 15- 1) y se establecen las características del
movimiento en cada uno de ellos.

La siguiente clasificación establece el tipo de movimiento asignado


a los puntos frontera de cada uno de los intervalo definidos, en función
de la pareja de valores (velocidad-aceleración) alcanzados en ellos.
(SOFT [Link])

2
! ! ! Editor de levas

Cada tipo de movimiento se representará por su símbolo asociado.

tabla 15 - 1 Tipos de movimiento. Símbolo asociado.

Pareja de valores Tipo de Símbolo


(v-a) movimiento
v = 0, a = 0 Reposo R

v ≠ 0, a = 0 Velocidad constante V

v = 0, a ≠ 0

v ≠ 0, a ≠ 0
Retroceso

Movimiento
A

M
15.

EDITOR DE LEVAS
Condiciones de diseño
Las transiciones o combinaciones posibles serán 16 por intervalo:

R-R V-R A-R M-R


R-V V-V A-V M-V
R-A V-A A-A M-A
R-M V-M A-M M-M

RECUÉRDESE QUE: La normativa VDI 2143 establece las leyes de los


posibles movimientos para cada intervalo que permitan cumplir las
condiciones de continuidad en sus fronteras, en función del tipo de
transición que se realice en dicho intervalo.

La siguiente clasificación atiende a los tipos de función (ley


matemática) de transición soportables en cada punto frontera
especificados por la norma VDI 2143:

tabla 15 - 2 Funciones de transición entre segmentos.

Tipo de Condición de
Descripción
función contorno
Movimiento síncrono con ratio de transmisión constante entre eje
SYNC v = cte, a = 0
maestro y eje esclavo.
AUTO Adaptación automática a las condiciones de contorno

POLY5 Polinomio de 5º grado para el caso R-R v = 0, a = 0


SIN Sinusoidal para el caso R-R v = 0, a = 0
SIN_M Senoidal modificada para el caso R-R v = 0, a = 0
SIN_AA Sinusoidal entre puntos A-A
CYCLO Cicloidal para el caso R-R v = 0, a = 0
TRAP Aceleración trapezoidal modificada para el caso R-R v = 0, a = 0

SIN_M_VV Senoidal modificada para el caso V-V a=0

COMBI_AA Combinación senoidal síncrona para el caso A-A v=0

v = 0,
TRAP_RA Aceleración trapezoidal modificada para el caso R-A DDS - MC
inicio: a = 0
v = 0,
TRAP_AR Aceleración trapezoidal modificada para el caso A-R
final: a = 0
HARM_RA Combinación de armónicos en el caso R-A
HARM_AR Combinación de armónicos en el caso A-R (SOFT [Link])

SPL Spline cúbico


SPL_NAT Spline cúbico natural a=0
SPL_TAN Spline cúbico tangencial

3
! ! ! Editor de levas

Interfaz de usuario

El WinDDSSetup dispone de un editor de levas. Su interfaz permite


al usuario la realización del diseño de levas electrónicas editando las
tablas de perfiles de leva. Además, mediante representaciones
gráficas se visualizan los valores de desplazamiento, velocidad,
aceleración y jerk en los diferentes puntos del perfil.

15. Acceso al interfaz del editor de levas


EDITOR DE LEVAS
Interfaz de usuario

Tras el ejecución de la aplicación WinDDSSetup, pulsando el icono(a)


correspondiente de la barra de herramientas,se despliega en pantalla
(a) la ventana [SELECCIONE REGULADOR]:

Desde el campo:
[Drive]:
> Seleccionar: CMC/MMC.

Desde el campo:
[Versión Soft Regulador]:
> Seleccionar: Versión de software.

Desde el campo:
[Tipo Motor]:
> Seleccionar: Síncrono ó asíncrono.

Validar pulsando el icono(b)


(b)

Obsér vese la aparición de un nuevo icono (c) en la barra de


herramientas tras haber realizado el paso previo anteriormente
(c)
indicado.

Pulsando este botón se despliega en ventana el interfaz del editor de


levas:

10

DDS - MC

(SOFT [Link])

4
! ! ! Editor de levas

Edición del diseño de leva

Una vez realizados los pasos anteriores, el usuario se encuentra en


disposición de empezar a realizar el diseño de leva.
Desde la ventana que se ha desplegado en pantalla tras realizar el
último paso [ EDITOR DE LEVAS ], el usuario dispone de las siguientes
herramientas que ofrece el interfaz del editor.
Los elementos o zonas principales que muestra la ventana de edición
son:
! Tabla normalizada de datos
15.

EDITOR DE LEVAS
Edición del diseño de leva
! Ventana gráfica
! Barra de herramientas de menú

Tabla de datos.
Esta tabla es editable permitiendo al usuario realizar el diseño de la
leva. Esta formada por 8 columnas etiquetadas por todos y cada uno
de los elementos que deberán tenerse en cuenta para realizar el
diseño. El significado de cada una de las etiquetas que aparecen en
la tabla de datos es:

tabla 15 - 3 Etiquetas de la tabla de datos.

Etiqueta Descripción
Nº Número de puntos frontera que subdividen en intervalos la
trayectoria total de la leva/seguidor.
(Entiéndase leva = eje maestro, seguidor = eje esclavo).
Coordenada de posición del eje maestro.
Master Admite valores entre 0 y 360 (si el rango es 0 - 360)
ó entre 0 y 1 (si el rango es 0 - 1)

Tipo de movimiento : R, V, A ó M.
Type
(Véase apartado: Condiciones de diseño).
Coordenada de posición del eje esclavo relativa a la del eje
Slave_S
maestro. Admite valores entre -1 y 1.
Velocidad relativa del eje esclavo respecto a la del eje
Slave_V
maestro. Admite cualquier valor.

Aceleración del eje esclavo relativa al cuadrado de la


Slave_A
velocidad del eje maestro. Admite cualquier valor.

Ley matemática de la trayectoria aplicada en cada punto


Function
frontera. (Véase apartado: Condiciones de diseño).

Valor de la simetría de la ley de movimiento en cada punto


Symmetry
frontera. Admite valores entre 0 y 1.

Las etiquetas [ TYPE ] y [ FUNCTION ] disponen de un menú que se


despliega al activar (doble click de ratón) el cuadro de texto asociado
DDS - MC
a cada punto.

> Seleccionar: TYPE desde el (SOFT [Link])

menú desplegable para definir el


tipo de movimiento.

5
! ! ! Editor de levas

> Seleccionar: FUNCTION desde el


menú desplegable para definir la
función matemática.

Observesé que cada línea de la tabla hace referencia a un punto


frontera de intervalo, y todos los valores introducidos en la línea

15. corresponden única y exclusivamente a él.

Véase el apartado: Condiciones de diseño para más detalles sobre


EDITOR DE LEVAS
Edición del diseño de leva

el tipo de movimiento a seleccionar en el menú desplegable [ TYPE ].

La función matemática de enlace define el tipo de unión que se


establecerá entre el punto correspondiente a la línea actual y el punto
de la línea siguiente.

Los valores serán editados mediante teclado en las celdas


correspondientes de la tabla. Los valores válidos (rangos) para cada
etiqueta han sido ya definidos en la tabla 15 - 3.

¡ Cualquier valor introducido que esté fuera de rango no será


aceptado tras validarlo con un [ ENTER ], dejando la celda con
el valor 0.000000 !

Ventana gráfica.
Esta ventana permite al usuario visualizar el comportamiento de la
leva (maestro) / seguidor (esclavo) mediante las gráficas
representativas de desplazamiento, velocidad, aceleración y jerk del
eje esclavo tras haber introducido los parámetros de diseño en la tabla
de edición citada con anterioridad.
La vis ualiz ación podrá m ostrar de una a cua tr o gr áficas
representativas de las funciones s, v, a y j realizando la selección
desde el menú que se despliega en ventana tras hacer un click con
el botón derecho del ratón.

> Seleccionar: S, SV, SVA ó SVAJ para visualizar


la representación gráfica de 1, 2, 3 o las 4
funciones a nivel individual.

> Seleccionar: TABLA para visualizar la tabla de


edición en pantalla. Desactivar en otro caso.

10 > Seleccionar: CAMBIAR MODO para visualizar la representación de


las cuatro funciones SVAJ solapadas conjuntamente en una misma
gráfica.

Barra de herramientas de menú.


DDS - MC Esta barra de herramientas situada en la parte superior de la ventana
[ EDITOR DE LEVAS ] dispone de los siguientes iconos:

(SOFT [Link])

ABRIR UN PROYECTO:
Permite volver a editar un proyecto existente.

6
! ! ! Editor de levas

GUARDAR:
Permite guardar en disco los datos actuales del proyecto abierto
(toda la información suministrada en la tabla de puntos). El archivo
tiene extensión (*.cpj)

GUARDAR COMO:
Permite guardar en disco los datos actuales del proyecto abierto
(toda la información suministrada en la tabla de puntos) con otro
nombre. El archivo tiene extensión (*.cpj)
15.

EDITOR DE LEVAS
Edición del diseño de leva
RECALCULAR:
Permite testear y validar la consistencia de los datos modificados
en la tabla normalizada y recalcula las representaciones gráficas
con los nuevos valores.

GENERAR FICHERO (*.CAM) :


Permite generar el fichero (*.cam) a partir de las 2 tablas de levas
normalizadas y es el que posteriormente se cargará en la memoria
flash del regulador vía línea serie RS-232.

¡ Nótese que el fichero (*.cam) estará formado siempre por


dos tablas normalizadas. Si sólo se ha editado una tabla de
leva, al generar el fichero (*.cam) se incorpora a él una se-
gunda tabla de leva igual a la primera !

B Tras activar el icono


se despliega la ventana
[ crear fichero de levas
C
(*.cam) ]

> Abrir: Carpetas (A) para


s el ec c io na r l as ta bla s
normalizadas de las levas
A
1 y 2.

> Abrir : Car peta (B) para B


nombrar el fichero de levas
(*.cam) que se va a generar y
ubicarlo en un directorio.
DDS - MC
> Pulsar: [ Crear fichero ] (C) para generar el archivo (*.cam).

ACTIVAR ZOOM:
Permite ampliar la sección a visualizar dentro de una ventana (SOFT [Link])
gráfica para obtener mayor detalle de ella.

7
! ! ! Editor de levas

15.
EDITOR DE LEVAS
Edición del diseño de leva

El zoom de ampliación se realiza desde el teclado mediante


sucesivas pulsaciones de la [ tecla + ]. El usuario puede observar
como disminuyen las dimensiones del cuadro de ampliación en la
ventana [ ZOOM ] y como se amplía la imagen en la gráfica de la
función.
El zoom de reducción se realiza desde el teclado mediante
sucesivas pulsaciones de la [ tecla - ]. El usuario podrá observar
un efecto contrario al anterior.
El desplazamiento izquierda/derecha del cuadro ampliado/reducido
se realiza desde el teclado mediante sucesivas pulsaciones de las
teclas [ flecha arriba ] y [ flecha abajo ].

¡ Nótese que para que estas teclas realicen su función en


la ventana zoom, el foco debe estar ubicado en esta zona !
Si las teclas no responden pulse la tecla [ tab ] hasta ubicar
el foco en la ventana zoom.

Los valores tabulados que se muestran en la ventana [ ZOOM ] se


van modificando tras realizar sucesivos zooms. Son valores de
visualización (no modificables por teclado) e indican:

XMín: Coordenada mínima del eje de abscisas representada en


la gráfica de la función s, v, a, ó j seleccionada.
XMáx: Coordenada máxima del eje de abscisas representada en

10 la gráfica de la función s, v, a, ó j seleccionada.


YMín: Coordenada mínima del eje de ordenadas representada
en la gráfica de la función s, v, a, ó j seleccionada.
YMáx: Coordenada máxima del eje de ordenadas representada
en la gráfica de la función s, v, a, ó j seleccionada.

DDS - MC
DESACTIVAR ZOOM:
Permite eliminar el zoom actuando en todas las representaciones
gráficas simultáneamente. La visualización vuelve a ajustarse a los
valores máximos de las escalas de las gráficas.
(SOFT [Link])

8
! ! ! Editor de levas

AÑADIR PUNTOS:
Permite añadir puntos a la columna Nr de la tabla de edición
aumentando así el número de segmentos que dividen el recorrido
total de la leva. Cada pulsación sobre este botón añade un punto
a la columna Nr. (Nº máximo: 1024 puntos).

ELIMINAR PUNTOS:
Permite borrar puntos de la columna Nr de la tabla de edición
disminuyendo así el número de segmentos que dividen el recorrido
total de la leva. Cada pulsación sobre este botón elimina un punto 15.
de la columna Nr.

EDITOR DE LEVAS
Edición del diseño de leva
0 - 360 / 0 - 1:
Permite establecer los límites de coordenadas del eje de abscisas
entre 0 y 360 grados ó entre 0 y 1 que corresponden al punto de
inicio y punto final del perfil de leva.

DDS - MC

(SOFT [Link])

9
! ! ! Editor de levas

15.
EDITOR DE LEVAS

DDS - MC

(SOFT [Link])

10

También podría gustarte