Ecuaciones diferenciales y funciones en Modelica.

 

Indice de temas.

Forma de utilizar Modelica.

Representacion de funciones.

Simulación de un generador de tensión senoidal.

Circuito RLC excitado por un generador senoidal.

Sistema resorte-masa-amortiguacion.

Servo motor de continua.

Servo motor de continua en un sistema que incluye el bobinado del campo.

 

Bajamos OMShell de OpenModelica y realizamos el siguiente programa, que es una ecuacion diferencial de primer orden,

dx/dt = ( 1 x)

Modelica es un lenguaje para describir el comportamiento dinámico de un sistema, en el núcleo del modelo están las ecuaciones matemáticas, un sistema puede describirse por medio de ecuaciones diferenciales y estas pueden ser expresadas usando Modelica. Escribimos en el Notepad

model FirstOrder

Real x;

equation

der(x) = 1-x;

end FirstOrder;

 

Luego abrimos OMShell 1.1 y en File apretamos en Load Modelica Library, que introduce en el programa todos la librería que ayuda al programa a realizar la simulación, luego hacemos copiar y pegar lo escrito en el Notepad, el siguiente dibujo indica con más detalle el procedimiento a seguir,

: : http://82.166.171.228:8080/publicaciones/Modelica/modelica1.png

 

 

Representacion de funciones.

Si se quiere representar una funcion con Modelica, como la función seno, escribimos en el editor ,

class seno

Real x (start=0);

Real y;

equation

x=time ;

y=sin (x);

end seno;

>> simulate ( seno, startTime =0, stopTime=10)

 

: http://82.166.171.228:8080/publicaciones/Modelica/modelica3.JPG

Simulación de un generador de tensión senoidal.

A partir de alguna ideas de la función seno antes estudiada creamos un programa que simule un generador de tensión senoidal,

model generador

Real v ;

Real a;

parameter Real w=2;

parameter Real A=1;

equation

a=w*time ;

v=A*sin (a);

end generador;

La función seno tiene una variable a, que es el ángulo, formado por la constante w y la variable time, las ecuaciones son dos con dos variables,

>> simulate (generador, startTime= 0, stopTime=10 )

 

: http://82.166.171.228:8080/publicaciones/Modelica/modelica4.JPG

Circuito RLC excitado por un generador senoidal.

Dado el siguiente sistema,

 

: http://82.166.171.228:8080/publicaciones/Modelica/modelica5.JPG

Utilizando las ecuaciones,

 

: http://82.166.171.228:8080/publicaciones/Modelica/modelica6.JPG

Para escribir el siguiente programa utilizamos los conceptos utilizados en el programa del generador senoidal,

model cto

Real vi ;

Real i ;

Real v0 ;

Real a;

parameter Real w=1000 " frecuencia";

parameter Real A=1 "valor maximo de la tension del generador";

parameter Real R=1000;

parameter Real L=0.1;

parameter Real C=0.000001;

equation

a=w*time ;

vi=A*sin (a);

vi-i*R-L*der(i)=v0;

i=C*der(v0);

end cto ;

 

>> simulate ( cto, startTime=0 , stopTime=0.015 )

: http://82.166.171.228:8080/publicaciones/Modelica/modelica7.JPG

 

Sistema resorte-masa-amortiguacion.

Consideremos el siguiente sistema , formado por un resorte k, una masa m y una amortiguación

 

: http://82.166.171.228:8080/publicaciones/Modelica/modelica8.JPG

model sistema1

 

parameter Real m=1 ;

parameter Real b=1;

parameter Real k=1;

 

Real y (start = 0.5 );

Real v;

 

equation

 

der(y) = v ;

der(v) = -(b/m) * v - (k/m)*y ;

 

end sistema1;

 

>> simulate ( sistema1, startTime=0, stopTime=20)

record SimulationResult

resultFile = "C:/Users/User/AppData/Local/Temp/OpenModelica/sistema1_res.mat",

simulationOptions = "startTime = 0.0, stopTime = 20.0, numberOfIntervals = 500, tolerance = 0.000001, method = 'dassl', fileNamePrefix = 'sistema1', storeInTemp = false, noClean = false, options = '', outputFormat = 'mat', variableFilter = '.*', measureTime = false, cflags = '', simflags = ''",

messages = "",

timeFrontend = 0.21454593127887714,

timeBackend = 0.013571673559437402,

timeSimCode = 0.004300532749599743,

timeTemplates = 0.0024823244462277806,

timeCompile = 1.1060225335997744,

timeSimulation = 0.2123479915618184,

timeTotal = 1.5533057490077986

end SimulationResult;

 

>> plot ({ y,v})

True

 

El siguiente grafico es la respuesta del sistema, en este caso representamos dos funciones en el mismo grafico,

 

 

: http://82.166.171.228:8080/publicaciones/Modelica/modelica9.JPG

Servo motor de continua.

