How do I find all continuous blocks in a model in order to replace them to use a discrete solver?
20 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2020 年 9 月 8 日
編集済み: MathWorks Support Team
2023 年 3 月 30 日
I would like to see all continuous blocks at once in order to change all continuous blocks to discrete state blocks. When I switched to "Fixed Step discrete (no continuous state)" solver from "Variable Step (auto)", I get the following error:
"FixedStepDiscrete" solver cannot be used to simulate block diagram <model_name> because it contains continuous states.
採用された回答
MathWorks Support Team
2023 年 3 月 28 日
編集済み: MathWorks Support Team
2023 年 3 月 30 日
You can find out which blocks have continuous states using either of the following two methods:
1) Use the command "Simulink.BlockDiagram.getInitialState" as follows:
open_system(docpath(fullfile(docroot, 'toolbox','simulink','examples','ex_execution_order')))
model = gcs;
states = Simulink.BlockDiagram.getInitialState(model);
if ~isempty(states)
for n=1:length(states.signals)
if strcmp(states.signals(n).label,'CSTATE')
states.signals(n).blockName
end
end
end
This is the result when running the above code:
ans =
'ex_execution_order/car dynamics/Integrator'
2) Use "sldebug('model')" and then type "states".
For example:
>> open_system(docpath(fullfile(docroot, 'toolbox','simulink','examples','ex_execution_order')))
>> sldebug(gcs)
%----------------------------------------------------------------%
[TM = 0 ] simulate(ex_execution_order)
(sldebug @0): >> states
Continuous States for 'ex_execution_order':
Idx Value (system:block:element Name 'BlockName')
0. 0 (0:0:0 CSTATE 'ex_execution_order/car dynamics/Integrator')
Discrete States for 'ex_execution_order':
Idx Value (system:block:element Name 'BlockName')
0 0 (1:0:0 DSTATE 'ex_execution_order/discrete cruise controller/Unit Delay1')
1 0 (1:5:0 DSTATE 'ex_execution_order/discrete cruise controller/Unit Delay')
(sldebug @0): >> quit
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で General Applications についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!