+ All Categories
Home > Documents > Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de...

Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de...

Date post: 09-Apr-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
105
Instituto Tecnol´ ogico de Costa Rica Escuela de Ingenier´ ıa Electr´ onica Unidad Controladora de Procesos Manual de Usuario Ejecutor: Daniel Castro Molina Cartago, 2 de junio de 2008
Transcript
Page 1: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Instituto Tecnologico de Costa Rica

Escuela de Ingenierıa Electronica

Unidad Controladora de Procesos

Manual de Usuario

Ejecutor:

Daniel Castro Molina

Cartago, 2 de junio de 2008

Page 2: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Indice general

1. Introduccion 1

2. Diagrama de pines de la placa base 2

3. Descripcion de hardware 6

3.1. Bus de datos SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2. Bus de datos I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3. Bus de datos de 16 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.3.1. Puerto de comunicacion UART . . . . . . . . . . . . . . . . . . 14

3.4. Puerto de comunicacion Ethernet . . . . . . . . . . . . . . . . . . . . . 16

3.5. Entradas Analogicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.6. Salidas Analogicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.7. Interface de Encodificador de Cuadratura (QEI) . . . . . . . . . . . . . 23

3.8. Salidas de control PWM: . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.9. Funciones de control de dispositivos IO . . . . . . . . . . . . . . . . . . 26

3.10. Modulo de Conversion Analogico Digital: . . . . . . . . . . . . . . . . . 27

3.10.1. Opciones de configuracion del modulo: . . . . . . . . . . . . . . 27

3.10.2. Funciones del modulo: . . . . . . . . . . . . . . . . . . . . . . . 29

3.11. Modulo de comunicaciones I2C: . . . . . . . . . . . . . . . . . . . . . . 31

3.11.1. Opciones de configuracion del modulo: . . . . . . . . . . . . . . 31

3.11.2. Funciones del modulo: . . . . . . . . . . . . . . . . . . . . . . . 32

i

Page 3: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

INDICE GENERAL ii

3.12. Modulo de comunicaciones SPI: . . . . . . . . . . . . . . . . . . . . . . 35

3.12.1. Opciones de configuracion del modulo: . . . . . . . . . . . . . . 35

3.12.2. Funciones del modulo: . . . . . . . . . . . . . . . . . . . . . . . 36

3.13. Modulo de comunicaciones UART: . . . . . . . . . . . . . . . . . . . . 38

3.13.1. Opciones de configuracion del modulo: . . . . . . . . . . . . . . 38

3.13.2. Funciones del modulo: . . . . . . . . . . . . . . . . . . . . . . . 39

3.14. Modulo PWM: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.14.1. Opciones de configuracion del modulo: . . . . . . . . . . . . . . 41

3.14.2. Funciones del modulo: . . . . . . . . . . . . . . . . . . . . . . . 43

3.15. Modulo Interfaz de Encodificador de Cuadratura (QEI): . . . . . . . . . 45

3.15.1. Opciones de configuracion del modulo: . . . . . . . . . . . . . . 45

3.15.2. Funciones del modulo: . . . . . . . . . . . . . . . . . . . . . . . 46

4. Esquema general del software 48

4.1. Requerimientos mınimos de software y hardware . . . . . . . . . . . . . 48

4.2. Abrir el proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.3. Estructura del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.3.1. Descripcion de archivos importantes . . . . . . . . . . . . . . . . 49

5. Guia de comandos 51

5.1. Estructura de los comandos . . . . . . . . . . . . . . . . . . . . . . . . 52

5.2. Secuencia de Envıo y Confirmacion . . . . . . . . . . . . . . . . . . . . 52

5.2.1. Secuencia de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . 52

6. Lista de Comandos 55

6.1. Funciones de hardware y sistema . . . . . . . . . . . . . . . . . . . . . 56

6.1.1. Iniciar o detener maquina virtual . . . . . . . . . . . . . . . . . 56

6.1.2. Devuelve registro de estado . . . . . . . . . . . . . . . . . . . . 56

6.1.3. Borra la memoria EEPROM . . . . . . . . . . . . . . . . . . . . 57

Page 4: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

INDICE GENERAL iii

6.1.4. Guarda la configuracion de sistema en EEPROM . . . . . . . . 58

6.1.5. Recibe el archivo de aplicacion . . . . . . . . . . . . . . . . . . . 58

6.1.6. Recibe un archivo de configuracion IO . . . . . . . . . . . . . . 58

6.1.7. Reinicia el sistema . . . . . . . . . . . . . . . . . . . . . . . . . 59

6.1.8. Asigna un valor a un elemento de salida (DAC o PWM) . . . . 59

6.1.9. Define un rango de medicion a un canal ADC . . . . . . . . . . 59

6.1.10. Define un rango de medicion a un canal DAC . . . . . . . . . . 60

6.1.11. Lee un canal ADC . . . . . . . . . . . . . . . . . . . . . . . . . 61

6.2. Funciones de modulos parte I . . . . . . . . . . . . . . . . . . . . . . . 61

6.2.1. Cambiar la configuracion de un filtro . . . . . . . . . . . . . . . 61

6.2.2. Configurar un modulo de funcion de transferencia . . . . . . . . 62

6.2.3. Recibe coeficientes Kp, Ki, Kd, Ts para configurar PID . . . . . 63

6.2.4. Recibe parametros de configuracion de oscilador senoidal . . . . 64

6.2.5. Recibe parametros de configuracion de oscilador rectagular . . . 65

6.2.6. Recibe parametros de configuracion de oscilador triangular . . . 65

6.2.7. Recibe parametros de configuracion de oscilador triangular . . . 66

6.2.8. Recibe parametros de configuracion de K . . . . . . . . . . . . . 66

6.3. Funciones de modulos parte II . . . . . . . . . . . . . . . . . . . . . . . 67

6.3.1. Crear o destruir modulos virtuales . . . . . . . . . . . . . . . . . 67

6.3.2. Ajusta ganancia de un modulo GAIN . . . . . . . . . . . . . . . 67

6.3.3. Ajusta lımites de un modulo SAT . . . . . . . . . . . . . . . . . 68

6.3.4. Ajusta lımites de un modulo NOISE . . . . . . . . . . . . . . . 68

6.3.5. Funciones de captura e informacion . . . . . . . . . . . . . . . . 68

6.3.6. Recibir parametros de configuracion de la tarea de captura . . . 68

6.3.7. Recibir parametros de configuracion de la tarea de captura . . . 69

6.3.8. Devolver valor de los registros de la tarea de captura . . . . . . 70

6.3.9. Enviar valores de salida de los modulos virtuales . . . . . . . . . 70

Page 5: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

INDICE GENERAL iv

6.3.10. Guardar valor en un registro de proposito general . . . . . . . . 71

6.3.11. Enviar informacion acerca porcentaje de uso de la CPU . . . . . 71

7. Cambiar la configuracion de los perifericos 72

8. Creacion de modulos 77

8.1. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

8.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

8.3. Valor tipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

8.4. Numero base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

8.5. Funcion NEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

8.6. Funcion DESTROY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

8.7. Funcion GETPTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

8.8. Funcion de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . 82

8.9. Funcion SAMPLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Esquemas 86

Bibliografıa 97

Page 6: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Indice de figuras

2.1. Diagrama de pines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3.1. Estructura del hardware de la unidad . . . . . . . . . . . . . . . . . . . 7

3.2. Conexion del modulo SPI . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.3. Esquema del modulo SPI en la unidad . . . . . . . . . . . . . . . . . . 10

3.4. Conexion del modulo I2C . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.5. Esquema del modulo I2C en la unidad . . . . . . . . . . . . . . . . . . 12

3.6. Conexion del puerto UART al PC . . . . . . . . . . . . . . . . . . . . . 14

3.7. Esquema del puerto UART . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.8. Conexion del puerto Ethernet . . . . . . . . . . . . . . . . . . . . . . . 16

3.9. Sistema Xport AR de Lantronix . . . . . . . . . . . . . . . . . . . . . . 16

3.10. Esquema del puerto Ethernet . . . . . . . . . . . . . . . . . . . . . . . 17

3.11. Conexion de las entradas analogicas . . . . . . . . . . . . . . . . . . . . 18

3.12. Esquema de las entradas analogicas . . . . . . . . . . . . . . . . . . . . 20

3.13. Conexion de las salidas analogicas . . . . . . . . . . . . . . . . . . . . . 21

3.14. Esquema de las salidas analogicas . . . . . . . . . . . . . . . . . . . . . 22

3.15. Conexion de QEI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.16. Esquema de QEI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.17. Conexion de PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.18. Esquema de PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

v

Page 7: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

INDICE DE FIGURAS vi

3.19. Estructura C de la capa drivers . . . . . . . . . . . . . . . . . . . . . . 27

3.20. Curvas representativas de los modos de operacion offset del PWM . . . 43

5.1. Algoritmo de la tarea de comunicacion . . . . . . . . . . . . . . . . . . 53

7.1. Comando recibido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Page 8: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Capıtulo 1

Introduccion

La unidad controldadora de procesos fue disenada para facilitar la creacion de

estructuras de control y regulacion para el laboratorio de control automatico del escuela

de Ingenierıa en Electronica del ITCR.

Esta unidad controladora permite utilizar interfaces de entrada y salida como con-

vertidores analogicos, buses de comunicacion SPI, I2C, decodificadores de cuadratura y

generacion PWM, como herramientas de hardware para facilitar la conexion de plantas

experimentales.

La unidad tambien dispone de algoritmos y rutinas de filtros digitales, funciones de

control, funciones generales de operaciones comunes y matematicas. Ademas posee un

convertidor serial/ethernet con servidor web permitiendose crear paginas y aplicaciones

tipo JAVA Applets.

Se recomienda leer [13], ya que contiene informacion muy detallada sobre el funcio-

namiento del microcontrolador.

1

Page 9: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Capıtulo 2

Diagrama de pines de la placa base

AN#+: Entrada analogica positiva. 10V maximo.

AN#-: Entrada analogica negativa. -10V mınimo.

AOUT#: Salida analogica. 10 mA maximo.

AGND: Tierra analogica.

QEA: Entrada A del encodificador de cuadratura. 5V CMOS.

QEB: Entrada B del encodificador de cuadratura. 5V CMOS.

INDX: Entrada INDEX del encodificador de cuadratura. 5V CMOS.

PWM#H: Salida PWM primaria. Colector abierto, 5V.

PWM#L: Salida PWM secundaria. Colector abierto, 5V.

DIR#: Salida PWM de direccion. Colector abierto, 5V.

FLTA: Entrada A por falla en motor. 5V CMOS.

FLTB: Entrada B por falla en motor. 5V CMOS.

2

Page 10: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 2. DIAGRAMA DE PINES DE LA PLACA BASE 3

Figura 2.1: Diagrama de pines.

Page 11: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 2. DIAGRAMA DE PINES DE LA PLACA BASE 4

TEST#: Punto de prueba salida analogica del acondicionador de senal.

MCLR: Salida para conexion de boton de reinicio. Tipo NO.

ACC: Salida para conexion de boton de accion. Tipo NO.

SDO: Salida digital de bus SPI. 5V CMOS.

SDI: Entrada digital de bus SPI. 5V CMOS.

SCK: Salida digital de reloj SPI. 5V CMOS.

SPI#: Salida de seleccion dispositivo SPI. 5V CMOS.

SDA: Entrada - Salida de datos bus I2C. 5V CMOS.

SCL: Salida digital de reloj I2C. 5V CMOS.

A1: Anodo de LED indicador de RUN. 5V TTL, 5mA maximo.

K1: Catodo de LED indicador de RUN.

A2: Anodo de LED indicador de ERROR. 5V TTL, 5mA maximo.

K2: Catodo de LED indicador de ERROR.

T#: Entrada para temporizador, sincronizador o entrada digital de proposito

general. 5V CMOS.d

V+: Entrada de alimentacion, +12V.

V-: Entrada de alimentacion, -12V.

GND: Tierra digital.

TX1: Transmision puerto serie RS232, directo del XPort.

RX1: Recepcion puerto serie RS232, directo del XPort.

Page 12: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 2. DIAGRAMA DE PINES DE LA PLACA BASE 5

