Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Modbus TCP

  1. #1
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich weiß nicht ob ich hier an der richtigen Stelle bin, aber ich frag einfach mal.
    Ich will über das ModbusTCP- Protokoll Daten zwischen einer Max4 von ELAU und einem Power Panel von B&R austauschen und hab da so meine Probleme.
    Die Modbus- Funktionen sind mir noch nicht ganz klar, also "Write_Multiple_Registers" und so weiter.
    Ich habe auf der ELAU- Steuerung vier Arrays, über die ich Daten austausche.
    Mir ist allerdings noch ein bischen schleierhaft wie die da ankommen. Ich hab dem Panel nur die IP der Steuerung mitgeteilt und das wars dann. Ich beschreibe im Panel Variablen die mit den Modbusfunktionen verknüpft sind und diese Werte tauchen dann in den Arrays auf der Steuerung auf. Hab da noch so meine Verständnisprobleme.
    Zitieren Zitieren Modbus TCP  

  2. #2
    Registriert seit
    13.03.2006
    Beiträge
    428
    Danke
    5
    Erhielt 43 Danke für 43 Beiträge

    Standard

    Wenn Du es genau wissen willst, lies hier nach.
    http://modbus.org/specs.php

    In
    MODBUS Protocol Specification
    auf Seite 11 ist eine gute Übersicht.

    Über Modbus können nur Bits und 16Bit Integer übertragen werden.

  3. #3
    Registriert seit
    08.12.2008
    Beiträge
    159
    Danke
    1
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Hi,

    grundlegend ist Modbus TCP folgend aufgebaut.

    Jedes Gerät hat eine IP Adresse.
    Die Werte werden über Register (1bit oder 16bit) ausgetauscht. Diese sind meist von 1 bis 9999.
    Dazu gibt es einen Funktionscode der die Zugriffsrechte und die Art der Register beschreibt.
    Beispiel dazu:
    400001 = Holding Register 1 mit Schreib/Leserechte in 16bit Format
    300011 = Input Register 11 mit Leserechte in 16bit Format
    100010 = Input Bit 10 mit Leserechte in 1bit Format
    Egal was passiert: Nur nicht den Sand in den Kopf stecken!

  4. #4
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die schnelle Antwort. Was haben denn die 400001 usw. zu bedeuten? Ist das eine Adresse, oder nur ein Array oder ähnliches in das die Daten geschrieben, oder von dem die Daten gelesen werden?

    Ich habe im Programm folgendes:

    "#MBFUNCTION=READ_DISCRETE_INPUTS"
    "#MBTELEGRAMSTARTADDRESS=0"
    "#MBNUMBEROFITEMS=4"
    "#MBPOLLINTERVALL=3000"
    "#MBSTATUS=uiTel2Status"
    "bTestDi1, DI, 0"
    "bTestDi2, DI, 1"
    "bTestDi3, DI, 2"
    "bTestDi4, DI, 3"

    Die Modbusfunktion ist klar. Mit der Startadresse hab ich noch so meine Problem. Ist das die Adresse im Modbustelegramm?

  5. #5
    Registriert seit
    13.03.2006
    Beiträge
    428
    Danke
    5
    Erhielt 43 Danke für 43 Beiträge

    Standard

    Zitat Zitat von doelckenbeck Beitrag anzeigen
    Die Modbusfunktion ist klar. Mit der Startadresse hab ich noch so meine Problem. Ist das die Adresse im Modbustelegramm?
    Ja, siehe die methode request
    http://pvbrowser.org/pvbrowser/sf/ma...7f3a6fc7760b58

    aus unserer Modbus Klasse
    http://pvbrowser.org/pvbrowser/sf/ma...srlModbus.html

    Die Werte der Start Adressen sind eigentlich nichts weiter, als eine Konvention. Du musst in die Spec des Anbieters sehen, welche Adressen wozu zugeordnet sind.

  6. #6
    Registriert seit
    11.07.2009
    Beiträge
    174
    Danke
    20
    Erhielt 34 Danke für 26 Beiträge

    Standard

    Hallo,
    man kann über Modbus auch Real-Werte lesen und schreiben.
    Die 400001 ist ein Funktionscode, wodurch der Modbus erkennt ob es ein Bit oder eine Real-Zahl u.s.w. ist die gelesen oder geschrieben werden muß.
    Genauer gesagt handelt es sich hier um den Funktionscode 04. Die 1 ist dann die erste Variable wo es los geht (Startindex).

    Gruß Frank

  7. #7
    Registriert seit
    13.03.2006
    Beiträge
    428
    Danke
    5
    Erhielt 43 Danke für 43 Beiträge

    Standard

    Zitat Zitat von knarf Beitrag anzeigen
    Hallo,
    man kann über Modbus auch Real-Werte lesen und schreiben.
    Davon steht in der Modbus Spezifikation nichts drin.
    Man kann Register "missbrauchen", um Real übertragen zu können.
    Das ist aber nicht vom Standard abgedeckt.

  8. #8
    Registriert seit
    11.07.2009
    Beiträge
    174
    Danke
    20
    Erhielt 34 Danke für 26 Beiträge

    Standard

    Hallo pvbrowser,
    ich habe schon bei einem Honeywell Leitsystem über Modbus RTU und Modbus TCP Real (Float)-Werte übertragen. Der Funktionscode zum lesen ist die 03 und zum Schreiben die 16.

    Als Startindex ist der Bereich von 20001 bis 29999 oder 70001 bis 79999
    erlaubt.

    Gruß Frank

  9. #9
    Registriert seit
    13.03.2006
    Beiträge
    428
    Danke
    5
    Erhielt 43 Danke für 43 Beiträge

    Standard

    Hallo Knarf,

    ich sagte ja auch:
    Man kann Modbus dazu "missbrauchen" Real zu übertragen.

    Sieh aber bitte mal in der Spezifikation, auf die ich in meiner ersten Antwort verlinkt habe nach. Das wird NICHT von der Spezifikation abgedeckt und ist daher herstellerabhängig.

  10. #10
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Aha, das bringt mich schon weiter!
    Noch eine paar Fragen. Ich habe in meinem Testprogramm folgende Arrays:

    a_bArrB0000 boolsches Array, 3000 Felder groß
    a_bArrB1000 boolsches Array, 3000 Felder groß
    a_bArrB3000 int Array, 2500 Felder groß
    a_bArrB4000 int Array, 2500 Felder groß

    1.Jetzt nehme ich an, dass die Nummern darstellen ob es sich um ein boolsches oder ein int Array handelt und ob gelesen oder geschrieben werden kann. Richtig?

    2. Könnte ich jetzt 3000 boolsche Variablen anlegen und die Werte in einem Rutsch über Modbus in das entsprechende Array schreiben? Denke nicht, oder?

    3. Woher weiß mein Modbus- Protokoll wohin es die Daten schreiben soll?
    Ich nehme mal an, dass immer ein Datenrahmen übertragen wird, egal was drin steht und diese Daten werden dann in die angeschlossenen Arrays geschrieben.?

Ähnliche Themen

  1. Modbus TCP mit PN CPU
    Von wupper-sps im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 22.09.2011, 18:41
  2. Antworten: 0
    Letzter Beitrag: 05.08.2010, 08:14
  3. [ Modbus ] S7-200
    Von caret im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 21.01.2010, 20:01
  4. Modbus+
    Von FvE im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 09.04.2009, 18:19
  5. ModBus
    Von hausenm im Forum Feldbusse
    Antworten: 6
    Letzter Beitrag: 17.03.2009, 11:36

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •