C + para Automatizacion
C + para Automatizacion
C + para Automatizacion
ADOBE
MICROCONTROLADORES
FLASH
PIC
ISBN-13 978-607-00-5217-0
Registro obtenido 13 de Diciembre de 2011
Editor independiente: 1era edicin www.multitecnologia.com aaroncb@multitecnologia.com
Primera edicin : Enero de 2012, Mxico Registro obtenido con fundamento en los artculos 53, fraccin IV de la Ley Federal del Derecho de Autor y 86, 88, 89 fraccin I, 94 fraccin II y 96 de su Reglamento. Derechos reservados Esta obra es propiedad intelectual del autor, se encuentra prohibida su venta o reproduccin sin consentimiento del autor. Importante La informacin tiene un enfoque completamente didctico, los ejemplos plantean un conocimiento estrictamente bsico como introduccin a los lenguajes y plataformas descritas, los posibles errores y omisiones no sern jurdicamente responsabilidad del editor. Autorizacin para su venta e impresion en Mxico
Estimado lector:
Agradezco su inters por aprender este interesante lenguaje, durante este proceso tratar de explicar de la manera mas amena como puede mejorar sus aplicaciones con C#.NET y diferentes componentes de hardware, tambin narrar algunas experiencias de aplicaciones en las que he participado como desarrollador. Atte. Ing. Aaron Castro Baza
Einstein sola decir... Si no puedes explicar algo de forma sencilla, entonces t no lo entiendes bien A partir de esta frase surge la idea de facilitar el aprendizaje de estas tecnologas, este libro es el resultado de una labor de 11 meses de trabajo y entrega. Dedico esta obra a mi familia
Simbologa
Para una lectura amena utilizaremos smbolos dando nfasis a notas especiales.
Tips
VB C#
En Lenguaje Terrcola
Este smbolo aparece cuando explicamos un concepto con lenguaje sencillo o una analoga.
Ancdotas
En estos prrafos narraremos alguna ancdota relacionada con el tema tratado.
Contenido
Captulo 1: Introduccin a C#
Evolucin de los lenguajes y antecedentes.....................................................................................2 Origen de .NET.................................................................................................................................3 Conceptos bsicos de la plataforma y POO....................................................................................4 Mtodos, propiedades e interfaz......................................................................................................5 Interfaz de desarrollo IDE ................................................................................................................6 Controles estndar y opcionales .....................................................................................................6 El editor de cdigo ...........................................................................................................................8 Propiedades y eventos en controles .............................................................................................10 Argumentos en controles ..............................................................................................................10 Explorador de soluciones ..............................................................................................................11 Comentarios, nodos y regiones ....................................................................................................12 El depurador (debugger) ...............................................................................................................14 Tipos de dato y sus rangos ...........................................................................................................15 Tipo Carcter y String ...................................................................................................................16 Tipo Int, Byte, Bool y Float ............................................................................................................17 Operadores aritmticos y lgicos ..................................................................................................18 Operadores bits, asignacin y creadores de objetos.....................................................................19 Conversin de datos......................................................................................................................20 Flujo de programa, ciclos y decisiones .........................................................................................22 Declaracin de funciones ..............................................................................................................23 Sentencia If....................................................................................................................................25 Sentencia GoTo.............................................................................................................................26 Operador AND y sentencia If ........................................................................................................27 Operador OR y sentencia If...........................................................................................................29 Prctica 1: La prueba de Turing"..................................................................................................30 Sentencia Switch ..........................................................................................................................33 Ciclo For .......................................................................................................................................35 Ciclo For Each y While..................................................................................................................38 Ciclo Do While ..............................................................................................................................39 Manejo de arreglos en C#.NET......................................................................................................40 Apuntadores ..................................................................................................................................40 Prctica 2: Manejo de arreglos en C#.NET....................................................................................41 Excepciones Try, Catch, Finally ....................................................................................................42 Errores lgicos...............................................................................................................................45 Prctica 3: Algotirmo de sondeo con sentencia If y ciclo For........................................................46 Prctica 4: Clculo de promedio para 10 calificaciones................................................................47 Prctica 5: Conversin de binario a decimal.................................................................................48 Prctica 6: Conversin de decimal a binario.................................................................................49 Prctica 7: VideoJuego "El Ahorcado"...........................................................................................51 Convencin de nombres para variables y controles .....................................................................54 mbito de variables.......................................................................................................................55 Conociendo los controles...............................................................................................................56 Control Button................................................................................................................................58 Control Imagelist ...........................................................................................................................59 Control TextBox..............................................................................................................................61 Control Label .................................................................................................................................62 Control ListBox y CheckBox..........................................................................................................63 Control NumericUpDown y RadioButton .......................................................................................................64 Control GroupBox y PictureBox ....................................................................................................................65 Control DataGridView....................................................................................................................................66 Control ComboBox y Timer............................................................................................................................67
Contenido
Control HScrollBar, VScrollBar y ProgressBar...............................................................................69 Control TabControl .......................................................................................................................70 Control SerialPort....................................................................................................................70 Control Shockwave Flash............................................................................................................71 Control Windows Media Player....................................................................................................72 Control Chart...............................................................................................................................73 Propiedades Focus y Tabindex....................................................................................................74
Contenido
Captulo 4: Introduccin a Adobe Flash
Ingenieros haciendo grficos?...................................................................................................206 Antecedentes de Flash.................................................................................................................207 Flash aplicado a la automatizacin...............................................................................................208 ActionScript y el entorno de desarrollo .........................................................................................209 Herramientas...............................................................................................................................210 Documento de Flash y Mens.......................................................................................................211 Lnea de tiempo............................................................................................................................212 Las capas (Layers).......................................................................................................................213 Herramientas de edicin..............................................................................................................214 Primera animacin.......................................................................................................................218 Concepto de Accin......................................................................................................................221 Prctica 23: Jugando con la animacin.........................................................................................232 Prctica 24: Animacin de un carro...............................................................................................234 Prctica 25: Creando MovieClips..................................................................................................239 Prctica 26: Diseo de botones personalizados............................................................................243 Prctica 27: Mscaras en Flash....................................................................................................246 Prctica 28: Comunicacin bidireccional con C#.NET...................................................................253 Diferencias entre ActionScript 2.0 y 3.0.........................................................................................258 Prctica 29: Videojuego "Pong" con Flash y C#.NET.....................................................................258 Prctica 30: Manejo de sonido en Flash.......................................................................................268 Prctica 31: Diseo del medidor de temperatura...........................................................................273 Prctica 32: Diseo de la casa automatizada (domtica)..............................................................275
Contenido
Captulo 6: Comunicacin con PLC's y configuracin de servidor OPC
Como debe ser un monitoreo industrial?....................................................................................350 La complejidad de los procesos....................................................................................................351 La delimitacin de objetivos.........................................................................................................352 Una historia sobre procesos.........................................................................................................353 El arte de cotizar un proyecto........................................................................................................355 Consejos para cotizar un proyecto...............................................................................................357 Cotizar en base a la "Ley de Murphy"............................................................................................357 Etapas para tener xito como desarrollador.................................................................................358 Diferencia entre HMI y SCADA....................................................................................................358 Introduccin al OPC....................................................................................................................359 Aplicaciones Cliente-Servidor.....................................................................................................360 Aplicaciones Cliente con C#........................................................................................................360 Virus en sistemas de automatizacin...........................................................................................361 Virus enfocado a sistemas SCADA..............................................................................................361 Servidor Kepware........................................................................................................................362 Instalacin y configuracin de servidor OPC................................................................................363 Configurando un PLC KOYO DL06 de Automation Direct ............................................................365 Configurando un PLC Siemens S7-300.......................................................................................373 Prctica 41: Aplicacin cliente con C#.NET..................................................................................384 Archivos de audio gratuitos..........................................................................................................396 Archivos de imgenes vectoriales gratuitos.................................................................................400
Contenido
Prctica 55: Frecuencimetro sencillo con el timer1 y una entrada por hardware.........................457 Prctica 56: Manejo de interrupciones combinadas con el puerto serie........................................459 Prctica 57: Control de Led RGB con PWM por software..............................................................462 Prctica 58: Control de Led RGB desde C#.NET..........................................................................465 Aplicaciones con puertos COM virtuales por USB.........................................................................470 Prctica 59: Comunicacin bidireccional por USB........................................................................470
IMPORTANTE
VisualStudio, C# y .NET Framework son marcas registradas propiedad de Microsoft Corporation Inc. Los temas tratados en este curso no afectan los derechos de autor de Microsoft.
Compre VisualStudio! Para proyectos de automatizacin industrial la plataforma Windows ha comprobado ser la ms conveniente, aprenda los conceptos bsicos con este libro.
Captulo 1
Captulo 1
Introduccin a C#.NET
En este captulo aprenderemos los conceptos bsicos de programacin, ejemplos en consola y una introduccin a los controles de VisualStudio.
Captulo 1
Captulo 1
El Fin de VisualBasic (98) VisualBasic volvi a nacer con la plataforma .NET, muchas son las razones por las que Microsoft decidi crear su nueva generacin de lenguajes y plataforma, personalmente creo que fue una gran herramienta que solo tena el error de consentir demasiado al programador restando crdito a su eficiencia, los sistemas han evolucionado en gran parte por el auge de Internet, los antiguos diagramas de flujo ya no pueden representar la totalidad de la operacin de un sistema, otros estndares como UML (Unified Modeling Language) se han diseado especialmente para la programacin orientada a objetos y las nuevas tendencias, esto fue la razn primordial del gran cambio en Visualbasic y su hermano C#.NET. Tipos de programacin y la transicin a objetos Emigrando de VisualBasic a C#.NET: Cuando se programa por eventos solo se ponen a trabajar los controles disponibles, en VisualBasic no era comn crear nuestros objetos por que la bibliografa de entonces no promova esta prctica. Puedo programar en C# sin crear clases? La respuesta es si, pero trataremos de erradicar esa prctica y dejar a un lado los malos hbitos que pudo dejar VB, an en esta nueva plataforma y sus restricciones todava podemos crear un caos de cdigo. Una nueva forma de razonar Con C#.NET conoceremos una forma mas natural de pensar en un sistema de control o monitoreo, tambin cuestiones internas del compilador que no se mostraban en VB y algunos conceptos nuevos como multihilos, herencia, polimorfismo, encapsulamiento, abstraccin, etc. La plataforma .NET La primera versin de .NET vio la luz entre el 2000 y 2002, durante esta etapa se puso a prueba su versiones Beta y 1.0, con la moda se dio a conocer una nueva palabra Framework, en Java esto es similar a la Maquina Virtual, sin embargo no solo es un intrprete, permite que gran variedad de lenguajes generen binarios compatibles entre si, de todos ellos el que ha ganado mas popularidad es sin duda C#.NET. De dnde surge C#.NET? Por el concepto de mquina virtual para algunos tiene mucha similitud con Java, personalmente creo que viene inspirado en Delphi por dos razones: 1.- Mismo arquitecto: Anders Hejlsberg 2.- Delphi incorpor un IDE para formularios Web y de Escritorio antes de la plataforma .NET (1997). Cabe destacar que gran cantidad de programadores en Delphi emigraron a C# por estas razones.
3
Captulo 1
C# y el Opensource El mundo del OpenSource tambin se sinti atrado por C#, el Mexicano Miguel de Icaza y su proyecto MONO se encuentran actualmente implementando en forma paralela su compilador C# para Linux, otra buena razn para confiar en este lenguaje. Ancdota: En una conferencia le preguntaron a Icaza, un programador puede pasar de .NET a Mono? En ese tiempo Mono no tenia debugger y la dificultad al programar era mayor, su respuesta fue... Depende que tan hombre eres. La Filosofa de .NET Hasta el momento tenemos claro que C#.NET es una evolucin a los entornos de programacin y sigue cobrando fuerza, pero... a que se refiere la plataforma y el tan nombrado framework?. En lenguaje terrcola... Las ventajas primordiales de .NET es que se pueden elegir varios lenguajes y combinar los ejecutables que genera cada uno, es decir una parte de un proyecto puede estar hecho en C#.NET, otra en VisualBasic.NET o C++.NET y compartir el cdigo sin problema, esto se debe a que todo se convierte a un lenguaje intermedio (MSIL) que estandariza el cdigo antes de convertirlo en lenguaje mquina. Acerca del Framework Lo que en Java se conoce como mquina virtual en .NET se convierte en el Framework, son simplemente archivos que permiten que se ejecute la plataforma en las PCs con Windows, cada cierto tiempo salen nuevas versiones del Framework (1.1, 2.0, 3.5, 4, etc), es necesario tenerlos instalados con sus respectivos parches (SP1, SP2, etc) para que funcionen nuestros proyectos. Programacin Orientada a Objetos en C#.NET La popularidad de la programacin orientada a objetos se debe a los buenos resultados al momento de construir, redisear y dar soporte a un sistema. Un programador que viene de un lenguaje por procedimientos con Turbo C o Ensamblador debe acostumbrarse a nuevos vocablos y una forma diferente de idealizar el proyecto. Consideraciones generales si usted esta acostumbrado a programar por procedimientos... Las libreras reutilizables ahora las llamaremos Clases. Las funciones ahora las llamaremos Mtodos. Las variables que tiene cada Mtodo de una Clase se llaman Propiedades. Que es una Clase? Una clase es la definicin de las caractersticas concretas de un determinado tipo de objetos, es decir, es una especie de molde representado por cdigo que define mtodos y propiedades de un concepto.
4
Captulo 1
Clases en lenguaje terrcola... Una Clase define el comportamiento y descripcin de cualquier cosa, un objeto material (carro, martillo, mesa), un concepto (cuenta bancaria, deuda, impuestos ) o un ser vivo (humano, perro, delfn). Mtodos de una Clase Los mtodos son las funciones privadas o pblicas que dan vida a nuestro cdigo, es comn que el nombre de estos mtodos sea un verbo como Encender, Apagar, Encontrar, etc. Las Clases pueden tener infinidad de mtodos en los cuales se debe razonar muy bien su labor y como interacta con otros mtodos y propiedades internos. Propiedades de una Clase Las propiedades son todas las variables privadas o pblicas con las que realiza sus operaciones cada Clase, por ejemplo para un Objeto Persona sus propiedades pueden ser: Edad, Peso, Estatura, etc. En el caso de un proceso industrial donde modelamos el comportamiento de un Sensor las propiedades pueden ser Corriente, Voltaje, Temperatura, etc. Vamos a centrarnos en el tema de clases cuando dominemos la programacin estructurada.
Iniciemos !
Abrimos VisualStudio y elegimos un proyecto en C# para Windows Forms.
Captulo 1
Propiedades
Herramientas
Formularios
Ventana de Proyectos
El IDE, es fcil de personalizar, podemos ajustar tamaos y acomodar los paneles, en lo personal recomiendo ajustar la pantalla como se muestra en la imagen. Colocar el panel de proyectos y propiedades al lado derecho es la forma mas sencilla de trabajar.
6
Captulo 1
Barra de herramientas En la barra de herramientas tenemos todos nuestros controles comunes y aparte podemos agregar otros mas especializados dando clic derecho sobre la barra y la opcin elegir elementos.
Como ejemplo tenemos el control Shockwave Flash que no viene como parte de los objetos comunes pero ser til en nuestro libro.
Captulo 1
VB C#
Captulo 1
Concepto de Propiedad Las propiedades son caractersticas que tienen todos los controles, por ejemplo un Botn (Button) puede ser color rojo, tener una coordenada x=50, y=100 , estas propiedades nos definen la vista grfica pero tambin existen otras para dar comportamiento a nuestro control, por ejemplo: Enabled.- nos dice si el control esta habilitado para operar, sus valores son (true, false). Visible.- Permite ocultar el diseo en tiempo de ejecucin, sus valores son (true, false). Autosize.- Permite que el control se ajuste al tamao del texto. Todas estas propiedades se pueden establecer mientras diseamos la pantalla o bien durante la ejecucin. La sintaxis para leer o establecer propiedades por medio de cdigo en C# es la siguiente:
El cono nos permite elegir las propiedades del objeto, mientras que el los eventos posibles en ese control.
Concepto de Evento
Un evento son las posibles reacciones que tiene un control y permiten ejecutar cdigo, por ejemplo el evento clic de un usuario, arrastrar el mouse sobre un control, etc. Cada control tiene variedad de eventos en comn con otros objetos o especialmente diseados. En el caso de un Botn es sencillo acceder a su evento Click, seleccionamos la casilla y hacemos doble Click para entrar al cdigo.
Captulo 1
Vamos a hacer un ligero parntesis comparndolo con la programacin orientada a eventos de VisualBasic 98:
VB C#
Si usted manejo VB recuerda que los botones de llamaban comandos y el cdigo generado en un evento Click solo mostraba el nombre Command1 seguido de _Click(), por alguna razn no era necesario conocer como el compilador trabajaba internamente, posiblemente esa fue la clave de la sencillez y xito de VisualBasic, con C# cambia nuestra manera de ver el cdigo, ahora podemos entender mas a fondo que hace el compilador, para empezar nos muestra dos parmetros extra en el evento Click: ( object sender, EventArgs e) En lenguaje terrcola para que nos sirven? object sender: nos permite saber cual objeto esta generando el evento, en este caso el botn. EvenArgs e: Nos permite conocer datos que trae el objeto que nos provoc en evento.
Por ejemplo en un textBox los argumentos que manda el evento keypress son los caracteres:
Para probar estos argumentos vamos a utilizar el botn previamente dibujado y en el evento KeyPress del textBox1 escribimos:
Ejecutando nuestro programa con el botn como pasamos el valor de un control a otro.
observamos
10
Captulo 1
El IDE tambin genera lneas en la clase del diseador Form1.Designer.cs, el cdigo generado corresponde a la configuracin de propiedades del botn y el evento que tenemos registrado (Click), ahora VisualStudio nos permite ver y modificar su cdigo interno.
VB C#
Explorador de Soluciones El explorador de soluciones nos permite acceder a todos nuestros formularios, clases y variedad de elementos para nuestro sistema. Para este ejemplo solo contamos con un formulario (Form1.cs) pero se pueden tener mayor cantidad, inclusive crear una solucin con varios proyectos que a su vez tengan sus propios formularios. La carpeta de Referencias contiene las libreras que ocupa nuestro programa, en adelante vamos a poner nfasis en esta carpeta ya que incorporaremos controles como Flash y componentes para conexin con PLCs.
El Program.cs es como la chispa de encendido de cualquier programa en C#, crea la primera instancia de nuestro formulario de inicio, a su vez se invoca el mtodo que dibuja los grficos iniciales de nuestro programa, es decir ejecuta las lneas de Form1.Designer.cs.
11
Captulo 1
Sobre el Editor El editor de VisualStudio posee muchas ventajas para estructurar un programa, le presento 3: Comentarios en C#: Los comentarios es una buena prctica al desarrollar, nos permite explicar el funcionamiento de alguna instruccin o funcin de nuestro programa, en VisualStudio tienen un color verde y para agregarlos tecleamos dos diagonales // , con esto VS pone en color verde el texto y lo deja sin validez para la lgica del compilador. Si deseamos agrupar varias lneas de comentarios agregamos /*al inicio y */ al final, ejemplo:
Uso de nodos: Los nodos son otra caracterstica de VS para hacer mas sencilla la lectura del cdigo, cada vez que se agrupa un evento o funcin por medio de las llaves { } se genera un nodo con el smbolo , si presionamos el cdigo encerrado se reduce a una sola lnea, con esto es ms sencillo encontrar porciones del programa en las que estamos trabajando y dejar en una sola lnea las que ya estn validadas. Ejemplo para un evento Load:
Uso de Regiones: A diferencia de los nodos, las regiones las define el usuario y pueden agrupar secciones de nodos, las sintaxis es: #region nuestro texto #endregion
Al presionar el nodo
nos queda
Como podemos observar toda la regin queda acotada a una sola lnea y conserva el texto que definimos: Funciones de Monitoreo. El uso de regiones es otra buena prctica para organizar nuestro programa, corregir errores y agregar funciones.
12
Captulo 1
13
Captulo 1
Trabajar con la consola de C# es parecido al ambiente MS-DOS antiguo, como se puede observar el proyecto solo se compone de las propiedades, referencias y la clase bsica: Program.cs
Dejamos por un momento este proyecto, ahora vamos a una parte interesante en todos los compiladores: El Depurador.
El Depurador (debugger)
En 1947 Grace Hooper se encontraba trabajando en la "supercomputadora" electromecnica Mark II, tal da al estar operando se registro un error que impeda el avance de los comandos, los operadores buscaron entre los "pasillos" de la mquina y alguien dijo Es un bicho!, refiriendose a una palomilla atrapada en un relevador, desde entonces se conocen como "bugs" a los errores que impiden que se ejecute un programa correctamente y el nombre "debugger" a la herramienta para encontrarlos.
En VisualStudio el Depurador se encuentra en el men principal, es una herramienta avanzada que nos permite localizar errores y ejecutar los programas paso por paso.
El Bicho quedo almacenado para la Historia en el libro de apuntes del sistema. Fuente: U.S. Naval Historical Center Online Library Photograph NH 96566-KN
14
Captulo 1
VB C#
Tipo bool sbyte short int long byte ushort uint ulong float double decimal char
Diferencias con VB (98) El lenguaje si distingue entre maysculas y minsculas En C# no existe el tipo Variant El tipo Float es el equivalente a Single o Double en VisualBasic
Tipos de dato en C# El tipo de dato depende de la informacin que vamos a guardar, es importante una buena eleccin para no desperdiciar memoria y hacer lento el sistema. En esta tabla se presentan los tipos de C# y sus rangos posibles de valor. Rango true/false -128 a 127 -32768 a 32767 -2147483648 a 2147483647 -9223372036854775808 a 9223372036854775807 0 a 255 0 a 65535 0 a 4294967295 0 a 18446744073709551615 Aprox. 1.5 x 10-45 a 3.4 x 1038 con 7 decimales Aprox. 5.0 x 10-324 a 1.7 x 10308 con 15 o 16 decimales Aprox. 1.0 x 10-28 a 7.9 x 1028 con 28 o 29 decimales Cualquier carcter unicote, ocupa 16 bit
Qu tipo de dato elegir? Si usted va a guardar informacin de tipo texto el indicado es el string, observe los ejemplos... La sintaxis bsica es: Tipo de dato Nombre de variable //Algunos ejemplos de declaracin de variables con un dato inicial string nombre = "Vernica Michel"; char letra = 'A'; int metros = 100; byte edad = 5; float temperatura = 7.2f; bool autorizacin = true;
15
Captulo 1
Tipo de dato Char (Carcter) Nos permite almacenar un carcter Unicode, por lo regular guardamos letras. Ejemplo: Qu es Unicode? Es una tabla que asigna un cdigo a cada uno de los ms de cincuenta mil smbolos para alfabetos europeos, ideogramas chinos, japoneses, coreanos y muchas otras formas de escritura, aparte tiene mas de mil smbolos especiales. Tipo de dato String (Cadena) Los tipos String nos permiten almacenar cadenas de caracteres donde el tamao depende de la cantidad que ocupe, la sintaxis de declaracin es: String NuestroDato; Algo interesante con C# es que todos los tipos de dato tienen algn mtodo que nos puede ser til, para el tipo String tenemos el substring() que nos permite reemplazar datos de una cadena, ejemplo: En la clase program de nuestro proyecto de consola escriba el siguiente cdigo:
Vamos a practicar con el Depurador. Agregue un punto de interrupcin en el costado izquierdo dando Click y en el men principal elija Depurar/ Paso a paso por procedimientos o bien F10. La depuracin nos permite ver en cmara lenta como funciona nuestro programa.
Recuerda en C# todos los datos son objetos, por lo tanto tienen sus mtodos y nos permiten ahorrar mucho tiempo.
Cuando se ejecuta la lnea del punto de interrupcin posicionamos el Mouse en la variable nuevotexto y podemos ver como se reemplazo la palabra VisualStudio por VS.
16
Captulo 1
Tipo de Dato Int (Entero) Los datos enteros nos sirven para almacenar nmeros entre -2147483648 y 2147483647, por lo cual son muy utilizados para informacin que no tenga puntos decimales, comnmente se aplica para guardar el ndice en una base de datos, almacenar nmeros de pedidos y cualquier valor que no implique decimales. Ejemplo: Detalle importante: Cuando dividimos un dato entero entre un entero siempre nos regresa un entero, esto puede generar errores difciles de detectar como lo muestra el ejemplo:
Tipo de Dato Byte Los datos tipo Byte tiene un rango de valor entre 0 y 255 con nmeros enteros positivos, es recomendable guardar valores que no excedan ese rango, ejemplos:
Por el enfoque electrnico de este curso la variable tipo Byte la utilizaremos bastante. Tipo de Dato Bool Cuando ocupamos almacenar un valor que solo tiene dos opciones: true/false el tipo Bool es el mas indicado, la sintaxis es la siguiente:
Tipo de Dato Float (Punto flotante) Las variables tipo Float tienen un rango entre 1.5*10-45 a 3.4*1038 con 7 decimales, su utilidad se da con cualquier valor que implique decimales. La sintaxis es la siguiente:
Constantes en C# Cuando ocupamos declarar una constante escribimos const antes de la declaracin del tipo de dato:
17
Captulo 1
El bloque finally siempre se ejecuta no importando el error, es opcional utilizarlo, debe incluirse despus de todos los bloques catch. Ejemplo:
try { //operacin riesgosa int a = 0; int respuesta = 10 / a; } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { Console.WriteLine("siempre se ejecuta esta lnea"); }
Errores lgicos
El error lgico es bsicamente un error humano, se caracteriza por ser indetectable para el depurador y complicado de visualizar por el programador, este tipo de errores se presentan ante condiciones no previstas en el anlisis del sistema, son detalles que por lo regular son arreglados hasta el momento que surgen durante el arranque o produccin de un sistema. Un poco de historia: el error lgico ms famoso... Antes del ao 2000 se hizo popular la frase Y2K (Year 2000), este trmino pronosticaba el error que sufriran sistemas antiguos por almacenar la fecha del ao con solo dos dgitos, ejemplo: 1999 = 99, la gran incgnita era... que pasara con estos sistemas a la hora de almacenar el ao 2000?, durante los 90's se manejaron varias teoras sobre el posible fin del mundo por la activacin de viejas bombas nucleares, colapso financiero, etc. Afortunadamente los efectos negativos fueron mnimos por la gran difusin que se dio al problema.
Captulo 1
Al ejecutar obtenemos:
Segn el resultado de cada 100,000 boletos solamente 5,875 forman el nmero 21, lo que equivale a un 5.875%
46
Captulo 1
47
Captulo 2
Ahora el cdigo: Como vamos a mandar un correo desde nuestra aplicacin ocupamos algunas libreras de .NET, en la parte superior donde se encuentran las directivas using,agregamos el cdigo que se muestra y la variable string ruta.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; Importante: using System.Windows.Forms; Agregar estas referencias para using System.Net; tener acceso a recursos que nos using System.Net.Mail; permiten enviar correos. using System.Net.Mime; using System.Collections; namespace MonitoreoTanque { public partial class frmTanque : Form {//grabamos la ruta donde se ejecuta el programa string ruta = Application.StartupPath; public frmTanque() { InitializeComponent(); }
102
Captulo 2
Captulo 2
Finalmente escribimos otra funcin tipo Void con el nombre MandarCorreo. Cabe mencionar que esta rutina funciona para cuentas de Hotmail, pero cambiando el cdigo puede trabajar con otros servidores de correo.
//I M P O R T A N T E //funciona para cuentas de Hotmail
private void MandarCorreo() { //cuando se llama a esta funcin se manda un correo //Se prepara un nuevo mensaje System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); try { msg.To.Add("CorreoDelDestino@x.com"); //el destinatario msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess; msg.Priority = MailPriority.High; //Se establece el remitente msg.From = new MailAddress("suCorreo@hotmail.com", "suNombre", System.Text.Encoding.UTF8); msg.Subject = "Alarma"; //Se establece el asunto del mail //Formato de codificacin del Asunto msg.SubjectEncoding = System.Text.Encoding.UTF8; //establece el cuerpo del mail msg.Body = "Informandole que a las " + System.DateTime.Now.ToString() + " se dio una alarma en el tanque"; //Se establece la codificacin del Cuerpo msg.BodyEncoding = System.Text.Encoding.UTF8; //Se indica si al cuerpo del mail, se interpretara como cdigo HTMl msg.IsBodyHtml = false; SmtpClient client = new SmtpClient(); //creamos un objeto cliente client.Host = "smtp.live.com"; //apuntamos al servidor de hotmail client.Port = 587; client.UseDefaultCredentials = false; client.EnableSsl = true; //Credenciales para autentificarse con la cuenta de correo y la contrasea client.Credentials = new System.Net.NetworkCredential("sucorreo@hotmail.com", "contrasea"); client.Send(msg); MessageBox.Show("Ya mande el correo!!"); } //en caso de no mandar el correo capturamos los errores catch (System.Net.Mail.SmtpException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } catch (FormatException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); }
104
Captulo 2
Al ejecutar observamos que se puede elegir las acciones que realiza el sistema cuando existe una alarma. En la opcin 2 reproduce un audio y 2 controles parpadean, para la 3ra opcin hace lo mismo y aparte manda un correo.
Si usted desea utilizar otra cuenta de correo solo cambie el servidor SMTP.
Captulo 3
POO
Estimado lector: Llego el momento de cambiar nuestra manera de razonar un sistema, vamos a entrar a la POO, para esto debemos cambiar nuestros antiguos conceptos de programacin. Durante dcadas los programadores desarrollaron aplicaciones que resolvan los mismos problemas una y otra vez. Con la llegada de la POO la ventaja de reutilizar cdigo es un hecho que tarda muy poco en conquistar la mente de un desarrollador. El tiempo que se ahorra, la capacidad de seccionar los problemas y resolverlos por piezas es el objetivo de esta metodologa.
VB C#
Hasta ahora los ejercicios del curso se han enfocado a programacin en base a eventos con llamadas a funciones (estilo Visualbasic 98), en realidad an no hemos explotado las mejores caractersticas del lenguaje, ahora que ya conocemos el entorno, los controles y comandos vamos a disear nuestros propios objetos.
En lenguaje terrcola... La POO es una nueva forma de razonar los sistemas, sin embargo, an siguiendo los lineamientos no garantiza que los objetos estn bien razonados, depende de la forma en la que el programador ve los procesos y el entorno a modelar, para razonar con sentido comn y plasmarlo en cdigo toma tiempo y mucha prctica.
140
Captulo 3
Origen Todo nace de una necesidad A medida que se complica el diseo de software las metodologas evolucionan, un gran paso se dio en los 60's con el Simula 67. Qu es el Simula 67? Es un lenguaje diseado para simulacin diseado en el Centro de Cmputo Noruego en Oslo, sus creadores fueron Ole-Johan Dahl y Kristen Nygaard, su labor era programar el comportamiento de naves con diferentes cualidades. La Idea La idea fue agrupar cada tipo de nave en una clase de objetos, al mismo tiempo cada clase tendra sus propiedades y mtodos, con este concepto era mas sencillo razonar la simulacin. El resultado Al ejecutar sus rutinas observaron como las caractersticas particulares de cada nave afectaban al comportamiento del grupo, este fenmeno se daba al momento de combinarse los objetos, mas tarde dara inicio a un nuevo lenguaje: Smalltalk. Smalltalk? La primera versin fue escrita en Basic, despus se codific con Simula en el XEROX PARC, su principal caracterstica fue crear y modificar objetos en tiempo de ejecucin. Crear y modificar objetos en tiempo de ejecucin? En este Manual vamos a comprobar este concepto, en pocas palabras es crear una instancia mientras el programa se ejecuta. La evolucin... La POO logr posicionarse a mediados de los ochenta con C++, su enfoque a la simulacin lo hizo especial para el desarrollo de videojuegos, al mismo tiempo le permiti mejorar las interfaces grficas. Durante los 70's el equipo de investigacin de XEROX PARC acelero la implementacin de la POO bajo la tutela de Alan Kay.
Una frase popular de Alan Kay es: "La gente que ama el software quiere construir su propio hardware"
141
Captulo 3
Enemigos de la POO
La POO siempre ha sido motivo de controversia, uno de los casos mas populares se dio con un gran aportador a las ciencias computacionales: Edsger Wybe Dijkstra fue un cientfico de computacin holands, sus aportaciones a la informtica fueron conceptos de algoritmos como "El camino mas corto", "Algoritmo del banquero", la construccin de un semforo para coordinar varios dispositivos, computacin distribuida, etc. Un hecho curioso es que nunca estuvo de acuerdo en los conceptos y ventajas de la POO, su argumento era que un programa bien estructurado era suficiente y una mejor solucin a los problemas de diseo. Otro gran aporte de Dijkstra fue el libro "The Humble Programmer" donde hizo referencia a la "Crisis del software", dicho trmino fue un tema importante en la reunin de la OTAN en 1968, posteriormente le hizo acreedor al premio "Turing" en 1972. Crisis del software 1968 En este documento agrupo una serie de sucesos que se venan observando en proyectos de software y an en nuestros das siguen apareciendo. Los proyectos no terminaban en plazo. Los proyectos no se ajustaban al presupuesto inicial. Baja calidad del software generado. El software no cumpla las especificaciones. Cdigo difcil de mantener que dificulta la gestin y evolucin del proyecto. Algunas de sus frases favoritas: La simplicidad es un prerequisito para la confiabilidad Decir que una computadora puede pensar, es como decir que un submarino puede nadar Dijkstra fue un enemigo de la instruccin GO TO y el lenguaje BASIC, su frase favorita era ... Mutila la mente ms all de toda recuperacin". Edsger Dijkstra y Alan Kay fueron contemporneos, su relacin fue complicada precisamente por el tema de la POO, sus comentarios ms clebres fueron los siguientes...
"La programacin orientada a objetos es tan mala idea que solo pudo originarse en California. Edsger W. Dijkstra
142
An con sus opositores la POO ha demostrado adaptarse a los nuevos tiempos y proporcionar ms ventajas a los desarrolladores.
Captulo 3
Posteriormente aprendemos a programar en ensamblador o algn lenguaje como Turbo C, ahora declaramos variables fcilmente y los datos pueden ser de tipo Entero, Flotante, Carcter, String, etc. Sin embargo no dejan de ser estados lgicos almacenados en la memoria del sistema.
El siguiente paso fue los lenguajes orientados a eventos como VisualBasic (98), aunque ya era posible manejar algunos conceptos de objetos, la mayora segua con el mismo concepto de tipos de dato y el espacio que ocupaban en memoria.
Con C#.NET nuestro concepto de dato queda obsoleto, ahora TODO ES OBJETO, la vieja idea de un grupo de bits representando informacin debemos eliminarla, como objetos tienen mtodos muy ventajosos que nos ahorran tiempo y facilitan la implementacin. Por ejemplo, si declaramos un objeto entero como: Al escribirlo y poner un punto tenemos variedad de mtodos a elegir, en este caso .ToString nos permite convertir nuestro objeto en una cadena.
143
Captulo 6
350
Captulo 6
VS
Captulo 6
La delimitacin de objetivos
El primer paso es poner por escrito los objetivos de la solucin, es mucho mas complejo de lo que parece, primero debe extraer la esencia de la idea de su cliente, lgicamente quiere algo, solo que no puede explicarlo. Hace tiempo tuve una experiencia que me dej en claro el tema: Un cliente tena aos con una idea, con mucho trabajo reuni el presupuesto para llevarla a cabo, ya tena planeado a quien se lo iba a vender y hasta presumir, tambin estaba organizada la fiesta de presentacin del producto y hasta el slogan publicitario, solo faltaba un ligero detalle Qu iba a hacer exactamente el producto? lo ms preocupante es que no existan documentos con descripcin, cuando le preguntaba por una idea general escrita en una servilleta el cliente no poda! eran conceptos en el aire que ni siquiera el progenitor poda escribir y delimitar, aqu radica el problema del software innovador, es complejo fijar los objetivos.
Como tener xito con el software a la medida Debe aprender a programar mdulos reutilizables, no solo en software, tambin en hardware, la arquitectura de objetos va enfocada precisamente a eso. La mejor solucin Colegas, dediquen su conocimiento al diseo de productos propios, integren mdulos de hardware y software y podrn competir en innovacin, desarrollar en un solo lenguaje no basta, los productos o sistemas grandes llevan programacin a varios niveles, no es necesario ser un experto en cada lenguaje, con un conocimiento bsico y prctico es suficiente. Integracin de lenguajes Si va a crear productos es mejor conocer lo prctico de cada lenguaje que ser experto solo en uno, por ejemplo, si usted programa microcontroladores y desea agregar algoritmos para controlar displays grficos, impresoras, protocolos complejos, audio y guardar grandes cantidades de datos, va a pasar varias semanas complicando su vida, mientras tales tareas son muy sencillas con C#, por otro lado, labores de automatizacin como un control PID requiere componentes extra para una PC convencional, tal reto para un PLC es muy fcil, simplemente por que est diseado para eso y representa una mejor opcin. Existe un viejo refrn que dice: El que mucho abarca, poco aprieta, en programacin no es 100% cierto, quien entiende la lgica puede emigrar de un lenguaje a otro sin problema, lo nico que cambia es la sintaxis, el razonamiento es el mismo.
352
Captulo 6
Para facilitarles el diseo se les proporcionan los mismos grficos y un detalle de las reglas del juego, no se les entregan diagramas UML ni estndares de programacin, el comit no sabe nada de eso, simplemente quiere su juego. Llega el da que se entregan los requerimientos a los tres, el comit les dice: el primero en regresar con el juego gana la competencia. Pasan tres semanas y por coincidencia los tres entregan su juego el mismo da, los programadores nunca compartieron ideas, cada uno trabajo en su reto a su manera, cuando el comit de empresarios juega las tres versiones se da cuenta que cumplen con los requerimientos, como usan los mismos grficos lucen exactamente igual, sin embargo existe algo curioso con los tres cdigos Son completamente diferentes!, su cantidad de clases con propiedades y mtodos van de acuerdo al razonamiento personal de cada programador.
Horas despus el comit pide a cada programador que analice el cdigo de sus dos colegas, despus de leer cuidadosamente comienzan a intercambiar comentarios entres ellos, Por qu no lo hiciste as?, Esta interesante pero te ahorraras mas memoria de esta manera, De plano no entiendo esta parte. En resumen, se da un acalorado debate de ideas.
353
Captulo 6
Los tres programadores son contratados y se les asigna otro reto, van a implementar el proceso de control para 3 Minas de Oro. Como en el reto anterior se les asignan los mismos requerimientos de control y la responsabilidad de una Minera en diferentes lugares, quien implemente el proceso en menor tiempo gana el reto. Cada programador recibe sus PLC's necesarios y cuenta con toda la obra elctrica, civil, mecnica y de cableado implementados, solo tiene que preocuparse por la lgica de control en lenguaje ladder. Comienza el reto, pasan algunas semanas y por segunda ocasin los tres terminan el mismo da sin haberse comunicado entre ellos, el comit arranca los procesos y comprueba que estn bien implementados, pero Cmo luce el cdigo?
Para sorpresa todos los cdigos ladder son bastante similares, cada programador puede entender y modificar fcilmente el razonamiento del colega.
Qu pas?
Los procesos industriales son ms sencillos de entender y razonar. A diferencia de un videojuego o sistema complejo, el proceso se puede explicar sin documentacin o pizarrones, por lo regular solo es necesario un recorrido por la planta. La cantidad de dispositivos es finita, por lo tanto las variables y objetos, esto limita a que se creen datos innecesarios por programadores inexpertos. Las bases de datos son sencillas y con pocas relaciones, solo guardan muestreos y datos de operacin. El lenguaje Ladder tiene controles PID para lazo cerrado que facilitan el control y dan un solo camino para implementarlo. Las operaciones a nivel de bit son ms sencillas de razonar. Los procesos industriales varan poco con el tiempo, primero se realizan de forma manual y despus evolucionan. Los sistemas donde los procesos son humanos se prestan a tener cambios a medida que cambian las leyes de impuestos, mercantiles, burocrticas, etc. El mantenimiento de cdigo industrial es ms sencillo, los sensores y actuadores alimentan el sistema, se evitan fallas por captura de personas. Con esta ligera historia no quiero desmeritar la complejidad de la programacin industrial, slo dar nfasis a que generalmente son procesos mas sencillos de entender.
354
Captulo 6
Los fabricantes se preocupan por integrar este protocolo a sus productos, cada uno crea sus propias interfaces para compartir sus recursos, es una especie de driver similar al de impresoras que se comunican con Windows.
OPC es regulado por la fundacin (http://www.opcfoundation.org/), su objetivo es facilitar el uso de esta tecnologa y proporciona cdigo fuente para que diferentes fabricantes implementen sus servidores y clientes.
Objetivo de OPC
El estndar permite acceder el intercambio de datos entre servidores y aplicaciones.
Servidor OPC
PLC
PLC
Aplicaciones Cliente en C#
Aplicaciones Cliente en C#
Aplicaciones Cliente en C#
Aplicaciones Cliente en C#
359
Captulo 6
Ventajas de compatibilidad El xito de OPC se fundamenta en que los fabricante solo deben desarrollar el software cliente para sus productos, aparte no tienen que adaptar controladores ante cambios de hardware. Organizacin de lo datos La informacin se compone de varios elementos: El servidor: Acta como contenedor de todos los datos Grupo de objetos: Es el mecanismo para almacenar los elementos (tems). Elementos: Son las conexiones a cada fuente de dato (Tags).
Arquitectura Cliente-Servidor
Qu es un servidor? Un servidor es simplemente un programa que recibe peticiones y responde, por lo regular se simboliza con CPU grande, sin embargo es solamente una aplicacin, las maquinas pueden correr varios servidores de diversos tipos a la vez. Un servidor OPC se encarga de leer y actualizar todos los datos de una red de control, su labor es centralizar las operaciones y servir a las mquinas cliente que muestran el proceso en pantalla. Qu es un cliente? Un cliente es cualquier aplicacin que se conecta a un servidor, un ejemplo comn es un navegador como Firefox, su labor es pedir datos a servidores http, en el nuestro caso las aplicaciones en C# son clientes que se conectan a servidores OPC para obtener informacin.
360
Captulo 7
Prctica 43: Corrimiento de un bit en el puerto A imitando el efecto del Auto Increble.
Fuente: www.multitecnologia.com/practicas/practica43.rar Requerimientos: Se utiliza el circuito de la prctica 1. Importante: #byte puertoA = 0x05 nos facilita el manejo del puerto A Observe como es posible multiplicar, dividir y escribir en la salida del PIC directamente: puertoA=puertoA * 2; puertoA=puertoA / 2;
429
Captulo 7
Lo interesante de este ejemplo es la manera como se realiza la operacin, no estamos escribiendo valores fijos paso por paso, es una operacin aritmtica que va duplicando el valor cuando va en un sentido y dividindolo entre 2 cuando viene de regreso, observe el cdigo:
430
Captulo 7
11 32 31 12
16F887
No ocupa oscilador!
Leds
Resistencias 330 ohm
33 34 35 36 37 38 39 40
2 3 4 5 6 7 14 13 8 9 10 1
RA0/AN0/ULPWU/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RE0/AN5/RD RC2/P1A/CCP1 RE1/AN6/WR RC3/SCK/SCL RE2/AN7/CS RC4/SDI/SDA RE3/MCLR/Vpp/ RC5/SDO RC6/TX/CK RC7/RX/DT
19 20 21 22 27 28 29 30 15 16 17 18 23 24 25 26
431
Captulo 7
Al variar el potencimetro de 10 k ohm puede comprobar como se refleja el valor digital en el puerto A, la resolucin es de 8 bits.
IMPORTANTE
Los siguientes ejercicios utilizan libreras protegidas por derechos de autor del fabricante (http://www.ccsinfo.com/), para avanzar requiere comprar la licencia del software con las libreras: LCD.C, STDIO.H, STRING.H, INPUT.C.
Captulo 8
Button Name: btnMandaByte Enabled: False CheckBox Name: chkPuertoSerie Text: Abrir Puerto Serie BackColor: Red SerialPort Name: serialPort
El puerto serial debe estar con la misma configuracin del PIC: #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
Formulario Name: frmEnvioSerial Text: Envo de byte por puerto seria NumericUpDown Name: numStepByte Minimum: 0 Maximum: 255
namespace EnvioDatosSerial { public partial class frnEnvioSerial : Form { public frnEnvioSerial() { InitializeComponent(); }
488
Captulo 8
private void chkPuertoSerie_CheckedChanged(object sender, EventArgs e) { if (chkPuertoSerie.Checked) { try { if (!serialPort.IsOpen) //si el puerto esta cerrado { serialPort.Open(); } btnMandaByte.Enabled = true; chkPuertoSerie.Text = "Puerto Abierto"; chkPuertoSerie.BackColor = Color.YellowGreen; } catch { MessageBox.Show("Algo anda mal con el puerto COM"); chkPuertoSerie.Checked = false; } } else { try { if (serialPort.IsOpen) { serialPort.Close(); chkPuertoSerie.BackColor = Color.Red; chkPuertoSerie.Text = "Puerto Cerrado"; btnMandaByte.Enabled = false; } } catch { MessageBox.Show("Algo anda mal no pude cerrar el COM"); } } } private void btnMandaByte_Click(object sender, EventArgs e) { // ahora enva el numero entre 0 y 255 del numStepByte acompaado de un Enter serialPort.Write(numStepByte.Value.ToString() + (char)13); } } }
Al ejecutar ambos programas puede mandar los datos desde el numericStepper al PIC, el dato se refleja en el display LCD.
489
Captulo 8
En los ejemplos anteriores establecimos envo y recepcin serial por separado, en el siguiente ejercicio creamos la comunicacin bidireccional por medio de mensajes entre C# y el PIC.
Mandame el REO
serialPort.Write("RE0" + (char)13);
C#
El PIC esta siempre esperando cualquiera de los tres mensajes para responder.
PIC
Cada mensaje que manda el PIC tiene un identificadorl con la cadena Fin, esto permite hacer mas eficiente la lectura en C# y conocer el final de la trama de datos.
490
Captulo 8
OE
14 15 16 17 18 19 20 21 22 23 24 25
2 3 4 5 6 7 8 9 10 11 12 13
1 2 3 4 5 6 7 8 9 10
20 19 18 17 16 15 14 13 12 11
OE
Leds
74LS541
Importante El Bit S7 esta negado internamente, el dato que ingresemos ser invertido al entrar al registro.
+
5 Volts Resistencias 1 kohm
Fuente
Microswitch
503
Captulo 8
IMPORTANTE Trabajar con fuentes externas de voltaje y perifricos de la PC presenta un riesgo de quemar componentes de la tarjeta madre, se debe poner en comn la tierra de la PC con la fuente externa y tener mucho cuidado en que no entre voltaje por ese punto a la computadora, esto provocara un dao irreparable.
Recuerde respetar los colores del protoboard: Lnea azul: Tierra Lnea roja: Voltaje
Buffer
Tierra
D7 D0
504
Captulo 8
El puerto paralelo requiere una librera para funcionar: inpout32.dll, si no la tiene en la carpeta C:\Windows\System32\inpout32.dll debe descargarla desde internet. Posiblemente ocupe registrarla, escriba lo siguiente en la ventana de ejecutar: REGSVR32 c:\windows\system32\inpout32.dll
Con nuestra interfaz electrnica lista nos vamos a VisualStudio y creamos un nuevo proyecto de WindowsForms. Ahora arrastramos los siguientes controles:
Formulario Name: frmPuertoParalelo Label Name: lblLecturaPuerto Text: Lectura: Button Name: btnLeerPuerto HSCrollBar Name: SBDato Minimum:0, Maximum: 255 Label Name: lblDatos Text: Escritura:
Captulo 8
private void SBDato_Scroll(object sender, ScrollEventArgs e) { //escribimos un dato de 8 bits (0-255) en el registro de datos //observe que el valor se manda en decimal (int) //el valor 888 es la direccin del registro de datos PortAccess.Output(888, SBDato.Value); lblDatos.Text = "Escritura: " + SBDato.Value.ToString(); } private void btnLeerPuerto_Click(object sender, EventArgs e) { //leemos el registro de status con los bits S4, S5, S6, S7 del diagrama, //el bit S3 se encuentra forzado a tierra sin el microswitch. //los bits S0,S1,S2 no estan disponibles y por lo regular su valor es 0 //el valor 889 es la direccin del registro de Status lblLecturaPuerto.Text = "Lectura: " + PortAccess.Input(889).ToString(); } } }
Antes de conectar el protoboard a la PC probamos las entradas del buffer, observe que por defecto sus salidas estn activadas, por lo tanto esta esperando una tierra en su entrada para apagar el led, tomamos cualquier cable largo y lo conectamos a tierra, el otro extremo lo posicionamos en cada entrada del buffer para comprobar como se apaga cada led. Una vez probado el protoboard verifique que no existan cables sueltos que puedan provocar cortos, use su multmetro para probar continuidad entre el cable DB25 y las entradas del buffer.
Antes de prender la fuente que alimenta el protoboard observe el monitor de la PC, si nota un parpadeo al encenderla apague rpidamente la fuente o desconecte el cable, esto puede salvar su tarjeta madre, si no hay cambio todo esta bien conectado, en caso de apagarse el monitor su tarjeta acaba de pasar al otro mundo.
Cuando conectamos mal el puerto y la tarjeta se daa se debe a un corto circuito interno, en estos casos se queman integrados bsicos que pueden ser mas caros de reparar que comprar una tarjeta nueva, tenga
506
Captulo 8
En caso de no existir error usted puede ver el valor del scrollbar representado por los leds.
Observe como el dato se actualiza de forma instantnea en los leds, la razn es por utilizar el evento scroll.
Para leer diferentes datos movemos los interruptores del microswitch y damos click en el btnLeerPuerto para actualizar.
507
Captulo 8
En la imagen podemos ver el circuito con 1 de los optoacopladores, para armarlo completo debe agregar 4 extra.
12 Volts
El optoacoplador es una solucin sencilla para elevar el voltaje de nuestras luces, tambin puede conectar motores cuidando que las tierras se encuentren separadas.
529
Captulo 8
Vamos a simular el ejemplo anterior en nuestro programa: Tenemos un proceso que se divide en 5 personas y 5 semforos, entre todos se reparten el 100% el tiempo que dura en crearse el producto (120 segundos). Grficamente las etapas del proceso lucen de esta forma:
16%
34%
22%
19% 9%
En este bloque de tiempos ajustamos el programa para que al 0% encienda el verde: Al terminar el verde inicia el color oro (16%), los tres siguientes colores es la suma de cada porcentaje, al final la luz roja enciende al 91% para que solo dure encendida el 9% acordado.
530
Captulo 8
Cada vez que cambie el color del proceso se activa un bit del puerto paralelo, usted debe conectar un optoacoplador como lo indica el diagrama. Utilizando barras de leds de 12 volts puede crear semforos grandes que realmente le sirvan en su proceso. Registro de datos:00000001
4N29
12 Volts
En el 50% enciende el amarillo y la barra de progreso debe estar a la mitad. Registro de datos:00000100
531
C#
Por aos la plataforma Windows ha sido la base para sistemas de monitoreo industrial, en este libro le mostramos como puede crear proyectos de control personalizados con las ventajas de C#.NET.
Si usted cumple con alguno de estos requisitos el curso le resultar til.
ISBN: 978-607-00-5217-0
Visual Studio, C# y .NET Framework son marcas registradas propiedad de Microsoft Corporation. Inc.
Descargas de ejemplos y utileras: www.multitecnologia.com