unidad profesional “adolfo lópez mateos” “control a

97
INSTITUTO POLITÉCNICO NACIONAL Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Profesional “Adolfo López Mateos” “Control a distancia en lazo abierto de un motor de C. A. vía el protocolo TCP/IP” Tesis Que para obtener el titulo de Ingeniero en Control y Automatización Presentan: Guerrero Gudiño Jesús Orozco reyes Jorge Manuel Mora Mendoza Iván México D. F. 2008

Upload: others

Post on 21-Jul-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Unidad Profesional “Adolfo López Mateos” “Control a

INSTITUTO POLITÉCNICO NACIONAL

Escuela Superior de Ingeniería Mecánica y Eléctrica

Unidad Profesional “Adolfo López Mateos”

“Control a distancia en lazo abierto de un motor de C. A. vía elprotocolo TCP/IP”

Tesis

Que para obtener el titulo de Ingeniero en Control y Automatización

Presentan:

Guerrero Gudiño JesúsOrozco reyes Jorge Manuel

Mora Mendoza Iván

México D. F. 2008

Page 2: Unidad Profesional “Adolfo López Mateos” “Control a
Page 3: Unidad Profesional “Adolfo López Mateos” “Control a

ÍNDICE

1

ÍNDICE

Introducción. 4

Prologo 6

Objetivos 7

Unidad 1. Protocolo De Comunicación TCP/IP.

1.1. Historia. 8

1.2. Qué Es Y Cual Es La Arquitectura De TCP/IP. 8

1.3. Modelo OSI 9

1.3.1 Las Capas Del Modelo OSI 9

1.4 Protocolos TCP/IP 10

1.5. Características De TCP/IP. 10

1.6. Cómo Funciona TCP/IP. 11

1.6.1. IP: 11

1.6.2. La Dirección De Internet. 16

1.6.3. TCP. 18

1.6.3.1. Establecimiento De La Conexión (Negociación En Tres Pasos). 18

1.6.3.2. Transferencia De Datos. 19

1.6.3.3. Tamaño De Ventana TCP. 20

1.6.3.4. Escalado De Ventana. 20

1.6.3.5. Fin De La Conexión. 21

1.6.3.6. Puertos TCP. 21

1.7. En Que Se Utiliza TCP/IP. 22

1.8. Similitudes Y Diferencias Entre La Clase 4 Del Modelo OSI Y TCP. 22

1.9. La Nueva Versión De IP (IPNG). 25

1.9.1. Formato De La Cabecera. 25

1.9.2. Direcciones En La Versión 6. 26

Unidad 2. Generalidades del Motor de Corriente Alterna.

2.1. Introducción. 28

2.2. Magnetismo. 28

2.3. Propulsión magnética del motor. 30

2.4. Corriente Alterna (C. A.). 31

2.5. Operación básica del motor de C. A. 32

2.6. Comparación de las características de los motores de C. A. y C. D. 372.6.1. Construcción 37

2.6.2. Terminología 38

Page 4: Unidad Profesional “Adolfo López Mateos” “Control a

ÍNDICE

2

Unidad 3. Programación Básica Aplicada A Microcontroladores

3.1. Introducción 40

3.2. Directivas del preprocesador 40

3.2.1. Control de memoria 40

3.2.2. Identificadores predefinidos 41

3.2.3. Directivas del C estándar 41

3.2.4. Especificación de dispositivos 42

3.2.5. Calificadores de función 43

3.2.6. Librerías incorporadas 45

3.3. Funciones permitidas por el compilador de C 45

3.3.1. Funciones de I/O discreta 56

3.3.2. Funciones de retardos 48

3.3.3. Funciones de control del procesador 49

3.3.4. Contadores / temporizadores 49

3.3.5. Funciones de manejo de cadenas 51

3.3.6. Funciones de entrada A/D 53

3.3.7. Funciones para la manipulación de bits 54

3.4. Definición de datos 55

3.5. Definición de función 57

3.6. Funciones: parámetros por referencia 58

3.7. Edición de un programa en C 58

3.8. Estructura de un programa en C 59

Unidad 4. Programación Del Protocolo TCP/IP

4.1. Interfaz de usuario 60

4.2. HTML 60

4.2.1. Historia del estándar 61

4.2.2. Códigos HTML básicos 61

4.3. Desarrollo de la página Web 62

4.3.1 Página con datos personales utilizando link 65

4.4. Stack de TCP/IP 71

Unidad 5. Pruebas de Hardware

5.1. Diseño E Implementación De Un Arrancador Suave De MotoresDe Baja Potencia De C. A. Monofásicos Con Un Mínimo De Electrónica

81

5.1.1. Introducción 81

Page 5: Unidad Profesional “Adolfo López Mateos” “Control a

ÍNDICE

3

5.2. Funcionamiento del Arrancado 81

5.2.1 Detección de cruce por cero 82

5.3. La etapa de control (microcontrolador) 84

5.4. Optotriac y red Snubber 86

5.4.1. Margen de regulación 87

Análisis de Costos - Beneficios 89

Conclusiones 92

Anexo. Hojas de datos y especificaciones 93

Glosario 125

Bibliografía 127

Page 6: Unidad Profesional “Adolfo López Mateos” “Control a

INTRODUCCIÓN

4

Introducción

Debido a las aplicaciones cada vez más frecuentes de la llamada electrónica de potencia, en lossistemas eléctricos de potencia ha habido una transformación importante en los últimos 25 añosde los procesos productivos, En esencia, se trata de aprovechar las ventajas que en materia deregulación y control ofrecen los dispositivos electrónicos.

Dentro de las aplicaciones más comunes se encuentran las de los Sistemas Eléctricos de Potenciaen la Transmisión de Energía y en el Control de Máquinas Eléctricas.

En la industria actual es difícil aislar la tecnología de la electrónica de potencia de las máquinaseléctricas y esto requiere necesariamente de un conocimiento completo de algunos dispositivoscomo son los diodos, transistores, tiristores y el dispositivo básico de nuestro trabajo, elMicrocontrolador.

Antes de los accionamientos de C. A., existía el concepto de control de movimiento, que se dabaen la forma de arranque y paro de las máquinas, usando vapor y medios neumáticos, así comomedios hidráulicos.

Aún en la actualidad, hay un número importante de elementos de control no electrónicos quepermaneces en las máquinas instaladas en diferentes procesos industriales. El control delmovimiento puede ser tan simple como abrir o cerrar una válvula o tan complejo comoprogramar un robot para desarrollar varios movimientos simultáneamente.

Existen muchos métodos y disciplinas usadas para el control del movimiento, sin embargo, laaparición de los accionadotes electrónicos han cambiado el concepto sensiblemente y lo hanacercado más con la automatización, que puede incluir aspectos mecánicos, eléctricos o decomputación.

En el inicio, cuando las primeras máquinas fueron accionadas por motores eléctricos, éstosactuaban como primo motores, siendo motores de C. A., de velocidad constante, más adelantefue necesario controlar la velocidad y se encontraron ventajas en algunos motores de C. D., yaque los motores de C. A., como ya se dijo, operan a velocidad constante.

El objetivo principal de este trabajo se centra en la aplicación y programación del protocoloTCP/IP (Transfer Control Portocol & Internet Protocol), en el control y supervisión del arranquede un motor de C. A.

Con esto se busca dar un paso más en la aplicación de la electrónica de potencia, al unir lastecnologías de la comunicación con la manipulación y supervisión de procesos industriales.

Page 7: Unidad Profesional “Adolfo López Mateos” “Control a

PROLOGO

6

PROLOGO

Este trabajo responde a la necesidad de controlar y monitorear una planta desde cualquier parte del mundo.

Para demostrar que esto es posible, se toma como ejemplo el control del arranque de un motor de C.A. Se hace énfasis en que la parte central de este trabajo es el control y monitoreo no crítico de unaplanta a través del protocolo TCP/IP y que el control del motor sirve como ejemplo de la viabilidadde esta tecnología.

El Protocolo TCP/IP es llamado protocolo de protocolos, ya que, dentro de éste se albergan másprotocolos que serán desarrollados o explicados durante el avance de este trabajo. Debemos decirque en la actualidad este protocolo está presente en la mayoría de las redes, siendo la más extensa yconocida el INTERNET. Esta es una de las aplicaciones de mayor difusión a lo largo y ancho delmundo, de ahí la necesidad de utilizar y aprender a programar en base a este protocolo.

A diferencia de las PCs, en el microcontrolador, dispositivo electrónico encargado de lacomunicación y control de la planta (en este caso el motor de C. A.), el espacio en memoria esreducido, por lo que se implementó una versión compacta del protocolo (comúnmente llamadaTCP/IP embebido) por medio del compilador PIC Compiler de la compañía CCS Inc.

Page 8: Unidad Profesional “Adolfo López Mateos” “Control a

OBJETIVOS

7

Objetivo:

Desarrollar el control a distancia de un motor de C. A. en lazo abierto a través de Internet vía elprotocolo TCP/IP.

Objetivos particulares:

Desarrollar la etapa de potencia que permita el control del motor de C. A. Acoplar la etapa de control y de potencia para realizar el control a distancia del motor de C.

A. Desarrollar la etapa de comunicación vía TCP/IP para controlar y comunicarse con la planta

que se desee.

Page 9: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

8

UNIDAD IPROTOCOLO DE COMUNICACIÓN TCP/IP

1.1 Historia

El Protocolo de Internet (IP) y el Protocolo de Transmisión (TCP), fueron desarrollados inicialmenteen 1973 por el informático estadounidense Vinton Cerf como parte de un proyecto dirigido por elingeniero norteamericano Robert Kahn y patrocinado por la Agencia de Programas Avanzados deInvestigación (ARPA, siglas en inglés) del Departamento Estadounidense de Defensa. Internetcomenzó siendo una red informática de ARPA (llamada ARPAnet) que conectaba redes decomputadoras de varias universidades y laboratorios en investigación en Estados Unidos. WorldWide Web se desarrolló en 1989 por el informático británico Timothy Berners-Lee para el ConsejoEuropeo de Investigación Nuclear (CERN, por sus siglas en francés).

1.2 Qué Es Y Cual Es La Arquitectura De TCP/IP

TCP/IP es el protocolo más comúnmente utilizado por todas las computadoras conectadas a Internet,de manera que estas puedan comunicarse entre sí. Hay que tener en cuenta que en Internet seencuentran conectadas computadoras de clases muy diferentes y con hardware y softwareincompatibles en muchos casos, además de todos los medios y formas posibles de conexión. Aquí seencuentra una de las grandes ventajas del TCP/IP, pues este protocolo se encargará de que lacomunicación entre todos sea posible. TCP/IP es compatible con cualquier sistema operativo y concualquier tipo de hardware.

TCP/IP no es un único protocolo, sino que es en realidad un conjunto de protocolos que cubren losdistintos niveles del modelo OSI. Los dos protocolos más importantes son el TCP (TransmissionControl Protocol) y el IP (Internet Protocol), que son los que dan nombre al conjunto. Laarquitectura del TCP/IP consta de cinco niveles o capas en las que se agrupan los protocolos, y quese relacionan con los niveles OSI de la siguiente manera:

Aplicación: Se corresponde con los niveles OSI de aplicación, presentación y sesión. Aquíse incluyen protocolos destinados a proporcionar servicios, tales como correo electrónico(SMTP), transferencia de ficheros (FTP), conexión remota (TELNET) y otros más recientescomo el protocolo HTTP (Hypertext Transfer Protocol).

Transporte: Coincide con el nivel de transporte del modelo OSI. Los protocolos de estenivel, tales como TCP y UDP, se encargan de manejar los datos y proporcionar la fiabilidadnecesaria en el transporte de los mismos.

Internet: Es el nivel de red del modelo OSI. Incluye al protocolo IP, que se encarga deenviar los paquetes de información a sus destinos correspondientes. Es utilizado con estafinalidad por los protocolos del nivel de transporte.

Físico: Análogo al nivel físico del OSI. Red: Es la interfaz de la red real. TCP/IP no especifica ningún protocolo concreto, así es que

corre por las interfaces conocidas, como por ejemplo: 802.2, CSMA/CD, X.25, etc.

Page 10: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

9

NIVEL DE APLICACIÓN

NIVEL DE TRANSPORTE

NIVEL DE INTERNET

NIVEL DE RED

NIVEL FÍSICO

Figura 1.1.- Arquitectura TCP/IP

El TCP/IP necesita funcionar sobre algún tipo de red o de medio físico que proporcione sus propiosprotocolos para el nivel de enlace de Internet. Por este motivo hay que tener en cuenta que losprotocolos utilizados en este nivel pueden ser muy diversos y no forman parte del conjunto TCP/IP.Sin embargo, esto no debe ser problemático puesto que una de las funciones y ventajas principalesdel TCP/IP es proporcionar una abstracción del medio de forma que sea posible el intercambio deinformación entre medios diferentes y tecnologías que inicialmente son incompatibles.

Para transmitir información a través de TCP/IP, ésta debe ser dividida en unidades de menortamaño. Esto proporciona grandes ventajas en el manejo de los datos que se transfieren y, por otrolado, esto es algo común en cualquier protocolo de comunicaciones. En TCP/IP cada una de estasunidades de información recibe el nombre de "datagrama" (datagram), y son conjuntos de datos quese envían como mensajes independientes.

1.3 Modelo OSI

La Organización Internacional de Estandarización creo el modelo OSI y se dio a conocer en 1984con el propósito de proveer un modelo de red para vendedores cuyos productos pueden interactuaren las redes. Este modelo provee una herramienta jerárquica para el entendimiento de tecnología dered, tanto para la base ya instalada como para el futuro de la red.

¿Por qué un modelo red de capas?

Reduce la complejidad Estandariza interfases Facilita la ingeniería modular Simplifica el enseñar y aprender Acelera la evolución Asegura que la tecnología interactúe

1.3.1 Las Capas Del Modelo OSI

Capa 7 (Aplicación). Provee servicio directo de aplicación. Las aplicaciones pueden variar, peroincluye mensajes electrónicos, por ejemplo un procesador de textos.

Capa 6 (Presentación). Provee representación de datos y formato código con el propósito deproveer una interfase común para las aplicaciones. Esta puede incluir servicios de encriptación.

Page 11: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

10

Capa 5 (Sesión). Esta establece, mantiene y maneja las sesiones de aplicaciones.

Capa 4 (Transporte). Esta segmenta y reensambla datos en un paquete de datos. Incluye full o halfduplex, flujo de control y servicios de recuperación de error.

Capa 3 (Red). Determina el mejor camino que pueden tomar los datos desde un lugar a otro a travésde una red de Internet. Establece la conexión entre dos nodos a través de direccionamiento.

Capa 2 (Enlace de datos). Provee transmisión física a través del medio. Esta maneja notificación deerror, topología de error y flujo de control.

Capa 1 (Física). Provee los estándares o normas eléctricas, mecánicas para activar y mantener elenlace físico entre sistemas.

1.4 Protocolos TCP/IP

FTP, SMTP, TELNET SNMP, X-WINDOWS,RPC, NFS

TCP UDP

IP, ICMP, 802.2, X.25

ETHERNET, IEEE 802.2, X.25

FTP (File Transfer Protocol). Se utiliza para transferencia de archivos. SMTP (Simple Mail Transfer Protocol). Es una aplicación para el correo electrónico. TELNET: Permite la conexión a una aplicación remota desde un proceso o terminal. RPC (Remote Procedure Call). Permite llamadas a procedimientos situados remotamente.

Se utilizan las llamadas a RPC como si fuesen procedimientos locales. SNMP (Simple Network Management Protocol). Se trata de una aplicación para el

control de la red. NFS (Network File System). Permite la utilización de archivos distribuidos por los

programas de la red. X-Windows. Es un protocolo para el manejo de ventanas e interfaces de usuario. UDP: es un protocolo del nivel de transporte basado en el intercambio de datagramas.

1.5 Características De TCP/IP

Ya que dentro de un sistema TCP/IP los datos transmitidos se dividen en pequeños paquetes, éstosresaltan una serie de características.

La tarea de IP es llevar los datos a granel (los paquetes) de un sitio a otro. Las computadorasque encuentran las vías para llevar los datos de una red a otra (denominadas enrutadores)utilizan IP para trasladar los datos. En resumen IP mueve los paquetes de datos a granel,mientras TCP se encarga del flujo y asegura que los datos estén correctos.

Page 12: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

11

Las líneas de comunicación se pueden compartir entre varios usuarios. Cualquier tipo depaquete puede transmitirse al mismo tiempo, y se ordenará y combinará cuando llegue a sudestino. Compare esto con la manera en que se transmite una conversación telefónica. Unavez que establece una conexión, se reservan algunos circuitos para usted, que no puedeemplear en otra llamada, aun si deja esperando a su interlocutor por veinte minutos.

Los datos no tienen que enviarse directamente entre dos computadoras. Cada paquete pasa decomputadora en computadora hasta llegar a su destino. Éste, claro está, es el secreto de cómose pueden enviar datos y mensajes entre dos computadoras aunque no estén conectadasdirectamente entre sí. Lo que realmente sorprende es que sólo se necesitan algunos segundospara enviar un archivo de buen tamaño de una máquina a otra, aunque estén separadas pormiles de kilómetros y pese a que los datos tienen que pasar por múltiples computadoras. Unade las razones de la rapidez es que, cuando algo anda mal, sólo es necesario volver atransmitir un paquete, no todo el mensaje.

Los paquetes no necesitan seguir la misma trayectoria. La red puede llevar cada paquete deun lugar a otro y usar la conexión más idónea que esté disponible en ese instante. No todoslos paquetes de los mensajes tienen que viajar, necesariamente, por la misma ruta, ninecesariamente tienen que llegar todos al mismo tiempo.

La flexibilidad del sistema lo hace muy confiable. Si un enlace se pierde, el sistema usa otro.Cuando usted envía un mensaje, el TCP divide los datos en paquetes, ordena éstos ensecuencia, agrega cierta información para control de errores y después los lanza hacia fuera,y los distribuye. En el otro extremo, el TCP recibe los paquetes, verifica si hay errores y losvuelve a combinar para convertirlos en los datos originales. De haber error en algún punto, elprograma TCP destino envía un mensaje solicitando que se vuelvan a enviar determinadospaquetes.

1.6 Cómo Funciona TCP/IP

1.6.1 IP:

IP, a diferencia del protocolo X.25, que está orientado a conexión, es sin conexión. Está basado en laidea de los datagramas interred, los cuales son transportados transparentemente, pero no siempre conseguridad, desde el hostal fuente hasta el hostal destinatario, quizás recorriendo varias redesmientras viaja.

El protocolo IP trabaja de la siguiente manera: la capa de transporte toma los mensajes y los divideen datagramas, de hasta 64K octetos cada uno. Cada datagrama se transmite a través de la redinterred, posiblemente fragmentándose en unidades más pequeñas, durante su recorrido normal. Alfinal, cuando todas las piezas llegan a la máquina destinataria, la capa de transporte los reensamblapara así reconstruir el mensaje original.

Un datagrama IP consta de una parte de cabecera y una parte de texto. La cabecera tiene una partefija de 20 octetos y una parte opcional de longitud variable. La siguiente tabla muestra el formato delas cabeceras IP y a continuación, una breve descripción de cada campo:

Page 13: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

12

0-3 4-7 8-15 16-18 19-31

Versión Tamaño Cabecera Tipo de Servicio Longitud Total

Identificador IndicadoresPosición deFragmento

Tiempo de Vida Protocolo Checksum Cabecera

Dirección IP de Origen

Dirección IP de Destino

Opciones RellenoFigura 1.2.- Formato de la Cabecera IP (Versión 4)

Versión: 4 bits. (0100) → Siempre vale lo mismo

Este campo describe el formato de la cabecera utilizada. En la tabla se describe la versión 4.

Tamaño Cabecera (IHL): 4 bits.

Longitud de la cabecera, en palabras de 32 bits. Su valor mínimo es de 5 para una cabecera correcta,y el máximo de 15.

Tipo de Servicio: 8 bits.

Indica una serie de parámetros sobre la calidad de servicio deseada durante el tránsito por una red.Algunas redes ofrecen prioridades de servicios, considerando determinado tipo de paquetes "másimportantes" que otros (en particular estas redes solo admiten los paquetes con prioridad alta enmomentos de sobrecarga). Estos 8 bits se agrupan como se muestra a continuación. Los 5 bits demenos peso son independientes e indican características del servicio:

Bit 0: sin uso, debe permanecer en 0. Bit 1: 1 costo mínimo, 0 costo normal. Bit 2: 1 máxima fiabilidad, 0 fiabilidad normal. Bit 3: 1 máximo rendimiento, 0 rendimiento normal. Bit 4: 1 mínima demora, 0 demora normal.

Los 3 bits restantes están relacionados con la precedencia de los mensajes, un indicador ajunto queindica el nivel de urgencia basado en el sistema militar de precedencia de la CCEB, unaorganización de comunicaciones electrónicas militares formada por 5 naciones. La urgencia queestos estados representan aumenta a medida que el número formado por estos 3 bits lo hace, yresponden a los siguientes nombres.

000: De rutina. 001: Inmediato. 010: Inmediato. 011: Relámpago. 100: Invalidación relámpago. 101: Procesando llamada crítica y de emergencia.

Page 14: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

13

110: Control de trabajo de Internet. 111: Control de red.

Longitud Total: 16 bits.

Es el tamaño total, en octetos, del datagrama, incluyendo el tamaño de la cabecera y el de los datos.El tamaño máximo de los datagramas usados normalmente es de 576 octetos (64 de cabeceras y 512de datos). Una máquina no debería enviar datagramas mayores a no ser que tenga la certeza de quevan a ser aceptados por la máquina destino.

En caso de fragmentación este campo contendrá el tamaño del fragmento, no el del datagramaoriginal.

Identificador: 16 bits.

Identificador único del datagrama. Se utilizará, en caso de que el datagrama deba ser fragmentado,para poder distinguir los fragmentos de un datagrama de los de otro. El originador del datagramadebe asegurar un valor único para la pareja origen-destino y el tipo de protocolo durante el tiempoque el datagrama pueda estar activo en la red.

Indicadores: 3 bits.

Actualmente utilizado sólo para especificar valores relativos a la fragmentación de paquetes:

bit 0: Reservado; debe ser 0 bit 1: 0 = Divisible, 1 = No Divisible bit 2: 0 = Último Fragmento, 1 = Fragmento Intermedio (le siguen más fragmentos)

La indicación de que un paquete es indivisible debe ser tenida en cuenta bajo cualquiercircunstancia. Si el paquete necesitara ser fragmentado, no se enviará.

Posición de Fragmento: 13 bits.

En paquetes fragmentados indica la posición, en unidades de 64 bits, que ocupa el paquete actualdentro del datagrama original. El primer paquete de una serie de fragmentos contendrá en estecampo el valor 0.

Tiempo de Vida (TTL): 8 bits.

