You are on page 1of 9

Desarrollo y simulación de un controlador difuso para el manejo de un motor DC

Renato Alonso Tello Benel, Mario Eiler Mundaca Zavaleta
Facultad de Ingeniería Electrónica, Universidad Peruana de Ciencia Aplicadas Lima, Perú
u911240@upc.edu.pe u201013595@upc.edu.pe

Abstract — At present, technological demands require mechanisms to control themselves. Therefore, the introduction of automatic and "intelligent" is most urgently required. Thus, the complexity of the mathematical approach of automatic processes has led to the creation of an algorithm capable of control systems based on linguistic variables, which greatly facilitates the design of controllers. The above tool is called Fuzzy Logic and has a wide variety of applications in various industrial sectors, one of which, the DC motor control, research topic of this paper. En la actualidad, las exigencias tecnológicas requieren de mecanismos capaces de controlarse por sí mismos. Por tal motivo, la implementación de sistemas automáticos e “inteligentes” es requerida con mayor urgencia. De esta forma, la complejidad en el planteamiento matemático de los procesos automáticos ha llevado a la creación de un algoritmo capaz de realizar el control de los sistemas en base a variables lingüísticas, las cuales facilitan considerablemente el diseño de los controladores. La mencionada herramienta se denomina Lógica Fuzzy y posee una gran variedad de aplicaciones en distintos sectores industriales, siendo una de ellas, el control de un motor DC, tema de investigación del presente documento.

Del mismo modo, permite implementar controladores para sistemas no lineales con gran complejidad matemática.

A.

Conceptos Básicos

Con el objetivo de una mayor comprensión en el desarrollo e implementación del controlador para el motor DC, es necesario conocer ciertos conceptos.

Función de membresía

La función de membresía indica el grado de pertenencia de las variables de entrada. Está compuesta por una variable lingüística, un universo de discursión (rango de valores que adopta la variable lingüística) y los conjuntos difusos (que indican los estados de la variable, los cuales son representados con términos lingüísticos). A continuación, se puede apreciar las partes de una función de membresía y cómo se asignan los grados de pertenencia si se tiene un valor de entrada de x0.

I. MARCO TEÓRICO
El concepto de lógica difusa fue introducido por el matemático y profesor Lofti A. Zadeh en la Universidad de Berkeley en 1965. Inicialmente, Zadeh desarrollaba aplicaciones en el área de humanidades. Sin embargo, tiempo después, las aplicaciones dedicadas al control de sistemas empezaron a implementarse. La lógica difusa proporciona ventajas considerables con respecto a otros algoritmos para el diseño de controladores. Sin embargo, la característica más importante que posee, está relacionada a la capacidad de operar con información inexacta y subjetiva, lo cual no desacredita su óptimo funcionamiento.

Fig.1 Función de membresía

Operaciones difusas

