Carlos Francisco Maciel Castellanos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 129

I NSTITUTO P OLITÉCNICO N ACIONAL

C ENTRO DE I NVESTIGACIÓN EN
C IENCIA A PLICADA Y T ECNOLOGÍA AVANZADA

U NIDAD Q UERÉTARO

P ROGRAMA DE M AESTRÍA EN T ECNOLOGÍA AVANZADA

C ONTROL N UMÉRICO C OMPUTARIZADO DE


A RQUITECTURA A BIERTA PARA S ERVO -M OTORES DE
C ORRIENTE A LTERNA USANDO M ODBUS

TESIS

Que para obtener el grado de:


M AESTRÍA EN T ECNOLOGÍA AVANZADA

Presenta:
I NG . C ARLOS F RANCISCO M ACIEL C ASTELLANOS

Director de tesis:
D R . R EYDEZEL T ORRES M ARTÍNEZ

Q UERÉTARO , Q RO . 18 DE DICIEMBRE 2014


T ÍTULO : C ONTROL N UMÉRICO C OMPUTARIZADO DE ARQUITECTURA ABIER -
TA PARA SERVO - MOTORES DE CORRIENTE ALTERNA USANDO MODBUS

Autor: Ing. Carlos Francisco Maciel Castellanos


Director de Tesis: Dr. Reydezel Torres Martínez

La siguiente página web contiene el presente texto así como información actual refe-
rente al tema:
https://mega.co.nz/#F!pIJXDC4D!6oe2IoRQwXcasmcn1k2YiA
Impreso en Querétaro, Qro.
Compilado con LATEX
Primera Edición, diciembre 2014
Reconocimientos

Reconocimientos.

El presente trabajo y mi desarrollo profesional nunca habrían sido com-


pletados de no ser por las personas a quienes quiero dedicar este trabajo
de tesis. Dr. Reydezel gracias por haber confiado en mi y haberme apoya-
do en mi trabajo. A mi familia por apoyarme incondicionalmente en las
decisiones que hasta ahora he tomado y me han llevado por este camino,
papá, mamá gracias por todo, gracias a ustedes soy lo que soy. Ale y Max
gracias por estar siempre a mi lado; Julieta gracias por caminar junto a mi.

A la Cabina 2 por haberse convertido en una familia durante todo el tiem-


po que he estado en esta ciudad, gracias muchachos.

A CONACyT por haberme apoyado económicamente para mi manuten-


ción en este tiempo y a la COFAA por haber aportado los recursos necesa-
rios para el desarrollo de diversas actividades académicas y de investiga-
ción. Finalmente al Ro por haber cuidado mi casa mientras yo arduamente
estudiaba.

Carlos Maciel
diciembre 2014
Resumen

En esta tesis se presenta el diseño y construcción de un Control Numéri-


co Computarizado (CNC) de Arquitectura Abierta para Servo-Motores de
corriente alterna (AC), usando el protocolo de comunicación Modbus en
modo Unidad Terminal Remota (RTU) y comunicándose mediante un bus
RS-485 para el control de hasta 254 dispositivos; el software desarrollado
para la aplicación que aquí se reporta, corresponde al manejo del control
usando códigos estandarizados ISO para operaciones de torneado, con el
propósito de mostrar que es posible fabricar en México maquinaria CNC
de arquitectura abierta.

El sistema es una integración de componentes mecánicos, eléctricos y


electrónicos, manejados mediante software de arquitectura abierta desa-
rrollado en CICATA, Querétaro, que permite su fácil aplicación para el
control computarizado de sistemas productivos en lazo cerrado. El códi-
go fuente fue desarrollado en lenguaje C# empleando funciones estanda-
rizadas de programación, el programa resultante puede ser utilizado en
ambiente Windows. El algoritmo efectúa las operaciones necesarias para
realizar una búsqueda, interpretación y ejecución de códigos ISO a partir
de una serie de instrucciones contenidas en un archivo de texto plano. El
código fuente fue desarrollado de manera robusta y simple otorgando así
al usuario la capacidad de modificar y acoplar el sistema de manera senci-
lla y segura; el sistema se compone de funciones que interpretan el código
y de una base de datos que contiene la información para controlar a los
actuadores tras encontrar coincidencias, es en esta parte donde la integra-
ción de nuevas funciones o la modificación de las mismas se hace posible.
Los resultados permiten concluir que es viable incursionar en el campo de
automatización, construcción y re-conversión de máquinas-herramienta.
Abstract

This thesis presents the design and construction of an open architecture al-
ternate current (AC) servo-motor using Modbus communication protocol
over an RS-485 network in Remote Terminal Unit (RTU) mode Computer
Numerical Control (CNC) for 254 devices; the hereby reported applica-
tion corresponds to the application of the control using standardized ISO
codes for turning machining operations, this with the purpose of showing
that it is possible to develop open architecture CNCs in México.

The system is an integration of mechanical, electrical and electronic com-


ponents, remotely managed by open architecture software developed in
CICATA, Querétaro that allows its easy application for the productive sys-
tems closed loop computerized control. The developed source code was
written in C# using standard programing functions, the resulting software
will run in Windows environment. The algorithm calculates the necessary
operations to search, interpret and execute ISO codes based on a number
of instructions contained on a plain text file. The source code was writ-
ten robustly and simple thus giving the user the opportunity to modify and
couple the system easily and securely; the system is composed of func-
tions that interpret the code and of a database that contains the information
needed to control the actuators after finding coincidences, it is here were
the integration of new elements or the modification of the actual ones can
be done. The results allow to conclude that it is viable to venture in the
automation, construction and conversion of machine tools.
Índice general

Acta de Revisión I

Cesión de Derechos II

Resumen II

Glosario VIII

Siglas X

Índice de figuras XII

Índice de tablas XV

1 Introducción 1
1.1 Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Descripción del Problema . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Propuesta de Solución . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6 Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7 Alcances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.8 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.8.1 Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . 14
1.8.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . 14
1.9 Sumario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

IV
2 Estado del Arte 16
2.1 Investigación Bibliográfica . . . . . . . . . . . . . . . . . . . . . . . 17

3 Fundamentación Teórica 19
3.1 Software Libre para CNC . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.1 LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.2 RepRap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.3 Grbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.4 CNCPro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Arquitectura Abierta . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3 Servo-Sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.1 Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.2 Servomotores de Corriente Alterna . . . . . . . . . . . . . . 27
3.3.3 Encoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Variación de Velocidad en motores de CA . . . . . . . . . . . . . . . 31
3.4.1 Control Escalar . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.2 Control Vectorial . . . . . . . . . . . . . . . . . . . . . . . . 34
3.5 CNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.1 Estandarización . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.2 Nomenclatura de Ejes . . . . . . . . . . . . . . . . . . . . . 35
3.5.3 Programas para CNC . . . . . . . . . . . . . . . . . . . . . . 37
3.6 Protocolo Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.7 Operaciones de Maquinado en Torneado . . . . . . . . . . . . . . . . 48
3.7.1 Cilindrado . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.7.2 Refrentado . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.7.3 Conicidades . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.7.4 Ranurado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.7.5 Roscados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

V
4 Materiales y Métodos 55
4.1 Materiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.1 Servo-Sistemas SureServo . . . . . . . . . . . . . . . . . . . 56
4.1.2 Drive de CA DuraPulse GS3 y Motor MicroMax . . . . . . . 57
4.1.3 Gabinete del Control . . . . . . . . . . . . . . . . . . . . . . 58
4.1.4 Módulo de E/S Arduino . . . . . . . . . . . . . . . . . . . . 59
4.1.5 Equipo de Computo . . . . . . . . . . . . . . . . . . . . . . 62
4.2 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2.1 Control de los Servo-Motores . . . . . . . . . . . . . . . . . 63
4.2.2 Control del Inversor Vectorial . . . . . . . . . . . . . . . . . 66

5 Experimentación y Resultados 68
5.1 Montaje del Hardware y Pruebas Fundamentales . . . . . . . . . . . 69
5.2 Calculo de Potencias del Sistema . . . . . . . . . . . . . . . . . . . . 71
5.3 Software para Lectura y Escritura Remota de Registros . . . . . . . . 72
5.3.1 Apertura de la Comunicación . . . . . . . . . . . . . . . . . 73
5.3.2 Lectura Múltiple de Registros . . . . . . . . . . . . . . . . . 74
5.3.3 Escritura de un Registro . . . . . . . . . . . . . . . . . . . . 74
5.3.4 Cierre de la Comunicación . . . . . . . . . . . . . . . . . . . 75
5.4 Software para Comunicación con Varios Dispositivos . . . . . . . . . 76
5.5 Intérprete de Códigos ISO . . . . . . . . . . . . . . . . . . . . . . . 77
5.5.1 Tratamiento del Documento de Texto . . . . . . . . . . . . . 77
5.5.2 Reconocimiento de Código . . . . . . . . . . . . . . . . . . . 79
5.5.3 Procesamiento Individual y Simultáneo . . . . . . . . . . . . 83
5.5.4 Tratamiento de Errores . . . . . . . . . . . . . . . . . . . . . 84
5.6 Interfaz Gráfica de Usuario (GUI) . . . . . . . . . . . . . . . . . . . 84
5.6.1 Barra de Herramientas . . . . . . . . . . . . . . . . . . . . . 85
5.6.2 Cuadro de Texto . . . . . . . . . . . . . . . . . . . . . . . . 88
5.6.3 Cuadro de Estado . . . . . . . . . . . . . . . . . . . . . . . . 89
5.6.4 Movimiento Manual . . . . . . . . . . . . . . . . . . . . . . 89
5.6.5 Barra de Estado . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.7 Funciones Soportadas . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.7.1 Número de Programa . . . . . . . . . . . . . . . . . . . . . . 90

VI
5.7.2 Número de Línea (N) . . . . . . . . . . . . . . . . . . . . . . 90
5.7.3 Función preparatoria (G) . . . . . . . . . . . . . . . . . . . . 91
5.7.4 Función Auxiliar (M) . . . . . . . . . . . . . . . . . . . . . . 92
5.7.5 M30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.7.6 Velocidad Avance (F) . . . . . . . . . . . . . . . . . . . . . . 94
5.7.7 Velocidad Husillo (S) . . . . . . . . . . . . . . . . . . . . . . 94
5.7.8 Coordenadas (X, Y, Z) . . . . . . . . . . . . . . . . . . . . . 95
5.8 Ejecución en tiempo real . . . . . . . . . . . . . . . . . . . . . . . . 95
5.9 Pruebas de Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . 96
5.10 Acoplamiento del Sistema . . . . . . . . . . . . . . . . . . . . . . . 97
5.10.1 Ejes del sistema . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.10.2 Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.10.3 Actuadores misceláneos . . . . . . . . . . . . . . . . . . . . 99
5.10.4 Entonación de servo-motores . . . . . . . . . . . . . . . . . . 99

6 Conclusiones y Recomendaciones 101

A Código Fuente A
A.1 Estructura REGEX . . . . . . . . . . . . . . . . . . . . . . . . . . . A

B Diagramas Eléctricos B

C Automation Direct Fair-Use D

Bibliografía

VII
Glosario

Arduino Es una plataforma de hardware libre, basada en una placa con un microcon-
trolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica
en proyectos multidisciplinarios. XIII, 21, 59–61

Hardware Se refiere a todas las partes tangibles de un sistema; sus componentes pue-
den ser eléctricos, electrónicos, electromecánicos, mecánicos, etcétera. 23–25

Interfaz Gráfica de Usuario Conocida también como GUI (del inglés Graphical User
Interface) es un conjunto de imágenes y objetos gráficos para representar la infor-
mación y acciones disponibles en el programa informático, consiste en propor-
cionar un entorno visual sencillo para permitir la comunicación con el sistema.
XIII, 14, 85, 88, 89, 96, 102

Linux Es un núcleo libre de sistema operativo (kernel) basado en Unix. Es uno de


los principales ejemplos de software libre y de código abierto. Está licenciado
bajo la GPL v2 y está desarrollado por colaboradores de todo el mundo. A pesar
de que Linux es, en sentido estricto, el núcleo del sistema operativo, una parte
significativa de la comunidad, así como muchos medios generales y especializa-
dos, prefieren utilizar el término Linux para referirse al sistema operativo y su
conjunción de entornos y herramientas. 18, 20

Modbus Es un protocolo de comunicaciones serial, basado en la arquitectura maestro-


esclavo o cliente-servidor, diseñado en 1979 por Modicon se ha convertido en
un protocolo estándar en la industria. Es público, su implementación es fácil,

VIII
requiere poco desarrollo y maneja bloques de datos sin suponer restricciones.
XIII, XV, 44–47, 56, 57, 59–63, 66, 67, 72, 76, 77, 86, 95, 96

Máquina Herramienta Reconfigurable de Propósito Específico Máquina Herramien-


ta de bajo costo, diseñada para realizar una operación específica y que cuenta con
la posibilidad de cambiar sus componentes para realizar otra operación diferente.
48

Sistemas de Arquitectura Abierta Sistemas configurados para permitir el acceso sin


restricciones por parte de personas y otros sistemas. 17, 18

Sistemas de Arquitectura Cerrada Sistemas configurados para NO permitir el acce-


so sin restricciones por parte de personas y otros sistemas. 8

Software Es el conjunto de los programas de cómputo, procedimientos, reglas, docu-


mentación y datos asociados, que forman parte de las operaciones de un sistema
de computación.. 22, 23, 25

Supervisión, Control y Adquisición de Datos Software que permite controlar y su-


pervisar procesos (por lo regular de tipo industrial) a distancia. Facilita la re-
troalimentación en tiempo real de dispositivos sensores y actuadores, controla
el proceso automáticamente. Provee de toda la información que se genera en el
proceso productivo (supervisión, control calidad, control de producción, alma-
cenamiento de datos, etc.) y permite su gestión e intervención. 61, 95

IX
Siglas

AFM Asociación Española de Fabricantes de Máquinas Herramienta, Accesorios, Com-


ponentes y Herramienta. 2

CA Corriente Alterna. XII, 31–34, 57, 71

CAD Diseño Asistido por Computadora. 17

CAM Manufactura Asistida por Computadora. 17

CANACINTRA Cámara Nacional de la Industria de la Transformación. 12

CD Corriente Directa. 20, 21, 31, 32, 34, 61

CN Control Numérico. 2, 3, 6, 9, 17

CNC Control Numérico Computarizado. XIII, 2, 3, 6–8, 10, 12–14, 17, 18, 21, 35,
37, 41, 42, 70, 77–81, 83–87, 89, 90, 93–99, 102, 103

CONACyT Consejo Nacional de Ciencia y Tecnología. 12

CRC Comprobación de Redundancia Cíclica. 46

DIN Deutsches Institut für Normung. 35

EIA Electronic Industries Association. 35

ENIAC Electronic Numerical Integrator And Calculator. 6

GPL General Public License. 20

X
INEGI Instituto Nacional de Estadística y Geografía. 11

ISO International Organization for Standardization. 35

LGPL Lesser General Public License. 20

LRC Comprobación de Redundancia Longitudinal. 46

MDD Millones de dólares (USD). 11, 12

MDP Millones de pesos (MXP). 12

NBER Buró Nacional del Desarrollo Económico. 5

OS Open Source. 22, 23

OSHW Open Source Hardware. 23, 24

OSHWA Open Source Hardware Association. 23

OSI Open Source Initiative. 22, 24

OSS Open Source Software. 22, 24

PIB Producto Interno Bruto. 11

PID Proporcional Integral Derivativo. 27, 100

PLC Control Lógico Programable. XIII, 2, 72, 73

PWM Modulación de Ancho de Pulso. XII, 31, 32

RPM Revoluciones Por Minuto. XV, 31, 43, 64, 69, 71

XI
Índice de figuras

1.1 Esbozo de un Torno de Pedal - Pértiga de Leonardo da Vinci - Siglo


XV - Códice Atlántico. . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.1 Imagen representativa de LinuxCNC, cortesía del proyecto LinuxCNC 20


3.2 Imagen representativa del proyecto RepRap, cortesía del proyecto mismo 21
3.3 Esquema de un servo sistema . . . . . . . . . . . . . . . . . . . . . . 26
3.4 Esquema de distintos drivers para servo-motor de corriente alterna
marca SureServo. Manual de Usuario SureServo - [D IRECT 2011] . . 28
3.5 Distintos tamaños de Servo-motores marca SureServo, Manual de Usua-
rio SureServo - [D IRECT 2011] . . . . . . . . . . . . . . . . . . . . . 29
3.6 Diversos tipos de encoder rotatorio para uso industrial. Cortesía de
Automation Direct . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.7 Tipos principales de encoder, incremental 3.7(a) y absoluto 3.7(b) . . 30
3.8 Circuito esquemático básico para la variación de velocidad en motores
de Corriente Alterna (CA). . . . . . . . . . . . . . . . . . . . . . . . 32
3.9 Ejemplo de Modulación de Ancho de Pulso (PWM) en un variador
para CA: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.10 Comportamiento de un motor de CA . . . . . . . . . . . . . . . . . . 33
3.11 Nomenclatura de ejes en un torno . . . . . . . . . . . . . . . . . . . 36
3.12 Estructura básica de una línea de código ISO para CNC. . . . . . . . 37
3.13 Trayectoria imaginaria de una herramienta de corte en un plano (Z, X) 42
3.14 Esquematización general de un paquete de datos en protocolo Modbus 46
3.15 Proceso de cilindrado. Cortesía de Florian Schott. . . . . . . . . . . . 48
3.16 Proceso de refrentado. Cortesía de Florian Schott. . . . . . . . . . . . 49

XII
3.17 Maquinado de conicidad en un torno. . . . . . . . . . . . . . . . . . . 49
3.18 Esquematización del proceso de ranurado en una operación de tornea-
do mediante buril de tronzado. Cortesía de Florian Schott. . . . . . . 50
3.19 Partes de una rosca. . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.1 Esquema de conexión y control para servo-sistema SureServo . . . . . 56


4.2 Esquema de sistema de variación vectorial SureServo . . . . . . . . . 57
4.3 Gabinete utilizado para este proyecto . . . . . . . . . . . . . . . . . 58
4.4 Tarjeta de desarrollo Arduino modelo 2560 (MEGA) . . . . . . . . . 59
4.5 Existen diversas opciones comerciales para módulos de entradas y sa-
lidas de tipo industrial. . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.6 Circuito esquemático general para el manejo de señales de potencia
mediante una señal digital . . . . . . . . . . . . . . . . . . . . . . . 60
4.7 Diagrama de conexión del CI MAX485 . . . . . . . . . . . . . . . . 60
4.8 PC corriendo Windows 8 y ejecutando una versión del intérprete CNC 62
4.9 Terminal CN1 y tarjeta ZP-LINK . . . . . . . . . . . . . . . . . . . . 64
4.10 Curva de aceleraciones de Servo-Motor . . . . . . . . . . . . . . . . 65
4.11 Curva de aceleraciones del Inversor . . . . . . . . . . . . . . . . . . 67

5.1 Conexión eléctrica básica para servo-motor SureServo . . . . . . . . 70


5.2 Sistema de Control Numérico Computarizado (CNC) desarrollado en
CICATA, Qro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3 Lectura y escritura de registros virtuales utilizando un simulador de
Control Lógico Programable (PLC) . . . . . . . . . . . . . . . . . . 73
5.4 Interfaz gráfica para el control simultaneo de 3 dispositivos vía Modbus 77
5.5 Esquema de trabajo del intérprete de códigos ISO para CNC . . . . . 78
5.6 Interfaz gráfica para CNC desarrollada en CICATA . . . . . . . . . . 85
5.7 Barra de herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.8 Cuadro de diálogo para configurar los parámetros de comunicación serial 86
5.9 Funciones disponibles en la barra de herramientas . . . . . . . . . . 88
5.10 Procesador de texto integrado en la Interfaz Gráfica de Usuario . . . . 88
5.11 Cuadro de estado del CNC . . . . . . . . . . . . . . . . . . . . . . . 89
5.12 Controles para el movimiento manual del CNC . . . . . . . . . . . . 89
5.13 Barra de estado presente en la Interfaz Gráfica de Usuario . . . . . . . 89