Indica el máximo número de direccionadores que un paquete puede atravesar. Cada vez que algúnnodo procesa este paquete disminuye su valor en, como mínimo, un direccionador. Cuando llegue aser 0, el paquete no será reenviado.

Protocolo: 8 bits.

El número utilizado en este campo sirve para indicar a qué protocolo pertenece el datagrama que seencuentra a continuación de la cabecera IP, de manera que pueda ser tratado correctamente cuandollegue a su destino.

Page 15: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

14

Checksum Cabecera: 16 bits.

Checksum de la cabecera. Se recalcula cada vez que algún nodo cambia alguno de sus campos (porejemplo, el Tiempo de Vida). El método de cálculo (intencionadamente simple) consiste en sumar elcomplemento a 1 de cada palabra de 16 bits de la cabecera y hacer el complemento a 1 del valorresultante.

Dirección IP de Origen: 32 bits.

Contiene la dirección del host que envía el paquete.

Dirección IP de Destino: 32 bits

Esta dirección es la del host que recibirá la información. Los routers o gateways intermedios debenconocerla para dirigir correctamente el paquete.

Opciones: Variable.

Aunque no es obligatoria la utilización de este campo, cualquier nodo debe ser capaz deinterpretarlo.

Puede contener un número indeterminado de opciones, que tendrán dos posibles formatos:

1. Simple: Un sólo octeto indicando el "Tipo de Opción":

El Tipo de Opción está dividido en 3 campos:

a) Indicador de Copia: 1 bit. En caso de fragmentación, la Opción se copiará o no a cadanuevo fragmento según el valor de este campo:

0 = no se copia,1 = se copia.

b) Clase de Opción: 2 bits. Las posibles clases son:

0 = control,1 = reservada,2 = depuración y mediciones,3 = reservada.

c) Número de Opción: 5 bits. Identificador de la Opción.

2. Compuesto: Un octeto para "Tipo de Opción", otro para "Tamaño de Opción", y uno o másoctetos conformando los "Datos de Opción".

El Tamaño de Opción incluye el octeto de Tipo de Opción, el de Tamaño de Opción y la suma delos octetos de datos.

Page 16: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

15

La siguiente tabla muestra las opciones actualmente definidas:

Clase Número Tamaño Descripción

0 0 - Final de lista de opciones. Formato simple.

0 1 - Ninguna operación (NOP). Formato simple.

0 2 11 Seguridad.

0 3 variable Enrutado desde el Origen, abierto (Loose Source Routing).

0 9 variable Enrutado desde el Origen, estricto (Strict Source Routing).

0 7 variable Registro de Ruta (Record Route).

0 8 4 Identificador de flujo (Stream ID).

2 4 variable Marca de tiempo (Internet Timestamping).

Final de Lista de Opciones: Se usa al final de la lista de opciones, si ésta no coincide con el final dela cabecera IP.

Ninguna Operación (NOP): Se puede usar para forzar la alineación de las opciones en palabras de 32bits.

Seguridad: Especifica niveles de seguridad que van desde "No Clasificado" hasta "MáximoSecreto", definidos por la Agencia de Seguridad de la Defensa (de EE.UU.).

Enrutado desde el Origen (abierto) y Registro de Ruta (LSSR): Esta opción provee el mecanismopara que el originador de un datagrama pueda indicar el itinerario que ha de seguir a través de la redy para registrar el camino seguido.

Los Datos de Opción consisten en un puntero (un octeto) y una lista de direcciones IP (4 octetoscada una) que se han de alcanzar ("procesar"):

El puntero indica la posición de la siguiente dirección de la ruta, dentro de la Opción; así, su valormínimo es de 4.

Cuando un nodo de Internet procesa la dirección de la lista apuntada por el puntero (es decir, sealcanza esa dirección) incrementa el puntero en 4, y redirige el paquete a la siguiente dirección. Si elpuntero llega a ser mayor que el Tamaño de Opción significa que la información de ruta se haprocesado y registrado completamente y se redirigirá el paquete a su dirección de destino.

Si se alcanza la dirección de destino antes de haber procesado la lista de direcciones completa (elpuntero es menor que el Tamaño de Opción) la siguiente dirección de la lista reemplaza a ladirección de destino del paquete y es a su vez reemplazada por la dirección del nodo que estáprocesando el datagrama ("Ruta Registrada"), incrementando, además, el puntero en 4.

Utilizando este método de sustituir la dirección especificada en origen por la Ruta Registrada seasegura que el tamaño de la Opción (y de la cabecera IP) no varía durante su recorrido por la red.

Page 17: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

16

Se considera que la ruta especificada por el originador es "abierta" porque cualquier nodo queprocesa el paquete es libre de dirigirlo a la siguiente dirección siguiendo cualquier otra rutaintermedia.

Sólo puede usarse una vez en un datagrama, y, en caso de fragmentación, la opción se copiará a lospaquetes resultantes.

Enrutado desde el Origen (estricto) y Registro de Ruta (SSRR): Exactamente igual que LSSR,excepto en el tratamiento que los nodos harán de este datagrama. Al ser la ruta especificada"estricta", un nodo debe reenviar el paquete directamente a la siguiente dirección, es decir, no podráredireccionarlo por otra red.

Registro de Ruta: Mediante el uso de esta Opción se puede registrar el itinerario de un datagrama.Los Datos de Opción consisten en un puntero (un octeto) y un espacio relleno de ceros quecontendrá la Ruta Registrada para el paquete.

Cuando un nodo recibe un paquete en el que está presente esta opción, escribirá su dirección IP en laposición indicada por el puntero, siempre que ésta sea menor que el Tamaño de Opción, eincrementará el puntero en 4.

Es preciso que el espacio reservado para la Ruta Registrada tenga una longitud múltiplo de 4; si alintentar grabar su dirección un nodo detecta que existe espacio libre pero es menor de 4 octetos, elpaquete no se reenvía (se pierde) y se notifica el error, mediante ICMP, al originador del datagrama.

Esta Opción no se copia en caso de fragmentación, y sólo puede aparecer una vez en un paquete.

Relleno: Variable.

Utilizado para asegurar que el tamaño, en bits, de la cabecera es un múltiplo de 32. El valor usado esel 0.

1.6.2 La Dirección De Internet

El protocolo IP identifica a cada computadora que se encuentre conectada a la red mediante sucorrespondiente dirección. Esta dirección es un número de 32 bits que debe ser único para cada host,y normalmente suele representarse como cuatro cifras de 8 bits separadas por puntos.

La dirección de Internet (IP Address) se utiliza para identificar tanto a la computadora en concretocomo la red a la que pertenece, de manera que sea posible distinguir a las computadoras que seencuentran conectados a una misma red. Con este propósito, y teniendo en cuenta que en Internet seencuentran conectadas redes de tamaños muy diversos, se establecieron tres clases diferentes dedirecciones, las cuales se representan mediante tres rangos de valores:

Clase A: Son las que en su primer byte tienen un valor comprendido entre 1 y 126,incluyendo ambos valores. Estas direcciones utilizan únicamente este primer byte paraidentificar la red, quedando los otros tres bytes disponibles para cada uno de los hosts quepertenezcan a esta misma red. Esto significa que podrán existir más de dieciséis millones decomputadoras en cada una de las redes de esta clase. Este tipo de direcciones es usado por

Page 18: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

17

redes muy extensas, pero hay que tener en cuenta que sólo puede haber 126 redes de estetamaño. ARPAnet es una de ellas, existiendo además algunas grandes redes comerciales,aunque son pocas las organizaciones que obtienen una dirección de "clase A". Lo normalpara las grandes organizaciones es que utilicen una o varias redes de "clase B".

Clase B: Estas direcciones utilizan en su primer byte un valor comprendido entre 128 y 191,incluyendo ambos. En este caso el identificador de la red se obtiene de los dos primerosbytes de la dirección, teniendo que ser un valor entre 128.1 y 191.254 (no es posible utilizarlos valores 0 y 255 por tener un significado especial). Los dos últimos bytes de la direcciónconstituyen el identificador del host permitiendo, por consiguiente, un número máximo de64516 computadoras en la misma red. Este tipo de direcciones tendría que ser suficiente parala gran mayoría de las organizaciones grandes. En caso de que el número de computadorasque se necesita conectar fuese mayor, sería posible obtener más de una dirección de "claseB", evitando de esta forma el uso de una de "clase A".

Clase C: En este caso el valor del primer byte tendrá que estar comprendido entre 192 y 223,incluyendo ambos valores. Este tercer tipo de direcciones utiliza los tres primeros bytes parael número de la red, con un rango desde 192.1.1 hasta 223.254.254. De esta manera quedalibre un byte para el host, lo que permite que se conecten un máximo de 254 computadorasen cada red. Estas direcciones permiten un menor número de host que las anteriores, aunqueson las más numerosas pudiendo existir un gran número redes de este tipo (más de dosmillones).

Tabla de direcciones IP de Internet.

Clase Primer byte Identificaciónde red

Identificaciónde hosts

Númerode redes

Númerode hosts

A 1 .. 126 1 byte 3 byte 126 16.387.064

B 128 .. 191 2 byte 2 byte 16.256 64.516

C 192 .. 223 3 byte 1 byte 2.064.512 254

En la clasificación de direcciones anterior se puede notar que ciertos números no se usan. Algunosde ellos se encuentran reservados para un posible uso futuro, como es el caso de las direcciones cuyoprimer byte sea superior a 223 (clases D y E, que aún no están definidas), mientras que el valor 127en el primer byte se utiliza en algunos sistemas para propósitos especiales. También es importantenotar que los valores 0 y 255 en cualquier byte de la dirección no pueden usarse normalmente portener otros propósitos específicos.

El número 0 está reservado para las máquinas que no conocen su dirección, pudiendo utilizarse tantoen la identificación de red para máquinas que aún no conocen el número de red a la que seencuentran conectadas, en la identificación de host para máquinas que aún no conocen su número dehost dentro de la red, o en ambos casos.

El número 255 tiene también un significado especial, puesto que se reserva para el broadcast. Elbroadcast es necesario cuando se pretende hacer que un mensaje sea visible para todos los sistemas

Page 19: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

18

conectados a la misma red. Esto puede ser útil si se necesita enviar el mismo datagrama a un númerodeterminado de sistemas, resultando más eficiente que enviar la misma información solicitada demanera individual a cada uno. Otra situación para el uso de broadcast es cuando se quiere convertirel nombre por dominio de una computadora a su correspondiente número IP y no se conoce ladirección del servidor de nombres de dominio más cercano.

Lo usual es que cuando se quiere hacer uso del broadcast se utilice una dirección compuesta por elidentificador normal de la red y por el número 255 (todo unos en binario) en cada byte queidentifique al host. Sin embargo, por conveniencia también se permite el uso del número255.255.255.255 con la misma finalidad, de forma que resulte más simple referirse a todos lossistemas de la red.

El broadcast es una característica que se encuentra implementada de formas diferentes dependiendodel medio utilizado, y por lo tanto, no siempre se encuentra disponible. En ARPAnet y en las líneaspunto a punto no es posible enviar broadcast, pero sí que es posible hacerlo en las redes Ethernet,donde se supone que todos las computadoras prestarán atención a este tipo de mensajes.

En el caso de algunas organizaciones extensas puede surgir la necesidad de dividir la red en otrasredes más pequeñas (subnets). Como ejemplo podemos suponer una red de clase B que,naturalmente, tiene asignado como identificador de red un número de dos bytes. En este caso seríaposible utilizar el tercer byte para indicar en qué red Ethernet se encuentra un host en concreto. Estadivisión no tendrá ningún significado para cualquier otra computadora que esté conectada a una redperteneciente a otra organización, puesto que el tercer byte no será comprobado ni tratado de formaespecial. Sin embargo, en el interior de esta red existirá una división y será necesario disponer de unsoftware de red especialmente diseñado para ello. De esta forma queda oculta la organizacióninterior de la red, siendo mucho más cómodo el acceso que si se tratara de varias direcciones declase C independientes.

1.6.3 TCP:

Las conexiones TCP se componen de tres etapas: establecimiento de conexión, transferencia dedatos y fin de la conexión. Para establecer la conexión se usa el procedimiento llamado negociaciónen tres pasos (3-way handshake). Una negociación en cuatro pasos (4-way handshake) es usadapara la desconexión. Durante el establecimiento de la conexión, algunos parámetros como el númerode secuencia son configurados para asegurar la entrega ordenada de los datos y la robustez de lacomunicación.

1.6.3.1 Establecimiento De La Conexión (Negociación En Tres Pasos)

Fig. 1.3.- Negociación en tres pasos o Three-way handshake

Page 20: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

19

Aunque es posible que un par de entidades finales comiencen una conexión entre ellassimultáneamente, normalmente una de ellas abre un socket en un determinado puerto TCP y sequeda a la escucha de nuevas conexiones. Es común referirse a esto como apertura pasiva, ydetermina el lado servidor de una conexión. El lado cliente de una conexión realiza una aperturaactiva de un puerto enviando un segmento SYN inicial al servidor como parte de la negociación entres pasos. El lado servidor respondería a la petición SYN válida con un paquete SYN/ACK.Finalmente, el cliente debería responderle al servidor con un ACK, completando así la negociaciónen tres pasos (SYN, SYN/ACK y ACK) y la fase de establecimiento de conexión.

Es interesante notar que existe un número de secuencia generado por cada lado, ayudando de estemodo a que no se puedan establecer conexiones falseadas (spoofing).

1.6.3.2 Transferencia De Datos

Durante la etapa de transferencia de datos, una serie de mecanismos claves determinan la fiabilidady robustez del protocolo. Entre ellos están incluidos el uso del número de secuencia para ordenar lossegmentos TCP recibidos y detectar paquetes duplicados, checksums para detectar errores, yasentimientos y temporizadores para detectar pérdidas y retrasos.

Durante el establecimiento de conexión TCP, los números iniciales de secuencia son intercambiadosentre las dos entidades TCP. Estos números de secuencia son usados para identificar los datos dentrodel flujo de bytes, y poder identificar (y contar) los bytes de los datos de la aplicación. Siempre hayun par de números de secuencia incluidos en todo segmento TCP, referidos al número de secuenciay al número de asentimiento. Un emisor TCP se refiere a su propio número de secuencia cuandohabla de 1 número de secuencia, mientras que con el número de asentimiento se refiere al número desecuencia del receptor. Para mantener la fiabilidad, un receptor asiente los segmentos TCPindicando que ha recibido una parte del flujo continuo de bytes. Una mejora de TCP, llamadaasentimiento selectivo (SACK, selective acknowledgement) permite a un receptor TCP asentir losdatos que se han recibido de tal forma que el remitente solo retransmita los segmentos de datos quefaltan.

A través del uso de números de secuencia y asentimiento, TCP puede pasar los segmentos recibidosen el orden correcto dentro del flujo de bytes a la aplicación receptora. Los números de secuenciason de 32 bits (sin signo), que vuelve a cero tras el siguiente byte después del 232-1. Una de lasclaves para mantener la robustez y la seguridad de las conexiones TCP es la selección del númeroinicial de secuencia (ISN, Initial Sequence Number).

Un checksum de 16 bits, consistente en el complemento a uno de la suma en complemento a uno delcontenido de la cabecera y datos del segmento TCP, es calculado por el emisor, e incluido en latransmisión del segmento. Se usa la suma en complemento a uno porque el acarreo final de esemétodo puede ser calculado en cualquier múltiplo de su tamaño (16-bit, 32-bit, 64-bit...) y elresultado, una vez plegado, será el mismo. El receptor TCP recalcula el checksum sobre lascabeceras y datos recibidos. El complemento es usado para que el receptor no tenga que poner a ceroel campo del checksum de la cabecera antes de hacer los cálculos, salvando en algún lugar el valordel checksum recibido; en vez de eso, el receptor simplemente calcula la suma en complemento auno con el checksum incluido, y el resultado debe ser 0. Si es así, se asume que el segmento hallegado intacto y sin errores.

Page 21: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

20

Hay que fijarse en que el checksum de TCP también cubre los 96 bits de la cabecera que contiene ladirección origen, la dirección destino, el protocolo y el tamaño TCP. Esto proporciona proteccióncontra paquetes mal dirigidos por errores en las direcciones.

El checksum de TCP es una comprobación bastante débil. En niveles de enlace con una altaprobabilidad de error de bit quizá requiera una capacidad adicional de corrección/detección deerrores de enlace. Si TCP fuese rediseñado hoy, muy probablemente tendría un código deredundancia cíclica (CRC) para control de errores en vez del actual checksum. La debilidad delchecksum está parcialmente compensada por el extendido uso de un CRC en el nivel de enlace, bajoTCP e IP, como el usado en el PPP o en Ethernet. Sin embargo, esto no significa que el checksum de16 bits es redundante: sorprendentemente, inspecciones sobre el tráfico de Internet han mostrado queson comunes los errores de software y hardware que introducen errores en los paquetes protegidoscon un CRC, y que el checksum de 16 bits de TCP detecta la mayoría de estos errores simples.

Los asentimientos de los datos enviados o la falta de ellos, son usados por los emisores parainterpretar las condiciones de la red entre el emisor y receptor TCP. Unido a los temporizadores, losemisores y receptores TCP pueden alterar el comportamiento del movimiento de datos. TCP usa unaserie de mecanismos para conseguir un alto rendimiento y evitar la congestión de la red (la idea esenviar tan rápido como el receptor pueda recibir). Estos mecanismos incluyen el uso de ventanadeslizante, algoritmo de comienzo lento, algoritmo de control de congestión, la retransmisión rápida,la recuperación rápida, y más.

1.6.3.3 Tamaño De Ventana TCP

El tamaño de la ventana de recepción TCP es la cantidad de datos recibidos (en bytes) que puedenser metidos en el buffer de recepción durante la conexión. La entidad emisora puede enviar unacantidad determinada de datos pero antes debe esperar un asentimiento con la actualización deltamaño de ventana por parte del receptor.

Un ejemplo sería el siguiente: un receptor comienza con un tamaño de ventana x y recibe y bytes,entonces su tamaño de ventana será (x - y) y el transmisor sólo podrá mandar paquetes con untamaño máximo de datos de (x - y) bytes. Los siguientes paquetes recibidos seguirán restandotamaño a la ventana de recepción. Esta situación seguirá así hasta que la aplicación receptora recojalos datos del buffer de recepción.

1.6.3.4 Escalado De Ventana

Para una mayor eficiencia en redes de gran ancho de banda, debe ser usado un tamaño de ventanamayor. El campo TCP de tamaño de ventana controla el movimiento de datos y está limitado a 16bits, es decir, a un tamaño de ventana de 65.535 bytes.

Como el campo de ventana no puede expandirse se usa un factor de escalado. La escala de ventanaTCP (TCP window scale) es una opción usada para incrementar el máximo tamaño de ventana desde65.535 bytes, a 1 Gigabyte.

La opción de escala de ventana TCP es usada solo durante la negociación en tres pasos queconstituye el comienzo de la conexión. El valor de la escala representa el número de bits

Page 22: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

21

desplazados a la izquierda de los 16 bits que forman el campo del tamaño de ventana. El valor de laescala puede ir desde 0 (sin desplazamiento) hasta 14. Hay que recordar que un número binariodesplazado un bit a la izquierda es como multiplicarlo en base decimal por 2.

1.6.3.5 Fin De La Conexión

Fig. 1.4.- Cierre de una conexión según el estándar

La fase de finalización de la conexión usa una negociación en cuatro pasos (four-way handshake),terminando la conexión desde cada lado independientemente. Cuando uno de los dos extremos de laconexión desea parar su "mitad" de conexión transmite un paquete FIN, que el otro interlocutorasentirá con un ACK. Por tanto, una desconexión típica requiere un par de segmentos FIN y ACKdesde cada lado de la conexión.

Una conexión puede estar "medio abierta" en el caso de que uno de los lados la finalice pero el otrono. El lado que ha dado por finalizada la conexión no puede enviar más datos pero la otra parte sipodrá.

1.6.3.6 Puertos TCP

TCP usa el concepto de número de puerto para identificar a las aplicaciones emisoras y receptoras.Cada lado de la conexión TCP tiene asociado un número de puerto (de 16 bits sin signo, con lo queexisten 65536 puertos posibles) asignado por la aplicación emisora o receptora. Los puertos sonclasificados en tres categorías:

1. Bien conocidos2. Registrados y3. Dinámicos/privados.

Los puertos bien conocidos son asignados por la Internet Assigned Numbers Authority (IANA), vandel 0 al 1023 y son usados normalmente por el sistema o por procesos con privilegios. Lasaplicaciones que usan este tipo de puertos son ejecutadas como servidores y se quedan a la escuchade conexiones. Algunos ejemplos son: FTP (21), SSH (22), Telnet (23), SMTP (25) y HTTP (80).

Los puertos registrados son normalmente empleados por las aplicaciones de usuario de formatemporal cuando conectan con los servidores, pero también pueden representar servicios que hayansido registrados por un tercero.

Page 23: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

22

Los puertos dinámicos/privados también pueden ser usados por las aplicaciones de usuario, peroeste caso es menos común. Los puertos dinámicos/privados no tienen significado fuera de laconexión TCP en la que fueron usados.

1.7 En Que Se Utiliza TCP/IP

Muchas grandes redes han sido implementadas con estos protocolos, incluyendo DARPA Internet"Defense Advanced Research Projects Agency Internet", en español, Red de la Agencia deInvestigación de Proyectos Avanzados de Defensa. De igual forma, una gran variedad deuniversidades, agencias gubernamentales y empresas de computadoras, están conectadas mediantelos protocolos TCP/IP. Cualquier máquina de la red puede comunicarse con otra distinta y estaconectividad permite enlazar redes físicamente independientes en una red virtual llamada Internet.

TCP/IP proporciona la base para muchos servicios útiles, incluyendo correo electrónico,transferencia de ficheros y login remoto.

El correo electrónico está diseñado para transmitir ficheros de texto pequeños. Las utilidades detransferencia sirven para transferir ficheros muy grandes que contengan programas o datos. Tambiénpueden proporcionar chequeos de seguridad controlando las transferencias.

El login remoto permite a los usuarios de una computadora acceder a una máquina remota y llevar acabo una sesión interactiva.

1.8 Similitudes Y Diferencias Entre La Clase 4 Del Modelo OSI Y TCP

El protocolo de transporte de clase 4 del modelo OSI (al que con frecuencia se le llama TP4), y TCPtienen numerosas similitudes, pero también algunas diferencias. A continuación se dan a conocer lospuntos en que los dos protocolos son iguales. Los dos protocolos están diseñados para proporcionarun servicio de transporte seguro, orientado a conexión y de extremo a extremo, sobre una redinsegura, que puede perder, dañar, almacenar y duplicar paquetes. Los dos deben enfrentarse a lospeores problemas como sería el caso de una subred que pudiera almacenar una secuencia válida depaquetes y más tarde volviera a entregarlos.