es exhibido porque será usado en este documento. lo cual permite reparametrizar el valor obtenido. El diseñador debe adquirir la pericia y el conocimiento necesario y suficiente con respecto al mecanismo que desea controlar. sin embargo.Las operaciones difusas permiten manipular los conjuntos difusos.motor Las ecuaciones que comandan el comportamiento físico del motor son:  Estructuración de las funciones de membresía (2.  Determinación del universo de discursión de cada variable En este procedimiento se determina el rango numérico de cada variable lingüística.  Procedimientos para controlador difuso Análisis del sistema Luego de proceder con los pasos mencionados. proporciona el resultado final del algoritmo de la lógica difusa. De esta forma. A continuación. se establece el mínimo y máximo valor de operación que poseerá dicha variable. es recomendable compartir información con el personal encargado de dicho sistema. De igual modo.57 radianes. se debe aprender todo lo relacionado al sistema.  Establecimiento de las reglas difusas y Elaboración de la Memoria Asociativa Difusa (FAM) Fig. ya que son las personas que mejor lo conocen. El método de la centroide es el procedimiento más usado para realizar la defuzzificación. A continuación. así como realizar la asignación de las variables lingüísticas.2 A la izquierda: operación de unión. se debe realizar una denormalización a la variable de salida. El objetivo primordial de este paper consiste en diseñar un controlador difuso que sea capaz de manejar el comportamiento de un motor DC. se debe definir las entradas y salidas del proceso. deberá girar hasta estabilizarse en dicho valor de posición angular. se muestra la ecuación de esta técnica: ∑ ∑  Operaciones difusas Se realizan las operaciones de unión e intersección para obtener un valor difuso. Objetivo En primer lugar. se procede a elaborar las funciones de membresía. De esta manera. generalmente. a través del método de la centroide. II. A la derecha: operación de intersección. obtención de la superficie de control y la simulación del controlador difuso. exhibición de la primera iteración del controlador difuso.  Método de la centroide Las reglas difusas están basadas en las experiencias recogidas en el análisis del sistema. se establece la FAM. B. Es necesario mencionar que. así como sus respectivos rangos de operación y formas. En este paso. se obtendrá un resultado. se observan dichas operaciones respectivamente. se determinan los conjuntos difusos.  Determinación de las variables de entrada/ salida Después de analizar el sistema. se ha decidido dividir este procedimiento en cinco partes y en el siguiente orden: determinación de las ecuaciones físicas y planteamiento del diagrama del controlador difuso. Es necesario mencionar que no es el único método que realiza esta función. Determinación de las ecuaciones físicas del motor y diagrama controlador difuso . Luego de definir las variables lingüísticas y los universos de discursión para cada una de ellas. se relacionan las condiciones de las entradas y se asignan los comportamientos de la salida.  Defuzzificación y denormalización (1. la cual define el comportamiento del sistema por acción del controlador difuso. Con la finalidad de proporcionar una mayor comprensión e ilustración al lector. Inmediatamente después. Las más importantes son la unión y la intersección. es decir. el motor. para llevar a cabo esta función.1) . ante cualquier perturbación o condición inicial que no sea 12. es decir. DESARROLLO DEL TRABAJO Y ANÁLISIS A. obtención de la función de membresía y la FAM.1) implementar un B.

8 0. velocidad angular  Función de Membresía: Voltaje alimentación del motor DC (salida) Función de Membresía: voltaje de salida 1 0.5 0.3 0. Como ya se mencionó.4 F.2 Muy negativa Negativa Cero Positiva Muy positiva w θ Controlador difuso u Motor DC y Fig.6 0. tanto para las entradas como para la salida se ha decidido usar cinco términos lingüísticos. -8 -6 -4 -2 0 2 4 Velocidad en radianes/seg 6 8 10 Fig.1 0 -10 De esta forma.3 Diagrama del controlador difuso – motor 0.2 0.7 0.2 0. Del mismo modo.8 Membresía de posición Membresía de voltaje 0 -15 -10 -5 0 voltaje en voltios 5 10 15 Fig. error de posición  Función de Membresía: Velocidad Angular (entrada) Exhibición de la controlador difuso iteración .M.9 0. voltaje de alimentación del motor DC 0.8 0. velocidad angular y el voltaje de alimentación.9 0.9 0. así como la FAM.M.(2. es necesario establecer las funciones de membresía de las entradas y la salida del mismo. el controlador posee dos entradas: error de posición (variable retroalimentada) y la velocidad angular.6 0. la señal de la corriente será estimada a través de las relaciones matemáticas de esta variable con la posición.6 F. Cualquier otro valor ajeno a éste es considerado como error de posición.1 Muy alejado Alejado Cero Se pasó Se pasó mucho  FAM TABLA I Fam Velocidad-Posición P V MA A C 0 5 10 15 Posición en radianes 20 25 MN GP GP GP P C N GP GP P C N C GP P C N GN primera P P C N GN GN MP C N N GN GN del 0 SP SPM D.6 0.2) Asimismo. Fig.4 0.7 0.5 0.56 rad.4 0. el valor de referencia de la posición es 4π o 12.4 0.  Función de Membresía: Error de Posición (entrada) Función de Membresía: Error de posición 1 0.5 0. el diagrama del controlador difuso – motor es el siguiente: Membresía de velocidad Función de Membresía: Velocidad angular 1 0.3 0. Obtención de las funciones de membresía y determinación de la FAM (Fuzzy Associative Memory) Como primer procedimiento para diseñar el controlador difuso.5 F.M. la cual relacionará el error de posición y la velocidad angular.3 0.7 0.1 Gran Negativo Negativo Cero Positivo Gran Postivo de C. La salida del controlador es el voltaje de alimentación al motor DC. Por otro lado.

