# Change C-script's parameters during simulation. It doesn't work...

1,486 views

Hi everyone!

I have built a generic discrete transfer function in a C-script.

This is the code:

Code declaration:

#define u Input(0)

#define y Output(0)

#define a ParamRealData(0,0)

#define b ParamRealData(1,0)

#define c ParamRealData(2,0)

#define alpha ParamRealData(3,0)

#define beta ParamRealData(4,0)

#define gamma ParamRealData(5,0)

#define K ParamRealData(6,0)

#define reset_value ParamRealData(7,0)

#define UL Input(1)

#define LL Input(2)

#define reset Input(3)

double u_prev_1,u_prev_2,y_prev_1,y_prev_2,y_unsat;

Start function:

y=0;

y_prev_1=0;

y_prev_2=0;

u_prev_1=0;

u_prev_2=0;

Output function:

if (reset==0)

{

y_unsat=-(b/a)*y_prev_1-(c/a)*y_prev_2+(K/a)*((alpha)*u+(beta)*u_prev_1+gamma*u_prev_2);

if (y_unsat < LL)

y = LL;

else if (y_unsat > UL)

y = UL;

else

y=y_unsat;

}

else

{

y=(reset_value/100)*LL;

}

Output(1)=K;

Update function:

y_prev_2=y_prev_1;

u_prev_2=u_prev_1;

y_prev_1=y;

u_prev_1=u;

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

Basically, it converts a 2nd order discrete transfer function in a Linear difference equation.

I write the parameters in the block mask and the C-script has a discrete sample time. (500e-6s)

I would like to change the gain K during simulation but I noticed that it doesn't change at all!

Is it possible? How can I solve ?

Thank you everyone!