Indice Scilab

 

Existen una serie de comandos, que, aun no siendo específicos de la Ingeniería de Control, se utilizan constantemente en este área, y por ello los estudiamos en este apartado. Scilab realiza por defecto las simplificaciones (cancelaciones polo-cero) que se puedan producir al realizar operaciones con FTs, sin embargo, se puede desactivar esta opción con el comando simp_mode(%f) si así se desea (simp_mode(%t) para reactivar). Con los comandos simp, trfmod y clean se pueden realizar algunas reducciones y simplificaciones de FTs:

En un primer lugar se pueden estudiar una serie de comandos que permiten la definición y manipulado de FTs:
     --> s=poly(0,’s’);                                   // definición de la variable s

--> g1=syslin(’c’,num,den);                 // definición de una FT a partir de los polinomios numerador y denominador

--> g=syslin(’c’,(s+1)/(s^2+s+1))          // definición de una FT de forma directa

g =

        1 + s

      ----------  

      1 + s + s2

--> p=roots(denom(g))                          // polos de la FT g

p =

      ¡ -0.5 + 0.866025i !

      ¡ -0.5 - 0.866025i !

--> p=roots(g.den);                             // lo mismo que la anterior

--> z=roots(numer(g));                        // ceros de la FT g (también z=roots(g.num);)

--> plzr(g)                                           // dibuja el mapa de polos y ceros de g

--> gan=horner(g,0)                            // ganancia de la FT g (ganancia a baja frecuencia)

Scilab realiza por defecto las simplificaciones (cancelaciones polo-cero) que se puedan producir al realizar operaciones con FTs, sin embargo, se puede desactivar esta opción con el comando simp_mode(%f) si así se desea (simp_mode(%t) para reactivar). Con los comandos simp, trfmod y clean se pueden realizar algunas reducciones y simplificaciones de FTs:

--> simp_mode(%f)                             // desactiva la cancelación por defecto

--> g1=g/(s+1)

g1 =

             1 + s

      -------------------  

      1 + 2s + 2s2 + s3

     --> g1red=trfmod(g1)                         // abre una ventana interactiva que permite cancelar parejas polo-cero de forma manual

g1red =

           1

      -----------  

      1 + s +s2

--> simp_mode(%t)              // activa la cancelación por defecto

--> g1red2=simp(g1);           // realiza cancelación de parejas polo-cero existentes

--> clean(g)                         // realiza un redondeo a cero de valores pequeños 

Mediante los comandos csim(u,t,g) y plot2d(t,y) se pueden obtener las respuestas temporales ante entrada escalón unitario o impulso de sistemas representados mediante sus FTs:

--> t=0:0.05:5;                    // definición del vector de tiempo

--> y=csim(’step’,t,g);           // vector de salida en LA ante entrada escalón

--> plot2d(t,y)                     

--> plot(t,y)                         // equivalente al anterior en versión 4.1.2 y posteriores

--> h=2;gla=g*h;                 // definición de la realimentación y de la FTLA

--> glc=g/.h                          // obtención de la FTLC

glc =

         1 + s

      -----------  

      3 + 3s + s2

--> ylc=csim(’step’,t,glc);                        // vector de salida en LC ante entrada escalón

                                                            // creación de la ventana 1 y representación de la salida en LC

--> xset(’window’,1); plot2d(t,ylc)            

--> f1=figure();scf(f1);plot(t,ylc)              //equivalente al anterior en  versión 4.1.2 y posteriores

                                                             // salida en LA ante entrada impulso

--> y=csim(’impulse’,t,g); plot2d(t,y)        

--> y=csim(’impulse’,t,g); plot(t,y)           //equivalente al anterior en versión 4.1.2 y posteriores

Y si se desea calcular la respuesta del mismo sistema ante una entrada definida por el usuario, será necesario primero definirla. Sea, por ejemplo, un pulso de altura 100 unidades y anchura 0.01 (desde 0 seg. hasta 0.01 seg.):

--> t1=0:0.001:0.01; u1=100*ones(t1);

--> t2=0.011:0.001:5; u2=zeros(t2);

--> t=[t1 t2]; u=[u1 u2];

     --> y=csim(u,t,g); plot2d(t,y)              

     --> y=csim(u,t,g); plot(t,y)                  //equivalente al anterior en  versión 4.1.2 y posteriores

Si se desea obtener las coordenadas de un punto de una gráfica se puede utilizar la función locate:

--> x=locate(2)                      // se almacena en x las coordenadas de los dos puntos que se pinchan con el ratón (en la 1ª fila los valores de la abcisa y en la 2ª de la ordenada)

Para obtener los valores de la ganancia que hacen críticamente estable al sistema en lazo cerrado se usa la función kpure:

     --> k=kpure(gla)


Para la obtención del LR se dispone del comando evans, y para el cálculo del valor de la ganancia de la cadena directa K para la cual un punto del LR es polo del sistema en LC se puede realizar las operaciones que se detallan a continuación:

--> xset(’window’,2); evans(gla,10)                                   // creación de la ventana 2, y LR de gla (Kmáx=10)

--> f2=figure();scf(f2); evans(gla,10)                                //equivalente al anterior en  versión 4.1.2 y posteriores

     --> polo=[1 %i]*locate(1);k=-1/real(horner(gla,polo))       // obtención del punto (polo) del LR pinchado con el ratón y c álculo del valor de la ganancia K para la cual ese punto es polo en LC (pertenece al LR)