XIII
5.14 Pieza desarrollada en aluminio utilizando el torno COMPACT 5 . . . 96

B.1 Diagrama eléctrico de la caja de fusibles . . . . . . . . . . . . . . . . B


B.2 Diagrama eléctrico de conexión de los manejadores . . . . . . . . . . C

XIV
Índice de tablas

3.1 Letras usadas para la programación de CNC en código ISO . . . . . . 38


3.2 Ejemplo de numeración de bloques . . . . . . . . . . . . . . . . . . . 38
3.3 Ejemplo de cambio de la herramienta actual por la #02 con el juego de
parametros #01 en la línea 50. . . . . . . . . . . . . . . . . . . . . . 41
3.4 Diferencias de programación para la trayectoria referida en la figura
3.13 para coordenadas absolutas e incrementales. . . . . . . . . . . . 42
3.5 Ejemplo de la programación de la velocidad de avance F . . . . . . . 43
3.6 Ejemplo de la programación de la velocidad del husillo S indicando
150 Revoluciones Por Minuto (RPM) . . . . . . . . . . . . . . . . . 43
3.7 Interpretación lógica de la diferencia en voltaje para el RS-485 . . . . 44
3.8 Direcciones utilizadas en las tablas de datos del protocolo Modbus se-
gún la norma Modicon . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.9 Funciones Modbus más comúnes de acuerdo a [M ODBUS O RG 2012] . 46
3.10 Formato del paquete de datos para Modbus RTU . . . . . . . . . . . . 47
3.11 Formato del paquete de datos para Modbus ASCII . . . . . . . . . . . 47
3.12 Formato del paquete de datos para Modbus TCP/IP . . . . . . . . . . 47

4.1 Parámetros de comunicación del servo-motor . . . . . . . . . . . . . 63


4.2 Parámetros de control del servo-motor . . . . . . . . . . . . . . . . . 63
4.3 Parámetros básicos del inversor vectorial . . . . . . . . . . . . . . . . 66
4.4 Parámetros de comunicación del inversor vectorial . . . . . . . . . . 66
4.5 Parámetros de control del inversor vectorial . . . . . . . . . . . . . . 67

5.1 Configuración del parámetro P1-31 . . . . . . . . . . . . . . . . . . . 69

XV
Iniciar es la parte más importante de
cualquier trabajo.
Platón

CAPÍTULO

1
Introducción

1
1.1 Generalidades
Se puede definir al Control Numérico (CN) como un dispositivo, capaz de dirigir a uno
o varios elementos mecánicos, de tal forma que las órdenes relativas a sus desplaza-
mientos y velocidades son elaboradas, en forma automática o semiautomática a partir
de datos numéricos y simbólicos definidos por un programa, dicho método de control
ha sido adoptado popularmente en la automatización de máquinas-herramienta.

Las máquinas herramienta son maquinaria propulsada por un motor eléctrico que
realiza acciones específicas sobre materiales sólidos y rígidos tales como el metal, el
plástico o la madera. Los trabajos más comunes para los que son usadas dichas máqui-
nas incluyen: eliminación de material (tornos, fresadoras, taladros, rectificadoras, corte
por chorro de agua o láser); formado de material (estampado, plegado, incorporación);
así como para sujeción (mandril, montajes para fresado, tornillos, y bloques). Parte de
este equipo es de naturaleza técnica e incorpora tecnología de CNC o PLC formando
un sistema automatizado o semiautomatizado.

Cuando se considera la diferencia entre trabajos hechos manualmente y trabajos


hechos a máquina, conceptos como exactitud, repetitividad, eficiencia y productividad
toman importancia para permitir al lector comprender porque las opciones mecaniza-
das se vuelven importantes y agregan valor final al producto. Es de todos sabido que los
humanos son extremadamente talentosos, ejemplos de ello son los hermosos dibujos,
pinturas y esculturas de artistas como Miguel Ángel o Leonardo da Vinci (por mencio-
nar algunos); sin embargo, en aplicaciones donde se requieren esfuerzos que ningún
músculo humano podría desarrollar, o que bien, tardarían demasiado tiempo y reque-
rirían de gran habilidad para ser completados es donde se encuentra la aplicación de
las máquinas-herramienta, en este caso, la habilidad está construida en la herramienta.
Como un ejemplo sencillo, es físicamente posible hacer clavos, sin embargo, es más
rentable hacerlos con maquinaria.

Actualmente, según la Asociación Española de Fabricantes de Máquinas Herra-


mienta, Accesorios, Componentes y Herramienta (AFM) una máquina-herramienta
engloba una amplia variedad de máquinas con un denominador común: todas ellas

2
se dedican a fabricar productos o partes de productos (generalmente metálicos, pero
no exclusivamente) y se les considera máquinas madre porque posibilitan la fabrica-
ción de todas las demás máquinas incluyendo a ellas mismas.

Una máquina-herramienta con CN es aquella en la que se introducen una serie de


caracteres alfa-numéricos planeados y mediante el procesamiento de dichas indicacio-
nes por un controlador se convierten en instrucciones de un proceso de maquinado; si
dicho controlador tiene las características de una computadora, es correcto decir que
es una máquina-herramienta con CNC.

3
1.2 Antecedentes
Popularmente es aceptable creer que las maquinas herramienta nacieron cuando la má-
quina comenzó de alguna manera a guiar la herramienta de manera que el humano
perdía la intervención directa en el proceso de formado y se transformaba en un super-
visor. Desde este punto de vista, se entiende que antes de la aparición de estos equipos
los procesos de formación de materiales eran meramente manuales y las herramientas
eran solamente una extensión de la mano del hombre.

Aunque en la antigüedad no existieron máquinas herramienta propiamente dichas


se han encontrado esbozos de máquinas para realizar operaciones de torneado y tala-
drado. En ambos casos, utilizando una de las manos, era necesario crear un movimiento
de rotación de la pieza en el torneado y de la herramienta en el taladrado. Hasta finales
del siglo XV no se tienen registros de avances significativos. Leonardo da Vinci, en su
“Códice Atlántico”, realizó bocetos de varios tornos que no pudieron construirse por
falta de medios, pero que sirvieron de orientación para próximos desarrollos. El primer
pseudo-torno con control mecánico directo de la trayectoria de la herramienta de corte
fue un torno que maquinaba roscas en madera con una serie de mecanismos bastante
complejos que data de alrededor de 1483 [M OORE 1970]; aunque en realidad se con-
sidera que el primer torno al que se pudiera considerar una máquina herramienta en
forma, fue el inventado alrededor de 1751 por Jacques de Vaucanson, puesto que fue el
primero que incorporó el instrumento de corte en una cabeza ajustable mecánicamente
quitándolo de las manos del operario.

En 1800, Mudslay construyó el primer torno realizado enteramente de metal para


roscar tornillos, siendo su elemento fundamental el husillo guía patrón. Se dice que
Maudslay dedicó diez años de trabajos para conseguir un husillo patrón satisfactorio.

La máquina de vapor fue el elemento fundamental que posibilitó la aplicación ex-


tendida de maquinaria, proporcionando la energía necesaria para la realización de ta-
reas sin la necesidad de intervención directa humana, el desarrollo industrial del siglo
XIX fue posible gracias al diseño y fabricación de diversos tipos de máquinas y pro-
cesos de trabajo, aplicados a la fabricación de piezas metálicas de todo tipo utilizando

4
Figura 1.1: Esbozo de un Torno de Pedal - Pértiga de Leonardo da Vinci - Siglo XV -
Códice Atlántico.

máquinas herramienta.

El sistema de generación polifásico de Tesla hizo posible la disponibilidad de la


electricidad para usos industriales, consolidándose como una nueva fuente de energía
capaz de garantizar el formidable desarrollo industrial del siglo XX. Apareciendo justo
cuando las fuentes de energía del siglo XIX se manifiestan insuficientes. Los motores
de corriente continua fabricados a pequeña escala, y los de corriente alterna, reciben un
gran impulso a principios de siglo, reemplazando a las máquinas de vapor y a las tur-
binas que accionaban hasta ese momento las transmisiones de los talleres industriales.
Poco después comenzaron a ser acoplados directamente a las máquinas herramienta
[A LDABALDETRECU 2012].

No fue sino hasta 1930 que el Buró Nacional del Desarrollo Económico (NBER)
de Estados Unidos hizo referencia a la definición de máquina herramienta como ”cual-
quier maquina que opere sin energía manual y que emplee una herramienta para
trabajar en el metal" [J EROME 1934]. Dicha definición, limitaba en un sentido muy
estricto a las máquinas herramientas e ignoraba los muchos otros tipos de maquinado
existentes así como los demás materiales que podían ser formados.

5
La electrónica y la informática han provocado una nueva revolución industrial. El
inicio de ésta nueva revolución hay que situarlo en 1945, cuando dos científicos de la
Universidad de Pennsilvanya, John W. Manclhy y J. Presper Ecker crearon la primera
computadora electrónica digital que realmente funcionaba; se le denominó Electro-
nic Numerical Integrator And Calculator (ENIAC) [PATTERSON 2000]. En 1948, John
Parson inicia la aplicación del CN a la máquina herramienta, con el objeto de resolver
el problema del fresado de superficies complejas tridimensionales para la aeronáutica.
En 1949 Parson contrató con el Instituto Tecnológico de Massachussets el diseño de
los servomecanismos de control para una fresadora. En 1952 funcionaba un control
experimental, aplicado a una fresadora Cincinnati. La programación utilizaba un có-
digo binario sobre cinta perforada, y la máquina ejecutaba movimientos simultáneos
coordinados sobre tres ejes.

Fue a partir de los años setenta, con el desarrollo de la microelectrónica, cuando el


CN pasa a ser CNC por la integración de una computadora en el sistema. Pero fue du-
rante los años ochenta cuando se produce la aplicación generalizada del CNC, debido
al desarrollo de la electrónica y la informática, provocando una revolución dentro de
la cual todavía estamos inmersos.

Las instrucciones alfanuméricas de maquinado han sido agrupadas y estandariza-


das en las norma ISO-6983; la mayoría de los controles numéricos comerciales atien-
den a dicho estándar pero incorporando a su vez instrucciones propias que pueden
ser funciones específicas de la máquina herramienta (encender una lampara, sonar una
alarma, etc.) o bien ciclos recurrentes en los que una instrucción se repite cierto número
de veces (en ocasiones con variaciones en los parámetros), dichos ciclos son también
conocidos como ciclos enlatados y reducen el tiempo de programación o el número de
líneas de código.

6
1.3 Descripción del Problema
En la actualidad, la industria existe en un ambiente de grandes expectativas e incer-
tidumbre motivada por los cambios de la tecnología actual que por su velocidad de
desarrollo, no permite ser asimilada en forma adecuada de modo que es muy difícil
aprovecharla completamente. También surgen cambios rápidos en el orden económico
y político los cuales en sociedades como la nuestra (países en desarrollo) inhiben el
surgimiento de soluciones autóctonas o propias para dichos problemas.

Entre todos estos cambios es sin duda el desarrollo de las nuevas políticas mun-
diales de mercados abiertos y globalizados, encarando la libre competencia, surge la
necesidad de adecuar nuestras industrias con la finalidad de que puedan satisfacer el
reto de los próximos años. Una alternativa para afrontar estos retos reside en la au-
tomatización de las industria y dentro de este resurgir de la automatización se debe
considerar a las Máquinas de CNC, las cuales, frente a las dificultades industriales ac-
tuales (la exigencia en la precisión, los diseños complejos, la diversidad de productos,
la reducción de costos de fabricación, la exigencia en la minimización de errores y el
tiempo de entrega cada vez más reducido) presentan mejores soluciones:

• Mayor precisión y mejor calidad de productos.

• Mayor uniformidad en los productos producidos.

• Un operario puede operar varias máquinas a la vez.

• Fácil procesamiento de productos de apariencia complicada.

• Flexibilidad para el cambio en el diseño y en modelos en un tiempo corto.

• Fácil control de calidad.

• Reducción en costos de inventario, traslado y de fabricación.

• Es posible satisfacer pedidos urgentes.

• Se reduce la fatiga del operador.

• Mayor seguridad en las labores.

7
• Aumento del tiempo de trabajo en corte por maquinaria.

• Fácil control de acuerdo con el programa de producción.

• Fácil administración de la producción e inventario.

• Permite simular el proceso a fin de verificar que este sea correcto.

Sin embargo, se pueden considerar algunas desventajas que existen en la utilización


de los sistemas de CNC, dentro de las cuales, conviene citar:

• Alto costo de la maquinaria.

• Falta de opciones o alternativas en caso de fallas.

• Es necesario programar en forma correcta la selección de las herramientas de


maquinado y la secuencia de operación para un eficiente funcionamiento.

• Los costos de mantenimiento aumenta, ya que el sistema de control es más com-


plicado y surge la necesidad de entrenar al personal de servicio y operación.

• Es necesario mantener un gran volumen de producción a fin de lograr una mayor


eficiencia de la capacidad instalada.

De las limitantes anteriores, la que más representa una barrera para la introducción
de dichas tecnologías en la industria, es la elevada inversión inicial que debe ser reali-
zada en la adquisición de la maquinaria, aunado al costo del mantenimiento que deberá
ser realizado por personal técnico especialmente calificado. Las máquinas herramienta
CNC cuentan con una multitud de funciones pre-cargadas y distintos grados de libertad
que en algunas ocasiones pueden llegar a ser excesivos (para cierta aplicación específi-
ca); el comprador se ve obligado a adquirir maquinaria sobrada para su requerimiento
realizando una inversión superior a la necesaria y donde además se terminan desperdi-
ciando funciones incluidas en la maquina. A lo anterior, podemos agregar la creciente
tendencia al desarrollo de Sistemas de Arquitectura Cerrada presentada por los dis-
tintos proveedores de esta tecnología, la cual limita e incluso prohíbe legalmente la
adecuación o modificación de sus productos necesarias para satisfacer las necesidades
específicas de cada usuario y sólo permiten trabajar con una parte de sus desarrollos.

8
1.4 Hipótesis
Se considera que la ingeniería en México y en general, la tecnología ha alcanzado un
nivel de desarrollo que puede permitir el diseño y la construcción de un control numé-
rico (CN) de arquitectura abierta a partir de la integración de elementos disponibles en
el mercado y el diseño y construcción de otros mediante las herramientas disponibles
en los centros de investigación del Instituto Politécnico Nacional, y que en un futuro,
con base a este y otros trabajos, en mediano plazo, podrán ser desarrollados y fabrica-
dos en México.

9
1.5 Propuesta de Solución
Ante el elevado costo de adquisición y mantenimiento de un sistema de CNC tradi-
cional así como la dificultad de acoplar estos sistemas a necesidades específicas, este
trabajo presenta como propuesta de solución el desarrollo y la integración de un con-
trol numérico de arquitectura abierta; aplicado para demostrar su utilidad a un caso
particular, el control de actuadores basados en el uso de servo-motores con capacida-
des de 400 y 1000 Watts respectivamente y de variación vectorial de velocidad de hasta
3 HP mediante la utilización de software que incorpora instrucciones correspondientes
a códigos estandarizados ISO para máquinas herramienta con CNC.

10
1.6 Justificación
Según cifras de la Secretaría de Economía el sector metal-mecánico representa apro-
ximadamente 2,9 % del Producto Interno Bruto (PIB) nacional y 14 % del PIB manu-
facturero. Las empresas del sector metal-mecánico están dedicadas a la fabricación,
reparación, ensamble y transformación de metales; aunque también existen empresas
de inyección de plástico y forja, de servicio galvanizado, trabajo de lámina, estampado,
ensamblado, mecanizado, troquelado y fundición. Dentro de las empresas registradas
aproximadamente 2000 son compañías grandes (entre ellas las automotrices), mien-
tras que el resto son pequeñas y microempresas. La mayor parte de las empresas se
encuentran concentradas en Nuevo León, Jalisco, Chihuahua, San Luis Potosí, estado
de México, Querétaro y Puebla.

De acuerdo con el Directorio Estadístico de Unidades Económicas del Instituto Na-


cional de Estadística y Geografía (INEGI), el número de Establecimientos Económicos
del sector de Industrias Manufactureras es de un total de 104,416; según la Secreta-
ría de Economía, México es el décimo mercado mundial en consumo de máquinas-
herramienta, con un estimado de 1,309,000 Millones de dólares (USD) (MDD). De
igual manera, México es el séptimo importador, mientras que ocupa el lugar 26 en
cuanto a exportaciones, es decir, más del 90 % de la demanda se cubre con las impor-
taciones. De estas, aproximadamente 28 % provienen de Estados Unidos, siguiendo en
orden de importancia Alemania, Japón, Italia, China y España. La dependencia señala
que los principales sectores consumidores de máquinas-herramienta son el automotor
y sus componentes, aeronáutico y electrodomésticos.

La ciudad de Querétaro, es en la actualidad una de las ciudades mexicanas con ma-


yor crecimiento industrial; ya que a la fecha de publicación de este trabajo, cuenta con
más de 10 parques industriales y es sede de empresas del ramo automotriz y aeronáu-
tico.

Según cifras del INEGI, del personal ocupado en 2011 (más de 731,000 trabaja-
dores), un porcentaje considerable labora en la industria manufacturera (2010); más
del 36 % del PIB del estado proviene de actividades secundarias en la que se encuentra

11
dicha industria con 57,847 Millones de pesos (MXP) (MDP) aportados; de la inversión
extranjera directa, Querétaro recibió 310.5 MDD en 2011 y particularmente la indus-
tria manufacturera fue el principal sector beneficiado con este recurso. Así también,
según cifras del Consejo Nacional de Ciencia y Tecnología (CONACyT) la ciudad
cuenta con el 2.5 % de los investigadores a nivel nacional, la mayoría de ellos en las
ramas de ingeniería [INEGI 2011]. Oscar Peralta, presidente de la Cámara Nacional
de la Industria de la Transformación (CANACINTRA) en Querétaro, pronostica para
años subsecuentes un crecimiento superior o por lo menos similar al de 2011 (que fue
de 8 % aproximado).

En México, la industria formal que se dedique al desarrollo de máquinas-herramienta


con CNC no ha madurado lo suficiente como para ofrecer al mercado una opción de
bajo costo que además permita ser adaptada a necesidades específicas del cliente. Las
opciones de CNC de código abierto disponibles en la red no se encuentran actualiza-
das para aprovechar los recursos computacionales, interfaces o ambientes gráficos de
las computadoras actuales además de que estas opciones se enfocan en el control de
motores a pasos, es decir, no existe en el mercado una opción de CNC de bajo coste
que utilice servo-motores de corriente alterna como sus actuadores.

En base a las cifras y conceptos expresadas en los párrafos anteriores y ante la llega-
da continua de inversiones, consideramos correcto afirmar que es fundamental trabajar
en el desarrollo de la investigación industrial generando un círculo donde investigado-
res locales trabajen para el desarrollo de tecnología para la industria queretana y en
general para la industria nacional evitando así la continua importación de tecnología.

12
1.7 Alcances
El presente trabajo de tesis, se enfoca en desarrollar un software de control que sea
capaz de interpretar códigos ISO y traducirlos en movimientos mecánicos en una
máquina-herramienta. El sistema propuesto consistirá en un intérprete de códigos ISO
para CNC basado en arquitectura abierta que utilice servo-motores de corriente alterna
como sus actuadores; ya que el sistema estará basado en arquitectura abierta, no será
necesario el pago regalías o licencias de software privativo ayudando así a mantener el
bajo coste del mismo.

13
1.8 Objetivos
1.8.1 Objetivo General
Diseñar, construir e integrar elementos para la fabricación un CNC de arquitectura
abierta que permita la fácil re-programación y acoplamiento del mismo a problemas
específicos en la automatización de dispositivos mecatrónicos mediante la utilización
de códigos ISO para máquinas-herramienta.

1.8.2 Objetivos Específicos


