Simple-Scada forum

Simple-Scada 2 => Ошибки => Тема начата: Ilya от 29 Мая 2016, 12:17:19

Название: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Ilya от 29 Мая 2016, 12:17:19
Здравствуйте. Пробую выполнить управление лампочкой на ардуине посредством скады. Использую "OPC server for Arduino". В ардуино загружаю пример из библиотеки "OPC".
    Запускаю сервер, в Simple-Editor ищу opc сервер, пытаюсь импортировать переменные, но появляется ошибка "Ошибка при попытке подключиться к OPC серверу "ArduinoOPCServer.1" для чтения списка тегов". Подскажите пожалуйста, в чем причина
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Simple-Scada от 29 Мая 2016, 15:30:27
Здравствуйте!

Пожалуйста покажите пример кода, который Вы загружаете в Arduino. Также скажите, как ведет себя OPC-сервер Arduino, когда скада пытается считать с него теги? Запускается ли он? Установлены ли у Вас компоненты OPC-core components? (скачать можно здесь (http://simple-scada.com/download))
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Ilya от 01 Июня 2016, 09:28:47
Спасибо за своевременный ответ. К сожалению, не смог ответить сразу. Я загружаю код из примеров блиотеки OPC "Uno LED". После установки компонентов OPC ситуация изменилась. Теперь ошибка: "Этот OPC сервер не содержит публичных тегов".

Сервер пишет следующее:

01.06.2016 11:21:12 > Connected client
01.06.2016 11:21:12 > Asking for available OPCItems from ArduinoSerial0
01.06.2016 11:21:13 > Disconnected client Simple-Editor DA Client

На всякий случай приложу код:
Код
#include <OPC.h>
#include <Bridge.h>
#include <Ethernet.h>
#include <SPI.h>

/*
 * Declaring the OPC object
 */
OPCSerial aOPCSerial;

/*
 * set led status from OPC Client
 */
int ledPin = 13;

/*
 * create a callback function for the OPCItem
 */
bool callback(const char *itemID, const opcOperation opcOP, const bool value){
  static bool ledValue = false;
 
  /*
   * if operation is a write command from OPC Client
   */
  if (opcOP == opc_opwrite) {
    ledValue = value;
   
    if (ledValue) 
      digitalWrite(ledPin, HIGH);
    else
      digitalWrite(ledPin, LOW);
  }
  else
    /*
     * read the led status
     */
    return ledValue; 
}

void setup() {
  Serial.begin(9600);
 
  pinMode(ledPin, OUTPUT);
 
  /*
   * OPC Object initialization
   */
  aOPCSerial.setup(); 
 
  /*
   * led OPCItem declaration
   */
  aOPCSerial.addItem("led",opc_readwrite, opc_bool, callback);
}

void loop() {
  /*
   * OPC process commands
   */
  aOPCSerial.processOPCCommands();
}
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Simple Scada от 01 Июня 2016, 11:50:14
Ilya, ваш пример работает!
попробуйте запустить OPC и редактор от администратора
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Ilya от 01 Июня 2016, 15:11:25
Senpai, проделал все еще раз, запустив от имени администратора. Ошибка та же самая. При запуске "Editor" от имени администратора, сервер не пишет никакую реакцию.В "Debug and information window" пишет "Неверный дескриптор"
     Попробовал снова без режима администратора, на этот раз сервер отреагировал следующим образом:
Код
01.06.2016 17:01:16 > Connected client 
01.06.2016 17:01:16 > Trying to open COM5 port
01.06.2016 17:01:16 > COM5 port open
01.06.2016 17:01:16 > Trying to open COM5 port
01.06.2016 17:01:16 > COM5 port open
01.06.2016 17:01:17 > Asking for available OPCItems from ArduinoSerial0
01.06.2016 17:01:17 > Trying to close COM5 port
01.06.2016 17:01:17 > COM5 port closed
01.06.2016 17:01:17 > Trying to close COM5 port
01.06.2016 17:01:17 > COM5 port closed
01.06.2016 17:01:17 > Disconnected client Simple-Editor DA Clien

Стоит добавить, что использую Arduno Mega. При компилировании появляются ошибки, но скетч все равно загружается. Приведу код ниже,  если вдруг поможет
Код
In file included from C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:6:0,

                 from C:\Users\Р?лья\Documents\Arduino\libraries\OPC\examples\UNOLed\UNOLed.ino:1:

C:\Program Files (x86)\Arduino\libraries\Bridge\src/YunServer.h:24:2: warning: #warning "The use of YunServer is deprecated. Use BridgeServer instead!" [-Wcpp]

 #warning "The use of YunServer is deprecated. Use BridgeServer instead!"

  ^

In file included from C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:7:0,

                 from C:\Users\Р?лья\Documents\Arduino\libraries\OPC\examples\UNOLed\UNOLed.ino:1:

C:\Program Files (x86)\Arduino\libraries\Bridge\src/YunClient.h:24:2: warning: #warning "The use of YunClient is deprecated. Use BridgeClient instead!" [-Wcpp]

 #warning "The use of YunClient is deprecated. Use BridgeClient instead!"

  ^

In file included from C:\Users\Р?лья\Documents\Arduino\libraries\OPC\examples\UNOLed\UNOLed.ino:1:0:

C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:19:1: warning: 'typedef' was ignored in this declaration [enabled by default]

 };

 ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:25:1: warning: 'typedef' was ignored in this declaration [enabled by default]

 };

 ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:30:1: warning: 'typedef' was ignored in this declaration [enabled by default]

 };

 ^

