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
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).
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.
Play games and win prizes!Learn more