问题
有没有办法在simulink模型中强制模拟步骤小于编译时常量?
上下文
我正在尝试在simulink上构建一个PWM模块。就像现在一样,我必须确保用户负责任地选择步长(小于他选择的一半的时间段),否则块表现异常。我提出的唯一方法是在步长不够小的情况下停止模拟,但我发现非常烦人(作为用户)。如果可能的话,我希望用户根本不用担心这个问题。
答案 0 :(得分:2)
以下是我要做的事情:将以下伪代码添加到块回调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