Simple-Scada 1.3.3 и ниже > Ваши вопросы
Simple-Scada и Arduino
Simple-Scada:
Трудно сказать почему возникает эта ошибка. Этот вопрос связан c Arduino OPC Server.
cuperxs:
Поскольку разработчик убрал все ссылки из свободного доступа и требует проходить невнятный опрос с отправкой письма в ваш спам, выкладываю ссылку на 2.0 версию сервера:
http://st4makers.com/old/phocadownload/arduinoopcserver_2_0.zip
и копия на GDrive https://drive.google.com/file/d/179IYuK2Nm54PltdX2lxX-SrHqvCkFBDa
steam_engineer:
Всем доброго времени суток!
Подключил датчик температуры 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 данной темы - всё то же самое.
Прошу у Вас помощи в решении данной ситуации. Может я что-то упустил?
Simple-Scada:
Здравствуйте.
Нужно устанавливать компоненты ОРС Core Components (x86), т.к. используемый Вами OPC-сервер является 32-битным. Перед установкой удалите 64-битную версию компонентов.
--- Цитировать ---Во-первых, смущает то что в Simole Scada и в ItemProperty у сервера номер 2 в конце, а ни как у всех 1: "ArduinoOPCServer.2".
--- Конец цитаты ---
2 это номер версии OPC-сервера. Раньше все устанавливали первую версию.
--- Цитировать ---Во-вторых, ItemProperty не видит адреса тегов, ровно как и Simple Scada:
--- Конец цитаты ---
Здесь всё зависит от OPC-сервера. Тег точно регистрируется в программе через "aOPCSerial.addItem("T1", opc_read, opc_float, item_temperature1);", но OPC-сервер по каким-то причинам не отдаёт его OPC-клиентам (скаде и ItemProperty).
Навигация
Перейти к полной версии