Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Simulink controlling problem, i want to make a action that conteracts the logic that triggers the action.

Asked by Sam on 12 Apr 2013

Hello,

I need some help with an issue in Simulink, it requires a bit of explanation:

I am doing a project where i am using Simulink in collabroation with another program to run some co-simulation. The run time of the simulation is e.g. 10 seconds with a 0.1 second step. I have built a control system in simulink which activates a given maneuver if certian conditions are met. An example could be:

If X is < -10 add 1 to X.

Now, the issue i have is i want to keep adding the 1 to X in let us say the next 10 steps, even though the conditions are not met (X is not < - 10 anymore) the next time the loop is run. Meaning that after the conditions are met, the logic (if X is < -10 add 1 to X) is ignored and the action is repeated 10 times (10 steps).

I know that the action conteracts the logic that triggers the action and i am wondering if this is even possible?

Hope the issue is clear and that you can help.

Best regards Sam

1 Comment

Sam on 19 Apr 2013

Hmm, is there really no one who has an idea if this is possible? I would think this is done often in controls, but i'm not sure.

Is the question not elaborated enough?

Thanks, Sam

Sam

Products

2 Answers

Answer by Kaustubha Govind on 22 Apr 2013

I think this should be possible. How about you use an Enabled Subsystem containing a Counter that outputs "true" for exactly 9 time-steps after it is enabled. The Counter's states must be reset when the subsystem is disabled. The control signal to the enabled subsystem should be an OR condition of (X<-10) and the output of the Counter. The same control signal can also be used in an "if-else" type construct (you could use a Switch block for this) to figure out whether to output (X) or (X+1).

0 Comments

Kaustubha Govind
Answer by Neelakanda Bharathiraja on 22 Apr 2013

The simple solution is modifying the condition itself. For you example : If X is < (-10+10) add 1 to X. The same is applicable for your controller model.

If you don't want to modify the condition and you want the co-simulation continue to run, then you might have to change the simulation speed of your model.

0 Comments

Neelakanda Bharathiraja

Contact us