Аналоговый сигнал по MODBUS

ДмитрийKRV
Offline
Зарегистрирован: 05.08.2019

Здраствуйте.
У меня стоит задача считывать аналоговый сигнал ардуиной и передавать его по Modbaus в SimpleScada. Примеры с реализацией есть на сайте SimpleScada https://support.simplight.ru/knowledge-bases/2/articles/601-podklyuchenie-arduino-k-simp-lajt-cherez-modbus-rtu
Но как реализовать передачу сигнала с аналогово входа там примера не приводится. 

Помагите с примером или хотя бы в какую сторону капать.

mixail844
Offline
Зарегистрирован: 30.04.2012

Что конкретно у вас не получаеться? Оцифиовать сигнал, поместить в соответствующий регистр, передать данные по протоколу?
Покажите пример вашей попытки,какой чистоты сигнал вы пытаетесь оцифровать?

ДмитрийKRV
Offline
Зарегистрирован: 05.08.2019

Примера моей попытки пока не существует. Я ищу пример кода, который можно было бы взять за основу.
Нашел пример подключения датчиков температуры и влажности:
 

#include <iarduino_DHT.h>
#include <ModbusRtu.h>
#include <SoftwareSerial.h>
#include <DHT.h>
#define ID 1 // адрес ведомого
#define DHTPIN 12 // номер входа, подключенный к датчику температуры
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
iarduino_DHT sensor1(3);
Modbus slave(ID, 0, 0);
int _gtv1;
int _gtv2;
uint16_t au16data[11];
unsigned long _dht1Tti = 0UL;
void setup() {
  // настраиваем последовательный порт ведомого
  slave.begin(9600);
  dht.begin();
}
void loop() {
  float _dht1t = dht.readHumidity(); // Считывание влажности
  float _dht1h = dht.readTemperature(); // Считывание температуры
 
  sensor1.read();
  slave.poll(au16data, 11);
  _gtv1 = _dht1t;
  _gtv2 = _dht1h;
  au16data[1] = _gtv1;      // DHT - pin3
  au16data[2] = _gtv2;
}

Может быть, данный пример можно взять за основу? Но как уйти от конкретных датчиков температуры и влажности и привязаться к аналоговому входу 0-5В.

PS. в программировании Ардуино имею поверхностные знания. 

b707
Онлайн
Зарегистрирован: 26.05.2017

ДмитрийKRV пишет:

PS. в программировании Ардуино имею поверхностные знания. 

а в программировании вообще?

Судя по всему. уровень Ваш самый начальный. Тут как бы два пути - если хотите быстро решить свою задачу - закажите разработку за деньги, если хотите научиться сами - начните с изучения основ, не беритесь сразу за сложное

ДмитрийKRV
Offline
Зарегистрирован: 05.08.2019

И на том спасибо :)

nik182
Offline
Зарегистрирован: 04.05.2015

На форуме уже были темы как передать значение температуры с датчика по модбасу. Идея в том, что модбас имеет только целые шестнадцатибитные регистры. Поэтому надо или умножить температуру на 100 привести к типу word и передать в одном регистре модбуса. Тоже самое и с влажностью. На стороне компьютера разделить на 100 и получить правильное значение. Или разделить float на целую и дробную части и передать их отдельно в двух регистрах модбаса, а на стороне компа восстановить. И кроме того влажность не бывает дробной а температура хоть и бывает, но этот датчик имеет большую погрешность и смотреть доли градуса с помощью него смешно. Т.е. можно передавать только целые части результата. Для этого хватит двух ячеек модбаса.