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添加的路径,添加后如下图所示: