OPC и ds18b20
- Войдите на сайт для отправки комментариев
Привет форум 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();
}
Вот здесь посмотрите: http://www.youtube.com/watch?v=He8vM4x_B5o