INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Modbus RTU Code Probleme
10.12.2020, 21:02 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2020 21:17 von dahans.)
Beitrag #1
Modbus RTU Code Probleme
Hallo liebe Gemeinde,

ich stehe mal wieder vor einem kleinen Problem.

Ich habe Folgenden Beispielcode aus der ModbusRtu.h Bibliothek.

Code:
/**
*  Modbus master example 1:
*  The purpose of this example is to query an array of data
*  from an external Modbus slave device.
*  The link media can be USB or RS232.
*
*  Recommended Modbus slave:
*  diagslave http://www.modbusdriver.com/diagslave.html
*
*  In a Linux box, run
*  "./diagslave /dev/ttyUSB0 -b 19200 -d 8 -s 1 -p none -m rtu -a 1"
*     This is:
*         serial port /dev/ttyUSB0 at 19200 baud 8N1
*        RTU mode and address @1
*/

#include <ModbusRtu.h>

// data array for modbus network sharing
uint16_t au16data[16];
uint8_t u8state;

/**
*  Modbus object declaration
*  u8id : node id = 0 for master, = 1..247 for slave
*  port : serial port
*  u8txenpin : 0 for RS-232 and USB-FTDI
*               or any pin number > 1 for RS-485
*/
Modbus master(0,Serial,0); // this is master and RS-232 or USB-FTDI

/**
* This is an structe which contains a query to an slave device
*/
modbus_t telegram;

unsigned long u32wait;

void setup() {
  Serial.begin( 19200 ); // baud-rate at 19200
  master.start();
  master.setTimeOut( 2000 ); // if there is no answer in 2000 ms, roll over
  u32wait = millis() + 1000;
  u8state = 0;
}

void loop() {
  switch( u8state ) {
  case 0:
    if (millis() > u32wait) u8state++; // wait state
    break;
  case 1:
    telegram.u8id = 1; // slave address
    telegram.u8fct = 3; // function code (this one is registers read)
    telegram.u16RegAdd = 1; // start address in slave
    telegram.u16CoilsNo = 4; // number of elements (coils or registers) to read
    telegram.au16reg = au16data; // pointer to a memory array in the Arduino

    master.query( telegram ); // send query (only once)
    u8state++;
    break;
  case 2:
    master.poll(); // check incoming messages
    if (master.getState() == COM_IDLE) {
      u8state = 0;
      u32wait = millis() + 100;
    }
    break;
  }
}

Das auch alles funktioniert und mit der entsprechenden Hardware auch alles auf einem Seriellen Modbus Monitor zu sehen ist. Das Problem ist folgendes:
ind der 12. Zeile im Code steht das "19200 baud 8N1" benutzt wird, mein slave Gerät benötigt aber 8E1 und ich finde nirgends wo man das ändern könnte...


Schon mal vielen Dank

Gruß Hans
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2020, 21:19 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2020 21:19 von Bitklopfer.)
Beitrag #2
RE: Modbus RTC Code Probleme
(10.12.2020 21:02)dahans schrieb:  Hallo liebe Gemeinde,
ich stehe mal wieder vor einem kleinen Problem.
Ich habe Folgenden Beispielcode aus der ModbusRtu.h Bibliothek.
....
Das auch alles funktioniert und mit der entsprechenden Hardware auch alles auf einem Seriellen Modbus Monitor zu sehen ist. Das Problem ist folgendes:
ind der 12. Zeile im Code steht das "19200 baud 8N1" benutzt wird, mein slave Gerät benötigt aber 8E1 und ich finde nirgends wo man das ändern könnte...
Schon mal vielen Dank
Gruß Hans


Nun das kannst bei Serial.begin einstellen. Allerdings hast du so ein anderes Problem und zwar liegt auf der Serial(0) die Programmierschnittstelle vom Arduino und dann klemmt das da... am besten ist da dann ein Arduion MEGA2560 der noch 3 freie Serielle hat. Oder ein Arduino Leonardo der 1 freie Serielle.
Wie das mit Softwareseriell geht weiß ich nicht.
lgbk


An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollt dann liest euch bitte diese Anleitung durch.

Ich spreche fließend Schwäbisch, Deutsch das Notwendigste und für die Begriffsstutzigen erprobtes Tacheles mit direkten Hinweisen ohne Schnörkel...

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2020, 21:22
Beitrag #3
RE: Modbus RTC Code Probleme
(10.12.2020 21:19)Bitklopfer schrieb:  
(10.12.2020 21:02)dahans schrieb:  Hallo liebe Gemeinde,
ich stehe mal wieder vor einem kleinen Problem.
Ich habe Folgenden Beispielcode aus der ModbusRtu.h Bibliothek.
....
Das auch alles funktioniert und mit der entsprechenden Hardware auch alles auf einem Seriellen Modbus Monitor zu sehen ist. Das Problem ist folgendes:
ind der 12. Zeile im Code steht das "19200 baud 8N1" benutzt wird, mein slave Gerät benötigt aber 8E1 und ich finde nirgends wo man das ändern könnte...
Schon mal vielen Dank
Gruß Hans


Nun das kannst bei Serial.begin einstellen. Allerdings hast du so ein anderes Problem und zwar liegt auf der Serial(0) die Programmierschnittstelle vom Arduino und dann klemmt das da... am besten ist da dann ein Arduion MEGA2560 der noch 3 freie Serielle hat. Oder ein Arduino Leonardo der 1 freie Serielle.
Wie das mit Softwareseriell geht weiß ich nicht.
lgbk

