Documentos de Académico
Documentos de Profesional
Documentos de Cultura
opasdfghjklzxcvbnmqwertyuiopasdfgh
jklzxcvbnmqwertyuiopasdfghjklzxcvb
nmqwertyuiopasdfghjklzxcvbnmqwer
Desarrollo De Un Sistema De
Control Difuso En Plataforma
DSP Para Un Motor AC
tyuiopasdfghjklzxcvbnmqwertyuiopas
Eduardo Alejandro Gallo
dfghjklzxcvbnmqwertyuiopasdfghjklzx
UNIVERSIDAD DEL QUINDÍO
INGENIERÍA ELECTRÓNICA
cvbnmqwertyuiopasdfghjklzxcvbnmq
Armenia 2008
wertyuiopasdfghjklzxcvbnmqwertyuio
pasdfghjklzxcvbnmqwertyuiopasdfghj
klzxcvbnmqwertyuiopasdfghjklzxcvbn
mqwertyuiopasdfghjklzxcvbnmqwerty
uiopasdfghjklzxcvbnmqwertyuiopasdf
Desarrollo De Un Sistema De
Control Difuso En Plataforma
DSP Para Un Motor AC
Trabajo en Modalidad
Asistencia a la Investigación
Proyecto 336
I
RESUMEN
Palabras Claves
Algoritmo Genético (AG), Controlador difuso, Modelo Discreto, Procesador digital
de señales (DSP).
II
ABSTRACT
The work describe the development of a fuzzy control system tuned with
genetic algorithms, the control is used for regulating the velocity of system composed
by a power module and a motor of three–phase induction AC, the identification of
model of this system is done using a genetic algorithm. This model is utilized in the
tuning of the fuzzy control, finally this is implemented in a digital signal processor
TMS320R2812, present oneself simulations and proof on the real system.
Key Words
Genetic Algorithm (AG), Fuzzy Controller (FC), Discrete Model, Digital Signal
Processor (DSP).
III
TABLA DE CONTENIDO
AGRADECIMIENTOS ................................................................................................. I
RESUMEN................................................................................................................... II
ABSTRACT ................................................................................................................ III
INTRODUCCION ........................................................................................................ 1
OBJETIVOS ................................................................................................................. 3
2.1. Objetivo General: ...................................................................................................... 3
2.2. Objetivos Específicos:............................................................................................... 3
CAPITULO 3
MARCO DE REFERENCIA ........................................................................................ 5
3.1. Algoritmos Genéticos ............................................................................................... 5
3.1.1. Orígenes ............................................................................................................ 6
3.1.2. Codificación De Problemas .............................................................................. 7
3.1.3. Algoritmo .......................................................................................................... 8
3.1.4. Operadores Genéticos ....................................................................................... 9
3.1.5. Características De Los Algoritmos Genéticos ................................................ 14
3.1.6. Algoritmos Genéticos En Identificación De Sistemas .................................... 15
3.2. Lógica Difusa .......................................................................................................... 20
3.2.1. Conjuntos Difusos ........................................................................................... 21
3.2.2. Variable Lingüística ........................................................................................ 24
3.2.3. Operaciones Difusas ....................................................................................... 24
3.2.4. Reglas Difusas ................................................................................................ 25
3.2.5. Dispositivo de Inferencia ................................................................................ 26
3.2.6. Fuzzificación ................................................................................................... 26
IV
3.2.7. Defuzzificación ............................................................................................... 27
3.3. Sistemas De Control Difusos .................................................................................. 28
3.3.1. Ejemplo De Diseño ......................................................................................... 29
3.3.2. Sintonización difusa de Controladores PID .................................................... 35
3.3.3. Algoritmos Genéticos En optimización De Controladores Difusos................ 37
CAPITULO 4
RESULTADOS ........................................................................................................... 38
4.1. Descripción Del Sistema ......................................................................................... 38
4.1.1. Tarjeta De Desarrollo Microchip dsPic30F y Modulo De Potencia ............... 39
4.1.2. Descripción Tarjeta de desarrollo eZdspTM R2812 ....................................... 40
4.1.3. Funcionamiento............................................................................................... 41
4.2. Identificación Del Sistema Con AG........................................................................ 43
4.2.1. Estructura y codificación del modelo .............................................................. 44
4.2.2. Función De Coste ............................................................................................ 45
4.2.3. Operadores Genéticos ..................................................................................... 45
4.2.4. Implementación del algoritmo genético .......................................................... 46
4.2.5. Prueba Identificación de un Sistema ............................................................... 47
4.2.6. Prueba Con El Sistema ACIM–dsPic30F ....................................................... 51
4.3. Controlador ............................................................................................................. 55
4.3.1. Algoritmo Controlador Difuso ........................................................................ 62
4.4. Sintonización Del Controlador Difuso Mediante Algoritmo Genético ................... 65
4.4.1. Diseño Del Algoritmo Genético ..................................................................... 65
4.4.2. Resultados del AG .......................................................................................... 69
4.5. Implementación Del Controlador En La Tarjeta De Desarrollo eZdspTM R2812 . 72
4.5.1. Resultados de la Técnica De Evolución Diferencial Implementada En El
Proyecto 336 ................................................................................................................... 75
4.6. Diseño Tarjeta Del Bus Can.................................................................................... 76
CONCLUSIONES ...................................................................................................... 80
PROYECCIONES ...................................................................................................... 82
V
BIBLIOGRAFIA ........................................................................................................ 84
ANEXO 1 .................................................................................................................... 88
VI
INDICE DE FIGURAS
VII
Figura 26 – Salida estimada para 10 generaciones ..................................................... 50
Figura 27 – Salida estimada para 1000 generaciones ................................................. 50
Figura 28 – comparación de la señal de la planta real (A) .......................................... 51
Figura 29 – Datos de la respuesta del sistema (ACIM–dsPic30F) ............................. 52
Figura 30 – Evolución del fitness del individuo Elite ................................................. 52
Figura 31– Comparación de la salida estimada y la salida real . ................................ 54
Figura 32 – Comparación de la salida estimada y la salida real ................................. 54
Figura 33 – Diagrama de bloques del sistema de control difuso ................................ 56
Figura 34 – Funciones de pertenencia tipo trapezoidal para la variable EV ............... 58
Figura 35 – funciones de pertenencia tipo trapezoidal para la variable ∆EV ............ 59
Figura 36 – funciones de pertenencia tipo singleton para la salida............................. 60
Figura 36 – Ejemplo de operación de la función pertaps ............................................ 63
Figura 38 – Diagrama de operación de la función fuzzy ............................................ 64
Figura 39 – Evolución del fitness del individuo Elite ................................................. 69
Figura 40– Salida del modelo del sistema (ACIM–dsPic30F) controlada.................. 72
Figura 41– Salida del sistema real controlado para distintos valores ........................ 74
Figura 42– Salida del sistema controlado para distintos valores en la referencia ....... 75
Figura 43 – Referencia (línea punteada), velocidad alcanzada .................................. 76
Figura 45 – interfaz CAN de la tarjeta dsPic30F ........................................................ 77
Figura 46 – diagrama de bloques y circuito de interfaz . ............................................ 78
Figura 47 – Red CAN Típica ...................................................................................... 78
Figura 48 – Diseño del circuito para la trasmisión mediante bus CAN ...................... 79
Figura 44 – Diagrama de funcionamiento de los programas ................................... 104
VIII
1. CAPITULO 1
INTRODUCCION
En este informe se presentan todas las etapas del desarrollo del controlador,
inicialmente se presentan los conceptos referentes a los Algoritmos Genéticos,
identificación de sistemas, lógica difusa, Controladores difusos, sintonización de
controladores difusos con algoritmos genéticos, posteriormente se muestran las etapas
de diseño y los resultados obtenidos en cada etapa empezando por el algoritmo de
identificación, donde se encuentra un modelo matemático discreto para el sistema a
continuación se presenta el diseño del controlador difuso y del algoritmo genético que
1
lo sintoniza, más adelante se presentan los resultados que se obtienen con el
controlador difuso sobre el sistema simulado usando el modelo encontrado
anteriormente. Posteriormente se presenta la implementación de estos algoritmos en
el DSP TMS320R2812, las pruebas y los resultados sobre el sistema real. Se muestra
una comparación de los resultados obtenidos en el proyecto 336 mediante técnicas
evolutivas, con el controlador por lógica difusa implementado en este trabajo.
Finalmente se presenta el diseño de la tarjeta para el bus CAN.
2
2. CAPITULO 2
OBJETIVOS
Elaborar un algoritmo genético que a partir del modelo del sistema variador–
motor, permita generar fuera de línea los parámetros del controlador difuso.
3
Implementar y probar el controlador difuso para el modelo del sistema
variador–motor en el DSP TMSR2812 y realizar las pruebas pertinentes para
verificar su correcto funcionamiento.
4
3. CAPITULO 3
MARCO DE REFERENCIA
6
3.1.2. Codificación De Problemas
7
3.1.3. Algoritmo
Los Algoritmos Genéticos trabajan sobre una población de individuos. Cada uno
de ellos representa una posible solución al problema que se desea resolver.
I. Inicializar la población
II. Mientras no se cumpla el criterio de terminación.
III. Evaluar el fitness.
IV. Ejecutar el proceso de selección
V. Ejecutar el proceso de cruce
VI. Ejecutar el proceso de mutación
VII. Generar una nueva población.
Un diagrama de bloques para un AG se muestra en la Figura 2, Una generación
se obtiene a partir de la anterior por medio de los operadores de reproducción. Existen
2 tipos:
Una vez generados los nuevos individuos se realiza la mutación, Se sale de este
proceso cuando se alcanza alguno de los criterios de parada fijados.
8
Figura 2 – Algoritmo Genético
9
3.1.4.1. Selección
Los algoritmos de selección serán los encargados de escoger que individuos van a
disponer de oportunidades de reproducirse y cuáles no. Puesto que se trata de imitar
lo que ocurre en la naturaleza, se otorgara un mayor número de oportunidades de
reproducción a los individuos más aptos. Por lo tanto la selección de un individuo
estará relacionada con su valor de ajuste. No se debe sin embargo eliminar por
completo las opciones de reproducción de los individuos menos aptos, pues en pocas
generaciones la población se volvería homogénea.
3.1.4.2. Cruce
Una vez seleccionados los individuos, estos son recombinados para producir la
descendencia que se insertara en la siguiente generación. Tal y como se ha indicado
10
anteriormente el cruce es una estrategia de reproducción sexual. Su importancia para
la transición entre generaciones es elevada puesto que las tasas de cruce con las que
se suele trabajar rondan el 90%.
Cruce de 1 punto
Cruce de 2 puntos
11
Figura 3 – Ejemplo cruce de un punto
Los dos tipos de cruce mencionados son validos para cualquier tipo de
representación del genotipo. Si se emplean genotipos compuestos por valores enteros
o reales pueden definirse otro tipo de operadores de cruce:
Media
El gen de la descendencia toma el valor medio de los genes de los padres Figura 4.
Media geométrica
Cada gen de la descendencia toma como valor la raíz cuadrada del producto de
los genes de los padres. Presenta el problema añadido de que signo dar al resultado si
los padres tienen signos diferentes.
Extensión
Se toma la diferencia existente entre los genes situados en las mismas posiciones
de los padres y se suma al valor más alto o se resta del valor más bajo. Solventa el
problema de generar un único descendiente.
12
Figura 4 – Cruce de codificación no binaria con operador media
3.1.4.3. Mutación
13
Incrementar o decrementar a un gen una pequeña cantidad generada
aleatoriamente.
Multiplicar un gen por un valor aleatorio próximo a 1.
3.1.4.4. Evaluación
14
Trabaja con un código correspondiente a los parámetros, no con los
parámetros,
Los parámetros se codifican dependiendo del problema.
Permiten una búsqueda rápida en el espacio de parámetros y evitan mínimos y
máximos locales.
Explotan la información de la función objetivo, no se requieren cálculos de
gradiente.
Se tiene una población de posibles soluciones no una solución. Se pueden
obtener varias soluciones. Cuando encuentra una, se remueve de la población
(realizar la función objetivo para esa solución) y continuar la optimización
Son rápidos y robustos.
Los mecanismos de los algoritmos genéticos simples son sorprendentemente
fáciles, dado que los mecanismos que utiliza son el mecanismo de copia y el
de intercambio de partes de las cadenas de cromosomas.
3.1.6.1. Identificación
15
Como disciplina científica data de los primeros intentos de modelar series de tiempo
usando técnicas Auto–Regresivas. Aunque una parte sustancial del desarrollo de las
técnicas está ligado a la Comunidad de Control, está básicamente construida a partir
de técnicas estadísticas, en particular en los métodos de regresión lineal y no–lineal.
El término Identificación de sistemas fue acuñado por Lofti Zadeh [4] en 1962, como:
16
que los modelos pueden venir dados por diferentes estructuras y con distintas
formulaciones matemáticas. El uso deseado del modelo también determina el grado
de sofisticación requerido. El modelado e identificación de sistemas no lineales es, en
buena medida, un problema dependiente de las aplicaciones y que frecuentemente
tiene sus raíces en la tradición y en las técnicas específicas del área de aplicación.
1 ,…, , ,…., 1 ,
1 ,…,
Ecuación 3.1-1
Donde t representa el tiempo discreto, y (t), u (t) y ε (t) son la salida, la entrada, y
el error de predicción, respectivamente, ny , nu y nε son los órdenes correspondientes,
F[.] es una función no lineal y d es el mínimo retardo de la entrada. El modelo
polinomial NARMAX tiene como expresión:
Ecuación 3.1-2
Este nos permite una descripción buena y sencilla de una amplia clase de
sistemas no lineales, además de ser de fácil implementación en un computador
digital.
17
3.1.6.3. IDENTIFICACION DEL SISTEMA CON AG.
18
Definir adecuadamente los operadores de selección cruce y mutación.
Adicionalmente se deben probar un número suficiente de condiciones sobre el
sistema a fin de que el modelo encontrado logre representar todos los estados
del sistema a identificar.
19
[7] utilizan los algoritmos genéticos para hacer otra identificación off–line de polos y
ceros con algunas pequeñas mejoras. Posteriormente, en 1995, Tan, Li y Murray–
Smith [8] usan los algoritmos genéticos con "simulated anneling" para hacer una
identificación off–line y la linealización de sistemas no lineales, invariantes del
tiempo con un modelo ARMAX.
20
Figura 7 – Ejemplo de funciones de pertenencia para la variable nivel del tanque.
21
valor de pertenencia con pocos cálculos. Se emplea especialmente en sistemas
basados en microprocesador, pues con similar formato pueden codificarse también
funciones de tipos, triangular y singleton, según se distribuyan los puntos a, b, c y d
de la Figura 8 (por ejemplo juntando b y c se forma una función triangular). Esta
función se define matemáticamente como se muestra en la Ecuación 3.2-1
; , , , 1
Ecuación 3.2-1
22
Figura 9 – Función de pertenencia tipo triangular
23
3.2.2. Variable Lingüística
Una variable lingüística es aquella que puede tomar por valor términos del
lenguaje cotidiano, como grande, pequeño, positivo, negativo, etc., que son las
palabras que desempeñan el papel de etiquetas en un conjunto difuso, una variable
lingüística también puede tomar valores numéricos.
24
1
Ecuación 3.2-2
,
Ecuación 3.2-3
,
Ecuación 3.2-4
Mediante las reglas se expresa el conocimiento que se tiene sobre la relación que
hay entre antecedentes y consecuentes, se usan varias reglas agrupadas en un
conjunto denominado base de reglas para expresar el conocimiento de la forma más
completa posible. También es común expresar la base de reglas como una tabla de las
reglas que la conforman o como una memoria asociativa borrosa o FAM (Fuzzy
Associative Memory). [10]. Las FAM son matrices que representan la consecuencia
de cada regla definida para cada combinación de dos entradas. Las FAM permiten
realizar una representación gráfica clara de las relaciones entre dos variables
lingüísticas de entrada y la variable lingüística de salida, pero requiere que se indique
explícitamente todas las reglas que se pueden formar con estas dos variables de
entrada.
25
Formalmente, una base de reglas difusas es una colección de reglas R con el formato:
: …
, ,
Ecuación 3.2-5
Ecuación 3.2-6
3.2.6. Fuzzificación
26
define un conjunto A que lo soporta, con función de pertenencia μA(x) de modo que
μA(x) = 1, μA(x’) = 0 para todos los otros x’ ∈ U en los que x’ ≠ x.
3.2.7. Defuzzificación
27
∑
∑
Ecuación 3.2-7
Donde son los centros de las funciones de pertenencia de la salida, son los
valores agregación que resulta de cálculo de los consecuentes usando la implicación
difusa por cualquiera de los métodos [20]. Obteniendo así la implicación de cada
regla activada por las premisas de una entrada en particular.
28
Normalmente el objetivo del control es mantener r = y, por ejemplo en un caso
de calefacción domestica, el controlador recibe la referencia de temperatura que fija
el usuario, mide la temperatura de la habitación por medio de un sensor. En función
de estas dos entradas el sistema de control conecta o desconecta el sistema de
calentamiento para mantener la temperatura deseada.
Se explicaran cada uno de los componentes del controlador difuso para un problema
simple de balanceo uno péndulo invertido en un carro, como se muestra en la Figura
14. En este, y denota el ángulo que el péndulo hace con la vertical (en radianes), l es
el la mitad de la longitud del péndulo (en los metros), y u es la entrada de fuerza que
mueve el carro (en Newtons). Usaremos r para denotar la posición angular deseada
del péndulo, el objetivo del control es mantener el péndulo en posición vertical así
que el valor de r siempre será 0. Este ejemplo se encuentra analizado con más detalle
en [13].
Como primer paso escogemos las entradas y salidas del FLC, Considerando a un
Experto en el lazo de control como el responsable de ejercer la acción de control, las
entradas son las variables en las cuales el experto va a fundar sus decisiones.
hay más opciones de elección como por ejemplo La integral del error, pero el elegir
29
estas nos da un buen sentido intuitivo. Después, debemos identificar la variable a
controlar. Para el péndulo invertido, únicamente podemos controlar la fuerza que
mueve la carreta, así es que la elección es simple, para diseños más complejos la
elección de estos parámetros puede no ser tan simple.
Ahora debemos definir unas descripciones lingüísticas para cada una de estas
variables, podemos decir por ejemplo “el error es cero”, “el error es positivo
pequeño”, o “es negativo”, se deben definir suficientes descripciones para todo el
rango de variación de las variables.
Se definen las siguientes etiquetas par el error, el cambio del error y la fuerza.
Se puede usar cualquier etiqueta que defina adecuadamente los estados de las
variables.
La declaración “el error es PG” y “el cambio del error es PP” puede representar la
situación donde el péndulo esta la izquierda de la vertical y dado que el cambio de
error es negativo, el péndulo se aleja de la posición de equilibrio (en este caso el
péndulo se mueve contrario al sentido de las manecillas del reloj).
30
Ahora usamos esta cuantificación lingüística para definir una base de reglas que
capture el conocimiento del experto en cuanto al control de la planta, recordemos que
el formato de estas reglas es.
Recordemos que esta base de reglas puede ser fácilmente codificada mediante
una FAM como la de la Tabla 3.3–1, en esta tabla se asocia a cada combinación de
las entradas una consecuencia.
Tabla 3.3–1
FAM para el control del péndulo invertido. A cada combinación de las variables de
entrada se asocia una consecuencia
Error e
Fuerza “u”
NG NP Z PP PG
NG PG NP NP NP Z
“Cambio en el error”
NP NP Z PP Z NP
Z NP PP Z NP PP
PP NP Z NP Z PP
PG Z PP PP PP PG
31
Funciones de pertenencia.
Se debe tener en cuenta que las funciones de pertenencia cubran todo el rango de
variación de las variables. Se usaran particiones de cinco elementos, con funciones de
tipo triangular centradas en torno a un punto, como se puede apreciar en la Figura 15.
32
Operación del FLC
Para entender como operaria el FLC diseñado, es decir, dadas unas determinadas
entradas como se obtiene la salida realizaremos algunos cálculos para un caso
simplificado, dadas las entradas:
/4 y / /16.
/4 1
Esto quiere decir que el valor del error pertenece en un 100 % al PP, a todos los
demás 0%.
0.5
16
0.5
16
33
El conjunto de salida bien dado por
µB y min µA x ,
Esto supone el truncado de los conjuntos difusos de salida con los valores
obtenidos de las premisas Figura 17.
∑ min ,…,
∑ min ,…,
Ecuación 3.3-1
0.5 10 0.5 0
5
0.5 0.5
34
Esto indica que la regla R1, cuya salida es NP (de centro –10), se cumple en una
cantidad de 0.5, mientras que la regla R2, cuya salida es Z (de centro 0), se cumple
0.5. La salida F es una media ponderada de los centros de los conjuntos de salida
correspondientes a cada regla, es decir, la F que actúa sobre el sistema no es –10 ni 0
sino que es el promedio ponderado –5.
Más del 90 % de los controladores en operación hoy son de tipo PID. Esto debido
a que este tipo de controlador es fácil de entender, fácil de explicar a otros y fácil de
implementar. Además, su costo es reducido y a menudo vienen incorporados en
controladores lógicos programables (PLCs) los que se usan para el control en muchos
procesos industriales. Desafortunadamente, muchos de los controladores PID que
están en operación tienen una necesidad continua de monitoreo y ajuste ya que
fácilmente pueden desintonizarse (debido a variaciones de parámetro de la planta o
los cambios de condición en operación), hay una necesidad significativa para
desarrollar métodos para la sintonización automática de controladores PID.
35
Figura 18 – Auto – sintonizador PID fuzzy
36
3.3.3. Algoritmos Genéticos En optimización De
Controladores Difusos
1. Optimización de coeficientes
Ganancias de entrada salida
Partición de las variables de entrada
Partición de las variables de salida
2. Optimización de las reglas
3. Optimización de la estructura de la base de reglas
4. Optimización completa.
Codificación
Dependiendo de la alternativa de optimización seleccionada se debe escoger una
codificación para los parámetros a optimizar, algunas sugerencias para la codificación
de estos parámetros se encuentran en [10],[16].
Operadores genéticos
Función de coste
Como función de coste puede elegirse algún cálculo relacionado con la característica
que se desea mejorar del controlador, usualmente se utiliza la suma cuadrática del
error entre la referencia y la salida, otras alternativas se pueden observar en [17], [18].
37
4. CAPITULO 4
RESULTADOS
39
El segundo uso del tablero es para los usuarios que ya tienen su propia etapa de
poder sino están interesados en evaluar al dsPIC MCU en su aplicación. En este caso,
el usuario fácilmente puede conectarlo a su sistema usando los conectores provistos
en el tablero.
El eZdspTM R2812 es una tarjeta autónoma que permite a los usuarios examinar
el procesador de señales digitales del TMS320R2812 (DSP). Este módulo es una
plataforma excelente para desarrollar y correr software para el procesador del
TMS320R2812. [24]; las características más importantes del eZdspTM R2812 son:
40
20K words on–chip SARAM
64K words off–chip memoria SRAM
256K bits memoria EEPROM serial
Reloj 30 MHz.
Conectores de expansión (memoria, analógico, I/O)
TI R28xx Code Composer Studio tools driver.
4.1.3. Funcionamiento.
41
Por medio de las entradas analógicas del dspic30F se cambia el valor de voltaje y
frecuencia del motor de esta forma se controla la velocidad, cabe mencionar que esta
estrategia no tiene que ver con el control externo que se desarrollara en la Tarjeta de
desarrollo eZdspTM R2812, así que el sistema ” (ACIM) y el modulo de potencia”
serán vistos como una caja negra cuya entrada será el voltaje analógico y una salida que
es el voltaje de salida del encoder que representa la velocidad del motor. Figura 21.
Este modulo está conformado por la tarjeta de desarrollo eZdspTM R2812, una
etapa de interfaz y adquisición conformada por un circuito de conversión de 3.3 v –
5v, un circuito de comunicación serial y un circuito de adquisición de datos. Un
diagrama se presenta en la Figura 22.
42
La velocidad de transmisión entre el DSP y el microcontrolador de adquisición es
de hasta 38400 baudios, eventualmente este modulo también podría servir para
comunicarse con algún otro instrumento o tarjeta que tenga puerto serial.
43
La estimación de los parámetros de un modelo de identificación usando AGs
consta de un conjunto de etapas generales, siendo la elección y construcción del
modelo a identificar la primera de dichas etapas.
1 1 1 2
1 1 1 2
2 1 2 2 1
1 2 2
Ecuación 4.2-1
44
4.2.2. Función De Coste
Ecuación 4.2-2
| |
Ecuación 4.2-3
Ecuación 4.2-4
45
pasa a la siguiente generación, el resto de los hijos serán resultado del cruce y la
mutación.
La mutación se realiza con una probabilidad del 1%, es un algoritmo con cierto
grado de adaptabilidad; inicialmente se realiza una mutación normal es decir un
reemplazo aleatorio del 50% de los coeficientes del cromosoma; en cuanto el fitness
baje de cierto umbral, el algoritmo de mutación cambia a sumar un numero aleatorio
entre –0.1 y 0.1 al 50% de los coeficientes del cromosoma, esto con el fin de
optimizar la búsqueda local.
El algoritmo es el siguiente.
I. Inicializar la población.
i. Se inicializa con valores aleatorios entre –2 y 2.
II. Proceso de los datos para cada individuo de la población
i. Se calcula la salida del modelo NARMAX usando la misma referencia
que se uso en la planta real y se calcula el error.
III. Se calcula la función de costo (fitness) para cada individuo de la población
IV. Se selecciona el individuo elite (menor fitness)
V. Se realiza cruce para generar la nueva población.
VI. Se realiza mutación con una probabilidad del 5% sobre los hijos del cruce
i. Cuando el fitness es menor que cierto valor la mutación cambia.
46
VII. Se genera la nueva población el elite es el primer individuo después se ubican
los individuos resultado del cruce y la mutación.
VIII. Con esta nueva población se regresa al procesado de los datos.
IX. Se repite el proceso por un determinado número de generaciones hasta que el
fitness tenga un valor adecuado.
Para realizar los cálculos se requiere de información sobre la respuesta de la
planta a alguna referencia, para obtener esta información se tomaron datos para 800
muestras, con cambios en el valor de referencia cada 100 muestras, con un tiempo de
muestreo de 10 ms.
Para la identificación del sistema se usaron únicamente los coeficientes a1, b1, a2, b2
del modelo, el AG tomo 19.775 generaciones en encontrar un modelo aproximado del
sistema y el fitness obtenido fue de 1 x 10–10, que corresponde al valor del criterio de
parada del algoritmo. En la Figura 24 se puede observar la evolución del valor de la
función de coste del individuo elite, en el transcurso de las generaciones. Como
resultado del cambio del algoritmo de mutación cuando fitness es menor a 1 x 10–3 se
observa que en la grafica un cambio en la forma del descenso, esto debido a que la
47
evolución se centra en torno al individuo elite produciendo cambios pequeños como
se menciono anteriormente.
0.7
0.6
0.5
Salida
0.4
0.3
0.2
0.1
20 40 60 80 100
Numero de Muestras
48
x 10 ‐3
5
4.5
4
3.5
3
Fitness
2.5
Cambio en la
2
mutación
1.5
1
0.5
0
2000 4000 6000 8000 1000012000140001600018000
Generaciones
En la
Figura 25 y
Figura 26 se puede apreciar la evolución del AG, en estas se puede observar la salida
estimada para un determinado número de generaciones, vemos que la salida estimada
se aproxima cada vez más a la salida real cuanto mayor es el número de generaciones.
49
0.3
0.25
0.2
0.15
0.1 Salida estimada
0.05 Referencia
Salida
0
5 10 5 20 25 30
muestras
0.25
0.2
0.15
0.1 Salida estimada
Referencia
0.05 Salida
5 10 15 20
muestras
Figura 26 – Salida estimada para 1000 generaciones
50
1 A 1 B
0.8 0.8
Salida
Salida
0.6 0.6
0.4 0.4
0.2 0.2
0 0
0 50 100 150 0 50 100 150
Muestras Muestras
51
1
0.8
0.6
0.4
referencia
0.2 salida
0
0 1 2 3 4
18
17
16
15
14
13
12
11
10
9
0 2 4 6 8
4
x 10
52
Los Coeficientes que el AG encontró para el sistema (ACIM–dsPic30F) fueron:
0.0145 0.1011
0.2099 0.0762
0.3892 0.0919
0.0227 0.0121
0.3737 0.0253
0.1489 0.1209
0.0572
53
1
Entrada
0.6
0.4
0.2
0
0 1 2 3
Figura 30– Comparación de la salida estimada y la salida real del modelo del
sistema (ACIM–dsPic30F) para distintas referencias.
0.7 0.7
Entrada Salida Estimada
0.6 Salida Real 0.6 Entrada
0.5 0.5
0.4 0.4
Salida
Salida
0.3 0.3
0.2 0.2
0.1 0.1
0 0
0 1 2 3 0 1 2 3
Tiempo (s) Tiempo (s)
54
4.3. Controlador
1 2 1
Ecuación 4.3-1
55
constante es la salida de uno de los sistemas difusos. Y varían en un universo de
discurso enmarcado entre [–2, 2].
56
Tabla 4.3–1
Codificación de las funciones de pertenencia trapezoidal para EV
Etiqueta Lingüística a b c d
Tabla 4.3–2
Codificación de las funciones de pertenencia trapezoidal para ∆EV
Etiqueta Lingüística a b c d
57
1
0.8
GN MN Z M G
0.6
0.4
0.2
0
‐1 -0.5 0 0.5 1
Figura 33 – Funciones de pertenencia tipo trapezoidal para la variable EV
58
GN MN Z M G
1
0.8
0.6
0.4
0.2
0
‐1 ‐0.5 0 0.5 1
Base De Reglas
Todo sistema difuso se fundamenta en reglas de inferencia del tipo:
Si A es x y B es y entonces C es z
Donde A, B, C son variables difusas y < x, y, z > son etiquetas como grande,
pequeño, alto, bajo, etc…
59
1
0.8
0.6
0.4
0.2
0
‐2 ‐1 0 1 2
Figura 35 – funciones de pertenencia tipo singleton para la salida del sistema difuso
Tabla 4.3–3
FAM para el sistema de control difuso
“u” GN MN Z M G
GN ng ng z m g
“Cambio en el error”
MN g m nm m z
∆EV
Z ng ng z m g
M g z N g m
G g z m m g
60
base de reglas, o (las etiquetas [ng, nm, z, m, g] se usan a modo de ejemplo) para
calcular el grado de aplicación de las reglas se usa el operador ‘y’, por lo tanto la
matriz de reglas se interpreta así:
μr = μp1 · μp2
Ecuación 4.3-2
Defuzzificación
La defuzzificación es necesaria para trasladar la salida del controlador difuso a
una representación numérica, se usa el método de media de centros, usando funciones
de pertenencia singleton para la salida, que se puede representar matemáticamente
mediante la Ecuación 4.3-3.
∑
∑
Ecuación 4.3-3
Donde son los centros de las funciones de pertenencia de la salida, como son
de tipo singleton estos equivalen a los valores de la FAM, es la matriz de valores
de agregación que resulta de multiplicar los niveles de pertenencia del EV por los del
61
∆EV. Obteniendo la implicación de cada regla activada por las premisas de una
entrada en particular.
Para calcular los niveles de pertenencia, se usan dos funciones, la primera calcula
el nivel de pertenencia de un valor a una función trapezoidal usando las
ecuaciones relacionadas con esta. En MATLAB la función se llama pertrap y
recibe como parámetros un valor y la función de pertenencia codificada en un
vector de 4 elementos como se menciono anteriormente.
62
función de las que se paso como parámetro. En MATLAB la función se llama
pertraps y recibe como parámetros un valor y un conjunto de funciones de
pertenecía, codificadas en una matriz en este caso de 4 x 5, la función retorna en
un vector de 5 componentes los niveles de pertenencia del valor a cada una de las
funciones de pertenencia. En la Figura 36 se observa un ejemplo de la operación
de esta función usando solo tres componentes, el valor de la variable E es –0.15,
este valor pertenece a dos funciones de las funciones trapezoidales, como se
muestra en la figura a la primera función pertenece en una proporción de 0.65 y a
la segunda función en una proporción de 0.7, el valor no pertenece a la tercera
función por lo que el valor correspondiente es 0, estos valores forman un vector
[0.65 0.7 0].
9. Calcula K1, K2 y K3 usando los niveles de pertenencia del EV, ∆EV y las FAM
correspondientes a cada constante.
Para realizar este cálculo se implemento la Ecuación 4.3-3, se hace uso de los
operadores para matrices que ofrece MATLAB, de esta forma la codificación
del controlador difuso es relativamente sencilla y usa pocas instrucciones.
63
En la Figura 37 se muestra un diagrama de bloques de esta función, se
calcula la matriz de aplicación (A) μ multiplicando los vectores de
pertenencia de EV (PEV) y ∆EV (PDEV), se multiplica la matriz de
aplicación por la matriz de reglas (B) y se realiza la sumatoria de sus valores
(D), se realizan la sumatoria de los valores de la matriz de aplicación (C) y se
dividen estos dos resultados (E), la función en MATLAB se llama fuzzy y
recibe como parámetros las funciones de pertenencia de EV y ∆EV y la FAM
correspondiente y como salida entrega alguna de las constantes (K1, K2 y K3),
este función se ejecuta para cada una de las constantes.
64
4.4. Sintonización Del Controlador Difuso Mediante
Algoritmo Genético
65
Tabla 4.4–1
FAM ejemplo de codificación para el AG
Control “u” GN MN Z M G
· Δ ·
Ecuación 4.4-1
66
El AG establece que los mejores individuos tienen mayor probabilidad de
sobrevivir y heredar sus características genéticas a las próximas generaciones, así
los individuos que posean el menor valor de fitness serán los individuos elite.
Operadores Genéticos
67
Se plantea una señal de referencia que posee cambios suficientes para el
entrenamiento, la señal posee 2000 muestras y tiene cambios en la referencia cada
125 muestras.
El algoritmo es el siguiente.
1. Inicializar la población.
Se inicializa cada matriz (FAMK1, FAMK2, FAMK3) de la población usando la
Ecuación 4.4-2 para generar cada elemento de la matriz, esta ecuación genera
números aleatorios en el intervalo [–2, 2] en pasos de 0.125; en esta ecuación
“rand” genera números aleatorios con distribución uniforme en el intervalo [0,1],
y la función “round” aproxima el numero al entero más cercano.
0.5 32
8
Ecuación 4.4-2
68
8. Con esta nueva población se regresa al proceso de los datos.
Todo esto se realiza por un determinado número de generaciones hasta que el fitness
tenga un valor adecuado, el código correspondiente al algoritmo genético y a las
funciones explicadas se encuentra en el anexo A.
Entrenamiento
Se obtuvieron resultados satisfactorios en el control con 300 generaciones. En la
Figura 38 se puede observar la evolución del fitness del sistema con el transcurrir de
las generaciones. Las FAM encontrada por el algoritmo genético se presentan en la
Tabla 4.4–2 para K1, Tabla 4.4–3 para K2,
Tabla 4.4–4 para K3.
42
40
38
Fitness
36
34
32
69
Tabla 4.4–2
FAM K1
Error de Velocidad EV
K1
GN MN Z M G
Tabla 4.4–3
FAM K2
Error de Velocidad EV
K2
GN MN Z M G
70
Tabla 4.4–4
FAM K3
Error de Velocidad EV
K3
GN MN Z M G
71
0.8
0.6
0.4
0.2
0
Salida
Referencia
‐0.2
0 100 200 300 400 500
72
igual que el de la función fuzzy implementada en MATLAB, un diagrama de bloques
de la operación de esta función es mostrado en la Figura 37.
73
El algoritmo implementado es el mismo descrito en 4.3.1 teniendo en cuenta que al
usar el sistema real en el paso 5, los datos de la salida no son los del sistema simulado
sino los del sistema real. En el Anexo A se encuentran los códigos de las funciones y
del algoritmo de control.
En la Figura 40 y Figura 41, se muestran los resultados del control sobre el sistema
(ACIM – dsPic30F) usando el PID difuso con un tiempo de muestreo de 10 ms, la
operación del sistema controlado es satisfactoria, este sigue la referencia sin error y el
tiempo de subida es rápido al igual que en las simulaciones.
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2 Salida
Referencia
0.1
0 100 200 300 400
Figura 40– Salida del sistema real controlado para distintos valores en la referencia.
74
1
Salida
0.9 Referencia
0.8
0.7
0.6
0.5
0.4
0.3
0.2
100 200 300 400 500
Figura 41– Salida del sistema controlado para distintos valores en la referencia
75
Figura 42 – Referencia (línea punteada), velocidad alcanzada (línea continua),
pruebas con la técnica de evolución diferencial
76
Ya que las tarjetas de desarrollo usadas en el proyecto contaban con la interfaz para el
bus can se diseñaron e implementaron los circuitos necesarios para la interfaz CAN,
En la tarjeta de desarrollo Microchip dsPIC30F la interfaz CAN se encuentra
fácilmente accesible. En forma de conector RS232, el circuito que lleva
implementado se muestra en la Figura 43.
En la tarjeta eZdspTM R2812, las líneas CANH y CANL para el bus CAN no está
directamente disponibles, se debe diseñar una tarjeta de interfaz para el bus can como
se muestra en la Figura 43, este se diseña basándose en el circuito integrado
SN65HVD230 el cual es un transceptor CAN diseñado por Texas Instrument [29].
77
Figura 44 – diagrama de bloques y circuito de interfaz para la tarjeta eZdspTM
R2812.
78
Figu
ura 46 – Diseño del circuuito para la trasmisión mediante
m bus CAN
E la Figu
En ura 46 se muestra
m el diseño del cirrcuito impleementado, ell cual es muy
m
s
sencillo, la salida
s D y R (pines 1 y 4) del DSP
P se conectann a las entraadas D y R del
d
c
circuito, la alimentación
a n del circuitto es de 3.3 v (pines 2 y 3), y las salida CAN
NH
(
(pin7) y CANL(pin
C 8 se dejaan disponibbles para conexión
8), c directa al buus.
A
Adicionalme
ente se ubicca la resistenncia de 120 Ω (R1) quee debe ir en paralelo a las
l
l
líneas del bu
us CAN com
mo muestra la Figura 45, con un juumper para su conexiónn o
d
desconexión
n.
79
5. CONCLUSIONES
Se elaboro un Algoritmo genético que haciendo uso del modelo del sistema
ACIM–dsPic30F y la estructura de un controlador difuso, encontró y optimizo las
matrices de reglas (FAM) requeridas por el controlador para tener un buen
desempeño.
80
Se implemento el controlador difuso en la tarjeta de desarrollo eZdspTM R2812 y
se probo en el sistema real, se obtuvieron muy buenos resultados en el control de
velocidad del sistema.
Se diseño la tarjeta de interfaz para CAN, requerida para la conexión del tarjeta de
desarrollo eZdspTM R2812 al bus CAN usado para la transmisión de datos en el
sistema.
81
6. PROYECCIONES
El uso de la lógica difusa en control proporciona varias ventajas con respecto a las
técnicas tradicionales, y es común escuchar de dispositivos electrónicos que
funcionan con lógica difusa, un trabajo futuro interesante es la implementación de
controladores difusos adaptativos, que son aun mejores que los controladores difusos
normales, el diseño e implementación de este tipo de controladores también es más
complejo.
Las técnicas de control inteligente como son los algoritmos genéticos y la lógica
difusa se pueden utilizar casi en cualquier tipo de sistema, en este proyecto se uso el
sistema ACIM– dsPic30F, de esta forma el control se puede hacer únicamente sobre
la velocidad del sistema, como desarrollo futuro se puede plantear un control del
torque y de la posición del ACIM, ya sea usando técnicas de control inteligente u
82
otras técnicas como el control vectorial, el desarrollo de este tipo de control se facilita
de cierta forma ya que la tarjeta de desarrollo dsPic30F proporciona acceso a las
medidas de corrientes y voltajes del ACIM. Con lo que se facilita la instrumentación
del sistema de control.
83
7. BIBLIOGRAFIA
[2] Holland, J. H. 1975. Adaptation in Natural and Artificial Systems. Press, Ann:
University of Michigan, Arbor, 1975.
[3] Blickle, T. and Thiele, L.. A comparison of selection schemes used in genetic
algorithms. Technical Report 11, Computer Engineering and Communication
Network Lab (TIK), Gloriastrasse 35, 8092 Zurich, Switzerland, 1995.
[4] L. A. Zadeh. From circuit theory to system theory. In Proc. IRE 50, pages
856–865, 1962.
[6] K. Kristinson and G. Dumont. System identification and control using genetic
algorithms. IEEE Transactions on Systems, Man, and Cybernetics,
22(5):1033–1046, 1992.
84
[7] S. J. Flockton and M. J. White. Pole–zero system identification using genetic
algorithms. In Proceedings 5th International Conference on Genetic
Algorithms, pages 531–535. University of Illinois at Urbana Champaign,
USA, 17–21 July 1993.
[9] Wang, Li–Xing. Adaptative Fuzzy Systems And Control. Prentice Hall, 1994.
[10] Martin del Brio, B. y Molina, S. Redes neuronales y sitemas difusos. Alfa
omega, 2002.
[11] Sugeno, J., Nishida, M. Fuzzy Control of model car. Fuzzy set and systems.
vol26, n° 2, pp. 151–164, 1985.
[14] Zhao, Z. Y., Tomizuka, M., Isaka, S. Fuzzy gain scheduling of PID
controllers. Procedings of the IEEE,23,5,1392–8, 1993
[15] Bruijin, C. devan der Wal, A.J. Fine – Tunning of a PID controller by fuzzy
logic. Fuzzy logic 93, A211–5, Sanfransisco,1993
85
[16] Kinzel, J. and Clawon, F. Modification of Genetic Algorithms For Designing
and Optimizing Fuzzy Controllers, Department of computer science technical
university of braunschweig D38106 braunschweig, Germany, 1994.
[17] Michael A. LEE and Hideyuki TAKAGI, Integrating Design Stages of Fuzzy
Systems using Genetic Algorithms. Proc. of the 2nd Int. Conf. on Fuzzy
Systems (FUZZ–IEEE’93), Vol.1, pp. 612–617, 1993.
[19] N.S.Gehlot and P.J.Alsina, “A Discrete Model Of Induction Motors For Real
Time Control Applications” IEEE Trans. Ind. Electron, Vol. 40, pp. 317–
325, June 1993.
86
[24] eZdspTM R2812 USB_ tech_ref. available in “www.spectrumdigital.com”
[27] Haupt, R. L. and Haupt, S. E.” Practical Genetic Algorithms” , John Wiley
& Sons, INC., Publication, 1998
[28] C281x C/C++ Header Files and Peripheral Examples Quick Start, Version
1.11, September 26, 2007.
[29] Datasheet 3.3–V Can Transceivers, SN65HVD232, revised May 2005. Texas
Instrument.
87
ANEXO 1
Programas en MATLAB
clear all; close all;
% Algoritmo Genético
c 13; % cantidad coeficientes
N 40; % Tamaño De La Población
g 80000; % numero de generaciones
pe 0.5; % probabilidad de escogencia del elite para cruce y mutación
pm 0.01; % probabilidad de nutación
m 1;
y1 textread 'data.dat' ; % se lee el archivo con los datos de la salida
y1 y1/130;
NN 800; % Longitud del vector de datos
Y seros NN,1 ;
z 0.9 0.5 0.3 0.7 0.2 0.8 0.3 0.4 ;
u z 1 *ones 1,100 , z 2 *ones 1,100 , z 3 *ones 1,100 ,...
z 4 *ones 1,100 , z 5 *ones 1,100 , z 6 *ones 1,100 ,...
z 7 *ones 1,100 , z 8 *ones 1,100 ; %se genera la señal de entrada
%se genera aleatoriamente la población
for n 1:N
for i 1:c
coeficientesp n,i rand–0.5 *2;
end
end
88
while m g, % condición de parada se detiene al completar el numero de
% generaciones
%Evalúa la población actual
for n 1:N
coef coeficientesp n,: ;
for k 4:NN,
y k coef 1 coef 2 *u k–1 coef 3 *u k–2 coef 4 *y k–1 ...
coef 5 *y k–2 coef 6 *y k–1 *u k–1 coef 7 *y k–1 *u k–2 ...
coef 8 *y k–2 *u k–1 coef 9 *y k–2 *u k–2 ...
coef 10 *u k–1 *u k–1 *coef 11 *u k–2 *u k–2 ...
coef 12 *y k–1 *y k–1 coef 13 *y k–2 *y k–2 ;
end
%calcula el error
err y – y1;
% Calcula el fitness.
fitness n sum abs err ;
end
%Selecciona el elite.
elite,ind min fitness ;
%genera la nueva población.
coeficientesp 1,: coeficientesp ind,: ;
E m elite;
m m 1 %incrementa el contador de generaciones.
p 1;
% Realiza cruce promedio de dos individuos sobre toda la población.
for i 1:N
p p 1;
i1 ceil rand*N ;
i2 ceil rand*N ; %escoge dos individuos aleatoriamente para cruce
if rand pe
i1 1; %eventualmente se escoge el elite para cruce
end
while i1 i2
89
i2 ceil rand*N ; %evita que se seleccione el mismo individuo
end
ind1 coeficientesp i1,: ;
ind2 coeficientesp i2,: ;
coeficientesp p,: 0.5* ind1 ind2 ;
end
p 1;
% realiza mutación
for i 1:N
p p 1;
coeficiente coeficientesp p,: ;
if rand pm
if rand pe
q p; %escoge el elite para cruce con una probabilidad de 50%
p 1;
coeficiente coeficientesp p,: ;
p q;
end
for i1 1:c
if rand 0.5
coeficiente i1 rand–0.5 *2; % realiza la mutación.
end
end
end
coeficientesp p,: coeficiente;
end
end
coef coeficientesp 1,: ; % almacena el mejor individuo en coef
90
% retorna en NP el nivel de pertenencia del valor a FP
if valor FP 4 || valor FP 1
NP 0;
elseif valor FP 2 & valor FP 3
NP 1;
elseif valor FP 2 & valor FP 1
NP valor – FP 1 / FP 2 – FP 1 ;
elseif valor FP 4 & valor FP 3
NP valor – FP 4 / FP 3 – FP 4 ;
end
–––––––––––––––––––––––pertraps–––––––––––––––––––––––
function Npert pertraps valor,FPS
% retorna en Npert las pertenecías de valor a las funciones almacenadas en la
% matriz FPS
N size FPS ;
for i 1:N 1 ,
Npert i pertrap valor,FPS i,: ;
end
–––––––––––––––––––––––fuzzy–––––––––––––––––––––––
% toma como parámetros la pertenencia del error y el cambio de error y la FAM
% y entrega el nivel de pertenencia de la salida.
function u fuzzy perterror, pertdeltaerror, FAM
U perterror'*pertdeltaerror;
u sum sum U*FAM /sum sum U ;
–––––––––––––––––––––––controlador difuso–––––––––––––––––––––––
Se presenta la estructura completa del controlador difuso, al momento de
realizar la sintonización, no se inicializan las FAM. el archivo se llama “sistema”
91
NN 2001;
u zeros NN,1 ;
y zeros NN,1 ;
coef;
% referencia
ref 0.3*ones 1,126 , 0.6*ones 1,125 , 0.4*ones 1,125 ,...
0.7*ones 1,125 , 0.2*ones 1,125 , 0.8*ones 1,125 ,...
0.5*ones 1,125 , 0.9*ones 1,125 , 0.65*ones 1,125 ,...
0.45*ones 1,125 ,0.75*ones 1,125 ,0.55*ones 1,125 ,...
0.15*ones 1,125 , 0.35*ones 1,125 ,0.65*ones 1,125 ,0.25*ones 1,125 ;
% definición de FAM
FAMK1 2.000, 1.375, 0.750, 1.125, 1.125
0.500, 0.500, –0.375, –0.250, –0.625
0.875, 0.125, 1.000, 1.875, 0.625
1.750, 0.375, 1.000, 0.750, –1.250
–0.125, 0.875, 1.750, 1.375, 0.625 ;
FAMK2 –1.250, 0.125, –0.750, 1.125, 0.625
0.125, 1.375, 0.250, –1.000, –1.250
1.750, –1.750, –0.750, 2.000, 1.750
0.250, –0.500, –0.250, –0.625, 0.500
1.375, 0.500, –0.875, –2.000, 0.375 ;
FAMK3 –1.375, –1.625, –0.875, 1.375, 1.125
–1.125, 0.000, –0.875, –0.500, 1.875
–1.500, –1.500, –1.375, –0.125, –1.375
0.750, –0.125, 0.500, –1.750, 0.000
–0.500, –1.375, 1.500, –0.875, 1.750 ;
% definición de funciones de pertenencia
FPe –2.00 –1.00 –0.75 –0.50;
–1.00 –0.50 –0.30 0.00;
–0.05 –0.01 0.01 0.05;
0.00 0.30 0.50 1.00;
0.50 0.75 1.00 2.00 ;
92
FPde –1.00 –0.40 –0.30 –0.20;
–0.30 –0.20 –0.10 0.00;
–0.05 0.00 0.00 0.05;
0.00 0.10 0.20 0.30;
0.20 0.30 0.40 1.00 ;
for k 3:NN,
% cálculo de la salida del sistema
y k coef 1 coef 2 *u k–1 coef 3 *u k–2 coef 4 *y k–1 ...
coef 5 *y k–2 coef 6 *y k–1 *u k–1 ...
coef 7 *y k–1 *u k–2 coef 8 *y k–2 *u k–1 ...
coef 9 *y k–2 *u k–2 coef 10 *u k–1 *u k–1 ...
coef 11 *u k–2 *u k–2 coef 12 *y k–1 *y k–1 ...
coef 13 *y k–2 *y k–2 ;
if y k 1 , y k 1;end
if y k –1 , y k –1;end % validación útil durante la sintonización
e k ref k – y k ; % cálculo del error
if e k 1 , e k 1; end
if e k –1 , e k –1; end % validación útil durante la sintonización
de k e k – e k–1 ; % calculo de cambio de error
perterror pertraps e k ,FPe ; % cálculo de las pertenencias
pertdeltaerror pertraps de k ,FPde ; % cálculo de las pertenencias
% calulo de las tres constantes mediante el sistema difuso.
K1 fuzzy perterror, pertdeltaerror, FAMK1 ;
K2 fuzzy perterror, pertdeltaerror, FAMK2 ;
K3 fuzzy perterror, pertdeltaerror, FAMK3 ;
% cálculo de la señal de control
u k u k–1 0.1*K1*e k 0.1*K2*e k–1 K3*0.1*e k–2 ;
end
93
–––––––––––––––––––––––Algoritmo Genético–––––––––––––––––––––––
clear all; close all
NN 2001;
u zeros NN,1 ;
y zeros NN,1 ;
ref 0.3*ones 1,126 , 0.6*ones 1,125 , 0.4*ones 1,125 ,...
0.7*ones 1,125 , 0.2*ones 1,125 , 0.8*ones 1,125 ,...
0.5*ones 1,125 , 0.9*ones 1,125 , 0.65*ones 1,125 ,...
0.45*ones 1,125 ,0.75*ones 1,125 ,0.55*ones 1,125 ,...
0.15*ones 1,125 , 0.35*ones 1,125 ,0.65*ones 1,125 ,0.25*ones 1,125 ;
coef;
g 1 % numero de generaciones.
N 20; % tamaño de la población.
ncruces N/4; % numero de cruces.
nmut 3*N/4 –1; % numero de mutaciones.
l 13; % número de elementos a mutar en cada individuo.
m 0;
% definición de funciones de pertenencia
FPe –2.00 –1.00 –0.75 –0.50;
–1.00 –0.50 –0.30 0.00;
–0.05 –0.01 0.01 0.05;
0.00 0.30 0.50 1.00;
0.50 0.75 1.00 2.00 ;
FPde –1.00 –0.40 –0.30 –0.20;
–0.30 –0.20 –0.10 0.00;
–0.05 0.00 0.00 0.05;
0.00 0.10 0.20 0.30;
0.20 0.30 0.40 1.00 ;
% se genera la población, 20 individuos de 5x5 de cada FAM
94
for n 1:N
for i 1:5
for j 1:5
FAMpK1 i, j, n round rand–0.5 *32 /8;
end
end
end
for n 1:N
for i 1:5
for j 1:5
FAMpK2 i, j, n round rand–0.5 *32 /8;
end
end
end
for n 1:N
for i 1:5
for j 1:5
FAMpK3 i, j, n round rand–0.5 *32 /8;
end
end
end
while m g,
%Evalúa la población FAMs actual
m m 1
ifampk1 1;
ifampk2 1;
ifampk3 1;
for n 1:N
%se inicializan las FAM con los individuos correspondientes a cada
%iteración
FAMK1 FAMpK1 :, :, n ;
FAMK2 FAMpK2 :, :, n ;
95
FAMK3 FAMpK3 :, :, n ;
Sistema; %se ejecuta el controlador
% se calcula el fitness usando el vector e, de y u
fitness n 1*sum e.*e 2*sum de.*de 0.085*sum u.*u ;
end
% Selecciona el elite
elite, ind min fitness ;
E m elite;
FAMpK1 :, :, 1 FAMpK1 :, :, ind ;
FAMeliteK1 FAMpK1 :, :, ind ;
FAMpK2 :, :, 1 FAMpK2 :, :, ind ;
FAMeliteK2 FAMpK2 :, :, ind ;
FAMpK3 :, :, 1 FAMpK3 :, :, ind ;
FAMeliteK3 FAMpK3 :, :, ind ;
ifampk1 ifampk1 1; % posición nuevo individuo en la población
ifampk2 ifampk2 1;
ifampk3 ifampk3 1;
% genera la nueva población
% Realiza cruce promedio de dos individuos
for i 1:ncruces
i1 ceil rand*N ;
i2 ceil rand*N ;
if rand 0.5
i1 1; %probabilidad de cruzar con elite
end
while i1 i2
i2 ceil rand*N ; % evita que se repita el individuo
end
ind1 FAMpK1 :, :, i1 ;
ind2 FAMpK1 :, :, i2 ;
96
%calcula el promedio y aproxima teniendo en cuenta el intervalo de 0.125 que
%hay entre los individuos.
FAMnk1 round 0.5* ind1*8 ind2*8 /8;
FAMpK1 :, :, ifampk1 FAMnK1;
ifampk1 ifampk1 1;
end
for i 1:ncruces
i1 ceil rand*N ;
i2 ceil rand*N ;
if rand 0.5
i1 1;
end
while i1 i2
i2 ceil rand*N ;
end
ind1 FAMpK2 :, :, i1 ;
ind2 FAMpK2 :, :, i2 ;
FAMnK2 round 0.5* ind1*8 ind2*8 /8;
FAMpK2 :, :, ifampk2 FAMnK2;
ifamk2 ifampk2 1;
end
for i 1:ncruces
i1 ceil rand*N ;
i2 ceil rand*N ;
if rand 0.5
i1 1;
end
while i1 i2
i2 ceil rand*N ;
end
ind1 FAMpK3 :, :, i1 ;
ind2 FAMpK3 :, :, i2 ;
FAMnK3 round 0.5* ind1*8 ind2*8 /8 ;
FAMpK3 :, :, ifampk3 FAMnK3;
97
ifamk3 ifampk3 1;
end
% realiza mutación
for i 1:nmut
i1 ceil rand*N ; %selecciona un individuo aleatoriamente
if rand 0.5
i1 1; % el 50% de las veces es probable que seleccione el elite
end
FAMnK1 FAMpK1 :, :, i1 ;
for i 1:l
% selecciona los elementos de cada matriz aleatoriamente y los cambia
i4 ceil rand*5 ;
i5 ceil rand*5 ;
FAMnK1 i5 , i4 round rand–0.5 *32 /8;
end
FAMpK1 :, :, ifampk1 FAMnK1;
ifampk1 ifampk1 1;
end
for i 1:nmut
i1 ceil rand*N ;
if rand 0.5
i1 1;
end
FAMnK2 FAMpK2 :, :, i1 ;
for i 1:l
i4 ceil rand*5 ;
i5 ceil rand*5 ;
FAMnK2 i5 , i4 round rand–0.5 *32 /8;
end
FAMpK2 :, :, ifampk2 FAMnK2;
ifampk2 ifampk2 1;
end
for i 1:nmut
98
i1 ceil rand*N ;
if rand 0.5
i1 1;
end
FAMnK3 FAMpK3 :, :, i1 ;
for i 1:l
i4 ceil rand*5 ;
i5 ceil rand*5 ;
FAMnK3 i5 , i4 round rand–0.5 *32 /8;
end
FAMpK3 :, :, ifampk3 FAMnK3;
ifampk3 ifampk3 1;
end
end
FAMK1 FAMeliteK1
FAMK2 FAMeliteK2
FAMK3 FAMeliteK3
plot E ;
Programas en C ++ implementados en el Code Composer Studio
Se implementaron todos los programas necesarios para realizar el control difuso
de la velocidad del ACIM. a continuación se presentan los códigos de todas las
funciones utilizadas.
––––––––––––––––pertrap––––––––––––––––
//función que calcula el nivel de pertenencia de un valor a una función
trapezoidal
// Requiere: FP que son los parámetros de la función de pertenencia, valor que
es del cual se quiere conocer un nivel de pertenencia
// Retorna: el nivel de pertenencia de valor
float pertrap float valor, float FP
99
static float NP; //Nivel de pertenencia
if valor FP 3 || valor FP 0
NP 0.0;
if valor FP 1 & valor FP 2
NP 1.0;
if valor FP 1 & valor FP 0
NP valor – FP 0 / FP 1 – FP 0 ;
if valor FP 3 & valor FP 2
NP valor – FP 3 / FP 2 – FP 3 ;
return NP ;
––––––––––––––––pertraps––––––––––––––––
//función que calcula el nivel de pertenecía de un valor a un conjunto de
funciones trapezoidales
//requiere valor, FPS que es una matriz con los valores de las funciones
trapezoidales, Npert es un vector donde se almacena los niveles de pertenecía a
cada función de la matriz
void pertraps float valor, float *FPS , float *Npert
int i;
for i 0;i 5;i
Npert i pertrap valor,FPS i ;
–––––––––––––––– multivect ––––––––––––––––
//función que multiplica dos vectores y el resultado lo retorna en una matriz
//como parámetros recibe los dos vectores y la matriz donde se guardara el
resultado
100
void multivect float *Y, float *Z, float *M
int i,j;
for i 0;i 5;i
for j 0;j 5;j
M i j Y i *Z j ;
–––––––––––––––– multimat ––––––––––––––––
//función que multiplica dos matrices de 5*5 y el resultado lo pone en una
tercera matriz
//recibe como parámetros tres matrices A, B, C
//retorna en C la multiplicación A x B
void multimat float *A , float *B , float *C
int i,j,k;
float f 0;
for i 0;i 5;i
for j 0;j 5;j
f 0;
for k 0;k 5;k
f A i k *B k j ;
C i j f;
101
–––––––––––––––– sumamatriz ––––––––––––––––
//función que suma los elementos de un matiz de nfilas x mcolumnas y el
resultado lo retorna como un flotante.
//recibe como parámetro una matriz C.
//retorna en la suma como flotante.
float sumamatriz float *X ,int nfil, int ncol
int i,j;
float sum 0;
for i 0;i nfil;i
for j 0;j ncol;j
sum sum X i j ;
return sum;
–––––––––––––––– fuzzy ––––––––––––––––
//Función que realiza la inferencia difusa
//recibe los niveles de pertenencia del delta de error y el error y la matriz de
reglas
//retorna la acción de control
float fuzzy float *perterror, float *pertdeltaerror, float *FAM
float U 5 5 ;
float C 5 5 ;
float *ptU 5 ;
float *ptC 5 ;
float aux1 0,aux2 0;
float u;
102
int i;
for i 0;i 5;i
ptU i U i ;
for i 0;i 5;i
ptC i C i ;
multivect perterror,pertdeltaerror,ptU ;
multimat ptU,FAM,ptC ;
aux1 sumamatriz ptC,5,5 ;
aux2 sumamatriz ptU,5,5 ;
u aux1/aux2;
return u;
Para la programación de los periféricos del DSP2812 se uso como referencia el
documento 28 y los archivos de ejemplo proporcionados con este.
Esta ayuda contiene los archivos de cabecera para los dispositivos periféricos
del DSP281x y algunos proyectos de ejemplo que facilitan escribir en C/C
para los Texas Instruments ‘281x DSPs. El código puede ser utilizado como una
herramienta educativa o como plataforma de desarrollo para las aplicaciones del
usuario.
Las siguientes funciones se encuentran en el ejemplo “DSP281x Device SCI
Echoback”, que explica la configuración de los puertos para transmisión serial
Mostrado en 28 , en la Figura 47 se muestra un diagrama del proceso que ejecutan los
programas de ejemplo para DSP281x.
103
Figura 47 – Diagrama de funcionamiento de los programas de ejempló para el
DSP281x
––––––Funciones necesaria para la transferencia de datos serial––––––
/ /Test 1,SCIA DLB, 8–bit word, baud rate 0x000F, default, 1 STOP bit, no parity
// Función que inicializa el Puerto serial.
void scia_echoback_init
// Note: Clocks were turned on to the SCIA peripheral
// in the InitSysCtrl function
SciaRegs.SCICCR.all 0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
104
// async mode, idle–line protocol
SciaRegs.SCICTL1.all 0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
SciaRegs.SCICTL2.all 0x0003;
SciaRegs.SCICTL2.bit.TXINTENA 1;
SciaRegs.SCICTL2.bit.RXBKINTENA 1;
SciaRegs.SCIHBAUD 0x0001; // 9600 baud @LSPCLK 37.5MHz.
SciaRegs.SCILBAUD 0x00E7;
SciaRegs.SCICTL1.all 0x0023; // Relinquish SCI from Reset
// Transmit a character from the SCI – transmite un caracter por el puerto serial
void scia_xmit int a
while SciaRegs.SCIFFTX.bit.TXFFST ! 0
SciaRegs.SCITXBUF a;
// Transmit a string from the SCI – transmite una cadena
void scia_msg char * msg
int i;
i 0;
while msg i ! '\0'
scia_xmit msg i ;
i ;
// Initalize the SCI FIFO ‐ inicializa el SCI FIFO
void scia_fifo_init
SciaRegs.SCIFFTX.all 0xE040;
SciaRegs.SCIFFRX.all 0x204f;
SciaRegs.SCIFFCT.all 0x0;
105
––––––––––––––función principal para control del sistema––––––––––––––
#include stdio.h
#include math.h
// DSP281x Headerfile Include File
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
#include "FAMPID_fin gen.h" // contiene la definición de las FAM
//declaración de las funciones
float fuzzy float *, float *, float * ;
void multimat float * , float * , float * ;
void multivect float *, float *, float * ;
float pertrap float, float ;
void pertraps float, float * , float * ;
float sumamatriz float * , int, int ;
void scia_fifo_init ;
void scia_msg char * ;
void scia_xmit int a ;
void scia_echoback_init ;
void Gpio_select void ;
char Y 800 ;
void main
// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP281x_SysCtrl.c file.
InitSysCtrl ;
// Step 2. Initalize GPIO:
// This example function is found in the DSP281x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.
// For this example use the following configuration:
EALLOW;
GpioMuxRegs.GPFMUX.all 0x0030; // Select GPIOs to be Scia pins
// Port F MUX – x000 0000 0011 0000
EDIS;
// Step 3. Clear all interrupts and initialize PIE vector table:
106
// Disable CPU interrupts
DINT;
// Initialize PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.
// This function is found in the DSP281x_PieCtrl.c file.
// InitPieCtrl ; no required for this example
// Disable CPU interrupts and clear all CPU interrupt flags:
IER 0x0000;
IFR 0x0000;
// Initialize the PIE vector table with pointers to the shell Interrupt
// Service Routines ISR .
// This will populate the entire table, even if the interrupt
// is not used in this example. This is useful for debug purposes.
// The shell ISR routines are found in DSP281x_DefaultIsr.c.
// This function is found in DSP281x_PieVect.c.
//InitPieVectTable ;; no required for this example
// Step 4. Initialize all the Device Peripherals:
// This function is found in DSP281x_InitPeripherals.c
// InitPeripherals ; // Not required for this example
// Step 5. User specific code:
scia_fifo_init ; // Initialize the SCI FIFO
scia_echoback_init ; // Initalize SCI for echoback
int i,j5,j6,conta,salida 1; //contador
int a 0;
int dat_sal 0,dat_ent 0;
float r_k 0; //referencia escalón
char car2;
float u_k 0,u_k_1 0; //señales de control en el instante actual y anterior
float e_k 0,e_k_1 0,e_k_2 0;
//señales de error en el instante actual y anterior
float y_k 0,de_k 0; //salida, delta de error y en el instante actual
float K1 0,K2 0,K3 0; //constantes del controlador PID
107
float perterror 5 ; //niveles de pertenencia del error
float pertdeltaerror 5 ; //niveles de pertenencia del delta de error
//punteros
float *pt1;
float *pt_e 5 ;
float *pt_de 5 ;
float *pt_FAM_k1 5 ;
float *pt_FAM_k2 5 ;
float *pt_FAM_k3 5 ;
//valores para las funciones de pertenencia del error
float Fp_e 5 5 –5000, –1, –0.75, –0.5 ,
–1, –0.5, –0.3, 0 ,
–0.05, –0.01, 0.01, 0.05 ,
0, 0.3, 0.5, 1 ,
0.5, 0.75, 1, 5000 ;
//valores para las funciones de pertenencia del delta de error
float Fp_de 5 5 –5000, –0.4, –0.3, –0.2, ,
–0.3, –0.2, –0.1, 0, ,
–0.05, 0, 0, 0.05 ,
0, 0.1, 0.2, 0.3, ,
0.2, 0.3, 0.4, 5000 ;
//inicialización de los punteros
for i 0;i 5;i
pt_e i Fp_e i ;
for i 0;i 5;i
pt_de i Fp_de i ;
for i 0;i 5;i
pt_FAM_k1 i FAM_k1 i ;
for i 0;i 5;i
pt_FAM_k2 i FAM_k2i ;
108
for i 0;i 5;i
pt_FAM_k3 i FAM_k3 i ;
conta 0;
do
scia_xmit 45 ; // se envía un voltaje para activar el puerto serial
// Wait for inc character
while SciaRegs.SCIFFRX.bit.RXFIFST! 1
// wait for XRDY 1 for empty state
// Get character
car2 SciaRegs.SCIRXBUF.bit.RXDT;
conta ;
for j5 0;j5 1000;j5
for j6 0;j6 200;j6 ;
while conta 300 ;
// Se genera un retardo antes de empezar a controlar el sistema
//ciclo de control
do
// Definición de la señal de referencia.
if i 100
r_k 0.4;
if i 100 && i 200
r_k 0.7;
if i 200 && i 300
r_k 0.5;
if i 300 && i 400
r_k 0.3;
if i 400 && i 500
r_k 0.8;
if i 500 && i 600
r_k 0.6;
if i 600 && i 700
109
r_k 0.9;
if i 700 && i 800
r_k 0.2;
if i 800
salida 0;
e_k r_k – y_k; //calculo de error
de_k e_k – e_k_1; //calculo delta error
pt1 perterror;
pertraps e_k,pt_e,pt1 ; //calcula los niveles de pertenencia del error
pt1 pertdeltaerror;
pertraps de_k,pt_de,pt1 ;//calcula los niveles de pertenecía del delta error
//calcula el valor de K1, K2, K3. Usando lógica difusa
K1 fuzzy perterror, pertdeltaerror, pt_FAM_k1 ;
K2 fuzzy perterror, pertdeltaerror, pt_FAM_k2 ;
K3 fuzzy perterror, pertdeltaerror, pt_FAM_k3 ;
//Calcula la ley de control "Control PID"
u_k u_k_1 0.01*K1*e_k 0.1*K2*e_k_1 0.1*K3*e_k_2;
if u_k 0.1 u_k 0.1;
if u_k 0.9 u_k 0.9;
//dado que solo se pueden enviar datos tipo entero se realiza esta multiplicación,
dat_sal u_k *255;
scia_xmit dat_sal ; //envía la señal de control a la planta
//Espera por dato en el puerto serial
while SciaRegs.SCIFFRX.bit.RXFIFST! 1
//almacena el dato leído en la variable dat_ent
dat_ent SciaRegs.SCIRXBUF.bit.RXDT & 0xFE;
y_k dat_ent/130.0;
//actualización de variables
u_k_1 u_k;
e_k_2 e_k_1;
110
e_k_1 e_k;
i ;
// T 10 ms
//ciclos de retardo para lograr el tiempo de muestreo
for j5 0;j5 1000;j5
for j6 0;j6 98;j6 ;
a ~a;
while salida ;
111