### [仿真测试环境搭建避坑指南:新手三步搞定硬件在环仿真](https://www.zxzic.com/article/4266.html) **Published:** 2026-06-20T04:02:23 **Author:** 智行者IC社区 **Excerpt:** 在本人实际进行的MATLAB/Simulink R2021b与Speedgoat实时目标机的联合调试过程当中, 经历过因仿真步长设置不正确造成系统出现崩溃状况的情况 在本人实际进行的MATLAB/Simulink R2021b与Speedgoat实时目标机的联合调试过程当中, 经历过因仿真步长设置不正确造成系统出现崩溃状况的情况, 也遭遇过IO板卡驱动识别遭遇失败的状况, 对于新手而言, 只要依照步骤一步步去展开操作, 便能够较为轻松地避开此类常见问题。 ## 第一步 配置实时仿真系统基础环境 将MATLAB打开之后, 于命令行的窗口之中把slrtinstall输入进去, 以此启动xPC Target安装向导, 将目标机的类型选定为Speedgoat Baseline, 通信协议挑选UDP, 在“Target Network”的面板里, 把IP地址设置成192.168.7.2, 子网掩码采用默认的255.255.255.0。随后点击“Build”来生成引导盘, 将生成的iso文件借助Boot USB Writer写入到U盘之中。 【新手需留意避开雷区】此处在通常情况下, 报出 “No target machine found” 这一错误的频率是相当之高的。其缘由在于针对主机跟目标机而言, 它们的网关并不是处于同一个网段范围之内的。核心的能够起到解决作用的办法是: 将主机的有线网卡IP设定成分属于192.168.7.x这个网段的数值, 举例来说, 像192.168.7.1这样的数值, 并且网关要处于留空的状态。一定不要采用通过WiFi进行连接的方式, 必须要采用通过有线直接连接的方式。 ## 第二步 建立Simulink模型并设定求解器参数 建立Simulink空白的模型, 将“PWM Generator”模块以及“DC Motor”模块拖入其中。双击“Configuration Parmeters”, 于Solver选项卡内, 把Type选定为“Fixed-step”, 将求解器选为“ode4(Runge-Kutta)”。最为关键的一项操作: 把基础步长设定为1e-4秒, 这是仿真精度与实时性的最优平衡点。进的幅度过于大, 那么电机的模型就会呈现出发散的状况, 进的幅度太过小, 目标机的CPU会出现过载进而直接导致死机。 关于新手需避开的坑, 在运行时出现了名为“Task overrun”的警告, 其缘由在于模型之中使用的连续模块数量过多,解决的办法是, 将要换成离散版本的诸如PID控制器等连续模块, 通过右键点击模块选择“Block Parameters”, 将所有与Sample time相关的内容全部改成1e – 4, 并且在高频信号路径上额外添加一个用于做速率匹配的“Rate Transition”模块。 ## 第三步 编译部署并启动硬件在环仿真 选择指向“Code Generation”标签页面,将 System target file 选定为“slrt.tlc”。点击“Build”来进行编译从而形成 dlm 文件, 此进程大概历经 2 – 5 分钟。编译成功之后, 在 xPC Explorer 里面找到目标机器, 右键点击“Load – and – Run”。此时留意观测目标机显示屏, 出现“Execution time: 0.00012s”, 这便表明运行处于正常状态。先来对比一下这两种方案, 一种是采用TCP/IP协议进行传输, 其延迟大概是0.5ms, 这种方案适合于低速控制场景, 另一种是运用Shared Memory协议, 它的延迟仅仅只有0.05ms, 该方案适合高频电流环仿真, 不过它需要目标机额外去插一块共享内存卡。 【新手需防入坑】编译之时报出“Unresolved symbol: rt\_OneStep”这种情况属于高频出现的故障。其缘由在于模型当中交叉使用了变步长模块。具备快速解决的流程: 将模型参数面板予以打开, 点击“Diagnostics”这个标签, 把“Data store memory”的检查修改为“none”。将模型里每一个带有“Continuous”字样的积分模块都消除掉, 全部替换为“Discrete-Time Integrator”。在重新进行编译之际, 务必要勾选“Generate code only”, 接着手动去运行一回“make\_rtw”命令, 如此便完成了。 这个办法不适用于纯数字信号处理类型的仿真, 像FPGA算法的验证就是这样的情况。对于这种场景而言, 建议更换为使用Vivado Simulator搭配Modelsim, 把步长设定为纳秒级别, 要走全数字仿真的流程, 硬件在环的做法反倒显得多余。 **Tags:** MATLAB/Simulink, 仿真测试, 新手指南, 硬件在环, 避坑 **Categories:** 技术分享, 技术文档 ---