1. Desarrollo de la metodología para el cálculo de un sistema servo - controlado
que actúe en tres ejes de trabajo en maquinado de sólidos con velocidades de
corte convencionales; los primeros dos serán los actuadores de movimiento de
una herramienta de corte y el tercero activará el movimiento rotatorio de la pieza
de trabajo.

2. Desarrollo del software de control de código abierto de lazo cerrado por medio
del uso de una PC, que interprete y utilice instrucciones por códigos de uso
generalizado (ISO) en las máquinas de CNC de hasta 4 ejes.

3. Implementar una Interfaz Gráfica de Usuario que permita al operador utilizar


una PC para el control del prototipo.

4. Verificación experimental del sistema.

14
1.9 Sumario
En el primer capítulo de el presente, el lector podrá encontrar información introducto-
ria básica del trabajo junto con elementos justificatorios, datos económicos, alcances
y objetivos del proyecto. En el segundo capítulo se encuentra contenido el estado del
arte del proyecto desarrollado; en el tercero se enuncian los materiales utilizados así
como los métodos implementados para su utilización.

El cuarto capítulo reseña la experimentación realizada durante el desarrollo del


trabajo de tesis, se enuncian en él los desarrollos que integran el producto final con el
objetivo de que el trabajo pueda ser repetido; finalmente en el quinto capítulo el lector
podrá encontrar las conclusiones y recomendaciones obtenidas. Se anexa una sección
de apéndices al final del trabajo donde se encuentra contenida información técnica
referente al trabajo, tal como código fuente, diagramas eléctricos y licencias.

15
Personalmente, creo que es de mu-
cha ayuda y que al final hace una
diferencia benéfica, pero en sí, la li-
teratura científica es muy confusa.
Jeanne Petrek CAPÍTULO

2
Estado del Arte

16
2.1 Investigación Bibliográfica
Las máquinas herramientas han jugado un papel fundamental en el desarrollo tecnoló-
gico del mundo, tanto que se puede decir que su tasa de desarrollo gobierna directa-
mente la tasa del desarrollo industrial. En general, en los últimos treinta años las má-
quinas más comunes en la industria son las convencionales como: tornos, fresadoras,
perforadoras, rectificadoras, cepilladoras, etcétera; algunas con sus controles y disposi-
tivos a control numérico (CN) y otras con controles numéricos computarizados (CNC).
Actualmente, se exige a las empresas industriales mejoras de calidad a menores costos,
tiempos de desarrollo cada vez más cortos y atención continua a los requerimientos de
la demanda; por lo que se hace necesario desarrollar e implementar nuevas pautas de
producción y de gestión para funcionar eficazmente. Una opción para lograr los nive-
les de producción flexible que el mercado exige, es la incorporación y actualización de
tecnologías de producción flexible como: tecnologías de la información, máquinaria
con CNC , autómatas programables, Diseño Asistido por Computadora (CAD), Manu-
factura Asistida por Computadora (CAM), centros de mecanizado, etc.

En diversos trabajos presentados en revistas científicas internacionales, es posible


encontrar elementos referentes a elementos de arquitectura abierta. Algunos autores
han hecho recomendaciones al sector productivo sobre las ventajas de utilizar siste-
mas de arquitectura abierta en sus procesos, tal es el caso de [W RIGHT 1995] donde
se sugiere el desarrollo de sistemas de producción abiertos y compatibles entre sí que
permitan realizar las modificaciones necesarias para alcanzar un alto desempeño, otrs
[G ÜNTER 2001] afirman que el futuro y el mejoramiento de los sistemas de control es-
tá en la arquitectura abierta (Sistemas de Arquitectura Abierta) aplicados a maquinaria
de propósito específico.

Una de las ventajas principales de la utilización de sistemas de arquitectura abier-


ta (Sistemas de Arquitectura Abierta) es la posibilidad de la reutilización, adaptación
y modificación de los componentes que lo integran de manera que pueda ser aprove-
chado a su máximo en la aplicación, un claro ejemplo es [L I 2004] quienes hacen un
enunciado de estas premisas haciendo énfasis en la reutilización de componentes y las

17
ventajas que conlleva su implementación.

El mejoramiento continuo de los Sistemas de Arquitectura Abierta por parte de la


comunidad científica y tecnológica ha presentado también avances y desarrollos pa-
ra el calculo de interpolaciones las cuales son una parte complicada de los sistemas
de CNC pues requieren, dependiendo del método, de muchos ciclos computacionales
para la generación de trayectorias, en [WANG 2008] se presenta la interpolación por
Spline para 5 ejes. La utilización de software propietario para el desarrollo de siste-
mas de CNC de arquitectura abierta es relativamente correcta pues aún existen dudas
en cuanto a la apertura necesaria del sistema para que este pueda ser considerado en
su totalidad como un sistema de arquitectura abierta, en el trabajo [YANG 2010] los
autores presentan un sistema reconfigurable (software) y relativamente abierto pues el
código fuente ejecutado en sobre el runtime de LabVIEW es libre.

Como la realización de sistemas de CNC puede ser complicada, existe quien ha


decidido implementar herramientas didácticas que permitan a los usuarios crear sus
propias aplicaciones para PC en conjunto con tarjetas de desarollo para microcontro-
ladores, el “toolkit” presentado por [Y USUF 2000] trabaja de manera transparente con
dispositivos de diversos fabricantes con retroalimentación del sistema en tiempo real y
un protocolo de comunicación transparente.

La aplicación de CNC utilizando la PC como principal elemento de control puede


presentar problemas en ambientes hostiles a la electrónica, por lo que en trabajos como
[X UHUI 2008] se utilizan sistemas de comunicación ethernet de tipo industrial que per-
miten el intercambio de datos entre dispositivos a largas distancias y con conexiones
multi-punto, otros más simples como [H AIBO 2010] utilizan un protocolo similar para
permitir la comunicación con los dispositivos y la transmisión de información a través
de una red con el uso de enrutadores (permitiendo así una mayor cantidad de disposi-
tivos conectados) en sistemas Linux en tiempo real. Se han planteado ideas similares
a las presentadas por este proyecto, en [X U 2012] los autores presentan el desarrollo
de un sistema de CNC basado en una PC y un controlador de movimiento, haciendo
énfasis en la relación costo-beneficio-desempeño del sistema como principal fortaleza.

18
CAPÍTULO

3
Fundamentación Teórica

19
3.1 Software Libre para CNC
Existe gran cantidad de software de arquitectura abierta creado con la finalidad de con-
trolar y automatizar dispositivos mecatróncios, en especial a las máquinas-herramienta.

3.1.1 LinuxCNC
LinuxCNC es un software gratuito y de código abierto utilizado para el control de
máquinas-herramienta por computadora liberado bajo la licencia General Public Li-
cense (GPL) y Lesser General Public License (LGPL). El software provee al usuario
de diversas interfaces de usuario, u interprete de códigos ISO, planeamiento de movi-
miento con “Look-Ahead”, operación de electrónicos a bajo nivel, tableta de desarrollo
digital y emulador de PLC y puede ser instalado o utilizado como un Live-CD.

Figura 3.1: Imagen representativa de LinuxCNC, cortesía del proyecto LinuxCNC

El software es capaz de mover hasta 9 ejes, servo-motores de Corriente Directa


(CD) y motores a pasos. Soporta la versión 2.4 y 2.6 del kernel de Linux (Actualmente
en la versión 3.13.5). Lamentablemente el proyecto ya no cuenta con un soporte tan
activo y ha quedado rezagado en cuanto a la compatibilidad con el kernel actualizado;
otra desventaja es que la interfaz de la versión oficial está programada para trabajar
con el puerto paralelo. El software puede encontrarse en la página oficial del proyecto.

3.1.2 RepRap
Se autodenomina como el primer proyecto de propósito general para máquinas auto-
replicantes, es decir, para máquinas que puedan hacer otras máquinas (o partes para

20
construir una copia de sí mismas) y aunque es un proyecto de impresión 3D, el prin-
cipio básico es el mismo “posicionamiento de un útil en el espacio”, el proyecto está
disponible para sistemas operativos que soporten Java, utiliza para su funcionamiento
códigos ISO, está implementado para utilizar motores a pasos de CD controlados me-
diante un microcontrolador ATMEL o bien, un Arduino. El software puede encontrarse
en la página oficial del proyecto.

Existen variables del proyecto aplicadas para máquinas-herramientas caseras, tal


es el caso del proyecto Contraptor CNC cuya descripción general así como el código
fuente y su contenido pueden encontrase en la página oficial del proyecto.

Figura 3.2: Imagen representativa del proyecto RepRap, cortesía del proyecto mismo

3.1.3 Grbl
Este proyecto es un controlador de CNC para fresado de código abierto y alto desem-
peño que se programa para correr directamente en un Arduino, carece de una interfaz
gráfica para el usuario y es en sí una base para aquel proyecto que requiera un intérprete
de códigos para CNC. Tiene un soporte limitado de funciones (códigos ISO), es decir,
sólo cuenta con las funciones básicas y sin rotaciones. El proyecto y su documentación
pueden ser encontrados en la página oficial del proyecto.

3.1.4 CNCPro
CNCPro es otro proyecto gratuito y de código abierto, se basa en un programa de
control vía PC que corre bajo DOS y utiliza el puerto paralelo como interfaz para el
control del hardware de la máquina a automatizar. Debido al spam es necesario acceder
a la página oficial del proyecto y darse de alta para poder obtener el código fuente.

21
3.2 Arquitectura Abierta
El concepto de sistema de arquitectura abierta puede ser definido como: Aquel sistema
que permite al usuario mejorar, modificar o reemplazar componentes del sistema de
manera totalmente libre, sin ninguna restricción propietaria. Típicamente la documen-
tación general o específica del proyecto o partes del mismo es liberada conjuntamente.

Las ventajas que presenta la arquitectura abierta ante los sistemas privativos tradi-
cionales, son fáciles de distinguir: la exención en los costos de licencias, la “comuni-
dad” como principal encargado de evolucionar el sistema, implementación autónoma
de personalizaciones y sobre todo la disponibilidad de la “información fuente”.

3.2.1 Software
El Software abierto es aquel cuyo código fuente está protegido y disponible bajo licen-
cias Open Source (OS), las cuales otorgan al usuario el derecho de estudiar, modificar
y distribuir el mismo de manera libre a quien sea y bajo cualquier propósito.

De acuerdo con la Open Source Initiative (OSI), la cual es una organización sin
fines de lucro ubicada en California, EUA fundada en 1998 y cuya misión consiste en
educar sobre los beneficios del código abierto y lo considera un método de desarrollo
que aprovecha el poder de revisión distribuida y transparente; prometiendo mejor cali-
dad, mayor fiabilidad, flexibilidad y menor costo.

De manera sencilla, la distribución del Open Source Software (OSS) se debería


basar en los siguientes criterios:

1. Redistribución libre del software (Comercial o No).

2. Código fuente abierto para ser estudiado y modificado.

3. Las obras derivadas pueden y deben ser distribuidas bajo la misma licencia.

4. Integridad del código fuente del autor, en el sentido que las obras derivadas de-
ben ser diferenciadas.

22
5. No discriminación contra personas o grupos.

6. No discriminación contra campos de la actividad.

7. Distribución de la licencia, es decir, aplica para todos sin necesidad de licencias


adicionales.

8. La licencia no debe ser específica de un producto.

9. La licencia no debe restringir otro software.

10. La licencia debe ser tecnológicamente neutral.

3.2.2 Hardware
El Hardware abierto es aquel conjunto de dispositivos físicos cuyas especificaciones
tales como diagramas esquemáticos, firmwares o planos de construcción son de acceso
público. Los proyectos de Hardware abierto utilizan fundamentalmente las licencias
OS para Software "portándolasçomo licencias Open Source Hardware (OSHW).

De acuerdo con la Open Source Hardware Association (OSHWA), en su declara-


ción de principios (v 1.0 2012),define al OSHW como aquel Hardware cuyo diseño
se hace disponible públicamente para que cualquier persona lo pueda estudiar, modi-
ficar, distribuir, materializar y vender, tanto el original como otros objetos basados en
ese diseño. Las fuentes del Hardware (entendidas como los ficheros fuente) habrán de
estar disponibles en un formato apropiado para poder realizar modificaciones sobre
ellas. Idealmente, el Hardware de fuentes abiertas utiliza componentes y materiales de
alta disponibilidad, procesos estandarizados, infraestructuras abiertas, contenidos sin
restricciones, y herramientas de fuentes abiertas de cara a maximizar la habilidad de
los individuos para materializar y usar el Hardware. El Hardware de fuentes abiertas
da libertad de controlar la tecnología y al mismo tiempo compartir conocimientos y
estimular la comercialización por medio del intercambio abierto de diseños.

Es preciso notar que el Hardware es diferente del Software ya que los recursos fí-
sicos se dedican a la creación de objetos físicos, de manera que personas o entidades
que produzcan objetos ("productos") bajo una licencia OSHW tienen la obligación de

23
NO declarar que dichos objetos hayan sido manufacturados, vendidos, garantizados o
autorizados en cualquier forma por el diseñador original. Además dichas personas o
entidades no deberán usar ninguna de las marcas registradas en posesión del diseñador
original.

La distribución del OSHW deberían de manera similar al OSS seguir los siguientes
criterios:

1. Documentación, el Hardware liberado deberá incluir la documentación en la for-


ma de ficheros de diseño y deberá permitir la modificación y redistribución de
los mismos.

2. Alcance, la documentación del Hardware deberá especificar claramente que par-


te del diseño, se libera bajo la licencia.

3. Programas necesarios, si el diseño bajo licencia necesita de un paquete de in-


formático, bien como parte del mismo, bien para operar de forma apropiada y
cumplir sus funciones básicas, la licencia podría requerir una interfaz suficiente-
mente documentada para realizar un programa que lo controle o bien un paquete
informático necesario liberado bajo una licencia de código abierto aprobada por
la OSI.

4. Obras derivadas, la licencia deberá permitir modificaciones y obras derivadas, y


permitirá que éstas se distribuyan bajo los mismos términos que la licencia de la
obra original.

5. Libre redistribución, la licencia no podrá restringir a nadie de la venta o distri-


bución de la documentación del proyecto.

6. Atribución, la licencia podría requerir que los documentos derivados y notifica-


ciones de copyright asociadas con los dispositivos atribuyan la autoría a la hora
de distribuir ficheros de diseño, bienes manufacturados y/o productos derivados
de los mismos (Diferenciación).

7. No discriminación a personas o grupos.

8. No discriminación a campos de aplicación.

24
9. Distribución de la licencia, la misma aplicará a todos aquellos a los que sea
redistribuído el trabajo.

10. La licencia no será específica a un producto.

11. La licencia no restringirá otro Hardware o Software.

12. La licencia deberá ser tecnológicamente neutral

25
3.3 Servo-Sistemas
Se define como servo-sistema a aquél conjunto de dispositivos cuya salida es regular-
mente un elemento mecánico y tiene un sistema de control retroalimentado que permite
manejar una o más variables de interés tales como posición, velocidad, torque etcéte-
ra. Generalmente, los servo-sistemas consisten en un manejador o driver, un actuador
(Motor) y un sistema de retroalimentación (Encoder), dicho proceso se esquematiza en
la figura 3.3.

Variable a
Driver Actuador
Controlar

Encoder

Figura 3.3: Esquema de un servo sistema

Los servo-sistemas son de manera general sistemas de control en lazo cerrado que
permiten conocer y corregir el error de la variable a controlar. Para el caso particular
de un servo-motor, el drive, es el encargado de controlar las 3 fases del servomotor (U,
V y W) y crear así campos electromagnéticos en el rotor. Mientras tanto, el encoder
se encargará de retroalimentar al sistema para que el motor pueda alcanzar la posición
deseada.

3.3.1 Drivers
En un servo-sistema, se le llama "Driver” (figura 3.4) al dispositivo electrónico es-
pecializado que se utiliza para el control del servo-actuador, cumple la función de
proporcionar la energía necesaria para la alimentación de dicho dispositivo mediante
electrónica de potencia y cuenta además con una serie de sensores para el control en

26
lazo cerrado ajustando de manera continua la variable de control de manera que la
desviación de ésta no salga de un intervalo definido. Su funcionamiento, de manera
sintética y generalizada, es el siguiente:

1. El servo-drive recibe una orden de control.

2. El servo-drive procesa y amplifica dicha señal de control y le transmite al servo-


actuador una señal eléctrica proporcional a la señal de control.

3. Uno o varios sensores presentes en el servo-actuador reportan el estado actual de


la variable de control al servo-drive.

4. El servo-drive compara la señal recibida desde el o los sensores con la que le


fue dada con la orden de control y aplica acciones correctivas en caso de ser
necesario.

5. El servo-drive mantiene la variable de control en el nivel deseado hasta recibir


nuevas instrucciones.

En los servo-drives comerciales actuales, existe la posibilidad de utilizar algoritmos


de control tales como el Proporcional Integral Derivativo (PID) que permiten alterar la
manera en que el servo-actuador responderá a los estímulos del servo-drive pudiendo
así lograr el desempeño deseado para cada aplicación.

3.3.2 Servomotores de Corriente Alterna


Un servomotor (figura 3.5) es la combinación de un motor de corriente directa o alter-
na combinado con un sensor de posición como por ejemplo, un encoder. De manera
similar a los motores convencionales, un servomotor está construido con un estator y
rotor; sin embargo, en este caso particular, existen dos devanados en el estator, uno de
excitación y uno de control los cuales al circularles una corriente, tienen un desfase
de 90◦ ; dentro del rotor existe un imán permanente como en muchos otros motores
eléctricos.

27
Figura 3.4: Esquema de distintos drivers para servo-motor de corriente alterna marca
SureServo. Manual de Usuario SureServo - [D IRECT 2011]

Esencialmente no existe diferencia en el principio de operación de motores de co-


rriente alterna y servo-motores, sin embargo, un servo-motor debe ser capaz de man-
tener una posición deseada cuando no exista una señal de control activa, es decir, que
al desaparecer la señal de control, el servo-motor debe ser capaz de detenerse en dicha
posición y resistir perturbaciones que pudieran afectar la misma.

El control de los servo-motores se realiza mediante campos magnéticos pulsados


los cuales pueden ser entendidos como dos campos magnéticos circulares del mismo
tamaño y velocidad pero opuestos en sentido de rotación, al estar equilibrados, el tor-
que resultante es teóricamente por tanto nulo. Si el sistema de control detecta un error
en la posición, el devanado de control es inducido de manera que el torque resultante
ya no es nulo y el rotor comienza a moverse a la posición deseada. En circunstancias
normales el campo magnético de los devanados internos del servo-motor es un cam-
po magnético rotativo ovalado (sintetizado como dos campos magnéticos circulares).
De manera análoga a los motores convencionales, la inversión de las fases (desfase de
180◦ ) se traducirá en un cambio de sentido de giro del servomotor.

Para lograr que el servo-motor se detenga inmediatamente al desaparecer la señal


de control, la resistencia del devanado del motor es particularmente alta. Es importante
aclarar que a diferencia de los motores de corriente alterna ordinarios que en circuns-

28
tancias normales operan de manera simétrica y en los que la asimetría entre las fases
se considera una falla, los servo-motores aprovechan diversos niveles de “asimetría”
para lograr su cometido, ésta es la diferencia fundamental entre estos dos sistemas.

En los servomotores de corriente alterna se obtiene la mejor velocidad de respuesta


a las señales de control cuando se exige al sistema menor torque, en cambio se ob-
tiene un mejor posicionamiento con una velocidad de respuesta menor. El control del
desempeño dinámico del sistema exige velocidad computacional para la realización de
los cálculos necesarios, dependiendo del servo-sistema, los modos de control que se
pueden tener del mismo pueden ser de torque, de posición y de velocidad o combina-
ciones de los anteriores; en cada caso se prioriza la variable a controlar y se dejan casi
de lado las restantes.

Figura 3.5: Distintos tamaños de Servo-motores marca SureServo, Manual de Usuario