Un conductor en el que circula corriente, inmerso en un campo magnético, experimenta una fuerza proporcional a la magnitud del flujo, a la corriente, a la longitud del conductor y al seno del ángulo entre el conductor y 1a dirección del flujo. Cuando el conductor está a una distancia fija de un eje, alrededor del cual pueda girar, se produce un par que es proporcional al producto de Ia fuerza y el radio. En un motor, el par resultante es la suma de los pares producidos en coda uno de sus conductores. En un motor dado las unicas cantidades ajustables son el flujo y la corriente de la armadura. El par, por tanto, puede expresarse por:

T(t) = K3. f. im

 

En este caso para evitar confusiones con el tiempo se empleara la T mayúscula, aunque signifique bien una constante o una funcion variable con el tiempo. Hay dos modos de operar un servomotor: uno de ellos con una corriente constante de excitación de campo y voltaje ajustable aplicado a la armadura, y otro con una corriente de armadura constante y un voltaje ajustable aplicado a los arrollamientos excitadores del campo.

Control por armadura.

Se obtiene una corriente excitadora de campo constante mediante un generador auxiliar separado; con ello se logra un flujo también constante. Con esto el par es proporcional solamente a la corriente de la armadura y viene dado por:

T(t) = Kt . im (ca-1)

Cuando la armadura del motor está girando hay una fuerza contraelectromotriz proporcional al producto del flujo y la velocidad; como el flujo es constante el voltaje inducido em es directamente a la velocidad wm:

em = Kb. Wm (ca-2)

El control de la velocidad del motor se obtiene ajustando el voltaje aplicado a la armadura; su polaridad determine el sentido de la corriente y, por tanto, el sentido del par generado; este, a su vez, determina el sentido de rotación del motor. En la figura de abajo se expone un circuito esquemático del motor de continua gobernado por su armadura. La inductancia y resistencia de la armadura se indican por Lm y Rm. La ecuación del voltaje del circuito de la armadura es:

Lm.(dim/dt) + Rm. im + em =ea (ca-3)

La corriente que circula en la armadura produce el par, según la ecuación (ca-1). EI par requerido depende de la carga conectada en su árbol. Si la carga consiste solamente de una inercia J (momento de) y de un amortiguador B (fricción), tal como se indica en la figure,1a ecuación de los pares puede ponerse:

J . (dwm/dt) + B. wm = T(t) (ca-4)

 

: http://82.166.171.228:8080/publicaciones/Modelica/modelica10.JPG

Las ecuaciones escritas serán las que se utilizaran en la simulación con Modelica, la tensión de alimentación del motor ea, es una constante,

model motor

Real T ;

Real im ;

Real em ;

Real wm;

parameter Real ea=1;

parameter Real Kt=1;

parameter Real Kb=1 ;

parameter Real Lm=0.6;

parameter Real Rm=1;

parameter Real J=0.1;

parameter Real B=0.01;

equation

T=Kt*im ;

em=Kb*wm;

Lm*der(im)+Rm*im+em=ea;

J*der(wm)+B*wm=T;

end motor ;

simulate ( motor, startTime=0, stopTime=10)

: http://82.166.171.228:8080/publicaciones/Modelica/modelica11.JPG

 

 

 

Servo motor de continua en un sistema que incluye el bobinado del campo.

 

Este modelo fue tomado de Simulation of D.C. Machines Transient Behaviors: Teaching and Research. O.I. Okoro, Ph.D., C.U. Ogbuka, B.Eng., and M.U. Agu, Ph.D. y es un modelo que tiene en cuenta el circuito del campo,

: http://82.166.171.228:8080/publicaciones/Modelica/modelica12.JPG

Parametros del servo motor de continua, motor excitado en forma separada .

Rf = 1.430 [Ohm]

Lf = 0.167 [H]

ef = 12 [V]

Rm = 0.013 [Ohm]

Lm = 0.01 [H]

Kb = 0.004 [N.m/A^2]

ea = 24 [V]

J = 0.21 [Kg.m^2]

B = 1.074.10^6 [N.m.s^2]

Nota: la corriente del campo era if, pero en Modelica no se puede usar como variable por lo que se utilizo ic.

 

model motor

Real T ;

Real im ;

Real wm ;

Real Kf ;

Real ic ;

parameter Real ea=24 ;

parameter Real ef=12;

parameter Real Kb=0.004 ;

parameter Real Lm=0.01 ;

parameter Real Rm=0.013 ;

parameter Real J=0.21 ;

parameter Real B=0.00000107 ;

parameter Real Rf= 1.43 ;

parameter Real Lf=0.167 ;

parameter Real Tl=2.4930 ;

equation

T=Kf*im ;

Kf=Kb*ic ;

Lm*der(im)+Rm*im+Kf*wm= ea ;

Tl+J*der(wm)+B*wm=T ;

ef = Rf*ic+Lf*der(ic) ;

end motor ;

El siguiente resultado fue obtenido por Okoro,

: http://82.166.171.228:8080/publicaciones/Modelica/modelica13.JPG

Respuesta obtenida con Modelica,

: http://82.166.171.228:8080/publicaciones/Modelica/modelica14.JPG

Eduardo Ghershman, 22.12.2013

Refencias,

Introducción a Modelica. Ernesto Kofman

Tour of Modelica

Sistemas dinámicos heterogéneos Modelado, simulación y optimización con Modelica Víctor M. Alfaro

Modelica