Los dos protocolos también son semejantes por el hecho de que los dos tienen una fase deestablecimiento de conexión, una fase de transferencia de datos y después una fase de liberación dela conexión. Los conceptos generales del establecimiento, uso y liberación de conexiones tambiénson similares, aunque difieren en algunos detalles. En particular, tanto TP4 como TCP utilizan lacomunicación ida-vuelta-ida para eliminar las dificultades potenciales ocasionadas por paquetesantiguos que aparecieran súbitamente y pudiesen causar problemas.

Sin embargo, los dos protocolos también presentan diferencias muy notables. Primero, TP4 utilizanueve tipos diferentes de TPDU, en tanto que TCP sólo tiene uno. Esta diferencia trae comoresultado que TCP sea más sencillo, pero al mismo tiempo también necesita una cabecera másgrande, porque todos los campos deben estar presentes en todas las TPDU. El mínimo tamaño de lacabecera TCP es de 20 octetos; el mínimo tamaño de la cabecera TP4 es de 5 octetos. Los dosprotocolos permiten campos opcionales, que pueden incrementar el tamaño de las cabeceras porencima del mínimo permitido.

Page 24: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

23

La siguiente tabla muestra las diferencias entre el protocolo tp4 del modelo OSI y TCP

CARACTERÍSTICA OSI TP4 TCP

Numero de tipos de TPDU 9 1

Fallo de Conexión 2 conexiones 1 conexión

Formato de direcciones No está definido 32 bits

Calidad de servicio Extremo abierto Opciones específicas

Datos del usuario en CR Permitido No permitido

Flujo Mensajes Octetos

Datos importantes Acelerados Acelerados

Superposición No Sí

Control de flujo explícito Algunas veces Siempre

Número de subsecuencia Permitidos No Permitido

Liberación Abrupta Ordenada

Una segunda diferencia es con respecto a lo que sucede cuando los dos procesos, en formasimultánea, intentan establecer conexiones entre los mismos dos TSAP (es decir, una colisión deconexiones). Con TP4 se establecen dos conexiones duplex independientes; en tanto que con TCP,una conexión se identifica mediante un par de TSAP, por lo que solamente se establece unaconexión.

Una tercera diferencia es con respecto al formato de direcciones que se utiliza. TP4 no especifica elformato exacto de una dirección TSAP; mientras que TCP utiliza números de 32 bits.

El concepto de calidad de servicio también se trata en forma diferente en los dos protocolos,constituyendo la cuarta diferencia. TP4 tiene un mecanismo de extremo abierto, bastante elaborado,para una negociación a tres bandas sobre la calidad de servicio. Esta negociación incluye al procesoque hace la llamada, al proceso que es llamado y al mismo servicio de transporte. Se puedenespecificar muchos parámetros, y pueden proporcionarse los valores: deseado y mínimo aceptable.A diferencia de esto, TCP no tiene ningún campo de calidad de servicio, sino que el serviciosubyacente IP tiene un campo de 8 bits, el cual permite que se haga una relación a partir de unnúmero limitado de combinaciones de velocidad y seguridad.

Las cuatro diferencias anteriores se relacionan con la fase de establecimiento de la conexión. Lascinco siguientes se relacionan con la fase de transferencia de datos.

Una quinta diferencia es que TP4 permite que los datos del usuario sean transportados en la TPDUCR, pero TCP no permite que los datos del usuario aparezcan en la TPDU inicial. El dato inicial(como por ejemplo, una contraseña), podría ser necesario para decidir si se debe, o no, estableceruna conexión. Con TCP no es posible hacer que el establecimiento dependa de los datos del usuario.

Page 25: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

24

Una diferencia básica es el modelo del transporte de datos. El modelo TP4 es el de una serie demensajes ordenados (correspondientes a las TSDU en la terminología OSI). El modelo TCP es el deun flujo continuo de octetos, sin que haya ningún límite explícito entre mensajes. En la práctica, sinembargo, el modelo TCP no es realmente un flujo puro de octetos, porque el procedimiento debiblioteca denominado push puede llamarse para sacar todos los datos que estén almacenados, peroque todavía no se hayan transmitido. Cuando el usuario remoto lleva a cabo una operación delectura, los datos anteriores y posteriores al push no se combinarán, por lo que, en cierta forma unpush podría penarse como si definiesen una frontera entre mensajes.

La séptima diferencia se ocupa de cómo son tratados los datos importantes que necesitan de unprocesamiento especial (como los caracteres BREAK). TP4 tiene dos flujos de mensajesindependientes, los datos normales y los acelerados multiplexados de manera conjunta. En cualquierinstante únicamente un mensaje acelerado puede estar activo. TCP utiliza el campo Acelerado paraindicar que cierta cantidad de octetos, dentro de la TPDU actualmente en uso, es especial y deberíaprocesarse fuera de orden.

La octava diferencia es la ausencia del concepto de superposición en TP4 y su presencia en TCP.Esta diferencia no es tan significativa como al principio podría parecer, dado que es posible que unaentidad de transporte ponga dos TPDU, por ejemplo, DT y AK en un único paquete de red.

La novena diferencia se relaciona con la forma como se trata el control de flujo. TP4 puede utilizarun esquema de crédito, pero también se puede basar en el esquema de ventana de la capa de red pararegular el flujo. TCP siempre utiliza un mecanismo de control de flujo explícito con el tamaño de laventana especificado en cada TPDU.

La décima diferencia se relaciona con este esquema de ventana. En ambos protocolos el receptortiene la capacidad de reducir la ventana en forma voluntaria. Esta posibilidad genera potencialmenteproblemas, si el otorgamiento de una ventana grande y su contracción subsiguiente llegan en unorden incorrecto. En TCP no hay ninguna solución para este problema; en tanto en TP4 éste seresuelve por medio del número de subsecuencia que está incluido en la contracción, permitiendo deesta manera que el emisor determine si la ventana pequeña siguió, o precedió, a la más grande.

Finalmente, la onceava y última diferencia existente entre los dos protocolos, consiste en la maneracomo se liberan las conexiones. TP4 utiliza una desconexión abrupta en la que una serie de TPDUde datos pueden ser seguidos directamente por una TPDU DR. Si las TPDU de datos se llegaran aperder, el protocolo no los podría recuperar y la información, al final se perdería. TCP utiliza unacomunicación de ida-vuelta-ida para evitar la pérdida de datos en el momento de la desconexión. Elmodelo OSI trata este problema en la capa de sesión. Es importante hacer notar que la OficinaNacional de Normalización de Estados Unidos estaba tan disgustada con esta propiedad de TP4, queintrodujo TPDU adicionales en el protocolo de transporte para permitir la desconexión sin quehubiera una pérdida de datos. Como consecuencia de esto, las versiones de Estados Unidos y lainternacional de TP4 son diferentes.

Es importante señalar que el protocolo IP explicado anteriormente, o mejor dicho la versión de éstees la más utilizada actualmente, pero hace muy poco tiempo salió una nueva versión llamada lanúmero 6. Las diferencias no son muchas, pero mejoran muchos aspectos de la antigua, ésta no esmuy utilizada, pero creemos que es necesario explicar como funciona, para poder hacer unacomparación con la antigua. A continuación la trataremos.

Page 26: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

25

1.9 La Nueva Versión De IP (IPng)

La nueva versión del protocolo IP recibe el nombre de IPv6, aunque es también conocidocomúnmente como IPng (Internet Protocol Next Generation). El número de versión de esteprotocolo es el 6 (que es utilizada en forma mínima) frente a la antigua versión utilizada en formamayoritaria. Los cambios que se introducen en esta nueva versión son muchos y de granimportancia, aunque la transición desde la versión antigua no debería ser problemática gracias a lascaracterísticas de compatibilidad que se han incluido en el protocolo. IPng se ha diseñado parasolucionar todos los problemas que surgen con la versión anterior, y además ofrecer soporte a lasnuevas redes de alto rendimiento (como ATM, Gigabit Ethernet, etc.)

Una de las características más llamativas es el nuevo sistema de direcciones, en el cual se pasa delos 32 a los 128 bit, eliminando todas las restricciones del sistema actual. Otro de los aspectosmejorados es la seguridad, que en la versión anterior constituía uno de los mayores problemas.Además, el nuevo formato de la cabecera se ha organizado de una manera más efectiva, permitiendoque las opciones se sitúen en extensiones separadas de la cabecera principal.

1.9.1 Formato De La Cabecera

El tamaño de la cabecera que el protocolo IPv6 añade a los datos es de 320 bits, el doble que en laversión antigua. Sin embargo, esta nueva cabecera se ha simplificado con respecto a la anterior.Algunos campos se han retirado de la misma, mientras que otros se han convertido en opcionalespor medio de las extensiones. De esta manera los routers no tienen que procesar parte de lainformación de la cabecera, lo que permite aumentar de rendimiento en la transmisión. El formatocompleto de la cabecera sin las extensiones es el siguiente:

Versión: Número de versión del protocolo IP, que en este caso contendrá el valor 6.Tamaño: 4 bits.

Prioridad: Contiene el valor de la prioridad o importancia del paquete que se está enviandocon respecto a otros paquetes provenientes de la misma fuente. Tamaño: 4 bits.

Etiqueta de flujo: Campo que se utiliza para indicar que el paquete requiere un tratamientoespecial por parte de los routers que lo soporten. Tamaño: 24 bits.

Longitud: Es la longitud en bytes de los datos que se encuentran a continuación de lacabecera. Tamaño: 16 bits.

Siguiente cabecera: Se utiliza para indicar el protocolo al que corresponde la cabecera quese sitúa a continuación de la actual. El valor de este campo es el mismo que el de protocoloen la versión 4 de IP. Tamaño: 8 bits.

Límite de existencia: Tiene el mismo propósito que el campo de la versión 4, y es un valorque disminuye en una unidad cada vez que el paquete pasa por un nodo. Tamaño: 8 bits.

Dirección de origen: El número de dirección del host que envía el paquete. Su longitud escuatro veces mayor que en la versión 4. Tamaño: 128 bits.

Dirección de destino: Número de dirección de destino, aunque puede no coincidir con ladirección del host final en algunos casos. Su longitud es cuatro veces mayor que en laversión 4 del protocolo IP. Tamaño: 128 bits.

Page 27: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

26

Versión Prioridad Etiqueta de flujo

Longitud SiguienteCabecera

Límite deexistencia

Dirección de origen

Dirección de destinoFig. 1.5.- Organización de la cabecera IPv6.

Las extensiones que permiten añadir esta versión del protocolo se sitúan inmediatamente después dela cabecera normal, y antes de la cabecera que incluye el protocolo de nivel de transporte. Los datossituados en cabeceras opcionales se procesan sólo cuando el mensaje llega a su destino final, lo quesupone una mejora en el rendimiento. Otra ventaja adicional es que el tamaño de la cabecera no estálimitado a un valor fijo de bytes como ocurría en la versión 4.

Por razones de eficiencia, las extensiones de la cabecera siempre tienen un tamaño múltiplo de 8bytes. Actualmente se encuentran definidas extensiones para routing extendido, fragmentación yensamblaje, seguridad, confidencialidad de datos, etc.

1.9.2 Direcciones En La Versión 6

El sistema de direcciones es uno de los cambios más importantes que afectan a la versión 6 delprotocolo IP, donde se han pasado de los 32 a los 128 bit (cuatro veces mayor). Estas nuevasdirecciones identifican a un interfaz o conjunto de interfaces y no a un nodo, aunque como cadainterfaz pertenece a un nodo, es posible referirse a éstos a través de su interfaz.

El número de direcciones diferentes que pueden utilizarse con 128 bits es enorme. Teóricamenteserían 2128 direcciones posibles, siempre que no apliquemos algún formato u organización a estasdirecciones. Este número es extremadamente alto, pudiendo llegar a soportar más de 665,000trillones de direcciones distintas por cada metro cuadrado de la superficie del planeta Tierra.Según diversas fuentes consultadas, estos números una vez organizados de forma práctica yjerárquica quedarían reducidos en el peor de los casos a 1,564 direcciones por cada metro cuadrado,y siendo optimistas se podrían alcanzar entre los tres y cuatro trillones.

Existen tres tipos básicos de direcciones IPng según se utilicen para identificar a un interfaz enconcreto o a un grupo de interfaces. Los bits de mayor peso de los que componen la dirección IPngson los que permiten distinguir el tipo de dirección, empleándose un número variable de bits paracada caso. Estos tres tipos de direcciones son:

Direcciones unicast: Son las direcciones dirigidas a un único interfaz de la red. Lasdirecciones unicast que se encuentran definidas actualmente están divididas en variosgrupos. Dentro de este tipo de direcciones se encuentra también un formato especial quefacilita la compatibilidad con las direcciones de la versión 4 del protocolo IP.

Direcciones anycast: Identifican a un conjunto de interfaces de la red. El paquete se enviaráa un interfaz cualquiera de las que forman parte del conjunto. Estas direcciones son enrealidad direcciones unicast que se encuentran asignadas a varios interfaces, los cuales

Page 28: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD I. PROTOCOLO DE COMUNICACIÓN TCP/IP

27

necesitan ser configurados de manera especial. El formato es el mismo que el de lasdirecciones unicast.

Direcciones multicast: Este tipo de direcciones identifica a un conjunto de interfaces de lared, de manera que el paquete es enviado a cada una de ellos individualmente.

Las direcciones de broadcast no están implementadas en esta versión del protocolo, debido a queesta misma función puede realizarse ahora mediante el uso de las direcciones multicast.

Page 29: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

28

UNIDAD 2GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

2.1 Introducción

Se ha dicho que si los antiguos Romanos, con su civilización y conocimiento avanzados de lasciencias, hubieran podido desarrollar el motor de vapor, el curso de la historia habría sido diferente.El desarrollo del motor eléctrico en épocas modernas ha indicado la verdad en esta teoría.

El desarrollo del motor eléctrico nos ha dado los medios más eficientes y más eficaces para realizarun trabajo. Con el motor eléctrico hemos podido reducir notablemente el trabajo que realiza elhombre para su supervivencia, además, hemos podido construir una civilización que ahora estáalcanzando las estrellas.

El motor eléctrico es un dispositivo simple en principio, convierte energía eléctrica en energíamecánica. Al paso de los años, los motores eléctricos han cambiado substancialmente en diseño, noobstante los principios básicos de operación han seguido siendo iguales. En esta sección,mencionaremos los principios básicos del motor, los fenómenos del magnetismo, operación actual ybásica de los motores de C. A.

2.2 Magnetismo

Antes de describir los principios básicos del motor, daremos una revisión del magnetismo.

Todos sabemos que un imán permanente atraerá objetos de metal cuando el objeto está cerca o encontacto con dicho el imán. El imán puede hacer esta función permanente debido a su fuerzamagnética inherente, referida como "campo magnético". En la Figura 2.1, el campo magnético dedos imanes permanentes es representado por las "líneas del flujo". Estas líneas del flujo nos ayudana visualizar el campo magnético de cualquier imán aunque representan solamente fenómenosinvisibles. El número de líneas del flujo varía a partir de un campo magnético a otro. Cuanto másfuerte es el campo magnético, mayor es el número de las líneas del flujo que se dibujan pararepresentar el campo magnético. Las líneas del flujo se dibujan con una dirección indicada puestoque debemos visualizar estas líneas y el campo magnético que representan movimientos que van delpolo N al polo S, según lo demostrado en la Figura 2.1.

Un campo magnético similar, se produce alrededor de un conductor eléctrico, cuando circulacorriente eléctrica a través de él, según lo demostrado en la Figura 2.2-a. Estas líneas del flujodefinen el campo magnético y están en la forma de círculos concéntricos alrededor del alambre. Lavieja "regla de la mano izquierda" véase la Figura 2.2-b. indica que sí usted señala con el pulgar desu mano izquierda la dirección de la corriente, sus dedos señalarán la dirección que presenta elcampo magnético.

Page 30: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

29

Figura 2.1.- Las líneas del flujo de un campo magnético viajan del polo N al polo S.

Figura 2.2.- El flujo de la corriente eléctrica en un conductor genera un campo magnético representado por las líneasconcéntricas de flujo alrededor del conductor.

Cuando el alambre forma una bobina (véase Figura 2.3), todas las líneas individuales del flujoproducidas por cada sección del alambre forman un gran campo magnético alrededor de la bobina.Como con el imán permanente, estas líneas del flujo dejan el norte de la bobina y vuelven a entrar labobina por el polo sur. El campo magnético de una bobina de alambre es mucho mayor que elcampo magnético generado alrededor de un simple conductor antes de ser formada en una bobina.Este campo magnético alrededor de la bobina puede ser consolidado aún más colocando una base dehierro o de metal similar en el centro de la base. La base del metal presenta menos resistencia a laslíneas del flujo que al aire, de tal modo la fuerza del campo puede aumentar (así es como se realizala bobina del estator, bobina de alambre con base de acero). La ventaja de un campo magnético quesea producido por una bobina, es que cuando se invierte la corriente, los postes cambian de direccióndebido al cambio de dirección flujo magnético (véase Figura 2.4). Si este fenómeno magnético no sepresentara, el motor de C. A. no existiría.

Page 31: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

30

Figura 2.3.- Las líneas magnéticas que circulan alrededor de un conductor salen del polo N y entran al polo S.

Figura 2.4.- Los polos de una bobina electromagnética cambian cuando la dirección del flujo actual cambia.

2.3 Propulsión Magnética Del Motor

El principio de operación de los motores se puede demostrar fácilmente usando dos electroimanes yun imán permanente. La corriente se pasa a través de la bobina No. 1 en dirección al polo Norteestablecido y a través de la bobina No. 2 en dirección al polo Sur. Un imán permanente con un poloNorte y Sur es la pieza móvil de este motor simple. En la figura 2.5-a el polo Norte del imánpermanente está enfrente del polo Norte del electroimán. De manera semejante, los polos Sur estánuno enfrente del otro. Como los polos magnéticos iguales se rechazan, empieza a girar el imánpermanente. Cuando la fuerza de atracción entre los polos opuestos llega a ser lo suficientementefuerte, el imán permanente gira. El imán rotativo continúa cambiando de dirección hasta que lospolos opuestos se alinean. En este punto el rotor normalmente se detendría por la atracción entre lospolos diferentes (Figura 2.5-b).

Page 32: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

31

Figura 2.5.- Propulsión magnética del motor

Sí la dirección de corrientes en las bobinas electromagnéticas fue invertida repentinamente, porconsiguiente se invierte la polaridad de las dos bobinas, entonces, los polos otra vez sería opuestos yse repelerían entre ellos (Figura 2.5-c). Por lo tanto, el imán permanente continuaría rotando. Si ladirección actual en las bobinas electromagnéticas fuera cambiada todo el tiempo, el imán daríavuelta 180 grados a medio camino, entonces el imán continuaría rotando. Este dispositivo sencillo esun motor en su forma más simple. Un motor real es más complejo, sin embargo, el principio esigual.

2.4 Corriente Alterna (C. A.)

¿Cómo es que cuando se invierte la corriente en la bobina puede cambiar la polaridad de lasmismas? Como usted sabe, la diferencia entre la Corriente Directa (C. D.) y la Corriente Alterna (C.A.) es que con la C. D. la corriente fluye solamente en una dirección, mientras que con la C. A. ladirección del flujo de corriente actual cambia periódicamente de dirección. En el caso de la C. A.común que se utiliza a través de la mayoría de los Estados Unidos Mexicanos, el flujo actual cambiade dirección 120 veces por segundo. Esta corriente se refiere a la “C. A. de 60 ciclos" o "C. A. de 60Hertz" en honor del Sr. Hertz quien fue la primera persona que concibió el concepto de la C. A. Otracaracterística del flujo de corriente actual es que puede variar en cantidad, es decir, podemos tenerun flujo de 5, 10 ó 100 Amperes, por ejemplo. Con la C. D. absoluta, esto significa que el flujoactual sería de 5, 10 ó 100 Amperes continuos (véase Figura 2.6).

Page 33: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

32

Figura 2.6.- Visualización de la C. D.

Con la C. A. es diferente. Como usted puede imaginarse, sería bastante difícil que la corriente fluyadesde el punto de vista de 100 amperes en una dirección positiva e inmediatamente después estéfluyendo con dirección negativa de igual intensidad. En lugar de eso, como la corriente se alista paracambiar de direcciones, primero disminuye hasta que alcanza el flujo cero y después se acumulagradualmente en la otra dirección (véase Figura 2.7). Observe que el flujo actual máximo (los picosde la línea) en cada dirección es más que el valor especificado (100 Amperes). Por lo tanto, el valorespecificado se da como valor promedio. Realmente se llama "raíz cuadrada media". Lo que esimportante en nuestro estudio de motores, es darse cuenta de que la fuerza del campo magnéticoproducido por una bobina electromagnética de C. A., aumenta y disminuye con el incremento ydisminución del flujo de corriente alterna.

Figura 2.7.- Visualización de la C. A.

2.5 Operación Básica Del Motor De C. A.

Un motor de C. A. tiene dos partes eléctricas básicas: un "estator" y un "rotor", como se muestra enla Figura 2.8. El estator está en el componente eléctrico estático. Consiste en un grupo deelectroimanes individuales dispuestos de una manera tal que formen un cilindro hueco, con un polode cada cara de los imanes hacia el centro del grupo. El término, "estator" se deriva de la palabraestática. El rotor es el componente eléctrico rotativo, el cual consiste en un grupo de electroimanesdispuestos alrededor de un cilindro, con los polos haciendo frente hacia los polos del estator. El

Page 34: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

33

rotor, está situado obviamente dentro del estator y montado en el eje del motor. El término "rotor" sederiva de la palabra rotar. El objetivo de estos componentes del motor es hacer que el rotor giresobre el eje del motor. Esta rotación ocurrirá debido al fenómeno magnético previamente discutidoque los polos opuestos se atraen y polos iguales se rechazan. Si cambiamos progresivamente lapolaridad de los polos del estator de una manera tal que su campo magnético combinado rote,entonces el rotor seguirá girando con el campo magnético del estator.

Figura 2.8.- Componentes eléctricos básicos de un motor de CA.

En la Figura 2.9 se muestra como van rotando los campos magnéticos del estator. De acuerdo con lafigura, el estator tiene seis polos magnéticos y el rotor tiene dos polos. En el tiempo 1, los polos A-1del estator y el C-2 son polos Norte y los polos opuestos, A-2 y C-1, son los polos sur. El polo S delrotor es atraído por los dos polos N del estator y el polo N del rotor es atraído por los dos polos delsur del estator. En el tiempo 2, la polaridad de los postes del estator se cambia de modo que ahora elC-2 y B-1 son los polos N y C-1 y B-2 son los polos S. Entonces el rotor se ve forzado a rotar 60grados para alinearse con los polos del estator según lo demostrado en la figura. En el tiempo 3, B-1y A-2 son los polos N. En el tiempo 4, A-2 y C-1 son los polos N. Mientras que se realiza cadacambio, los polos del rotor son atraídos por los polos opuestos en el estator. Así, como el campomagnético del estator rota, el rotor se ve forzado a rotar con él.

Figura 2.9.- Rotación del campo magnético de un motor de C. A.

Page 35: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

34

Una forma para producir un campo magnético que rota en el estator de un motor de C. A. es utilizaruna fuente de alimentación trifásica para las bobinas del estator. Se preguntará ¿Qué es la energíatrifásica? La respuesta a esa pregunta puede ser entendida mejor si primero examinamos la energíamonofásica. La figura 2.7 muestra la energía monofásica. El generador de C. A. asociado producejustamente un flujo de corriente eléctrica cuya dirección e intensidad descienden según lo indicadopor la línea continua de la gráfica. Del tiempo 0 al tiempo 3, la corriente fluye en el conductor endirección positiva. Del tiempo 3 al tiempo 6, la corriente fluye en dirección negativa. En cualquiertiempo, la corriente fluye solamente en una dirección. Pero algunos generadores producen flujos entres fases separadas en el mismo circuito. A esto se refiere la energía trifásica. En ningún instante,sin embargo, la dirección y la intensidad de cada flujo actual separado no es igual al de las otrasfases (véase Figura 2.10). Las tres fases separadas (flujos actuales) se etiquetan A, B y C. En eltiempo 1, suponga que la fase A está en los Amperes cero, la fase B está cerca de su amperajemáximo y fluye en dirección positiva, y la fase C está cerca a su amperaje máximo pero fluye endirección negativa. En el tiempo 2, el amperaje de la fase A está aumentando y el flujo es positivo,el amperaje de la fase B está disminuyendo y su flujo sigue siendo negativo, y la fase C ha caído alos amperes cero. Un ciclo completo (a partir de cero al máximo en una dirección, de cero almáximo en la otra dirección, y de nuevo a cero) toma una revolución completa del generador. Por lotanto, un ciclo completo, se dice que tiene 360 grados eléctricos. En la figura 2.10, vemos que cadafase está desplazada 120 grados a partir de las otras dos fases. Por lo tanto, decimos que son 120grados fuera de fase.

Figura 2.10.- Patrón de fases separadas de la energía trifásica

Para producir un campo magnético que rota en el estator de un motor de C. A. trifásico, se necesitaque las bobinas del estator estén correctamente conectadas a la fuente de alimentación de corriente.La conexión para un estator de 6 postes se muestra en la Figura 11.6. Cada fase de la fuente dealimentación trifásica está conectada con los polos opuestos y las bobinas asociadas se bobinan en la

Page 36: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

35

misma dirección. Como usted recordará, en la Figura 2.4, la polaridad de los polos del electroimánes determinada por la dirección de la corriente que circula por la bobina. Por consiguiente, si doselectroimanes opuestos del estator se bobinan en la misma dirección, la polaridad de los polosopuestos debe de estar enfrente. Por lo tanto, cuando el polo A1 es N, el polo A2 es S. Cuando elpolo B1 es N, B2 es S y así sucesivamente.

Figura 2.11.- Método para conectar energía trifásica con un estator de seis polos.

La Figura 2.12 muestra cómo se produce el campo magnético que rota. En el tiempo 1, el flujoactual en los polos de la fase "A" es positivo y el polo A-1 es N. El flujo actual en los polos de lafase "C" es negativo, haciendo C-2 un polo N y C-1 el polo S. No hay flujo actual en la fase "B", asíque estos polos no se magnetizan. En el tiempo 2, las fases han cambiado de puesto 60 grados,haciendo los postes C-2 y B-1 N y C-1 y B-2 ambos polos S. Así, el flujo magnético produce elcambio de polaridad en las bobinas provocando que los polos resultantes N y S se muevan a laderecha alrededor del estator, lo que resulta en una rotación del campo magnético. Por lo tanto, elrotor actúa como un imán de barra arrastrado por el campo magnético que rota.

Figura 2.12.- Cómo la energía trifásica produce un campo magnético que rota.

Page 37: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

36

Hasta este punto poco se ha dicho acerca del rotor. En los ejemplos anteriores, se ha asumido quelos polos del rotor son bobinas como los polos del estator provistos con C. D. para crear polos fijosen polaridad. Así es exactamente cómo funciona un motor de C. A. síncrono. Sin embargo, lamayoría de los motores de C. A. que son utilizados actualmente no son motores síncronos. En lugarde eso, los motores de inducción son los que prevalecen en la industria. ¿Cuál es la diferencia delmotor de inducción? La gran diferencia es la manera en la que se provee la corriente al rotor. Ésta noes ninguna fuente de alimentación externa, en lugar de eso, se utiliza la técnica de inducción, la cuales un fenómeno natural que ocurre cuando un conductor (las barras de aluminio en el caso de unrotor, véase el Figura 2.13) se mueve a través de un campo magnético existente o cuando un campomagnético se pasa a un conductor. En cualquier caso, el movimiento relativo provoca que lacorriente eléctrica circule por el conductor. Esto se refiere al flujo actual "inducido". En otraspalabras, en un motor de inducción el flujo actual del rotor no es causado por cualquier conexióndirecta de los conductores a una fuente de voltaje, sino por la influencia de los conductores del rotorque provocan el corte de las líneas del flujo producidas por los campos magnéticos del estator. Lacorriente inducida que se produce en el rotor da lugar a un campo magnético alrededor de losconductores del rotor según lo mostrado en la Figura 2.14. Este campo magnético alrededor de cadaconductor del rotor hará que cada conductor actúe como un imán permanente (véase Figura 2.9).Como el campo magnético del estator alterna debido al efecto de suministro de C. A. trifásica, elcampo magnético inducido del rotor será atraído y seguirá la rotación. El rotor está conectado con eleje del motor, así que el eje rotará y conducirá la carga de la conexión. Así es como funciona unmotor.

Figura 2.13.- Construcción de un rotor del motor de inducción de la CA.

Figura 2.14.- Cómo el voltaje se induce en el rotor, dando por resultado flujo actual en los conductores del rotor.

Page 38: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

37

2.6 Comparación De Las Características De Los Motores De C. A. Y C. D.

Como los motores de C. A. continúan siendo usados en aplicaciones que tradicionalmente seemplean los motores de C. D., es apropiado mencionar algunas de las características que presentanestos motores, tales como: construcción típica, fuerza de torsión, circuitos equivalentes, rangos decarga y velocidad, etc.

Esta comparación también resaltará algunas de las ventajas y desventajas de cada tipo de motor enaplicaciones con velocidad variable. Además, se podrá observar que los motores de C. D. se hanvenido sustituyendo por motores de C. A. en aplicaciones donde se requiere trabajos con velocidadvariable, por lo que es necesario comprender los motores de C. A., de tal manera que podamosoptimizarlos en este tipo de aplicaciones.

En esta sesión se presentan comparaciones específicas de las características individuales de losmotores de C. A. y C. D., basadas en el tipo de tecnología (leyes físicas) en comparación con lashistóricas (estandarización, aplicaciones, etc.). La base de comparación será un motor de C. D., 4polos con campos excitados individualmente, contra un motor de inducción C. A., 4 polos, 3 fases ytipo jaula de ardilla.

2.6.1 Construcción

Rápidamente miremos algunas de las construcciones básicas de los motores de la C. A. y C. D.Usted verá, que algunas generalidades pueden aplicarse con respecto a diferencias en laconstrucción, sin embargo hay muchas excepciones, mientras que muchos de los motores de C. A.utilizan un marco del hierro fundido, con bases de montaje integradas al marco (Figura 2.15),también existen motores de C. A. con bases de sujeción montadas en la carcaza (Figura 16).

Figura 2.15.- Motor de C. A. con base integrada almarco del hierro fundido

Figura 2.16.- Motor de C. A. con bases de sujeciónintegradas a la carcaza

De la misma manera, mientras que muchos motores de la C. D. tienen las bases de montaje comoparte de la carcaza (Figura 2.17), otros utilizan bases integradas al marco del motor (Figura 2.18).

Page 39: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

38

Figura 2.17.- Motor de C. D. con bases integradas a lacarcaza

Figura 2.18.- Motor de C. D. con bases integradas almarco

Con la proliferación de las fuentes de energía estáticas para controlar motores de C. D., laconstrucción del marco laminado (Figura 2.19) llegó a ser popular. Los motores de C. A. utilizanfuentes electrónicas de energía, por lo que la construcción del marco laminado (Figura 2.20) esconsiderada para el creciente uso de motores de C. A. (especialmente para usos con variadores develocidad).

Figura 2.19.- Motor de C. D. que utiliza un marcolaminado

Figura 2.20.- Motor de C. D. que utiliza unmarco laminado

2.6.2 Terminología

Cada uno de los términos indicados en la sección de motores eléctricos se referirá a piezas o partesde los motores indicados en las Figuras 2.21-24.

Page 40: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 2. GENERALIDADES DEL MOTOR DE CORRIENTE ALTERNA

39

Figura 2.21.- Componentes del Motor de C. A. Figura 2.22.- Componentes del Motor de C. A.

Figura 2.23.- Componentes del Motor de C. D. Figura 2.24.- Componentes del Motor de C. D.

Page 41: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

40

UNIDAD 3PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

3.1 Introducción

S i qu erem o s realiza r la p ro g ram ació n d e lo s m ic ro co n tro lad o re s P IC en u n len gu aje co m o el C , e sp rec iso u tiliz a r un compilador de C.

D icho com pilado r nos genera fiche ro s en fo rm ato In te l-h ex aded im al, qu e es e l n ecesa rio p a rap ro gram ar (u tilizand o un p ro gram ad o r d e P IC ) u n m ic ro con tro lado r d e 6 , 8 , 1 8 ó 4 0 p atillas .

E l co m pilado r d e C q u e vam o s a u tiliza r es e l P C W d e la casa C C S In c . A su v ez , e l co m pilado rlo in teg ra rem o s en u n entorno de desarrollo integrado (ID E ) qu e nos va a perm itir desarro llar to d asy cad a u n a d e las fases q u e se co m p o n e n u estro p ro ye c to , d esd e la ed ic ió n h as ta la com pilac ió npasan d o po r la d epu ració n d e erro res . L a ú ltim a fase , a ex cep ció n d e la depu ració n y re toqueshard w are finales, será p rogram ar el P IC de las ta rjetas a u tilizar en e l con tro l de l m o to r..

A l igu al qu e e l co m pilad o r d e T urb o C , éste " traduce" e l cód igo C del arch iv o fuen te (.C ) alengu aje m áqu in a para los m icroco n tro lado res P IC , generando así un arch iv o en fo rm atoh e x ad ecim al ( .H E X ). A d em ás d e éste , tam b ién genera o tro s se is fiche ro s .

3.2 Directivas Del Preprocesador

T odas las d irec tivas del p rep ro cesado r co m ienz an co n e l carac te r # segu id o po r u n co m an d oesp ec ífico . A lgu n as d e esta s d irec tiv as so n ex ten sio n es d el C están d a r. E l C propo rc ion a un ad irec tiv a del p rep rocesado r, que los compiladores aceptan, y q u e p erm ite ign o ra r o actu a r so b relo s d ato s q u e sigu en . N u estro co m pilado r ad m ite cualqu ier d irec tiv a del p rep ro cesado r q u eco m ience co n P R A G M A , lo qu e n o s asegu ra la co m p a tib ilid ad co n o tro s co m p ilad o res .

3.2.1 Control De Memoria

#B IT iden tificador = x .y

E sta d irec tiv a crea rá u n iden tificad o r "id " q u e pu ed e u tiliz arse co m o cualqu ie r S H O R TIN T (en tero co rto ; un b it). E l iden tificado r referenciará un ob je to en la posic ió n de m em oriax m ás e l b it d e d esp laz am ien to y.

Ejem plo:

#bit tiempo = 3.4int resultado;#bit resultado_impar = resultado.0...if (resultado_ impar)...

Page 42: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

41

#B Y T E Iden tificador = X

E sta d irec tiv a c reará u n iden tificad o r "id " q u e pu ed e u tiliza rse co m o cualqu ie r N T (u nb yte). E l id en tificad o r re fe ren ciará u n o b je to en la p osic ió n d e m em oria x , do n d e x p u ed ese r u n a co n stan te u o tro id en tificad o r. S i x es o tro id en tif icad o r, en to n ces éste e sta rálo ca liz ad o en la m ism a d irecc ió n q u e el id en tifica d o r " id " .

Ejem plos:

#byte status = 3#byte port_b = 6struct {short int r_w;short int c_d;int no_usado : 2;int dato : 4; } port_a;#byte port_a = 5...

port_a.c_d = 1;

3.2.2 Identificadores Predefinidos

_ _D E V IC E _ _

E ste id en tificado r d el p re -p rocesad o r es defin id o po r el com pilado r con el núm ero base d e ld isp ositiv o actu al. E l nú m ero b ase n o rm alm en te es e l nú m ero qu e sigu e a la /s le tra /s en elnú m ero d e co m po n en te o refe ren cia d e u n d isp o sitivo . P o r e jem p lo lo s P IC 1 6 C 8 4 tienen elnúm ero base 84 .

E jem plo:

#if __device__==84setup_port_a( todas_entradas );#endif

3.2.3 Directivas Del C Estándar

#IF expresión _constante , # E L S E y #E N D IF

E l p re -p rocesado r evalú a la ex p resión _ c o n s tan te y s i e s d is tin ta d e c e ro p ro ce sa rá la slín eas h asta e l # E L S E -q u e es o pcion al- o en su d efecto h asta e l # E N D IF .

E jem plo:

#if (a + b + c) > 8printf(" Demasiados parámetros ");#endif

Page 43: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

42

#IF D E F , # E L S E y #E N D IF

E sta d irec tiv a actú a co m o el # IF só lo qu e aqu í e l p re -p rocesad o r sim p lem en te co m p ru eb aqu e reco no ce el id esp ec ificad o (cread o co n u n # D E F IN E ). N ó tese q u e # IF D E F verifica sise defin ió un id pero # IF N D E F com pru eb a que no está defin id o el id .

E jem plo:

#ifdef DEBUGprintf("punto de debug en ...");#endif

#E R R O R

E sta d irec tiv a p a ra el co m pilado r y em ite e l m ensaje qu e se inclu ye a con tinu ació n (en lam ism a línea ) d e la p ro p ia d irec tiv a . E l m ensa je pu ed e in clu ir m acro s . T am bién p ued eu tilizarse pa ra alerta r a l u su a rio d e u n a situ ació n an ó m ala en tiem p o d e co m pilac ió n .

Ejem plos:

#if BUFFER_SIZE > 16#error El tamaño del buffer es demasiado grande#endif#error Macro test: min(x,y)

#IN C L U D E < N om bre_F ich ero> , #IN C L U D E " N om bre_F ich ero"

E sta d irec tiv a h ace qu e el co m pilado r in clu ya en e l fich e ro fu en te e l tex to qu e con tien e e larch iv o esp ecificad o en < N o m b re_ F ich ero > .

S i e l n o m b re d e l fich e ro se in c lu ye en tre lo s s ím b o lo s '< > ' e l co m p ilad o r b u sca el ficheroen el d irec to rio IN C L U D E .

S i se p o n e en tre co m illa s d o b les " " e l co m p ilad o r bu sca p rim ero en e l d irec to rio actu al od irec to rio d e trab ajo y s i n o lo en cu en tra , en to n ces lo b u sca en lo s d irec to rio s IN C L U D Edel com pilado r.

E jem plo:

#include <16C54.H>#include "reg_C84.h"

3.2.4 Especificación De Dispositivos

#D E VIC E C H IP

E sta d irec tiv a d efin e al com pilad o r la arqu itec tu ra u tilizada d e h ard w are . E sto d ete rm in a lam em o ria R A M y R O M así co m o e l ju ego d e in stru cc io n es. P a ra lo s ch ip s (u C 's ,m em o rias , e tc ) co n m ás d e 2 5 6 b ytes d e R A M se p u ed e seleccion a r en tre pu n tero s d e 8 o

Page 44: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

43

1 6 b its . P ara usa r p un te ro s d e 1 6 b its h a y q u e añ ad ir * = 1 6 d espu és d e l no m b re del ch ip(u C , m em oria , e tc .) o en un a nu ev a línea desp ués d e la d ecla rac ió n d el ch ip . S e pued eob tener in fo rm ación sob re un dispositiv o con el p rog ram a P IC C H IP S .

Ejem plos:

#device PIC16C67 *=16#device PIC16C74#device *=16

#F U S E S opcion es

E sta d irec tiv a d efin e q u é fusib le s d eb en activa rse en el d isp ositiv o cu and o se p ro g ram e .E sta d irec tiv a n o afecta a la co m pilac ió n ; sin em b argo , es ta in fo rm ac ió n se po n e en e larch iv o d e salid a . S i lo s fu sib les n ecesitan esta r en fo rm ato P ara llax , h a y qu e ag rega r P A Ren op cio n es . Hay que u tiliza r la u tilid ad P IC C H IP S p ara d eterm in a r qu é op cion es so nválid as p a ra cad a d isp os itivo . L a o p c ió n S W A P tien e la fu n ció n esp ec ia l d e in tercam b ia rlo s b ytes a lto y b ajo d e lo s d ato s q u e n o so n p arte de l p ro g ram a , en el arch iv o H ex . E stain fo rm ació n es n ecesaria p ara algu no s p ro g ram ad ores d e d isp o sitiv o s. A lgu n as d e laso p c io n es m ás u sad as so n :

LP, XT, HS, RC WDT, NOWDTPROTECT, NOPROTECTPUT, NOPUT (Power Up Timer) BROWNOUT, NOBROWNOUT PAR (Parallax FormatFuses) SWAP

E jem plo:

#fuses HS,WDT

3.2.5 Calificadores De Función

#IN T _D E F A U L T fu n ción _de_in terru pción _por_defau lt

L a fun ció n que sigue a la d irec tiv a será llam ad a si el P IC activ a una in terru pció n y n in gun ad e las b an d eras d e in te rrup ció n está activ a .

E jem plo:

#int_default control_interrupcion(){activar_int=VERDADERO;}

#IN T _G L O B A L fu n ción

L a fu n ció n qu e sigu e a esta d irec tiv a reem p laz a al d is trib u id o r d e in te rru p cion es de lco m p ilad o r; d ich a fu n c ió n to m a el co n tro l d e las in te rru p cio n es y e l co m p ilado r no salvan in gú n reg istro . N orm alm en te n o es n ecesa rio usa r esto y d eb e tra ta rse co n g ran p ru d en cia .

Page 45: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

44

#IN T _xx x fu n ción _de_in terru pción

E stas d irec tivas especifican q u e la fun ció n q u e le sigu e es un a fu n ció n d e in te rru pción . L asfu ncio nes d e in terrupció n no pueden tener n ingú n parám etro . C om o es natu ra l, no to d as la sd irec tiv as p u ed en u sa rse co n to d o s lo s d isp o sitiv os . L as d irec tiv as d e este tip o qu ed isp on em o s son :

#IN T_EX T IN T E R R U P C IÓ N E X T E R N A#INT_RTCC D E S B O R D A M IE N T O D E L T IM E R 0 (R T C C )#INT_RB C A M B IO E N U N O D E L O S P IN E S B 4 , B 5 , B 6 , B 7#INT_AD C O N V E R S O R A /D#INT_EEPRO M E SC R IT U R A E N L A E E P R O M C O M P L E T A D A#IN T_TIM ER 1 D E S B O R D A M IE N T O D E L T IM E R 1#IN T_TIM ER 2 D E S B O R D A M IE N T O D E L T IM E R 2#IN T_C C P1 M O D O C A P T U R A D E D A T O S P O R C C P 1#IN T_C C P2 M O D O C A P T U R A D E D A T O S P O R C C P 2#IN T_SSP P U E R T O D E S E R IE IN T E L IG E N T E (S P I, I2C )#IN T_PSP P U E R T O P A R A L E L O#INT_TBE S C I D A T O S E R IE T R A N S M IT ID O#INT_RDA S C I D A T O S E R IE R E C IB ID O#IN T_C O M P C O M P A R A D O R D E IN T E R R U P C IO N E S#INT_A DO F D E S B O R D A M IE N T O D E L A /D C D E L P IC 14000#INT_RC C A M B IO E N U N P IN C x#INT_I 2C I2 C D E L 14000#INT_BUTTO N P U L S A D O R D E L 1400 0#INT_LC D L C D 92x

E l co m pilad o r sa lta a la fun ció n d e in te rrup ció n cu and o se detec ta u n a in te rrup ción . E s elp rop io com pilado r e l encargad o de generar e l cód igo para guardar y restau rar e l estad o de lp rocesado r.

T am bién es el com pilado r qu ien bo rrará la in terrupció n (la band era). S in em bargo , nuestrop ro gram a es el encargad o de llam ar a la funció n E N A B L E _ IN T E R R U P T () para activarp rev iam en te la in te rrup ció n jun to co n e l señ alizad o r (b and era ) g lob al d e in terru p cio n es.

E jem plo:

#int_ad control_adc(){adc_activo=FALSO;

}

#S E P A R A T E fu n ción

#SEPARATE le dice al compilador que el procedimiento o función que sigue a la directiva serállevado a cabo por SEPARADO. Esto es útil para evitar que el compilador haga automáticamenteun procedimiento en línea (INLINE). Esto ahorra memoria ROM pero usa más espacio de la pila.El compilador hará todos los procedimientos #SEPARATE, separados, tal como se solicita, aúncuando no haya bastante pila.

Page 46: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

45

E jem plo:

#separateswap_byte (int *a, int *b) {int t;t=*a;*a=*b;*b=t;}

3.2.6 Librerías Incorporadas

#U S E D E L A Y (C L O C K =frecu en cia)

E sta d irec tiv a in d ica al com pilad o r la frecu encia de l p ro cesad o r, en cic lo s p o r segu nd o , a lavez q u e h ab ilita e l u so d e las fu ncion es D E L A Y _ M S () y D E L A Y _ U S (). O p c io n a lm en tep o d em o s u sa r la fu n c ió n restart_W D T () para que el com pilado r re in ic ie e l W D T durante e lretardo .

Ejem plos:

#use delay (clock=20000000)#use delay (clock=32000, RESTART_WDT)

3.3 Funciones Permitidas Por El Compilador De C

P R IN T F ([fun ction ], string , [valu es])

L a fu nció n de im presió n fo rm atead a P R IN T F saca una caden a de caracteres a l estánd a rserie R S -2 3 2 o a un a fu nció n esp ecificad a . E l fo rm ato está re lac ion ad o co n el argu m en toque ponem o s den tro de la caden a (string ).

C u and o se usan v ariab les , s trin g d eb e se r un a co nstan te . E l ca rác te r % se p on e d en tro de lacadena para ind icar un valo r variab le , segu id o de uno o m ás caracteres que dan fo rm ato a ltipo de in fo rm ació n a rep resen tar.

S i po n em o s % % obtenem o s a la sa lid a u n so lo % . E l fo rm ato tien e la fo rm a gen érica % w t,d o n d e w es o p ta tiv o y p u ed e se r 1 ,2 ,...,9 . E sto es p a ra esp ec ifica r cu án to s ca rac te res so nrep resen tad o s; s i e leg im o s e l fo rm ato 0 1 ,...,09 in d icam o s ce ro s a la izq u ie rd a , o tam b ién1 .1 a 9 .9 para rep resen tac ió n en pu n to flo tan te .

t es e l tip o d e fo rm ato y p u ed e se r u n o d e lo s sig u ien tes:

C C arácterU E n te ro sin sig n ox E n te ro e n H e x (e n m in ú sc u la s )X E n te ro e n H e x (e n m a yú scu la s)D E n te ro c o n sig n o

%e R ea l en fo rm a to ex p o n en c ia l(n o tac ió nc ien tífica )

Page 47: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

46

%f R ea l (F lo a t)Lx E n te ro la rg o e n H e x (e n m in ú sc u la s)L X E n te ro la rg o e n H e x (e n m a yú sc u la s)Lu D ec im a l la rg o sin s ig n oLd D ec im a l la rg o c o n s ig n o% S im p le m e n te u n %

Ejem plos:

byte x,y,z;

printf (" Hola ");printf("RTCCValue=>%2x\n\r",get_rtcc());printf("%2u %X %4X \n\r",x,y,z);printf(LCD_PUTC, "n=%c",n);

Ejem plos de form atos:

Especificador V alor=0x12 V alor=0xfe% 0 3u 018 254

% u 18 254% 2 u 18 *% 5 18 254% d 18 -2 [A 1]% x 12 fe% X 12 F E

% 4 X 0012 0 0 F E* E l re su lta d o e s im p re c iso - Info rm ació n no válida.

S E T U P _A D C (m ode)

E sta fun ció n co n figu ra (pe rm ite estab lece r lo s p a rám etro s ) d el con v erso r an a ló g ico /d ig ita l.P a ra e l ch ip 1 4 0 0 0 , es ta fu n ció n estab lece la co rrien te d e ca rga . L o s m o d o s so n lo ss ig u ien tes :

ADC_OFF ADC_CLOCK_DIV_2ADC_CLOCK_DIV_8ADC_CLOCK_DIV_32ADC_CLOCK_INTERNAL

E jem plo:

setup_adc( ADC_CLOCK_INTERNAL );

3.3.1 Funciones De I/O Discreta

IN P U T (pin )

D evuelve el estado '0 ' o '1 ' de la patilla in d icad a en p in . E l m éto d o d e acceso d e I/Odepend e de la ú ltim a direc tiv a #U S E *_ IO u tilizada . E l valo r de re to rn o es un en tero co rto .

Page 48: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

47

E jem plo:

while ( !input(PIN_B1) );

N ota: E l a rgu m en to p ara la s fu n cio n es d e en trad a y salid a es un a d irecció n d e b it. P o re jem p lo , p ara el b it 3 º del p o rt A (b yte 5 d e lo s S F R ) ten d ría u n v alo r d ire cc ió n de5*8+ 3 = 43 . E sto se p u ed e d efin ir co m o sigu e : #define pin3_portA 43.

L o s p in es o p atillas d e lo s d isp ositiv o s están defin id o s co m o P IN _ X X en los arch iv o s d ecab ecera * .H . É sto s , se pu ed en m o d ifica r p a ra qu e lo s no m bres d e lo s p in es sean m á ssign ifica tivo s p ara u n p ro yec to d ete rm in ado .

O U T P U T _B IT (pin , valu e)

E sta fu n ció n saca e l b it dad o en v alu e (0 ó 1 ) p o r la p atilla d e I/O esp ecificad a en p in . E lm o d o d e estab lece r la d irecció n de l reg istro está dete rm in ad a po r la ú ltim a d irec tiva #U S E*_ IO .

E jem plo:

output_bit( PIN_B0, 0); // es lo mismo que output_low(pin_B0);output_bit( PIN_B0,input( PIN_B1 ) ); // pone B0 igual que B1output_bit( PIN_B0, shift_left(&data, 1, input(P IN_B1)));

// saca por B0 el MSB de 'data' y al mismo tiempo// desplaza el nivel en B1 al LSB de data.

O U T P U T _F L O A T (pin )

E sta fu n c ió n p o n e la p a tilla esp ec ificad a co m o p in en e l m od o d e en trada . E sto perm itiráque la patilla sea flo tan te para rep resen tar un n ivel alto en una conex ió n de tip o co lec to rab ie rto .

E jem plo:

// guardamos la lectura del port A en datoif( (dato & 0x80)==0 ) // comprobamos si es '1' el MSB

output_low(pin_A0); // si es '1' ponemos a cero el pin A0 else

output_float(pin_A0); // de lo contrario, ponemos el// pin A0 a uno

O U T P U T _H IG H (pin )

P on e a 'un o ' e l p in in d icad o . E l m éto d o d e acceso d e I/O d ep en d e d e la ú ltim a d irec tiv a# U S E * _ IO u tilizad a . E jem plo: output_high(PIN_A0);

O U T P U T _L O W (pin )

P on e a 'ce ro ' e l p in in d icad o . E l m éto d o d e acceso d e I/O d ep en d e d e la ú ltim a d irec tiv a#U S E *_ IO . E jem plo: output_low(PIN_A0);

Page 49: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

48

3.3.2 Funciones De Retardos

D E L A Y _C Y C L E S (cou n t)

E s ta fu nció n realiz a re tardo s segú n el n ú m ero de cic lo s d e in stru cció n esp ecificad o enco u n t; lo s v alo res po sib les v an d esd e 1 a 25 5 . U n cic lo d e in stru cc ió n es igu a l a cu a trop e rio d o s d e re lo j.

E jem plo:

delay_cycles( 3 ); //retardo de 3ciclos instrucción; es igual que un// NOP

D E L A Y _ M S (tim e)

E sta fu nció n realiz a re ta rd o s d e l v alo r esp ecificad o en tim e . D ich o v alo r de tiem p o es e nm ilisegu n d o s y e l ran go es de 0 a 65535.

P ara ob ten er re tard o s m ás largo s as í com o retardo s 'v ariab les ' e s p reciso h ace r llam adas auna funció n separada .

E s p reciso u tiliz a r la d irec tiv a # u se d ela y(c lo ck = frecu en c ia ) an tes d e la llam ad a a estafu nció n , p ara qu e el co m pilado r sep a la frecu en cia d e re lo j.

Ejem plos:

#use delay (clock=4000000) // reloj de 4MHz delay_ms( 2 ); //retardo de 2msvoid retardo_segundos(int n) { // retardo de 'n' segundos; 0 <= n =>255for (; n!=0; n--)delay_ms( 1000 ); // 1 segundo}

D E L A Y _U S (tim e)

E sta fu nció n realiz a re tardo s d el v alo r esp ecificad o en tim e . D ich o v alo r es enm icrosegu nd o s y e l ran g o v a d esd e 0 a 6 5 53 5 . E s n ecesa rio u tiliza r la d irec tiv a # use d ela yan tes d e la llam ad a a esta fu n ció n p ara q u e el co m pilado r sep a la frecu en cia d e re lo j.

Ejem plo:

#use delay(clock=20000000)delay_us(50);int espera = 10;delay_us(espera);

Page 50: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

49

3.3.3 Funciones De Control Del Procesador

D IS A B L E _IN T E R R U P T S (level)

E sta fu nció n d esactiv a la in te rrup ción del n ivel dad o en level. E l n ivel G L O B A L prohíbetod as las in terru p cio nes , au n qu e estén h ab ilitadas o p erm itid as . L o s n iv ele s d e in terru p ció nson :

o G L O B A L o IN T _A D o IN T _C C P 2 o IN T _C O M Po IN T_EX T o IN T _ E E P R O M o IN T _S S P o IN T _A D O Fo IN T _R T C C o IN T _T IM E R 1 o IN T _P S P o IN T _R Co IN T _R B o IN T _T IM E R 2 o IN T _T B E o IN T _I2Co IN T _A D o IN T _C P 1 o IN T _R D A o IN T _B U T T

O NE jem plo:

disable_interrupts(GLOBAL); /* prohíbe todas las interrupciones */

E N A B L E _IN T E R R U P T S (level)

E sta funció n activ a la in terrupció n del n ivel dado en level. E l n iv el G L O B A L p erm ite to d aslas in terru p cio n es q u e es tén h ab ilitad as d e fo rm a ind iv id ual.

E jem plo:

disable_interrupts(GLOBAL); // Prohíbe todas las interrupcionesenable_interrupts(INT_AD); // Quedan habilitadas estas dosinterrupciones, enable_interrupts(INT_I2C); //pero hasta que no se

//habilite GLOBAL, no//podrán activarse

enable_interrupts(GLOBAL); // Ahora sí se pueden producir las//interrupciones anteriores

E X T _IN T _E D G E (edge)

E sta fu nció n d eterm in a el flanco d e activ ació n d e la in te rru pció n ex tern a . E l flan co puedeser de subid a (L _T O _H ) o de bajad a (H _T O _ L ).

Ejem plo:

ext_int_edge( L_TO_H );

3.3.4 Contadores / Temporizadores

G E T _R T C C ()G E T _T IM E R 0()G E T _T IM E R 1()i= G E T _T IM E R 2()

Page 51: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

50

E s tas funciones devuelven el valo r de la cuenta de un contado r en tiem p o real. R T C C yT im er0 so n el m ism o . E l T im er1 es d e 1 6 b its y lo s o tro s so n d e 8 b its .

E jem plo:

while ( get_rtcc() != 0 ) ;

S E T _R T C C (valu e)S E T _T IM E R 0(va lu e)S E T _T IM E R 1(va lu e)S E T _T IM E R 2(va lu e)

E stas fu n cio n es activ an el tim er o tem p oriz ad o r a l v alo r esp ecificad o . R T C C y T im er0 so nel m ism o . T im er1 es d e 1 6 b its y lo s o tro s so n d e 8 b its .

E jem plo:

if ( get_rtcc()==2 5 ) set_rtcc(0);

SE T U P _C O U N T E R S(rtcc_sta te, ps_state)

E sta fu n c ió n in ic ia liz a e l tim er R T C C o el W D T . E l rtcc_ s ta te d e te rm in a q u é es lo queactiv a el R T C C . E l ps_s ta te estab lece u n p re -sca ler para el R T C C o el W D T . E l p re- sca le ra larg a el c ic lo d e l co n tad o r in d icado . S i se activ a el p re -sca ler del R T C C el W D T se po nd ráa W D T _ 18 M S . S i se activ a el p re -sca ler del W D T el R T C C se pone a R TC C _D IV _1.

V alores del rtcc_state:

R T C C _IN T E R N A LR T C C _E X T _L_T O _HR T C C _E X T _H _T O _L

V alores del ps_state:

R T C C _D IV _2R T C C _D IV _4R T C C _D IV _8R T C C _D IV _16R T C C _D IV _32R T C C _D IV _64R T C C _D IV _128R T C C _D IV _256W D T _ 1 8 M SW D T _ 3 6 M SW D T _ 7 2 M SW D T _144 M SW D T _288 M SW D T _576 M SW D T _1152 M SW D T _2304 M S

E jem plo:

setup_counters (RTCC_INTERNAL, WDT_2304MS);

Page 52: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

51

3.3.5 Funciones De Manejo De Cadenas

E stas fu n cio n es están d efin id as en el arch iv o d e cab ecera strin g .h , qu e deb e in clu irse con unad irec tiv a # includ e en el fuen te .

T o d as la s fu ncion es lis tad as aq u í o peran co n constan te s d e caden a co m o p arám etro . A n te s d eu tiliza r esta s fun cion es , co n v ien e cop ia r (co n S T R C P Y ) u n a con stan te d e cad en a a u n a cad en a enla R A M .

C H A R * S T R C A T (ch ar *s1 , ch ar *s2)

A ñade un a copia de la caden a s2 al final de s1 , y devuelv e un puntero a la nueva cad en a s1 .

C H A R * S T R C H R (char *s, char c)

E n cu en tra la p rim era co incid en cia d el ca rác te r c en la cad en a s y d ev ue lv e u n pu n tero alca rác te r.

C H A R * S T R R C H R (char *s, ch ar c)

E n cu en tra la ú ltim a co in c id en cia d el ca rác te r c en la cadena s y devuelv e un puntero alca rá c te r.

SIG N E D IN T S T R C M P (ch ar *s1 , ch ar *s2)

C om para s1 y s2 ; devuelv e -1 s i s1 < s2 , 0 s i s1 = s 2 , 1 s i s1 > s 2 .

S IG N E D IN T S T R N C M P (ch ar *s1 , ch ar *s2, in t n )

C o m para u n m áx im o d e n caractere s (q u e n o v ayan segu ido s d e 0 ) d e s1 a s2 ; devuelve -1s i s1 < s 2 , 0 s i s1 = s2 , y 1 s i s1 > s2 .

SIG N E D IN T S TR IC M P (ch ar *s1 , ch ar *s2)

C o m p ara s1 y s2 sin h ace r d is tin c ió n en tre m a yú scu las y m in ú scu las . D ev u e lv e -1 s is1 < s2 , 0 s i s1 = s2 , y 1 s i s1 > s2 .

CH A R * S T R N C P Y (ch ar *s1 , ch ar *s2 , in t n )

C o p ia u n m áx im o d e n caractere s (qu e n o v a yan segu id o s d e 0 ) d e s2 a s1 ; s i s2 tien em en o s d e n caracteres , se añ aden '0 ' a l fin a l.

IN T S T R C S P N (ch ar *s1 , ch ar * s2)

C alcu la la lo n gitu d d e la p o rc ió n in ic ia l m ayo r d e s1 , q u e co nsis te en teram en te d ecaractere s q u e n o están en s2 .

Page 53: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

52

IN T S T R S P N (char *s1, ch ar *s2)

C alcu la la lo n g itud d e la p o rc ió n in ic ia l m a yo r d e s1 , q u e co n sis te en te ram en te d eca rac te res q u e están en s2 .

IN T STR L E N (char *s)

O b tien e la lon g itu d d e s1 (ex c lu yen d o el ca rác te r '\0 ').

C H A R * S T R L W R (ch ar *s)

R eem plaz a m a yú scu la s co n m inú scu la s y d ev u elv e u n p un te ro a s.

C H A R * S T R P B R K (ch ar *s1, ch ar *s2)

L o ca liz a la p rim era co in cid en cia d e cu alqu ie r carác te r d e s2 en s1 y d evu elv e un p un tero a lcarác te r s1 si s2 es u n a cad en a v acía .

C H A R * S T R S T R (ch ar *s1 , ch ar *s2)

L o ca liz a la p rim era co in c id en cia d e u n a secu en c ia d e ca rac te res d e s2 en s1 y devuelv e unpuntero a la secuencia; devuelv e null si s2 es un a cadena vacía.

C H A R * S T R T O K (ch ar *s1 , ch ar *s2)

E n cu en tra la p róx im a m uestra en s1 , d elim itad a po r u n carácter d e sep aració n d e caden a des2 (qu e puede ser d iferen te de una llam ad a a la o tra); devuelve un puntero a é l.

L a p rim era llam ad a in ic ia , a l p rin c ip io d e S 1 , la búsq ued a d el p rim er ca rácte r q u e n o estécon ten id o en s2 , y dev ue lv e N U L L si no lo encu en tra .

S i n o se encu en tra , este es e l in ic io (p u n to d e p arid a ) d el p rim er tok en (valor de re to rn o ).L a F u n ció n en ton ces bu sca d esd e allí u n carácte r co n ten id o en s2 .

S i n o se en cu en tra , e l to k en ac tu al se ex tien d e h asta e l ex trem o d e s1 , y las b ú sq u ed assigu ien tes de un token devo lverán nu ll.

S i se en cu en tra u n o , se so b reesc rib e p o r '\0 ' q u e term in a e l tok en actu al. L a fu n ció n gu ard ael pu n tero al carác te r sig u ien te d esd e el qu e se in ic iará la p róx im a búsqueda.

C ad a llam ad a poste rio r, co n 0 co m o p rim er a rgu m en to , in ic ia la bú sq ued a a partir d e lpuntero guardado .

Page 54: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

53

3.3.6 Funciones De Entrada A/D

S E T U P _A D C _P O R T S (valu e)

E sta fu n ció n co n figu ra lo s p in es d el A D C p ara qu e sean an aló g icos , d ig ita le s o algun aco m bin ació n d e am bos . L as co m bin acio n es pe rm itidas v arían , d epen d iend o d el ch ip .

L as con stan tes usad as tam b ién so n d iferen tes p ara cad a ch ip . V éase el arch iv o d e cab ece ra* .h p ara cad a P IC co n cre to . L as co n stan tes A L L _ A N A L O G y N O _ A N A L O G S so nv á lid as p a ra to d o s lo s ch ip s.

A lg u n o s o tro s e je m p lo s d e co n s tan te s so n :

RA0_RA1_RA3_ANALOG

E sto h a ce q u e lo s p in es A 0 , A 1 y A 3 se an an a ló g ic o s y lo s res tan te s sean d ig ita le s . L o s+ 5 v se usan co m o referencia ; véase el s igu ien te ejemplo.

Ejem plo:

RA0_RA1_ANALOG_RA3_REF

L a s p a tilla s A 0 y A 1 so n an aló g icas; la p atilla R A 3 se usa co m o vo lta je d e re fe ren cia yto d as la s d e m ás p a tilla s so n d ig ita le s .

E jem plo:

Setup_adc_ports ( ALL_ANALO G );

S E T U P _A D C (m ode)

E sta funció n p repara o con figu ra e l co nv erso r A /D . P ara la se rie 1 4 00 0 esta fu n ció nestab lece la co rrien te d e ca rga . V éase e l arch iv o 140 00 .H p ara lo s v alo res segú n el m o d od e fu n cio n am ien to . L o s m o d o s son :

o A D C _ O F Fo A D C _C L O C K _D IV _2o A D C _C L O C K _D IV _8o A D C _C L O C K _D IV _32o A D C _C L O C K _ IN T E R N A L

E jem plo:

setup_adc(ADC_CLOCK_INTERNAL);

Page 55: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

54

S E T _A D C _C H A N N E L (can al)

E sp ec ifica e l can a l a u tiliz a r p o r la fu n c ió n RE A D _ A D C (). E l n ú m ero d e can al em p ieza en0 . E s p reciso esp era r u n co rto esp acio d e tiem p o d esp u és d e cam bia r e l can al d ead q u isic ió n , an tes d e qu e se p u ed an o b ten e r lec tu ras d e d ato s v álid os.

E jem plo:

set_adc_channel(2);

i= R E A D _A D C ()

E sta funció n lee el valo r d ig ital del converso r an aló g ico d ig ita l. D eb en h acerse llam ad as aS E T U P _A D C () y S E T _ A D C _C H A N N E L () en algú n m om en to an tes de la llam ad a a estafu nció n .

E jem plo:

setup_adc( ALL_ANALOG );set_adc_channel( );

while ( input(PIN_B0) ){ delay_ms( 5000 );value = read_adc();printf("A/D value = %2x\n\r",value);}

3.3.7 Funciones Para La Manipulación De Bits

B IT _C L E A R (var,b it)

E sta funció n sim p lem en te bo rra (pon e a '0 ') e l d íg ito esp ecificad o en b it (0 -7 ó 0-15 ) delb yte o palab ra apo rtad o en var. E l b it m eno s sign ifica tiv o es el 0 . E s ta fu n ció n esex ac tam en te igu a l q u e : v a r & = ~ (1 < < b it);

E jem plo:

int x;x=5;bit_clear(x,2); // x = 1

B IT _S E T (var,b it)

E sta fun ció n p on e a '1 ' e l d íg ito esp ecificad o en b it (0 -7 o 0-15 ) del b yte o palab ra apo rtad oen var. E l b it m eno s sign ifica tiv o es el 0 . E sta fu n ció n es igu al q u e: va r | = (1 < < b it);

E jem plo:

int x;x=5;bit_set(x,3); // x = 13

Page 56: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

55

B IT _T E S T (var,b it)

E sta fun ció n ex am in a el d íg ito esp ecificad o en b it (0 -7 o 0-15 ) del b yte o palab ra ap o rtad oen v ar. E sta fu nció n es igu al, aun qu e m u ch o m ás eficaz q u e esta o tra fo rm a: ((var & (1 < <bit)) != 0)

E jem plo:

if( bit_test(x,3) || !bit_test (x,1) ){//o el bit 3 es 1 o el bit 1 es 0

}

3.4 Definición De Datos

Si T Y P E D E F se po n e delan te d e la d efin ic ió n d e u n d ato , en ton ces n o se asign a esp acio d em em o ria a l id en tificad o r a m en o s qu e sea u tilizad o co m o u n esp ecificad o r d e tip o en o trasd e fin ic io n es d e d a to s.

S i d elan te d el id en tificad o r p on em o s C O N S T en to n ces , e l id en tificad o r es tra tad o co m o co n s tan te .L as co n s tan tes d eb en se r in ic ia liz ad as y n o pu ed en cam bia r en tiem p o d e ejecu ció n .

N o es tán p erm itid o s p u n te ro s a co n stan tes . S H O R T es u n tip o esp ecia l u tiliz ad o p ara gen era rcó d ig o m u y efic ien te p ara la s operacion es de I/O .

N o se perm iten las a rrays d e S H O R T n i lo s p un tero s a S H O R T . L a s igu ien te tab la m u estra lasin tax is p a ra la s d e fin ic io n es d e d ato s .

Ejem plos:

int a,b,c,d;typedef int byte;typedef short bit;

bit e,f;byte g[3][2];char *h;enum boolean {false, true};boolean j;byte k = 5;byte const SEMANAS = 52;byte const FACTORES [4] = {8, 16, 64, 128};

struct registro_datos {byte a [2];byte b : 2; /*2 bits*/ byte c : 3; /*3bits*/ int d;

}

Page 57: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

56

DEFINICIONES DE DATOS

typ ed ef [ca lificad o r_ tip o ] [esp ec ificad o r_ tip o ] [id en tificado r]static V ariab le g lo ba l e in ic ia lizad a a 0auto L a v ariab le ex iste m ien tra s e l p ro ced im ien to está activ o

E s el valo r po r defau lt, po r eso no es necesario poner au to

Especificadores de tipo:

unsigned defin e u n nú m ero d e 8 b its s in sign ounsigned int defin e u n n úm ero d e 8 b its s in sign oint defin e u n nú m ero d e 8 b its s in sign och a r defin e u n nú m ero d e 8 b its s in sign olong defin e u n nú m ero d e 1 6 b its s in signolong int defin e u n nú m ero d e 1 6 b its s in signosigned defin e u n nú m ero d e 8 b its co n sign osigned int defin e u n nú m ero d e 8 b its co n sign osigned long defin e un núm ero de 16 b its con signofloa t defin e un núm ero de 32 b its en pun to flo tan teshort defin e un b itshort int defin e un b it

