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
 
Kod:
#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
 

Forum istatistikleri

Konular
8,361
Mesajlar
137,226
Üyeler
3,316
Son üye
Ahmet can

Son kaynaklar

Son profil mesajları

mechanic ayhanarican mechanic wrote on ayhanarican's profile.
https://www.allmystery.de almanca biliyorsan burada araştır. Yapay zekada çeviriyor gerçi.
Almanların matematik bilgisi daha iyi oluyor.
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Back
Top