如果用户选择固定步长求解器,我开发了一个行为不正确的块。
块是否可以检查正在使用哪个求解器,并在使用固定步长求解器时通知用户?
答案 0 :(得分:2)
这绝对是可能的!您可以在模型属性(或块本身)中使用回调函数StartFcn
。每次模拟模型时都会执行此功能。然后添加一个检查解决方案类型的检查,如果它设置为Fixed-step
则会抛出错误。
以下是要添加的代码:
if(strcmp('Fixed-step',get_param(bdroot,'SolverType')))
error('Do not use a fixed-step solver because the results are not correct!');
end
当您的模型名称为test
时,这会在诊断查看器中引发以下错误:
我们通过执行bdroot
得到顶级Simulink系统的名称。然后,此系统名称用于调用以获取具有get_param(bdroot,'SolverType')
的求解器类型。然后我们使用strcmp
将返回的字符串与'Fixed-step'
进行比较。如果当前解算器是固定步骤,则strcmp
返回1
,因此我们输入if语句并使用error
函数抛出错误。
要将回调函数添加到块,请右键单击该块,然后在属性上,如下面的屏幕截图所示:
然后转到 Callbacks - > StartFcn 并粘贴代码:
要将回调函数添加到模型,请单击模型属性,如下面的屏幕截图所示:
然后转到 Callbacks - > StartFcn 并粘贴代码:
那就是它。我希望它有所帮助...