在 Matlab 中通过 AF SDK 访问 OsiSoft 数据库
Accessing OsiSoft Database via AF Sdk in Matlab
我有一个关于如何通过 Matlab R2016 和 PI AF SDK 访问 OsiSoft 的 PI 数据库的问题。我阅读了 PI DEVELOPERS CLUB 的白皮书 "Using PI Data with MATLAB",并使用他们的示例代码我能够使用下面的代码加载 PISystems 实例,
但是,PISystems 变量似乎不包含任何有用的信息
afsdk = NET.addAssembly('OSIsoft.AFSDK');
import OSIsoft.AF.*
import OSIsoft.AF.Asset.*
import OSIsoft.AF.Time.*
import System.*
af_srvs = PISystems;
当我检查 af_srvs 的内容时,它是空的,我得到
af_srvs =
PISystems with properties:
Count: 0
Identity: Systems
DirectoryOptions: Default
Version: [1×1 System.String]
DefaultPISystem: []
为了验证 PI 数据库是否正常工作,我使用了 Matlab 以外的工具来检索数据。我能够通过 Excel Datalink 插件访问数据,因此 PI 安装和配置似乎有效。我还检查了 "PI SDK Utility" 中的设置,也配置了正确的默认服务器。任何想法为什么
af_srvs = PISystems;
好像是空的?
看来我用错了程序集。这是如何从 PI
中读取样本的最小示例
afsdk = NET.addAssembly('OSIsoft.AFSDK');
import OSIsoft.AF.PI.*;
piservers = OSIsoft.AF.PI.PIServers;
%ListNET(piservers)
%simply grab the default server
%to get a non-default server use pisrv = piservers.Item('servername');
pisrv = piservers.DefaultPIServer;
point = PIPoint.FindPIPoint(pisrv,'Sinusoid');
fprintf('The value of %s is %f at %s \n', char(point.Name), point.Snapshot.Value, char(point.Snapshot.Timestamp.LocalTime.ToString()));
可以找到示例代码的良好资源 here
我有一个关于如何通过 Matlab R2016 和 PI AF SDK 访问 OsiSoft 的 PI 数据库的问题。我阅读了 PI DEVELOPERS CLUB 的白皮书 "Using PI Data with MATLAB",并使用他们的示例代码我能够使用下面的代码加载 PISystems 实例, 但是,PISystems 变量似乎不包含任何有用的信息
afsdk = NET.addAssembly('OSIsoft.AFSDK');
import OSIsoft.AF.*
import OSIsoft.AF.Asset.*
import OSIsoft.AF.Time.*
import System.*
af_srvs = PISystems;
当我检查 af_srvs 的内容时,它是空的,我得到
af_srvs =
PISystems with properties:
Count: 0
Identity: Systems
DirectoryOptions: Default
Version: [1×1 System.String]
DefaultPISystem: []
为了验证 PI 数据库是否正常工作,我使用了 Matlab 以外的工具来检索数据。我能够通过 Excel Datalink 插件访问数据,因此 PI 安装和配置似乎有效。我还检查了 "PI SDK Utility" 中的设置,也配置了正确的默认服务器。任何想法为什么
af_srvs = PISystems;
好像是空的?
看来我用错了程序集。这是如何从 PI
中读取样本的最小示例afsdk = NET.addAssembly('OSIsoft.AFSDK');
import OSIsoft.AF.PI.*;
piservers = OSIsoft.AF.PI.PIServers;
%ListNET(piservers)
%simply grab the default server
%to get a non-default server use pisrv = piservers.Item('servername');
pisrv = piservers.DefaultPIServer;
point = PIPoint.FindPIPoint(pisrv,'Sinusoid');
fprintf('The value of %s is %f at %s \n', char(point.Name), point.Snapshot.Value, char(point.Snapshot.Timestamp.LocalTime.ToString()));
可以找到示例代码的良好资源 here