2 0.9 0.6 0.9 0.1 -10 -10 0 10 5 10 Posicion 15 20 25 0 0 -10 -5 0 Voltaje en voltios 5 10 Velocidad Fig.3 0. Valor obtenido luego de la Defuzzificación 1 0.10 Resultado obtenido 0.5 0. las cuales serán nombradas en las conclusiones. Es necesario mencionar que para determinar los procedimientos posteriores se debió convertir la iteración anterior en una función denominada fuzlab2.6 -5 0.Con el objetivo de exponer la primera iteración del controlador difuso. así como estimar o sugerir algunas mejoras que se podrían realizar en las funciones de membresía.M.9 0.8 5 Grados de membresía de voltaje Control 0 0.5 0.7 0.7 0.1 0 E.3 0.8 Gran Negativo Negativo Cero Positivo Gran Postivo -10 -5 0 Voltaje en voltios 5 10 Grados de membresía de voltaje Fig.7 0. Obtención de la superficie de control -10 -5 0 Voltaje en voltios 5 10 Fig.8 F.4 0. se decidió proporcionar las siguientes condiciones iniciales: una posición igual a 5 rad.6 0.1 0  Función de Membresía de salida con los valores de corte Función de Membresía: voltaje de salida 1 0. la cual permitirá determinar y analizar si el diseño del controlador difuso ha sido el correcto. de la salida cortada  Valor obtenido luego de la Defuzzificación F.5 0.8  FAM resultante Grados de membresía de voltaje 0.3 0. A continuación se presentará la superficie de control obtenida. Superficie de control del Motor 10  Función de Membresía de salida cortada Funcion de Membresia de Salida Cortada 1 0. y una velocidad angular de 0 rad/seg.9 F.7 FAM obtenida de forma numérica 0. Es preciso expresar que los códigos de todos los algoritmos se encuentran exhibidos en la sección Anexos.2 Fig.2 0.11 Superficie de control Fig.M.4 0. de salida con los valores de corte En este inciso se presentará la superficie de control. Resultados .4 0.

por lo cual. por ejemplo un puente H. De esta manera. se ha logrado controlar el motor al valor de referencia deseado. se aprecia que las señales de la velocidad angular. se observó que en las laterales de la estructura geométrica se hallan unos pequeños planos. Asimismo. a pesar de no contar con un sensor que provea información de la corriente en el motor. De este modo. En primer lugar.56 rad (valor de referencia establecido) en aproximadamente 25 segundos. Material del Curso Robótica e Inteligencia Artificial del Aula Virtual. obligando al sistema a responder más rápido. los cuales generan que la superficie no sea del todo inclinada. este beneficio se suma a la eficiencia del proceso de fuzzyficación. Lima. lo cual agiliza el proceso de control. se debe disminuir el universo de discursión de las entradas.13 Arriba: Gráfica de la intensidad de corriente. Abajo: Gráfica de la señal de control Es necesario mencionar que la simulación del control de motor se estableció bajo las siguientes condiciones iniciales: posición 5 rad. Pool. y velocidad angular 0 rad/seg.12 Arriba: Gráfica de la posición. que por medio de rangos de entradas estimados y subjetivos es capaz de transformarlos a valores difusos. para aumentar la inclinación de la superficie de control. Lima. se revela la potencialidad de la lógica difusa en el hecho que. se observó que el tiempo de establecimiento de la posición es considerable. posición y velocidad angular. al analizar las gráficas se observa que el motor se asentará en 12. se pudo estimar el comportamiento de la intensidad de corrinte a través de su relación matemática con el voltaje de alimentación. Julio y TASAYCO. UPC [2]OSCANOA.5 1 0. UPC Fig. Gráficas de posición y velocidad angular Gráfica de posición 15 10 X: 25. con respecto a la superficie de control. 2. Por tal motivo. intensidad de corriente y el voltaje de alimentación al motor presentan comportamientos aceptables y esperados. III. al revisar los intervalos donde se producen las mencionadas geometrías. Enrique.5 0 0 5 10 15 tiempo (seg) 20 25 30 Fig. Lógica Difusa. 4. Por otro lado. corroborando el eficaz diseño del controlador difuso. Igualmente. ANEXOS . CONCLUSIONES V. Abajo: Gráfica de la velocidad angular  Gráficas de corriente y voltaje de alimentación (salida) 10 x 10 -3 Gráfica de la intensidad de corriente Amperios (A) 5 0 -5 0 15 20 25 tiempo (seg) Gráfica de la señal de control (voltaje de alimentación) 5 10 30 8 U (Voltios) 6 4 2 0 IV. es necesario mencionar que la salida del controlador difuso o el volatje de alimentación que se muestra en la simulación debe atravesar por un proceso de normalización con el objetivo de que los valores sean ingresados a una interfaz previa. es necesario modificar los conjuntos difusos en la función de membresía de la salida o voltaje de alimentación del motor. 3. para disminuirlo. BIBLIOGRAFÍA 0 5 10 15 tiempo (seg) 20 25 30 [1]ARNÁEZ. De esta manera. Posición (rad) Velocidad (rad/seg) 1. Por último. éstos coinciden con los valores de las bases menores de los trapecios en los conjuntos difusos de las entradas.56 5 0 5 15 20 tiempo (seg) Gráfica de la velocidad angular 10 25 30 1. Del mismo modo. con respecto a la etapa de simulación del control. Asimismo. se deben extender más los trapecios y acortar los triángulos.04 Y: 12.

