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

Ergebnis 1 bis 4 von 4

Thema: Wago 750-871 <-> Modbus <-> Wago 750-342

  1. #1
    Registriert seit
    03.05.2012
    Beiträge
    22
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin moin,
    ich hab ein kleines Verständnisproblem mit dem Modbus-Kommunikation.

    Zunächst mein Aufbau:
    Wago 750-871 mit einigen digitalen Ein- und Ausgängen
    Dieser ist mittels Ethernetkabel mit einem Wago 750-342 verbunden, an dem auch wieder digitale Ein- und Ausgangskarten stecken (Reihenfolge: 2DI 750-410, 4DI 750-402, 4DO 750-504).

    Ich möchte jetzt über Modbus UTP Eingänge lesen und Ausgänge ansteuern können.
    Letzteres habe ich auch hinbekommen. Dafür habe ich FunctionCode 5 benutz und steuer die Ausgänge einzeln an (es sind nur wenige, die auch selten gleichzeitig angesteuert werden sollen)

    Mein Problem ist jetzt, dass ich die Eingänge gerne alle auf einmal auslesen muss. Dafür hatte ich FunctionCode 2 gewählt, jedoch liefert der Funktionsblock aus der Modus-Lib immer den Error Code 153 und es passiert nichts.

    Ich hab mal ein Screenshot vom Baustein gemacht:

    Bildschirmfoto.png


    IP-Adresse usw ist klar, funktioniert bei den Ausgängen ja wunderbar.
    FC:=2;
    StartReadAddr:=0 (so wie ich das verstanden hab geht das, weil ich digital arbeite und nur digitale Karten verbaut sind)
    RegsToRead:=6 (da 6 Eingänge)
    ADR(InData):= Zeiger auf meine Datei, in der ich das Ergebnis speichern will (als WORD deklariert)
    Naja der Rest wäre dann zum Zugriff auf Ausgänge, was ja funktioniert...

    So weit ich das verstanden habe muss ich die Adresse angeben, ab der die Eingänge ausgelesen werden sollen, wie weit soll gelesen werden und das
    Ergebnis der Zustände sollte dann in meiner Datei InData landen. Diese bleibt aber leider Null und ErrCode=153?

    Wo liegt mein Fehler?

    Ich danke schon mal für eure Hilfe.

    Gruß
    Andtreas
    Zitieren Zitieren Wago 750-871 <-> Modbus <-> Wago 750-342  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.733
    Danke
    317
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Was passiert wenn du tTime_OUT mal massiv verlängerst? (Vorausgesetzt IP Adress + wPort ist korrekt)
    153 = 0x99 = Time Out, siehe Doku zur Lib

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. #3
    XX5198 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.05.2012
    Beiträge
    22
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo und danke für deine Antwort.
    Ich hab TimeOut mal 5 Sekunden gestellt und jetzt wechselt ErrCode im 5 Sekundentakt zwischen 0 und 153...

  4. #4
    XX5198 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.05.2012
    Beiträge
    22
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So ich glaub ich hab meinen Fehler gefunden bzw. das ganze jetzt richtig kapiert:
    Mein Fehler war offensichtlich, dass meine Funktion den wert der Eingänge an eine Variable auserhalb übergeben sollte, auf die sie nicht schreiben konnte.
    Jetzt nutze ich eine Variable innerhalb der Funktion.

    Aber ein Problem hab ich noch:
    Um die Ausgänge zu setzten und die Eingänge aus zu lesen werden ja dezimale Werte benutzt, also OutData=1 schaltet den ersten Ausgang, OutData=3 schaltet Ausgang 1 und 2 usw.
    Ich möchte im Programm aber natürlich gerne binär arbeiten, also wollte ich eine Konvertierung von Dual in Binär bzw. für die Eingänge anders rum machen.

    Wie das von der Mathematik geht weis ich aber irgendwie funktioniert das noch nicht ganz.

    Oder gibt es einen einfacheren Weg?
    Kann Codesys zb 54 direkt in entsprechenden Dual-Wert konvertieren?


    EDIT:
    So Umwandlung funktioniert jetzt von Binär zu Dezimal und umgekehrt. Ich mach das jetzt mit einer While-Schleife. Meine Frage wäre jetzt nur ob jemand einen weg kennt, der einfacher und evtl Ressourcen sparender ist?
    Geändert von XX5198 (14.04.2013 um 11:43 Uhr)

Ähnliche Themen

  1. Wago 750-871 Verbindung erstellen
    Von Gloria im Forum WAGO
    Antworten: 3
    Letzter Beitrag: 19.02.2013, 11:41
  2. Verkaufe Wago 750-871
    Von visu1 im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 10.11.2011, 20:55
  3. Suche WAGO 750-841, 750-871 oder 750-881
    Von Controllfreak im Forum Suche - Biete
    Antworten: 1
    Letzter Beitrag: 05.10.2011, 11:19
  4. Wago 750-871 Retain AT
    Von MSB im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 12.03.2010, 22:14
  5. Wago 750-871 + SMCI 33 Schrittmotorsteuerung
    Von Heine im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 16.08.2009, 21:28

Stichworte

Lesezeichen

Berechtigungen

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