OPC и ds18b20

magian
Offline
Зарегистрирован: 13.10.2015

Привет форум arduino) 

Люди добрые, кто имеет опыт, отзовись...! Для проекта необходимо подключить arduino к scada (выбрал simple-scada), через OPC. Подключил к uno ds18b20 12 порт, используется бибилеотеки OPC и DallasTemperature, uno подключено по usb-serial COM5.  При посылке T в консоль, получаю температуру, но при запуски scada знчение температуры приходит только первый раз, дальше ошибка. Может быть эти 2 библиотеки конфликтуют? Поиском MatrikonOPC Explorer находит сервер OPC, его тэг, значение так же один раз. Сервер OPC используется ArduinoSerialOPCDAServer, логи с него ниже. Еще ставил opc-core-components https://opcfoundation.org/developer-tools/developer-kits-classic/core-components

Помагите плиз.

13.10.2015 11:03:52 > Waiting for OPC clients to connect....
13.10.2015 11:03:52 > Connected client 
13.10.2015 11:03:52 > Trying to open COM5 port
13.10.2015 11:03:52 > COM5 port open
13.10.2015 11:03:52 > Asking for available OPCItems from ArduinoSerial0
13.10.2015 11:03:52 > Frame: <0,T,0,2>
1
13.10.2015 11:03:52 > Returned OPC Items ms:31
13.10.2015 11:03:53 > Client asks for: T
13.10.2015 11:03:53 > Not frame received for T
13.10.2015 11:03:53 > Client asks for: T
13.10.2015 11:03:53 > Received T value OK. Returned frame:23 length:2 Frame: 3233
13.10.2015 11:03:57 > Client asks for: T
13.10.2015 11:03:57 > Not frame received for T
13.10.2015 11:03:59 > Client asks for: T
13.10.2015 11:03:59 > Not frame received for T
13.10.2015 11:04:01 > Client asks for: T
13.10.2015 11:04:01 > Not frame received for T
#include <OPC.h>
#include <Bridge.h>
#include <Ethernet.h>
#include <SPI.h>
#include <OneWire.h>
#include <DallasTemperature.h>
OPCSerial aOPCSerial;

int DS = 12;
OneWire oneWire(DS);
DallasTemperature sensors(&oneWire);
int item_int(const char *itemID, const opcOperation opcOP, const int value){
             sensors.requestTemperatures();
     return  sensors.getTempCByIndex(0);
}

void setup() {
  Serial.begin(9600);
  aOPCSerial.setup();
  aOPCSerial.addItem("T",opc_read, opc_int, item_int);
}

void loop() {
  aOPCSerial.processOPCCommands();
}
vuz
Offline
Зарегистрирован: 17.02.2016

Вот здесь посмотрите: http://www.youtube.com/watch?v=He8vM4x_B5o