In file included from C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:6:0,

                 from C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:1:

C:\Program Files (x86)\Arduino\libraries\Bridge\src/YunServer.h:24:2: warning: #warning "The use of YunServer is deprecated. Use BridgeServer instead!" [-Wcpp]

 #warning "The use of YunServer is deprecated. Use BridgeServer instead!"

  ^

In file included from C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:7:0,

                 from C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:1:

C:\Program Files (x86)\Arduino\libraries\Bridge\src/YunClient.h:24:2: warning: #warning "The use of YunClient is deprecated. Use BridgeClient instead!" [-Wcpp]

 #warning "The use of YunClient is deprecated. Use BridgeClient instead!"

  ^

In file included from C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:1:0:

C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:19:1: warning: 'typedef' was ignored in this declaration [enabled by default]

 };

 ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:25:1: warning: 'typedef' was ignored in this declaration [enabled by default]

 };

 ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src/OPC.h:30:1: warning: 'typedef' was ignored in this declaration [enabled by default]

 };

 ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp: In member function 'void OPCSerial::processOPCCommands()':

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:105:89: warning: converting to non-pointer type 'byte {aka unsigned char}' from NULL [-Wconversion-null]

                       Serial.println(byte_callback(OPCItemList[i].itemID,opc_opread,NULL));

                                                                                         ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:109:88: warning: converting to non-pointer type 'int' from NULL [-Wconversion-null]

                       Serial.println(int_callback(OPCItemList[i].itemID,opc_opread,NULL));

                                                                                        ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:113:90: warning: converting to non-pointer type 'float' from NULL [-Wconversion-null]

                       Serial.println(float_callback(OPCItemList[i].itemID,opc_opread,NULL));

                                                                                          ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp: In member function 'void OPCNet::processOPCCommands()':

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:237:93: warning: converting to non-pointer type 'byte {aka unsigned char}' from NULL [-Wconversion-null]

                             client.print(byte_callback(OPCItemList[i].itemID,opc_opread,NULL));

                                                                                             ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:241:92: warning: converting to non-pointer type 'int' from NULL [-Wconversion-null]

                             client.print(int_callback(OPCItemList[i].itemID,opc_opread,NULL));

                                                                                            ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:245:94: warning: converting to non-pointer type 'float' from NULL [-Wconversion-null]

                             client.print(float_callback(OPCItemList[i].itemID,opc_opread,NULL));

                                                                                              ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp: In member function 'void OPCEthernet::processClientCommand()':

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:387:79: warning: converting to non-pointer type 'byte {aka unsigned char}' from NULL [-Wconversion-null]

               client.print(byte_callback(OPCItemList[i].itemID,opc_opread,NULL));

                                                                               ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:391:78: warning: converting to non-pointer type 'int' from NULL [-Wconversion-null]

               client.print(int_callback(OPCItemList[i].itemID,opc_opread,NULL));

                                                                              ^

C:\Users\Илья\Documents\Arduino\libraries\OPC\src\OPC.cpp:395:80: warning: converting to non-pointer type 'float' from NULL [-Wconversion-null]

               client.print(float_callback(OPCItemList[i].itemID,opc_opread,NULL));
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Ilya от 03 Июня 2016, 09:09:45
Я все еще не понимаю, почему у меня не работает. Помогите, пожалуйста. Хелп :'(
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Simple-Scada от 03 Июня 2016, 11:14:19
Ilya, трудно сказать почему именно редактор не видит публичных тегов на OPC-сервере Arduino. У нас такой код работает. Эта строка регистрирует новый тег на сервере:
Код
aOPCSerial.addItem("led", opc_readwrite, opc_bool, callback);
и в ней всё корректно.

