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

Ergebnis 1 bis 5 von 5

Thema: Modbus TCP Verständnisfrage

  1. #1
    Registriert seit
    21.09.2009
    Beiträge
    42
    Danke
    5
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!

    Ich habe eine allgemeine Frage zu Modbus TCP. Habe gelesen das der Modbus Server quasi Slave ist und der Modbus Client der Master.

    Ich habe eine Beckhoff Steuerung, die Daten von mehreren Sabo Steuerungen lesen soll. Wäre es nach der oben genannten Definition sinnvoll auf den Sabo Steuerungen einen Modbus Server aufzusetzen der die Daten bereit stellt und die Beckhoff Steuerung die Daten von der Sabo zyklisch (benötige die Daten dauerhaft) anfragt? Das würde ja bedeuten ich habe mehrere Server und einen Client. Hört sich für mich erstmal komisch an. Wobei es ja andersrum wieder richtig wäre. Ich habe mehrere Slaves und einen Master. Das ganze hat mich ein wenig verwirrt! Bin für jede Hilfe dankbar.

    Gibt es eine komfortablere Lösung als meine genannte?

    Gruß Jens
    Zitieren Zitieren Modbus TCP Verständnisfrage  

  2. #2
    Registriert seit
    16.10.2007
    Ort
    östliches Ruhrgebiet
    Beiträge
    259
    Danke
    33
    Erhielt 36 Danke für 31 Beiträge

    Standard

    Mehrer Server und ein Client ist richtig. Der Client ist der aktive und fragt die passiven Server an, die daraufhin antworten.

  3. Folgender Benutzer sagt Danke zu Controllfreak für den nützlichen Beitrag:

    snej (07.07.2011)

  4. #3
    snej ist offline Benutzer
    Themenstarter
    Registriert seit
    21.09.2009
    Beiträge
    42
    Danke
    5
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Hab nochmal eine weitere Frage. Mit dem lesen klappt soweit alles ganz gut. Da ich die Daten zyklisch abrufen möchte habe ich mir eine Art Blinker für den execute Eingang am FB von Beckhoff programmiert.

    Genauso wollte ich das jetzt auch mit den Daten, die geschrieben werden sollen, machen. Nur leider ist der Wert, wenn am execute Eingang ein false anliegt, immer auf 0. Ein dauerhaftes Signal an den execute Eingang anlegen bringt auch nichts, da der FB nur ausgeführt wird, wenn dort eine positive Flanke anliegt.

    Code:
    IF Execute[2] THEN 
       Execute[1] := TRUE; 
    ELSE 
       Execute[2]:=TRUE; 
    END_IF
     
    fbReadReg.sIPAddr := IP;
    fbReadReg.nTCPPort := 502;
    fbReadReg.nQuantity := 16;
    fbReadReg.nMBAddr := 16;
    fbReadReg.cbLength := SIZEOF(PumpRegisterIN);
    fbReadReg.pDestAddr := ADR(PumpRegisterIN);
    fbReadReg.bExecute := Execute[1];
    fbReadReg.tTimeout := T#2s;
     
    fbWriteReg.sIPAddr := IP;
    fbWriteReg.nTCPPort := 502;
    fbWriteReg.nQuantity := 16;
    fbWriteReg.nMBAddr := 0;
    fbWriteReg.cbLength := SIZEOF(PumpRegisterOUT);
    fbWriteReg.pSrcAddr := ADR(PumpRegisterOUT);
    fbWriteReg.bExecute := Execute[1];
    fbWriteReg.tTimeout := T#2s;
     
    IF Execute[1] THEN 
       Execute[2] := FALSE; 
    END_IF
    
    Execute[1] := FALSE;
     
    fbReadReg();
    fbWriteReg();
    Gruß Jens

  5. #4
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    Zitat Zitat von snej Beitrag anzeigen

    ... Nur leider ist der Wert, wenn am execute Eingang ein false anliegt, immer auf 0. Ein dauerhaftes Signal an den execute Eingang anlegen bringt auch nichts, da der FB nur ausgeführt wird, wenn dort eine positive Flanke anliegt.
    ...
    würde es dann eventuell so funktionieren ?

    Weiterarbeiten würdest du mit ...Register...[1], da diese die gültigen Werte haben, ......[0] sind ja deiner Info nach immer 0

    Code:
     
    Execute[1] := not Execute[1]; 
     
    fbReadReg.sIPAddr := IP;
    fbReadReg.nTCPPort := 502;
    fbReadReg.nQuantity := 16;
    fbReadReg.nMBAddr := 16;
    fbReadReg.cbLength := SIZEOF(PumpRegisterIN[Execute[1]]);
    fbReadReg.pDestAddr := ADR(PumpRegisterIN[Execute[1]]);
    fbReadReg.bExecute := Execute[1];
    fbReadReg.tTimeout := T#2s;
     
    fbWriteReg.sIPAddr := IP;
    fbWriteReg.nTCPPort := 502;
    fbWriteReg.nQuantity := 16;
    fbWriteReg.nMBAddr := 0;
    fbWriteReg.cbLength := SIZEOF(PumpRegisterOUT[Execute[1]]);
    fbWriteReg.pSrcAddr := ADR(PumpRegisterOUT[Execute[1]]);
    fbWriteReg.bExecute := Execute[1];
    fbWriteReg.tTimeout := T#2s;
     
    fbReadReg();
    fbWriteReg();

  6. Folgender Benutzer sagt Danke zu bits'bytes für den nützlichen Beitrag:

    snej (12.07.2011)

  7. #5
    snej ist offline Benutzer
    Themenstarter
    Registriert seit
    21.09.2009
    Beiträge
    42
    Danke
    5
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Peinlich, dass mir das nicht eingefallen ist.
    Code:
    execute := NOT execute;
    Dank dir. Und dabei versuch ich immer möglichst kurz und knapp zu schreiben. Naja so ist das wohl, wenn man andere Sachen im Kopf hat.

    Das Problem war allerdings ein anderes. Habe es aber mittlerweile herausgefunden. Ich habe die Funktionsaufrufe in einem FB um ihn für mehrere Pumpen zu benutzen. Habe ausversehen bei 2 Bausteinen sie selbe IP angelegt und mir somit den Wert immer wieder überschrieben, da ich aus 2 FBs auf ein und den selben Modbus Server geschrieben habe.

    Trotzdem danke für eure Mühe und meinen Code konnte ich ja so auch noch verfeinern. Dafür nochmal ein echtes Lob an dieses Forum. Ist echt TOP.

Ähnliche Themen

  1. Verständnisfrage zu ST
    Von mf123 im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 17.08.2011, 10:06
  2. Verständnisfrage
    Von ditj_vitja im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.05.2011, 17:58
  3. AWL Verständnisfrage
    Von Peraglie im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 22.03.2011, 23:10
  4. [B&R AS] Verständnisfrage Variablen
    Von b0zzen im Forum Sonstige Steuerungen
    Antworten: 2
    Letzter Beitrag: 29.09.2010, 20:52
  5. Antworten: 0
    Letzter Beitrag: 05.08.2010, 08:14

Lesezeichen

Berechtigungen

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