Simple-Scada 1.3.3 и ниже > Ваши вопросы

Simple-Scada и Arduino

<< < (2/28) > >>

garry:
С ds18b20 у кого-то получилось? У меня та-же печалька.

Андрей:
Нет. У меня так и не заработало с даласом, библиотеки не совместимы, допиливать нужно. Писал сюда http://www.st4makers.com/support-forum-arduino-opc-server/146-ds18b20-opc разработчик тоже молчит.

garry:
Досадно, придется по модбасу прикручивать. А идея с ардуиновским сервером была чертовски хороша.

Simple-Scada:
Андрей, а почему в Вашем коде команда "sensors.requestTemperatures();" стоит в функции "int item_bool"? Это и есть запрос на чтение температуры, а значит температура будет считана в скаду лишь единожды - во время запуска, ведь событие OnDataChange для температуры больше не выполнится. Поэтому эта строка должна быть в цикле loop.

дополнено: моя ошибка, все же не обязательно ставить requestTemperatures в цикл, ведь в Вашем случае команда будет выполняться при каждом опросе тега со скады и это в целом нормально. Но все-таки правильнее было бы поместить его в loop


--- Цитировать --- У меня так и не заработало с даласом, библиотеки не совместимы, допиливать нужно.
--- Конец цитаты ---
Почему Вы говорите о несовместимости библиотек? Как мы поняли температура все таки передается в скаду. Но проблема в том, что передается только один раз. Если это так, значит дело может быть не в скаде или датчике, а в коде, который используется для чтения температуры.

Также непонятно почему Вы добавляете тег на OPC как "opc_bool", температура это ведь не 0 или 1, а аналоговое значение. Затем при чтении вы используете int (целочисленный тип), хотя лучше бы это был float (вещественный тип), ведь getTempCByIndex возвращает именно float.

В результате должно получиться вот что:


--- Код: (c++) ---#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);
float item_temperature(const char *itemID, const opcOperation opcOP, const float value){
     return  sensors.getTempCByIndex(0);
}

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

void loop() {
  sensors.requestTemperatures();
  aOPCSerial.processOPCCommands();
}Возможно это не решит Вашу проблему, но этот код правильнее. И скажите, передается ли температура в скаду хотя бы один раз?

janga:
Поставил OPC-Arduino, зарегил, SCADA увидела и добавила в список выбора новый OPC,но потом дичь вылазить-запускаю item property и подключаюсь к ардуиносерверу - в итоге выскакивает неостанавливаемый список дебагов винды, который не остановить даже диспечтером.Что это может быть? Винда 7 32-bit.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии
Mobile View