SureServo - [D IRECT 2011]

3.3.3 Encoders
Un encoder (figura 3.6 y 3.7) es un dispositivo mecánico-electrónico que permite trans-
formar movimiento mecánico (rotativo o lineal) en información útil procesable por el
sistema (posición, velocidad, desplazamiento, etc). Existen dos tipos principales:

• Absoluto: Produce a la salida un código digital único para cada posición espe-
cífica y se encuentra referenciado a un origen.

• Incremental: Produce a la salida un pulso digital cada vez que el sensor pasa
una marca del encoder, no se encuentra referenciado a un origen y en su forma
más simple sólo es capaz medir cambios entre posiciones.

29
Figura 3.6: Diversos tipos de encoder rotatorio para uso industrial. Cortesía de Automa-
tion Direct

El cambio de posición leído por un encoder determina el movimiento y comparado


con una escala de tiempo la velocidad o la aceleración, el tipo de sensores que estos
dispositivos utilizan puede ser ópticos, magnéticos, inductivos, capacitivos, entre otros.
En el ambiente industrial, es común encontrar distintos tipos de encoders para diferen-
tes aplicaciones y juegan un papel vital para el posicionamiento preciso de dispositivos
mecánicos.

(a) Encoder incremental (b) Encoder rotatorio para


para la medición de ve- medición de ángulos con 3
locidad y desplazamiento bits de resolución
relativo

Figura 3.7: Tipos principales de encoder, incremental 3.7(a) y absoluto 3.7(b)

30
3.4 Variación de Velocidad en motores de CA
La capacidad de variar la velocidad en las máquinas eléctricas (motores) con que ope-
ran diversos sectores industriales siempre ha tenido un gran peso pues es una manera
fiable para puede mantener control sobre la producción, calidad, ventilación, tempera-
tura, etc.

Para realizar esto, anteriormente se hacía uso únicamente de sistemas mecánicos


para la reducción de velocidad mediante poleas o engranes, o bien, a motores de CD
sin embargo estos dos sistemas requieren de mantenimiento periódico que resulta en
pérdida de tiempo y costos de operación. Para los motores de CA (Inducción) es posi-
ble "variar” su velocidad desde su construcción haciendo uso de la ecuación 3.1 donde
sus RPM están dadas por la relación mostrada, donde f es la frecuencia de la red eléc-
trica en Hz y P es el número de pares de polos del motor, es decir, que si se tiene una
máquina eléctrica de cuatro polos (2 pares) conectada a una red de 60 Hz, la máquina
operará a 1800 RPM.

60 ∗ f
RP M = (3.1)
P
Conforme la industria electrónica fue tomando mayor fuerza y abaratando costos,
se hizo posible la introducción de dispositivos electrónicos capaces de incluir las ven-
tajas de un motor de CD en los confiables motores de inducción posibilitando así el
control de velocidad de los mismos; estos dispositivos son conocidos actualmente co-
mo Variadores.

En general, para controlar la velocidad de un motor trifásico es necesario alterar


la frecuencia de la corriente con la que es alimentado el motor que se desea controlar.
Aunque en la teoría existen diversos métodos que permiten controlar parámetros como
la frecuencia, el voltaje o la corriente, el más común y comercialmente utilizado es el
de PWM [A HMAD 2010].

En su mayoría, los variadores de frecuencia transforman la CA en CD más facil


de "dosificar” según los requerimientos de operación de la aplicación; esto se realiza
generalmente en 3 etapas (figura 3.8):

31
1. Se rectifica la corriente alterna de las 3 fases.

2. Se almacena la energía en un Bus de CD.

3. Se inyecta la energía necesaria al motor de CA.

Figura 3.8: Circuito esquemático básico para la variación de velocidad en motores de CA.

El voltaje contenido en el BUS CD (figura 3.8) es en teoría siempre el mismo, por


lo que el dispositivo de control se vale de las salidas (Inversor) cuyos disparos son con-
trolados regularmente por un micro-controlador que calcula el tiempo y la frecuencia
(PWM) que los transistores deberán inyectar corriente al motor para cumplir con el
requerimiento de velocidad.

Figura 3.9: Ejemplo de PWM en un variador para CA:


El voltaje entre fases (azul) es modulado por una serie de pulsos que a la salida
resultan en un voltaje "senoidal” (rojo).

32
Dentro de los dispositivos electrónicos de variación de velocidad en motores de CA
se distinguen dos tipos principales de control, el escalar y el vectorial, a continuación
se presentan sus características.

3.4.1 Control Escalar


Como se puede observar en la ecuación 3.1, es posible variar la velocidad de un motor
de inducción variando la frecuencia de alimentación eléctrica f. La manera más popular
de realizar control de velocidad para motores de inducción (CA) donde no se requiere
de una gran precisión, es el método de control escalar volts / Hz.

Figura 3.10: Comportamiento de un motor de CA


Es posible controlar la velocidad de estás máquinas eléctricas siguiendo el perfil
descrito, limitándose a los límites dados por los parámetros nominales.

Como se observa en la figura 3.10 es necesario aumentar el voltaje al mismo tiempo


que la frecuencia para cumplir una relación constante. Sin embargo, en la práctica el
algoritmo solamente puede ser utilizado para aplicaciones donde la variación de par
sea pequeña. Cuenta con un intervalo de trabajo acotado en valores donde el control
fallará (bajas frecuencias o voltaje mayor al nominal) [A HMAD 2010].

33
3.4.2 Control Vectorial
El control vectorial, es un control orientado al flujo (Flux Oriented Control) cuya base
se encuentra en los principios de ingeniería eléctrica que enuncian que las cantida-
des de las 3 fases de las máquinas de corriente alterna (CA) trifásicas pueden ser
sintetizadas en vectores complejos que pueden representarse en sistemas coordinados
cartesianos de donde pueden obtenerse diversas relaciones físicas [N GUYEN 2008],
es decir que la suma vectorial de las corrientes del sistema trifásico del estator dará co-
mo resultado un vector de corriente (ecuación 3.2) que podrá ser utilizado para generar
una corriente inducida en el rotor (dependiente del tiempo) y para generar par.

IU (t) + IV (t) + IW (t) = IEST AT OR (t) (3.2)

El algoritmo de control realiza las proyecciones necesarias de IEST AT OR (t) para


transformar un sistema de 3 fases dependiente del tiempo en uno de 2 coordenadas (d
y q) invariante en el tiempo. Esto llevará al sistema a una estructura similar a la de un
motor de CD [TI 1998]. Este tipo de control requiere de la componente de torque (q)
y la componente de flujo (d). Al estar basado totalmente en proyecciones del vector
IEST AT OR (t), el algoritmo de control maneja cantidades instantáneas logrando una
buena respuesta aún con perturbaciones. Existen variantes de este sistema de control,
principalmente en cuanto al lazo de control:

• Lazo Abierto: El algoritmo de control estima el valor del ángulo de desliza-


miento en base a operaciones matemáticas.

• Lazo Cerrado: Mediante un sistema de retroalimentación como un encoder, se


determina el ángulo entre rotor y estator.

Un sistema de control vectorial en lazo abierto, al no necesitar de una etapa o


dispositivos de retroalimentación, será más económico y fácil de implementar que uno
de lazo cerrado pero la calidad del control de movimiento dependerá totalmente del
algoritmo programado por el fabricante.

34
3.5 CNC
3.5.1 Estandarización
La “International Organization for Standardization (ISO)” es la organización mundial
más grande encargada de crear y/o promover la utilización de normas internacionales
para los bienes, servicios y la buena práctica, su función principal es la de buscar la
estandarización de normas de productos y seguridad para las empresas u organizacio-
nes (públicas o privadas) a nivel internacional mediante consenso mundial en comités
ubicados en 164 países.

En su norma ISO-6983-1:2009 titulada: “Automation systems and Integration -


Numerical Control of Machines - Program format and definitions of address words.
Part 1” [ISO 2009] se presenta una serie de normas que pretenden unificar la manera
en que las máquinas herramienta deberían ser programadas y a pesar de que no es una
norma obligatoria, los fabricantes de controles suelen apegarse a ellas.

Existen otras entidades y normas de estadarización para el control automatizado de


máquinas-herramienta tal como las de la Electronic Industries Association (EIA) o el
Deutsches Institut für Normung (DIN) que tienen el mismo propósito y son relativa-
mente similares a las de la ISO, es esta última la más popular entre los fabricantes.

3.5.2 Nomenclatura de Ejes


Dado que el objetivo de un CNC es controlar los movimientos de un dispositivo de
manera coordinada,se tiene la necesidad de establecer sistemas coordenados que per-
mitan conocer la posición de los diversos puntos que se desean alcanzar. Para lograr
este objetivo, se deben establecer primero ejes coordenados de acuerdo a los grados de
libertad propios de la máquina; estos ejes se denominan de acuerdo a la norma ISO
R481 o bien la RS267-1.

Eje Z: Coincide con la dirección del husillo principal, aquel que proporciona la
potencia de corte. El sentido positivo es la dirección en que la herramienta de corte se

35
aleja de la pieza.

Eje X: Es el eje de desplazamiento horizontal y es perpendicular al eje Z, en el


caso de los tornos, el eje X es radial y paralelo a las guías del carro transversal y el
sentido positivo del mismo es el que sale fuera del eje de rotación.

Eje Y: Es el eje de desplazamiento principal y perpendicular al plano XZ, su senti-


do positivo es el avance de un tornillo que gira hacia la derecha desde el lado positivo
del eje Z al lado positivo del eje X.

Existen además de los mencionados ejes secundarios de desplazamiento (U, V y


W) paralelos a los ejes principales (X, Y y Z) y además otros denominados secundarios
(P, Q y R) que pueden ser o no paralelos a los principales. Se tiene una nomenclatura
para los ejes de movimiento circular (A, B y C) que definen movimientos rotatorios al
rededor de los ejes principales y su sentido positivo es aquel en que a modo de tornillo
derecho gire en sentido positivo de avance a su eje principal respectivo.

De manera que para una máquina-herramienta de torneado, los ejes quedarían tal
como se indica la figura 3.11.

Figura 3.11: Nomenclatura de ejes en un torno


De acuerdo a la regla de la mano derecha puede observarse el sentido de giro que
tiene C de acuerdo al eje Z.

36
3.5.3 Programas para CNC
Un programa de CNC en la actualidad es en sí mismo un documento electrónico de
texto plano cuya extensión está definida por el fabricante (*.txt, *.har, *.cnc, etc.) y
cuyo contenido será una serie de líneas de código alfanumérico. Para que esta serie
de caracteres (programas) puedan ser interpretados de manera correcta por el control
a utilizar, se deben seguir ciertas reglas (3.5.1) que son denominadas lenguaje de pro-
gramación.

Un programa correctamente escrito debe además ser entendible por cualquier otra
persona (con el conocimiento mínimo requerido) que desee leer el programa; para esto
se recomienda que en el programa incluya tres etapas bien definidas:

1. Cabecera: Se recomienda incluir comentarios sobre el maquinado, la pieza que


se fabrica, operaciones, herramientas, etc.

2. Programa: Se recomienda numerar las líneas, preferentemente en decenas y con


los comentarios que se consideren pertinentes entre paréntesis.

3. Final: Especificar la función requerida dependiendo si se desea reiniciar o no el


programa.

Los programas de control numérico están compuestos por líneas de código de-
nominadas “bloques” (figura 3.12), los bloques se ejecutan de manera secuencial de
izquierda a derecha y de arriba hacia abajo e incluyen datos, palabras o funciones.

Figura 3.12: Estructura básica de una línea de código ISO para CNC.

En la programación de código para CNC se utilizan algunas letras que en conjun-


ción con una serie de números, forman palabras; la tabla 3.1 incluye las más utilizadas
y la descripción de la función que representarán al ser interpretadas por el control.

37
Palabra Descripción
N Número de línea
G Función preparatoria
M Función Auxiliar
F Velocidad Avance
S Velocidad Husillo
T Herramienta
X, Y, Z Coordenada

Tabla 3.1: Letras usadas para la programación de CNC en código ISO

3.5.3.1 Número de Línea


Comienzan con el caracter N e indican el número de renglón en que se encuentra un
bloque nuevo, deben escribirse de manera incremental y se recomienda que sean nu-
merados en decenas de manera que si después se necesita incluir renglones adicionales,
no sea necesario reescribir toda la numeración. Dependiendo del intérprete del control,
tendrá la opción de abortar la ejecución del programa si un bloque no se encuentra
numerado o bien si la numeración del bloque no fuera incremental.

N10 G00 X0 Línea 10


N20 G00 X1 Línea 20
N21 G01 X1.5 (Corrección) Línea 21
N30 G01 Y2.1 Línea 30
N40 G01 X1 Línea 40
... ...

Tabla 3.2: Ejemplo de numeración de bloques

3.5.3.2 Funciones Preparatorias G


Comienzan con el caracter G y 2 o más dígitos numéricos después de este, son siempre
programados al inicio de un bloque e indican las condiciones de trabajo del control.

38
Muchos fabricantes incluyen sus propias funciones preparatorios por lo que la inter-
pretación de las mismas puede variar dependiendo del control. Se dividen en 2 grupos
secuenciales cuya función se activa únicamente durante la ejecución de la misma o
modales que permanecen activas hasta que otra función las reemplace. Las funciones
preparatorias G contenidas en la norma DIN 66025 o RS274 son:

• G00: Movimiento rápido.

• G01: Interpolación lineal.

• G02/G03: Interpolación circular.

• G04: Temporización (centésimas de segundo).

• G07: Interpolación circular tangencial.

• G08/G09: Look ahead.

• G10/G11: Control de pre-procesamiento de bloques.

• G12/G13: Interpolación circular radial.

• G17-G20: Selección de planos.

• G33: Roscado.

• G36/G37: Limitación programable de la velocidad de avance.

• G38/G39: Imagen en espejo.

• G40-G44: Compensación del radio de la herramienta.

• G50: Escala.

• G51/G52: Rotación de la parte.

• G53/G59: Ceros de referencia.

• G63/G66: Ignorar velocidades máximas.

• G70/G71: Unidades imperiales o métricas.

39
• G72/G73: Interpolación con parada precisa.

• G74: Ir a “Home”.

• G80/G89: Ciclos enlatados.

• G90/G91: Programación absoluta o incremental.

• G92: Nuevo “cero” pieza.

• G94/G95: Opciones de velocidad de avance.

• G160/G164: Aprendizaje ART.

• G186: Tolerancia programable.

3.5.3.3 Funciones Auxiliares M


Comienzan con el caracter M seguido de dígitos numéricos de 2 o más cifras y general-
mente implican darle instrucciones a la máquina para realizar funciones complementa-
rias como cambiar la dirección rotación del husillo principal o detener el movimiento
de todos los ejes para que el operador pueda realizar una medición o inspección de la
pieza. Al igual que con las funciones preparatorias G, la interpretación de las funcio-
nes auxiliares dependerá del fabricante y se encuentran contenidas en la misma norma
que las funciones preparatorias.

• M00: Parada NO condicional.

• M01: Parada condicional.

• M02/M30: Fin de programa.

• M03/M04/M05: Control del husillo principal.

• M06: Cambio de herramienta.

• M19: Parada orientada del husillo principal (grados).

• M40-M46: Selección de velocidad del husillo principal (transmisión mecánica).

40
3.5.3.4 Selección de Herramienta T
Comienza con el caracter T seguida de 4 dígitos; el primer par de dígitos indica la po-
sición de la herramienta en el almacenaje y el segundo par el número de herramienta
en una base de datos para efectos de corrección de posicionado (diferentes herramien-
tas, diferentes formas). En algunos controles, si la función miscelanea M06 no ha sido
incluida en el mismo bloque que la instrucción T, el sistema continuará el maquinado
y cambiará los parámetros cuando se realice el cambio de herramienta, esto se co-
noce como “Next Tool Ready”, (siguiente herramienta lista) que permite reducir los
tiempos muertos durante el maquinado.

... ...
N50 M06 T0201
... ...

Tabla 3.3: Ejemplo de cambio de la herramienta actual por la #02 con el juego de para-
metros #01 en la línea 50.

3.5.3.5 Coordenadas
El posicionamiento de el punto final de una herramienta en un espacio de trabajo es la
premisa básica de un CNC para lograr ésto, tal como se comentó en 3.5.2 se necesita
de una nomenclatura para los ejes de trabajo para así poder distinguirlos, de manera
que se hace uso principalmente de los caracteres X, Y y Z para denotarlos, seguido
de una serie de números que indicarán la posición a la que el control deberá enviarlos
siguiendo una trayectoria definida.

Las coordenadas de posicionamiento pueden estar referidas a un punto inicial indi-


cado al control y a partir de ese punto realizar todo el proceso de maquinado, a esto se
le llama Coordenadas Absolutas y podrán ser activadas con la función preparatoria
G90; o bien cada punto estará referido al posicionado anterior, es decir, la referencia
seria el punto inmediato anterior al que fue desplazada la herramienta, a esto se le de-
nomina Coordenadas Incrementales y se activan mendiante la función preparatoria
G91. En la tabla 3.4 se puede observar las diferencias de programación que existen

41
entre estos dos sistemas para seguir una misma trayectoria representada en la figura
3.13.

Figura 3.13: Trayectoria imaginaria de una herramienta de corte en un plano (Z, X)

Absolutas Relativas
N10 G90 N10 G91
N20 G00 Z10 X10 N20 G00 Z10 X10
N30 G01 Z80 X10 N30 G01 Z70 X0
N40 G01 Z90 X20 N40 G01 Z10 X10
N50 G01 Z20 X20 N50 G01 Z-70 X0
N60 G01 Z10 X10 N60 G01 Z-10 X-10

Tabla 3.4: Diferencias de programación para la trayectoria referida en la figura 3.13 para
coordenadas absolutas e incrementales.

3.5.3.6 Velocidad de Avance F


Las instrucciones encargadas de controlar la velocidad de avance en el proceso de
maquinado controlado por CNC (Feedrate) comienzan con el caracter F seguido de
una serie dígitos numéricos. Dependiendo de la función preparativa que esté activa, el
avance (alimentación) podrá estar en términos de tiempo o revolución, es decir, si G94
mm/in
está activa indicará al control que el avance debe realizarse en min
; en cambio si la
mm/in
función activa fuera G95 el control deberá interpretar el comando como rev
.

42
En el ejemplo presentado en la tabla 3.5, se puede observar, la implementación
del código CNC para la programación de la velocidad de avance, en este ejemplo
particular, indicando al control que ésta vale 10 mm
rev
.

... ...
N15 G71 G95 F10
... ...

Tabla 3.5: Ejemplo de la programación de la velocidad de avance F

3.5.3.7 Velocidad del Husillo S


Para controlar la velocidad de rotación husillo principal (Eje Z) se utilizan palabras
que comienzan con el caracter S seguido de una serie de números que dependiendo
de la función preparatoria G que se encuentre activa indicarán al control la manera en
que debe interpretar dicho comando, es decir, que si G96 se encuentra activa, se tendrá
una velocidad de corte constante, para lo cual el control se encargará de determinar
dependiendo del diámetro de la pieza en dicho instante la velocidad a la que ésta deberá
girar (a menor diámetro mayor velocidad); no así para cuando se encuentre activa la
función preparatoria G97 que determinará una velocidad de giro en RPM.

... ...
N30 G95 S300
... ...

Tabla 3.6: Ejemplo de la programación de la velocidad del husillo S indicando 150 RPM

43
3.6 Protocolo Modbus
Modbus es un protocolo de comunicación serial que está basado en una arquitectura
maestro-esclavo, diseñada en 1979 por la empresa Modicon (ahora Schneider Electric)
se ha convertido en un estándar de comunicación industrial [M ODBUS O RG 2012], es
de utilización pública y no hay que pagar regalías o comprar licencias para implemen-
tarlo. Se encuentra en la capa 7 del modelo (Open Source Interconection) englobado
en la norma ISO 7498-1 [ISO 1996] el cual caracteriza y estandariza las funciones
internas de un sistema de comunicación fragmentandolo en capas de abstracción:

1. Capa Física: Controlar la transmisión de bits.

2. Capa de Comunicación: Asegurar la confiabilidad de 1.

3. Capa de Red: Establecer, mantener y terminar conexiones.

4. Capa de Transporte: Cobertura de errores y control de flujo.

5. Capa de Sesión: Establecer, manejar y terminar sesiones de usuario.

6. Capa de Presentación: Reformateo, compresión y encriptado.

7. Capa de Aplicación: Proporcionar servicios directamente a aplicaciones.

El protocolo Modbus utiliza lineas seriales y comúnmente se implementa en redes


RS-485 el cual es un sistema de transmisión multipunto diferencial que puede trans-
mitir 35Mbit/seg a 10 metros y 100 Kbit/seg a 1200 metros aún en canales con ruido,
el medio por el que se transmiten dichas señales es un par trenzado, el primer cable
denominado línea invertida, A ó - y el segundo línea no invertida, B ó +; el protocolo
evalúa únicamente la diferencia de tensión existente entre las 2 líneas como se muestra
en la tabla 3.7.

1 Lógico 0 Lógico
A − B < −0,3V olts A − B > +0,3V olts

Tabla 3.7: Interpretación lógica de la diferencia en voltaje para el RS-485

44
El protocolo permite la interconexión (ideal) de hasta 255 dispositivos (1 Byte) en
una misma red, existen en la actualidad 3 variantes:

• Remote Terminal Unit (RTU): Comunicación mediante datos binarios (Más


Utilizada).

• American Standard Code for Information Interchange (ASCII): Comunica-


ción realizada mediante caracteres ASCII.

• TCP/IP: Implementación del protocolo en redes ethernet

Para que el protocolo funcione, siempre se implementa un maestro y uno o más


esclavos (247 de acuerdo a la norma excluido el TCP/IP), el maestro es aquel que
controla el incio de la comunicación con los demás dispositivos de la red por otro lado,
el esclavo simplemente contesta a las peticiones del maestro; cada esclavo tiene una
dirección única en la red.

1. El maestro envía un mensaje estructurado a todos los esclavos.

2. El esclavo a quien el mensaje va dirigido contesta la petición del maestro.

3. Todos los esclavos quedan en espera de una nueva petición del maestro.

El protocolo Modbus hace uso de “tablas de datos” para almacenar información, a


cada valor en esta tabla se le denomina “registro” el estándar utiliza el primer dígito
para identificar el tipo de registro al que se hace referencia (tabla 3.8).

Identificador Inglés Español Dirección


0x Coils Salida Discreta 00001-09999
1x Discrete Inputs Entrada Discreta 10001-19999
3x Input Registers Registros de Entrada 30001-39999
4x Holding Registers Registros de Memoria 40001-49999

Tabla 3.8: Direcciones utilizadas en las tablas de datos del protocolo Modbus según la
norma Modicon

45
De acuerdo al “MODBUS Application Protocol Specification” [M ODBUS O RG 2012]
existen diversas funciones que facilitan la comunicación entre dispositivos y depen-
diendo a las necesidades del fabricante y su producto, estarán o no implementadas
(tabla 3.9).

Código Descripción
1 Read Multiple Coils
2 Read Multiple Discrete Inputs
3 Read Multiple Holding Registers
4 Read Multiple Input Registers
5 Write Single Coil
6 Write Single Holding Register
15 Write Multiple Coils
16 Write Multiple Holding Registers

Tabla 3.9: Funciones Modbus más comúnes de acuerdo a [M ODBUS O RG 2012]

Figura 3.14: Esquematización general de un paquete de datos en protocolo Modbus

Al realizarse la comunicación entre dispositivos mediante el protocolo Modbus, el


maestro envía un paquete de datos con la forma que se ilustra en la figura 3.14 el cual
consta dependiendo de la variante de los sub-paquetes presentados en las tablas 3.10,
3.11 y 3.12. Para la comprobación de errores en el caso de la variante RTU se utiliza
un algoritmo de Comprobación de Redundancia Cíclica (CRC) de 16 bits, para ASCII
se utiliza la Comprobación de Redundancia Longitudinal (LRC) a 32 bits y finalmente
para TCP se utiliza la comprobación propia del protocolo.

46
Sub-bloque Tamaño (bits) Descripción
Inicio 28 Periodo de silencio
Dirección 8 Dirección del dispositivo
Función 8 Código de función (3.9)
Datos 8*n Información a enviar
CRC 16 Comprobación de errores
Fin 28 Periodo de silencio

Tabla 3.10: Formato del paquete de datos para Modbus RTU

Sub-bloque Tamaño (char) Descripción


Inicio 1 Caracter “:”
Dirección 2 Dirección de la estación
Función 2 Código de función (3.9)
Datos n Información a enviar
LRC 2 Comprobación de errores
Fin 2 Caracter de fin de línea

Tabla 3.11: Formato del paquete de datos para Modbus ASCII

Sub-bloque Tamaño (char) Descripción


Transacción 2 Sincronización
Identificador 2 Identificador del protocolo
Tamaño 2 Número de bytes restantes
Dirección 1 Dirección del dispositivo
Función 1 Código de función (3.9)
Datos n Información a enviar

Tabla 3.12: Formato del paquete de datos para Modbus TCP/IP

47
3.7 Operaciones de Maquinado en Torneado
3.7.1 Cilindrado
El cilindrado, es una operación de maquinado que produce como su nombre lo índica
partes cilíndricas y que tiene por objeto obtener una superficie cilíndrica de diámetro
menor a la pieza de trabajo de la que se parte; para lograr ésto, la herramienta de tra-
bajo correrá en un eje paralelo al de giro de la pieza desprendiendo cierta cantidad de
material.

La velocidad de corte de la punta de la herramienta, está dada por la ecuación 3.3


y se refiere a la velocidad de avance que deberá desarrollar el eje longitudinal de la
Máquina Herramienta Reconfigurable de Propósito Específico.

VCorte = π ∗ V P iezaRP M ∗ P rof undidadCortemm (3.3)

Figura 3.15: Proceso de cilindrado. Cortesía de Florian Schott.

3.7.2 Refrentado
El refrentado, es una operación que consiste en maquinar una de las caras de la pieza
cilíndrica con la finalidad de que esta quede perfectamente plana. Esto se realiza mo-

48
viendo la herramienta de corte en dirección normal al eje de rotación de la pieza de
trabajo. Es posible utilizar para esto la misma herramienta que en el cilindrado.

Es sumamente necesario el cuidado de esta operación ya que si la herramienta de


corte pasa del centro del eje de giro de la pieza de trabajo, el sentido de giro de la
pieza se invierte lo cual puede llegar a dañar irreparablemente el filo o el inserto de la
herramienta.

Figura 3.16: Proceso de refrentado. Cortesía de Florian Schott.

3.7.3 Conicidades
Las operaciones de conocidad son semejantes al proceso de cilindrado con la diferencia
de que en este se presenta un movimiento interpolado (diagonal) de los ejes transversal
y longitudinal de la herramienta.

Figura 3.17: Maquinado de conicidad en un torno.

49
3.7.4 Ranurado
El ranurado es un proceso de manufactura que consiste en el maquinado de muescas de
profundidad y anchura especificadas de acuerdo al requerimiento, similar al proceso
de cilindrado con la diferencia que este se realiza en una sección definida de la pieza y
puede ser frontal (3.18(a)) o lateral (3.18(b)). La herramienta necesaria para este pro-
ceso debe ser elegida con precaución, eligiendo correctamente entre herramientas de
corte recto o lateral según sea necesario.

(a) Esquema de ranurado (b) Esquema de ranurado


frontal lateral

Figura 3.18: Esquematización del proceso de ranurado en una operación de torneado me-
diante buril de tronzado. Cortesía de Florian Schott.

3.7.5 Roscados
El roscado, es una operación fundamental en los procesos de manufactura metal-
mecánicos, la necesidad de unir piezas es fácilmente solucionada aplicando este con-
cepto. En definición, si una pieza con parte cilíndrica o casi cilíndrica posee un canal
en forma de hélice continua se le llama tornillo, es decir, posee rosca exterior; en cam-
bio si esta es una superficie interna se denomina tuerca.

El roscado consiste en mecanizar helicoidalmente interior o exteriormente una su-


perficie cilíndrica, en la actualidad, este puede efectuarse con herramientas manuales
como machuelos de roscar o con terrajas; o con máquinas tales como taladros, fresa-
doras o tornos. El perfil de las ranuras talladas viene determinado por la aplicación

50
que haya de tener la pieza. Los tornillos de fijación tienen filetes triangulares, para
las roscas de movimiento son adecuadas las roscas trapezoidales, de sierra o de filetes
redondos.

1. Paso: La vuelta sencilla de una rosca alrededor del cilindro se llama espira. El
camino recorrido en dirección axial se llama paso de rosca. El sentido del filete
puede ser a la derecha o a la izquierda distinguiendo así roscas de paso derecho o
izquierdo; la más utilizada es la rosca de paso derecho, para atornillar, se deberá
girar en torno a las agujas del reloj. Existen roscas con más de un filete que son
útiles cuando con un corto giro, se quiere obtener un gran avance en dirección
axial.

2. Diámetro Exterior: El diámetro del tornillo en las crestas de los filetes.

3. Diámetro Interior: El diámetro del tornillo en los valles de los filetes

4. Ángulo de Hélice: El ángulo formado entre dos de los filetes de un tornillo.

Figura 3.19: Partes de una rosca.

Existen diversos tipos estandarizados de roscas, ya sea por forma o dimensiones;


creadas para cubrir necesidades en aplicaciones específicas, algunas de ellas son:

• Métrica ISO En ella se miden todas las magnitudes en milímetros, el ángulo de


los flancos es de 60◦ . En los pernos se redondea el fondo de rosca y las puntas
están aplanadas; en las tuercas, las puntas están redondeadas y el fondo de rosca
aplanado. Un ejemplo de designación es M8 que quiere decir rosca métrica con
diámetro igual a 12 milímetros.

51
• Triangulares Las roscas de los tornillos de fijación tienen que soportar grandes
esfuerzos y no soltarse, las roscas de perfil triangular responden a esta exigencia;
este tipo de roscas tienen un paso reducido y ya que el rozamiento entre los flan-
cos de la rosca interior y exterior es grande, provoca un efecto de auto-frenado
que evita que el tornillo se afloje con facilidad.

• Whitworth Las dimensiones se dan en pulgadas, el ángulo de los flancos es de


55◦ , las puntas y el fondo de las roscas se encuentran redondeadas, el paso de
la rosca está definido por el número de espiras que entran en una pulgada. Un
ejemplo de designación es 5/8” que quiere decir que el diámetro es de 5/8 de
pulgada.

• Whitworth para Tubos Se utiliza para roscas de tubos, armaduras, accesorios


y bridas roscadas, tiene la misma forma de la rosca Whitworth tradicional pero
con un paso menor, no tienen juego en las puntas, el diámetro nominal no se
refiere al diámetro exterior de la rosca sino al interior del tubo. Un ejemplo de
designación es B1” que se refiere a una rosca para tubos de 1” de interior.

• Finas Tienen pasos más pequeños y profundidades de rosca menores a las roscas
métricas o Whitworth, al tener un paso más reducido, se obtiene un auto-frenado
mejor, se utilizan en piezas que estarán expuestas a sacudidas o vibraciones, exis-
te rosca fina tanto en métrica como en Whitworth. Un ejemplo de designación
es M50x2, que se refiere a una rosca métrica fina de 50 milímetros de diámetro
por 2 milímetros de paso, W99x1/4” que quiere decir una rosca fina Whitworth
de diámetro de 99 milímetros y paso de 1/4 de pulgada.

• Trapezoidales Utilizada comúnmente para tornillos de movimiento, el ángulo


de los flancos es de 30◦ , el diámetro exterior y el interior dejan juego entre am-
bos, estos deben soportar carga y están estandarizados en uno o varios filetes. Un
ejemplo de designación es Tr40x12 (2 filetes) que quiere decir, rosca trapezoidal

52
de 40 milímetros de diámetro, 12 milímetros de paso y de 2 filetes.

• Sierra Esta rosca se emplea cuando se requieren grandes presiones unilaterales,


como en los husillos de presión de las prensas; el flanco activo tiene una incli-
nación de 3◦ y el posterior (que no trabaja) tiene inclinación de 30◦ . Un ejemplo
de designación es S50x8 que se refiere a una rosca de sierra de diámetro de 50
milímetros y 8 milímetros de paso.

• Redondeadas Su perfil le permite ser resistente a deterioros, se emplea para hu-


sillos de válvulas, roscas de mangueras, entre otras. Un ejemplo de designación
es Rd50x1/” que se refiere a una rosca redondeada de diámetro igual a 50 milí-
metros y paso de 1/6 de pulgada.

El hecho de que dos piezas puedan atornillarse de manera fluida no implica que
estas ajusten de manera correcta, para esto es necesario igualar los diámetros de los
flancos tanto en perno como en tuerca, tener un perfil simétrico y pasos iguales. Para
que los elementos roscados puedan ser intercambiables entre sí, se han fijado toleran-
cias y límites para los diámetros interior y exterior del roscado, ya que existen diversas
exigencias en cuanto a la calidad de las mismas por sus diferentes aplicaciones, se han
estandarizado distintos grados de calidad cuyo símbolo se coloca después de la desig-
nación de la rosca: Calidad Fina (f), Calidad Media (m) y Calidad Baja (g).

Existen diversos procedimientos que permiten realizar el mecanizado de roscas, es


posible utilizar terrajas o machuelos de roscado y existen además alternativas automá-
ticas o semiautomáticas utilizando roscadores automáticos o máquinas-herramienta.

Utilizando máquinas-herramienta de torneado, es posible maquinar roscados con


buriles especiales conocidas como cuchillas de roscar, que aunque necesitan dar más
pasadas y en general de un mayor tiempo de maquinado, presentan resultados en cuanto
a calidad y exactitud superiores; es posible mediante este método realizar roscas de
cualquier tamaño y forma. De manera general, para realizar el maquinado de una pieza
roscada (tornillo) mediante el torneado tradicional, se siguen los siguientes pasos:

53
1. Refrentado y afinado de la pieza.

2. Sujeción de la pieza entre puntos, desbastado y afinado al diámetro de la cabeza.

3. Desbaste y afinado de la parte fileteada y la espiga

4. Disponer el torno para roscar y sujetar la herramienta de roscado

5. Tallado de la rosca

6. Torneado de la punta

7. Maquinado de la cabeza

8. Templado de la punta

54
La metodología histórica, a mi pa-
recer, es producto del sentido co-
mún aplicado a las circunstancias.
Samuel E. Morison
CAPÍTULO

4
Materiales y Métodos

55
4.1 Materiales
4.1.1 Servo-Sistemas SureServo
Es un sistema comercial de servo-control de la marca Automation Direct construido
desde 100 hasta 3000 kW de potencia y están disponibles con o sin freno integrado,
cuentan con control de posición, velocidad o torque. Para controlar el sistema, este
cuenta con una serie de entradas digitales que pueden ser programadas para dar dife-
rentes instrucciones al servo-sistema, entradas analógicas que permiten el control de
velocidad y torque o bien puede utilizarse comunicación vía red Modbus para dar ins-
trucciones al sistema o para leer los parámetros y sensores.

Para “afinar” el modelo de control, el sistema incluye 3 modos de entonación: ma-


nual, fácil y adaptativo que permiten al usuario establecer parámetros para modificar
el comportamiento y respuesta del control ante exigencias del usuario o perturbaciones
externas.

Figura 4.1: Esquema de conexión y control para servo-sistema SureServo

56
4.1.2 Drive de CA DuraPulse GS3 y Motor MicroMax
El drive de CA DuraPulse es un controlador (también conocido como “inversor”) de
velocidad para motores de inducción de CA de 3 fases así como el arranque, paro,
modificación de las rampas de aceleración y protección ante la sobre-carga del dispo-
sitivo. El dispositivo permite reducir la cantidad de energía consumida por el motor
suavizando el arranque y otorga al usuario la capacidad de controlar distintos paráme-
tros mediante la programación de comandos, mediante entradas digitales de control o
bien conectando el dispositivo a una red Modbus RTU.

Figura 4.2: Esquema de sistema de variación vectorial SureServo

57
4.1.3 Gabinete del Control
El gabinete utilizado para contener los elementos del control es un gabinete de acero de
la marca Schneider Electric 4.3(a) modelo NSYCRTN86300-M, las medidas elegidas
fueron de 800 de altura, 600 de ancho y 300 de profundidad expresadas en milímetros
(mm).

El gabinete se dividió en secciones donde se montarán los dispositivos, se colocaría


el cableado y una PC; los diagramas eléctricos de conexión pueden ser encontrados en
la sección de apéndices al final del documento. El montaje del gabinete incluyó una
sección de protección eléctrica, una base móvil para facilitar su traslado y un soporte
superior para permitir el montaje de un monitor 4.3(b).

(a) Gabinete marca Schneider electric (b) Gabinete armado en CICATA, Queré-
taro

Figura 4.3: Gabinete utilizado para este proyecto

58
4.1.4 Módulo de E/S Arduino
Se desarrolló un módulo de entradas y salidas mediante un sistema Arduino MEGA
(4.4) y una serie de circuitos de potencia y comunicaciones. La idea central del “mó-
dulo de E/S Arduino” es crear un similar económico a módulos comerciales existen-
tes cuya función central es ser un esclavo en una red Modbus a la espera de recibir
instrucciones del maestro para que éste lea o escriba las entradas o salidas digitales
respectivamente.

Figura 4.4: Tarjeta de desarrollo Arduino modelo 2560 (MEGA)

Gracias a esto, el sistema será capaz de ejecutar códigos misceláneos (3.5.3.3) para
controlar elementos como una bomba de refrigerante, el control de la puerta de seguri-
dad, luces indicativas, etcétera. Algunos ejemplos de sistemas comerciales de este tipo
se representan en la figura 4.5.

(a) Módulo marca Adam (b) Módulo marca Termi-


cortesía de Advantech nator I/O cortesía de AuDi-
rect

Figura 4.5: Existen diversas opciones comerciales para módulos de entradas y salidas de
tipo industrial.

59
La construcción del modulo es sencilla, pues consiste únicamente en diseñar o
anexar a la tarjeta Arduino un módulo que permita al sistema manejar señales de “po-
tencia”, por su fiabilidad y facilidad de implementación se utilizaron optoacopladores,
los cuales permiten a una señal de “baja potencia” manejar una carga a la vez que las
aísla galvanicamente, un ejemplo del diseño para una señal se muestra en la figura 4.6.

Figura 4.6: Circuito esquemático general para el manejo de señales de potencia mediante
una señal digital

De la misma manera, puede utilizarse un circuito análogo al presentado en 4.6 pa-


ra el manejo de las entradas de potencia. El diseño final puede ser encontrado en la
sección de apéndices. Las tarjetas Arduino actuales cuentan con uno o más puertos de
comunicación serial en RS-232 y por lo menos una de estos puertos está conectado
a un conversor a USB, lamentablemente este tipo de señales no son muy confiables
en ambientes industrializados, por ello se decidió utilizar la red Modbus RS-485 ya
implementada para la comunicación con los dispositivos presentados en los capítulos
anteriores mediante un circuito integrado MAX485 o similar, el cual es un “transcep-
tor” que permite transformar niveles de voltaje a aquellos propios del RS-485 para
recepción y transmisión de información.

Figura 4.7: Diagrama de conexión del CI MAX485

60
Existen librerías para Arduino que permiten al usuario programar en la tarjeta el
código necesario para que este se comporte como un esclavo en una red Modbus un
ejemplo de ella es la librería “Arduino Modbus Slave” creada por jpmzometa que pue-
de encontrarse en su sitio web que tiene implementadas las funciones 3, 6 y 16. Una
mejor aproximación a la solución del problema es presentada en la librería “ACIMUT
Monitoriza for Arduino”, puede consultarse en el sitio web del proyecto, creada por
ACIMUT, la librería permite crear en un Arduino un pequeño servidor de monitoriza-
ción Supervisión, Control y Adquisición de Datos (SCADA).
Código Modificandose y no listo, aún probando.