CTS1: Clear to send puerto serie RS232, directo del XPort.

RTS1: Ready to send puerto serie RS232, directo del XPort.

TX2: Transmision puerto serie RS232, directo del microcontrolador.

RX2: Recepcion puerto serie RS232, directo del microcontrolador.

CTS2: Clear to send puerto serie RS232, directo del microcontrolador.

RTS2: Ready to send puerto serie RS232, directo del microcontrolador.

Page 13: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Capıtulo 3

Descripcion de hardware

Un esquema simple del hardware de toda la unidad se muestra en la figura 3.1;

como unidad central se utilizo el dsPIC33FJ256MC710 previamente descrito. El sistema

cuenta con:

3 buses de datos: SPI, I2C y uno paralelo de 16 bits (desarrollo parcial): Para

expansion de hardware.

Puerto de comunicacion UART: Para operacion y configuracion local de la uni-

dad.

Puerto de comunicacion Ethernet mediante Lantronix XPortAR: Para operacion

y configuracion remota de la unidad.

4 entradas y 2 salidas analogicas: De rangos fijos seleccionables.

Control de motores: Mediante QEI y PWM.

Puerto RJ11 para programacion del dsPIC mediante MPLAB ICD2.

Nota:

No debe utilizarse las fuentes de la unidad para alimentar cualquier conexion ex-

terna. Para estos casos utilizase una fuente externa.

6

Page 14: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 7

Figura 3.1: Estructura del hardware de la unidad.

Page 15: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 8

3.1. Bus de datos SPI

El modulo SPI (Interface Serial para Perifericos) es un bus de comunicaciones serial

sıncrono que se utiliza para comunicaciones entre circuitos integrados a corta distancia,

estos circuitos integrados son por lo general memorias, microcontroladores, sensores

digitales, etc. Es muy popular porque el protocolo es muy simple y veloz (10Mbps

maximo).

La unidad cuenta con 3 pines de bus y 8 pines de seleccion de dispositivos:

SCK: Salida del reloj de sincronizacion.

SDO: Salida de datos seriales.

SDI: Entrada de datos seriales.

SSx: Hasta 8 salidas para seleccion de dispositivos activos en bajo.

La figura 3.2 muestra el diagrama de conexion con otros dispositivos.

La figura 3.3 muestra el circuito de interfaz con el microcontrolador, se utilizan

buffers no inversores 74HC7014 tipo Schmitt trigger para proteger las entradas del

microcontrolador, cada salida soporta hasta 20mA de corriente compatible con los

niveles TTL de +5VDC.

Page 16: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 9

Figura 3.2: Conexion del modulo SPI.

Page 17: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 10

Figura 3.3: Esquema del modulo SPI en la unidad.

Page 18: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 11

3.2. Bus de datos I2C

El modulo I2C ( bus de Circuitos Inter–Integrados) es un bus de datos serial de

2 lıneas que permite la conexion de hasta 127 dispositivos en modo simple y hasta

1023 dispositivos en modo extendido sobre el mismo bus, la velocidad de comunicacion

puede ser de hasta 400Kbps en versiones antiguas pero se puede lograr 1Mbps en nuevas

versiones limitando el numero de dispositivos conectados al bus1.

Los pines del modulo son:

SCL: Salida del reloj de sincronizacion.

SDA: Pin bidireccional de datos seriales.

La figura 3.4 muestra el diagrama de conexion con otros dispositivos.

Figura 3.4: Conexion del modulo I2C.

Se utilizo el CI P82B96 el cual es un buffer bidireccional especial para I2C. Es-

te buffer permite extender la comunicacion hasta 25 metros a 150Kbps y 3 metros a

400kbps. La figura 3.5 muestra el circuito de interfaz recomendado por el fabricante

NXP semiconductors. Para la seleccion de las resistencias de pull–up R10 y R11 se debe

considerar la capacitancia total sobre cada lınea y la velocidad de comunicacion, sin

1Segun la capacitancia de entrada de cada dispositivo

Page 19: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 12

embargo, este como proyecto es de aplicacion general, se selecciono los valores estandar

teoricos para lograr una comunicacion de hasta 100kbps segun lo detalla Microchip en

la hoja de datos del microcontrolador; el valor correcto se puede seleccionar empırica-

mente, se pueden agregar resistencias externas para disminuir el valor equivalente de

la resistencia de pull–up y asi aumentar la velocidad del bus.

Generalmente el bus I2C se utiliza para comunicaciones Master – Slave, pero tam-

bien permite comunicaciones Master – Master sin modificacion de la capa fısica.

Figura 3.5: Esquema del modulo I2C en la unidad.

Page 20: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 13

3.3. Bus de datos de 16 bits

De manera opcional se diseno un bus paralelo de 16 bits similar a la interfaz que pre-

sentan los microprocesadores 8086. Este bus puede direccionar hasta 128k direcciones

de memoria para datos y perifericos E/S.

Este bus no se desarrollo completamente debido a que no se adquirieron los com-

ponentes necesarios para su implementacion. Posterior a la construccion del circuito

impreso, se detectaron errores de diseno, ademas, se penso en utilizar estos pines no

como bus de datos de 16 bits si no como entradas y salidas de proposito general (tipo

PLC) ya que se considero el bus paralelo como obsoleto debido al auge de dispositivos

seriales I2C y SPI.

Ninguna de las dos formas esta implementada a nivel de hardware ni software y se

deja como recomendacion final.

Page 21: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 14

3.3.1. Puerto de comunicacion UART

Se habilito un puerto UART para comunicacion local; se usa un cable directo RS–

232 para conexion con la PC,

Figura 3.6: Conexion del puerto UART al PC.

Page 22: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 15

Figura 3.7: Esquema del puerto UART.

Page 23: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 16

3.4. Puerto de comunicacion Ethernet

Para la conectividad Ethernet se utiliza un sistema XPortAR de Lantronix; este

sistema convierte de manera transparente la comunicacion serial RS232 a una comuni-

cacion Ethernet, ademas integra un servidor WEB que es compatible con aplicaciones

JAVA Applets e integra un conjunto de metodos para estableces sesiones remotas y

funciones de send, get, length, etc.

Figura 3.8: Conexion del puerto Ethernet.

El sistema XPortAR incluye dos puertos RS232, ambos puertos pueden establecer

sesiones con el microcontrolador, el puerto 2 del XportAR esta directamente conectado

al puerto 2 del microcontrolador; el puerto 1 del XportAR esta habilitado para conexion

directa con la PC pero se puede conectar al puerto 1 del microcontrolador utilizando

un cable serial cruzado, o realizando la conexion directamente desde la placa.

Figura 3.9: Sistema Xport AR de Lantronix.

Page 24: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 17

3.5. Entradas Analogicas

La unidad cuenta con 4 entradas analogicas, cada entrada analogica puede medir

senales de hasta ±50mV , el rango de medicion se puede ajustar por software y se puede

calibrar cada entrada con mediante una rutina especial. Cada entrada es diferencial y

se puede conectar a cualquier tipo de sensor analogico. La figura 3.11 ejemplifica los

modos de conexion.

El microcontrolador permite un rango maximo de +3.3V en cada entrada analogica,

se tuvo que crear un circuito acondicionador ajustable para permitir los rangos que

muestra la tabla 3.2.

La primera etapa del circuito de la figura 3.12utiliza un amplificador INA121 como

diferenciador y cada entrada esta acondicionada para que se atenue, amplifique o apli-

que un nivel CD a la senal, esto se realiza con potenciometros digitales AD5263 de 256

pasos; los potenciometros R1 y R2 se utilizan para atenuar la senal, el potenciometro

R3 ajusta la ganancia del amplificador de instrumentacion y el potenciometro R4 sirve

para aplicar un nivel CD. La segunda etapa del circuito consiste de un filtro pasoba-

jos antialias tipo Bessel de orden 2, este filtro se hace necesario para atenuar ruido

Figura 3.10: Esquema del puerto Ethernet.

Page 25: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 18

Figura 3.11: Conexion de las entradas analogicas.

Tabla 3.1: Rangos de medicion de cada entrada analogica.

Opcion Rango Bipolar Rango Unipolar

1 ±10V 0V – 10V

2 ±5V 0V – 5V

3 ±2V 0V – 2V

4 ±1V 0V – 1V

5 ±500mV 0V – 500mV

6 ±200mV 0V – 200mV

7 ±100mV 0V – 100mV

8 ±50mV 0V – 50mV

Page 26: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 19

y para eliminar las frecuencias que puedan interferir en el procesamiento digital. La

frecuencia maxima de muestreo del sistema es 1 kHz, esto permite representar senales

de hasta 500Hz. Los sistemas de control que se encuentran en el laboratorio son en

su mayorıa mecanicos y unos pocos son termicos, sistemas de este tipo con ancho de

banda superior a los 100Hz son poco comunes, se eligio una frecuencia de corte en los

filtros de al menos 25% superior a 100Hz. La estructura Salley–Key es ideal porque es

de ganancia unitaria y no inversor, se calcularon las resistencias R6 y R7 de tal modo

que se permitiera una relacion de C2 = 2C1 y que la frecuencia de corte dependa del

valor de C1 sin cambiar el comportamiento de filtro Bessel. El valor de C1 se calcula

con la formula:

C1 =3,0524 × 10

−6

fc

Para obtener un valor cercano de 125 Hz como frecuencia de corte C1 debe ser de

24.42 nF, se utilizo un el valor estandar de 22 nF, resultando una frecuencia de corte

de 138 Hz.

3.6. Salidas Analogicas

Se diseno el sistema con 2 salidas analogicas, cada salida analogica se calibra de la

misma manera que las entradas y se pueden seleccionar rangos de operacion, los rangos

son:

Cada salida es de baja potencia y no puede superar los 20mA. Si se desea una salida

de mayor potencia se puede utilizar el LM675T el cual puede suministrar cargas de

hasta 4A, en caso de su utilizacion, se debe usar una fuente externa.

Page 27: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 20

Figura 3.12: Esquema de las entradas analogicas.

Page 28: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 21

Tabla 3.2: Rangos de medicion de cada salida analogica.

Opcion Rango Bipolar Rango Unipolar

1 ±10V 0V – 10V

2 ±5V 0V – 5V

3 ±2V 0V – 2V

4 ±1V 0V – 1V

Figura 3.13: Conexion de las salidas analogicas.

Page 29: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 22

Figura 3.14: Esquema de las salidas analogicas.

Page 30: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 23

3.7. Interface de Encodificador de Cuadratura (QEI)

La interfaz QEI es un circuito especial para medicion de posicion y velocidad de

motores. Para ello se debe utilizar un encoder rotatorio incremental el cual se conecta

al eje del motor, el encoder tiene 2 salidas (A y B) estas dos lınea permiten medir

velocidad, si se quiere medir posicion se debe utilizar un encoder con 3 salidas (A,

B e Index). La unidad incluye 3 entradas (A, B y Index) con lo cual se puede medir

posicion y velocidad.

Figura 3.15: Conexion de QEI.

La velocidad maxima de medicion esta limitada por el tiempo de muestreo de la

unidad (1ms), con esta restriccion se pueden medir velocidades de hasta 30000 rpm; la

resolucion de medicion de posicion depende del encoder siempre y cuando la frecuencia

de los pulsos no supere al maximo permitido por el microcontrolador (300ms).

3.8. Salidas de control PWM:

La unidad cuenta con 4 modulos PWM, cada modulo se compone de tres senales:

PWMxH: Salida de modulacion por ancho de pulso H.

PWMxL: Salida de modulacion por ancho de pulso L.

Page 31: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 24

Figura 3.16: Esquema de QEI.

DIR: Salida de direccion.

Las salidas PWMxH y PWMxL son iguales, sin embargo, la senal de PWMxH puede

ser complementaria a la senal de PWMxL, ademas, se puede seleccionar la funcion de

cada salida como PWM, DIR o ON/OFF. Los 4 modulos operaran con un unico timer,

esto limita el sistema a una frecuencia unica para los 4 modulos.

Cada salida es de colector abierto, esto permite conectar la salida a niveles superio-

res que los utilizados por logica TTL; se recomienda aislar electricamente cada salida

de manera optica.

Ademas se cuenta con 2 entradas FLTx, estas entradas se pueden utilizar como

