Change/reset initial state values in a level 2 C-mex S-function
19 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Marcus
am 21 Jul. 2012
Kommentiert: Sebastián Gómez Jorge
am 2 Aug. 2023
Hi all! I'm creating a simulation with level 2 c-mex s-function, and I need to change some state values, when some conditions are verified. How can I do that? I read about the enabled subsystem, but I don't know how it works, and also I don't know if there is something faster that do the same thing.
Can you help me?
Thanks in advance!
0 Kommentare
Akzeptierte Antwort
Ryan G
am 24 Jul. 2012
If you wrote or have the c-code for the s-function you can simply add another input and write a conditional to reset the data when that condition is verified.
1 Kommentar
Pan Zhao
am 22 Jun. 2017
I was wondering whether this way really works. I tried this method and met the same problem Michael met (see the answer from Michael below and my comment under that) .
Weitere Antworten (3)
Michael Walker
am 16 Mai 2014
I have a similar problem, but the evaluation of the variable that triggers the reset is done inside the S-function itself. The problem I'm having is that I can't figure out how to actually reset a continuous state value. Although Simulink seems to let me change the value of variables I fetch with ssGetContStates(S), then next time those state values are needed (again invoking ssGetContStates(S)) they've reverted back to an integrated value of the original initial condition. How do I get this to work?
2 Kommentare
Pan Zhao
am 21 Jun. 2017
I have the same problem. Although we can set the ContStates in a S function, they revert to the integrated value of the original initial condition one sampling interval after the setting. Was wondering how we can really reset the states.
Sebastián Gómez Jorge
am 2 Aug. 2023
Same problem and there seems to be no solution. I tired reseting the cont states using the pointer provided by ssGetContStates, but it does not work. The recommended soulution of using an ensabled subsystem is no good, because I want to change the value of only one continuous state when a certain condition happens inside the sfunction. Very frustrating.
Kaustubha Govind
am 2 Aug. 2012
You can either follow Ryan's suggestion or put your S-function inside an enabled subsystem with "Output when disabled" set to "reset" - this will call your mdlInitializeConditions method every time the subsystem is disabled.
0 Kommentare
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!