Modelos de Sistemas Continuos con
Ing. Rafael A. Díaz Chacón
U.C.V.
V
RAD/99
Casos de Estudio N° 20, 21 y 22
RAD/99
La Ecuación Diferencial debe expresarse como una ecuación de estado
SS[I] representa a la variable de estado I
DD[I] representa a la derivada de la variable de estado I
DDd
dtSS[ ] [ ]I I
ay by f t ( ) a DD b SS USERF* [ ] * [ ] ( )I I 1
Ecuaciones Diferenciales en SLAM: Definiciones
RAD/99
Ecuaciones Diferenciales en SLAM: Ejemplos
dy
dty t
kdy
dty f t
d
dtp t p t p t
d
dtp t p t p t p t
d
dtp t p t p t
1
2 2 5
2 4 5 2 5
2 2 5
0 0 1
0 0 1 2
2 1 2
( )
( ) * ( ) . * ( )
( ) * ( ) . * ( ) . * ( )
( ) * ( ) . * ( )
DD =-SS +TNOW+ [1] [1] 1
DD = -SS +USERF k [1] [1]( ( )) /1
DD =- SS + SS
DD = SS + SS
DD = SS SS
[1] [1]
[2] [1]- 4.5*SS[2]
[3] [2]
2 2 5 2
2 2 5 3
2 2 5 3
* . * [ ]
* . * [ ]
* . * [ ]
RAD/99
Ecuaciones Diferenciales en SLAM: Ejemplos
d
dt
g
lsin
2
2 0 DD =SS
DD g l sin SS
[1] [2]
[2] ( / ) * ( [ ])1
DD =SS
DD = k m SS SS USERF m
DD =SS
DD = k m SS SS
[1]
[2] [1] -
[3]
[4] [1]
[ ]
( / ) *( [ ]) ( ) /
[ ]
( / ) *( [ ])
2
3 1
4
3
1 1
2
md
dtx k x x F
md
dtx k x x
1
2
2 1 1 2
2
2
2 2 1 2
( )
( )
RAD/99
Ecuaciones Diferenciales en SLAM: Eventos de Estado
SEVNT,CODIGO,VARIABLE,DIRECCION,UMBRAL,TOLERANCIA
Ejemplos
SEVNT,1,SS[1],XP,0.7,0.1;
SEVNT,2,SS[2],XN,SS[1],0.07;
SEVNT,3,DD[4],X,0.0,0.0;
SEVNT,4,NNQ(1),XP,XX[7],0.0;
RAD/99
Ecuaciones Diferenciales en SLAM: Eventos de Estado… (Ejemplo)
SEVNT,1,SS[1],XP,XX[1],0.0;
1.- En un tanque con capacidad C que debe llenarse desde un nivel C0 según un caudal Q, no se puede sobrepasar la capacidad C ya que se desborda el tanque.
Sea SS[1] el volumen del tanque y sea XX[1] la capacidad del tanque. Entonces el evento 1 se da cuando la variable SS[1] pasa
en la dirección positiva el umbral XX[1].
RAD/99
Ecuaciones Diferenciales en SLAM: Eventos de Estado… (Ejemplo)
SEVNT,2,SS[2],XP,XX[11],0.0;
2.- En un circuito RLC serie, cuando la tensión sobre el condensador iguala por primera vez a la tensión de alimentación ocurre un corto circuito en la fuente.
Sea SS[1] la tensión sobre el condensador y sea XX[11] la tensión de alimentación. Entonces el evento 2 se da cuando la variable SS[1] pasa en
la dirección positiva el umbral XX[11].
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
“Para el circuito RC serie de la figura se desea conocer la tensión VC(t) sobre el condensador al conectar la fuente de tensión V(t) en t = 0.”
R
CV(t)
i(t)
VC(t)+ +
S
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Datos del problema (en DATA20.DAT)
DATOS_DEL_EJEMPLO_20_EN_EL_ARCHIVO_DATA20.DATalimentacion(v) 10 resistencia(ohms) 10capacitancia(farad) 0.1tension(v) 5 frecuencia(h) 1inicio(%_de_TTFIN) 0.2fin(%_de_TTFIN) 0.7pulso_en_ON 0.5pulso_en_OFF 0.5 selector 4
“Este archivo de datos ha sido editado para esta lámina”
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Significado de los datos del problema
alimentacion(v) Amplitud de la Tensión V(t) resistencia(ohms) Resistencia Rcapacitancia(farad) Capacitancia Ctension(v) Tensión inicial en C (VC(0)) frecuencia(h) frecuencia de una onda senoidalinicio(%_de_TTFIN) inicio de pulso de alimentaciónfin(%_de_TTFIN) fin de pulso de alimentaciónpulso_en_ON duración de pulso en ONpulso_en_OFF duración de pulso en OFFselector selector de la señal de alimentación
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Selector de la señal de alimentación
Los posibles valores para el selector de la señal de alimentación son los siguientes:
1.- Señal constante. V(t) = A
2.- Señal senoidal. V(t) = A*sin(2ft)
3.- Pulso rectangular.V(t) = A si ti < t < tf
A si t tON
4.- Tren de pulsos rectangulares. V(t) =
0 si t tOFF
{
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Definición de variables y funciones en C
#include "vslam.h"#include <math.h>#include <stdio.h>
void lectura (void);
float Constante, amplitud, resistencia, capacitancia;float tinicial,int selector;float frecuencia, inicio, fin, pulso;int entero;float tiempo, inipulso, finpulso;ENTITY *pecur;
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Inicialización y lectura de datos (I)
BOOL SWFUNC INTLC(UINT uiRun){lectura ( );//Calculo de valores inicialesXX[3] = inipulso;XX[4] = finpulso;Constante = resistencia*capacitancia;SS[1]=tinicial;return(TRUE);}
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Inicialización y lectura de datos (II)
void lectura (void){char etiqueta[100];FILE *fp;
fp=fopen("c:/projects/casos/data20.dat","r");fscanf(fp,"%s ",etiqueta);fscanf(fp,"%s %f",etiqueta, &litud);fscanf(fp,"%s %f",etiqueta, &resistencia);fscanf(fp,"%s %f",etiqueta, &capacitancia);fscanf(fp,"%s %f",etiqueta, &tinicial);fscanf(fp,"%s %f",etiqueta, &frecuencia);fscanf(fp,"%s %f",etiqueta, &inicio);fscanf(fp,"%s %f",etiqueta, &fin);fscanf(fp,"%s %f",etiqueta, &inipulso);fscanf(fp,"%s %f",etiqueta, &finpulso);fscanf(fp,"%s %d",etiqueta, &selector);fclose(fp);return;}
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Ecuación de estado y función STATE
void SWFUNC STATE (void){DD[1]=(-SS[1]+USERF(selector,pecur))/Constante;XX[1]=SS[1];XX[2]=capacitancia*DD[1];return;}
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Función USERF
double USERF (int IFN, ENTITY *pecur){double retorno;
switch (IFN){ case 1://ALIMENTACION CONSTANTE retorno = amplitud; break; case 2://ALIMENTACION SENOIDAL retorno = amplitud*sin(6.28*TNOW*frecuencia); break;………..
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Función USERF (Cont.)
….. case 3://ALIMENTACION CON UN PULSO RECTANGULAR if(TNOW >= (inicio*TTFIN) && TNOW < (fin*TTFIN)) retorno = amplitud; else retorno = 0; break; ………...
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Función USERF (Cont.)
………..case 4://ALIMENTACION CON UN TREN DE PULSOS RECTANGULARES pulso = XX[3]+XX[4]; entero = TNOW/pulso; tiempo = TNOW - pulso*entero; if(tiempo <= XX[3]) retorno = amplitud; if(tiempo > XX[3] && tiempo <= pulso) retorno = 0; break; } XX[0] = retorno;return (retorno);}
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Programa de control
GEN,"RAFAEL DIAZ","CASO DE ESTUDIO N° 20",26/4/99,1,YES,YES;LIMITS,5;CONTINUOUS,1,-1,0.01,0.1,,WARNING;RECORD,1,,TNOW,"TIME",{AWESIM},,TTBEG,TTFIN, ,{{XX[1],"TENSION EN EL CONDENSADOR",}, {XX[2],"CORRIENTE",},{XX[0],"SEÑAL DE ENTRADA",}};INITIALIZE,0.0,10,YES;FIN;
“Este programa ha sido editado para esta lámina”
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Resultados (selector = 1)
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Resultados (selector = 2)
Caso de Estudio N° 20: Circuito RC Serie
RAD/99
Resultados (selector = 3)
VC(0) = 5 -->
Caso de Estudio N° 20: Circuito RC Serie
Resultados (selector = 4)
RAD/99
Caso de Estudio N° 21: Otro circuito RC
RAD/99
“Para el circuito de la figura se desea conocer la tensión VC(t). En t = t0 se abre el interruptor S.”
R1
CV(t)
i(t)VC(t)
+ +
S
R2
RAD/99
Datos del problema (en DATA21.DAT)
DATOS_DEL_EJEMPLO_21_EN_EL_ARCHIVO_DATA21.DATalimentacion(v) 1 resistencia1(ohms) 1resistencia2(ohms) 2capacitancia(farad) 1tension(v) 0 tcambio(seg) 2 frecuencia(h) 1inicio(%_de_TTFIN) 0.1fin(%_de_TTFIN) 0.15pulso_en_ON 0.5pulso_en_OFF 0.5 selector 3
“Este archivo de datos ha sido editado para esta lámina”
Caso de Estudio N° 21: Otro circuito RC
RAD/99
Significado de los datos del problema
alimentacion(v) Amplitud de la Tensión V(t) resistencia1(ohms) Resistencia R1
resistencia2(ohms) Resistencia R2
capacitancia(farad) Capacitancia Ctension(v) Tensión inicial en C (VC(0))tcambio(seg) Instante de abrir el interruptor Sfrecuencia(h) frecuencia de una onda senoidalinicio(%_de_TTFIN) inicio de pulso de alimentaciónfin(%_de_TTFIN) fin de pulso de alimentaciónpulso_en_ON duración de pulso en ONpulso_en_OFF duración de pulso en OFFselector selector de la señal de alimentación
Caso de Estudio N° 21: Otro circuito RC
RAD/99
Selector de la señal de alimentación
Los posibles valores para el selector de la señal de alimentación son los siguientes:
1.- Señal constante. V(t) = A
2.- Señal senoidal. V(t) = A*sin(2ft)
3.- Pulso rectangular.V(t) = A si ti < t < tf
A si t tON
4.- Tren de pulsos rectangulares. V(t) =
0 si t tOFF
{
Caso de Estudio N° 21: Otro circuito RC
RAD/99
Definición de variables y funciones en C
Caso de Estudio N° 21: Otro circuito RC
#include "vslam.h"#include <math.h>#include <stdio.h>
void lectura (void);
float Constante1, Constante2, Constante3;float amplitud, resistencia1, resistencia2;float capacitancia, tinicial, tcambio;int selector;float frecuencia, inicio, fin, pulso;int entero;float tiempo, inipulso, finpulso;ENTITY *pecur;
RAD/99
Inicialización y lectura de datos (I)
Caso de Estudio N° 21: Otro circuito RC
BOOL SWFUNC INTLC(UINT uiRun){lectura ( );//Calculo de valores inicialesXX[3] = inipulso;XX[4] = finpulso;Constante1 = resistencia1*capacitancia;Constante2 = resistencia2*capacitancia;Constante3 = 1.+(resistencia1/resistencia2);SS[1]=tinicial;return(TRUE);}
RAD/99
Inicialización y lectura de datos (II)
Caso de Estudio N° 21: Otro circuito RC
void lectura (void) {char etiqueta[100];FILE *fp;fp=fopen("c:/projects/casos/data21.dat","r");fscanf(fp,"%s ",etiqueta);fscanf(fp,"%s %f",etiqueta, &litud);fscanf(fp,"%s %f",etiqueta, &resistencia1);fscanf(fp,"%s %f",etiqueta, &resistencia2);fscanf(fp,"%s %f",etiqueta, &capacitancia);fscanf(fp,"%s %f",etiqueta, &tinicial);fscanf(fp,"%s %f",etiqueta, &tcambio);fscanf(fp,"%s %f",etiqueta, &frecuencia);fscanf(fp,"%s %f",etiqueta, &inicio);fscanf(fp,"%s %f",etiqueta, &fin);fscanf(fp,"%s %f",etiqueta, &inipulso);fscanf(fp,"%s %f",etiqueta, &finpulso);fscanf(fp,"%s %d",etiqueta, &selector);fclose(fp);return; }
RAD/99
Ecuación de estado y función STATE
Caso de Estudio N° 21: Otro circuito RC
void SWFUNC STATE (void){if(TNOW <= tcambio) DD[1]=(-SS[1]*Constante3+USERF(selector,pecur))/Constante1;else{ DD[1] = (-SS[1])/Constante2;}XX[1]=SS[1];XX[2]=capacitancia*DD[1];return;}
RAD/99
Programa de control“Este programa ha sido editado para esta lámina”
Caso de Estudio N° 21: Otro circuito RC
GEN,"RAFAEL DIAZ","CASO DE ESTUDIO N° 21",3/5/99,1,YES,YES;LIMITS,5;CONTINUOUS,1,-1,0.01,0.1,,WARNING;RECORD,1,,TNOW,"TIME",{AWESIM},,TTBEG,TTFIN, ,{{XX[1],"TENSION EN EL CONDENSADOR",}, {XX[2],"CORRIENTE",},{XX[0],"SEÑAL DE ENTRADA",}};INITIALIZE,0.0,10,YES;FIN;
RAD/99
Caso de Estudio N° 21: Otro circuito RC
Resultados (selector = 1)
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
“En un sistema de colas donde sólo hay espacio de espera para un usuario se desean conocer las probabilidades de N, número de usuarios en el sistema, en función del tiempo. Los posibles valores de N serán, entonces, 0, 1 y 2. El proceso de llegadas es Poisson y el tiempo de servicio sigue una distribución exponencial”
SERVICIO
COLA DE ESPERA SALIDALLEGADAS
! MÁXIMO UN USUARIO !
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
“Los datos requeridos para este caso de estudio son las tasas de llegada y de servicio, TLL y TS, y
los valores iniciales de las probabilidades.”
Si pn(t) es la probabilidad de tener n usuarios en el sistema, las ecuaciones que rigen el
comportamiento del mismo serán:d
dtp t T p t T p t
d
dtp t T p t T T p t T p t
d
dtp t T p t T p t
LL S
LL LL S S
LL S
0 0 1
1 0 1 2
2 1 2
( ) ( ) ( )
( ) ( ) ( ) ( ) ( )
( ) ( ) ( )
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Datos del problema (en DATA22.DAT)“Este archivo de datos ha sido editado para esta lámina”
DATOS_DEL_EJEMPLO_22_EN_EL_ARCHIVO_DATA22.DAT
tasa_de_llegadas 7 tasa_de_servicio 2.5 P0_INICIAL 1 P1_INICIAL 0 P2_INICIAL 0
T
TLL
S
7
2 52 8
..
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Definición de variables y funciones en C
#include "vslam.h"#include <math.h>#include <stdio.h>
void lectura (void);
float Tllegadas;float Tservicio;float P0;float P1;float P2;float A[4][4];
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Inicialización y lectura de datos (I)
BOOL SWFUNC INTLC(UINT uiRun){lectura ( );//Calculo de valores inicialesA[1][1] = -Tllegadas;A[1][2] = Tservicio;A[1][3] = 0;A[2][1] = Tllegadas;A[2][2] = -(Tllegadas+Tservicio);A[2][3] = Tservicio;A[3][1] = 0;A[3][2] = Tllegadas;A[3][3] = -Tservicio;SS[1]=P0;SS[2]=P1;SS[3]=P2;return(TRUE);}
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Inicialización y lectura de datos (II)
void lectura (void){char etiqueta[100], car;FILE *fp;fp=fopen("c:/projects/casos/data22.dat","r");fscanf(fp,"%s ",etiqueta);fscanf(fp,"%s %f",etiqueta, &Tllegadas);fscanf(fp,"%s %f",etiqueta, &Tservicio);fscanf(fp,"%s %f",etiqueta, &P0);fscanf(fp,"%s %f",etiqueta, &P1);fscanf(fp,"%s %f",etiqueta, &P2);fclose(fp);return;}
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Ecuación de estado y función STATE
void SWFUNC STATE (void) {int fila, columna;for(fila = 1; fila<= 3;fila++){XX[fila] = 0;for(columna = 1; columna<= 3;columna++){XX[fila] = XX[fila]+A[fila][columna]*SS[columna];}DD[fila] = XX[fila];}return; }
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Programa de control“Este programa ha sido editado para esta lámina”
GEN,"RAFAEL DIAZ","CASO DE ESTUDIO N° 22",3/5/99,1,YES,YES;LIMITS,5;CONTINUOUS,3,-1,0.001,0.01,,WARNING;RECORD,1,,TNOW,"TIME",{AWESIM},,TTBEG,TTFIN, ,{{SS[1],"PROB DEL ESTADO CERO",}, {SS[2],"PROB DEL ESTADO UNO",}, {SS[3],"PROB DEL ESTADO DOS",}};INITIALIZE,0.0,2,YES;FIN;
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Resultados ( = 2.8)
p0 2 0 086( ) .
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Resultados ( = 2.8)
p1 2 0 241( ) .
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Resultados ( = 2.8)
p2 2 0 674( ) .
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Resultados ( = 0.5)
p0 2 0 577( ) .
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Resultados ( = 0.5)
p1 2 0 284( ) .
Caso de Estudio N° 22: Cambios de estado en un sistema M/M/1/1
RAD/99
Resultados ( = 0.5)
p2 2 0139( ) .