Доступ к базе данных OsiSoft через AF Sdk в Matlab

У меня есть вопрос, как получить доступ к базе данных PI OsiSoft через Matlab R2016 и PI AF SDK. Я прочитал официальный документ "Использование PI Data с MATLAB" в PI DEVELOPERS CLUB и, используя их пример кода, смог загрузить экземпляр 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", также настроен правильный Сервер по умолчанию. Есть идеи почему

af_srvs = PISystems;

кажется пустым?

1 ответ

Решение

Кажется, я использовал неправильную сборку. Вот минимальный пример того, как прочитать образец из 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()));

Хороший ресурс для примера кода можно найти здесь

Другие вопросы по тегам