bug 3796 fix: pb with tf2ss
[scilab.git] / scilab / modules / cacsd / tests / nonreg_tests / bug_3796.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2010 - INRIA - Serge Steer
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- JVM NOT MANDATORY -->
9
10 // <-- Non-regression test for bug 3796 -->
11 //
12 // <-- Bugzilla URL -->
13 // http://bugzilla.scilab.org/show_bug.cgi?id=3796
14 //
15 // <-- Short Description -->
16
17 //In some situation the "tf2ss()" function is not capable to compute
18 //correctly the state space representation of a transfer function.
19
20 s = poly(0,'s');
21
22 E  = 15.0 ;
23 Vo =  5.0 ;
24
25 D = Vo/E      ;
26 Delta_Vo = 0.1;
27 Ts = 1*10^(-3);
28 t_on = D*Ts ;
29 t_of = Ts-t_on;
30 Ro = 5.1 ;
31 L  = 2.28*10^(-3);
32
33 Error=0.1;    // ramp error desired
34 Delta_i_L=(E*(1-D)*D*Ts)/L;
35 C = (Delta_i_L*Ts)/(8*Delta_Vo);
36 fdt_Vo_d = syslin('c',E,((L*C)*s^(2)+(L/Ro)*s+1) );
37 fa0 = 50;        // [Hertz]
38 wa0 = 2*%pi*fa0; // [rad/sec] pulsation
39
40 Kc=1/(E*Error);
41 Ctipo=syslin('c',Kc,s);
42
43 K=10^(35/20);
44 ma=20;
45 wta=0.8;
46 Ca=syslin('c',1+(wta/wa0)*s,1+s*(wta/wa0)/ma);
47 Cds = K*Ctipo*Ca*Ca;
48 Lds = Cds*fdt_Vo_d;
49 uno = syslin('c',1,1);
50 Wds =Lds/.uno;
51
52 Wds_ss = tf2ss(Wds);
53 if size(Wds_ss.A)<>5 then pause,end