1
Ваши вопросы / Re: Simple-Scada и Arduino
« : 09 Марта 2019, 19:50:04 »
Всем доброго времени суток!
Подключил датчик температуры DS18B20 к Ардуино, проверил как он работает через монитор порта - всё отлично, показания верные. Поставил задачу подружить с верхним уровнем. Вот скачал Simple-Scada 2 (2.3.4.0 | 19.02.2019), скачал и установил Arduino OPC-сервер 2.0 из Ответа #140 этой темы (не забыв про "register.bat"), ОРС Core Components (x64), и даже Arduino IDE 1.6.5, как писали в данной теме.
Код взял из Ответа #69:
... и чуда не произошло.
Во-первых, смущает то что в Simole Scada и в ItemProperty у сервера номер 2 в конце, а ни как у всех 1: "ArduinoOPCServer.2".


Во-вторых, ItemProperty не видит адреса тегов, ровно как и Simple Scada:

У меня установлена Windows 10 Pro x64. Всё запускаю от имени администратора. пробовал код из Ответа #2 данной темы - всё то же самое.
Прошу у Вас помощи в решении данной ситуации. Может я что-то упустил?
Подключил датчик температуры DS18B20 к Ардуино, проверил как он работает через монитор порта - всё отлично, показания верные. Поставил задачу подружить с верхним уровнем. Вот скачал Simple-Scada 2 (2.3.4.0 | 19.02.2019), скачал и установил Arduino OPC-сервер 2.0 из Ответа #140 этой темы (не забыв про "register.bat"), ОРС Core Components (x64), и даже Arduino IDE 1.6.5, как писали в данной теме.
Код взял из Ответа #69:
Код: (c#)
#include <OPC.h>
#include <Bridge.h>
#include <Ethernet.h>
#include <SPI.h>
#include <OneWire.h>
OPCSerial aOPCSerial;
OneWire ds (4);
byte data[12];
byte addr1[8] = {0x28, 0xFF, 0x4F, 0x81, 0xA6, 0x16, 0x3, 0x1B}; // ID индивидуально для каждого датчика
unsigned int raw;
float temp1;
//OneWire oneWire(DS);
//DallasTemperature sensors(&oneWire);
float item_temperature1(const char *itemID, const opcOperation opcOP, const float value){
temp1 = DS18B20(addr1);
return temp1;
}
void setup() {
Serial.begin(9600);
aOPCSerial.setup();
aOPCSerial.addItem("T1", opc_read, opc_float, item_temperature1);
}
void loop() {
//sensors.requestTemperatures();
aOPCSerial.processOPCCommands();
}
float DS18B20(byte *adres)
{
ds.reset();
ds.select(adres);
ds.write(0x44, 1); // start conversion, with parasite power on at the end
ds.reset();
ds.select(adres);
ds.write(0xBE); // Read Scratchpad
for (byte i = 0; i < 9; i++) // можно увеличить точность измерения до 0.0625 *С (от 9 до 12 бит)
{ // we need 9 bytes
data[i] = ds.read ();
}
raw = (data[1] << 8) | data[0];//=======Пересчитываем в температуру
float celsius = (float)raw / 16.0;
return celsius;
}
... и чуда не произошло.
Во-первых, смущает то что в Simole Scada и в ItemProperty у сервера номер 2 в конце, а ни как у всех 1: "ArduinoOPCServer.2".


Во-вторых, ItemProperty не видит адреса тегов, ровно как и Simple Scada:

У меня установлена Windows 10 Pro x64. Всё запускаю от имени администратора. пробовал код из Ответа #2 данной темы - всё то же самое.
Прошу у Вас помощи в решении данной ситуации. Может я что-то упустил?