switch(regs[MB_CTRL]) {
case 0:
digitalWrite(ledPin, LOW);
break;
case 1:
digitalWrite(ledPin, HIGH);
break;
default: /* blink */
if (millis() - tprev > regs[MB_TIME]) {
if (LOW == digitalRead(ledPin)) {
digitalWrite(ledPin, HIGH);
/* this is how you change your holding
registers
so the master can read values from the
slave */
regs[MB_CNT]++;
} else {
digitalWrite(ledPin, LOW);
}
tprev = millis();
}
}

Implementando las características enunciadas a lo largo de esta sección, se ha cons-


truido un módulo con 10 entradas y salidas digitales protegidas mediante optoacopla-
dores, 5 entradas analógicas de 0 a 5 Volts de CD (con posibilidades de expansión),
capaz de conectarse a una red Modbus RTU mediante RS-485.

61
4.1.5 Equipo de Computo
El equipo de computo que puede ser utilizado para el control de los dispositivos me-
diante una red Modbus sólo hace falta que cumpla con los siguientes requisitos:

• Sistema operativo Windows XP o superior

• Espacio libre en disco duro de 50 Mb

• Memoria RAM de 256 Mb

• Puerto USB 2.0 disponible

• Microsoft .Net Framework 4.5

Figura 4.8: PC corriendo Windows 8 y ejecutando una versión del intérprete CNC

62
4.2 Métodos
4.2.1 Control de los Servo-Motores
Para el posicionamiento de la herramienta en un espacio cartesiano, se consideró con-
veniente utilizar el modo de control de los servo-motores denominado “control de posi-
ción”. Es posible realizar un control remoto de este dispositivo mediante la utilización
de una red Modbus que sea capaz de leer y escribir en los registros del sistema. Un
registro es un dato o una posición en un tabla o base de datos y para este caso particu-
lar, cada registro está preprogramado en el firmware del dispositivo y cumple con una
función específica en el control del sistema, es decir, existe un registro que controla
la posición, otro para la velocidad y así para cada parámetro controlable del sistema;
estos registros están enumerados en la sección de “Comunicaciones Modbus” del ma-
nual de usuario SureServo [D IRECT 2011].

Parámetro Dirección Descripción Valor Asignado


P3-00 0x0300 Dirección (ID) ...
P3-01 0x0301 Velocidad de Transmisión 9600 bauds
P3-02 0x0302 Protocolo Modbus RTU 8 Db, NP, 2 Sb

Tabla 4.1: Parámetros de comunicación del servo-motor

Los primeros parámetros a configurar son los referentes a la comunicación y pue-


den observarse en la tabla 4.1; luego de esto se configuraron los parámetros referentes
al control de sistema que pueden observarse en la tabla 4.2.

Parámetro Dirección Descripción Valor Asignado


P1-01 0x0101 Modo de Control 0101
P1-31 0x011F Código de Motor ...

Tabla 4.2: Parámetros de control del servo-motor

Una vez que se ha configurado el parámetro P1-01 en el modo de control “Pr Con-
trol de Posición(Interno)” será posible para el usuario controlar el servomotor mediante

63
el uso de los registros P1-15 para controlar las revoluciones y P1-16 para controlar las
revoluciones 10−4 (diezmilésimas de revolución), es decir, que si se desea ordenar al
servo-control que realice un desplazamiento de 2.7 revoluciones, se deberá introducir
un valor de 2 en el parámetro P1-15 y 7000 en el parámetro P1-16.

Una vez que se han introducido los parámetros de desplazamiento en los registros
respectivos, se debe dar la orden al controlador para que realice este movimiento, para
ello es necesario configurar una de las 8 entradas digitales del sistema ubicadas en
el conector CN1 o en la tarjeta ZP-Link (figura 4.9) para que al enviarle una señal
eléctrica, el control lo interprete como la instrucción habilitadora del movimiento a la
posición programada.

Figura 4.9: Terminal CN1 y tarjeta ZP-LINK

Con esto, se tiene un sistema donde el usuario es capaz de exigirle al control una
serie de posiciones en un espacio de trabajo. Sin embargo, en ocasiones es necesa-
rio lograr controlar más que simplemente la posición. Para configurar la velocidad, es
posible utilizar el parámetro P2-36, este parámetro configura la velocidad de despla-
zamiento máxima (en RPM) que el control alcanzará para llegar a la posición referida
en los parámetros P1-15 y P1-16, su rango de trabajo está entre 1 y 5000 RPM.

Es posible también controlar la aceleración y desaceleración del sistema mediante


la utilziación de los parámetros P1-34, P1-35 y P1-36 tal como se muestra en la figura
4.10, esto se hace controlando los intervalos de tiempo que cada parámetro representa.

64
1. P1-34 - Aceleración (Frente): El valor introducido en este parámetro indica el
tiempo requerido para acelerar de 0 a la velocidad introducida en P2-36 y vice-
versa cuando se ha alcanzado la posición requerida por el control. Éste parámetro
es efectivo cuando el actuador gira en sentido horario y se encuentra declarado
en milisegundos (ms).

2. P1-35 - Desaceleración (Reversa): Análogo al parámetro P1-34 pero con la


diferencia de que éste es efectivo cuando el actuador se mueve en sentido anti-
horario.

3. P1-36 - Suavizador: Este parámetro permite al sistema acelerar o desacelerar


más suavemente.

Figura 4.10: Curva de aceleraciones de Servo-Motor

65
4.2.2 Control del Inversor Vectorial
De igual manera que con los servo-motores, el inversor vectorial adquirido cuenta con
una tabla de registros que el usuario puede controlar a discreción mediante una red
Modbus. Primero es necesario indicarle al inversor las características del motor que
debe controlar tal como se muestra en la tabla 4.3.

Parámetro Dirección Descripción


P0-00 0x0000 Voltaje Nominal
P0-01 0x0001 Amperaje Nominal
P0-02 0x0002 Frecuencia Nominal
P0-03 0x0003 Revoluciones Nominales
P0-04 0x0004 Revoluciones Máximas

Tabla 4.3: Parámetros básicos del inversor vectorial

Los parámetros de comunicación pueden ser configurados en los parámetros que se


muestran en la tabla 4.4. Para consultar estos detalles más a fondo se puede consultar
el manual de usuario del sistema [D IRECT 2013].

Parámetro Dirección Descripción Valor Asignado


P9-00 0x0900 Dirección (ID) ...
P9-01 0x0901 Velocidad de Transmisión 9600 bauds
P9-02 0x0902 Protocolo Modbus RTU 8 Db, NP, 2 Sb

Tabla 4.4: Parámetros de comunicación del inversor vectorial

Ya que este controlador será utilizado para una máquina-herramienta de tipo torno,
no es necesario que el sistema considere tener rampas de aceleración complejas, basta
con configurar los parámetros P1-01 y P1-02 que corresponden al tiempo de acelera-
ción y desaceleración 4.11 en segundos respectivamente. Una vez que los parámetros
anteriores han sido configurados de manera correcta, el control de sistema se basa en
la utilización de 3 registros: P9-26, P9-27 y P9-28, tal como se muestra en la tabla 4.5.

66
Figura 4.11: Curva de aceleraciones del Inversor

Para que el control remoto sea posible se le deberá otorgar control absoluto del
dispositivo a la red Modbus RS-485, esto se realiza mediante el parámetro P4-00, indi-
cándole el valor 05: “Frequency determined by RS-485 communication interface”.

Parámetro Dirección Descripción


P9-26 0x091A Velocidad de Referencia
P9-27 0x091B Habilitador
P9-28 0x091C Sentido de Giro

Tabla 4.5: Parámetros de control del inversor vectorial

1. P9-26: Este parámetro se utiliza para indicar al control la velocidad a la que el


usuario desea que el control lleve al actuador. Su rango es de 0 a 400 Hz. Puede
(F recuenciaN ominal )(V elocidadDeseada )
aproximarse como: P 9 − 26 ' V elocidadN ominal

2. P9-27: Al escribir este registro, el usuario puede indicar al control si debe iniciar
o detener el movimiento si escribe un 1 o un 0 respectivamente.

3. P9-28: Indica el sentido del movimiento, al escribir este registro con un 0 el


control moverá el actuador en “avance” y si se escribe un 1 lo hará en “reversa”.

Adicionalmente puede utilziarse el parámetro P9-29 como un paro de emergencia


escribiendo el valor 1 para accionarlo.

67
La lógica de la validación nos per-
mite movernos entre los límites del
dogmatismo y escepticismo.
Paul Ricoeur
CAPÍTULO

5
Experimentación y Resultados

68
5.1 Montaje del Hardware y Pruebas Fundamentales
Para la realización del montaje inicial se decidió utilizar el servo-motor de 400 W, se
utilizó la información contenida en la documentación ([D IRECT 2011]). Para la cone-
xión eléctrica del dispositivo puede utilizarse el diagrama eléctrico que se presenta en
la figura 5.1. Estos dispositivos cuentan con una tabla (pre-programada en el firmware)
de parámetros que al ser modificados permiten al usuario acceder a distintas funcio-
nes del sistema. Seguidamente se deben configurar los parámetros pertinentes para la
función que se desea el controlador y el motor realicen, para la configuración básica,
basta con acceder al parámetro P1-31 e indicarle al sistema de acuerdo a la tabla 5.1 el
tamaño del servo-motor a utilizar.

Parámetro P1-31
Valor Código de Motor
10 100 W
11 200 W
12 400 W
20 750 W
21 1 kW (Baja Inercia)
22 1 kW (Mediana Inercia)
30 2 kW
31 3 kW

Tabla 5.1: Configuración del parámetro P1-31

El servo-sistema requiere que el usuario realice diversas conexiones eléctricas, la


mayoría de ellas por cuestiones de seguridad, para realizar pruebas básicas es posible
utilizar la función auxiliar ubicada en el parámetro P2-30, al ingresar el valor 1, este
parámetro permitirá al sistema ignorar la habilitación externa y los sensores de límite
de carrera (Esto puede representar un peligro si no se maneja adecuadamente),
una vez alimentado y correctamente conectado el sistema, este parámetro permitirá al
usuario ingresar la velocidad en RPM a la que el motor girará, el sentido de giro está
dado por la flecha pulsada del panel frontal del sistema.

69
Figura 5.1: Conexión eléctrica básica para servo-motor SureServo

Se realizó el montaje de los dispositivos en el interior del gabinete, se realizaron las


conexiones que se aprecian en la figura 5.2, los diagramas eléctricos pueden encontrar-
se en la sección de apéndices al final de este documento. Se consideraron dispositivos
de seguridad como límites de carrera, habilitación externa y paro de emergencia.

Figura 5.2: Sistema de CNC desarrollado en CICATA, Qro.

Estas pruebas son la fase inicial para el control de sistema, la utilización de los con-
ceptos contenidos en la literatura así como en los manuales de usuario de los productos
permitirán proceder a la siguiente fase del proyecto, el control y comunicación remota

70
de los dispositivos enlazados en la red.

5.2 Calculo de Potencias del Sistema


El prototipo cuenta con 3 actuadores principales:

1. Motor de CA de 2HP a 1800RPM.

2. Servo-motor de 1000 Watts.

3. Servo-motor de 400 Watts.

Con estos elementos, se realizaron los cálculos necesarios para conocer la cantidad
de material que pueden trabajar en operaciones de torneado.

φDiametro(mm)RP M
Vc =
1000
Para una pieza de 200mm de diámetro y una velocidad de giro de 1800RP M .

φ(200)(1800) m
Vc = = 502,6
1000 min
Considerando que:

Vc ∗ f ∗ d ∗ Ps
Pc =
6,12 ∗ 103 ∗ ρ
Donde:
Pc es la potencia de corte (kW ).
Vc es la velocidad de corte (m/min).
f es la velocidad de avance en (m/rev).
d es la profundidad de corte (mm).
Ps es la fuerza específica de corte (N/mm2 ).
ρ es la eficiencia mecánica del sistema (80 %).

Considerando que se maquinará aluminio cuya fuerza específica de corte Ps =


N m
465 mm 2 con velocidad de avance de 10 min , una potencia de corte Pc = 1kW y una

eficiencia del 80 % debido a la trasnmisión de potencia por husillos de bolas se tiene:

71
(6,12)(103 )(ρ)(10) (6,12)(103 )(0,8)(1)
d= = = 0,20mm2
(V )(f )(Ps ) (502,6)(1)(465)
La máquina-herramienta sería capaz de trabajar una sección de 0,2mm2 de alumi-
nio, aunque esta cantidad parezca baja, note que no se toman en cuenta reducciones
mecánicas que ayudarían notablemente a disminuir la velocidad y aumentar la potencia
con lo que se lograrían áreas de trabajo mayores. Es recomendable realizar este cálculo
para la aplicación específica de la máquina-herramienta.

5.3 Software para Lectura y Escritura Remota de Re-


gistros
Para la interconexión y control remoto de varios dispositivos en una red Modbus uti-
lizando RS-485, fue necesaria la utilización de una función que permitiera utilizar el
protocolo de comunicación de manera sencilla. Para esto se hizo uso de la librería
NModbus, la cual es una librería de código abierto que provee una forma de comuni-
car dispositivos y aplicaciones compatibles, soporta ASCII serial, RTU serial, ASCII
USB, RTU USB, TCP y UDP. Dicha librería, su documentación y los foros de discu-
sión pueden ser consultados en la dirección del proyecto NModbus. Esta librería está
escrita en C# y tiene implementadas en su programación las funciones 1, 2, 3, 4, 5,
6, 15 y 16 (regrese a la tabla: 3.9). Para la mayoría de los dispositivos actuales, los
grupos de funciones de lectura o escritura pueden ser utilizados análogamente pues
toda la información es guardada en registros (bloques de memoria) por lo que basta
utilizar 2 funciones de esta librería, una para leer y otra para escribir en estos bloques
de memoria.

Haciendo uso de las funciones 3 (Read Multiple Holding Registers) y 6 (Write Sin-
gle Holding Register) se logró en primera instancia un sencillo programa en C# que
permite al usuario leer y escribir en el registro que se desee (siempre que dicho registro
no se encuentre “reservado”) valores decimales. Para la comprobación de la funciona-
lidad de la aplicación, se utilizó un simulador de PLC y un emulador de puertos seria-
les, este resultado (figura 5.3) se encuentra documentado en el proyecto SIP 20131148.

72
Figura 5.3: Lectura y escritura de registros virtuales utilizando un simulador de PLC

Para la programación del algoritmo que permitió realizar las pruebas de comuni-
cación, se observan etapas fundamentales: La creación de un objeto en un puerto de
comunicación que permitirá invocar las funciones, la implementación de la función de
lectura, la implementación de la función de escritura y finalmente la finalización de la
comunicación.

5.3.1 Apertura de la Comunicación


Para utilizar las funciones implementadas en la librería [NM ODBUS 2014], es necesa-
rio crear primero una un objeto que en este ejemplo se le conocerá como “master” de
la clase “ModbusSerialMaster” en un puerto existente, en este caso se utilizó un puerto
serial enumerado como “COM3” y se configuró con las mismas opciones que el otro
extremo del par.
// Configuración del Puerto Serial
serialPort1.PortName = "COM3";
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.Two;
serialPort1.DataBits = 8;
serialPort1.BaudRate = 9600;

serialPort1.Open();

// Crear el Maestro Serial Modbus en "master"

73
ModbusSerialMaster master =
ModbusSerialMaster.CreateRtu(serialPort1);

5.3.2 Lectura Múltiple de Registros


La función 3 (Read Multiple Holding Registers) es un método que se encuentra imple-
mentadao dentro de la clase “ModbusSerialMaster” de la librería [NM ODBUS 2014],
para utilizarla, es necesario haber creado antes un objeto desde el cual invocarlo y co-
nocer la dirección del esclavo así como la ubicación (número) del registro que desea
leerse, se debe tener en cuenta que esta función es capaz de leer más de un registro y
guarda los datos elemento a elemento en un arreglo, el tercer parámetro del método es
aquél que indica cuantos registros deberán leerse.
// Se crea el objeto master
ModbusSerialMaster master =
ModbusSerialMaster.CreateRtu(serialPort1);

// ID del Esclavo
byte slaveId = 1;

// Dirección del Registro a leer


ushort startAddress = Registro;

// Se invoca la función, guarda en un arreglo


ushort[] registers = master.ReadHoldingRegisters(slaveId,
startAddress, 1);

5.3.3 Escritura de un Registro


La función 6 (Write Single Holding Register) es un método que se encuentra imple-
mentadao dentro de la clase “ModbusSerialMaster” de la librería [NM ODBUS 2014],
para utilizarla, es necesario haber creado antes un objeto desde el cual invocarlo y co-
nocer la dirección del esclavo así como la ubicación (número) del registro que desea
escribirse.
// Se crea el objeto master

74
ModbusSerialMaster master =
ModbusSerialMaster.CreateRtu(serialPort1);

// ID del Esclavo
byte slaveId = 1;

// Registro donde se escribirá


ushort startAddress = Registro;

// Invocación de la función 3
master.WriteSingleRegister(slaveId, startAddress,
Convert.ToUInt16(Dato));

5.3.4 Cierre de la Comunicación


Una vez que ya no se desea que exista comunicación entre el maestro (PC) y sus es-
clavos (Dispositivos a controlar) lo correcto es “cerrar” aquellos puertos que fueron
utilizados para realizar la comunicación y así dejarlos disponibles para que otras apli-
caciones puedan acceder a ellos. El método “Close” es más que suficiente para realizar
esta acción, pues al invocarlo el, sistema operativo desechará aquellas clases y objetos
creados a partir de su apertura y utilización.
// Se abre el puerto
serialPort1.Open();

// Se crea el objeto master


ModbusSerialMaster master =
ModbusSerialMaster.CreateRtu(serialPort1);
.
.
.
// Se cierra el puerto si este ha sido abierto
if (serialPort1.IsOpen){
serialPort1.Close();
}
// Se cierra la forma
this.Close();

75
5.4 Software para Comunicación con Varios Dispositi-
vos
La comunicación con varios dispositivos es un proceso análogo a la implementación de
las funciones descritas en las secciones: 5.3.1, 5.3.2 y 5.3.3, únicamente se debe tener
en cuenta el correcto direccionamiento de la información a los dispositivos a través de
la enumeración de los esclavos mediante el “ID” único para cada uno de ellos, esto
es importante ya que recordando que la información enviada en una red Modbus RS-
485 se transmite a todos los dispositivos presentes (Sección 3.6) siendo descartada o
tomada en cuenta mediante el “Slave ID” presente en el paquete de datos. El siguiente
fragmento de código presenta un ejemplo de la implementación de la función 6 (5.3.3)
para escribir el elemento “Dato” en el “Registro1”, “Registro2” y “Registro3” de los
dispositivos con el ID 1, 2 y 3 respectivamente.
// ID de los esclavos
byte slave1 = 1;
byte slave2 = 2;
byte slave3 = 3;

// Registros donde se escribirá


ushort Address1 = Registro1;
ushort Address2 = Registro2;
ushort Address3 = Registro3;

// Escritura de Registro en dispositivos


master.WriteSingleRegister(slaveId1, Address1,
Convert.ToUInt16(Dato));
master.WriteSingleRegister(slaveId2, Address2,
Convert.ToUInt16(Dato));
master.WriteSingleRegister(slaveId3, Address3,
Convert.ToUInt16(Dato));

Haciendo uso de estos conceptos, se creó una interfaz gráfica documentada en el


proyecto SIP 20131148 que permitió el control simultaneo de 3 dispositivos conecta-
dos a una red Modbus RS-485, en la figura 5.4 puede apreciarse el resultado.

76
Figura 5.4: Interfaz gráfica para el control simultaneo de 3 dispositivos vía Modbus

5.5 Intérprete de Códigos ISO