p_A_i = interp1(p.v_MA. xx13 = min(p_Z_i.p_A. xx9 = min(p_B_i.[-3 0 3]).v_MB.57]). ylabel('Membresía de posición').v_B_i). xx11 = min(p_Z_i. %Universo de discursión p_MB = trapmf(p. p_B = trimf(p.p1).v_A_i). %Lógica difusa motor DC %% Funciones de membresía %Posición p= 0:0.[3 6 10 10]). fuz_vel=[v_MB_i v_B_i v_Z_i v_A_i v_MA_i] %% reglas difusas %%posicion/voltaje xx1 = min(p_MB_i.v_MA_i).'b'.47 12.[2 8 12 12]).p_B.'r'.p_Z.[-12 -12 -8 -2]).V_N.[12.v_A_i). clear all.'Muy positiva'). v_B = trimf(v.v_MB_i).p_Z. %Velocidad angular v= -10:0.v_MB_i). xx14 = min(p_Z_i.'g'.67]).57 16.57 8. legend('Muy negativa'.p_MB. v_MA = trapmf(v.'Alejado'.'r'.'Se pasó'.'k'. grid. xx7 = min(p_B_i. v_A_i = interp1(v.'Cero'. xlabel('voltaje en voltios'). xlabel('Posición en radianes').[16. v_A = trimf(v.1 4. xx2 = min(p_MB_i.'g'.'Gran Postivo').[0 3 6]). v_MA_i = interp1(v.p_MA. v_Z = trimf(v.V.57 20. xx3 = min(p_MB_i.p1).v_A.V.v1).[4.57 25 25]). ylabel('Membresía de voltaje').v_MB.'r'.v_A.v_Z.01:25.v_Z_i).'b'.57 8.p.1]). p_Z_i = interp1(p. V_P = trimf(V. xx5 = min(p_MB_i. title('Función de Membresía: Velocidad angular').'Cero'.p1).57 12.[-8 -2 -0.v. legend('Muy alejado'. figure(1) plot(p. %Universo de discursión V_MN = trapmf(V.57]). . figure(4) plot(V.p. %rad v1= 0.V.'k'.v_B.'Positivo'.v_Z_i). xlabel('Velocidad en radianes/seg').[8.v1). p_B_i = interp1(p.p. v_B_i = interp1(v.V_MN.[-6 -3 0]).'Se pasó mucho').'Positiva'.v_A_i).'m'). clc.p_A. V_MP = trapmf(V.p1).1 2 8]). grid.v_MA. p_MA_i = interp1(p.V. V_N = trimf(V.v.'k'.[0.v1).1 -0.p.p_B. xx8 = min(p_B_i. v_Z_i = interp1(v.[-0. %rad/sec %% Fuzzification(Paso de las entradas por las funciones de membresía) p_MB_i = interp1(p.'m'). xx12 = min(p_Z_i. fuz_pos=[p_MB_i p_B_i p_Z_i p_A_i p_MA_i] v_MB_i = interp1(v.[-2 0 2]).'m'). p_MA = trapmf(p.57 16. %Salida Voltaje motor V= -12:0.V_Z. V_Z = trimf(V.p_MA.v_B_i).'Negativa'.v_Z_i). grid.v_B. xx4 = min(p_MB_i.v_Z.[-10 -10 -6 -3]).p1).01:10.v1). figure(2) plot(v.'g'.V_MP.V_P. %Universo de discursión v_MB = trapmf(v. xx6 = min(p_B_i. save motordclab2 Anexo 2: Código de la primera iteración del controlador difuso close all clear all clc load motordclab2 p1= 5.57]). p_A = trimf(p.v1).'b'.v_MB_i).p_MB.57 20. ylabel('Membresía de velocidad'). legend('Gran Negativo'. title('Función de Membresía: voltaje de salida').01:12.v.Anexo 1: Código de la ilustración de las Funciones de Membresía close all.'Cero'. p_Z = trimf(p. title('Función de Membresía: Error de posición').'Negativo'.v.v_MA_i).v_B_i). xx10 = min(p_B_i.

muP.v_MB_i).' m:') axis([-12 12 0 1]) %% Aplicando el alpha cuts (valores de corte) muMN = min([muMN. xlabel('voltaje en voltios').'g'. %% reglas difusas %%posicion/voltaje xx1 = min(p_MB_i.v_MB_i). muZ = max(Z)*ones(size(V)). xx5 = min(p_MB_i. muMP = min([muMP.muMP. .p1).'Positivo'.p_B.V.'b') grid on.v_MB_i).'m').V. Z = [xx5 xx9 xx13 xx17 xx21]. xx16 xx17 xx18 xx19 xx20. = min(p_MA_i.'k'. fuz_pos=[p_MB_i p_B_i p_Z_i p_A_i p_MA_i]. grid.V.'r'.v_A_i).'g:'. muP = max(P)*ones(size(V)). P = [xx4 xx8 xx12 xx16]. figure(2) plot(V. muN = min([muN. %rad % v1= -2.muMN.v1).v_MA_i).'r:'.v_MA_i).v_A_i). N = [xx10 xx14 xx18 xx22 ]. xx11 = min(p_Z_i.v1).'k'.v_B_i). = min(p_A_i. v_B_i = interp1(v.v_Z_i).V_MP.V.v1).muN.v_MA_i). fuz_vel=[v_MB_i v_B_i v_Z_i v_A_i v_MA_i]. axis([-12 12 0 1]) title('Valor obtenido luego de la Defuzzificación ') z = defuzz(V. = min(p_A_i. %rad/sec %% Fuzzification(Paso de las entradas por las funciones de membresía) p_MB_i = interp1(p.'k:'.v_A_i).V_Z. v_MB_i = interp1(v.v_MA_i).v_MA_i).muMN. = min(p_A_i.V.v_MA. figure(3) plot(V.v_MB.p1). = min(p_A_i. = min(p_A_i. xx3 = min(p_MB_i.] %%Preparamos la defuzzificación GN = [xx15 xx19 xx20 xx23 xx24 xx25]. muP = min([muP.V_N]).p_MB. plot(V. xx8 = min(p_B_i.v_Z_i). xx11 xx12 xx13 xx14 xx15.muN. ylabel('Membresía de voltaje').V.V. xx9 = min(p_B_i. p_B_i = interp1(p.muZ.'Negativo'.'b'.V.v_B_i).p_Z. muN = max(N)*ones(size(V)).muP.v_B_i).muS.'m') grid on.p1). = min(p_MA_i.muZ.p1).'r'. Anexo 3: Código de la función fuzlab2 function [z] = fuzlab2(p1.v_A.'centroid') hold on plot([z z].V_P.muMP. xx2 = min(p_MB_i.'Gran Postivo'). hold on title('Función de Membresía: voltaje de salida'). axis([-12 12 0 1]) title('Funcion de Membresia de Salida Cortada') %% Unión de los conjuntos difusos muS = max([muMN. legend('Gran Negativo'. p_Z_i = interp1(p. = min(p_MA_i.'b'.V_MN.muN. v_Z_i = interp1(v.[0 1]. muZ = min([muZ.V.v_B_i).xx15 xx16 xx17 xx18 xx19 xx20 xx21 xx22 xx23 xx24 xx25 = min(p_Z_i.V_P]).p_A.V_Z]). xx6 xx7 xx8 xx9 xx10. p_MA_i = interp1(p.V. muMN = max(GN)*ones(size(V)). xx21 xx22 xx23 xx24 xx25.p_MA.v_MB_i). v_MA_i = interp1(v. xx10 = min(p_B_i.v_Z_i). xx7 = min(p_B_i.V_MP]).V.muZ.'Cero'.v_MB_i).v_B.v_Z_i). xx4 = min(p_MB_i.muP.v1).p1).v_Z.V_MN]).v_A_i). = min(p_MA_i. GP = [xx1 xx2 xx3 xx6 xx7 xx11].v1) load motordclab2 % p1= 10.muMP]). p_A_i = interp1(p.'r').muS. muMP = max(GP)*ones(size(V)). v_A_i = interp1(v. xx6 = min(p_B_i. FAM=[xx1 xx2 xx3 xx4 xx5. = min(p_MA_i.v1).'g'.V.V_N.'b:'. figure(1) plot(V.

%% Unión de los conjuntos difusos muS = max([muMN. Anexo 4: Código de la superficie de control %% Superficie de control motor DC clear all. %rad % x2= 0.V_MP]). J=0.v_A_i). x2 = 0. = min(p_A_i.v_A_i).v_MB_i). xx6 xx7 xx8 xx9 xx10. %% Aplicando el alpha cuts (valores de corte) muMN = min([muMN.v_MB_i).v_MA_i).1) = p. U(k. = min(p_Z_i.v_B_i). k = 1.muP. close all.v_Z_i).U) shading interp xlabel('Velocidad') ylabel('Posicion') zlabel('Control') title('Superficie de control de motor') FAM=[xx1 xx2 xx3 xx4 xx5.'centroid'). muMP = min([muMP. = min(p_A_i. x3 = 0.v_B_i).P. .v_Z_i). k = 1. = min(p_MA_i. muP = max(P)*ones(size(V)). GP = [xx1 xx2 xx3 xx6 xx7 xx11]. X2(k. b=1.v_MA_i).V_Z]). N = [xx10 xx14 xx18 xx22 ].6. clc.V_MN]). u = 0. xx16 xx17 xx18 xx19 xx20.1) = x2. = min(p_Z_i. X3(k.1) = x3. Z = [xx5 xx9 xx13 xx17 xx21].001.muS.]. end k=k+1. xx11 xx12 xx13 xx14 xx15. Anexo 5: Código de la simulación del control clear all. tf = 30.1) = x1. for v = -10:10 u = fuzlab2(p.v+11)=u. P = [xx4 xx8 xx12 xx16].0099. %rad/sec muMN = max(GN)*ones(size(V)).1) = t. = min(p_MA_i.008. %%Preparamos la defuzzificación GN = [xx15 xx19 xx20 xx23 xx24 xx25]. %Tiempos de Simulación ti = 0.xx12 xx13 xx14 xx15 xx16 xx17 xx18 xx19 xx20 xx21 xx22 xx23 xx24 xx25 = min(p_Z_i. muP = min([muP. close all. = min(p_MA_i. U(k. R=1. muZ = max(Z)*ones(size(V)).v_B_i). muZ = min([muZ. %Sistema % x1= 10. muN = max(N)*ones(size(V)). end save motorDC P V U surf(V. xx21 xx22 xx23 xx24 xx25.muZ.1e-3. %Especificaciones del motor x1 = 5. K=0. L=4.1) = u. = min(p_Z_i. muMP = max(GP)*ones(size(V)). muN = min([muN. = min(p_A_i. V(v+11.v_Z_i). = min(p_A_i.8003e-7. T(k.V_N]). = min(p_MA_i.muN. dt = 0. = min(p_MA_i.muMP]).0007201*0. clc.v_A_i). %Simulación for t = ti:dt:tf X1(k.v_MA_i). for p = 0:25 P(k. z = defuzz(V.V_P]).v).1)=v. = min(p_A_i.

end figure(1) subplot(211) plot(T. x2p = (-b/J)*x2 + (K/J)*x3. subplot(212) plot(T.%Sistema x1p = x2. ylabel('Velocidad (rad/seg)'). figure(2) subplot(211) plot(T. grid. xlabel('tiempo (seg)').K*x2/L + u/L. grid.X2) title('Gráfica de la velocidad angular'). x2 = x2 + x2p*dt. xlabel('tiempo (seg)'). . x3 = x3 + x3p*dt. grid. xlabel('tiempo (seg)'). subplot(212) plot(T.U) title('Gráfica de la señal de control (voltaje de alimentación)'). ylabel('Posición (rad)').X1) title('Gráfica de posición'). grid.X3) title('Gráfica de la intensidad de corriente').x2). %Integración x1 = x1 + x1p*dt. k = k+1. xlabel('tiempo (seg)'). ylabel('U (Voltios)'). x3p = -R*x3/L . ylabel('Amperios (A)'). %Controlador difuso u = fuzlab2(x1.