Announcement

Collapse
No announcement yet.

ModBus/TCP Protokoll

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ModBus/TCP Protokoll

    Hallo,

    ich probiere mittels einer in C programmierten Steuerung von B&R über die darin enthaltene Ethernet-Schnittstelle eine ModBus/TCP Karte anzusprechen, um Daten zu übertragen bzw. auzulesen.
    Die eigentliche Ethernet-Verbindung baut sich von selbst auf. Mittels vordefinierter Funktionen von B&R kann ich meine Daten via Ethernet auch versenden, das klappt auch ganz gut. Ich muß mir mein ModBus Telegramm allerdings komplett selbst zusammenbauen, da diese Funktion nicht vorprogrammiert ist.

    Gemäß Spezifikation des ModBus/TCP Protokolls sende ich eine Kette von Bytes innerhalb eines einzigen Ethernet-Rahmens. In diesen Bytes sind nun die benötigten ModBus-Informationen vorhanden:

    B Typ Name Wert
    2 UINT TIdentifier; /*Transaction ID: 0h*/
    2 UINT PIdentifier; /*Protokoll: 0h*/
    1 USINT Length_MSB; /*0h*/
    1 USINT Length_LSB; /*Länge folgender Bytes*/
    1 USINT UIdentifier; /*ModBus Slave Adresse: 0h*/
    1 USINT Funktion; /*Bestätigung der Funktion 03h*/
    2 UINT Adresse; /*Adresse: 0h*/
    2 UINT Words; /*Datenlänge: 76 Byte = 38 Wort*/

    Daraufhin erhalte ich eine Bestätigung und die angeforderten Daten.

    Um meine Daten zu senden, verwende ich Funktion 10h, da ich alle Daten auf einmal schreiben will. Dazu sende ich , ebenfalls gemäß Spec:

    2 UINT TIdentifier; /*2 Byte Transaction-ID: 0000h*/
    2 UINT PIdentifier; /*2 Byte Protokoll ID: 0000h */
    2 UINT DataLength; /*Daten gesendet: 23 (0017h)*/
    1 USINT UIdentifier; /*1 Byte Unit Code: Nr. des Slave: 0h*/
    1 USINT FunctionCode; /*Funktion 10h*/
    1 USINT ModBusAdresseH; /*Adresse der Daten: 0x04 Write*/
    1 USINT ModBusAdresseL; /*Adresse der Daten: 0x01 Write*/
    1 USINT WordH; /*0h*/
    1 USINT WordL; /* 08h (8 Word)*/
    1 USINT Byte; /* 10h (16 Byte)*/
    und noch 16 Byte Daten

    Daraufhin erhalte ich keine Reaktion der Schnittstelle, nicht mal eine Fehlermeldung. Und ich verstehe einfach nicht warum, denn eigentlich sollte es doch so gehen, aber wo liegt mein Fehler? Offensichtlich wird dies nicht als ModBus Telegramm erkannt, sonst sollte wenigstens irgendeine Antwort kommen?

    Leider finde ich niemanden (nicht mal den Hersteller und den Verkäufer des ModBus Moduls), der sich mit ModBus mehr als oberflächlich auskennt. Ich hoffe, auf diesem Wege jemanden zu finden...

    MfG

    jensencom
    Zuletzt editiert von Gast_1; 04.02.2010, 14:03.

  • #2
    Closed

    Danke, hat sich gelöst...

    Comment


    • #3
      Hallo jensencom,
      genau vor diesem Problem stehe ich auch gerade.
      Es wäre nett von Dir, wenn Du mir einen LÖsungsweg nennen könntest.
      Gruss Skyracer90...

      Comment

      Working...
      X