La finalidad de este proyecto es la construcción de un CNC de arquitectura abierta,
para lograr este objetivo, se debió realizar un intérprete de códigos ISO (sección 3.5)
que fuera capaz de reconocer los códigos estandarizados para el control de máquinas
herramienta tipo torno, apegándose lo más posible a las normas aplicables requeridas.

En la figura 5.5 se muestra el diagrama de flujo correspondiente al algoritmo pro-


gramado para el análisis, porcesamiento y posterior ejecución de un documento de
texto plano en busca de códigos estandarizados de CNC.

5.5.1 Tratamiento del Documento de Texto


Un documento de texto plano, tal como su nombre lo índica es un archivo electrónico
que contiene únicamente caracteres (imprimibles o no), carece de la información des-
tinada a dar formato (tamaño de letra, negritas, etc.) y de tipo de letra. Por costumbre
se representan con la extensión “.txt” pero el uso de esta extensión no es obligatorio
y puede considerarse cualquier extensión que el usuario o programador, deseen dar al
documento. En el ámbito de la programación, un documento de texto, es un conjunto
de caracteres contenido en un arreglo de tamaño n y por tanto, puede ser procesado
como una variable.

77
Figura 5.5: Esquema de trabajo del intérprete de códigos ISO para CNC

78
archivo = "C:/archivo.txt";
if (System.IO.File.Exists(archivo))
{
using (System.IO.StreamReader sr = System.IO.File.OpenText(archivo))
{
String input;
while ((input = sr.ReadLine()) != null)
{
richTextBox1.AppendText("\n" + input);
}
}
}

Suponiendo que existe un archivo de texto plano que contenga códigos ISO en él y
cuyo nombre fuera “archivo.txt”, con el anterior fragmento de código se podrá cargar
dicho archivo de texto en un elemento “RitchTextBox” para que posteriormente pueda
ser visualizado por el usuario y procesado por el algoritmo de reconocimiento.

5.5.2 Reconocimiento de Código


Una vez que la información necesaria ha sido cargada en una variable de programación,
el algoritmo podrá comenzar a realizar las funciones de reconocimiento de códigos
ISO. Con el método “Lines” que puede ser invocado desde cualquier “RitchTextBox”
se podrá pasar la información contenida en él a un arreglo.
string[] lineas = richTextBox1.Lines;

Ya que un archivo que contiene códigos ISO para CNC se encuentra organizado
en bloques (figura 3.12) cuyas instrucciones deben ser ejecutadas simultáneamente y
cada bloque se encuentra contenido en una línea de texto, se decidió que el algoritmo de
búsqueda deberá primero encontrar las líneas que componen a dicho arreglo y analizar
una a la vez; esto se logra mediante la implementación del siguiente fragmento de
código; suponiendo que existe un arreglo llamado “lineas”, haciendo uso de la función
“foreach” se separará cada línea de texto del arreglo “lineas” y la pasará una a la vez a
la variable “line” para ser procesada.
foreach (string line in lineas)
{

79
\\ Reconocimiento de cada línea
}

Para el reconocimiento de códigos ISO se decidió utilizar un conjunto de funciones


muy populares denominadas “Regular Expressions” o “Regex”, se definen como una
secuencia de caracteres que en conjunto forman un patrón de búsqueda [N GUYEN 2013].
El uso de expresiones regulares (Regex) puede ejemplificarse de manera sencilla
como la búsqueda de coincidencias comparando dos o más bases de datos, por ejem-
plo, la colección de datos “C(a|á|ä)rlos” describe a las palabras: “Carlos”, “Cárlos” y
“Cärlos”. Para la construcción de expresiones regulares, existen operadores de alterna-
ción, cuantificación, agrupación, etcétera; los más utilizados son:

• Alternación: Se utiliza la barra vertical (|) para separar alternativas. La colección


“A|B” permitirá encontrar A o B.

• Cuantificación: Especifica la frecuencia de repetición.

 + El caracter que precede a este signo debe aparecer por lo menos una
vez. La colección “pe+rro” permitirá encontrar “perro”, “peerro”, “peee-
rro” y así infinitamente.
 ? El caracter que precede a este signo debe aparecer a lo más en una sóla
ocasión. La colección “b?alazo” permitirá encontrar “balazo” y “alazo”.
 * El caracter que precede a este signo puede aparecer cualquier número
de veces incluyendo cero. La colección “0*44” permitirá encontrar “44”,
“044”, “0044” y así infinitamente.

• Agrupación: Los paréntesis pueden utilizarse para agrupar y dar precedencia a


los operadores. La colección “(S|R)aul” es similar a “Saul|Raul” así también, la
colección “(des)?tiempo” permitirá encontrar “destiempo” y “tiempo”.

Prácticamente cada caracter que no es una letra tiene un significado especial en las
expresiones regulares, en la construcción del algoritmo de reconocimiento de códigos
ISO para CNC además de los ya presentados, se utilizaron:

80
• Metacaracteres Representación de los caracteres no imprimibles como las ta-
bulaciones “\t” y los saltos de línea “\n”.

• Corchetes [ ] Se utiliza para representar agrupaciones de caracteres, dentro de


ellos existe la posibilidad de utilizar el guión medio “-” para representar rangos
de caracteres, dentro de los corchetes los metacaracteres pierden su significado.

• Punto . El punto es interpretado como cualquier caracter excepto el salto de


línea.

Aplicando los conceptos anteriores, se construyó una colección para expresiones


regulares que permite buscar patrones de texto y compararlos contra una base de datos
predefinida que contiene las operaciones necesarias para cada código soportado. Esta
sencilla frase es el corazón del intérprete de códigos ISO para CNC.
Regex CodigoG = new Regex("[ngxyzfmsto:][+-]?[0-9]*\\.?[0-9]*",
RegexOptions.IgnoreCase);

La colección “CodigoG” trabaja de la siguiente manera, busca una coincidencia


(ignorando mayúsculas o minúsculas) con elementos que empiecen con los caracteres
“N (Número de Línea)”, “X (Eje X)”, “Y (Eje Y)”, “Z (Eje Z)”, “F (Velocidad de
Avance)”, “M (Funciones Auxiliares)”, “S (Velocidad del Husillo)”, “T (Número de
Herramienta)”, “O (Número de Programa)” o “: (Número de Programa)” (tabla 3.1)
seguidos opcionalmente de los signos “+” o “-” seguidos obligatoriamente de una se-
rie de números del 0 al infinito seguido de este, puede o no aparecer un punto decimal
seguido de otra serie de números de 0 al infinito; la comparación se detiene al existir
un caracter no imprimible tal como un espacio o un final de línea.

Esta colección se define al inicio del programa, y mediante el método “Matches”


invocado para cada línea se podrán identificar las coincidencias de búsqueda, es decir,
que el algoritmo buscará todas las coincidencias que existan en cada línea del archi-
vo de texto. Las coincidencias encontradas en cada línea serán almacenadas en “m”
definida como una colección de coincidencias.
MatchCollection m = CodigoG.Matches(line.Trim());

