Simulink Test脉冲检测(按键按下)评估问题求助
针对Simulink Test长按防抖评估的解决建议
核心验证逻辑
要精准验证长按触发逻辑,需同时确认两个关键条件:
- 按键按下持续≥70ms后,输出才跳转为62.5;
- 短按(<70ms)时输出始终保持0,无误触发。
具体实现方案
1. 基于时间节点的精确验证
在Test Manager的评估脚本中,结合getLastChangeTime和verifyThat锁定触发时间窗口:
% 获取按键按下的时刻(假设KeyInput为按键输入信号,1代表按下状态) key_down_time = getLastChangeTime('KeyInput', 1); % 验证:按键按下70ms后,输出必须出现62.5 verifyThat('OutputSignal', hasValue(62.5, key_down_time + 0.07, inf)); % 补充验证:按键按下后的前70ms内,输出必须保持0 verifyThat('OutputSignal', hasValue(0, key_down_time, key_down_time + 0.07));
2. 固定宽度脉冲的分段验证
如果模型输出的62.5是固定采样周期的脉冲,用verifySegment精准检测脉冲区间:
key_down_time = getLastChangeTime('KeyInput', 1); pulse_start = key_down_time + 0.07; % 按模型步长计算脉冲结束时间 pulse_end = pulse_start + getModelStepSize; % 验证该时间段内输出严格为62.5 verifySegment('OutputSignal', pulse_start, pulse_end, 62.5);
3. 测试序列与模型的时间对齐检查
- 确保测试序列中长按按键的时长明确设置为≥70ms(比如80ms),避免因输入时长不足导致验证失败;
- 检查模型采样时间,确保70ms是采样步长的整数倍,减少时间精度误差。
4. 调试排查技巧
- 勾选Test Manager的信号记录选项,运行测试后查看输入输出时序曲线,确认62.5脉冲的触发时机是否符合预期;
- 在脚本中加入
disp(key_down_time)输出按键按下时刻,检查时间计算是否准确。
内容的提问来源于stack exchange,提问作者James Young
相关产品推荐
相关产品推荐

