经过我亲自进行的测试,dSPACE SCALEXIO 2022 – A与Matlab/Simulink 2021b进行联合调试时,我遭遇过那种在模型编译后出现实时内核超时报警的状况。对于新手而言,……
经过我亲自进行的测试,dSPACE SCALEXIO 2022 – A与Matlab/Simulink 2021b进行联合调试时,我遭遇过那种在模型编译后出现实时内核超时报警的状况。对于新手而言,只要依照下述的三个步骤去操作,便能够躲开这类较为常见的问题。
仿真测试工具实时内核参数怎么调
首先,开启ConfigurationDesk,进而步入Platform Configuration界面。接着来寻觅Target CPU Clock Frequency选项,其默认值是100MHz。经实际测量,把频率设定为120MHz(也就是最优推荐数值)。原因在于:原本在100MHz状态下,中断任务负载超出了90%,极易出现溢出情况;而120MHz能够提升20%的算力,与此同时还可确保散热以及长期运行的稳定性,经实际测试,持续运行12小时都未出现超时现象。
【新手需防入坑】,常见出现报错“RTI timeout at 0x80000000”,同时伴有仿真随机出现卡死情况。其核心缘由在于:模型步长过小,并且CPU频率不足,进而致使任务堆积。快速解决办法是:先将频率降回到100MHz,把模型基础步长从1ms调整为2ms,之后重新进行编译。待系统能够稳定运行半小时后,再逐次每隔5分钟提升5MHz。
两种硬件在环方案该选哪个
接着是第二步,要于Resource Manager当中去配置I/O映射。是针对电机控制器测试,有两套方案可供选择。其一为方案A,借助DS2655 FPGA板卡直接生成PWM,延迟达2μs,且精度超高不过会占用FPGA 40%的逻辑资源。其二是方案B,利用DS6201数字I/O板卡捕获外部PWM,延迟15μs,配置简便且不占用FPGA。
取舍逻辑:测试电流环(响应要求<10μs)必须选方案A。做整车级功能测试(ms级响应)选方案B,省下FPGA资源留给其他复杂模型。操作路径:右键板卡→Add Device→选择PWM_Generator模板,通道数填6。
由于选错方案,致使在仿真步长期间出现PWM边沿丢包情况,其报错现象为:采集到的占空比跳变幅度超过5%,针对此问题,解决办法如下:方案A在FPGA编程当中要增添边沿锁存逻辑,方案B需将模型接口更新为Wait for Trigger模式,并且把Simulink步长减小至0.5ms。
仿真测试工具编译报错怎么解决
第三步,去生成实时应用程序,点击Build,然后点击Generate RTP,接着勾选“Include diagnostics”,高频完整浮现报错,内容为“Linker error: Undefined symbol _PI_CTRL referenced in model_rtp.obj”。以下是一站式解决办法:于Simulink当中打开Simulation Target,接着打开Custom Code,再打开Source files,给其添加缺失的PI_CTRL.c文件。随后执行cleanup,在ConfigurationDesk里找到Project,点击Clean,选择Full Clean。之后重新进行Build,错误便会消失。要是仍然失败,那就检查LCC64工具链路径,要确保其版本与2021b相匹配。
【新手需防差错】,千万别径直去点Rebuild All,因为遗留下来的obj文件会致使出现同样的报错情况。要手动将工作目录下面的“rtp_work”文件夹给删除掉,之后再重新进行生成,这才是最为干净的解决办法。
对于SCALEXIO 2019以下版本(架构差异大)而言,本方法并不适用。老版本的替代方案,乃是将模型拆分至两个CPU核心,借助Interprocessor Communication模块来进行同步。你在实际测试当中,是否遭遇过“实时内核看门狗复位”呢?请在评论区留下你的报错码,以便共同展开排查。
微信扫一扫
还没有评论呢,快来抢沙发~