Пытались ли Вы добавить не только bool-теги, но и теги с другими типами данных (например int)? В этой теме (https://simple-scada.com/forum/index.php?topic=114.msg728#msg728) есть много примеров. И ещё, удается ли увидеть теги утилитой ItemProperty (https://www.simple-scada.com/downloads/ItemProperty.rar)?
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Timur007 от 11 Июня 2016, 21:38:11
Здравствуйте! Столкнулся с такой же проблемой. Сам проект разрабатывал на Win7 x 64.  Теперь переношу проект на машину которая будет стоять в цеху (WinXP x 86) и появляется эта ошибка. При поиске в редакторе OPC сервер сразу находится. При попытке импорта переменных выдает вышеописанную ошибку. В чем может быть проблема?
Проблема именно в связке OPC и Simple SCADA т.к. подключаюсь сторонней утилитой к OPC серверу я вижу все переменные и их значения.
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Simple-Scada от 11 Июня 2016, 22:11:22
О каком OPC-сервере идет речь? Вы установили компоненты OPC-core components? (скачать можно здесь (https://simple-scada.com/download)). Также убедитесь, что скада не блокируется антивирусом.

Цитировать
...т.к. подключаюсь сторонней утилитой к OPC серверу я вижу все переменные и их значения.
Вы говорите о утилите ItemProperty, которая описана в сообщении выше? Если о другой, то проверьте через ItemProperty, видит ли она теги?
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Timur007 от 11 Июня 2016, 23:04:08
Использую OPC сервер Modbus бесплатную версию на 32 тега insat
Если просто регистрирую сервер в реестре bat файлом то все работает нормально
Если регистрирую сервер как сервис другим bat файлом то теги не видны в SCADA
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Simple-Scada от 13 Июня 2016, 21:20:44
Вы пробовали подключиться утилитой ItemProperty? Удается ли найти сервер и увидеть теги?
Уточните, у Вас не видны только теги? Сам OPC-сервер виден? Если только теги, то убедитесь, что служба MasterOPC работает (для этого нужно перезагрузить компьютер после регистрации сервера).
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: alex_karn от 01 Июля 2016, 01:00:22
Здравствуйте! у меня такой вопрос: Есть арендованый удаленный сервер со статическим IP. На нем установлен ОРС сервер INsat, и simple scada 2. ОРС сервер работает т.е. получает данные удаленно с контроллеров, так же scada server запущен видит ОРС сервер, запущены проекты в том чисде и демо. НО если я запускаю клиент скады на сервере то все работает, а вот с удаленного компьтера все зависает на фразе: "подождите....Выполняется поиск проектов на сервере:188.........173:8750 и в таком виде висит бесконечно не пишет ни чего! как исправить??????????????
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Simple-Scada от 01 Июля 2016, 09:16:05
alex_karn, это означает, что клиент отправил запрос серверу на получение списка проектов, но сервер не ответил. Это проблема связи между клиентом и сервером и на каком-то этапе эта связь обрывается/блокируется. Может возникать по следующим причинам:
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: AlPe от 16 Сентября 2016, 15:41:10
"Вы пробовали подключиться утилитой ItemProperty? Удается ли найти сервер и увидеть теги?
Уточните, у Вас не видны только теги? Сам OPC-сервер виден? Если только теги, то убедитесь, что служба MasterOPC работает (для этого нужно перезагрузить компьютер после регистрации сервера)."
У меня аналогичная проблема - работает OPC-сервер Fatek, ItemProperty видит его, но при попытке Connect пишет "Отказано в доступе, ClassID .....".
Название: Re: Ошибка при подкючении к OPC серверу для чтения списка тегов
Отправлено: Simple-Scada от 16 Сентября 2016, 16:21:48
AlPe, OPC-сервер находится на удаленном компьютере или на локальном? Если на локальном, то попробуйте завершить работу OPC-сервера и затем подключиться через Itep Property. Утилита должна сама запустить OPC-сервер. Иногда это помогает, хотя ошибка "Отказано в доступе, ClassID ....." говорит о том что у приложения нет достаточных прав для подключения к OPC-серверу. Можно также попробовать запускать утилиту от имени администратора.