Change/reset initial state values in a level 2 C-mex S-function
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Marcus
il 21 Lug 2012
Commentato: Sebastián Gómez Jorge
il 2 Ago 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 Commenti
Risposta accettata
Ryan G
il 24 Lug 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 Commento
Pan Zhao
il 22 Giu 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) .
Più risposte (3)
Michael Walker
il 16 Mag 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 Commenti
Pan Zhao
il 21 Giu 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
il 2 Ago 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
il 2 Ago 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 Commenti
Vedere anche
Categorie
Scopri di più su Simulink Functions in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!