Arduino Modbus Kütüphane

rubens

Üye
Katılım
25 Ağustos 2022
Mesajlar
21
Merhaba modbus protokol ile uğraştığım projeme iyi bir kütüphane bulamadım. şuan veri okuma ile ilgili olarak bulduğum en iyi şu kütüphane var ancak burada da write single register gönderdiğimde fonksiyon olarak belirlenen farklı birşey gönderiyor ve bunu değiştiremedim/çalıştıramadım. fonksiyon olarak 06 write single register diye gönderdiğim komutum seri porttan dinlediğimde 10 olarak bir komut atıyor. bilgisi olan arkadaşlarım yardımcı olabilirmi? teşekkürler https://github.com/jecrespo/simple-modbus/tree/master/Modbus RTU libraries for Arduino
 
similatörden dinlediğimde şöyle bir yanıt alıyorum.
01 86 03 02 61
Exception Response
03 = Illegal Data Value
 
kod1:
#include "config.h"
#include <AdafruitIO_Feed.h>
#include <ModbusRTU.h>
#include <Wire.h>
#include <Wifi.h>
#include "SSD1306Wire.h"

#define SERIAL_COMMUNICATION_CONTROL_PIN 19
ModbusRTU mb;

#define LED 9
const int ledPin = 2;
uint16_t res[5];

bool cb(Modbus::ResultCode event, uint16_t transactionId, void *data)
{ // Callback to monitor errors
  if (event != Modbus::EX_SUCCESS)
  {
    Serial.println("Request result: 0x");
    Serial.println(event, HEX);
  }
  return true;
}

AdafruitIO_Feed *analog = io.feed("analog");

SSD1306Wire display(0x3c, 22, 23);
void setup()
{
  Serial.begin(9600);

  Serial2.begin(9600, SERIAL_8N1, 16, 17);
  mb.begin(&Serial2, SERIAL_COMMUNICATION_CONTROL_PIN);
  mb.master();

  while (!Serial)
    ;

  delay(200);
  Serial.print("Connecting to  IO");

  io.connect();

  while (io.status() < AIO_CONNECTED)
  {
    Serial.print("IO Bekleniyor");
    delay(500);
  }
  analog->onMessage(handleMessage);

  Serial.println();
  Serial.print("ESP Board MAC Address:  ");
  Serial.println(io.statusText());

  pinMode(SERIAL_COMMUNICATION_CONTROL_PIN, OUTPUT);
  digitalWrite(SERIAL_COMMUNICATION_CONTROL_PIN, 1);
  digitalWrite(SERIAL_COMMUNICATION_CONTROL_PIN, 0);

  display.init();
  delay(100);
  display.flipScreenVertically();
  display.setFont(ArialMT_Plain_10);
  display.drawString(0, 5, "TEST");

  display.display();

  delay(200);
}

void loop()
{
  io.run();
  mb.task();
  yield();
}

void handleMessage(AdafruitIO_Data *data)
{

  // convert the data to integer
  uint16_t reading = data->toInt();

  Serial.print("received <- ");
  Serial.println(reading);
  //mb.writeHreg(1, 2, &reading, 1, cb); // id, StartAdres, Data, count, cb
  //mb.writeHreg(1, 3, &reading, 1, cb); // orp
  mb.writeHreg(1, 3, &reading, 1, cb); // ph
  display.clear();
  display.drawString(0, 0, "pH=" + String(reading));

  display.display();
   delay(100);
}
 
Screenshot_13.png

01 slave id 06 write komut 00 03 adres 00 01 count 04 26 crc ama sonuna değişik bir veri daha atıyor o veri yüzünden doğrulamıyor slave ama öyle bir veri yok. kod ile ilgili bir sorun varsa onuda çözemedim
 

Çevrimiçi personel

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,958
Mesajlar
118,802
Üyeler
2,825
Son üye
bekinci

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top