关于ADS-Matlab联合仿真ADS.RunSimulation()报错的解决方案

2023/04/07更新:

如果先前的运行报错了,系统会存入错误的临时路径导致出现gives -1.0737e+09。应当在修改GetPathStrings函数后,重启matlab再运行ADS.RunSimulation()。

****************************************************************************************************

2023/03/13更新:

最近换了台服务器,发现又报错了,这回花时间细看代码了,发现还是路径的问题,把TADSInterface里的GetPathStrings函数中case 'win64' 中的代码改正为

EnvVars.SIMARCH = 'win32_64';
EnvVars.HPEESOF_DIR = ADSInstallationDirectory;
setenv('SIMARCH', EnvVars.SIMARCH);
setenv('HPEESOF_DIR', EnvVars.HPEESOF_DIR);
PathStrings{1} = fullfile(EnvVars.HPEESOF_DIR,'bin'); % '%HPEESOF_DIR%\bin' must be first in PathStrings!
% PathStrings{2} = fullfile(EnvVars.HPEESOF_DIR,'bin',EnvVars.SIMARCH);
PathStrings{2} = fullfile(EnvVars.HPEESOF_DIR,'lib',EnvVars.SIMARCH);
PathStrings{3} = fullfile(EnvVars.HPEESOF_DIR,'circuit',['lib.' EnvVars.SIMARCH]);
PathStrings{4} = fullfile(EnvVars.HPEESOF_DIR,'adsptolemy',['lib.' EnvVars.SIMARCH]);

图片版如下:

总的来说,直接注释那条不存在的路径HPEESOF_DIR+\bin\win32_64的检测,同时使用setenv添加用户变量SIMARCH和HPEESOF_DIR。

经过测试后可以运行,这应该是最优解了。

****************************************************************************************************

2022/09/24更新:

最近已经转为使用ael编程了,在运行脚本时,发现可能是运行

ADSInstallationDir = 'C:\Program Files\Keysight\ADS2017';

ADS.SetADSPaths(ADSInstallationDir);

后环境变量顺序出错导致的问题。

具体报错信息及发现的过程如下:

在用户变量添加变量“C:\Program Files\Keysight\ADS2017\bin”后,直接运行

system('ads.exe')

没有报错,但是使用“ADS.SetADSPaths(ADSInstallationDir)”后再次运行语句,显示

""C:\Program Files\Keysight\ADS2017"\bin"不存在,同样返回了gives -1.0737e+09,这才让我想起之前的报错信息。不知为何多出了双引号,导致路径出错,直觉告诉我是ADSInstallationDir等相关设置出了问题。

经过断点调试后发现,TADSInterface的GetPathStrings()函数中的语句

PathStrings{1} = fullfile(EnvVars.HPEESOF_DIR,'bin');  % '%HPEESOF_DIR%\bin' must be first in PathStrings!

提示了ads.exe的启动路径应当在其他路径前面。

而新用户在使用ADS.SetADSPaths()函数时,其中有一句语句

Paths = unique([Paths PathStrings], 'stable');

按理上删除重复路径后不会改变顺序,但调试后发现改变了顺序(应该是matlab的锅),猜测是这个原因导致路径出错。

解决方案:

法一:(原答案是在系统变量添加路径,现在建议在用户变量添加,从调试结果看,TADSInterface使用的是用户变量中路径)

在用户变量中添加ads.exe的启动路径“C:\Program Files\Keysight\ADS2017\bin”,重启matlab后,尝试system('ads.exe'),能启动ADS则证明路径设置没有问题。

再尝试system('hpeesofsim.exe')应该就没有问题了。

法二:直接注释了程序中的路径设置语句

ADS.SetADSPaths(ADSInstallationDir);

改为手动添加路径到用户变量和系统变量。

插曲:

发现只要成功启动了一次,即使保留程序中的路径设置语句,后续也没有报错,所以猜测是用户变量的路径顺序问题。

如果还是报错,建议到TADSInterface的SetADSPaths()函数中的

Paths = unique([Paths PathStrings], 'stable');

在这语句后手动把ads.exe的启动路径重新提前,或者按照法二,多尝试几次,应该能成功。

****************************************************************************************************

以下为原版本:

在matlab运行system('hpeesofsim.exe')后,

出现gives -1.0737e+09。

通常有两种类型的报错:

"Error using TADSInterface/RunSimulation (line 2072)
Cannot run simulation. The exit code is 1"

*** Warning: Unable to locate environment value for AEL_PATH ***

Using default value of "."

*** Warning: Unable to locate environment value for HPEESOFSIM_AEL ***

Using default value of "hpeesofsim" WARNING AEL file: "hpeesofsim" not found.***

FATAL ERROR: Unable to load default AEL personality 等。

其实都是ADS路径的问题,见TADSInterface.m的GetPathStrings()函数,注释里写着

% FROM ADS DOCUMENTATION:
% set SIMARCH=win32_64
% set HOME=<Path to your working directory>
% set HPEESOF_DIR=<Path to ADS installation>
% set COMPL_DIR=%HPEESOF_DIR%
% set SVECLIENT_DIR=%HPEESOF_DIR%\SystemVue\2015.01\%SIMARCH%
% set MOSAIC_ARCH=win32_64
% set path=
%HPEESOF_DIR%\bin\%SIMARCH%;
%HPEESOF_DIR%\bin;
%HPEESOF_DIR%\lib\%SIMARCH%;
%HPEESOF_DIR%\circuit\lib.%SIMARCH%;
%HPEESOF_DIR%\adsptolemy\lib.%SIMARCH%;

其中,HPEESOF_DIR就是安装路径,一般是形如'C:\Program Files\Keysight\ADS2017'的路径,

然后在系统环境变量里添加后5项的路径即可,如HPEESOF_DIR%\bin\%SIMARCH%即为C:\Program Files\Keysight\ADS2017\bin\win32_64,有个坑就是这第一条路径不存在对应的文件夹,一开始我只添加了其他4条存在的路径,仍然报错,再添加这条路径后就没问题了

我是直接在系统变量中的Path添加的路径,添加后如下图所示:

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值