paro de emergencia del PWM, ambas senales actuan sobre los cuatro modulos, las

condiciones pueden ser exceso de velocidad, sobrecarga del motor, etc; en caso de

utilizarse se debe usar un circuito acondicionador externo que determine las condiciones

de paro.

Page 32: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 25

Figura 3.17: Conexion de PWM.

Figura 3.18: Esquema de PWM.

Page 33: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 26

3.9. Funciones de control de dispositivos IO

La estructuracion de la capa controladores se muestra en la figura 3.20; el archi-

vo IO CFG.H se utiliza como archivo unico de configuracion mınima y seleccion de

parametros propios del microcontrolador, los archivos subsecuentes contienen las fun-

ciones disponibles para la utilizacion de cada periferico.

Se pueden realizar cambios en el archivo IO CFG.H pero estos solo son validos en

tiempo de compilacion del programa, es decir, se debe recompilar todo el proyecto y

bajarlo a la unidad utilizando algun programador compatible con dsPIC33F2. Sin em-

bargo, IO CFG.H solo representa la configuracion inicial del sistema, tambien conocida

como configuracion mınima, esta configuracion mınima solo es necesaria para que el

microcontrolador pueda arrancar e inicializar todos los dispositivos y perifericos, a la

vez, esta es una configuracion conocida de hardware funcional, 100% operativo y se

puede utilizar como configuracion final del sistema.

Si el usuario necesita de otra configuracion, esta se puede realizar mediante co-

mandos utilizando cualquier puerto RS232, esta nueva configuracion se puede guardar

en memoria EEPROM y el microcontrolador la cargara despues de que se reinicie la

unidad. Para ello cada parametro de configuracion esta asociado con un registro de

comando llamado IO Config. Si la nueva configuracion no resulta correcta, esta se pue-

de omitir dejando presionando el boton ACC durante el arranque, el microcontrolador

ignorara la configuracion en EEPROM y cargara unicamente la configuracion mınima;

despues el usuario debe modificar la configuracion o simplemente enviar el comando

de guardar para mantener la configuracion mınima.

Las opciones de configuracion son propias del microcontrolador dsPIC33FJ256MC710,

el manual de referencia [13] de la familia dsPIC33F detalla cada modulo y se recomienda

leerlo antes de realizar cualquier modificacion.

2La unidad tiene le conector RJ11 para el programador MPLAB ICD2 de Microchip

Page 34: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 27

3.10. Modulo de Conversion Analogico Digital:

3.10.1. Opciones de configuracion del modulo:

El microcontrolador tiene disponible dos modulos de conversion A/D y 32 canales;

ambos modulos estan disponibles en la unidad, sin embargo, se limitaron a 4 canales,

ambos modulos operan en forma independiente; el archivo de configuracion IO CFG.H

presenta las siguientes opciones para los modulos A/D, el valor “x” representa el numero

Figura 3.19: Estructura C de la capa drivers.

Page 35: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 28

de modulo (1 o 2):

ADCx EN PERIPH 1 IO Config[0.0]

ADCx SAMPLING MODE 1 IO Config[0.1]

ADCx SAMPLES PCV 1 IO Config[0.7-2]

ADCx SAMPLING RATE 500 IO Config[1]:IO Config[2]

ADCx V REF POS CH AVDD IO Config[3.3-0]

ADCx V REF NEG CH AVSS IO Config[3.7-4]

ADCx RES BITS 1 IO Config[4.3-0]

ADCx DATA OUT SIGN INT IO Config[4.7-4]

ADCx EN PERIPH: Habilita (1) o deshabilita (0) el modulo.

ADCx SAMPLING RATE: Se especifica la velocidad de conversion de una muestra, el valor

maximo es 500 cuando se usan 12bits, y 1100 es el valor maximo cuando se usa 10bits

de resolucion.

ADCx SAMPLING MODE: Permite cambiar el modo de conversion cuando se desea tomar

muestras en mas de un canal, con el valor de 0 se toman muestras de los canales en

secuencia, es decir, un canal a la vez, con el valor de 1 se configura el modulo para que

tome las muestras de manera simultanea en los canales seleccionados.

ADCx SAMPLES PCV: Especifica el numero de muestras por conversion, el resultado final

es el promedio total de las muestras por canal, esta caracterıstica aumenta el tiempo

de conversion.

ADCx V REF POS CH : Seleccion la fuente de referencia AVDD es la alimentacion del

modulo ADC del microcontrolador, VREF P selecciona la fuente de referencia externa.

ADCx V REF NEG CH : Seleccion la fuente de referencia AVSS es la alimentacion del

modulo ADC del microcontrolador, VREF N selecciona la fuente de referencia externa.

ADCx RES BITS: Especifica el valor de resolucion de cada muestra, las opciones son 12

o 10 bits.

Page 36: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 29

ADCx DATA OUT: Selecciona el formato del resultado de la conversion, las opciones son:

SIGN INT, para formato entero con signo; UNSIGN INT, formato entero sin signo;

SIGN FRAC, formato fraccional (1.15) con signo y UNSIGN FRAC, formato fraccional

sin signo. No se recomienda cambiar este valor (por defecto es SIGN INT), ya que la

unidad utiliza este formato para la aritmetica del sistema.

3.10.2. Funciones del modulo:

El modulo de conversion A/D tiene varias funciones con las que se pueden tomar muestras

y realizar conversiones, las siguientes funciones se ubican en el archivo IO ADC.C:

Funcion IO ADCxconfig

Formato: void IO ADC1config( void )

Valor de Entrada: vacıo

Valor de Retorno: vacıo

Operacion: Esta funcion configura el modulo A/D de acuerdo a las opciones

establecidas en el archivo IO CFG.H; esta funcion se invoca

cuando se inicializa la unidad.

Ejemplo: IO ADC1config();

Funcion IO ADCxreadS

Formato: void IO ADCxreadS( INT8U in0 sel, INT8U in0 mod, INT16S ptr rst )

Valor de Entrada: in0 sel: Numero de entrada analogica del dsPIC a leer.

in0 mod: 0: comun, 1: diferencial.

ptr rst: Puntero al registro para resultado.

Valor de Retorno: vacıo

Operacion: Esta funcion realiza una muestra simple sobre el canal 0 del

microcontrolador. En el caso de modo diferencial utilizara la

entrada AN1 del microcontrolador como entrada negativa; en

modo comun el valor VREF(-).

Page 37: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 30

Ejemplo: IO ADC1readS( 4, 0, &ResultadoADC );

Funcion IO ADCxreadM

Formato: IO ADCxreadM( INT8U in0 sel, INT8U in0 mod,

INT8U in123 sel, INT8U in123 mod,

INT8U n ch, INT16S ptr rst )

Valor de Entrada: in0 sel: Numero de entrada analogica del dsPIC a leer.

in0 mod: 0: comun, 1: diferencial.

in123 sel: Seleccion de entradas analogicas.

in123 mod: 0: comun, 1: diferencial.

n ch: Numero de canales: 1, 2 o 4.

ptr rst: Puntero al registro o arreglo para resultado.

Valor de Retorno: vacıo

Operacion: Esta funcion realiza un muestreo multiple sobre los canales 0,

0,1 o 0,1,2,3. Esta funcion es ejecutable si la resolucion

configurada es de 10bits. El microcontrolador permite cualquier

entrada analogica sobre el canal 0, pero no asi sobre los

canales 1,2 y 3, para mayores detalles refierase al archivo

IO ADC.C

Ejemplo: IO ADC1readM( 4, 0, 0, 0, 4, ResultadoADC );

Funcion IO ADCreadDS

Formato: IO ADCreadDS( INT8U CH0AD1, INT8U CH0AD2, INT16S ptr rst )

Valor de Entrada: CH0AD1: Numero de entrada analogica para CH0 de AD1.

CH0AD2: Numero de entrada analogica para CH0 de AD2.

ptr rst: Puntero al arreglo para resultado.

Valor de Retorno: vacıo

Operacion: Esta funcion realiza un muestreo doble simple utilizando ambos

modulos. Se convierte en una funcion muy util cuando para obte-

Page 38: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 31

ner conversiones con resolucion de 12bits. Antes de usar la

rutina se debe llamar a la funcion IO ADCinitDS( ) al menos

una vez.

Ejemplo: IO ADCinitDS( );

...

IO ADCreadDS( 0, 1, ResultadoADC );

3.11. Modulo de comunicaciones I2C:

3.11.1. Opciones de configuracion del modulo:

El microcontrolador cuenta con dos modulos I2C, el modulo I2C1 se utiliza para control

de perifericos internos propios de la unidad, por lo tanto no se recomienda modificar la

configuracion; el modulo I2C2 se utiliza como bus externo para conexion de nuevos perifericos

y cualquier configuracion es permitida. El I2C2 se puede utilizar de la forma tradicional

mediante comandos de lectura/escritura usando las funciones de bloques disponibles.

I2CX EN PERIPH 1 IO Config[0.0]

I2CX IPMIEN 0 IO Config[0.1], 0: Dis, 1: Ena

I2CX A10M 0 IO Config[0.2], 0: Dis, 1: Ena

I2CX DISSLW 0 IO Config[0.3], 0: Dis, 1: En

I2CX SMEN 0 IO Config[0.4], 0: Dis, 1: Ena

I2CX GCEN 1 IO Config[0.5], 0: Dis, 1: Ena

I2CX FCLK 1000 IO Config[0.7-6], en kHz

I2CX EN PERIPH: Habilita (1) o deshabilita (0) el modulo.

I2CX IPMIEN: Habilita(1) o deshabilita (0) el modo IPMI.

Page 39: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 32

I2CX A10M: Especifica si las direcciones fısicas son de 10 bits.

I2CX DISSLW: Mejora la velocidad de comunicacion cuando el Clock Rate es mayor a

400kHz.

III2CX SMEN: Habilita(1) o deshabilita (0) el modo IPMI.

II2CX GCEN: Habilita (1) o deshabilita (0) la compatibilidad con el SMBus.

II2CX FCLK: Especifica la velocidad del reloj de sincronizacion del bus, 1000kHz maxi-

mo.

3.11.2. Funciones del modulo:

Las siguientes funciones se ubican en el archivo IO I2C.C.

Funcion IO I2Cconfig

Operacion: Esta funcion configura los modulos I2C de acuerdo a las opciones

establecidas en el archivo IO CFG.H; esta funcion se invoca

cuando se inicializa la unidad.

Formato: void IO I2Cconfig( void )

Valor de Entrada: vacıo

Valor de Retorno: vacıo

Ejemplo: IO I2Cconfig();

Funcion IO I2CXread

Operacion: Realiza una lectura secuencial de N cantidad de datos sobre

algun dispostivo I2C.

Formato: IO I2CXread(INT8U add, INT8U rdptr, INT8U length)

Valor de Entrada: add: Direccion fısica del dispositivo a leer.

rdptr: Puntero al arreglo de datos destino.

length: Cantidad de datos a leer.

Page 40: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 33

Valor de Retorno: vacıo

Ejemplo: IO I2C2read( 0xA0, datos, sizeof(datos) );

Funcion IO I2CXwrite

Operacion: Realiza una escritura secuencial de N cantidad de datos sobre

algun dispositivo I2C.

Formato: IO I2CXwrite(INT8U add, INT8U wrptr, INT8U length)

Valor de Entrada: add: Direccion fısica del dispositivo a escribir.

wrptr: Puntero al arreglo de datos.

length: Cantidad de datos a escribir.

Valor de Retorno: vacıo

Ejemplo: IO I2C2write( 0xA0, datos, sizeof(datos) );

Funcion IO I2CXpageHDread

Operacion: Realiza una lectura secuencial de N cantidad de datos sobre

una direccion de logica (inicio de pagina) de 16bits de algun

dispositivo I2C.

Formato: IO I2CXpageHDread(INT8U add, INT16U dir, INT8U rdptr,

INT8U length)

Valor de Entrada: add: Direccion fısica del dispositivo I2C a leer.

dir: Direccion logica del dispositivo I2C.

rdptr: Puntero al arreglo de datos.

length: Cantidad de datos a escribir.

Valor de Retorno: vacıo

Ejemplo: IO I2C2pageHDread( 0xA0, 0x0100, datos, sizeof(datos) );

