Подключение к базе данных OSI Pi с использованием PHP

Я пытаюсь подключиться к базе данных OSI Pi и продолжаю получать сообщения об ошибках ниже. У меня все права установлены правильно, потому что я могу запустить код VB. Он правильно читает версию сервера.

Вот мой PHP:

 <?php
 echo "I will connect to PI Server, read pisdk version and read server time";
 echo "<br>";
 $pisdkComObject = new COM("PISDK.PISDK") or die("Unable to instantiate PISDK object");
 echo "PI server version {$pisdkComObject->PISDKVersion}";
 $myServer = $pisdkComObject->Servers->Item("XXXX_SERVERNAME_XXXX");
 $myServer->Open();
 echo "<br>";
 echo "PI server time is {$myServer->ServerTime}";
 ?>

Вот мой вывод:

Версия сервера PI 1.3.6 Неустранимая ошибка: необработанное исключение 'com_exception' с сообщением 'Источник: pisdk.dll Описание: Невозможно открыть сеанс на сервере. [-10728] PINET: ошибка отправки.' в E:\XXXX.php:12 Трассировка стека: #0 E:XXXX.php(12): вариант->Open() #1 {основной}, брошенный в E: XXXX.php в строке 12

1 ответ

Решение

Вот альтернативный подход: предварительным условием является установка поставщика PI OLEDB.

Затем перейдите по http://adodb.org/dokuwiki/doku.php и установите библиотеку ADODB для php в соответствии с указаниями. Там также есть некоторая вводная информация о библиотеке.

Следующим моим шагом было создание UDL (сохраните пустой текстовый файл с расширением ".udl"), затем дважды щелкните его, чтобы открыть диалоговое окно "Свойства ссылки на данные". На вкладке "Поставщик" выберите "Поставщик PI OLE DB". На вкладке "Соединение" введите имя своего сервера в текстовом поле "Источник данных". Вам также нужно будет настроить регистрационную информацию, уникальную для вашего сервера. Для этого подключения к разработке я использовал "piarchive" в качестве своего "начального каталога для использования". После успешного выполнения [Test Connection] вы можете нажать [OK].

Затем щелкните правой кнопкой мыши на UDL и откройте с помощью блокнота или любого текстового редактора. Выберите и скопируйте строку подключения (т. Е. "Provider=PIOLEDB.1;. . .. и т. Д.).

Далее приведен фрагмент кода, который я использовал для создания небольшой таблицы значений для тега CDT158 и соответствующего массива. В моей версии для разработки я поместил этот код между тегами body.

 Open("Provider=PIOLEDB.1; Начальный каталог =piarchive;
        Источник данных =yourPIServerNameHere;Persist Security Info=False");

    $result_set = $connection->Execute("
                ВЫБЕРИТЕ тег, ВРЕМЯ, значение 
                ИЗ ПИКОМП 
                ГДЕ ВРЕМЯ>= '*-90m' И tag = 'cdt158'
                ");
    $result_count = 0;
    $ метки = массив ();
    while (!$result_set->EOF) 
    {   print $result_set->fields[0].' | '.$result_set-> поля [1]. | '. $ result_set-> fields [2].'
'; array_push ($ label, "{$result_set->fields[1]}"); $result_count = $result_count +1; $ Result_set->MoveNext(); } echo "
Количество найденных записей:". $ result_count. "

"; echo "
";
        print_r ($ этикетки); // это отображает сгенерированный массив.
    echo "";

    $ Result_set->Close(); // необязательный
    $ Connection->Close(); // необязательный?>
Другие вопросы по тегам