Аналоговый сигнал по MODBUS
- Войдите на сайт для отправки комментариев
Пнд, 05/08/2019 - 02:38
Здраствуйте.
У меня стоит задача считывать аналоговый сигнал ардуиной и передавать его по Modbaus в SimpleScada. Примеры с реализацией есть на сайте SimpleScada https://support.simplight.ru/knowledge-bases/2/articles/601-podklyuchenie-arduino-k-simp-lajt-cherez-modbus-rtu
Но как реализовать передачу сигнала с аналогово входа там примера не приводится.
Помагите с примером или хотя бы в какую сторону капать.
Что конкретно у вас не получаеться? Оцифиовать сигнал, поместить в соответствующий регистр, передать данные по протоколу?
Покажите пример вашей попытки,какой чистоты сигнал вы пытаетесь оцифровать?
Примера моей попытки пока не существует. Я ищу пример кода, который можно было бы взять за основу.
Нашел пример подключения датчиков температуры и влажности:
#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. в программировании Ардуино имею поверхностные знания.
PS. в программировании Ардуино имею поверхностные знания.
а в программировании вообще?
Судя по всему. уровень Ваш самый начальный. Тут как бы два пути - если хотите быстро решить свою задачу - закажите разработку за деньги, если хотите научиться сами - начните с изучения основ, не беритесь сразу за сложное
И на том спасибо :)
На форуме уже были темы как передать значение температуры с датчика по модбасу. Идея в том, что модбас имеет только целые шестнадцатибитные регистры. Поэтому надо или умножить температуру на 100 привести к типу word и передать в одном регистре модбуса. Тоже самое и с влажностью. На стороне компьютера разделить на 100 и получить правильное значение. Или разделить float на целую и дробную части и передать их отдельно в двух регистрах модбаса, а на стороне компа восстановить. И кроме того влажность не бывает дробной а температура хоть и бывает, но этот датчик имеет большую погрешность и смотреть доли градуса с помощью него смешно. Т.е. можно передавать только целые части результата. Для этого хватит двух ячеек модбаса.