Page 41: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 34

Funcion IO I2CXpageLDread

Operacion: Realiza una lectura secuencial de N cantidad de datos sobre

una direccion de logica (inicio de pagina) de 8bits de algun

dispositivo I2C.

Formato: IO I2CXpageLDread(INT8U add, INT16U dir, INT8U rdptr,

INT8U length)

Valor de Entrada: add: Direccion fısica del dispositivo I2C a leer.

dir: Direccion logica del dispositivo I2C.

rdptr: Puntero al arreglo de datos.

length: Cantidad de datos a escribir.

Valor de Retorno: vacıo

Ejemplo: IO I2C2pageLDread( 0xA0, 0x10, datos, sizeof(datos) );

Funcion IO I2CXpageHDwrite

Operacion: Realiza una escritura secuencial de N cantidad de datos sobre

una direccion de logica (inicio de pagina) de 16bits de algun

dispositivo I2C.

Formato: IO I2CXpageHDwrite(INT8U add, INT16U dir, INT8U wrptr,

INT8U length)

Valor de Entrada: add: Direccion fısica del dispositivo I2C a escribir.

dir: Direccion logica del dispositivo I2C.

wrptr: Puntero al arreglo de datos.

length: Cantidad de datos a escribir.

Valor de Retorno: vacıo

Ejemplo: IO I2C2pageHDwrite( 0xA0, 0x0100, datos, sizeof(datos) );

Funcion IO I2CXpageLDwrite

Page 42: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 35

Operacion: Realiza una escritura secuencial de N cantidad de datos sobre

una direccion de logica (inicio de pagina) de 8bits de algun

dispositivo I2C.

Formato: IO I2CXpageLDwrite(INT8U add, INT16U dir, INT8U wrptr,

INT8U length)

Valor de Entrada: add: Direccion fısica del dispositivo I2C a escribir.

dir: Direccion logica del dispositivo I2C.

wrptr: Puntero al arreglo de datos.

length: Cantidad de datos a escribir.

Valor de Retorno: vacıo

Ejemplo: IO I2C2pageLDwrite( 0xA0, 0x10, datos, sizeof(datos) );

3.12. Modulo de comunicaciones SPI:

Existen dos modulos SPI, al igual que el I2C, el modulo SPI1 se reserva para perifericos

internos a la unidad y el SPI2 esta disponible para operaciones de bus mediante funciones

simples de lectura/escritura.

3.12.1. Opciones de configuracion del modulo:

SPIX EN PERIPH 1 IO Config[0.0]

SPIX MODE MASTER IO Config[0.1]

SPIX SMP 0 IO Config[0.2],

0: en la mitad, 1: al final

SPIX CKE 1 IO Config[0.3],

0: cambio de idle a active,

1: cambio de active a idle

Page 43: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 36

SPIX CKP 0 IO Config[0.4],

0: idle bajo y active alto,

1: idle alto y active bajo,

SPIX SPRE 4 IO Config[0.7-5]

SPIX PPRE 2 IO Config[1]

SPIX EN PERIPH: Habilita (1) o deshabilita (0) el modulo.

SPIX MODE: Selecciona la operacion del modulo como MAESTRO o ESCLAVO

SPIX SMP: Indica en que parte de la sena de reloj se capturan los datos.

SPIX CKE: Especifica en que flanco de la senal de reloj se cambia el dato de salida.

SPIX CKP: Configura la polaridad de la senal de reloj.

SPIX SPRE: Configura el valor del preescaler primario.

SPIX PPRE: Configura el valor del preescaler secundario.

3.12.2. Funciones del modulo:

Las siguientes funciones son las rutinas disponibles de lectura/escritura SPI. El protocolo

de comunicacion SPI tiene la caracterıstica de que una operacion de escritura es a la vez una

operacion de lectura, y viceversa, esto reduce el numero de funciones y es por esta razon que

no se detallan funciones de lectura/escritura por separado. Para mayor informacion sobre el

protocolo de comunicacion SPI se puede consultar el manual de referencia [13].

Funcion IO SPIconfig

Operacion: Esta funcion configura los modulos SPI de acuerdo a las opciones

establecidas en el archivo IO CFG.H; esta funcion se invoca

cuando se inicializa la unidad.

Formato: void IO SPIconfig( void )

Valor de Entrada: vacıo

Page 44: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 37

Valor de Retorno: vacıo

Ejemplo: IO SPIconfig();

Funcion IO SPIXcommB

Operacion: Esta funcion realiza una operacion de lectura/escritura de 8bits

sobre el bus I2C. Una operacion de escritura sobreescribe los

datos del buffer con datos leıdos del bus SPI; para una

operacion de lectura es necesario llenar el buffer con datos

nulos o vacıos.

Formato: void IO SPIXcommB( INT8U puerto, INT8U ptr datain,

INT8U ptr dataout )

Valor de Entrada: puerto: Numero de puerto (0 – 7).

ptr datain: Puntero a registro fuente.

ptr dataout: Puntero a registro destino.

Valor de Retorno: vacıo

Ejemplo: datain = 0x00; //Registro de recepcion.

dataout = 0xA5; //Valor a escribir en el bus.

IO SPIXcommB( 5, &datain, &dataout );

Funcion IO SPIXcommW

Operacion: Esta funcion realiza una operacion de lectura/escritura de 16bits

sobre el bus I2C. Una operacion de escritura sobreescribe los

datos del buffer con datos leıdos del bus SPI; para una

operacion de lectura es necesario llenar el buffer con datos

nulos o vacıos.

Formato: void IO SPIXcommW( INT8U puerto, INT16U ptr datain,

INT16U ptr dataout )

Valor de Entrada: puerto: Numero de puerto (0 – 7).

Page 45: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 38

ptr datain: Puntero a registro fuente.

ptr dataout: Puntero a registro destino.

Valor de Retorno: vacıo

Ejemplo: datain = 0x0000; //Registro de recepcion.

dataout = 0x5AA5; //Valor a escribir en el bus.

IO SPIXcommW( 5, &datain, &dataout );

3.13. Modulo de comunicaciones UART:

El microcontrolador cuenta con dos modulos de comunicaciones UART, se utiliza el modu-

lo UART1 para operaciones de configuracion local o conexion directa con la PC; el modulo

UART2 se utiliza para conexion directa con el Lantronix XportAR.

3.13.1. Opciones de configuracion del modulo:

UARTX EN PERIPH 1 IO Config[0.0]

UARTX PAR 0 IO Config[0.2-1], 0: No, 1: impar, 2:par.

UARTX STOP 1 IO Config[0.3], 1: un bit, 2: dos bits.

UARTX HFC 0 IO Config[0.4]

UARTX MODE RTS 0 IO Config[0.5], 0: Flow control, 1: Simplex.

UARTX BR 57600 IO Config[0.7-6] : IO Config[1]: IO Config[2]

UARTX BUFF SIZE 128 Tama~no del buffer de datos para UARTX.

UARTX EN PERIPH: Habilita (1) o deshabilita (0) el modulo.

UARTX BR: Configura la velocidad de comunicacion en BPS.

UARTX PAR: Habilita la paridad y el numero de bits.

UARTX STOP: Configura los bits de parada.

Page 46: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 39

UARTX HFC: Se habilita el control de flujo por hardware.

UARTX MODE RTS: Modo para el pin RTS.

UARTX BUFF SIZE: Tamano del buffer de datos de salida y entrada, la asignacion de

este espacio solo es posible en tiempo de programacion, ya que se reserva espacio en

memoria DMA y no en memoria convencional.

3.13.2. Funciones del modulo:

Las siguientes funciones son las rutinas disponibles de lectura/escritura UART.

Funcion IO UARTconfig

Operacion: Esta funcion configura los modulos UART de acuerdo a las opciones

establecidas en el archivo IO CFG.H; esta funcion se invoca

cuando se inicializa la unidad.

Formato: void IO UARTconfig( void )

Valor de Entrada: vacıo

Valor de Retorno: vacıo

Ejemplo: IO UARTconfig();

Funcion IO UARTXwriteC

Operacion: Esta funcion envıa un byte por UART

Formato: void IO UART1writeC( INT8U dato )

Valor de Entrada: dato: Valor (byte) a enviar por UART.

Valor de Retorno: vacıo

Ejemplo: IO UART1writeC( ’A’ );

Funcion IO UARTXreadC

Operacion: Esta funcion lee un byte del buffer de datos UART

Formato: INT8U IO UART1readC( void )

Page 47: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 40

Valor de Entrada: vacio

Valor de Retorno: El dato leido

Ejemplo: dato = IO UART1readC;

Funcion IO UARTXwriteS

Operacion: Esta funcion envıa una trama de bytes de datos UART. Se

utiliza el DMA para optimizar el uso de CPU.

Formato: void IO UARTXwriteS( INT8U ptr datos, INT16U count )

Valor de Entrada: ptr datos: Puntero al arreglo de datos.

count: Tamano de la trama a enviar.

Valor de Retorno: vacıo

Ejemplo: IO UART2writeS( datos, sizeof(datos) );

Funcion IO UARTXreadS

Operacion: Esta funcion lee una trama de bytes de datos UART. Se utiliza

el DMA como buffer de datos, si el buffer se llena, por defecto,

se sobreescriben los primeros datos (buffer circular).

Formato: void IO UARTXreadS( INT8U ptr datos, INT16U count )

Valor de Entrada: ptr datos: Puntero al arreglo de datos.

count: Tamano de la trama a leer.

Valor de Retorno: vacıo

Ejemplo: IO UART2readS( datos, 10 );

Funcion IO UARTXlength

Operacion: Devuelve la cantidad de datos en buffer de recepcion.

Formato: INT16U IO UARTXlength( void )

Valor de Entrada: vacıo.

Valor de Retorno: La cantidad de datos en buffer.

Ejemplo: tama~no = IO UART2length( );

Page 48: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 41

3.14. Modulo PWM:

3.14.1. Opciones de configuracion del modulo:

PWM EN PERIPH 1 IO Config[0.0]

PWM FREC 10000 IO Config[1]:IO Config[2]

PWM INTPOST 0 IO Config[0.7-4]

PWM PTMOD 0 IO Config[0.2-1]:

0: Salida libre

1: Evento simple

2: Continuo, con cuenta de subida y bajada

3: Continuo, con cuenta de subida y bajada con interrupciones

PWM PMOD 1 IO Config[0.3], 0: Complementario, 1: independientes

ON/OFF: 0, DIR: 1, PWM: 2

PWMX PINH 2 Modo pin H: PWM o DIR o OFF

PWMX PINL 1 Modo pin L: PWM o DIR o OFF

PWMX PIND 0 Modo pin D: DIR o OFF

PWMX OFF DIR 1 Offset, 0: no direccional, 1: direccional

PWMX ONOFF D 0 IO Config[3.6]

PWMX OFFSET 50 IO Config[4]

PWM EN PERIPH: Habilita (1) o deshabilita (0) el modulo.

PWM FREC: Configura la frecuencia del modulo PWM.

PWM INTPOST: Genera una interrupcion cada N ciclos PWM.

PWM PTMOD: Modo de la base de tiempos PWM.

PWM PMOD: Modo de la operacion de los pines L/H.

Page 49: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 42

PWMX PINH: Modo de operacion del pin H: PWM, direccion, on/off.

PWMX PINL: Modo de operacion del pin L: PWM, direccion, on/off.

PWMX PIND: Modo de operacion del pin D: Direccion, on/off; en caso de utilizar L/H

como direccion el pin D sera complementario a L/H.

PWMX ONOFF D: Estado OFF de la salida ON/OFF, solo activo si se selecciona.

PWMX OFF DIR: Modo de operacion del offset: no direccional, direccional

PWMX OFFSET: Valor en % de ciclo de trabajo para usarlo como offset

Operacion del ciclo de trabajo OFFSET Se puede configurar un valor OFFSET a

cualquier salida PWM; toda la aritmetica de la unidad opera con valores normalizados, es

decir, el valor 1.0 significa valor maximo en cualquier modulo, 0.0 significa valor cero o nulo

y -1.0 valor mınimo o negativo del maximo, un valor de 1.0 en el PWM significa el 100 %

de ciclo de trabajo en el PWM, ası mismo, el valor -1.0 serıa 100 % de ciclo de trabajo pero

con el bit de direccion invertido, en estos casos, el valor offset es 0, sin embargo si el usuario

ajusta un valor offset el PWM puede funcionar de dos maneras:

No direccional: Un offset no direccional en la salida PWM significa que el valor 0.0

sera el valor offset configurado, si el usuario ajusta un offset de 50 % (50) la salida sera

un PWM con 50 % de ciclo de trabajo cuando se ingrese 0.0, por lo tanto un valor

de -1.0 ajustara 0% de ciclo de trabajo. El offset unidireccional no varıa los bits de

direccion, es decir, el sistema ajusta automaticamente la pendiente con el offset y el

valor maximo positivo, cualquier valor negativo que resulte inferior al valor mınimo de

0 % de ciclo de trabajo sera saturado a 0 %. Esta funcionalidad es util cuando se utiliza

Servo Motores controlados por PWM en donde el valor central se ajusta con un PWM

con 50 % de ciclo de trabajo.

Direccional: Un offset bidireccional en la salida PWM significa que el valor 0.0 sera el

valor offset configurado, pero a diferencia del offset unidireccional, el offset bidireccional

utiliza los bits de direccion, la pendiente se ajusta con el valor offset y el valor maximo,

Page 50: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 43

pero de igual manera, este patron se repite para valores PWM negativos; un valor

de +0.0 ajustara el ciclo de trabajo del PWM al offset configurado, un valor de 1.0

ajustara al 100 % en ciclo de trabajo. Un valor de -0.0 ajustara el ciclo de trabajo del

PWM al offset configurado, pero invertira el bit de direccion, de igual manera con el

valor -1.0 resultara un ciclo de trabajo de 100 % pero con el bit de direccion igualmente

invertido. Esta funcion es util para eliminar no linealidades de motores CD que por

naturaleza del torque de arranque estos no giran para valores pequenos de tension. La

figura 3.20 muestra las curvas representativas para los modos offset del PWM.

No Direccional Direccional

Figura 3.20: Curvas representativas de los modos de operacion offset del PWM.

3.14.2. Funciones del modulo:

Funcion IO PWMGconfig

Operacion: Esta funcion configura el modulo PWM de acuerdo a las opciones

establecidas en el archivo IO CFG.H; esta funcion se invoca

cuando se inicializa la unidad.

Formato: void IO PWMGconfig( void )

Page 51: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 44

Valor de Entrada: vacıo

Valor de Retorno: vacıo

Ejemplo: IO PWMGconfig();

Funcion IO PWMfrec

Operacion: Esta funcion ajusta el valor de frecuencia de la senal PWM,

el valor de frecuencia es el mismo para las cuatro salidas

PWM.

Formato: void IO PWMfrec( INT16U pwm frec )

Valor de Entrada: pwm frec: Valor de frecuencia en Hz.

Valor de Retorno: vacıo

Ejemplo: IO PWMXduty( 1000 );

Funcion IO PWMXduty

Operacion: Ajusta el valor del ciclo de trabajo de la senal PWM,

el formato debe ser punto fijo 2.14 o el seleccionado

previamente.

Formato: void IO PWMXduty( INT16S pwm duty )

Valor de Entrada: pwm duty: Valor del ciclo de trabajo.

Valor de Retorno: vacıo

Ejemplo: IO PWMfrec( 0x3FFF );

Funcion IO PWMstart

Operacion: Inicia el PWM en los 4 modulos

Formato: void IO PWMstart( void )

Valor de Entrada: vacio

Valor de Retorno: vacıo

Ejemplo: IO PWMstart( );

Page 52: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 45

Funcion IO PWMstop

Operacion: Detiene el PWM en los 4 modulos

Formato: void IO PWMstop( void )

Valor de Entrada: vacio

Valor de Retorno: vacıo

Ejemplo: IO PWMstop( );

3.15. Modulo Interfaz de Encodificador de Cuadra-

tura (QEI):

El microcontrolador cuenta con un modulo de interfaz para encodificadores de cuadratura,

este permite medir velocidad y posicion de manera digital. Estas operaciones se realizan con

software.

3.15.1. Opciones de configuracion del modulo:

QEI EN PERIPH 1 IO Config[0.0]

QEI QEIM2 1 IO Config[0.1] 0: 2x, 1: 4x

QEI SWPAB 0 IO Config[0.3] 0: No, 1: Invertir

QEI QEIM1 1 IO Config[0.4], 0: con Index, 1: valor maximo

QEI POSRES 1 IO Config[0.7], 0: Apagado, 1: Activo

QEI MAXCNT1 6 IO Config[1]:IO Config[2]

QEI EN PCDOUT 0 IO Config[0.5] 0: Apagado, 1: Encendido

QEI EN QECK 1 IO Config[0.6]: Habilitar Filtro digital

QEI QECK 8 IO Config[3]: Divisor de reloj del filtro digital, 0 - 7, 8: auto

QEI NUMT 2 IO Config[4] max 255

QEI MAXR 1000 IO Config[5]:IO Config[6]

Page 53: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 46

QEI EN PERIPH: Habilita el modulo QEI.

QEI QEIM2: Modo de operacion.

QEI SWPAB: Invertir canales A y B.

QEI QEIM1: Reset de contador.

QEI POSRES: Reset de contador con Index.

QEI MAXCNT1: Pulsos por revolucion, PPR.

QEI EN PCDOUT: Habilita salida del pin de direccion, (no utilizable)

QEI EN QECK: Habilitar Filtro digital.

QEI QECK: Divisor de reloj del filtro digital.

QEI NUMT: Numero de vueltas para un ciclo (Relacion de caja reductora).

QEI MAXR: Se habilita el control de flujo por hardware.

3.15.2. Funciones del modulo:

Funcion IO QEIconfig

Operacion: Esta funcion configura el modulo QEI de acuerdo a las opciones

establecidas en el archivo IO CFG.H; esta funcion se invoca

cuando se inicializa la unidad.

Formato: void IO QEIconfig( void )

Valor de Entrada: vacıo

Valor de Retorno: vacıo

Ejemplo: IO QEIconfig();

Page 54: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 3. DESCRIPCION DE HARDWARE 47

Funcion IO QEIposition

Operacion: Obtiene el valor de posicion del motor.

Formato: void IO QEIposition( void )

Valor de Entrada: vacıo

Valor de Retorno: Posicion del motor

Ejemplo: PosAct = IO QEIposition();

Funcion IO QEIstart

Operacion: Inicia el timer asociado para la medicion de velocidad.

Formato: void IO QEIstart( void )

Valor de Entrada: vacıo

Valor de Retorno: vacio

Ejemplo: IO QEIstart();

Funcion IO QEIstop

Operacion: Detiene el timer asociado para la medicion de velocidad.

Formato: void IO QEIstop( void )

Valor de Entrada: vacıo

Valor de Retorno: vacio

Ejemplo: IO QEIstop();

Funcion IO QEIspeed

Operacion: Obtiene el valor actual de la velocidad del motor.

Formato: void IO QEIstop( void )

Valor de Entrada: vacıo

Valor de Retorno: vacio

Ejemplo: SpdAct = IO QEIspeed();

Page 55: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Capıtulo 4

Esquema general del software

El firmware de la unidad controladora esta programada en el lenguaje C30 de Microchip

el cual es compatible con el estandar ANSI C. Cualquier ayuda sobre le lenguaje C30 y el

estandar ANSI C los puede encontrar en [15] y en [8].

Ası mismo, la unidad utiliza el sistema operativo en tiempo real MicroC/OS-II de Micrium

que permite al microcontrolador efectuar diferentes tareas con mayor facilidad y eficiencia.

Sobre la teorıa de sistemas operativos en tiempo real y sobre MicroC/OS-II lo puede encontrar

en [11].

4.1. Requerimientos mınimos de software y hard-

ware

Para poder abrir el proyecto, solamente necesita de MPLAB IDE v8.0 o superior y del

plug–in C30 Compiler v3.1 o superior, puede utilizar la version estudiante. Este plug–in

incluye todas las bibliotecas necesarias.

Ademas, necesita un programador compatible con dsPIC, para ello puede utilizar el pro-

gramador MPLAB ICD2; la placa de la unidad controlador incluye un conector RJ11 com-

patible con el programador.

Por ultimo, es necesaria una fuente de ±12V para alimentar la unidad.

48

Page 56: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 4. ESQUEMA GENERAL DEL SOFTWARE 49

4.2. Abrir el proyecto

Se incluye un disco con todo el codigo fuente del proyecto. El proyecto es toda la carpeta

llamada: Micrium. Copie la carpeta Micrium a la unidad C del computador.

Ahora, abra MPLAB IDE; luego, ingrese a Project ->Open... y busque la carpeta

Micrium que copio previamente.

Busque el archivo OS-Probe.mcp dentro de la ruta: C:\Micrium\Software\Evalboards\Mi-

crochip\Explorer16\PIC33FJ256\MPLAB-C30\OS-Probe

Seguidamente se abrira el proyecto.

4.3. Estructura del proyecto

Los archivos .C contienen el codigo y funciones ejectuables en el proyecto. Los archivos

inciados con OS pertenecen al sistema operativo en tiempo real; observe que el RTOS no

es una apliacion instalable, esta consiste de un conjunto de archivos que el usuario puede

modificar; se recomienda no alterar ningun parametro.

Los archivos iniciados con IO se refieren a funciones del hardware, estas funciones llaman

controladores.

Los archivos iniciados con APP se refieren a los archivos de la aplicacion y maquina

virtual.

Los archivos .H son los encabezados o headers. Estos archivos guardan todos los parame-

tros relacionados con la configuracion de hardware y del RTOS.

4.3.1. Descripcion de archivos importantes

APP.C: Este es el archivo principal, contiene:� La funcion main.� Declaracion de variables globales.� Estructura de las tareas.

Page 57: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 4. ESQUEMA GENERAL DEL SOFTWARE 50� Declaracion de los elementos del sistema operativo.

TRAPS.C: Rutinas de interrupcion para deteccion de errores.

COMMAND.C: Lista y funciones de instrucciones y comandos de usuario.

IO CFG.H: Archivo con la configuracion mınima de hardware.

SYS DEF.H: Definiciones de los modulos virtuales.

SYS BLOCKS.H: Estructuras de los modulos virtuales.

SYS CFG.H: Parametros y definiciones especiales de la unidad.

APP FUNC.H: Encabezado de definiciones con todas las funciones globales.

Cada archivo mantiene informacion importante que sirve de ayuda al usuario.

Page 58: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Capıtulo 5

Guia de comandos

Los comandos permiten utilizar y configurar las todas las opciones de hardware y funciones

de maquina virtual. El archivo COMMAND.C contiene todo el codigo para la ejecucion de

comandos.

Esta primera version de la unidad no cuenta aun con algun software de administracion

y configuracion, para realizar tales acciones el usuario puede utilizar cualquier programa de

envıo y recepcion de tramas hexadecimales por puerto serie RS232 o puede automatizar los

procedimientos con cualquier lenguaje de programacion.

Durante este proyecto se utilizo el programa LookRS232 de fCoderGroup1 como depura-

cion y el lenguaje de programacion JAVA con el IDE NetBeans2 para la creacion de aplica-

ciones web.

La unidad esta pendiente de las acciones del usuario mediante las tareas de comunicacio-

nes, si alguna tarea detecta un comando con la secuencia correcta se procedera a ejecutar la

funcion Command COM, la cual evaluara el comando. Cada tarea de comunicacion es indepen-

diente y el RTOS no permite que se comparta informacion entre las tareas.

1www.lookrs232.com/2www.netbeans.org

51

Page 59: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 5. GUIA DE COMANDOS 52

5.1. Estructura de los comandos

Cada comando se compone de:

1. Codigo de comando, es un numero en hexadecimal que identifica el comando.

2. Numero de bytes de la trama de comando.

3. Trama de comando,

5.2. Secuencia de Envıo y Confirmacion

Para minimizar los errores de comunicacion se implemento un enlace de tres vıas; para

ello se establecio el siguiente procedimiento de envıo y confirmacion (ver figura 5.1):

1. El usuario envıa el codigo de comando.