Identificador Id en tificad o r de una defin ic ió n T Y P E de tipo

Enum tip o enu m erado , v éase sin tax is a co n tin uaciónStruct estru c tu ra , v éase s in tax is a co n tin u ac ió nU nión un ión , véase s in tax is a c o n tin u ac ió n

declarador:

[const] [*]identificador [expr._constante][= valor_inicial]

enu m erador:

enum [identificador]{[lista_identificadores[= expresión_constante]]

}

estructura y unión:

struct [identificador] {[calificador_tipo [[*]identificador:expresión_constante [expresión_constante]]]

}

unión Ídem

Page 58: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

57

E jem plo:

struct lcd_pin_map {boolean enable;boolean rs; boolean rw;boolean unused;int data : 4;} lcd;

S i p o n em o s expresión_constante d espu és d e u n identificador, d e te rm in a e l n ú m ero d e b its q ueu tiliz a rá d ich o id en tif icad o r. E ste n ú m ero p u ed e se r 1 ,2 , ...8 . S e p u ed en u tiliz a r a rra ys d ed im ensió n m últip le p on ien d o lo s [ ] q u e se p rec isen . T am b ién p o d em o s an id a r es tru ctu ras yu n io n es .

U n id en tificado r d esp u és d e struct puede usarse en otra struct y las { } n o se pu ed en u sa r p a rareu tiliza r la estru ctu ra d e la m ism a fo rm a o tra v ez .

N ota: T od o lo ex p res ad o en tre [] e s o p c io n al, e s d ec ir , se p u ed e especificar o no . S i laex p resió n va en tre {} en tonces ind ica que debe aparecer u n a o m ás veces y en esecaso sep arad o s p o r co m as.

E l identificador desp u és d e en u m es u n tip o d e dato s tan g rand e co m o la m a yo r d e las co ns tan te sd e la lis ta . C ad a u n o d e lo s id en tificad o res d e la lis ta es c read o co m o u n a co n stan te . P o r d e fau lt,e l p rim er id en tificad o r se p o n e a ce ro y lo s s igu ien tes se in c rem en tan en u n o . S i in c lu im o s"= expresión_constante" después de un iden tificado r éste tend rá el valo r de la expresión_constantey lo s sigu ien tes se in c rem en ta rán en u n o .

E jem plo:

enum ADC_SOURCE {an0, an1, an2, an3, bandgap, srefh, srefl, itemp, refa,refb};

3.5 Definición De Función

E l fo rm ato d e la d efin ic ió n d e u n a fu n ció n es co m o sigu e:

[calificador_tipo] identificador ([[especificador_tipo identificador]) {[cuerpo de la función]

}

E l calificador_tipo para una funció n puede ser:

void o unespecificador de tipo

L a defin ic ió n de una funció n puede ir p reced id a po r una de las sigu ien tes d irec tivas del p ro cesado r(ca lificad ores de fu n ción ) p a ra id en tifica r u n a caracterís tica esp ecia l d e la fun ción : #separate#in lin e #in t_ ...

Page 59: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

58

C u and o u tilizam o s un a d e las d irec tiv as m en cio nad as y la fun ció n tien e un p ro to tipo (d eclarac ió nan te rio r a la d efin ic ió n d e la fun ción , y co lo cad a al p rincip io del fichero fuen te) ha y q u e in clu ir lam ism a #directiva en el prototipo y en la definición de la función.

U n a ca racte rís tica n o m u y co rrien te , se h a añad id o al co m pilad o r pa ra a yu d ar a ev ita r lo sp rob lem as creado s po r e l hecho de que no pueden crea rse p u n te ro s a co n stan tes d e cad en as . U n afu nció n q u e tien e u n p arám etro d e tip o ch a r acep ta rá un a constan te d e cad en a . E l com pilado rgenerará un bucle que llam a a la funció n una vez para cada carácter de la caden a.

E jem plo:

void lcd_putc(char c ) {// definición de la función...}lcd_putc ("Máquina parada".);

3.6 Funciones: Parámetros Por Referencia

E l co m pilado r está lim itad o a trabaja r co n p arám etro s po r re fe ren cia .

E sto au m en ta la le g ib ilid ad d el cód ig o así com o la e ficacia d e algu n o s p ro ced im ien to s.

L o s d o s p ro ced im ien to s sigu ien tes so n igu ales pe ro só lo el segu nd o o pera co n p arám etro s p o rreferencia :

funcion_a(int*x,int*y) { / * declaración de la func ión * /(*x!=5);*y=*x+3;

}funcion_a(&a,&b); /* llamada a la función */funct_b(int&x,int&y) { / * declaración de la función * /

/* paso de parámetros por referencia * /if(x!=5)y=x+3;

}funcion_b(a,b); /* llamada a la función */

3.7 Edición De Un Programa En C

P ara crea r u n p ro g ram a ha y q u e segu ir lo s p aso s sigu ien tes:

1. E specificaciones del program a (qué tiene que hacer)2. H acer organigram a3. E scribir el cód igo fuente (conocer el lenguaje)4. C om pilar + Enlazar (L ink)5. D epurar errores, si los hay

Page 60: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 3. PROGRAMACIÓN BÁSICA APLICADA A MICROCONTROLADORES

59

3.8 Estructura De Un Programa En C

D e fo rm a gen era liz ada , la estru ctu ra d e u n p ro g ram a en C tien e e l sigu ien te asp ecto :

declaraciones globalesprototipos de funciones

main() {

variables locales;bloque de sentencias;llamadas a las funciones;}

funcion_1() {

variables locales a función_1;bloque de sentencias;llamada a otra/s funciones;

}

función_n() {

…}

Page 61: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

60

UNIDAD 4PROGRAMACIÓN DEL PROTOCOLO TCP/IP

Antes de comenzar con el desarrollo de la interfaz de usuario, veamos una definición de esta.

4.1 Interfaz De Usuario

La interfaz de usuario es la forma en que los usuarios pueden comunicarse con una computadora, ycomprende todos los puntos de contacto entre el usuario y el equipo. Sus principales funciones son:

Manipulación de archivos y directorios Herramientas de desarrollo de aplicaciones Comunicación con otros sistemas Información de estado Configuración de la propia interfaz y entorno Intercambio de datos entre aplicaciones Control de acceso Sistema de ayuda interactivo.

Nos encontramos con dos tipos de interfaz de usuario:

Interfaces alfanuméricas (intérpretes de mandatos). Interfaces gráficas de usuario (GUI, Graphics User Interfaces), las que permiten

comunicarse con el ordenador de una forma muy rápida e intuitiva.

Y pueden ser de hardware o de software:

En el primer caso se trata de un conjunto de dispositivos que permiten la interacción hombre-máquina, de modo que permiten ingresar y tomar datos del ordenador.

También están las interfaces de software que son programas o parte de ellos que permitenexpresar nuestros deseos al ordenador.

Sin embargo, no siempre se trata de interfaces intuitivas tal como el caso de las interfaces de líneade órdenes (CLI), que se encuentran por ejemplo en algunos sistemas operativos como los NOS delos Routers o algunos shell de Unix, DOS, etc.

4.2 HTML

HTML es el acrónimo inglés de HyperText Markup Language, que se traduce al español comoLenguaje de Marcas Hipertextuales. Es un lenguaje de marcación diseñado para estructurar textos ypresentarlos en forma de hipertexto, que es el formato estándar de las páginas Web. Gracias aInternet y a los navegadores como Internet Explorer, Opera, Firefox, Netscape o Safari, el HTML seha convertido en uno de los formatos más populares y fáciles de aprender que existen para laelaboración de documentos para Web.

Page 62: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

61

4.2.1 Historia Del Estándar

En 1989 existían dos técnicas que permitían vincular documentos electrónicos, por un lado loshipervínculos (links) y por otro lado un poderoso lenguaje de etiquetas denominado SGML. Porentonces un usuario conocedor de ambas opciones, Tim Berners-Lee físico nuclear del CentroEuropeo para la Investigación Nuclear da a conocer a la prensa que estaba trabajando en un sistemaque permitirá acceder a ficheros en línea, funcionando sobre redes de computadoras o máquinaselectrónicas basadas en el protocolo TCP/IP.

A principios de 1990, Tim Berners-Lee define por fin el HTML como un subconjunto del conocidoSGML y crea algo más valioso aún, el World Wide Web. En 1991, Tim Berners-Lee crea el primernavegador de HTML que funcionaría en modo texto y para UNIX.

Los trabajos para crear un sucesor del HTML, denominado HTML +, comenzaron a finales de 1993.HTML+ se diseñó originalmente para ser un súper conjunto del HTML que permitiera evolucionargradualmente desde el formato HTML anterior. A la primera especificación formal de HTML+ se ledio, por lo tanto, el número de versión 2 para distinguirla de las propuestas no oficiales previas. Lostrabajos sobre HTML+ continuaron, pero nunca se convirtió en un estándar, a pesar de ser la baseformalmente más parecida al aspecto compositivo de las especificaciones actuales.

El borrador del estándar HTML 3.0 fue propuesto por el recién formado W3C en marzo de 1995.Con él se introdujeron muchas nuevas capacidades, tales como facilidades para crear tablas, hacerque el texto fluyese alrededor de las figuras y mostrar elementos matemáticos complejos. Aunque sediseñó para ser compatible con HTML 2.0, era demasiado complejo para ser implementado con latecnología de la época y, cuando el borrador del estándar expiró en septiembre de 1995, se abandonódebido a la carencia de apoyos de los fabricantes de navegadores Web. El HTML 3.1 nunca llegó aser propuesto oficialmente, y el estándar siguiente fue el HTML 3.2, que abandonaba la mayoría delas nuevas características del HTML 3.0 y, a cambio, adoptaba muchos elementos desarrolladosinicialmente por los navegadores Web Netscape y Mosaic. La posibilidad de trabajar con fórmulasmatemáticas que se había propuesto en el HTML 3.0 pasó a quedar integrada en un estándar distintollamado MathML.

El HTML 4.0 también adoptó muchos elementos específicos desarrollados inicialmente para unnavegador Web concreto, pero al mismo tiempo comenzó a limpiar el HTML señalando algunos deellos como 'desaprobados'.

4.2.2 Códigos HTML Básicos

<html>: Define el inicio del documento HTML, le indica al navegador que lo que viene acontinuación debe ser interpretado como código HTML.

<head>: Define la cabecera del documento HTML, esta cabecera suele contenerinformación sobre el documento que no se muestra directamente al usuario. Como porejemplo el título de la ventana de su navegador. Dentro de la cabecera <head> podemosencontrar:

o <title>: Define el título de la página. Por lo general, el título aparece en la barra detítulo encima de la ventana

o <link>: Para vincular el sitio a hojas de estilo o íconos. Por ejemplo:<linkrel="stylesheet" href="/style.css" type="text/css">

Page 63: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

62

<body>: Define el contenido principal o cuerpo del documento, esta es la parte deldocumento html que se muestra en el navegador, dentro de esta etiqueta pueden definirsepropiedades comunes a toda la página, como color de fondo y márgenes. Dentro del cuerpo<body> podemos encontrar numerosas etiquetas. A continuación se indican algunas a modode ejemplo:

o <h1>, <h2>, <h3>, <h4>, <h5>, <h6>: encabezados o títulos del documento condiferente relevancia.

<tr>: Fila de una tabla <td>: Celda de datos de una tabla

o <a>: Hipervínculo o enlace, dentro o fuera del sitio web. Debe definirse el parámetrode pasada por medio del atributo href. Por ejemplo: <a

href="http://www.google.com">Google</a> se representa como Google)o <img>: Imagen, requiere del atributo src, que indica la ruta en la que se encuentra la

imagen. Por ejemplo: <img src="./imagenes/mifoto.jpg" />o <font color="#rrggbb">: Color del texto, representado por un código

hexadecimal. "rr"=Red, "gg"=Green, "bb"=Blue. Cada par puede variar entre 00(eltono más oscuro) a ff(más claro).

o <li><ol><ul>: Etiquetas para listas.o <b>: Texto en negritao <i>: Texto en cursivao <u>: Texto subrayadoo <marquee="texto"> o también se puede usar este

<marquee>"texto"</marquee>: texto en movimiento horizontal.

4.3 Desarrollo De La Página Web

////////////////////////////////////////////////////////////////////////////////// Control a distancia en lazo abierto de un motor de C. A. vía el// protocolo TCP/IP///////////////////////////////////////////////////////////////////////////////

#define STACK_USE_ICMP 1#define STACK_USE_ARP 1#define STACK_USE_TCP 1#define STACK_USE_HTTP 1#include "ccstcpip.h" //incluye el archivo tcpip.h

#if STACK_USE_CCS_PICENS #include "tcpip/mlcd.c" //incluye el archivo mlcd.c#endiffloat a_disparo;

Para entender mejor el funcionamiento del programa a desarrollar, veremos unas pequeñasdefiniciones de los protocolos usados, los cuales son incluidos en el comienzo del programa como sepodrá observar.

Page 64: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

63

ICMP

El Protocolo de Mensajes de Control de Internet o ICMP (por sus siglas de Internet ControlMessage Protocol) es el subprotocolo de control y notificación de errores del Protocolo de Internet(IP). Como tal, se usa para enviar mensajes de error, indicando por ejemplo que un serviciodeterminado no está disponible o que un router o host no puede ser localizado

ARP

ARP son las siglas en inglés de Address Resolution Protocol (Protocolo de resolución dedirecciones). Es un protocolo de nivel de red responsable de encontrar la dirección hardware(Ethernet MAC) que corresponde a una determinada dirección IP. Para ello se envía un paquete(ARP request) a la dirección de multidifusión de la red (broadcast (MAC = ff ff ff ff ff ff)) quecontiene la dirección IP por la que se pregunta, y se espera a que esa máquina (u otra) responda(ARP reply) con la dirección Ethernet que le corresponde. Cada máquina mantiene una caché conlas direcciones traducidas para reducir el retardo y la carga. ARP permite a la dirección de Internetser independiente de la dirección Ethernet, pero esto solo funciona si todas las máquinas lo soportan.

HTTP

El protocolo de transferencia de hipertexto (HTTP, HyperText Transfer Protocol) es el protocolousado en cada transacción de la Web (WWW). El hipertexto es el contenido de las páginas web, y elprotocolo de transferencia es el sistema mediante el cual se envían las peticiones de acceso a unapágina y la respuesta con el contenido. También sirve el protocolo para enviar 'informaciónadicional en ambos sentidos, como formularios con campos de texto.

NOTA: El protocolo TCP fue descrito en el Capitulo 1.

En la primer parte del programa se desarrolla la interfase HTML con la que se logra lacomunicación con el proceso, en este caso el motor de C. A.

La primera parte a desarrollar es la Cabecera, donde se presenta el titulo del Proyecto.

//Programa de la página Web a utilizar como interfaz

const char HTML_INDEX_PAGE[]="<HTML><BODY background=http://oncetv-ipn.net/images/fondo2006.jpg TEXT=#000000><HEAD><IMGSRC=\"http://tbn0.google.com/images?q=tbn:fnTVrDMnasfxOM:http://www.esimez.ipn.mx/labrotomecanica/mx.geocities.com/armandozam/images/ipn/esime.gif\"BORDER=4HEIGHT=120 ALIGN=LEFT><IMG SRC=\"http://tbn0.google.com/images?q=tbn:6SRaUW8l-xgkSM:http://www.paginasprodigy.com/rparrao/esime79_archivos/image004.gif\"BORDER=4 HEIGHT=120 WIDTH=110 ALIGN=RIGHT><H1><I><CENTER><P><FONT color = #FFFFFF>INSTITUTO POLITÉCNICONACIONAL</FONT></H1><P>

Page 65: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

64

<H3><FONT color = #FFFFFF>ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA YELÉCTRICA</FONT></H3><P><H3><FONT color = #FFFFFF>UNIDAD ZACATENCO</FONT></CENTER></I></H3><P><HR><MARQUEE bgcolor =black width=1250% scrolldelay=0 ><H1><I><FONT color = #FFFFFF>Control a distancia en lazo abierto de un motor de C. A. vía el protocoloTCP/IP</FONT></I></H1></MARQUEE><HR></HEAD>

<P Align=center><TABLE border = 8 bgcolor = gray cellspacing = 4 cellpadding = 4 width = 250%align=right ><TR><TH colspan =5 align = center bgcolor=#FFFFFF ><H4><A HREF=\"/analog\">PARAVER LOS DATOS DEL EQUIPO DA CLICK AQUI</A></TH></TR><TR><TH colspan =3 align = center ><H4>INTEGRANTES</TH><TH colspan =2 align = center ><H4>ASESORES</A></TH></TR><TR><TD rowspan =3 align = center ><IMGSRC=\"http://photos1.hi5.com/0004/890/140/Aijx74890140-01.jpg\"BORDER=4 HEIGHT=120 WIDTH=120 ALIGN=RIGHT></TD><TD rowspan =3 align = center ><IMGSRC=\"http://photos1.hi5.com/0005/356/838/hBT5Fe356838-01.jpg\"BORDER=4 HEIGHT=120 WIDTH=120 ALIGN=RIGHT></TD><TD rowspan =3 align = center ><IMGSRC=\"http://photos1.hi5.com/0005/856/764/eKojQZ856764-01.jpg\"BORDER=4 HEIGHT=120 WIDTH=120 ALIGN=RIGHT></TD><TD rowspan =3 align = center ><IMG SRC=\"http://isopixel.net/images/ipn.png\"BORDER=4 HEIGHT=120 WIDTH=120></TD><TD rowspan =3 align = center ><IMG SRC=\"http://isopixel.net/images/ipn.png\"BORDER=4 HEIGHT=120 WIDTH=120></TD></TR></TABLE></P>

<FORM METHOD=GET>

<P Align=center><TABLE border = 8 bgcolor = gray cellspacing = 4 cellpadding = 4 width = 500% ><TR><TH colspan= 2 align = center ><H3>ENCENDIDO Y APAGADO DEL MOTOR</TH></TR><TR><TH colspan= 2 align = center > LCD: <INPUT TYPE=\"text\" NAME=\"lcd\"size=17 maxlength=17></TH></TR><TR><TD rowspan =2 align = center >SELECCIÓN DE TIEMPO DE ARRANQUE:<P><INPUT type=\"radio\" name=\"led2\" value=120>10 segundos &nbsp; &nbsp; &nbsp;<INPUT type=\"radio\" name=\"led2\" value=180>15 segundos &nbsp; &nbsp; &nbsp;<INPUT type=\"radio\" name=\"led2\" value=240>20 segundos &nbsp; &nbsp; &nbsp;<P><INPUT type=\"radio\" name=\"led2\" value=0>APAGADO </TD><P2></TR></TABLE> <BR><INPUT TYPE=\"submit\"></FORM></P><P><FONT color = #FFFFFF>%0</FONT><BR><FONT color = #FFFFFF>%1</FONT></BODY></HTML>";

Page 66: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

65

La presentación es la siguiente

Figura 4.1.- Página principal

Con la declaración value=xxx>xx se establecen los valores del ángulo de disparo (a_disparo) dentro dela página Web, con la instrucción “radio” que permitirá enviar los tiempos deseados para elencendido del motor de acuerdo a los requerimientos solicitados.

4.3.1 Página Con Datos Personales Utilizando Link

Una manera sencilla de colocar datos que no son necesarios dentro de la página Web principal(index), es crear una segunda página (about page) ligada con la principal con la ayuda de un “link”.En el desarrollo del proyecto del presente trabajo se muestra un claro ejemplo de lo mencionado, seutiliza una segunda página Web para mostrar los datos de los involucrados en el desarrollo delproyecto, tanto alumnos, como profesores. El siguiente fragmento de código muestra el formato delos datos:

const char HTML_ANALOG_PAGE[]="<HTML><BODY background=http://oncetv-ipn.net/images/fondo2006.jpg TEXT=#FFFFFF><HEAD><IMGSRC=\"http://tbn0.google.com/images?q=tbn:fnTVrDMnasfxOM:http://www.esimez.ipn.mx/labrotomecanica/mx.geocities.com/armandozam/images/ipn/esime.gif\"BORDER=4HEIGHT=120 ALIGN=LEFT>

Page 67: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

66

<IMG SRC=\"http://tbn0.google.com/images?q=tbn:6SRaUW8l-xgkSM:http://www.paginasprodigy.com/rparrao/esime79_archivos/image004.gif\"BORDER=4 HEIGHT=120 WIDTH=110 ALIGN=RIGHT><H1><I><CENTER><P><FONT color = #FFFFFF>INSTITUTO POLITÉCNICONACIONAL</FONT></H1><P><H3><FONT color = #FFFFFF>ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA YELÉCTRICA</FONT></H3><P><H3><FONT color = #FFFFFF>UNIDAD ZACATENCO</FONT></CENTER></I></H3><P><HR></HEAD><P><A HREF=\"/\"><H1>Volver a página principal</H1></A><H1><B><CENTER><U><P>DATOS GENERALES DE LOS INTEGRANTES DELEQUIPO</U></CENTER></B><H1><P>

<IMG SRC=\"http://photos1.hi5.com/0004/890/140/Aijx74890140-01.jpg\"BORDER=8HEIGHT=170 WIDTH=150 ALIGN=LEFT>

<TABLE border = 4 cellspacing = 4 cellpadding = 4 width =450 ><TR><TD><H2><P>Nombre: Guerrero Gudiño Jesús</H1><P><H3><B>Boleta:</B> 2004300835</H3><P><H3><B>Grupo:</B> 9A2V</H3><H3><B>Carrera:</B> Ingeniería en Control y Automatización</H3></TD></TR></TABLE>

<P><P><IMG SRC=\"http://photos1.hi5.com/0005/356/838/hBT5Fe356838-01.jpg\"BORDER=8HEIGHT=170 WIDTH=150 ALIGN=LEFT>

<TABLE border = 4 cellspacing = 4 cellpadding = 4 width =450 ><TR><TD><H2><P>Nombre: Mora Mendoza Iván</H1><P><H3><B>Boleta:</B> 2004300835</H3><P><H3><B>Grupo:</B> 9A2V</H3><H3><B>Carrera:</B> Ingeniería en Control y Automatización</H3></TD></TR></TABLE>

<P><P><IMG SRC=\"http://photos1.hi5.com/0005/856/764/eKojQZ856764-01.jpg\"BORDER=8HEIGHT=170 WIDTH=150 ALIGN=LEFT>

<TABLE border = 4 cellspacing = 4 cellpadding = 4 width =450 ><TR><TD><H2><P>Nombre: Orozco Reyes Jorge Manuel</H1><P><H3><B>Boleta:</B> 2004300918</H3><P><H3><B>Grupo:</B> 9A2V</H3><H3><B>Carrera:</B> Ingeniería en Control y Automatización</H3></TD></TR></TABLE>

<P><P><P><H1><B><LEFT><U><P>ASESORES:</U></LEFT></B><H1><P>

<P><P>

Page 68: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

67

<IMG SRC=\"http://photos1.hi5.com/0010/752/988/75TEgt752988-02.jpg\"BORDER=4HEIGHT=120 WIDTH=120 ALIGN=LEFT>

<TABLE border = 4 cellspacing = 4 cellpadding = 4 width =450 ><TR><TD><H2><P>Asesor tècnico: M. en C. José Antonio Sixto Berrocal</H1><P><H3><B>Depto:</B> Ingeniería Eléctrica</H3></TD></TR></TABLE>

<P><P><IMG SRC=\"http://photos1.hi5.com/0011/535/026/Alq0FO535026-02.jpg\"BORDER=4HEIGHT=120 WIDTH=120 ALIGN=LEFT>

<TABLE border = 4 cellspacing = 4 cellpadding = 4 width =450 ><TR><TD><H2><P>Asesor tècnico: Ing. Enrique Martìnez Roldàn<H3><B>Depto:</B> Ingeniería Eléctrica</H3></TD></TR></TABLE>

<P><P><IMG SRC=\"http://photos1.hi5.com/0012/416/162/bD9Fx5416162-02.jpg\"BORDER=4HEIGHT=120 WIDTH=120 ALIGN=LEFT>

<TABLE border = 4 cellspacing = 4 cellpadding = 4 width =450 ><TR><TD><H2><P>Asesor Metodològico: Ing. Eduardo Silva Doray Espinoza<H3><B>Jefe Depto. de titulaciòn</H3></TD></TR></TABLE>

</BODY></HTML>";

La presentación es la siguiente

Figura 4.2.-Tabla de datos personales con foto incluida en la “about page”

El siguiente fragmento de código proporciona las dos páginas mencionadas, la principal o “index” yla segunda unida con el link a la principal o “about page”.

//Esta es una función de retorno al stack de HTTP//Este proporciona las páginas Web, una index (/) y una about page (/about)

int32 http_get_page(char *file_str) { int32 file_loc=0; static char index[]="/"; static char about[]="/analog";

Page 69: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

68

printf("\r\nRequest %s ",file_str);

if (stricmp(file_str,index)==0) file_loc=label_address(HTML_INDEX_PAGE);

else if (stricmp(file_str,about)==0) file_loc=label_address(HTML_ANALOG_PAGE);

if (file_loc) printf("(FILE=%LU)",file_loc); else printf("(File Not Found)");

return(file_loc);}

//Esta es una función de retorno al stack de HTTP//Este proporciona el manejo para dos caracteres de formato, %0 y %1.//%0 es ADC para el canal 0, %1 es ADC para el canal 1.

int8 http_format_char(int32 file, char id, char *str, int8 max_ret) { char new_str[20]; int8 len=0; int8 i;

*str=0;

switch(id) { case '0': set_adc_channel(0); delay_us(100); i=read_adc(); sprintf(new_str,"<B>AN0 = </B>0x%X",i); len=strlen(new_str); break;

case '1': #if STACK_USE_CCS_PICNET

set_adc_channel(1); delay_us(100); i=read_adc(); sprintf(new_str,"<B>AN1 = </B>0x%X",i); len=strlen(new_str); #else len=0; #endif break;

}

if (len) { if (len>max_ret) {len=max_ret;} memcpy(str,new_str,len);

}

return(len);}

Page 70: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

69

El siguiente fragmento de código declara las instrucciones con las que se logra la comunicación víael protocolo TCP/IP con el motor, así mismo, se desarrolla la interfase con la pantalla lcd de latarjeta utilizada.

// Esta es una función de retorno al stack de HTTP// se fija led1 y led2 ("led1" y "led2") basado en su valor// y cambia la pantalla lcd ("lcd").

void http_exec_cgi(int32 file, char *key, char *val) { static char led2_key[]="led2"; static char lcd_key[]="lcd"; int8 v;

printf("\r\nCGI FILE=%LD KEY=%S VAL=%S", file, key, val);

if (stricmp(key,led2_key)==0) {v=atoi(val); //Relacionar a_disparo con led 2

a_disparo=v; //y v_atoi genera una sola palabraif (v) {

setup_counters(RTCC_INTERNAL,RTCC_DIV_256);

set_timer0 (0);

enable_interrupts(INT_EXT); //Habilita interrupciones externas enable_interrupts(GLOBAL); //Habilita interrupciones globales

while(a_disparo>0) { if(get_timer0()<a_disparo) output_high(PIN_A5); //Motor en paro else output_low(PIN_A5); //Manda a arrancar el motor output_low(USER_LED2); //Enciende indicación de motor activo } } else { output_high(PIN_A5); //Paro de motor output_high(USER_LED2); //Motor en paro }}

if (stricmp(key,lcd_key)==0) {printf(lcd_putc,"\f%s",val); //Imprime mensaje en LCD

}}#int_extvoid prende(){ if(a_disparo>0)

a_disparo=a_disparo-0.1; //Tiempo del ángulo de disparo para el set_timer0(0); //tiempo de encendido del motor}

void main(void) { MACAddrInit(); IPAddrInit();

Page 71: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

70

init_user_io();

lcd_init();

printf(lcd_putc,"\fCCS CGI Example\nWaiting"); printf("\r\n\nCCS CGI Example\r\nWaiting");

set_adc_channel(0);

StackInit();

setup_counters(RTCC_INTERNAL,RTCC_DIV_256);

set_timer0 (0);

enable_interrupts(INT_EXT); //Habilita interrupciones externas enable_interrupts(GLOBAL); //Habilita interrupciones globales

while(TRUE) {/* if(get_timer0()<a_disparo) //Mientras que a_disparo sea menor

output_high(PIN_A5); //a get_timer() el motor estaráelse //desactivado y en cualquier otro caso

output_low(PIN_A5); // el motor encenderá

StackTask();}

}

El siguiente fragmento de código, el cual es llamado al principio del programa de desarrollo de lapágina Web, proporciona la configuración de entradas y salidas del microcontrolador de Microchip.Así mismo, se declara la dirección IP con la que se reconoce al servidor implementado en el micro.

//////////////////////////////////////// ccstcpip.h – Declaración de I/O//////////////////////////////////////

#define STACK_USE_CCS_PICENS 1#define STACK_USE_CCS_PICEEC 0 //TODO

#if STACK_USE_CCS_PICENS #define STACK_USE_MCPENC 1#endif#if STACK_USE_CCS_PICENS #include <18F4620.h> #use delay(clock=40000000) #fuses H4, NOWDT, NOLVP, NODEBUG

#else #error You need to define your custom hardware#endif

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#include "tcpip/stacktsk.c" //incluye el Stack de TCP/IP de Microchip

#if STACK_USE_CCS_PICENS

Page 72: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

71

#define BUTTON1_PRESSED() (!input(PIN_A4))

#define USER_LED1 PIN_A5 #define USER_LED2 PIN_B4#define LED_ON output_low #define LED_OFF output_high void init_user_io(void) { setup_adc(ADC_CLOCK_INTERNAL);

setup_adc_ports(AN0); *0xF92=(*0xF92 & 0xDF) | 0x11; //a5 salida, a4 y a0 entradas *0xF93=*0xF93 & 0xCF; //b4 y b5 salidas

LED_OFF(USER_LED1); LED_OFF(USER_LED2);}#endif

NOTA: Se utiliza la declaración USER_LED para indicar las salidas, estas salidas tienen leds paraindicar su estado, de ahí el nombre de la declaración.

void MACAddrInit(void) { MY_MAC_BYTE1=0; MY_MAC_BYTE2=2; MY_MAC_BYTE3=3; MY_MAC_BYTE4=4; MY_MAC_BYTE5=5;

MY_MAC_BYTE6=6;}

//Aquí se declara la dirección IP del servidor que aloja la página web

void IPAddrInit(void) { //Dirección IP de la red

MY_IP_BYTE1=148; MY_IP_BYTE2=204; MY_IP_BYTE3=21; MY_IP_BYTE4=9;

//puerta de enlace de red MY_GATE_BYTE1=148;

MY_GATE_BYTE2=204; MY_GATE_BYTE3=21;

MY_GATE_BYTE4=130;

//máscara de subredMY_MASK_BYTE1=255;

MY_MASK_BYTE2=255; MY_MASK_BYTE3=255; MY_MASK_BYTE4=0;}

4.4 Stack De TCP/IP

Como se puede observar en el desarrollo del programa anterior, este llama un programa llamadostacktsk.c, el cual es el Stack de TCP/IP proporcionado por Microchip.

Page 73: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

72

/********************************************************************* * Implementación del Stack FSM TCP/IP de Microchip en PIC18*********************************************************************

* FileName: StackTsk.c * Dependencies: StackTsk.H * ARPTsk.h * MAC.h * IP.h * ICMP.h * Tcp.h * http.h * Processor: PIC18 * Complier: CCS PCH 3.181 más alto * Company: Microchip Technology, Inc. * ********************************************************************/

#case

#define STACK_INCLUDE#include "tcpip/stacktsk.h"#include <string.h>#include <stdlib.h>#include "tcpip/helpers.c"#include "tcpip/tick.c"

//#define debug_stack debug_printf#define debug_stack

#if STACK_USE_MAC #include "tcpip/mac.h" #if STACK_USE_MCPENC #include "tcpip/enc28j60.c" #elif STACK_USE_MCPINC #include "tcpip/eth97j60.c" #else #include "tcpip/rtl8019AS.c" #endif#endif

#if STACK_USE_PPP #include "tcpip/modem.c" #include "tcpip/ppp.c" #include "tcpip/pppwrap.c"#endif

#if STACK_USE_SLIP #include "tcpip/slip.c"#ENDIF

#if STACK_USE_UDP #include "tcpip/udp.h"#endif

#if STACK_USE_DHCP #include "tcpip/dhcp.h"#endif

#if STACK_USE_SMTP

Page 74: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

73

#include "tcpip/smtp.h"#endif

#if STACK_USE_HTTP #include "tcpip/http.h"#endif

#if STACK_USE_HTTP2 #include "tcpip/http2.h"#endif

#if STACK_USE_DNS #include "tcpip/dns.h"#endif

#if STACK_USE_SNMP #include "tcpip/snmp.h"#endif

#if STACK_USE_MPFS #include "tcpip/mpfs.h"#endif

#include "tcpip/ip.c"

#if STACK_USE_TCP #include "tcpip/tcp.c"#endif

#if STACK_USE_ICMP #include "tcpip/icmp.c"#endif

#if STACK_USE_UDP #include "tcpip/udp.c"#endif

#if STACK_USE_DHCP #include "tcpip/dhcp.c"#endif

#if STACK_USE_TELNET #include "tcpip/telnet2.c"#endif

#if STACK_USE_ARP #include "tcpip/arptsk.c" #include "tcpip/arp.c"#endif

#if STACK_USE_HTTP #include "tcpip/http.c"#endif

#if STACK_USE_HTTP2 #include "tcpip/http2.c"#endif

#if STACK_USE_MPFS

Page 75: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

74

#include "tcpip/mpfs.c"#endif

#if STACK_USE_SMTP #include "tcpip/smtp.c"#endif

#if STACK_USE_DNS #include "tcpip/dns.c"#endif

#if STACK_USE_ANNOUNCE #include "tcpip/announce.h" #include "tcpip/announce.c"#endif

#if STACK_USE_SNMP #include "tcpip/snmp.c"#endif

//#define MAX_ICMP_DATA_LEN 64 //movido a icmp.h

/* * Stack FSM states. */typedef enum _SM_STACK{ SM_STACK_IDLE=0, SM_STACK_MAC, SM_STACK_IP, SM_STACK_ICMP, SM_STACK_ICMP_REPLY, SM_STACK_ARP, SM_STACK_TCP, SM_STACK_UDP} SM_STACK;

static SM_STACK smStack;

NODE_INFO remoteNode;

/********************************************************************* * Función: void StackInit(void) * * PreCondición: Ninguna * * Input: Ninguna * * Output: El Stack y sus componentes son inicializados * * Side Effects: Ninguno * * Nota: Esta función debe ser llamada antes de cualquier * stack o de que sus rutinas del componente sean usadas*

********************************************************************/

void StackInit(void){

Page 76: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

75

smStack = SM_STACK_IDLE;

#if STACK_USE_IP_GLEANING || STACK_USE_DHCP /* * If DHCP or IP Gleaning is enabled, * startup in Config Mode. */ AppConfig.Flags.bInConfigMode = TRUE;#endif

TickInit();

#if STACK_USE_MAC MACInit();#endif

#if STACK_USE_ARP ARPInit();#endif

#if STACK_USE_UDP UDPInit();#endif

#if STACK_USE_TCP TCPInit();#endif

#if STACK_USE_DHCP DHCPReset();#endif

#if STACK_USE_PPP ppp_init();#endif

#if STACK_USE_TELNET TelnetInit();#endif

#if STACK_USE_SMTP SMTPInit();#endif

#if STACK_USE_HTTP HTTP_Init();#endif}

/*#if STACK_USE_MCPENC#if MAC_TX_BUFFER_COUNT > 1 #define DebugDisplayVals() debug_stack("\r\nTXB=%U TXB0.ADD=0x%LX TXB0.FR=%UNPL=0x%LX CPL=0x%LX",NICCurrentTxBuffer, TxBuffers[0].StartAddress,TxBuffers[0].bFree, NextPacketLocation.Val, CurrentPacketLocation.Val)#else #define DebugDisplayVals() debug_stack("\r\nTXB=%U NPL=0x%LX CPL=0x%LX",NICCurrentTxBuffer, NextPacketLocation.Val, CurrentPacketLocation.Val)#endif

Page 77: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

76

#else #define DebugDisplayVals()#endif*/

#define DebugDisplayVals()

/********************************************************************* * Función: void StackTask(void) ** PreCondición: StackInit() ya es llamado.

* * Input: Ninguna * * Output: Stack FSM es ejecutado. * * Side Effects: Ninguno * * Nota: Este FSM revisa si hay nuevos paquetes entrantes * y los guía a los componentes apropiados del stack. * También realiza las operaciones de tiempo * * Esta función debe ser llamada periódicamente para * Garantizar repuestas oportunas * ********************************************************************/

void StackTask(void){

static WORD dataCount;

#if STACK_USE_ICMP static BYTE data[MAX_ICMP_DATA_LEN]; static WORD ICMPId; static WORD ICMPSeq;#endif IP_ADDR tempLocalIP;

union { BYTE MACFrameType; BYTE IPFrameType;#if STACK_USE_ICMP ICMP_CODE ICMPCode;#endif } type;

BOOL lbContinue=FALSE; do { lbContinue = FALSE; switch(smStack) { case SM_STACK_IDLE: case SM_STACK_MAC: if ( !MACGetHeader(&remoteNode.MACAddr, &type.MACFrameType) )

{ #if STACK_USE_DHCP //Normalmente, un aplicación no incluiria el modulo de DHCP si este

Page 78: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

77

//no esta habilitado. Pero en caso de que alguien desee deshabilitar //El módulo de DHCP en tiempo de ejecución, recuerde no

//limpiar nuestra dirección IP si el link es removido.

if ( !DHCPIsDisabled() ) { if ( !MACIsLinked() ) {

AppConfig.MyIPAddr.Val = 0x00000000ul; AppConfig.Flags.bInConfigMode = TRUE; DHCPReset(); } } #endif break;

} lbContinue = TRUE; if ( type.MACFrameType == MAC_IP ) { smStack = SM_STACK_IP; } else if ( type.MACFrameType == MAC_ARP ) { smStack = SM_STACK_ARP; }

else { MACDiscardRx(); } break;

case SM_STACK_ARP:#if STACK_USE_ARP if ( ARPProcess() ) { smStack = SM_STACK_IDLE; }#else smStack = SM_STACK_IDLE;#endif break;

case SM_STACK_IP: if ( IPGetHeader(&tempLocalIP, &remoteNode, &type.IPFrameType, &dataCount) ) {

lbContinue = TRUE; if ( type.IPFrameType == IP_PROT_ICMP ) { smStack = SM_STACK_ICMP;#if STACK_USE_IP_GLEANING if(AppConfig.Flags.bInConfigMode && !DHCPIsDisabled())

{ /* *De acuerdo al procedimiento de "IP Gleaning", cuando

* recibimos un paquete de ICMP con una dirección * IP válida mientras aún estamos en modo de

* Configuración, acepte esa dirección como nuestra * y concluya el modo de configuración

*/

Page 79: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

78

if( tempLocalIP.Val != 0xffffffff ) {

AppConfig.Flags.bInConfigMode = FALSE; AppConfig.MyIPAddr = tempLocalIP; myDHCPBindCount--; } }#endif }

#if STACK_USE_TCP else if ( type.IPFrameType == IP_PROT_TCP ) {

smStack = SM_STACK_TCP; debug_stack("TCP "); }#endif

#if STACK_USE_UDP else if ( type.IPFrameType == IP_PROT_UDP ) {

smStack = SM_STACK_UDP; debug_stack("UDP "); }#endif else { lbContinue = FALSE; MACDiscardRx(); smStack = SM_STACK_IDLE; } } else { MACDiscardRx(); smStack = SM_STACK_IDLE; debug_stack("UNKOWN-IP2 "); } break;

#if STACK_USE_UDP case SM_STACK_UDP: if ( UDPProcess(&remoteNode, &tempLocalIP, dataCount) ) { debug_stack("\r\nUDP PROCESSED"); DebugDisplayVals(); smStack = SM_STACK_IDLE; } break;#endif

#if STACK_USE_TCP case SM_STACK_TCP: if ( TCPProcess(&remoteNode, &tempLocalIP, dataCount) ) { DebugDisplayVals(); smStack = SM_STACK_IDLE; } break;#endif

Page 80: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

79

case SM_STACK_ICMP: smStack = SM_STACK_IDLE;

#if STACK_USE_ICMP //if ( dataCount <= (MAX_ICMP_DATA_LEN+9) ) if ( dataCount <= (MAX_ICMP_DATA_LEN+8) ) { if ( ICMPGet(&type.ICMPCode,

data, (BYTE*)&dataCount, &ICMPId, &ICMPSeq) ) { if ( type.ICMPCode == ICMP_ECHO_REQUEST )

{ debug_stack("\r\nICMP PROCESSED"); lbContinue = TRUE; smStack = SM_STACK_ICMP_REPLY; } } } DebugDisplayVals();#endif

MACDiscardRx(); break;

#if STACK_USE_ICMP case SM_STACK_ICMP_REPLY: if ( ICMPIsTxReady() ) { ICMPPut(&remoteNode, ICMP_ECHO_REPLY, data,

(BYTE)dataCount, ICMPId, ICMPSeq);

DebugDisplayVals(); smStack = SM_STACK_IDLE; } break;#endif

}

} while( lbContinue );

#if STACK_USE_SMTP SMTPTask();#endif

#if STACK_USE_TCP // Perform timed TCP FSM. TCPTick();#endif

#if STACK_USE_TELNET TelnetTask();

Page 81: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 4. PROGRAMACIÓN DEL PROTOCOLO TCP/IP

80

#endif

#if STACK_USE_HTTP HTTP_Task();#endif

#if STACK_USE_DHCP

/* * DHCP debe ser llamado todo el tiempo aún después de que la * configuración del IP sea descubierta.

* DHCP has to account lease expiration time and renew the configuration * time. */

DHCPTask();

if ( DHCPIsBound() ) AppConfig.Flags.bInConfigMode = FALSE;

#endif}

Como se puede observar en el stack de TCP/IP proporcionado por Microchip, este contiene toda lainformación de los diversos protocolos utilizados por TCP/IP y que permiten realizar las diferentesactividades como envío y recibo de paquetes e información, entre otras cosas.

Page 82: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 5. PRUEBAS DE HARDWARE

81

UNIDAD 5PRUEBAS DE HARDWARE

5.1 Diseño E Implementación De Un Arrancador Suave De Motores MonofásicosDe Inducción De Baja Potencia Con Un Mínimo De Electrónica

En este capitulo se presenta el diseño e implementación de un arrancador suave de motores de C. A.monofásicos, empleando la menor cantidad posible de componentes electrónicos. Además delhardware, también se presenta la programación del microcontrolador (PIC18F4620 de MicrochipInc.) que se encarga del accionamiento de los dispositivos de potencia.

5.1.1 Introducción

Desde la aparición de los primeros motores eléctricos, los ingenieros han buscado una manera deevitar los problemas mecánicos y eléctricos que se producen al utilizar arrancadores de conexióndirecta o a tensión reducida tipo estrella-delta (para motores trifásicos) o autotransformador.

La conexión de los motores de C. A., utilizados para accionar ventiladores, trituradoras, agitadores,bombas, cintas transportadoras, etc., producen cotidianamente innecesarios picos de intensidad enlas plantas de producción. Estos arranques violentos causan daños de diferente naturaleza. Entreellos los siguientes:

Problemas eléctricos debidos a transitorios de tensión y de intensidad provocados por losarranques directos (a tensión plena) o a tensión reducida tipo estrella-delta o autotransformador.Estos transitorios pueden sobrecargar la red y provocar variaciones de tensión que interfierencon el funcionamiento de otros equipos eléctricos conectados a la red.

Problemas mecánicos que afectan a todo el accionamiento, desde el propio motor hasta el equipoaccionador, pudiendo llegar a provocar esfuerzos extremos en los materiales.

Problemas funcionales, como pueden ser aumentos bruscos de la presión de líquidos bombeadospor los motores, daños a productos situados en cintas transportadoras, o un movimiento nosuficientemente constante de escaleras mecánicas.

Los arrancadores suaves son la solución idónea y sencilla para todos estos problemas, pues esposible realizar arranques y paros suavemente (con incrementos y decrementos paulatinos de latensión rms), reduciendo al mínimo tiempo los esfuerzos eléctricos y mecánicos.

5.2 Funcionamiento Del Arrancador

El diagrama de bloques que se muestra en la Figura 5.1 muestra el funcionamiento del arrancador.En forma general, el arrancador detecta el cruce por cero del voltaje de alimentación senoidal. Eneste momento se inicializa un contador que se incrementa clock/)4*256( veces por segundo1. Si elcontador es igual a la variable a_disparo entonces se da la señal de disparo al TRIAC.

1 Clock es la frecuencia del cristal oscilador con el que trabaja el microcontrolador. En el desarrollo que se muestra enesta tesis el cristal es de 4 MHz, por lo que se incrementa cada 25.5 μs.

Page 83: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 5. PRUEBAS DE HARDWARE

82

a_disparo se varía en base al número de ciclos en los que se desee que pase de la tensión dearranque a la tensión nominal (en donde a_disparo = 0).

5.2.1 Detección De Cruce Por Cero

La detección de cruce por cero de la señal senoidal devoltaje es la primera etapa del control suave delarrancador. Tiene como finalidad la de proporcionaruna referencia (punto de partida) al microcontroladorpara hacer un adecuado control del ángulo de disparoa_disparo. El ángulo de dispara varía entre 0 y 180º (0y 1/2T segundos). La Fig. 5.2 muestra el circuito dedetección de cruce por cero. Los elementos queintegran este circuito son:

a. Resistencia R1 limitadora de corriente. Tienencomo finalidad la de limitar la corriente de losdiodos del puente rectificador (1N4001), eldiodo zener (1N5240) y el LED deloptoacoplador (H11L1). Se calcula de acuerdo ala corriente en sentido directo IF del diodo deloptoacoplador y la caída de voltaje en susterminales en la misma condición de operación,es decir:

1 p F FR V V I ………… (1)

Donde:

o Vp Es el valor pico de la senoidal de entrada.

o VF Voltaje en sentido directo del diodo deloptoacoplador.

o IF Corriente en sentido directo del diodo deloptoacoplador.

IF y VF se elegirán de, aproximadamente, un tercio del valor máximo permisible (IFmax = 60mA y VF = 9 V para IFmax) , por lo que:

31 ((127* 2) 3) 20 10 8830.25R

Se elegirá un valor comercial de 10 k Ω, con lo que se limita la corriente en el diodo deloptoacoplador a 17 mA. Considerando esta corriente y el valor de la resistencia, se obtieneuna potencia disipada de 2.89 W, por lo que se elige un valor comercial de 3 W.

Page 84: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 5. PRUEBAS DE HARDWARE

83

b. Puente de diodos. El puente de diodos tiene como objetivo rectificar la senoidal de entrada ypermitir que el optoacoplador detecte el cruce por cero de los semiciclos positivo y negativo(de no existir este puente, el diodo del optoacoplador no conduciría en el semiciclonegativo). Los diodos 1N4001que integran el arreglo del puente se eligen de forma quepuedan conducir la corriente IFmax considerada para el cálculo de la resistencia R1.

c. El diodo zener 1N5240. Fija el voltaje en las terminales del LED del optoacoplador a 10 V,con lo que se obtiene una protección contra transitorios de voltaje en las terminales del LEDdel optoacoplador.

H11L1

R210K

1N5240

F

N

1N4001

10V

R110Ka 3W

Al pin B0del micro

+5V

Figura 5.2.- Esquema para la detección de cruce por cero

d. Etapa de optoacoplamiento. El optoacoplador H11L1 tiene un doble propósito: aislareléctricamente a la etapa de control (microcontrolador) de la retroalimentación (fuente devoltaje de CA) y, por otro lado, proporcionar una señal de disparo al microcontrolador paraempezar el conteo. La Fig. 3 muestra la señal de salida del optoacoplador. Observe que estascoinciden con el cruce por cero de los semiciclos positivo y negativo de la señal senoidal devoltaje.

e. Resistencia limitadora de corriente R2. La salida del optoacoplador es una impedancia cero(entre la salida y tierra) o una impedancia grande, por lo que es necesario conectar laresistencia R2 para obtener salidas lógicas de 0 (0 V) o 1 (5 V). Con este arreglo, cuando lasalida del optoacoplador es de impedancia alta, se tendrá una salida de 5 volts los cuales seobtienen a través de la resistencia R2; en cambio, cuando la salida es de impedancia cero, setiene una salida de 0 volts; en estas circunstancias, la resistencia R2 evita que exista unaconexión a tierra de la fuente. Su valor debe ser alto para evitar al máximo la pérdidainnecesaria de energía. 10kΩ es un valor que se consideró adecuado pues limita la corrientede fuga por la resistencia a 500 μA.

Page 85: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 5. PRUEBAS DE HARDWARE

84

Figura 5.3.- Oscilogramas de las señales de voltaje de alimentación y las señales de salida del optoacoplador H11L1.Canal A: señales de voltaje de alimentación; Canal B: señales de salida del optoacoplador H11L1.

5.3 La Etapa De Control (Microcontrolador)

Como se explicó en el punto anterior, la etapa de control recibe la señal de que el voltaje senoidal apasado por cero, cuando esto pasa, se activa una interrupción (Parte A del programa) que resetea uncontador; a partir de este momento, se estará comparando dicho contador con la variable a_disparola cual disminuirá progresivamente hasta cero en el tiempo definido en la página Web para el tiempode arranque del motor.

A continuación se muestra el programa del microcontrolador.

///////////////////////////////////PROGRAMA DEL ARRANCADOR SUAVE///////////////////////////////////

#include <18F4620.h>#fuses HS,NOWDT,NOPROTECT,NOLVP#use delay(clock=4000000)float a_disparo=210;

#int_extvoid prende(){ if(a_disparo>0) a_disparo=a_disparo-0.1; set_timer0(0);}

void main (){

setup_counters(RTCC_INTERNAL, RTCC_DIV_256); set_timer0 (0);

enable_interrupts(INT_EXT); enable_interrupts(GLOBAL);

A

B

Page 86: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 5. PRUEBAS DE HARDWARE

85

setup_adc(adc_clock_internal); set_adc_channel(0);

a_disparo=130;

While(true) { t=read_adc(); if(get_timer0()<a_disparo) output_high(PIN_A4); else

output_low(PIN_A4);}

}

En la Etapa A del programa se tiene la subrutina que se ejecuta cuando se detecta una interrupciónen la entrada B0 del microcontrolador (que ocurre cuando hay un cruce por cero). En esta etapa seresetea el contador que se configura en la etapa siguiente. Así mismo, se realiza el conteo de lossegundos en el tiempo de arranque.

La Etapa B del programa configura un contador que se incrementa cada (4*256)/4x106 veces porsegundo. Este contador permite tener un control del tiempo (a partir del cruce por cero) en el que elmicrocontrolador disparará al TRIAC.

Figura 5.4.- Conexión cristal oscilador

En la Etapa C se configura el convertidor Analógico/Digital, con el cual se pueden enviar señales ala página Web para el monitoreo de la planta. Para el proyecto que se presenta en esta tesis no esnecesario el uso del convertidor analógico/digital para el tiempo de arranque del motor, ya que seutilizan las instrucciones que se encuentran dentro de la página Web donde se relaciona a_disparocon el tiempo de arranque que se desee.

Finalmente, en la última Etapa del programa mientras el contador no sea mayor que el ángulo dedisparo a_disparo, no se activa al TRIAC, de lo contrario se comanda un disparo que dura 25.5 4μs 2.

NOTA: Para fines del proyecto, se omiten las declaraciones dentro del ciclo while, ya que con estasdeclaraciones el motor permanece encendido sin poderse detener aún después de dar la instruccióncorrespondiente.

2 El disparo del TRIAC se comanda con un pulso bajo (cero lógico)

C

D

Page 87: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 5. PRUEBAS DE HARDWARE

86

Fig. 5.5.- Esquema para el control de los TRIACS de potencia.

5.4 Optotriac Y Red Snubber

El TRIAC recibe la señal de disparo a través del optotriac MOC3023. La luz que emite su LED essuficiente para mantener en estado de conducción al triac que a su vez dispara al TRIAC depotencia. La conexión del microcontrolador con el optoacoplador se muestra en la Fig. 5.5. Laresistencia R5 limita la corriente en el LED y su valor se calcula para que no sobrepase la IF. En estecaso, IF se mantiene en 16 mA.

El TRIAC de potencia puede autodispararse si el índice de crecimiento del voltaje excede su dv/dt oel dv/dt del optotriac. Para prevenir esta situación se instala una red Snubber que limita el dv/dt. Lared Snubber puede calcularse definiendo un factor de potencia de la carga y ajustandoposteriormente su valor con mediciones del dv/dt reales. De acuerdo a la referencia, el dv/dt en elpeor de los casos puede valer:

4*dv dt Vp R C………… (2)

Donde: Vp Es el voltaje pico instantáneo de la línea de alimentación.

(127* 2) 180*0.033 30.3 V/dv dt s

Este valor puede ser mucho menor en la presencia de cargas muy inductivas (como un motor deinducción), aunque para el diseño del arrancador la consideración anterior es válida. Obsérvese quese determinó un valor arbitrario de la resistencia R4 y el capacitor C para calcular el dv/dt, pero en eldiseño del arrancador se parte de un valor establecido de dv/dt y de la resistencia R4 paradeterminar el valor adecuado del capacitor de la red Snubber.

La resistencia R3 limita los picos de carga y descarga del capacitor. Su valor se determina deacuerdo al voltaje de disparo requerido por el TRIAC y la corriente máxima que soporta el triac deloptoacoplador, es decir:

Page 88: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 5. PRUEBAS DE HARDWARE

87

max3 pkR V I ………… (3)

33 10 / 100 10 100R

Donde: Vpk Es el voltaje de disparo requerido en el gate del TRIAC.

Fig. 5.6.- Oscilogramas de las señales de voltaje en las terminales del motor y la señal de disparo del optotriac. CanalA: señales de voltaje en las terminales del motor; Canal B: señales de disparo del optotriac. El círculo rojo indica el

voltaje que se presenta en las terminales del motor producto da la energía almacenada en el motor.

5.4.1 Margen de regulación

El voltaje promedio aplicado al motor es regulado por la magnitud del ángulo de disparo, entre másgrande es este menor es el voltaje promedio aplicado a la carga. Desgraciadamente, el ángulo dedisparo no puede regularse entre 0 y 180º (como se hace con una carga puramente resistiva) ya quela inductancia del motor hace que se almacene energía de modo tal que aún cuando no se presentedisparo alguno en el TRIAC, este tenga un voltaje presente en sus terminales (véase la Fig. 5.6).

En el caso que se reporta en esta tesis, el ángulo de disparo del TRIAC está comprendido entre 35º y180º aproximadamente.

Figura 5.7.- Formas de onda de corriente del disparo del TRIAC

Page 89: Unidad Profesional “Adolfo López Mateos” “Control a

UNIDAD 5. PRUEBAS DE HARDWARE

88

DIAGRAMA ESQUEMÁTICO DEL CIRCUITO FINAL DE CONTROL Y POTENCIA

Figura 5.8.- Diagrama esquemático del montaje final de la programación del protocolo TCP/IP mostrando elcontrol no crítico de la planta (motor), mediante la etapa de potencia anteriormente descrita.

Figura 5.9.- Implementación física del proyecto

Page 90: Unidad Profesional “Adolfo López Mateos” “Control a

ANÁLSIS DE COSTOS - BENEFICIOS

89

ANÁLISIS DE COSTOS - BENEFICIOS

COSTOS DIRECTOS

*El costo del ICD-U40 no se incluye en el costo de la tarjeta, ya que este es solo una herramienta para poderquemar el microcontrolador de la misma y se puede utilizar para quemar cualquier microcontrolador deMicrochip

Para el desarrollo de la tarjeta se emplearon componentes menores como son resistencias, leds ycable que cubren $50.00 adicionales a los mencionados, dando como costo total de la tarjeta$806.056

La compañía CCS ofrece una tarjeta de Ethernet con un precio de $979.00, como podemos observar,el fabricar nuestra propia tarjeta resulta mas redituable económico.

Arrancador Suave para el motor

Cantidad Referencia Marca PrecioUnitario

Total

4 1N4001 Diodo Rectificador 1ª / 50V YS $1.00 $4.001 RA-10K/5W Resistencia de Alambre OEM $5.00 $5.001 1N5240B Diodo Zener 10V/1/2W ------ $9.00 $9.001 H11L1 Optoacoplador salida SCHMIT Trigger FSC $10.00 $10.00

1RC-10K/1/2 Resistencia de Carbón 10Kohms 5% TOL½W OEM

$1.00 $1.00

1 MOC3023 Optoacoplador TRIAC FSC $10.00 $10.001 TIC226D T-TRI 8A/400V *TRIAC* AG $15.00 $15.00

1RC-180E/1/2 Resistencia de Carbón 180ohms 5% TOL½W OEM

$1.00 $1.00

1RC-100E/1/2 Resistencia de Carbón 100 ohms 5% TOL½W OEM

$1.00 $1.00

4 1N4001 Diodo Rectificador 1ª / 50V YS $1.00 $4.001 Circuito Impreso Genérico $100.00 $100.00

Tarjeta Ethernet

Cantidad Referencia Marca PrecioUnitario

Total

1 LCD 16x2 SMALL JHD $99.130 $99.1301 PIC18F4620 Microchip $157.391 $157.3911 ENC28J60 Microchip $36.20 $36.204 SN74HCT08 TIS $2.609 $10.76

1Bloque de terminales para usuario 34 terminales 2líneas Genérico

$5.217 $5.217

1 LM7805C Regulador de voltaje 5V/1ª STM $18.271 $18.2711 MAX232A CI interfase RS-232 convertidor de voltaje TIS $6.087 $6.0871 Conector hembra RJ45 Genérico $3.00 $3.00

55 metros de cable de red recto con conectores RJ45macho Genérico

$4.00 $20.00

1 Circuito impreso Genérico $400.00 $500.001 *ICD-U40 CCS $825.00 $825.00

Page 91: Unidad Profesional “Adolfo López Mateos” “Control a

ANÁLSIS DE COSTOS - BENEFICIOS

90

Costo Total del Arrancador = $160.00

Existen en el mercado diversos fabricantes de arrancadores como el diseñado e implementado parael desarrollo del prototipo de este trabajo. Los precios son muy variados. El arrancador empleadopara éste proyecto tiene una capacidad de 8 Amperes, un arrancador con características similarestiene un precio entre $2500.00 y $2800.00 dependiendo del fabricante. La diferencia en precios,como se puede apreciar, es mucha, esto se debe a que los arrancadores comerciales tienen otrascaracterísticas como inversión de giro, displays, etc, características que no son necesarias para elcontrol que se desarrolla en el presente trabajo.

Como podemos observar con los datos anteriores es mejor realizar un arrancador propio, que seadecue a lo que necesitamos sin realizar gastos que no se justifican.

NOTA: Los precios mostrados de los componentes para la implementación de la tarjeta de Ethernety el arrancador suave son precios de mayoreo (50 piezas).

Costos Indirectos

Dentro de los costos indirectos que conlleva el proyecto se destacan los siguientes, ya que fuenecesario transportación y una comparación de la renta de un lugar de trabajo equivalente allaboratorio escolar:

Descripción CostoTransportación para la compra demateriales

$100.00

Laboratorio de Pruebas y ensamblajeequipado con por lo menos:

o Consumo de energía eléctricao Mesa de trabajoo Osciloscopio

o Zonda de Voltaje (2)o Zonda de Corriente (1)

o Multimetro con dos puntaso Conexión a Internet (Nodo

Ethernet)

Nota. El Periodo de uso fue calculado endos meses. $800.00

Total $900.00

La hora de ingeniería se cobra a $200.00 por hora, con un total de 4 horas por día de lunes a viernesdurante dos meses de trabajo, 43 días totales, dando un costo total de $34,400.00 por ingeniería.

Realizando el análisis de costos, se obtiene la cantidad de $36,267.00 por todo el trabajo deingeniería necesario para desarrollar el proyecto dentro de una empresa.

Page 92: Unidad Profesional “Adolfo López Mateos” “Control a

ANÁLSIS DE COSTOS - BENEFICIOS

91

Beneficios

Utiliza parte de la tecnología existente (Internet) lo que lo hace más económico al no necesitardesarrollar tecnología adicional para su implementación.

Es más económico realizar una implementación propia, ya que esta se adecua a las necesidadesespecíficas de una empresa.

El arrancador empleado es uno de los más avanzados en la actualidad pues utiliza un mínimo deelectrónica.

Gracias al protocolo TCP/IP se tiene la compatibilidad con cualquier tipo de hardware. Programación sencilla y fácil de aprender, lo que permite las modificaciones que sean

necesarias. No es necesaria una computadora para poder conectarse a Internet, existen otros medios más

pequeños y cómodos como son teléfonos, agendas electrónicas, etc. lo que da una mayorflexibilidad y libertad de movimiento.

Page 93: Unidad Profesional “Adolfo López Mateos” “Control a

CONCLUSIONES

92

Conclusiones

En este trabajo se demuestra que es posible hacer el control no crítico, en lazo abierto de un plantapor medio del protocolo TCP/IP y la Internet.

Al implementar un servidor operando sobre la base del protocolo, se permite que desde cualquierPC, con cualquier sistema operativo se pueda manipular y supervisar una planta.

Lo compacto del código del protocolo permite que se puedan programar otras tareas en el micro,además del sistema de comunicaciones.

Algo importante a destacar es que éste trabajo no solo se puede aplicar a motores de C. A., tambiénes aplicable a motores de C. D. ya que no se necesita más implementación electrónica de ladesarrollada en éste proyecto, y a cualquier planta, ya que la finalidad de la presente tesis fuedesarrollar las herramientas necesarias para la programación del protocolo TCP/IP y crear unainterfase Web para poder lograr la comunicación y manipulación de cualquier proceso desdecualquier lugar del mundo.

Finalmente, y aún cuando no es la parte medular de esta tesis, es de destacar el sistema de arranquedel motor de C. A., ya que se demuestra que con un mínimo de electrónica es posible desarrollar loque en otros tiempos constituía una labor compleja.

Page 94: Unidad Profesional “Adolfo López Mateos” “Control a

ANEXO. HOJAS DE DATOS Y ESPECIFICACIONES

93

Anexo. Hojas de datos y especificaciones

En la presente sección se presentan las hojas de datos y especificaciones de los componentesprincipales utilizados en la realización del presente proyecto, esto se hace con la finalidad decomprender de mejor manera el comportamiento de los circuitos armados para su desarrollo.

Las hojas que se presentan corresponden a los siguientes elementos:

Diodo 1N4001 Diodo Zener 1N5221B Optoacoplador H11L1 MOC3023M TRIAC TIC226D

NOTA: Las hojas de especificaciones del PIC 18F2620 y del ENC28J60 no se incluyen por ser muyextensas, estas se pueden obtener de la página de Microchip para su consulta www.microchip.com

Así mismo se incluye un artículo relacionado con el cruce por cero y el disparo del Triac,información muy útil para el desarrollo del proyecto.

Page 95: Unidad Profesional “Adolfo López Mateos” “Control a

GLOSARIO

125

Glosario

ACK: ACKNOWLEDGEMENT (ACK) (en español acuse de recibo), en comunicacionesentre computadores, es un mensaje que se envía para confirmar que un mensaje o unconjunto de mensajes han llegado. Si el terminal de destino tiene capacidad para detectarerrores, el significado de ACK es "ha llegado y además ha llegado correctamente".

Broadcast: Broadcast, en castellano difusión, es un modo de transmisión de informacióndonde un nodo emisor envía información a una multitud de nodos receptores de manerasimultánea, sin necesidad de reproducir la misma transmisión nodo por nodo.

Checksum: Una suma de verificación o checksum es una forma de control de redundancia,una medida muy simple para proteger la integridad de datos, verificando que no hayan sidocorrompidos. Es empleado para comunicaciones (Internet, comunicación de dispositivos,etc.) tanto como para datos almacenados (archivos compresos, discos portátiles, etc.).

Datagrama: es un fragmento de paquete que es enviado con la suficiente información comopara que la red pueda simplemente encaminar el fragmento hacia el DTE (Data TerminalEquipment) receptor, de manera independiente a los fragmentos restantes. Esto puedeprovocar una recomposición desordenada o incompleta del paquete en el DTE destino.

Enrutador (Router): Enrutador, encaminador. Dispositivo hardware o software parainterconexión de redes de computadoras que opera en la capa tres (nivel de red) del modeloOSI. El router interconecta segmentos de red o redes enteras. Hace pasar paquetes de datosentre redes tomando como base la información de la capa de red. El router toma decisiones(basado en diversos parámetros) con respecto a la mejor ruta para el envío de datos a travésde una red interconectada y luego redirige los paquetes hacia el segmento y el puerto desalida adecuados.

Ethernet: Ethernet es el nombre de una tecnología de redes de computadoras de área local(LANs) basada en tramas de datos. El nombre viene del concepto físico de ether. Ethernetdefine las características de cableado y señalización de nivel físico y los formatos de tramadel nivel de enlace de datos del modelo OSI. Ethernet se refiere a las redes de área local ydispositivos bajo el estándar IEEE 802.3 que define el protocolo CSMA/CD.

Gateway: Una puerta de enlace o gateway es normalmente un equipo informáticoconfigurado para dotar a las máquinas de una red local (LAN) conectadas a él de un accesohacia una red exterior, generalmente realizando para ello operaciones de traducción dedirecciones IP (NAT: Network Address Translation).

Host: máquina conectada a una red de ordenadores y que tiene un nombre de equipo (eninglés, hostname). Es un nombre único que se le da a un dispositivo conectado a una redinformática. Puede ser un ordenador, un servidor de archivos, un dispositivo dealmacenamiento por red, una máquina de fax, impresora, etc. Este nombre ayuda aladministrador de la red a identificar las máquinas sin tener que memorizar una dirección IPpara cada una de ellas.

Page 96: Unidad Profesional “Adolfo López Mateos” “Control a

GLOSARIO

126

Internet: Es un método de interconexión descentralizada de redes de computadorasimplementado en un conjunto de protocolos denominado TCP/IP y garantiza que redesfísicas heterogéneas funcionen como una red lógica única, de alcance mundial

Octeto: Un octeto está formado por 8 unidades de información (llamadas bits). Este términose usa a veces en vez de byte en la terminología de redes porque algunos sistemas tienenbytes que no están formados por 8 bits. Conjunto significativo de ocho bits que representanun carácter, por ejemplo la letra "a", en un sistema informático.

Protocolo: Un protocolo es un método establecido de intercambiar datos en Internet. Unprotocolo es un método por el cual dos ordenadores acuerdan comunicarse, unaespecificación que describe cómo los ordenadores hablan el uno al otro en una red.

SYN: SYN es un bit de control dentro del segmento TCP, que se utiliza para sincronizar losnúmeros de secuencia iniciales ISN de una conexión en el procedimiento de establecimientode tres fases (3 way handshake).

Stack: Una pila (stack en inglés) es una estructura de datos de tipo LIFO (del inglés Last InFirst Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Seaplica en multitud de ocasiones en informática debido a su simplicidad y ordenaciónimplícita en la propia estructura. Para el manejo de los datos se cuenta con dos operacionesbásicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (odesapilar, pop), que retira el último elemento apilado.

Page 97: Unidad Profesional “Adolfo López Mateos” “Control a

BIBLIOGRAFÍA

127

BIBLIOGRAFÍA

TESIS “Análisis, características, administración y normatividad de redes de datos”José Antonio Cabello Mendoza, Dionisio Octaviano Fuentes LópezAbril de 2003

http://usuarios.lycos.es/janjo/janjo1.html

http://www.wikipedia.com

Colección de prácticasBernabé Blanco MiguelesDepartamento de Electricidad de IES "El Arenal"Sevilla (España)

http://www.forosdeelectronica.com/about10998.html

http://olmo.pntic.mec.es/jmarti50/el_arenal/practica9.html

http://www.die.eis.uva.es/~daniel/docencia/te/motores_dc.pdf

http://www.microchip.com

Kosow, Irving L.Máquinas eléctricas y transformadores. ed.2México, MXPrentice - Hall Hispanoamericana, 1993. 704 p.

Electricidad 7Harry Milea