Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelado Simulink
Modelado Simulink
Objetivos:
Hallar el modelo matemtico del sistema, empleando las herramientas de MATLAB
aplicar el controlador PI
Convertir el modelo matemtico en tiempo continuo a tiempo discreto
Implementarlo en un microcontrolador, (se trabaj con la serie 18F45xx)
Para realizar encontrar un modelo matemtico de un sistema se requiere por lo menos una
variable a controlar: un nuestro caso es la temperatura. Para ello se consider lo siguiente:
422 muestras.
Fuentes de alimentacin 11.5 V.
Los datos se adquirieron cada 5 segundos.
Como se har con la ayuda del software de MATLAB, se empezar por introducir los datos
considerados en forma de vector.
>> T = [28.3157 28.3157 28.3157 28.3157 ... 30.7567 30.7567 33.1977 33.1977];
>> V = 11.5*ones(size(T));
>> t = (0:5:2105);
>> plot(t,T,'k')
>> ylabel('Temperatura')
>> xlabel('Tiempo')
>> ylabel('Temperatura')
>> title('grafica del comportamiento del horno')
En la figura anterior se puede observar el comportamiento del sistema con respecto al tiempo.
A continuacin se emplear la herramienta indent de MATLAB.
>> ident
Aparecer la ventana principal daremos clic Import data >> Time domain data, nos
aparecer otra ventana en la cual solo modificaremos los siguientes datos:
1. Workspace variable
Input: v
Output: T
2. Data information
Data name: horno
Starting time: 0
Sampling interval: 5
3. Input properties
4. Cannel names
5. Physical units or variables
6. Notes
Despus importamos y cerramos la ventana. Y si queremos ver el comportamiento de
modelo con respecto al tiempo tenemos:
La grafica anterior fue graficado con los datos que adquirimos, ahora precederemos hacer el
modelado, para ello aremos clic en: estmate >> process models
Considerando que el sistema es de primer orden, y que el tiempo en retardos es muy
mequeo deseleccionaremos la opcin de delay, y le damos estimular. No aparecern dos
valores la k y tp1.
Tiene opciones de la cual daremos que grafique la de adquisicin de datos con la del
modelado y tenemos la siguiente grafica (model output).
( )
l
A esta ventana daremos clic en: System Data la cual abrir una ventana ms en donde
daremos clic en Browse de la nueva ventana seleccionamos Workspace, la letra H, luego
damos import y por ultimo close.
De la ventana principal de sositool aremos clic en la pestaa Automated Tuning, aparecer
una caja de texto desplegable, y seleccionaremos PID Tuning.
De esta ventana, al revisar el modelado se observ que no se requiere la parte derivativa, por
lo tanto se seleccionar la opcin PI y daremos clic en la pestaa Update Compensador y listo.
Ya tenemos el compensador.
La funcin queda de la siguiente forma: ( )
Lo que sigue es ordenar la ecuacin de tal forma que quede en trminos de z-1
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
Por lo tanto el modelo matemtico del sistema expresado en tiempo discreto es:
Para modificar las ganancias de nuestro sistema damos doble clic sobre el icono de PI y nos
aparecer la siguiente ventana: a la ventana actual seleccionamos el tipo de controlador la cual
ser PI y damos clic en la pestaa tune..
Si lo queremos ms rpido entonces nos atenemos a un sobre tiro pero igual veremos
que tanto seria.
U[n]
U[n-1]
E[n]
E[n-1]
seal actual
seal anterior
error actual
error anterior
funcin
PWM
Seal del lm35
Temperatura a alcanzar
Seal de referencia
include <18f4520.h>
CCP_1 = 2000;
setup_timer_1(T1_INTERNAL |
CCP2C1
T1_DIV_BY_1);
#device adc = 10
#use delay(clock = 8MHz)
setup_ccp1(CCP_COMPARE_RESET_TIM
#define c1 0.1533
ER);
#define c2 0.1531
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
while(TRUE) { }
se_act=0, se_ant;
void main() {
#INT_CCP1
setup_adc_ports(AN0_TO_AN1 |
VSS_VREF);
void reloj() {
set_adc_channel(0); delay_us(25);
setup_adc(ADC_CLOCK_INTERNAL);
tem = read_adc()/10.24;
setup_timer_2(T2_DIV_BY_1,255,1);
set_adc_channel(1); delay_us(25);
setup_ccp2(CCP_PWM);
ref = read_adc()/10.24;
set_pwm2_duty((int16) se_act);
se_ant = se_act;
Pero si lo que queremos es emplear la formula general para poder introducir kp y ki, se
empleara el siguiente cdigo.
#include <18f4520.h>
#fuses HS, NOWDT, CCP2C1
#device adc = 10
#use delay(clock = 8MHz)
#use standard_io(e)
#define kp 100
#define ki 50
#define ts 0.001
float tem,ref,err_act=0,err_ant,se_act=0,se_ant;
void main(){
setup_adc_ports(AN0 | VSS_VREF);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_2(T2_DIV_BY_1,255,1);
port_b_pullups(TRUE);
setup_ccp2(CCP_PWM);
CCP_1 = 1000;
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
setup_ccp1(CCP_COMPARE_RESET_TIMER);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
while(TRUE){ };
}
#INT_CCP1
void reloj() {
set_adc_channel(0); delay_us(25);
tem = read_adc()/10.24;
set_adc_channel(1); delay_us(25);
ref = read_adc()/10.24;
err_ant = err_act;
err_act = ref - tem;
se_ant = se_act;
se_act = se_ant + ((kp+(ts*ki/2))*err_act) + (((ts*ki/2)-kp)*err_ant);
se_act = (se_act < 0.0) ? 0.0 : ((se_act > 1023.0) ? 1023.0 : se_act);{
set_pwm2_duty((int16) se_act); }
}
28.3157 28.3157 28.3157 28.3157 27.3393 27.3393 27.3393 27.3393 27.8275 27.8275 27.3393
27.3393 27.3393 27.3393 27.8275 27.8275 28.3157 28.3157 27.3393 27.3393 27.8275 27.8275
27.8275 27.8275 28.8039 28.8039 28.3157 28.3157 28.8039 28.8039 28.3157 28.3157 27.8275
27.8275 28.3157 28.3157 27.8275 27.8275 28.3157 28.3157 29.2921 29.2921 27.8275 27.8275
27.8275 27.8275 27.8275 27.8275 28.8039 28.8039 28.3157 28.3157 28.8039 28.8039 28.8039
28.8039 27.8275 27.8275 28.8039 28.8039 27.8275 27.8275 28.8039 28.8039 28.3157 28.3157
29.2921 29.2921 28.3157 28.3157 28.8039 28.8039 27.8275 27.8275 28.3157 28.3157 28.8039
28.8039 27.8275 27.8275 28.3157 28.3157 28.8039 28.8039 28.3157 28.3157 28.8039 28.8039
28.3157 28.3157 29.2921 29.2921 28.3157 28.3157 28.8039 28.8039 28.8039 28.8039 28.3157
28.3157 28.8039 28.8039 28.8039 28.8039 28.8039 28.8039 28.8039 28.8039 29.2921 29.2921
28.8039 28.8039 28.3157 28.3157 28.8039 28.8039 28.8039 28.8039 28.8039 28.8039 29.7803
29.7803 28.8039 28.8039 27.8275 27.8275 28.8039 28.8039 29.2921 29.2921 29.2921 29.2921
29.7803 29.7803 29.2921 29.2921 28.8039 28.8039 28.8039 28.8039 29.2921 29.292 28.8039
28.8039 29.2921 29.2921 28.8039 28.8039 29.7803 29.7803 30.268 30.2685 29.7803 29.7803
30.2685 30.2685 28.8039 28.8039 29.7803 29.7803 29.780 29.7803 29.2921 29.2921 28.8039
28.8039 29.7803 29.7803 29.7803 29.7803 29.7803 29.7803 29.2921 29.2921 29.7803 29.7803
30.2685 30.2685 29.2921 29.2921 28.8039 28.8039 29.2921 29.2921 29.2921 29.2921 31.7331
31.7331 31.7331 31.7331 29.2921 29.2921 28.8039 28.8039 29.7803 29.7803 29.2921 29.2921
29.7803 29.7803 29.7803 29.7803 29.7803 29.7803 30.2685 30.2685 29.2921 29.2921 30.2685
30.2685 29.7803 29.7803 28.8039 28.8039 29.7803 29.7803 29.7803 29.7803 29.7803 29.7803
29.2921 29.2921 29.7803 29.7803 29.7803 29.7803 29.2921 29.2921 30.268 30.2685 29.7803
29.7803 29.7803 29.7803 29.2921 29.2921 29.7803 29.7803 29.7803 29.7803 29.7803 29.7803
30.2685 30.2685 30.2685 30.2685 29.7803 29.7803 29.7803 29.7803 30.2685 30.2685 29.7803
29.7803 30.2685 30.2685 29.7803 29.7803 29.7803 29.7803 30.2685 30.2685 29.2921 29.2921
29.2921 29.2921 29.7803 29.7803 29.7803 29.7803 29.7803 29.7803 29.7803 29.7803 29.2921
29.2921 29.7803 29.7803 30.7567 30.7567 30.2685 30.2685 29.2921 29.2921 30.2685 30.2685
30.7567 30.7567 30.2685 30.2685 29.7803 29.7803 30.7567 30.7567 30.2685 30.268 30.7567
30.7567 29.7803 29.7803 29.7803 29.7803 30.7567 30.7567 30.7567 30.7567 30.2685 30.2685
29.7803 29.7803 30.7567 30.7567 30.7567 30.7567 30.7567 30.7567 30.7567 30.7567 30.7567
30.7567 30.2685 30.2685 31.2449 31.2449 30.2685 30.2685 31.2449 31.2449 31.2449 31.2449
30.2685 30.2685 30.2685 30.2685 30.7567 30.7567 30.7567 30.7567 30.7567 30.7567 31.2449
31.2449 31.2449 31.2449 30.2685 30.2685 31.2449 31.2449 31.2449 31.2449 30.7567 30.7567
31.2449 31.2449 31.2449 31.2449 30.7567 30.7567 30.7567 30.7567 30.7567 30.7567 31.2449
31.2449 31.7331 31.7331 31.2449 31.2449 31.2449 31.2449 30.7567 30.7567 31.2449 31.2449
31.2449 31.2449 30.7567 30.7567 31.2449 31.2449 30.7567 30.7567 30.7567 30.7567 31.2449
31.2449 30.7567 30.7567 31.2449 31.2449 31.7331 31.7331 31.2449 31.2449 30.7567 30.7567
30.7567 30.7567 30.7567 30.7567 30.2685 30.2685 30.7567 30.7567 31.2449 31.2449 31.7331
31.7331 30.2685 30.2685 31.2449 31.2449 30.2685 30.2685 30.7567 30.7567 30.7567 30.7567
30.7567 30.7567 33.1977 33.1977
, tenemos:
(
)
(
(
)
( )
( ( )
( )
(
( )
( )
(
(
)
( )
(
( )
( )
) ( )
)
(
( )
) ( )
( )
( )
) ( )