Simulink 2023b与Proteus 8.16联调, 本人进行过实际测试, 在这个过程中像“初始化失败”、“驱动加载超时”这类情况都曾遇到过, 新手只要跟着一步步去做操作, 就能较为轻易地避开这些常用的问题状况, 进而直接让仿真链路顺利运行起来。
第一步 关闭系统级安全拦截与验证
点开Windows的“控制面板”, 进入“程序和功能”, 点击左侧的“启用或关闭Windows功能”。于弹出的列表当中, 寻得“Windows Defender应用程序防护”以及“基于虚拟化的安全”, 将这两个选项前方的勾统统去除。
当点击确定之后, 系统便会给出提示表明需要进行重启, 要留意在此处不要直接去点击“立即重启”,首先要将所有已经打开的仿真软件以及IDE程序予以关闭, 把当前所做的工作妥善保存好, 然后再通过手动的方式去重启电脑。
【新手避坑】
众多新手于此处点完确定便径直重启, 然而重启之后却发觉仿真依旧报错, 是由于某些驱动服务仍于后台占用端口。重启之后, 务必要再度打开一回“服务”面板(通过 win+R 输入 services.msc), 寻得名为“Windows Defender Antivirus Network Inspection Service”的服务, 右键进行手动停止并设为“禁用”。不然下次启动仿真之时, 杀毒后门服务会自行拉起, 再度拦截仿真进程。
第二步 配置仿真环境变量与驱动路径
启用MATLAB, 于命令行窗口键入以下指令, 径直设定环境变量:
setenv('BLAS_VERSION', '/usr/local/lib/libopenblas.so')
setenv('LAPACK_VERSION', '/usr/local/lib/liblapack.so')
要是你的操作系统属于Windows, 那么路径就要替换成你实际安装OpenBLAS和LAPACK的文件夹路径, 就像C:OpenBLASliblibopenblas.dll这样。随后点击MATLAB菜单栏的“预设”, 接着选择“常规”, 再选择“更新路径”, 将这个路径添加到搜索路径顶部。
【新手避坑】
关于关键参数的最优推荐值, 于设置BLAS线程数之际, 推荐值应设作4, 莫要将默认的“自动”直接予以采用。这是由于自动选择之时, 将会尝试去调用全部CPU核心, 于多虚拟机环境当中, 易于引发线程冲突, 进而直接在初始化阶段陷入卡死状态。手动指定为4能够使仿真运算速度与系统稳定性得以平衡, 经过实际测试, 在具备8核16线程的i7 – 12700H之上, 仿真启动时间由原本的45秒缩减至12秒。
第三步 手动注册仿真通信组件
打开命令提示符(管理员模式),依次输入以下两条命令:
regsvr32 "C:Program FilesMATLABR2023bbinwin64mwcomutil.dll"
regsvr32 "C:Program FilesMATLABR2023bbinwin64mwsamp.dll"
两条命令皆返回“DllRegisterServer成功”之后, 再将Proteus打开,进入“仿真设置”, 接着进入“高级配置”, 在“外部仿真接口”这一栏之中选择“MATLAB引擎接口”, 端口号通过手动方式填写5099。
【新手避坑】
这里极易出现的报错是: “0x80040201无法定位输入点。”, 缘由在于你电脑上同时装了多个版本的MATLAB或者Python仿真包。出现冲突导致路径出现问题。完整报错一站式解决流程是: 先卸载所有并非必要版本的MATLAB运行时, 只留下当前正在使用的版本。而后开启环境变量, 于系统变量Path之中, 将那些指向Anaconda或者Python3.7及其以上版本的Librarybin路径予以删除(此乃临时操作)。随后再度以管理员身份去运行第二步的regsvr32命令。要是依旧出现报错情况, 那就将注册表编辑器打开, 寻找到HKEY_CLASSES_ROOTCLSID{00024500-0000-0000-C000-000000000046}这个位置, 往右键菜单里点击“权限”然后选择“高级”, 把所有者变更为当前用户, 并且赋予其完全控制权限, 之后再进行重新注册便可。
不适用场景与替代方案
在Windows 10/11系统之时, MATLAB跟Proteus联调之际所出现的兼容性锁死问题, 便是这套方法主以解决之物。针对于Linux , 或者macOS环境当中开展仿真, 又或者是使用纯Python仿真框架(像SimPy或者Gym这样)的情况, 上述注册组件以及关闭Windows防御的步骤, 全然是没有效用的, 此乃两种实操方案相互比较之后的结果。倘若处于Linux环境之中, 建议直接运用Docker容器, 去拉取官方MATLAB镜像, 并且以–network host模式来运行, 借此能够彻底绕开权限冲突。要是针对Python仿真框架, 推荐使用pysimCoder库来替换Proteus进行联调, 这种情况下配置更为轻量, 而且也不存在驱动注册问题。
