simulink, switch problem

8 views (last 30 days)
aft
aft on 30 Jul 2011
Answered: Josco Kester on 10 Jan 2019
Hi, a little problem i m facing while using simulink. my time step is of 0.025s and i have a switch which says enter into my controller when t > 0.075, meaning that at t=0.1s onwards. Simulink does the simulations at the time values 0, 0.025, 0.05, but then 0.07500000000001 and enters into my controller. WHY ??? I am having an algebraic loop in my system, does it have anything to do with that ? but if i change my switch condition to 0.1 instead of 0.075, no problem.
thanx in advance,
khawaja

Answers (3)

Fangjun Jiang
Fangjun Jiang on 30 Jul 2011
I am not sure. Maybe you don't need to care about it. It might be floating point number precision thing, such as:
>> (0.025*3)==0.075
ans =
0
>> (0.025*4)==0.1
ans =
1

Prashant Srivastava
Prashant Srivastava on 30 Jul 2011
For algebraic loops error, you can connect a unit delay block between your input and the output(that you're reusing).

Josco Kester
Josco Kester on 10 Jan 2019
@aft, your problem exists because the duration of the time steps in Simulink unfortunately is NOT exact. This is caused by floating point round-off (see https://blogs.mathworks.com/simulink/2012/02/09/using-discrete-data-as-an-input-to-your-simulink-model/ ).
A work around in your case could be to use t > 0.08 as switch criterium. In any case avoid any exact criterium such as t > n*0.025. How that criterium behaves is NOT determined, because of the floating point round-off error. The criterium t > 0.1 could also give a problem next time...

Categories

Find more on Simulink in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!