Change/reset initial state values in a level 2 C-mex S-function
2 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Ryan G
2012 年 7 月 24 日
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 件のコメント
Pan Zhao
2017 年 6 月 22 日
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) .
その他の回答 (3 件)
Michael Walker
2014 年 5 月 16 日
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 件のコメント
Pan Zhao
2017 年 6 月 21 日
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
2023 年 8 月 2 日
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
2012 年 8 月 2 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Simulink Functions についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!