2. La unidad envıa el mismo codigo como senal de confirmacion. Si el comando no existe,

la unidad reinicia y envıa el codigo 0x53 o el caracter S en ASCII.

3. Si el codigo es correcto, se debe enviar la trama de comando encabezado con un byte

que indique el tamano de la trama. Tanto el codigo de comando y el numero de bytes

no cuentan como miembros de la trama de comando.

Cuando la tarea de comunicacion termina de ejecutar el comando, la tarea reinicia y

envıa el codigo 0x53. Un comando se puede cancelar esperando 1 segundo o enviando 0 en el

numero de bytes de la trama.

5.2.1. Secuencia de ejemplo

Se desea configurar el rango de medicion de ±2 en el canal 0 del ADC.

El codigo de comando para cambiar el rango de medicion de un canal ADC es 0x1A. La

trama de comando se conforma de: Numero de canal y codigo de rango. En este caso, el

numero de canal es 0x00 y el numero de rango para ±2 es 0x02. La secuencia de envıo y

confirmacion es:

Page 60: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 5. GUIA DE COMANDOS 53

Figura 5.1: Algoritmo de la tarea de comunicacion.

Page 61: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 5. GUIA DE COMANDOS 54

1. Comando: 0x1A.

2. Tamano: 0x02.

3. Trama: 0x00, 0x02.

Page 62: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Capıtulo 6

Lista de Comandos

Los comandos se clasifican en secciones:

1. Seccion 0x10: Funciones de hardware y sistema.

2. Seccion 0x20: Funciones de modulos parte I.

3. Seccion 0x30: Funciones de modulos parte II.

4. Seccion 0x50: Funciones de captura e informacion.

5. Seccion 0x60: Funciones de red I2C.

Para facilitar el ingreso de opciones numericas se utiliza el formato ASCII en 6 bytes.

Ejemplo, si se desea introducir el valor numerico 0,1234569 se debe redondear y construir

una cadena de 6 bytes en ASCII de la siguiente manera: 0.1235. Para el caso de valores

negativos, el signo − cuenta como 1 byte; ejemplo: -0.123.

Los modulos que necesitan de tiempo de muestreo se utiliza 16 bits (2 bytes) para es-

pecificar este parametro. Ejemplo, se desea un tiempo de muestreo de 500ms, la secuencia

corresponde: 0xF4 0x01, se ingresa primero el byte LSB y despues el byte MSB.

55

Page 63: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 56

6.1. Funciones de hardware y sistema

Estos comandos permiten cambiar la configuracion de hardware y las opciones de la

unidad controladora.

6.1.1. Iniciar o detener maquina virtual

Codigo de comando: 0x11

Tamano de trama: 1 byte.

Opciones de trama:� 0: Detiene aplicacion de la maquina virtual. Pone a cero todas las salidas DAC

y PWM.� 1: Inicia aplicacion de la maquina virtual. Ejecuta una aplicacion previamente

creada.� 2: Pausa aplicacion de la maquina virtual.

6.1.2. Devuelve registro de estado

Codigo de comando: 0x13

Tamano de trama: 1 byte.

Opciones de trama:� 0 - 15: Numero de registro.

Registro de estado:

Este registro mantiene el estado de operaciones del sistema, para diagnostico. Numeros

de registro:

0: Estado de la ultima operacion UART1

Page 64: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 57

1: Estado de la ultima operacion UART2

2: Registra de donde se tomo la configuracion de modulos IO:� 0: Inexistente.� 1: Configuracion por defecto.� 2: Se leyo la EEPROM pero no se encontro una configuracion para IO, el sistema

se configuro por defecto.� 3: Los modulos IO se configuraron de la EEPROM.

3: Detecto un error en lectura de la memoria EEPROM.

4: Estado de la ultima operacion de bus.

5: Estado de la tarea de captura:� 0: desactivada.� 1: capturar/ando.� 2: datos listos.� 3: enviar/ando datos.� 4: borrar/ando datos.

6: Error en BUS I2C numero de reintentos vencidos.

7: Error en BUS I2C intento de escritura en el puerto no existe.

8: Ultimo comando sobre UART2.

9: Ultimo comando sobre UART1.

6.1.3. Borra la memoria EEPROM

Codigo de comando: 0x14

Tamano de trama: 1 byte.

Page 65: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 58

Opciones de trama:� X: Cualquier valor para cumplir formato de comando.

6.1.4. Guarda la configuracion de sistema en EEPROM

Codigo de comando: 0x15

Tamano de trama: 1 byte.

Opciones de trama:� X: Cualquier valor para cumplir formato de comando.

6.1.5. Recibe el archivo de aplicacion

Codigo de comando: 0x16

Tamano de trama: Segun tamano de archivo netlist.

Opciones de trama:� N: Archivo netlist.

6.1.6. Recibe un archivo de configuracion IO

Codigo de comando: 0x17

Tamano de trama: Segun tamano de archivo de configuracion.

Opciones de trama:� N: Numero de modulo IO (ver archivo IO CFG.H).� F: Archivo de configuracion.

Page 66: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 59

6.1.7. Reinicia el sistema

Codigo de comando: 0x18

Tamano de trama: 1 byte.

Opciones de trama:� X: Cualquier valor para cumplir formato de comando.

6.1.8. Asigna un valor a un elemento de salida (DAC o PWM)

Codigo de comando: 0x19

Tamano de trama: 7 bytes.

Opciones de trama:� N: Numero de salida.

◦ 0x00: Salida DAC0.

◦ 0x01: Salida DAC1.

◦ 0x02: Salida PWM0.

◦ 0x03: Salida PWM1.

◦ 0x04: Salida PWM2.

◦ 0x05: Salida PWM3.� A: Valor normalizado en ASCII (6 bytes).

6.1.9. Define un rango de medicion a un canal ADC

Codigo de comando: 0x1A

Tamano de trama: 2 bytes.

Opciones de trama:

Page 67: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 60� N: Numero de canal.� R: Numero de rango.

◦ 0x00: ±10V .

◦ 0x01: ±5V .

◦ 0x02: ±2V .

◦ 0x03: ±1V .

◦ 0x04: ±0,5V .

◦ 0x05: ±200mV .

◦ 0x06: ±100mV .

◦ 0x07: ±50mV .

◦ 0x08: 0 − 10V .

◦ 0x09: 0 − 5V .

◦ 0x0A: 0 − 2V .

◦ 0x0B: 0 − 1V .

◦ 0x0C: 0 − 0,5V .

◦ 0x0D: 0 − 200mV .

◦ 0x0E: 0 − 100mV .

◦ 0x0F: 0 − 50mV .

6.1.10. Define un rango de medicion a un canal DAC

Codigo de comando: 0x1B

Tamano de trama: 2 bytes.

Opciones de trama:� N: Numero de canal.� R: Numero de rango.

Page 68: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 61

◦ 0x00: ±10V .

◦ 0x01: ±5V .

◦ 0x02: ±2V .

◦ 0x03: ±1V .

◦ 0x04: 0 − 10V .

◦ 0x05: 0 − 5V .

◦ 0x06: 0 − 2V .

◦ 0x07: 0 − 1V .

6.1.11. Lee un canal ADC

Codigo de comando: 0x1C

Tamano de trama: 1 bytes.

Opciones de trama:� N: Numero de canal.

Este comando devuelve el valor normalizado de la lectura ADC (6 bytes).

6.2. Funciones de modulos parte I

Estos comandos permiten cambiar la configuracion de los modulos virtuales.

6.2.1. Cambiar la configuracion de un filtro

Codigo de comando: 0x21

Tamano de trama: Variable.

Opciones de trama:� T: tipo de filtro:

Page 69: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 62

◦ 0: IIR2.

◦ 1: IIR4.

◦ 2: FIR.

◦ 3: NOTCH 60Hz.� N: Numero de bloque.� FC: Frecuencia de corte en Hz, 6 bytes en ASCII (solo IIR2, IIR4 y FIR).� BW: Ancho de banda en Hz, 6 bytes en ASCII (solo IIR2, IIR4).� R: Radio de los polos conjugados, 6 bytes en ASCII (opcional: solo NOTCH).� TF: Tipo de filtro: (Solo IIR2 y IIR4)

◦ 0: Butterworth paso bajo.

◦ 1: Butterworth paso alto.

◦ 2: Bessel paso bajo.

◦ 3: Bessel paso alto.

◦ 4: Butterworth pasa banda.

◦ 5: Butterworth rechaza banda.� TF: Tipo de filtro: (Solo FIR).

◦ 0: De 1 a 16 etapas

◦ 1: 32 etapas.

◦ 2: 64 etapas.

Los filtros NOTCH de 60Hz no requieren configuracion previa a la utilizacion, este tipo de

filtro se configura por defecto con r = 0,95. Los demas tipos de filtro necesitan configurarse

antes de entrar en operacion.

6.2.2. Configurar un modulo de funcion de transferencia

Codigo de comando: 0x23

Page 70: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 63

Tamano de trama: Variable.

Opciones de trama:� N: Numero de bloque.� TL: Tiempo de muestreos en ms, byte LSB.� TH: Tiempo de muestreos en ms, byte MSB.� TL: Formato:

◦ 0: Polos y ceros.

◦ 1: Constantes.� Formato de polos y cero:

◦ G: Ganancia en ASCII 6 bytes.

◦ P1: Polo 1, real y complejo, 12 bytes en ASCCI.

◦ P2: Polo 2, real y complejo, 12 bytes en ASCCI.

◦ Z1: Cero 1, real y complejo, 12 bytes en ASCCI.

◦ Z2: Cero 2, real y complejo, 12 bytes en ASCCI.� Formato de constantes:

◦ B0: Constante B0.

◦ B1: Constante B1.

◦ A1: Constante A1.

◦ B2: Constante B2.

◦ A2: Constante A2.

Las cadenas con numeros complejos se introducen como dos cadenas ASCII de 6 bytes,

ejemplo: −0,5 + j0,5 se representa como -0.5000.5000.

6.2.3. Recibe coeficientes Kp, Ki, Kd, Ts para configurar PID

Codigo de comando: 0x25

Page 71: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 64

Tamano de trama: 22 bytes.

Opciones de trama:� TF: Tipo de control PID:

◦ 0: PID estandar.

◦ 1: PI D.

◦ 2: I PD.� N: Numero de bloque.� TL: Tiempo de muestreos en ms, byte LSB.� TH: Tiempo de muestreos en ms, byte MSB.� P: Constante proporcional ASCII 6 bytes.� I: Constante integral ASCII 6 bytes.� D: Constante derivativa ASCII 6 bytes.

6.2.4. Recibe parametros de configuracion de oscilador senoi-

dal

Codigo de comando: 0x26

Tamano de trama: 13 bytes.

Opciones de trama:� N: Numero de bloque SOSC.� X: Frecuencia, 6 bytes en ASCII.� G: Amplitud, 6 bytes en ASCII.

Page 72: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 65

6.2.5. Recibe parametros de configuracion de oscilador recta-

gular

Codigo de comando: 0x27

Tamano de trama: 19 bytes.

Opciones de trama:� N: Numero de bloque ROSC.� TL1: Tiempo 1 en ms, byte LSB.� TH1: Tiempo 1 en ms, byte MSB.� TL2: Tiempo 2 en ms, byte LSB.� TH2: Tiempo 2 en ms, byte MSB.� TL3: Tiempo 3 en ms, byte LSB.� TH3: Tiempo 3 en ms, byte MSB.� GP: Amplitud positiva, 6 bytes en ASCII.� GN: Amplitud negativa, 6 bytes en ASCII.

6.2.6. Recibe parametros de configuracion de oscilador trian-

gular

Codigo de comando: 0x28

Tamano de trama: 17 bytes.

Opciones de trama:� N: Numero de bloque TOSC.� TL1: Tiempo 1 en ms, byte LSB.� TH1: Tiempo 1 en ms, byte MSB.

Page 73: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 66� TL2: Tiempo 2 en ms, byte LSB.� TH2: Tiempo 2 en ms, byte MSB.� GP: Amplitud positiva, 6 bytes en ASCII.� GN: Amplitud negativa, 6 bytes en ASCII.

6.2.7. Recibe parametros de configuracion de oscilador trian-

gular

Codigo de comando: 0x29

Tamano de trama: 17 bytes.

Opciones de trama:� N: Numero de bloque VOSC.� TL1: Tiempo maximo en ms, byte LSB.� TH1: Tiempo maximo en ms, byte MSB.� TL2: Tiempo mınimo en ms, byte LSB.� TH2: Tiempo mınimo en ms, byte MSB.� GP: Amplitud positiva, 6 bytes en ASCII.� GN: Amplitud negativa, 6 bytes en ASCII.

6.2.8. Recibe parametros de configuracion de K

Codigo de comando: 0x2B

Tamano de trama: Variable.

Opciones de trama:� N: Numero de bloque.

Page 74: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 67� TL: Tiempo de muestreos en ms, byte LSB.� TH: Tiempo de muestreos en ms, byte MSB.� X: Tamano del arreglo.� K: Cadena de constantes en formato ASCII.

El tamano maximo del arreglo es de 4, este numero se especifica en formato decimal

o hexadecimal.

6.3. Funciones de modulos parte II

6.3.1. Crear o destruir modulos virtuales

Codigo de comando: 0x31

Tamano de trama: Variable.

Opciones de trama:� N: Total de modulos.� X: Archivo.

6.3.2. Ajusta ganancia de un modulo GAIN

Codigo de comando: 0x32

Tamano de trama: 7 bytes.

Opciones de trama:� N: Numero de bloque.� X: Ganancia, 6 bytes en ASCII.

Page 75: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 68

6.3.3. Ajusta lımites de un modulo SAT

Codigo de comando: 0x33

Tamano de trama: 13 bytes.

Opciones de trama:� N: Numero de bloque.� X: Valor maximo, 6 bytes en ASCII.� Y: Valor mınimo, 6 bytes en ASCII.

6.3.4. Ajusta lımites de un modulo NOISE

Codigo de comando: 0x34

Tamano de trama: 13 bytes.

Opciones de trama:� N: Numero de bloque.� X: Valor maximo, 6 bytes en ASCII.� Y: Valor mınimo, 6 bytes en ASCII.

6.3.5. Funciones de captura e informacion

6.3.6. Recibir parametros de configuracion de la tarea de cap-

tura

Codigo de comando: 0x51

Tamano de trama: Variable.

Opciones de trama:

Page 76: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 69� SL: Tiempo de muestreo en ms, byte LSB.� SH: Tiempo de muestreo en ms, byte MSB.� SS: Tiempo total de captura en segundos.� V: Variables, 3 bytes por variable:

◦ T: Valor tipo.

◦ N: Numero de bloque.

◦ O: Numero de salida.

6.3.7. Recibir parametros de configuracion de la tarea de cap-

tura

Codigo de comando: 0x52

Tamano de trama: 2 bytes.

Opciones de trama:� OP: Estado de la tarea de captura:

◦ 0: Desactivada.

◦ 1: Iniciar captura.

◦ 2: Datos listos.

◦ 1: Enviar datos.

◦ 2: Borrar datos.

El registro de operacion de la tarea de captura se puede consultar con el comando 0x53.

Es recomendable consultar el estado del registro captura antes de iniciar o configurar una

captura de datos. La tarea de captura es compartida entre las maquinas virtuales. El RTOS

no permite que una vez iniciada la tarea de captura esta sea interrumpida por otra maquina

virtual que no sea la que la inicio; sin embargo, la tarea de captura tiene un timeout de 30

segundos si esta no recibe actividad.

Page 77: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 70

6.3.8. Devolver valor de los registros de la tarea de captura

Codigo de comando: 0x53

Tamano de trama: 1 byte.

Opciones de trama:� 0 - 2: Numero de registro.

Indices de los registros de operacion de la tarea de captura:

0: Maquina que tiene la tarea

1: Estado de la tarea de captura (Maq 0)

2: Estado de la tarea de captura (Maq 1)

6.3.9. Enviar valores de salida de los modulos virtuales

Codigo de comando: 0x54

Tamano de trama: Variable.

Opciones de trama:� OP: Variables, 3 bytes por variable:

◦ T: Valor tipo.

◦ N: Numero de bloque.

◦ O: Numero de salida.

Esta funcion es util para verificar en tiempo real el comportamiento de la planta y el con-

trol, una finalizada el comando la unidad enviara en el mismo orden la variables consultadas

en formato normalizado (ASCII 6 bytes).

Page 78: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 6. LISTA DE COMANDOS 71

6.3.10. Guardar valor en un registro de proposito general

Codigo de comando: 0x55

Tamano de trama: 7 bytes.

Opciones de trama:� N: Numero de registro.� V: Valor, 6 bytes en ASCII.

6.3.11. Enviar informacion acerca porcentaje de uso de la

CPU

Codigo de comando: 0x56

Tamano de trama: 1 byte.

Opciones de trama:� N: Cualquier valor para cumplir formato de comandos.

Este comando envıa el porcentaje de uso de la CPU donde 1.0 representa el 100 %.

Page 79: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Capıtulo 7

Cambiar la configuracion de los

perifericos

Estos son los pasos a seguir para cambiar la configuracion de un dispositivo IO, esta

configuracion se guardara en memoria externa EEPROM y se ejecutara una vez que se reinicia

la unidad.

Procedimiento:

1. Encender la unidad y esperar a que termine la secuencia de inicio. Si la configuracion

no es funcional, debe apagar la unidad, mantener presionado el boton ACC/CAL y

luego encender la unidad. Soltar el boton de ACC/CAL hasta que el led de ON se

encienda. Esto evitara que se cargue la configuracion de la memoria EEPROM.

2. Conecte un cable serial directo, al puerto COM1 de la unidad.

3. Iniciar una sesion de usuario con la unidad y LookRS232, para ello configure el Loo-

kRS232 con los siguientes parametros:

Transfer speed: 9600

Data bits: 8

Stop bits: 2

72

Page 80: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 7. CAMBIAR LA CONFIGURACION DE LOS PERIFERICOS 73

Parity control: None

Flow control: None

4. Antes de enviar un comando, debe disenar una configuracion. Note que en el archivo

IO CFG.H, cada parametro esta asociado con un registro IO Config. Este indica el

numero de registro y numero o rango de bits. Ejemplo: Se desea cambiar la configuracion

del ADC1 con los siguientes parametros:

Parametro Valor IO Config Valor en IO Config

ADCx EN PERIPH 1 IO Config[0.0] 1d

ADCx SAMPLING MODE 0 IO Config[0.1] 0d

ADCx SAMPLES PCV 2 IO Config[0.7-2] 2d

ADCx SAMPLING RATE 900 IO Config[1] 0x03h

IO Config[2] 0x84h

ADCx V REF POS CH AVDD IO Config[3.3-0] 3d

ADCx V REF NEG CH AVSS IO Config[3.7-4] 2d

ADCx RES BITS 0 IO Config[4.3-0] 0

ADCx DATA OUT SIGN INT IO Config[4.7-4] 1d

El comando inicia con una peticion a la unidad de configuracion de dispositivo IO me-

diante el codigo 0x17h, luego con la cantidad de bytes a enviar (igual a total de bytes

de la trama - 2), numero de periferico a configurar y por ultimo bytes de configuracion.

Con estos datos, la trama se compone de la siguiente manera:

Page 81: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 7. CAMBIAR LA CONFIGURACION DE LOS PERIFERICOS 74

Byte Nombre Valor

1 Comando 0x17h

2 Tamano 0x06h

3 Periferico 0x20h

4 IO Config[0] 0x05h

5 IO Config[1] 0x03h

6 IO Config[2] 0x84

7 IO Config[3] 0x23h

8 IO Config[4] 0x10h

5. Debe enviar los comandos en secuencia y no uno a uno; para ello, utilize la funcion GO

del programa LookRS232. Cuando termine de enviar los comando la unidad envıa el

simbolo “S” el cual indica que la configuracion se recibio con exito. Si recibe el caracter

“E”, significa que se produjo un error de comunicacion y debe revisar que la trama

este correcta.

Figura 7.1: Comando recibido.

6. Ahora hay que guardar la configuracion enviando el comando 0x15h, con la siguiente

estructura:

Page 82: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 7. CAMBIAR LA CONFIGURACION DE LOS PERIFERICOS 75

Tabla 7.1: Numeros de dispositivo.

Dispositivo Numero

0x10h Puerto A

0x11h Puerto B

0x12h Puerto C

0x13h Puerto D

0x14h Puerto E

0x15h Puerto F

0x16h Puerto G

0x17h Entradas Analogicas

0x20h ADC 1

0x21h ADC 2

0x30h UART 1

0x31h UART 2

0x40h I2C 1

0x41h I2C 2

0x50h SPI 1

0x51h SPI 2

0x60h PWM

0x70h QEI 1

Page 83: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 7. CAMBIAR LA CONFIGURACION DE LOS PERIFERICOS 76

Byte Nombre Valor

1 Comando 0x15h

2 Tamano 0x01h

3 Vacio 0x00h

7. Por ultimo, debe reiniciar la unidad para que la configuracion sea ejecutada, para ello

se puede presionar el boton de RESET o enviar el comando 0x18h:

Byte Nombre Valor

1 Comando 0x18h

2 Tamano 0x01h

3 Vacio 0x00h

Page 84: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Capıtulo 8

Creacion de modulos

Esta seccion explica como crear nuevas funciones o modulos virtuales. El proceso se rea-

liza directamente en el compilador MPLAB C30 de Microchip, por lo que es necesario una

recompilacion del firmware y reprogramacion del microcontrolador.

Como ejemplo, se creara el modulo virtual NOISE, este modulo tendra la funcion de

generar una salida con valores aleatorios para simulacion de ruido; el modulo virtual NOISE

tendra como parametros el valor maximo y mınimo de salida.

8.1. Definiciones

Cada modulo virtual se compone de los siguientes elementos:

Estructura: Esta se define como un nuevo tipo dentro del programa, esta se crea como

un a estructura (struct) que se compone de:� Variables y constantes intermedias para el calculo del modulo virtual.� Registro de salida y puntero(s) de la(s) entrada(s).� Punteros a los modulos anterior y pasado del mismo tipo. Todos los modulos del

mismo tipo se enlazan uno con el otro. Ver figura

77

Page 85: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 8. CREACION DE MODULOS 78

Valor tipo: Define el numero valor tipo, el cual identifica el modulo virtual.

Numero base: Define la posicion en la tabla de punteros a modulos PTR STRUCTS.

Funcion NEW: Crea temporalmente en memoria dinamica el modulo virtual.

Funcion DESTROY: Destruye el ultimo modulo virtual.

Funcion GETPTR: Devuelve un puntero de una estructura.

Funcion de configuracion: Configura el modulo de acuerdo a los parametros.

Funcion SAMPLE: Realiza el calculo de una muestra segun la funcion del modulo.

Cada funcion debe ser global, el archivo APP FUNC.H contiene todos los encabezados

establece una funcion como funcion global.

8.2. Estructura

La estructura se crea con el comando typedef struct{} dentro del archivo SYS BLOCKS.H,

ejemplo:

typedef struct noise {

Variables intermedias

INT16S m;

INT16S b;

Puntero a una entrada ( solo en casos de modulos con entrada(s) )

INT16S * input

Registro de salida ( solo en casos de modulos con salida(s) )

INT16S output;

Puntero a la estructura NOISE anterior

void * last;

Puntero a la estructura NOISE siguiente

void * next;

Page 86: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 8. CREACION DE MODULOS 79

} NOISE;

Esto define un tipo de modulo NOISE con todas sus variables y parametros, con ello, se

simplifica la creacion, ejecucion y destruccion de modulos virtuales NOISE.

8.3. Valor tipo

El valor tipo identifica el tipo de modulo virtual. Cuando se crea un nuevo modulo se

debe especificar un valor tipo, este se asigna dentro del archivo SYS DEF.H:

#define NOISE ID 82

Cuando se desee utilizar un modulo NOISE se debe usar el numero 82.

8.4. Numero base

Este numero identifica la posicion dentro de la tabla PTR STRUCTS de la maquina

virtual de la primera y ultima estructura NOISE. El archivo SYS DEF.H contiene todos los

numeros base de cada modulo:

#define NOISE MODULES BASE 14