Hallo Bitklopfer,

es geht nicht um die Baudrate von 19200 sondern um das 8N1.....

Alles andere funktioniert wie es soll
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2020, 21:25
Beitrag #4
RE: Modbus RTC Code Probleme
(10.12.2020 21:22)dahans schrieb:  
(10.12.2020 21:19)Bitklopfer schrieb:  
(10.12.2020 21:02)dahans schrieb:  Hallo liebe Gemeinde,
ich stehe mal wieder vor einem kleinen Problem.
Ich habe Folgenden Beispielcode aus der ModbusRtu.h Bibliothek.
....
Das auch alles funktioniert und mit der entsprechenden Hardware auch alles auf einem Seriellen Modbus Monitor zu sehen ist. Das Problem ist folgendes:
ind der 12. Zeile im Code steht das "19200 baud 8N1" benutzt wird, mein slave Gerät benötigt aber 8E1 und ich finde nirgends wo man das ändern könnte...
Schon mal vielen Dank
Gruß Hans


Nun das kannst bei Serial.begin einstellen. Allerdings hast du so ein anderes Problem und zwar liegt auf der Serial(0) die Programmierschnittstelle vom Arduino und dann klemmt das da... am besten ist da dann ein Arduion MEGA2560 der noch 3 freie Serielle hat. Oder ein Arduino Leonardo der 1 freie Serielle.
Wie das mit Softwareseriell geht weiß ich nicht.
lgbk

Hallo Bitklopfer,

es geht nicht um die Baudrate von 19200 sondern um das 8N1.....

Alles andere funktioniert wie es soll

was du nicht sagst...meinst ich verlinke diese Seite nicht ohne Absicht...scroll einfach mal runter DA steht es... wer lesen kann...du weißt schon...Big Grin


An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollt dann liest euch bitte diese Anleitung durch.

Ich spreche fließend Schwäbisch, Deutsch das Notwendigste und für die Begriffsstutzigen erprobtes Tacheles mit direkten Hinweisen ohne Schnörkel...

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2020, 21:43
Beitrag #5
RE: Modbus RTC Code Probleme
(10.12.2020 21:25)Bitklopfer schrieb:  
(10.12.2020 21:22)dahans schrieb:  
(10.12.2020 21:19)Bitklopfer schrieb:  
(10.12.2020 21:02)dahans schrieb:  Hallo liebe Gemeinde,
ich stehe mal wieder vor einem kleinen Problem.
Ich habe Folgenden Beispielcode aus der ModbusRtu.h Bibliothek.
....
Das auch alles funktioniert und mit der entsprechenden Hardware auch alles auf einem Seriellen Modbus Monitor zu sehen ist. Das Problem ist folgendes:
ind der 12. Zeile im Code steht das "19200 baud 8N1" benutzt wird, mein slave Gerät benötigt aber 8E1 und ich finde nirgends wo man das ändern könnte...
Schon mal vielen Dank
Gruß Hans


Nun das kannst bei Serial.begin einstellen. Allerdings hast du so ein anderes Problem und zwar liegt auf der Serial(0) die Programmierschnittstelle vom Arduino und dann klemmt das da... am besten ist da dann ein Arduion MEGA2560 der noch 3 freie Serielle hat. Oder ein Arduino Leonardo der 1 freie Serielle.
Wie das mit Softwareseriell geht weiß ich nicht.
lgbk

Hallo Bitklopfer,

es geht nicht um die Baudrate von 19200 sondern um das 8N1.....

Alles andere funktioniert wie es soll

was du nicht sagst...meinst ich verlinke diese Seite nicht ohne Absicht...scroll einfach mal runter DA steht es... wer lesen kann...du weißt schon...Big Grin


SOOOOOOOrry, hab nicht gecheckt dass das ein Link ist.

Herzlichen Dank, Es Funktioniert...


Gruß Hans
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  MiWuLa Hochofen, Code für Nano? modellbahner81 2 418 07.07.2021 11:27
Letzter Beitrag: elux011
  ModBus-TCP-Client binderj1 3 365 15.06.2021 21:15
Letzter Beitrag: miq19
  digispark-Probleme mit SCD30 Herby007 5 414 22.05.2021 10:56
Letzter Beitrag: hotsystems
  Code zum ansteuern einzelner WS2812B optimieren N1d45 20 1.432 13.05.2021 09:31
Letzter Beitrag: rev.antun
  Probleme mit Virtual Wire FritzHelmut 23 2.197 21.04.2021 19:36
Letzter Beitrag: FritzHelmut
  * vor Variable / Code-Frage N1d45 6 785 13.04.2021 19:49
Letzter Beitrag: N1d45
  Attiny85 Probleme mit Schleifen und Serial-Ausgabe lucki.luke 9 1.386 07.03.2021 20:55
Letzter Beitrag: Tommy56
  Anfänger Frage zu code Beispiel peter_schmieg 4 885 03.03.2021 12:24
Letzter Beitrag: Tommy56
  Verbindung von Arduino mit SPS via Modbus TCP Wono 1 748 03.02.2021 19:57
Letzter Beitrag: shrimps
Question Serial.print - Einfluss auf Code Natsnok 4 763 17.01.2021 16:48
Letzter Beitrag: Natsnok

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste