Jump to content

Recommended Posts

Geschrieben

Problem: Ich kann die Modbus Register weder auslesen noch setzen.

Modbus ist 

Firmware: 2.7.5+67bf44a8 (erstellt 26.02.2025 17:43:20, von Tinkerforge GmbH)

 

Der nachfolgende Code bei den liefert Adressen 1002 und 1004 immer <Buffer 00 00 00 00> zurück, egal ob geladen wird oder nicht.

Auch kann ich auf keine anderen Register zugreifen ("IllegalDataAddress").

Was mache ich falsch?

 

 

// typescript 4.9.5
import modbus, { TCPStream } from 'modbus-stream'
modbus.tcp.connect( 502, '192.168.178.55', { debug: '_' }, ( err: any, connection: TCPStream | undefined ) => {
  if ( err ) {
    console.error( err )

  } else if ( connection ) {
    connection.readHoldingRegisters( {
      address: 1002,
      quantity: 4,
    }, ( err: any, data: any ) => {
      if ( err ) {
        console.error( err )

      } else {
        const test = Buffer.from( data.response.data )
        console.log( test )
      }
    } )
  }
} )
Geschrieben

An Holding Register 1002 und 1003 liegt der von Modbus erlaubte Ladestrom, an 1004 und 1005 das Front-LED-Blinkmuster. Wolltest du stattdessen die Input Register 1002 bis 1005 lesen? Dann würdest du den Ladestatus und die User-ID zurückbekommen.

Geschrieben

Nur um das offensichtliche auszuschließen: Du hast unter Schnittstellen -> Modbus TCP mindestens den Lesezugriff aktiviert und die WARP Charger-Registertabelle ausgewählt? Bekommst du im Ereignislog eine Ausgabe in der Art von "modbus_tcp_srvr  | client connected: peer_address=123456789 port=47496"?

On 3/4/2025 at 10:15 PM, guidoBln said:

Ja, genau das habe ich vor.

Sorry, ich bin verwirrt. Du hast vor die Holding oder die Input Register zu lesen?

Geschrieben

Versuch mal direkt

console.log(data.response.data)

anstatt von

const test = Buffer.from( data.response.data )
console.log( test )

data.response.data ist schon ein Array von Buffern. Ich bekomme

[ <Buffer 00 00>, <Buffer 00 01>, <Buffer ff ff>, <Buffer ff ff> ]

wenn ein Auto angesteckt ist, also einen Buffer pro Register mit je 2 Byte drin. Du müsstest dann noch herausbekommen, wie man aus jeweils zwei Buffern eine 32-Bit-Zahl macht.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...