Esto significa que en la posicion 14 de la tabla PTR STRUCTS de la maquina virtual

estan los punteros de la primera y ultima estructura NOISE.

Ademas, se debe crear un contador de estructuras NOISE, este contador se guarda como

parametro de la estructura VM de la maquina virtual:

INT8U NOISEmodules cont;

Cada vez que se crea o destruye una estructura NOISE el contador aumenta o disminu-

ye, esta variable permite mantener una estadıstica de cuantos modulos NOISE existen. El

contador debe inicializarse a cero, la funcion Virtual Machine Init Components dentro del

archivo VM FUNC.C inicializa todas las variables de la maquina virtual, debe anadirse la

lınea:

Page 87: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 8. CREACION DE MODULOS 80

Machine->NOISEmodules cont = 0;

8.5. Funcion NEW

Cada tipo de modulo debe tener un constructor de estructuras, esta funcion verifica si

hay memoria suficiente para crear un modulo, en caso contrario el modulo no sera creado.

Cuando se crea un modulo este se enlaza al ultimo modulo existente del mismo tipo. Si este

es el primer modulo este se enlaza directamente a la tabla PTR STRUCTS de la maquina

virtual.

void NOISEnew( VM * Machine )

{

NOISE * nuevo;

NOISE * last = Machine->ptr structs[ NOISE MODULES BASE ][1];

nuevo = (NOISE *) malloc ( sizeof( NOISE ) );

if( nuevo != NULL )

{

nuevo->next = NULL;

Machine->NOISEmodules cont++;

if( Machine->ptr structs[ NOISE MODULES BASE ][0] == NULL )

{

Machine->ptr structs[ NOISE MODULES BASE ][0] = nuevo;

nuevo->last = NULL;

}

else

{

last->next = nuevo;

nuevo->last = last;

}

Machine->ptr structs[ NOISE MODULES BASE ][1] = nuevo;

Page 88: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 8. CREACION DE MODULOS 81

}

}

}

Cada estructura se crea en la seccion de memoria Y[13] del microcontrolador, ciertas

funciones de la biblioteca DSP necesitan de memoria X, para reservar memoria X se debe

utilizar las funciones de memoria dinamica del RTOS, se reservo una seccion de memoria X

para este proposito. Utilize la funcion:

OSMemGet( filter coeff buf, &err);

Para reservar memoria dinamica en la seccion X, esta funcion devuelve un puntero a una

seccion de 20 bytes o segun la definida por XMEM STACK SIZE en el archivo SYS CFG.H.

Utilize:

OSMemPut( filter coeff buf, puntero );

Para liberar una seccion de memoria X.

8.6. Funcion DESTROY

Esta funcion destruye un modulo virtual y devuelve la memoria utilizada.

void NOISEdestroy( VM * Machine )

{

NOISE * last = Machine->ptr structs[ NOISE MODULES BASE ][1];

if( last != NULL )

{

Machine->ptr structs[ NOISE MODULES BASE ][1] = last->last;

free( last );

Machine->NOISEmodules cont--;

if( Machine->NOISEmodules cont == 0 )

Page 89: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 8. CREACION DE MODULOS 82

Machine->ptr structs[ NOISE MODULES BASE ][0] = NULL;

}

}

El modulo destruido es el ultimo de la lista enlazada.

8.7. Funcion GETPTR

Esta funcion devuelve el puntero de la estructura del modulo, se utiliza como parametro

el numero de modulo; este numero de modulo corresponde a la cantidad de saltos que se

deben realizar para accesar al modulo dentro de la lista enlazada. El numero 0 corresponde

a la estructura directamente conectada a PTR STRUCTS.

NOISE * NOISEgetptr( VM * Machine, INT8U element )

{

INT8U i;

NOISE * aux = Machine->ptr structs[ NOISE MODULES BASE ][0];

for( i = 0; i <element; i++ )

{

if( aux->next != NULL ) aux = (NOISE*)aux->next;

else return NULL;

}

return aux;

}

8.8. Funcion de configuracion

Esta funcion permite configurar el modulo de acuerdo a los parametros establecidos por

el usuario.

void NOISE Config( NOISE * NOISE struct, INT8U * max, INT8U * min )

Page 90: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 8. CREACION DE MODULOS 83

{

FP32 fmax, fmin;

fmax = ascii2float( max, ASCII NUMBERS );

fmin = ascii2float( min, ASCII NUMBERS );

NOISE struct->m = float2fixed( (fmax - fmin)/ RAND MAX );

NOISE struct->b = float2fixed( fmin );

}

La funcion recibe, el puntero a la estructura NOISE que se desea configurar, se puede

utilizar externamente la funcion GETPTR para obtener este puntero, ademas se reciben dos

punteros a cadenas de caracteres segun el tamano establecido por ASCII NUMBERS (6 bytes

por defecto), cada cadena contiene el valor maximo y mınimo (normalizado) que debe generar

la funcion NOISE. La funcion de configuracion NOISE calcula los valores m y b, los cuales

sirven para escalar el valor generado por rand()[14].

La funcion de configuracion se ejecuta con un comando asociado, el archivo COMMAND.C

define todos los comandos.

case 0x34:

NOISE Config( NOISEgetptr( Machine, *(ptr command)), (ptr command+1),

(ptr command+7) );

break;

8.9. Funcion SAMPLE

La funcion SAMPLE ejecuta el calculo para obtener una muestra, este calculo depende

de cada modulo:

void NOISE Sample( NOISE * NOISE struct )

{

NOISE struct->output =

Page 91: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 8. CREACION DE MODULOS 84

fixed x fixed( rand(), NOISE struct->m )

+ NOISE struct->b;

}

La funcion NOISE Sample calcula un valor aleatorio que se mantenga dentro del rango

definido por el usuario, los valores m y b fueron previamente establecidos por NOISE Config.

Cada funcion SAMPLE esta asociada con una funcion de ejecucion de modulo, esta fun-

cion es la que utiliza la maquina virtual para ejecutar la estructura de control configurada

por el usuario, ver archivo APP EXE.C:

void App Instr NOISE( VM * Machine )

{

Machine->App PC++;

NOISE Sample( (NOISE *)( *(Machine->App PC)) );

}

Ademas se debe actualizar la tabla de funciones, esta es una tabla de punteros a las

funciones de ejecucion del modulo, esto permite que la seleccion de la funcion a ejecutar por

parte de la maquina virtual se realize ordenadamente. La inicializacion de la tabla se realiza

en la rutina App Instr Init dentro del archivo APP EXE.C.

App Func Ptrs[ NOISE ID ] = App Instr NOISE;

Por ultimo, se deben actualizar las siguientes funciones secundarias:

App Get Block Struct Ptr, esta funcion devuelve el puntero de la estructura segun el

valor tipo y numero de modulo.

case NOISE ID:

return (void*)NOISEgetptr( Machine, number );

break;

Page 92: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

CAPITULO 8. CREACION DE MODULOS 85

App Assign Nets Out Ptrs, esta funcion devuelve un puntero al registro de salida de un

modulo, si el modulo no tiene salidas se debe omitir esta actualizacion.

case NOISE ID:

return &( NOISEgetptr( Machine, s number )->output);

break;

App Assign Nets In Ptrs, esta funcion devuelve un puntero al puntero de entrada de un

modulo, si el modulo no tiene entradas se debe omitir esta actualizacion. Ver la funcion en

archivo NETLIST.C como ejemplo.

App C D Modules, esta funcion crea o destruye modulos segun el archivo de actualizacion

de modulos que se carga con el comando 0x31, ver archivo COMMAND.C.

case NOISE ID:

m cont = *(file+j+1) - Machine->NOISEmodules cont;

if( m cont >0 ) C Ptrs = NOISEnew;

if( m cont <0 ) C Ptrs = NOISEdestroy;

break;

Page 93: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Esquemas

86

Page 94: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 87

Page 95: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 88

Page 96: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 89

Page 97: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 90

Page 98: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 91

Page 99: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 92

Page 100: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 93

Page 101: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 94

Page 102: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 95

Page 103: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

ESQUEMAS 96

Page 104: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

Bibliografıa

[1] Applied Industrial Control Solutions. Digital Filter Design Writing Differen-

ce Equations For Digital Filters [en lınea].[22 de Setiembre, 2007]. URL

http://www.apicsllc.com/apics/Sr 3/Sr 3.htm.

[2] Beis, Uwe Converting Analog into Digital (IIR) Filters [en lınea]. [10 de Enero, 2008].

URL http://www.beis.de/Elektronik/Filter/AnaDigFilt/AnaDigFilt.html

[3] Brey, Barry B. Los Microprocesadores Intel, Arquitectura, programacion e intergaz de

los procesadores 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium Pro

y Pentium II. Quinta Edicion. Prentice Hall of India, 2001.

[4] Cisco Networking Academy. Principios de Networking: Modelos de Networking [en lınea].

Junio, 2005, [5 de Noviembre, 2007]. URL http://cisco.netacad.net.

[5] Dahmke, Mark. Microcomputer Operating Systems. Byte Books, 1982.

[6] Deitel, P.J.; Deitel H.M. JAVA, How to Program. Seventh Edition. Prentice Hall, 2007.

[7] Facultad de Ciencias de la Computacion Grafos, Estructruras de Datos y Algorit-

mos [en lınea]. Febrero, 2008, [20 de Febrero, 2008]. URL http://www.cs.buap.mx/ ti-

tab/files/grafos1.pdf.

[8] Kernighan Brian W; Ritchie Dennis M. El Lenguaje de Programacion C. Segunda Edi-

cion. Prentice Hall, 1991.

[9] Katsuhiko, Ogata. Sistemas de Control en Tiempo Discreto. Segunda Edicion. Prentice

Hall Hispanoamericana, S.A, 1996.

97

Page 105: Unidad Controladora de Procesos - TEC...Cap´ıtulo 1 Introducci´on La unidad controldadora de procesos fue disen˜ada para facilitar la creaci´on de estructuras de control y regulaci´on

BIBLIOGRAFIA 98

[10] Labrosse, Jean J. Embedded Systems Building Blocks. Second Edition. Lawrence, KS:

CMPBooks, 2002.

[11] Labrosse, Jean J. MicroC/OS-II The Real-Time Kernel. Segunda Edicion. Lawrence,

KS: CMPBooks, 2002.

[12] Microchip Technology Inc. MPLAB ICD2 In–Circuit Debugger User’s Guide. Microchip

Technology Inc., 2005.

[13] Microchip Technology Inc. dsPIC33F Family Referen-

ce Manual. [en lınea]. [1 de Agosto, 2007]. URL

http://www.microchip.com/stellent/idcplg?IdcService=SS GET PAGE&nodeId=2573.

[14] Microchip Technology Inc. dsPIC® Language Tools Libraries. [en lınea]. [1 de Agosto,

2007]. URL http://ww1.microchip.com/downloads/en/DeviceDoc/51456b.pdf.

[15] Microchip Technology Inc. MPLAB® C Compiler User’s Guide. [en lınea]. [1 de Agosto,

2007]. URL http://ww1.microchip.com/downloads/en/DeviceDoc/51284G.pdf.

[16] Rorabaugh, C. Britton. Digital Filter Designer’s Handbook. McGraw Hill, 1993.

[17] Proakis, John G; Manolakis Dimitris G. Digital Signal Processing, Principles, Algorithms

and Applications. Fourth Edition. Prentice Hall of India, 2006.

[18] Universidad Central de Chile. Sistemas operativos de tiempo real [en lınea]. [5 de No-

viembre, 2007]. URL http://eiec.ucentral.cl/ftp/material/apuntes/iec51/Sistemas.

[19] Tocci, Ronald J. Sistemas Digitales, Principios y Aplicaciones. Sexta Edicion. Pearson

Educacion, 1996.

[20] Wikimedia Foundation, Inc. Embedded system [en lınea]. Octubre, 2007, [3 de Noviembre,

2007]. URL http://en.wikipedia.org/wiki/Embedded system.

[21] Wikimedia Foundation, Inc. Sistemas operativos de tiempo real

[en lınea]. Noviembre, 2007, [2 de Noviembre, 2007]. URL

http://es.wikipedia.org/wiki/Sistemas operativos de tiempo real.


Recommended