matlab deploytool 生成的独立应用程序/使用 OPC 编译在主机系统中失败

Posted

技术标签:

【中文标题】matlab deploytool 生成的独立应用程序/使用 OPC 编译在主机系统中失败【英文标题】:Standalone application generated by matlab deploytool/compilation with OPC fails in host system 【发布时间】:2020-02-19 18:32:52 【问题描述】:

我的 matlab 应用程序通过提供输入和获取输出与 dymola 软件(用于动态建模/模拟/计算)进行通信。在 Matlab 命令窗口中一切正常。在 matlab 中开发的独立应用程序(使用应用程序编译器)在与开发它的系统相同的系统中运行良好。 一旦我在没有完整安装 matlab 的情况下将应用程序(使用 matlab 运行时)安装到主机系统中,OPC 代码就会失败。 * 在 Windows 10 Pro 中开发/编译的代码, * 部署到/主机系统:Windows 10 Pro, * Matlab 2017b 版 * OPC 工具箱版本 4.0.4 * Matlab 运行时 9.3

OPC代码sn-p如下:

%% File: SetupOPCDA_MatlabDymolaConnection()
try
    %opcregister('install')
    hostInfo = opcserverinfo('localhost');
    disp(hostInfo.ServerID);
    da = opcda('localhost','Dymosim.OPCServer.1');
    % Connect to Dymola OPC server
    connect(da);
    grp = addgroup(da);
    ns = getnamespace(da);
catch Err % line 33

以下给出的输出来自在主机系统中从命令行运行生成的 exe 文件。 它失败并出现错误:

OPC Foundation Core Components not installed. Run OPCREGISTER to install the OPC Foundation Core Components.

取消注释opcregister('install') 我收到以下错误(请注意我正在从命令行运行 exe):

Setting OPC connection...Warning: OPC Core Components are already installed. Reinstalling may require a repair of the Core Components.
Continuing this operation will modify any OPC Foundation files already installed.
MATLAB may shut down, and a system reboot may occur.
Type 'Yes' (exactly as shown) to install the OPC Foundation files
Confirmation string: Yes
'Yes' is not recognized as an internal or external command,
operable program or batch file.
Operation cancelled by user.

关于给线:opcregister('install','-silent') 错误:

Warning: OPC Core Components are already installed. Reinstalling may require a repair of the Core Components.
TWarning: Installation was not successful. Exit code was 1619.
OPC Foundation Core Components not installed. Run OPCREGISTER to install the OPC Foundation Core Components.

比较一下,这是我在系统中得到的输出,代码是在其中开发和编译的: OPC working fine, Gives server names as outputs

'Matrikon.OPC.Simulation.1'    'Dymosim.OPCServer.1'

在开发者系统中运行良好,但在主机系统中失败。

【问题讨论】:

Confirmation string: Yes 'Yes' is not recognized as an internal or external command, 我猜这个有趣的地方是由于您实际上不是在 MATLAB 命令窗口上输入的,而是在操作系统控制台上输入的。您是否尝试过修复选项? mathworks.com/help/opc/ug/opcregister.html @Daniel,我尝试使用 repair 选项和 silent 标志。回复OPC Foundation Core Components not installed. Run OPCREGISTER to install the OPC Foundation Core Components. 我同意你对Confirmation string 的看法 【参考方案1】:

我可以通过手动安装OPC core components 来解决这个问题。

在运行 Matlab exe 之前安装它们,解决了问题。

附:您需要在下载 OPC 核心组件之前创建一个帐户。

【讨论】:

以上是关于matlab deploytool 生成的独立应用程序/使用 OPC 编译在主机系统中失败的主要内容,如果未能解决你的问题,请参考以下文章

matlab回调函数生成.exe文件好处

使用“deploytool”和 Matlab 编译器有啥区别?

Matlab可执行文件,传递变量[重复]

MATLAB 可执行文件太慢

MATLAB 可执行文件太慢

windows 10(64位)下实现vs20120C++调用matlab r2014a编写的m文件生成的.dll,.lib,.h文件