许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  VPITransmissionmaker与Matlab联合仿真报错处理

VPITransmissionmaker与Matlab联合仿真报错处理

阅读数 6
点赞 0
article_banner


出现了以下乱码报错,都不知道错在哪里了

VPI启动联合仿真的一瞬间弹窗“Could not start Matlab. Check that a compatible version of Matlab is correctly installed and registered, and that a valid license is available”,VPI的job直接abort。这个报错在知乎上有个帖子专门讨论过,作者说用了ADC DAC之后这个bug出现几率大大增加,而且具有“污染”特性,一个报错project里的模块复制到另一个正常的project里,正常的那个也会被带坏。


原因基本就一个,VPI调MATLAB走的是COM接口,MATLAB作为COM服务器没有正确注册,VPI找不到它。在CMD里用管理员权限敲`matlab -regserver`,前提是环境变量PATH里指定的MATLAB版本跟VPI选中的版本一致,装了多个MATLAB或者PATH里没指定版本的话这个命令不起作用。替代方法更直接,打开需要调用的那个版本的MATLAB窗口,在命令行里先敲`comserver('unregister')`再敲`comserver('register')`,注册完重启VPI。知乎那个帖子里说这两种方法加起来成功率大概90%,剩下10%的情况重启一遍再试一次。


路径的问题也不能忽略。VPI的File菜单→Preferences→Simulation→Cosimulation→Matlab里面,MATLAB引擎库`libeng.dll`的路径要指对,这个文件在MATLAB安装目录的`bin\win64`下面,路径没设的话加到系统PATH环境变量里也行。Cosimulation Interface模块里的Path参数指的是存放自定义.m脚本文件的目录,不是MATLAB的安装路径,这两个别搞混。脚本文件建议全放在VPI项目目录下的Codes文件夹里,用绝对路径指向它,相对路径在这个接口里指向的是VPI项目文件所在目录的子目录,不是当前工作目录。


RunCommand的参数格式也得对上。在Cosimulation Interface模块里,RunCommand填的是每次触发模块时执行的MATLAB命令,格式通常是`函数名(输入变量)`,VPI会把输入端口的数据以特定变量名传进MATLAB工作空间,比如`WAVEFORM1`这种。输出变量名要在模块的Output端口设置里对应好,对不上仿真跑起来数据全是零,也不报错,就是静默失败。


联合仿真跑起来之后如果想在MATLAB里实时调试变量,官方手册提供了离线调试的方式,仿真数据保存成.mat文件,直接在MATLAB的IDE里双击加载,变量和数据结构都能看,不用每次改一行代码就重新跑一遍VPI。D:\VPI_Projects\cosim_notes\下面放了一份RunCommand的模板和几个demo的配置截图,下次换project的时候直接拷过去改路径。那个comserver的注册状态可以用`comserver('status')`查一下,返回registered说明正常,那个引擎库的完整路径是……


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空