Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Documento de identidad
1125779563
Telfono
2358441 3012952274
Semestre acadmico
2012/2
josear177@hotmail.com
Telfono
3014044569
Oficina
19-450
carrillo@udea.edu.co
Resumen
Este proyecto consisti en la realizacin de una interfaz hombre mquina
para controlar motores AC a travs de un variador de frecuencia Danfoss
FC300. En el proceso se utilizaron herramientas abiertas y de libre acceso que
permitieron el completo desarrollo de la aplicacin, y que a su vez
representan una gran alternativa dado que no requieren del pago de
licencias para su uso comercial.
Para el desarrollo del proyecto se comenz por una revisin de las
herramientas de software disponibles para la aplicacin especfica. Se
estudiaron aplicaciones como el entorno de desarrollo Eclipse IDE, los
paquetes de software SDK y NDK de Android1, y el lenguaje de
programacin Java, ya que estos constituyen las herramientas necesarias
para la realizacin del proyecto. Una vez se identificaron y se estudiaron las
herramientas de software, se paso al estudio de los manuales de los
dispositivos involucrados en el proceso como el variador Danfoss FC300 y el
HMI Th-0735W de Technexion con el objetivo conocer su configuracin y
funcionamiento. Posteriormente se estudio el desarrollo de aplicaciones para
Android en el lenguaje de programacin Java, lo cual es clave en el
proyecto, ya que la mayor parte de este es orientada al desarrollo de
software. El siguiente paso consisti en el proceso de comunicacin de
ambos equipos utilizando el protocolo FC Danfoss a travs de un puerto RS485, esta etapa del proyecto constituyo un punto critico del mismo dado que
no fue sencillo lograr la comunicacin entre la interfaz y el variador de
frecuencia, debido a que no se cuenta con una API (Application
Programming Interface) estndar que permita realizar aplicaciones con este
tipo de comunicacin para el sistema operativo Android. Posteriormente se
realiz el desarrollo de software en Eclipse IDE, el cual consisti de una
interfaz grfica para controlar motores AC con el variador Danfoss FC 300,
una vez finalizado todo el proceso de desarrollo, se paso a realizar las
pruebas necesarias en el laboratorio y una posterior correccin de errores. Al
finalizar con el proceso de depuracin y correccin se evaluaron los
resultados obtenidos y se dio por concluido el proyecto.
Esta aplicacin demando un completo desarrollo de software, adems del
estudio y configuracin de dispositivos en hardware que permitieron obtener
los resultados esperados y alcanzar as todos los objetivos planteados en un
principio.
Introduccin
Actualmente nos encontramos en un mundo tecnolgicamente cambiante.
Los nuevos avances en ingeniera de hardware y software permiten que
nuevas tecnologas se adapten rpidamente a la industria, la medicina, las
comunicaciones y el entretenimiento. Es importante entonces aprovechar
dichos avances para plantear soluciones a distintos problemas
concernientes a la ingeniera en sus diferentes ramas. Un ejemplo de estos
avances es la plataforma de software Android, diseada principalmente
para computacin mvil, se ha convertido en el sistema operativo mvil de
ms rpido crecimiento. Una de sus principales ventajas es que consiste en
una plataforma de software abierta basada en el kernel de Linux, y ofrece
herramientas completas para el desarrollo de aplicaciones destinadas a una
gran variedad de dispositivos. La implementacin de software de libre
acceso en aplicaciones industriales puede ser un punto crtico dado que en
general las soluciones basadas en software privativo suelen ser bastante
costosas. Es por estas razones que se presenta en este trabajo la elaboracin
de una solucin de tipo industrial basada en esta plataforma abierta y
ampliamente utilizada en diferentes aplicaciones, y que puede ser de gran
utilidad para dar solucin a problemas de ingeniera.
El problema especfico abordado es el desarrollo de una interfaz hombre
mquina basada en Android, para realizar el control de velocidad en lazo
abierto de un motor AC mediante el variador de frecuencia Danfoss FC300.
Actualmente existen soluciones de este tipo que implementan software y
hardware privativo de distintas compaas. Un punto importante a tener en
cuenta es el hecho de que la plataforma propuesta es de libre acceso y por
lo tanto se pueden realizar soluciones robustas, pero menos costosas que
aquellas que implementa licencias comerciales de otros desarrolladores o
fabricantes. Soluciones que implementan PLCs, HMIs, y paquetes de software
estn disponibles bajo licencias de los distintos proveedores. El objetivo de
este trabajo no es utilizar dichas licencias o dispositivos que no son de libre
acceso, se realiza un proyecto de ingeniera que ofrezca las mismas
prestaciones, pero basado en una plataforma muy completa y de cdigo
abierto como lo es el framework de Android.
Para el desarrollo de este proyecto se utilizan las herramientas que ofrece
Android para desarrolladores como lo son el SDK, NDK y ADT, tambin se
utilizara el entorno de desarrollo Eclipse IDE, el cual es basado en software
libre. Adems de esto la interfaz se implementa en un HMI (Human Machine
Interface) Th-0735W de TechNexion, el cual est basado en el procesador
de bajo consumo ARM Cortex-A8 TI Sitara AM3517. El dispositivo esta
equipado con una pantalla tctil de 7 pulgadas, 256MB de memoria RAM
DDR2, 512MB de memoria NAND flash, cuatro puertos USB, bus CAN, puertos
RS-232/422/485, LAN, WiFi, y un slot para MicroSD, adems viene con el
sistema operativo Android 2.2, una versin modificada la cual contiene todos
los drivers requeridos por el kernel de Linux para poder acceder los distintos
puertos del dispositivo. Estas caractersticas la convierten en una poderosa
herramienta de tipo industrial, con la cual se pueden aprovechar las ventajas
del software libre y de toda la plataforma Android, para dar soluciones a
problemas de ingeniera en la industria, a costos que pueden estar muy por
debajo de las soluciones de tipo privativo que requieren la adquisicin de
una licencia para su uso comercial.
La combinacin de nuevas herramientas tanto en software como en
hardware hace posible el diseo de sistemas modernos que brinden
soluciones a problemas de ingeniera. Se presenta entonces en este trabajo
el desarrollo de un sistema con las herramientas descritas que logra una
solucin ms verstil y econmica que aquellas ofrecidas para la industria
actualmente.
Objetivos
Objetivo general:
Lograr la implementacin de una interfaz hombre mquina completamente
funcional para el variador de frecuencia Danfoss FC300, utilizando la
plataforma de software de Android y un HMI basado en ARM.
Objetivos especficos:
Conocer el funcionamiento y caractersticas de hardware del HMI Th-0735W
para lograr su adecuado funcionamiento.
Conocer el funcionamiento y configuracin del variador de frecuencia
Danfoss FC300.
Lograr la comunicacin entre un variador de frecuencia Danfoss FC300 y un
HMI Th-0735W a travs de RS-485.
Adquirir las habilidades necesarias en el lenguaje de programacin Java
para desarrollar aplicaciones en el sistema Android.
El proyecto consiste entonces en el desarrollo de una interfaz hombremquina en el sistema operativo Android sobre el HMI Th-0735W para lograr
controlar motores AC en lazo abierto a travs del variador de frecuencia
Danfoss FC 300. Ambos dispositivos se comunican por un puerto RS-485
utilizando el protocolo FC de Danfoss. La interfaz permite cambiar la
frecuencia, invertir sentido de giro y parar el motor, adems se cuenta con
cinco direcciones programadas en el HMI que permiten enviar informacin a
cinco procesos distintos. La informacin se despliega en pantalla de una
manera sencilla y familiar para el usuario. Todo el desarrollo es basado en la
plataforma Android y realizado en el entorno de desarrollo Eclipse IDE.
Marco Terico
La interaccin entre el hombre y la mquina requiere de una interfaz que
permita la comunicacin entre ambos. En procesos industriales es comn
que dichas interfaces estn basadas en plataformas de cmputo, por
ejemplo un computador de propsito general, o un HMI como el descrito en
este proyecto. En el caso particular esta interfaz se encarga de desplegar la
informacin concerniente al proceso de manera que el humano la pueda
comprender, as como de procesar la informacin ingresada por este y
enviarla al proceso. Es necesario entonces que el sistema que hace las
veces de interfaz se capas de comunicarse con el humano y con la planta
en cuestin.
Bajo este perfil FC se envan 8 bytes por telegrama con un bit de inicio, uno
de parada y utilizando paridad par. El tiempo entre cada carcter no puede
exceder el equivalente a 2 caracteres. El byte STX marca el inicio del
telegrama y tiene un valor de 0x02(HEX), el byte LGE contiene la longitud del
bloque de datos ms el ADR y el BCC, el byte ADR contiene la direccin del
variador, el bloque de datos est compuesto en este caso por los bloques de
proceso PCD1 y PCD2 de 16 bits cada uno y contiene las instrucciones que
debe ejecutar el variador. Finalmente el BCC contiene la suma de
comprobacin correspondiente a la operacin XOR entre todos los bytes
anteriores a este.
Cuando la lnea est inactiva, esta permanece en alto, el bit de inicio marca
la transmisin de un nuevo carcter. Posteriormente se envan los 8 bits que
componen el byte (bit 0 al bit 7), despus de enviar el byte completo se
enva un bit adicional conocido como el bit de paridad el cual es requerido
por el variador, ya que de no enviarse se descartara la trama. La paridad se
asigna a alto o bajo dependiendo de la cantidad de unos que contenga el
Metodologa
$su
#chmod 777 /dev/ttyS1
#exit
$exit
Con los anteriores comandos se desbloque el puerto requerido, es decir se
dieron los permisos al puerto ttyS1 (COM2) que corresponde al puerto RS232/422/485. Se utiliz el comando exit para cerrar la aplicacin y liberar los
recursos del sistema.
Una vez finalizado el proceso de configuracin de los dispositivos, se
procedi a trabajar sobre la capa de aplicacin de Android, para garantizar
la comunicacin y desarrollar la interfaz de usuario.
Archivo SerialPort.java:
Este archivo contiene bsicamente una clase llamada SerialPort, la cual
provee al usuario de un constructor y de mtodos para obtener el
InputStream y el OutputStream, tambin ofrece los mtodos nativos para
abrir y cerrar el puerto, dichos mtodos se encuentran escritos en el lenguaje
C y se encuentran en el archivo correspondiente SerialPort.c, el prototipo del
constructor se describe a continuacin.
android:progress="0"
Especifica el progreso inicial del objeto al ser creado.
android:background="@color/light_blue"
Con esta propiedad se puede modificar el fondo de la vista. Se observa que
el color es tambin un recurso en XML, ya que los colores, los tipos de letra,
las dimensiones y dems, se pueden definir como recursos en XML. @color
significa que el recurso se encuentra en un archivo de nombre colors.xml, y el
nombre del recurso es light_blue. La Figura 6 muestra un ejemplo de
definicin de recursos para cadenas de caracteres en el archivo strings.xml.
Archivo MainActivity.java:
Este archivo contiene la actividad principal, una vez se lanza la aplicacin el
sistema llama el mtodo onCreate() correspondiente. En el archivo
CLASES:
java.io.File
Esta clase es una representacin abstracta de rutas de archivos y directorios,
utilizada para representar la ruta al archivo /dev/ttyS1 asociado al puerto
serial.
java.io.IOException
Indica cuando se da una excepcin en una operacin de entrada/salida
(I/O), esta clase es requerida por la API del puerto serial.
java.io.OutputStream
Superclase de todas las subclases que representan una secuencia de bytes,
requerida para escribir datos en el puerto serial.
android.app.Activity
Actividad o aplicacin que interacta con el usuario, crea una ventana para
poner los elementos grficos que componen la interfaz.
android.os.Bundle
Sirve para agrupar informacin en un objeto para ser distribuida entre
distintas actividades.
android.view.KeyEvent
Se utiliza para reportar eventos, por ejemplo al presionar un botn se genera
un evento para el cual se puede crear un mtodo que ejecute determinada
accin.
android.view.Menu
Interfaz que se implementa para manipular elementos en un men.
android.view.View
Clase que representa el componente bsico de los elementos que
componen la interfaz de usuario, sirve para crear elementos visuales
interactivos como botones, sliders, spinners, entre otros.
android.widget.AdapterView
Tipo de clase que requiere de un Adapter que sirva de enlace entre el
objeto y sus correspondientes datos, como por ejemplo, un spinner y su
respectiva lista de tems seleccionables.
android.widget.AdapterView.OnItemSelectedListener
Interfaz que permite generar un llamado cada que un elemento de una lista
ha sido seleccionado.
android.widget.ArrayAdapter
Adapter que sirve de puente entre la vista y un arreglo de objetos.
android.widget.Button
Representa un botn que puede ser presionado por el usuario para generar
un evento.
android.widget.EditText
Vista de texto editable que permite al usuario ingresar o modificar el texto.
android.widget.SeekBar
Consiste de una barra de bsqueda con la cual el usuario puede interactuar
desplazando la misma para cambiar su valor o progreso.
android.widget.SeekBar.OnSeekBarChangeListener
Genera un llamado cada que la barra de bsqueda asociada ha sido
manipulada.
android.widget.Spinner
Vista que despliega una lista de tems seleccionables, dichos tems provienen
del Adapter asociado.
android.widget.TextView
Elemento de la interfaz que despliega texto al usuario.
android.widget.TextView.OnEditorActionListener
Interfaz que proporciona un llamado cuando se realiza una accin de
edicin sobre un texto.
android_serialport_api.SerialPort
Permite la creacin y utilizacin de un objeto asociado a un puerto serial.
comm.Comm485
Esta clase se cre con el fin de proveer mtodos pblicos para crear los
telegramas que se envan al variador de frecuencia desde la interfaz de
usuario.
customview.VirtualInstrument
Esta clase se cre con el fin de proporcionar un instrumento virtual para
desplegar el valor de la frecuencia que se est enviando al variador.
VARIABLES Y OBJETOS:
private SeekBar mSeek
Este objeto es una barra de bsqueda que sirve al usuario para cambiar la
frecuencia de una manera rpida y sencilla. Cada vez que se manipula la
barra se enva un telegrama al variador indicando que debe cambiar la
frecuencia.
private int frequency
Variable de tipo entero que contiene el valor actual de frecuencia, se
modifica desde varios objetos visibles en pantalla.
private TextView freqText
Vista de texto que despliega el valor actual de frecuencia contenido en la
variable frequency.
private EditText spText
Este objeto permite modificar la frecuencia de una manera ms precisa, es
decir, se escribe directamente el valor de frecuencia deseado.
private Spinner turn
Esta vista responde a la interaccin desplegando una lista de dos elementos
que permite al usuario elegir el sentido de giro del motor. Cada que se
produce un evento es necesario enviar el telegrama correspondiente al
variador para indicarle que debe modificar su sentido de giro.
private Spinner baud
Este objeto despliega una lista que contiene cinco direcciones distintas y una
opcin de bloqueo de la pantalla para evitar que se cambien los
parmetros por accidente. La direccin seleccionada en la lista debe
coincidir con la direccin programada en el variador que se desea operar.
MTODOS CREADOS:
Archivo Comm485.java
MTODOS:
public static void createFrame(byte[] frame, int pcd1, int pcd2)
Este mtodo se encarga de crear el mensaje de ocho bytes segn el
protocolo FC, para ser enviado al variador. El parmetro byte[] frame es el
arreglo donde debe ubicar el contenido del mensaje, tambin posee como
argumentos lo cdigos de proceso PCD1 y PCD2. La funcin tambin se
encarga de asignar la direccin actual del variador y de calcular la suma de
comprobacin requerida por el Danfoss FC 300.
public static int setFrequency (int freq)
Este mtodo se encarga de realizar la conversin de hercios al
correspondiente cdigo del bloque PCD2. Al ser llamado recibe un
argumento que es el valor de frecuencia actual que se desea enviar al
variador.
public static int invertFrequency (int freq)
Mtodo que se encarga de realizar la conversin al cdigo de proceso del
PCD2 en complemento a dos para realizar la inversin de giro. Su nico
parmetro es la frecuencia actual a ser enviada.
Archivo VirtualInstrument.java
Este archivo contiene la clase VirtualInstrument que se cre con el fin de
proveer un instrumento virtual para desplegar el valor de frecuencia en
pantalla. Esta clase extiende la clase View de la API de Android y
bsicamente consiste de un mapa de bits a ser desplegado, y de un mtodo
que dibuja un indicador visual cada que el usuario realiza un cambio en la
frecuencia.
CLASES:
import android.graphics.Bitmap
Clase que permite manipular imgenes o mapas de bits.
import android.graphics.BitmapFactory
Clase utilizada para crear objetos de la clase Bitmap.
import android.graphics.Canvas
Clase que contiene los mtodos necesarios para dibujar.
import android.graphics.Color
Esta clase provee colores para ser utilizados al dibujar, tambin contiene
mtodos para crear y manipular colores.
import android.graphics.Paint
Guarda informacin acerca del color y el estilo del dibujo.
import android.view.View
Clase que representa el componente bsico de los elementos que
componen la interfaz de usuario, sirve para crear elementos visuales
interactivos como botones, sliders, spinners, entre otros.
VARIABLES Y OBJETOS:
private Bitmap img
Objeto de la clase Bitmap asociado a la imagen de fondo del instrumento
virtual.
private Paint paint
Pintura a ser utilizada en el dibujo.
private float degree
Variable que contiene la rotacin en grados de la aguja del instrumento
virtual.
public int freq
Variable que guarda el valor actual de la frecuencia a ser desplegada.
MTODOS:
public VirtualInstrument(Context ctx, AttributeSet attrs)
Constructor de la clase. Se encarga de llamar al constructor de la super
clase y de inicializar algunos miembros de la clase a travs de mtodo init().
public final void rotate (float degrees, float px, float py)
Clase: Canvas
Mtodo utilizado para realizar la rotacin de la aguja del instrumento virtual
conforme ocurren los cambios en la interfaz. Se especifican los grados y un
punto (px,py) que no se ver afectado por la rotacin.
public void drawLine (float startX, float startY, float stopX, float stopY, Paint
paint)
Clase: Canvas
Se utiliza para dibujar lneas. En este caso este mtodo es llamado para
dibujar las lneas que conforman la aguja del instrumento. Se especifica el
punto de inicio, el punto de terminacin y la pintura a ser utilizada.
Una vez finalizado el desarrollo de software, se realiz una primera etapa de
depuracin del programa y posteriormente se procedi a realizar las
pruebas pertinentes en el laboratorio con los dispositivos y la planta.
Resultados y anlisis
El software se realiz con la ayuda del Android ADT plugin, el cual consiste de
una extensin para el entorno integrado de desarrollo Eclipse IDE y que
permite desarrollar aplicaciones para el sistema operativo Android.
Inicialmente se realizaron las pruebas en un dispositivo virtual (AVD), para
depurar el programa y garantizar el correcto funcionamiento de la interfaz
grfica. Esta etapa permiti corregir varios errores y ajustar la interfaz de
usuario para garantizar su adecuada operacin. Posteriormente se realizaron
pruebas de comunicacin en el laboratorio entre el dispositivo HMI y el
variador de frecuencia. Estas pruebas permitieron depurar el protocolo de
comunicacin el cual representa una parte fundamental del sistema. Al final
de las etapas de prueba y depuracin se obtuvo como resultado un sistema
dotado de una interfaz hombre mquina basada en Android para controlar
en lazo abierto un motor AC a travs del variador de frecuencia Danfoss FC
300.
La Figura 7 muestra
un diagrama correspondiente al sistema
implementado.
El usuario interacta con el sistema a travs de la pantalla, la cual presenta
opciones para arrancar o parar el motor, invertir el sentido de giro, cambiar
la frecuencia, cambiar la direccin del dispositivo, abrir el puerto para la
comunicacin y bloquear los elementos crticos en pantalla. Las ordenes
ingresadas son procesadas por el dispositivo Th-0735W y enviadas al variador
de frecuencia en forma de mensajes de 8 bytes segn el protocolo FC de
Danfoss, y utilizando el estndar RS-485 de capa fsica. Sistemas similares se
encuentran actualmente en la industria, pero a diferencia, estos utilizan
generalmente un PLC y la interfaz se desarrolla utilizando algn paquete de
2 Botn de STOP: Se utiliza para detener el motor por inercia envindole una
frecuencia igual a cero. Al ser presionado por el usuario, se llama el mtodo
de respuesta programado, se revisa el estado de la bandera start, si se
encuentra en alto entonces se desactiva y se enva el comando de parada
al variador, de lo contrario el mtodo llamado no ejecuta ninguna accin.
Conclusiones
Uno de los aspectos ms importantes del trabajo fue sin duda la experiencia
y el conocimiento adquiridos durante todo el proceso de desarrollo. El
conocimiento de los dispositivos involucrados as como las habilidades
adquiridas en el lenguaje de programacin Java y el sistema operativo
Android, hacen de este trabajo una experiencia formativa en el campo
profesional de la ingeniera. Estos conceptos y conocimientos contribuyen en
distintas reas del ejercicio profesional como la computacin mvil, el
desarrollo de aplicaciones industriales, los sistemas embebidos y el desarrollo
de software en general, haciendo de esta etapa de formacin un
complemento importante de las bases obtenidas a lo largo del estudio de la
ingeniera electrnica y su amplio campo de aplicacin.
Referencias Bibliogrficas
Android Open Source Project [en lnea].
<http://developer.Android.com/training/index.html>
[Citado en 8 de Enero de 2013]
DANFOSS. Gua de diseo del FC300
MEIER, Reto. Professional Android Application Development. Indianapolis:
Wiley Publishing Inc, 2009. 409p.
ORACLE. Java SE Technical Documentation [en lnea].
< http://docs.oracle.com/javase/> [Citado en 8 de Enero de 2013]
TECHNEXION. Th-series Human Machine Iinterface and its Baseboard Users
Guide. 2011. Rev 0.92
TECHNEXION. TAM-3517 System on Module and its Baseboards Users Guide.
2012. Rev 0.97
TEXAS INSTRUMENTS. RS-422 and RS-485 Standards Overview and System
Configurations. 2002 - 2010.