PV Regler Tacer 2210AN Auslesen

Hallo,
habe Problem mit auslesen der Daten vom Mppt Regler Tracer 2210AN,
er hat Modbus RS485 Schnittstelle mit RJ45 Anschluss.
Google hat sehr viel gefunden nur leider nicht das was ich suche.
Als Konverter benutze ich

Habe dazu passende Bibliothek gefunden sogar mit Beispiel

[code]
/*

  RS485_HalfDuplex.pde - example using ModbusMaster library to communicate
  with EPSolar LS2024B controller using a half-duplex RS485 transceiver.

  This example is tested against an EPSolar LS2024B solar charge controller.
  See here for protocol specs:
  http://www.solar-elektro.cz/data/dokumenty/1733_modbus_protocol.pdf

  Library:: ModbusMaster
  Author:: Marius Kintel <marius at kintel dot net>

  Copyright:: 2009-2016 Doc Walker

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

#include <ModbusMaster.h>

/*!
  We're using a MAX485-compatible RS485 Transceiver.
  Rx/Tx is hooked up to the hardware serial port at 'Serial'.
  The Data Enable and Receiver Enable pins are hooked up as follows:
*/
#define MAX485_DE      3
#define MAX485_RE_NEG  2

// instantiate ModbusMaster object
ModbusMaster node;

void preTransmission()
{
  digitalWrite(MAX485_RE_NEG, 1);
  digitalWrite(MAX485_DE, 1);
}

void postTransmission()
{
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);
}

void setup()
{
  pinMode(MAX485_RE_NEG, OUTPUT);
  pinMode(MAX485_DE, OUTPUT);
  // Init in receive mode
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);

  // Modbus communication runs at 115200 baud
  Serial.begin(115200);

  // Modbus slave ID 1
  node.begin(1, Serial);
  // Callbacks allow us to configure the RS485 transceiver correctly
  node.preTransmission(preTransmission);
  node.postTransmission(postTransmission);
}

bool state = true;

void loop()
{
  uint8_t result;
  uint16_t data[6];

  // Toggle the coil at address 0x0002 (Manual Load Control)
  result = node.writeSingleCoil(0x0002, state);
  state = !state;

  // Read 16 registers starting at 0x3100)
  result = node.readInputRegisters(0x3100, 16);
  if (result == node.ku8MBSuccess)
  {
    Serial.print("Vbatt: ");
    Serial.println(node.getResponseBuffer(0x04) / 100.0f);
    Serial.print("Vload: ");
    Serial.println(node.getResponseBuffer(0xC0) / 100.0f);
    // Serial.print("Pload: ");
    // Serial.println((node.getResponseBuffer(0x0D) +  node.getResponseBuffer(0x0E) << 16)/100.0f);
  }

  delay(1000);
}

[/code]

nur leider bei Kompilieren ist mehr rot als schwarz, deshalb keine abfrage der Daten
Hat jemand ein Tip für mich ?
Danke
Bernhard

Haben Sie die ModbusMaster-Bibliothek installiert?
kopiere die Fehlermeldung und füge sie hier ein...

Ja habe ich hier die Fehlerliste. Meine Vermutung ist das Die CRC berechnung fehlerhaft ist.

C:\Users\Papi\AppData\Local\Temp\arduino_modified_sketch_77058\RS485_HalfDuplex.ino: In function 'void loop()':
C:\Users\Papi\AppData\Local\Temp\arduino_modified_sketch_77058\RS485_HalfDuplex.ino:77:12: warning: unused variable 'data' [-Wunused-variable]
   uint16_t data[6];
            ^~~~
In file included from C:\Users\Papi\Documents\Arduino\libraries\ModbusMaster-2.0.0\src/ModbusMaster.h:58:0,
                 from C:\Users\Papi\AppData\Local\Temp\arduino_modified_sketch_77058\RS485_HalfDuplex.ino:29:
C:\Users\Papi\Documents\Arduino\libraries\ModbusMaster-2.0.0\src/util/crc16.h: At global scope:
C:\Users\Papi\Documents\Arduino\libraries\ModbusMaster-2.0.0\src/util/crc16.h:71:17: warning: 'uint16_t crc16_update(uint16_t, uint8_t)' defined but not used [-Wunused-function]
 static uint16_t crc16_update(uint16_t crc, uint8_t a)
                 ^~~~~~~~~~~~
Compiling libraries...

noch was in der neuer librarie 2.0.1 kommen die gleiche fehle also librarie schrot?

Ich sehe dort keinen Fehler, nur 2 Warnungen

Meine Meinung wen CRC falsch berechnet wird gibtes keine Ausgabe oder?
RS485 arbeitet mit CRC Kontrolle so viel habe ich herausgelassen.
Und für Englisch habe ich sehr guten Kollegen =Deepl Übersetzer :wink:

if (result == node.ku8MBSuccess)
Wenn das Lesen der 16 Register fehlgeschlagen ist, haben Sie keine Ausgabe

um das gehts ja habe mir sogar eigebaut abfrage im SeMon

  // Read 16 registers starting at 0x3100)
  result = node.readInputRegisters(0x3100, 16);
  Serial.println(result);//<--------- Hier 
  if (result == node.ku8MBSuccess)
  {
    Serial.print("Vbatt: ");
    Serial.println(node.getResponseBuffer(0x04) / 100.0f);
    Serial.print("Vload: ");
    Serial.println(node.getResponseBuffer(0xC0) / 100.0f);
    // Serial.print("Pload: ");
    // Serial.println((node.getResponseBuffer(0x0D) +  node.getResponseBuffer(0x0E) << 16)/100.0f);
  }

und egal was ich für register auslesen will kommt nur 256 raus

Es sind auch andere Bibliotheken für Modbus aber das ist für mich so Hoh wie ein Wolkenkratzer :tired_face:

also ein write single coil wirst beim Regler nicht brauchen.

Hast du schon das PDF mit den ganzen Registern für deinen Regler gefunden?

Ja sogar zwei
nur was bringt mir das wen das PRG ist schrot
Die beispiele sechen so aus

For example
Read real-time battery voltage
Send command: 01 04 33 1A 00 01 1F 49
Analysis :
 01 device ID
 04 function code
 33 1A the start bit of the address
 00 01 the number of the address
 1F 49 CRC
Receive command : 01 04 02 04 CE 3A 64
Analysis :
 01 device ID
 04 function code
 02 two bytes
 04 CE data(0x04CE (Hex) = 1230 (Dec), 1230/100=12.3V)
 3A 64 CRC 

nur muss ich was anderes bauen und leider ist das noch zu hoch für mich :cry:

1733_modbus_protocol.pdf (234.2 KB)

ich arbeite mit dem PDF lt. Anlage... kommt das bekannt vor?

hast du einen Arduino Mega mit Ethernet Shield zum testen?

Ja den habe ich auch.
Du arbeitest mit anderen Bibliothek habe mir das angesehen aber ist für mich zu hoch

ein kleiner Beispiel wurde reichen

dein Beispielsketch verwendet offenbar HW Serial für Modbus.
Dann kannst nicht parallel etwas auf Serial-Monitor debuggen.

so wird das nix...

aso du kennst meinen Sketch eh? Na dann.

ist mir auch aufgefallen
habe versucht gestern das umändern auf Auslesen der Daten mit Serial3 und anzeigen mit SerMon aber immer nur als Ausgabe wert 256.
oder ist main Modul defekt?

ne Dein Sketsch habe ich nicht gesehen nur das Du mit anderen Bibliothek hast das geschafft

kaum. die sind robust. Frage ist eher, ob du das alles richtig angeschlossen hast.

Zeichne mal einen genauen Schaltplan.
Wo hast du den Mustersketch her - verlinke mal die Quelle.
Welche Modbus-Library verwendest du ganz genau?