Matlab 有没有办法在simulink中强制执行小于编译时常量的模拟步骤?

Matlab 有没有办法在simulink中强制执行小于编译时常量的模拟步骤?,matlab,simulink,Matlab,Simulink,问题 在simulink模型中,有没有办法使模拟步骤小于编译时常数 上下文 我正在尝试在simulink上构建一个PWM块。现在,我必须确保用户负责任地选择步长(小于他选择的周期的一半),否则块的行为会异常。我提出的唯一方法是,如果步长不够小,就停止模拟,但我发现(作为用户)这很烦人。如果可能的话,我希望用户完全不用担心这个问题。我会这样做:将以下伪代码添加到块回调StartFcn: T_PWM = get_param(gcb,...); % get the block parameter (

问题

在simulink模型中,有没有办法使模拟步骤小于编译时常数


上下文


我正在尝试在simulink上构建一个PWM块。现在,我必须确保用户负责任地选择步长(小于他选择的周期的一半),否则块的行为会异常。我提出的唯一方法是,如果步长不够小,就停止模拟,但我发现(作为用户)这很烦人。如果可能的话,我希望用户完全不用担心这个问题。

我会这样做:将以下伪代码添加到块回调
StartFcn

T_PWM = get_param(gcb,...); % get the block parameter (period) of the current PWM block (string)
T_PWM = str2double(T_PWM);
T_solver = get_param(bdroot,'FixedStep'); % get fixed used by the solver (string)
T_solver = str2double(T_solver); % convert from string to double
if T_solver > 0.5*T_PWM
   error('Solver step size must be smaller than half the PWM period')
end

您使用的是固定步长还是可变步长解算器?好主意,但我如何在库块中实现这一点?此外,您的解决方案不会将步长更正为正确的值,而是强制用户执行此操作。有没有一种方法可以通过编程来纠正它?是否有库块是不相关的,因为您正在调整模型参数(步长),而不是块。调用
get_param
时,只需指定PVM块的正确路径。如果您事先不知道PWM块在模型中的位置,您可能需要首先使用
find_system
。我认为用户有责任自己校正步长,因此提出了解决方案。如果要自动更改模型步长,请将
错误
行替换为
set_param(bdroot、'FixedStep',num2str(0.5*T_PWM))
。很抱歉我不知道,但根据我对您答案的理解,使用我的库中的PWM块的每个人都应该将这些代码行添加到他们模型的回调函数中?