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