81
Para cada línea pueden existir 10 coincidencias distintas básicas (tabla 3.1). Ha-
ciendo uso de la función “foreach” es posible nuevamente evaluar cada una de las
coincidencias detectadas en cada línea y usando el método “StartsWith” el algoritmo
será capaz de detectar a que grupo pertenecen.
foreach (Match n in m)
{
// Coincidencia encontrada
// Número de Línea
if (n.Value.StartsWith("N")
{
// Acción a tomar
}
.
.
.
} // Siguiente Línea

El resultado de las concurrencias guardadas en la colección de coincidencias “m”


se pasan una a la vez a “n” definida como “Coincidencia n”, el algoritmo realiza una
comparación básica para saber a que conjunto de instrucciones pertenece el código
detectado (M, G, N, S, etc.) y después realiza otra comparación más a fondo donde
decide el número de instrucción al que se refiere el código, esto se realiza mediante
el conjunto de instrucciones “switch - case”; en el interior de cada “case” es donde el
algoritmo es capaz de procesar, transmitir o modificar la información requerida para se
realice lo exigido por el código en el archivo de texto plano.
if (n.Value.StartsWith("M"))
{
switch (n.Value)
{
case "M00":
// Parada NO Opcional
break;

case "M01":
// Parada Opcional
break;
.

82
.
.
}
}

5.5.3 Procesamiento Individual y Simultáneo


En la figura 5.5 existen bloques que se refieren al procesamiento individual y simultá-
neo de los datos al momento de ejecutar un programa con códigos ISO para CNC, esto
se refiere al procesamiento individual que el algoritmo debe realizar para cada código
al momento de detectarlo y al encontrar un final de línea (un nuevo bloque de pala-
bras) se ejecuten todos los bloques detectados “a la vez” lo cual es de utilidad cuando
el código exige al sistema que se realicen movimientos interpolados en 2 ejes simul-
táneamente, es decir, cuando el código exige que se realicen movimientos al mismo
tiempo en más de un eje resultando en una trayectoria del efector final diagonal, una
circunferencia entre otras.

La utilización conjunta de los fragmentos de código presentados en esta y las sec-


ciones anteriores permiten que el algoritmo realice este procesamiento en 2 etapas a
manera de un ciclo enlatado. En la etapa de “Procesamiento Individual” el sistema rea-
lizará los cálculos necesarios para las operaciones requeridas, escribirá en los registros
correspondientes y sólo hasta la etapa de “Procesamiento Simultáneo” dará la orden
que permitirá el movimiento de los dispositivos.
// Buscar coincidencias en cada línea
foreach (string line in lineas)
{
// Colección de Coincidencias
MatchCollection m = CodigoG.Matches(line.Trim());

foreach (Match n in m)
{
// Procesamiento Individual (Bloques)
} // Fin de Línea

// Procesamiento Simultáneo (Líneas)

83
}

5.5.4 Tratamiento de Errores


Existen casos en los que el operador o el usuario introducen códigos incorrectos al
CNC y este debe estar preparado para procesar y lidiar con dichos “errores” de la
manera más segura posible para el sistema y sobre todo para el usuario. Esto puede
realizarse mediante el elemento “default” de la instrucción case utilizada para el re-
conocimiento de instrucciones, el tratamiento que debe dedicarse para cada error es
variante pues existen errores más graves que otros, por lo cual, en el interior de la sec-
ción “default” se podrá definir si el programa debería cancelar, pausar su ejecución,
mostrar un mensaje o simplemente ignorar el error.
if (n.Value.StartsWith("M"))
{
switch (n.Value)
{
case "M00":
// Parada NO Opcional
break;

default:
// Código Desconocido
break
}
}

5.6 Interfaz Gráfica de Usuario (GUI)


Para facilitar la interacción entre el usuario y el CNC se realizó la programación y el
diseño de una interfaz de usuario en plataforma MS-Windows realizada en C# utilizan-
do “.NET Framework 4.5” para asegurar la compatibilidad con los sistemas operativos
más recientes. A pesar de esto, las instrucciones utilizadas son en su mayoría estándar
por lo que no debería existir inconveniente para portar el intérprete a otras plataformas.

84
La Interfaz Gráfica de Usuario desarrollada permite al operador familiarizarse con
los códigos ISO para control de CNC al tiempo que proporciona elementos gráficos
similares a los del control de una máquina-herramienta convencional.

Figura 5.6: Interfaz gráfica para CNC desarrollada en CICATA

La interfaz de usuario presenta un cuadro de texto desde el cual el usuario puede


crear, editar, abrir, cerrar y guardar archivos de texto plano en cualquier extensión; un
cuadro para presentar la simulación (en proceso), un cuadro de estado donde se retro-
alimenta al usuario con información sobre el intérprete, una sección donde el usuario
puede desplazar los ejes de manera manual y una barra de estado que presenta el estado
de la máquina herramienta de manera sencilla y fácil de leer.

5.6.1 Barra de Herramientas


La barra de herramientas es un menú que se ha vuelto estándar y sobre todo necesario
en aplicaciones con Interfaz Gráfica de Usuario, el software desarrollado hizo uso de
estas herramientas para presentar al usuario funciones contenidas en bloques, fáciles
de encontrar e intuitivas de manejar.

85
Figura 5.7: Barra de herramientas

5.6.1.1 Menú Archivo


El menú Archivo (figura 5.9(a)) contiene los comandos referentes al manejo de archi-
vos de texto, limpieza del cuadro de texto, salida del cuadro de diálogo y la configu-
ración de la conexión (5.8) vía un puerto serial del PC; para poder operar el CNC es
necesario primero configurar los parámetros de conexión, de manera que el sistema
pueda enlazar la red Modbus para comunicarse con sus esclavos.

Figura 5.8: Cuadro de diálogo para configurar los parámetros de comunicación serial

5.6.1.2 Menú Modo


El menú Modo (figura 5.9(b)) permite al usuario seleccionar los modos de operación
del CNC. Los modos disponibles son:

1. Verificar: Correrá el algoritmo de reconocimiento de códigos ISO para CNC


y mostrará al usuario en el “Cuadro de Estado” una lista de las operaciones
a realizar, llevando un conteo de líneas y de errores, también se mostrará un
contador de errores y la línea donde existe dicho error en el “Cuadro de Estado”

2. Verificar + Simular: Realiza las operaciones del primer modo y además el pro-
grama de simulación (En proceso).

86
3. Verificar + Simular + Ejecutar: Realiza las operaciones del segundo modo
pero esta vez dando las ordenes de movimiento a los actuadores, es decir, se
realiza el proceso de maquinado.

5.6.1.3 Menú Ejecutar


El menú Ejecutar (figura 5.9(c))contiene el comando que ejecuta los modos 1, 2 o
3 según el que haya seleccionado el usuario, por defecto se encuentra en Modo 1,
verificar.

5.6.1.4 Menú Asistente


El menú Asistente (figura 5.9(d)) cuenta con una serie de instrucciones que permi-
ten al usuario insertar los comandos más utilizados para CNC incluyendo códigos M
(Funciones Misceláneas), G (Funciones Preparatorias), S (Velocidad del Husillo) y F
(Velocidad de Avance) con la descripción respectiva sintética de cada función. Los co-
mandos se insertan en la posición actual del cursor en el cuadro de texto y el usuario
deberá sustituir los elementos que se encuentran entre paréntesis por el valor que se
desea.

87
(a) Menú Archivo (b) Menú Modo

(c) Menú Ejecutar (d) Menú Asistente

Figura 5.9: Funciones disponibles en la barra de herramientas

5.6.2 Cuadro de Texto


La interfaz de usuario cuenta con un procesador de texto enriquecido básico que le
permite al usuario introducir comandos o bien editar archivos de texto sin límite de lí-
neas. De ser necesario, la Interfaz Gráfica de Usuario cuenta en el menú archivo (figura
5.9(a)) cuenta con los comandos necesarios para abrir, borrar o guardar la información
presente en el cuadro de texto.

Figura 5.10: Procesador de texto integrado en la Interfaz Gráfica de Usuario

88
5.6.3 Cuadro de Estado
La sección de la Interfaz Gráfica de Usuario denominada cuadro de estado permite al
operador conocer información sintética correspondiente a la interpretación del código,
cuenta con funciones que al detectar un código mal empleado o desconocido en la
“compilación”, mostrarán la línea de código en color rojo para que ésta pueda ser
tratada por el operador.

Figura 5.11: Cuadro de estado del CNC

5.6.4 Movimiento Manual


La sección de movimiento manual presente en la Interfaz Gráfica de Usuario permite
al operador realizar posicionamientos de la herramienta dentro del espacio de trabajo
a velocidades de “maquinado” o de “posicionamiento rápido”.

Figura 5.12: Controles para el movimiento manual del CNC

5.6.5 Barra de Estado


La sección de cuadro de estado es una parte de la Interfaz Gráfica de Usuario que
permite al operador conocer el estado actual de los diferentes sensores presentes en la
construcción del CNC. Valores como la posición de los ejes, velocidad, el estado de
conexión, el número de líneas, el número de errores pueden ser leídos con facilidad.

Figura 5.13: Barra de estado presente en la Interfaz Gráfica de Usuario

89
5.7 Funciones Soportadas
A pesar de que el intérprete de códigos estandarizados ISO para CNC es capaz de re-
conocer (en teoría) todas las instrucciones contenidas en la norma ISO-6983-1:2009
[ISO 2009], no todas son necesarias para las operaciones de torneado, algunas funcio-
nes están construidas como repeticiones de otras más básicas y cada fabricante anexa
aquellas que considera más útiles para su hardware propietario.

5.7.1 Número de Programa


Dentro de la estructura general de los códigos ISO para CNC se encuentra una sección
donde el programador puede darle un nombre o código al programa, esto para poder
distinguir entre programas. Generalmente se representa con la letra O o con el caracter
: seguido de una serie de número que sirven de identificador o nombre del programa;
para identificar el nombre del programa y presentarlo al operador, el algoritmo realiza
lo siguiente:
if (n.Value.StartsWith("O") | n.Value.StartsWith(":")) // Obtener
número de programa
{
int O = Convert.ToUInt16(n.Value.Remove(0, 1).Trim());
// Tratamiento del Nombre de Programa
}

5.7.2 Número de Línea (N)


El número de línea (N) representa el número de instrucción en un programa para CNC,
es decir es una numeración que permite al operario buscar instrucciones de manera más
eficaz para realizar modificaciones al programa. El reconocimiento de esta instrucción
es sencillo, pues basta con capturar el código N e interpretar el número que lo procede.
if (n.Value.StartsWith("N")) // Mostrar el numero de
Linea/Instrucción
{
N = Convert.ToDouble(n.Value.Remove(0, 1).Trim());
// Tratamiento para el número de línea
}

90
5.7.3 Función preparatoria (G)
Las funciones preparatorias, conocidas como códigos G son capturadas por el intér-
prete de la siguiente manera:
if (n.Value.StartsWith("G")) // Código G
{
G = Convert.ToDouble(n.Value.Remove(0, 1).Trim());
// Tratamiento para el código encontrado
}

5.7.3.1 G00
Esta función indica al control que debe realizar una interpolación lineal (movimiento
simultaneo) de todos los ejes requeridos en la operación hacia un punto con velocidad
más alta disponible en los ejes involucrados, se conoce también como posicionamiento
rápido.

G00 X... Y...

5.7.3.2 G01
Esta función indica al control que debe realizar una interpolación lineal (movimiento
simultaneo) de todos los ejes requeridos en la operación hacia un punto con velocidad
relativamente baja (de maquinado) en los ejes involucrados.

G01 X... Y...

5.7.3.3 G02/G03
Estas dos funciones indican al control que debe realizar una interpolación circular, es
decir, mover la herramienta creando una trayectoria de arco en sentido de las maneci-
llas del reloj o al contrario de estas respectivamente.

G02/G03 X... Y... I... J...

91
Donde X y Y son las coordenadas del punto final del arco, I y J son las coordenadas
del origen de dicho arco (en coordenadas incrementales).

5.7.3.4 G04
Al utilizar esta función, se le está indicando al control que debe realizar una pausa
antes de ejecutar la siguiente instrucción. Las unidades de “temporización” se repre-
sentan mediante la letra K seguida de una serie de dígitos numéricos que indican las
centésimas de segundo a esperar.

G04 K...

5.7.3.5 G20/G21
Esta función indica al control que las instrucciones que siguen a esta estarán dadas en
unidades imperiales o bien en unidades métricas (respectivamente), su utilización es
simple pues al indicarle una de estas instrucciones, la orden quedará activa hasta que
sea reemplazada por una del mismo grupo.

5.7.3.6 G98/99
Esta función indica al control que las instrucciones que siguen estarán dadas en uni-
dades por minuto o en unidades por revolución (respectivamente), su utilización es
simple pues al indicarle una de estas instrucciones, la orden quedará activa hasta que
sea reemplazada por una del mismo grupo.

5.7.4 Función Auxiliar (M)


Las funciones auxiliares conocidas como códigos M o funciones miscelaneas y regu-
larmente son funciones con acción todo o nada, es decir encienden o apagan actuadores
o realizan funciones absolutas y son capturadas por el intérprete de la siguiente manera:
if (n.Value.StartsWith("M")) // Código M
{
M = Convert.ToDouble(n.Value.Remove(0, 1).Trim());
// Tratamiento para el código encontrado
}

92
5.7.4.1 M00
Este código es utilizado para detener el programa CNC cuando esta instrucción es
ejecutada la máquina detendrá el movimiento de todos los ejes, la rotación de la pieza
de trabajo y la bombas de refrigerante.

5.7.4.2 M01
Realiza la misma función que el código M00 siempre y cuando la opción de parada
opcional de la interfaz de ususario se encuentre activa.

5.7.4.3 M02
Esta instrucción da por finalizada la ejecución de un programa de CNC y corta la
energía a los actuadores del sistema.

5.7.4.4 M03/04
Este código se utiliza para dar la orden al control de encender el husillo principal en
sentido horario o antihorario respectivamente; para el caso específico de un torno, el
husillo principal es aquel que mueve la pieza de trabajo.

5.7.4.5 M05
Esta instrucción da al control la orden de detener el movimiento del husillo principal
de la máquina-herramienta.

5.7.4.6 M08
Enciende la bomba de refrigerante con la finalidad de enfriar la pieza de trabajo.

5.7.4.7 M09
Realiza la operación contraria a la instrucción M08, es decir, apaga la(s) bomba(s) de
refrigerante.

93
5.7.4.8 M13/14
Esta instrucción combina los códigos miscelaneos M03/M04 para encender el husillo
principal en uno de los dos sentidos posibles al tiempo que activa la función M08 para
encender la bomba de refrigerante.

5.7.5 M30
Este código miscelaneo realiza una función similar al M02 con la diferencia que re-
gresa al inicio del programa, facilitando así el proceso de producción.

5.7.6 Velocidad Avance (F)


La velocidad de avance representada por la letra F en la programación de códigos
para CNC da oportunidad al programador para enviar un cambio a la velocidad de
“feedrate”, en el caso de un torno, esta velocidad se refiere a aquella con la que se
posiciona la herramienta en el espacio de trabajo de la máquina-herramienta.
if (n.Value.StartsWith("F")) // Valor para pasar al Feedrate
{
F = Convert.ToDouble(n.Value.Remove(0, 1).Trim());
// Tratamiento para pasar la variable
}

5.7.7 Velocidad Husillo (S)


La velocidad del husillo, codificada con la letra S permite al programador pasar una
velocidad al husillo principal, en el caso del torno, una velocidad de giro a la pieza de
trabajo; para lograr esto se pasa el valor de la variable de programación S al registro
de velocidad del inversor vectorial.
if (n.Value.StartsWith("S")) // Valor para pasar al Spindle
{
S = Convert.ToDouble(n.Value.Remove(0, 1).Trim());
// Tratamiento para pasar la variable
}

94
5.7.8 Coordenadas (X, Y, Z)
La utilización de coordenadas es muy útil a la hora de desplazarse en un espacio de
trabajo cartesiano es por ello que son ampliamente utilizadas en dispositivos con CNC.
Para capturar posiciones, el interprete programado utiliza el código presentado:
if (n.Value.StartsWith("X")) // Valor para pasar al Spindle
{
X = Convert.ToDouble(n.Value.Remove(0, 1).Trim());
// Tratamiento para pasar la variable
}

Análogamente para cualquier otra letra que indique coordenadas. A pesar de que
existen las llamadas coordenadas absolutas y relativas, su utilización es similar, el al-
goritmo se encargará de dar a la variable el procesamiento matemático requerido para
luego pasar la orden al sistema de control.

5.8 Ejecución en tiempo real


Para que una máquina-herramienta de CNC opere de manera correcta, es necesario el
aseguramiento de la ejecución de las instrucciones en tiempo real. La arquitectura con
la que el prototipo fue diseñado responde a esta inquietud, la arquitectura propia del
sistema se compone de un PC y una serie de dispositivos conectados a una red Modbus
RTU.

La PC opera como el controlador de los servo-sistemas que a su vez se componen


de un control (driver) y un actuador, esto convierte a la PC en un supervisor del sistema
encargado de gestionar los datos que llegan de y hacia cada dispositivo sin desperdiciar
recursos relacionados al control directo de los actuadores. El prototipo de CNC desa-
rrollado es en sí un sistema de Supervisión, Control y Adquisición de Datos (SCADA)
que opera realizando el procesamiento del código ISO para CNC en el PC para des-
pués traducirlo a instrucciones entendibles para que cada dispositivo realice su función
y relegando el control del movimiento a los drivers, mientras supervisa el estado de los
mismos y quedando en espera del siguiente punto de control donde reinicia el proceso.

95
5.9 Pruebas de Funcionamiento
Durante el desarrollo del proyecto, se realizaron diversas pruebas sucesivas, documen-
tadas a lo largo de este trabajo de tesis, desde el montaje y pruebas manuales del siste-
ma, la creación de utilidades para la comunicación de dispositivos en una red Modbus,
la programación de un intérprete de códigos estandarizados ISO y finalmente la con-
junción de todos estos desarrollos en una Interfaz Gráfica de Usuario. La parte que
requirió de mayor atención fue el desarrollo del intérprete de código ya que de ello
depende el correcto funcionamiento del CNC desarrollado. Para verificar la correcta
interpretación de los códigos estandarizados ISO para operaciones de torneado con
CNC se realizó la comparación de la interpretación del mismo con un control comer-
cial de la marca FANUC implementado en un torno “COMPACT 5 CNC” de la marca
EMCO en las instalaciones de la Universidad Tecnológica del Estado de Querétaro
(UTEQ).

Figura 5.14: Pieza desarrollada en aluminio utilizando el torno COMPACT 5

El código utilizado, realiza en una barra de aluminio la pieza presentada en la


imagen 5.14, esta pieza presenta una geometría de revolución y es llamada “Reyna”.
Una fracción del código utilizado así como la interpretación del mismo realizada por
el algoritmo programado se presenta a continuación:
O0704
[BILLET X25.4 Z100
N10 G21
N20 G96 G99 G40 M39
N30 G28 U0 W0
N40 G96 S2000
N50 G50 S2500

96
...

El intérprete desarrollado traduce estas instrucciones de la siguiente manera:


Programa: 704
Simulación: X25.4 Z100
Linea 10: Unidades Métricas
Linea 20: Desbaste a velocidad tangencial constante Unidades por
Revolución Cancelar compensación de radio de curvatura de
herramienta Cerrar Guarda
Linea 30: Volver a Home (Máquina)
Linea 40: Desbaste a velocidad tangencial constante S: 2000
Linea 50: Escala S: 2500
...

Una vez interpretadas las instrucciones, recae en el algoritmo de control la correcta


comunicación de los datos necesarios para la realización de los movimientos al sis-
tema. Durante la programación del intérprete, de manera cuidadosa se buscó que la
interpretación del código linea a linea fuera la correcta, cuidando la transición de un
programa a bloques cuyas instrucciones se realizan de manera casi paralela y final-
mente a instrucciones individuales.

5.10 Acoplamiento del Sistema


Ya que una de las ventajas del sistema de CNC presentado en este trabajo es tesis es la
posibilidad de acoplar el mismo a un gran número de aplicaciones. Si el usuario deseara
utilizar el mismo en otra clase de máquina-herramienta, se presentan a continuación
posibles casos y una serie de notas que ayudaran en la tarea.

5.10.1 Ejes del sistema


Para modificar el número de ejes del sistema, se recomienda al usuario tomar en cuenta
la recomendaciones contenidas en la norma ISO R481 o bien la RS267-1 (Consultar
la sección 3.5.2 del presente trabajo). Una vez identificada las literales que harán re-
ferencia a los ejes de trabajo del CNC, estas pueden agregarse o modificarse con el
siguiente esquema:

97
// Las siguientes variables determinan las literales posibles para
su reconocimiento por parte del intérprete, aquí se puede
modificar la nomenclatura de los ejes.
public double N, G, X, Y, Z, F, S, M;

Dentro del apartado de reconocimiento de código (Consultar 5.5.2 de este trabajo


de tesis), es posible encontrar la sección que hace el tratamiento a cada caso particular.
// En esta sección se realiza el tratamiento de datos cuando se ha
encontrado que se desea mover el eje X
if (n.Value.StartsWith("X"))
{
// Se puede pasar el valor de X a una variable
X = Convert.ToDouble(n.Value.Remove(0, 1).Trim());
// Aquí se pueden agregar o modificar acciones
para el eje deseado.
}

Finalmente para respetar la ejecución en paralelo de las instrucciones, el usuario


deberá tomar en cuenta la arquitectura del sistema y acoplarla de acuerdo a sus nece-
sidades recordando que el esquema de funcionamiento del sistema es:

1. Reconocimiento de líneas.

2. Reconocimiento de códigos individuales en cada línea.

3. Procesamiento de datos de cada código individual.

4. Ejecución de movimientos en paralelo.

5.10.2 Instrucciones
Si el usuario desea agregar instrucciones extras a las ya incluidas en la base de datos
del sistema de CNC, se le recomienda tomar en cuenta las recomendaciones incluídas
en la normaISO-6983-1:2009 [ISO 2009]. El procedimiento para agregar funciones
es análogo al de la adición de ejes de trabajo, con la diferencia de que para el caso
de funciones, el sistema realiza una comparación extra, es decir, primero compara la
primera letra del código para discriminar la categoría a la que pertenece, luego con la
información numérica contenida después de la letra, realiza la busqueda en una base

98
de datos pre-cargada con la información necesaria. Es aquí donde el usuario podrá
agregar, modificar o eliminar las funciones reconocibles por el programa de CNC y las
operaciones que éste debe realizar al encontrar coincidencias.
\\ El usuario puede agregar instrucciones mediante la inclusión de
los datos numéricos consecutivos a la literal deseada que serán
discriminados por la instrucción "SWITCH"

if (n.Value.StartsWith("M"))
{
switch (n.Value)
{
case "M00":
// Acciones a ejecutar
break;
...
}
...
}

5.10.3 Actuadores misceláneos


Para la incorporación de actuadores misceláneos se recomienda al usuario la utilización
de dispositivos que sean capaces de comunicarse en una red Modbus RTU para que
estos puedan ser manejados de manera remota por el PC encargado del CNC (Consultar
la sección 5.4 de este trabajo de tesis).

5.10.4 Entonación de servo-motores


Ya que el CNC desarrollado es parte de un sistema de lazo cerrado de comunicación,
es necesario realizar la entonación del sistema de control para que éste funcione ade-
cuadamente. Los componentes utilizados en la construcción de éste prototipo cuentan
con una serie de opciones para que el sistema realice el reconocimiento de las cargas
propias del sistema y ajuste así los parámetros necesarios para obtener un buen control
en lazo cerrado:

99
1. Manual: Permite al usuario introducir los valores de las ganancias del controla-
dor PID.

2. Fácil: El sistema escoge las ganancias de acuerdo a valores detectados por el


actuador.

3. Automático: El sistema utiliza ganancias variables a lo largo del tiempo depen-


dientes de la carga instantánea del sistema.

4. Automático Fijo: Este es un modo especial del “Automático” en el cual el usuario


fija ganancias instantáneas detectadas por el sistema de acuerdo a una inspección
visual del comportamiento.

Para conocer más a detalle los modos de control y la manera en que las ganancias se
ajustan, es posible consultar el manual de usuario de los servo-motores[D IRECT 2011]
utilizados en éste prototipo.
———————————————————————-

100
Éste no es el final. Ni siquiera es el
principio del final. Pero es, quizás,
el final del principio.
Winston Churchill
CAPÍTULO

6
Conclusiones y
Recomendaciones

101
Los resultados obtenidos tras la realización del presente trabajo de tesis permiten
concluir que la aplicación del proyecto es factible en maquinas-herramienta que fabri-
quen piezas con tolerancias correspondientes a calidades dimensionales ISO 8. El CNC
por sí mismo es un prototipo didáctico utilizable con propósitos de formar recursos
humanos con habilidades en operación y mantenimiento de sistemas que incorporen
servo-motores y sus accesorios de control. Al ser el sistema una máquina-herramienta
de propósito específico, es posible adaptar la misma a necesidades propias.

El desarrollo de la Interfaz Gráfica de Usuario permite al operador controlar los dis-


positivos de manera remota y segura con un conocimiento mínimo de los códigos ISO
para CNC, la disponibilidad del código fuente permite al usuario final la reconfigura-
ción el sistema de manera sencilla y segura, editando una base de datos que contiene
la información pertinente a las acciones que el código debe realizar al encontrar coin-
cidencias.

El sistema de CNC desarrollado es capaz de interpretar de manera correcta los có-


digos ISO para CNC ingresados en formato de texto plano y los diversos modos de
operación de éste, permiten que el usuario utilice el software desarrollado de manera
didáctica para familiarizarse con los códigos ISO para CNC sin necesidad de conectar
los actuadores o de maquinar una pieza.

El software desarrollado para ambiente Windows ha probado ser confiable, ligero


y de fácil utilización, es capaz de correr en computadoras personales de características
comunes utilizando puertos de comunicación y librerías estándar, la interpretación del
código se realiza en la computadora, mientras que el control preciso de los actuadores
se delega a los manejadores individuales que controlan cada uno de los efectores fina-
les, asegurando así la ejecución en tiempo real del sistema, la arquitectura del sistema
propuesto es similar a un sistema SCADA en el cual la computadora principal es me-
ramente un supervisor.

Los dispositivos utilizados para la construcción del prototipo presentado son capa-
ces de realizar operaciones de maquinado metal-mecánico en velocidades convencio-
nales de manera similar a maquinaria disponible comercialmente, es posible adaptar el

102
sistema propuesto a necesidades específicas modificando el hardware aquí propuesto,
las características finales del a máquina-herramienta serán dadas por las necesidades
de las operaciones de maquinado que se requieran realizar.

Finalmente, es posible que un usuario con conocimientos básicos de los temas


abordados y siguiendo como guía este trabajo de tesis replique el trabajo realizado
para la construcción de un prototipo de máquina-herramienta CNC de propósito espe-
cífico, y con un estudio básico del mismo, éste será capaz de realizar las adaptaciones
necesarias para poder aplicar el sistema a necesidades específicas.

103
APÉNDICE

A
Código Fuente

A.1 Estructura REGEX


Regex CodigoG = new Regex("[ngxyzfmso:][+-]?[0-9]*\\.?[0-9]*",
RegexOptions.IgnoreCase);

foreach (string line in lines) // Buscar coincidencias


cada línea
{
MatchCollection m = CodigoG.Matches(line.Trim());

foreach (Match n in m)
{
//Reconocimiento de Cada Línea
if (n.Value.StartsWith("X")) // Valor para mover el eje
X
{
X = Convert.ToDouble(n.Value.Remove(0, 1).Trim());
richTextBox2.AppendText("X" + X);
}
...
}
}

A
APÉNDICE

B
Diagramas Eléctricos

Figura B.1: Diagrama eléctrico de la caja de fusibles

B
Figura B.2: Diagrama eléctrico de conexión de los manejadores

C
APÉNDICE

C
Automation Direct Fair-Use
To: Carlos Maciel (IPN)

Dear Carlos,
This letter is to advise you that AutomationDirect.com respects the "Fair Use” of our
copyrighted works. "Fair Useïs a limited legal license to use others’work, whether they
approve or not. Any time you use our copyrighted works in a non-commercial (non-
profit) setting, we expect you to give us credit for the work. Any time you consider
using our copyrighted works in a commercial (for profit) setting, we expect you to
ask us for permission to use those works, as well as give us credit for the work. Your
communication of 2/12/2014 satisfies that request. None of this means we resign any of
our rights as the originator of the works. You have our permission to use any graphics
or textual content from our sites, manuals or catalog in any printed or online project
you may create or distribute, pursuant to the above conditions.

Sincerely, Joan Welty


Director of Marketing
AutomationDirect.com
3505 Hutchinson Rd
Cumming, GA 30040
[email protected]

D
Bibliografía

[A HMAD 2010] Ahmad, M. (2010). High Performance AC Drives: Modelling Analy-


sis and Control. Berlin, Germany: Springer. 31, 33

[A LDABALDETRECU 2012] Aldabaldetrecu, P. (2012). Evolución técnica de la


máquina-herramienta. HTM. 5

[D IRECT 2011] Direct, A. (2011). SureServo AC Servo Systems. Automation Direct.


XII, 28, 29, 63, 69, 100

[D IRECT 2013] Direct, A. (2013). DuraPulse AC Drives User Manual. Automation


Direct. 66

[G ÜNTER 2001] Günter, Pritschow y Yusuf, A. y. F. J. y. Y.-K. y. M. M. y. S. T. y.


H. B. y. M. W. y. K. Y. (2001). Open Controller Architecture - Past, Present and
Future. 50(2), 463–470. 17

[H AIBO 2010] Haibo, Yang y Hun, L. y. Y. T. y. J.-L. (2010). Proc. Networking,


Sensing and Control (ICNSC), 2010 International Conference on: An open CNC
system based on switched ethernet. 684-688. 18

[INEGI 2011] INEGI (2011). PROMÉXICO Querétaro. Encuesta Nacional de Ocu-


pación y Empleo. 12

[ISO 1996] ISO (1996). Information technology - Open systems Interconection - Ba-
sic Reference Model. The Basic Model. 44
[ISO 2009] ISO (2009). Automation systems and Integration - Numerical Control of
Machines - Program format and definitions of address words. Part 1. Data format
for positioning, line motion and contouring control systems. 35, 90, 98

[J EROME 1934] Jerome, H. (1934). Mechanization in Industry: US National Bureau


of Economic Research. 5

[L I 2004] Li, Bin y Zhou, Y.-f. y. T. X.-q. (2004). A researh on open CNC system ba-
sed on architecture/component software reuse technology. 55, 73–85, issn = 0166–
3615. 17

[M ODBUS O RG 2012] ModbusOrg (2012). MODBUS Application Protocol Specifica-


tion. PDF. XV, 44, 46

[M OORE 1970] Moore, W. R. (1970). Foundations of Mechanical Accuracy: Moore


Special Tool Co. 4

[N GUYEN 2013] Nguyen, D. (2013). The Bastards Book of Regular Expressions: Fin-
ding Patterns in Everyday Text: LeanPub. Sitio Web. 80

[N GUYEN 2008] Nguyen, Phung Quang y Jörg-Andreas, D. (2008). Vector Control of


Three-Phase AC Machines: System Development in the Practice. Berlin, Germany:
Springer. 34

[NM ODBUS 2014] NModbus (2014). Librería NModbus. Dirección Web. 73, 74

[PATTERSON 2000] Patterson, David A. y Hennessy, J. L. y. L. J. R. (2000). Estruc-


tura y Diseño de Computadores: Reverte. 6

[TI 1998] TI (1998). Field Orientated Control of 3-Phase AC-Motors. Texas Instru-
ments Europe. 34

[WANG 2008] Wang, Yongzhang y Liu, Y. y. H. Z. y. S. Z. (2008). Integration of a


5-axis Spline Interpolation Controller in an Open CNC System. 22, 218–224. 18

[W RIGHT 1995] Wright, P. (1995). Principles of Open-Architecture Manufacturing.


14(3), 187–202. 17
[X U 2012] Xu, Siao-ming y Sun, J.-h. y. W. S.-g. (2012). Research and Development
of Open CNC System Based on PC and Motion Controller. 29, 1845–1850. 18

[X UHUI 2008] Xuhui, Zhang y Sunan, W. y. Q. L. (2008). Proc. Automation and


Logistics, 2008. ICAL 2008. IEEE International Conference on: Development of an
open CNC based on industrial ethernet. 684-688. 18

[YANG 2010] Yang, Widong y Gao, Z. (2010). Proc. International Conference on


Computer Application and System Modeling (ICCASM): An Open CNC Controller
Based on LabVIEW Software. 4. 18

[Y USUF 2000] Yusuf, A. y. E. N. A. (2000). Open System Architecture Modular Tool


Kit for Motion and Machining Process Control. 5(3), 281–291. 18

También podría gustarte