750-880 Modbus Master TCP 750-341 Slave Codesys 2.3

Erdberquark

Level-1
Beiträge
34
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen,


ich versuche gerade meine SPS zu erweitern mittels Modbus.

Master 750-880 (inkl. Diverser I/Os)
Slave 750-341 (inkl. Diverser I/Os)

Leider finde ich irgendwie nicht die passende Anleitung wie ich die neuen Module Einbinde.

Die Verbindung zwischen Master und Slave steht. (siehe Bild)


Nun weiß ich leider nicht wie ich jetzt weiter machen muss / kann.

Ein Kurzer Tipp wäre super ;-)

Danke


Gruß

Stefan
 
Hi Stefan,

du kannst im Prinzip die I/Os direkt ab Adresse 0 aufsteigend über Modbus ansprechen, nur die Adressierung beachten (Analog Input, Analog Output, Digital Input, Digital Output). Leider kenne ich den 750-341 direkt nicht. Wenn du darauf ein Programm aufspielen kannst, dann kannst du Theoretisch einfach eine Struktur des E/A Abbildes an deinen Slave schicken.

Achtung! Die direkte Adressierung von Ausgängen (schreibend) funktioniert nur wenn kein Programm auf dem Feldbuskoppler ist.

Gruß

Mavorkit
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

danke für deine Antwort.


Der 750-341 ist ein reiner Feldbus Koppler als kann ich da kein Programm aufspielen.

Die Reihenfolge der Module kann ich anpassen. War jetzt erst mal nur der Test auf dem Schreibtisch ;-)

Kannst du mir auch sagen wie ich die E/A ansprechen kann?

Ich habe keine Ahnung wie ich die auswählen muss.
 
Hi Stefan,

die Reihenfolge der Module ist Relativ egal, die Adressierung wird immer wie von mir beschrieben durchgeführt, unabhängig von der Reihenfolge. Ich hab sowas bisher nur mit einem 750-880 gemacht und hier direkt die Adressen der Steuerungskonfiguration angesprochen.

Vielleicht ist es in deinem Fall einfacher, mit dem Modbus Configurator die Schnittstelle zum Koppler einzustellen und die Hardwar hierüber suchen zu lassen?
Ressourcen => Steuerungskonfiguration => Modbus-Master => Rechtsklick auf Modbus-Master => Ethernet Schnittstelle einfügen => Rechtsklick auf die Schnittstelle => Modbus Slave hinzufügen => deinen 750-341 auswählen, Konfiguration einstellen und über Knoten Scannen müsste er die I/Os erkennen und du kannst sie wie gewohnt in der Steuerungskonfiguration benamen.

Bin mir allerdings nicht 100% sicher, kann es auch leider nicht probieren. Wenn du wo nicht weiter kommst meld dich einfach nochmal.

Gruß

Mavorkit
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Mavorkit


Ich war mir eigentlich sicher da sich ein Bild bei meinem ersten Post angefügt hatten ;-)

Da sollte eigentlich raus hervorgehen das ich glaube die so eingebunden habe wie du beschrieben hast.
 

Anhänge

  • Modbus Master.JPG
    Modbus Master.JPG
    97,4 KB · Aufrufe: 120
Hallo,

wollte gerade neue Screenshots machen da habe ich auf dem Rechner noch alte dazu gefunden. Schau Dir mal meinen Beitrag hier an: Modbus-Kommunikationsproblem

Da siehst Du die Konfiguration im Konfigurator, die taskkonfiguration (die mußte ich damals von Hand einstellen, keine Ahnung ob es immer noch so ist) und dann der Zugrif auf die Variable.

Sonst sieh Dir auch mal bei Wago den Anwendungshinweis a300003 an. Da sind verschiedene Methoden mit Beispielen aufgeführt.

Gruß
 
Zuletzt bearbeitet:
Hallo,

ich habe mich jetzt ein wenig durch die Anleitungen gearbeitet und habe gemerkt, das ich einen Teil einfach überlesen habe ;-)

Also ich habe mir jetzt die Einstellungen generieren lassen.


Die Ausgänge werde auch irgendwie gesetzt so wie in Bild 4 zu sehen.

Ich muss jetzt nur noch wissen, wie ich das ganze übergebe oder so.
Denke da liegt aktuell mein Problem.

Oder seht ihr das anders.
 

Anhänge

  • 1.JPG
    1.JPG
    170,7 KB · Aufrufe: 104
  • 2.JPG
    2.JPG
    150,7 KB · Aufrufe: 91
  • 3.JPG
    3.JPG
    32,5 KB · Aufrufe: 74
  • 4.JPG
    4.JPG
    100,3 KB · Aufrufe: 83
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

was meinst Du mit übergeben? So wie in Bild 3 ist die Übergabe schon richtig. Werden die Ausgänge nicht gesetzt? Dann zeige bitte einmal die Taskkonfiguration. Dort muß das Programm MBCFG_ModbusSlave regelmäßig aufgerufen werden. Sieh Dir dazu mal meinen verlinkten Beitrag oben an.

Gruß
 
Hi,

ich habe das jetzt auch mal so erstellt.

Dachte es reicht wenn ich das einfach mit in dem PLC_PRG mit eintrage.

Hatte vorher in der Taskkonfiguration nichts drin.


bei mir schreibt der in den ModbusSlave Block immer noch was in die "()".


Leider hat sich aber nichts geändert
 

Anhänge

  • 5.JPG
    5.JPG
    59,7 KB · Aufrufe: 76
Hallo,

die Parameter kommen durch den Haken bei 'Mit Argumenten' bei der Auswahl Programmaufruf. Den nimm mal raus. Klick da auf MBCFG_ModbusSlave und dann rechts auf die drei Punkte. Dann ist unten links die Checkbox.

Warum ist der Port des Slave eigentlich 44818? Normal ist 502.

Habe gerade mal ein Testprogramm versucht. Diesmal wurde der Task mit erstellt. Leider komme ich gerade nicht an meine Steuerung, um das noch einmal mit Hardware auszuprobieren.

Gruß

/EDIT: Sonst lass Dir mal den Wert von MBCFG_ModbusSlave.MBCFG_Error online anzeigen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,


also habe den Port mal angepasst. Keine Ahnung warum der so bei mir war.

Wenn ich beim Task die Argumente weg mache habe ich da keine Klammern mehr stehen.
Muss ich beim Systemereignis was eintragen?


Habe ich den error so richtig ausgelesen?
 

Anhänge

  • 6.JPG
    6.JPG
    17,1 KB · Aufrufe: 57
  • 7.JPG
    7.JPG
    76,1 KB · Aufrufe: 74
Hallo,

bei Systemereignis mußt Du eigentlich nichts eintragen.

Die Zuweisung ist falsch. Erstelle eine Temp Variable. Der weist Du dann MBCFG_ModbusSlave.Error zu.

Also unter var oben:

eTemp : WORD;

Im Code dann (hier jetzt in ST)
eTemp := MBCFG_ModbusSlave.Error;

in FUP (Ungefähr)
eTemp-------MBCFG_ModbusSlave.Error
/EDIT: Es muß natürlich anders rum sein: MBCFG_ModbusSlave.Error-----eTemp
Ich mach einfach zu wenig mit FUP. Links ist die Quelle, rechts die Senke

Und dann online gehen. Nach dem hochladen natürlich.

Gruß
 
Zuletzt bearbeitet:
Hi,


bin leider erst jetzt mal wieder am Rechner ;-)

Was war den an meiner Zuweisung falsch?


mein Test1 war als WORD definiert.
 

Anhänge

  • 9.JPG
    9.JPG
    10,3 KB · Aufrufe: 41
  • 8.JPG
    8.JPG
    12,4 KB · Aufrufe: 30
Hi,

Entschuldigung, ich war durch die FUP Darstellung verwirrt. Damit habe ich bei Codesys schon lange nicht mehr mit gearbeitet und auch nicht online.

Laut Fehlercode hast Du keine Verbindung zum Koppler

Code:
    MBCFG_NO_ERROR                    := 0,
    MBCFG_START_UP                    := 16#FFFF, (* start up phase after power on *)

    (*--- Modbus Specification ----------------------------------------------------------*)
    MBCFG_ILLEGAL_FUNCTIONCODE        := 16#0001, (* FUNCTION code NOT supported     *)
    MBCFG_ILLEGAL_ADDRESS            := 16#0002,
    MBCFG_ILLEGAL_DATA                := 16#0003,
    MBCFG_SLAVE_DEVICE_FAILURE         := 16#0004,
    MBCFG_SLAVE_DEVICE_BUSY         := 16#0006,
    MBCFG_MEMORY_PARITY_ERROR         := 16#0008,
    MBCFG_GATEWAY_PATH_UNAVAILABLE     := 16#000A,
    (*-----------------------------------------------------------------------------------*)

       MBCFG_NO_SOCKET_AVAILABLE        := 16#0079,    (* no socket available             *)
    MBCFG_CAN_NOT_SEND_REQUEST        := 16#0080, (* can NOT send modbus request     *)

    MBCFG_NO_RESPONSE_RECEIVED        := 16#0081, (* No response received                                      *)
    MBCFG_EXTENDED_SLAVE_ERROR        := 16#0090, (* see the error entry inside modbus response struct          *)

    MBCFG_TCP_RTU_ERROR_0x95        := 16#0095, (* TCP/UDP   -> Socket was "gracefully closed" BY the server *)
                                                (* RTU/ASCII -> not allowed broadcast                          *)

    MBCFG_TCP_RTU_ERROR_0x96        := 16#0096, (* TCP/UDP   -> Server NOT available     *)
                                                (* RTU/ASCII -> crc error                *)

    MBCFG_ILLEGAL_PARAMETER            := 16#0097, (* parameter wWRITE_QUANTITY illegal FOR choosen FUNCTION code     *)
    MBCFG_ILLEGAL_RESPONSE            := 16#0098, (* response does NOT match TO the request (overrun)               *)
    MBCFG_TIMEOUT                    := 16#0099, (* response NOT received withhin the specified timeout              *)

    MBCFG_INVALID_BITSIZE            := 16#0100,    (* invalid bitsize at variable parameter in variable list             *)
    MBCFG_INVALID_STARTBIT            := 16#0200,    (* invalid startbit position at variable parameter in variable list *)
    MBCFG_INVALID_FC_BYTEORDER        := 16#0300    (* the byteorder is not allowed for this function code *)

Stimmt die IP Adresse?
Ist der Port aktiviert? Dazu mal mit dm Webbrowser auf den Koppler und die Daten unter Port ansehen, speziel Modbus TCP und Modbus UDP.

Ansonsten könnte man mal qmod master (https://sourceforge.net/projects/qmodmaster/) versuchen, ob man mit dem PC eine Verbindung bekommt. Dazu müßte man sich aber die rictigen Modbus Register raussuchen.

Gruß
 
Hallo,


also auf das WEBinterface komme ich von beiden Geräten drauf.

Der Port für Modbus TCP ist mit 502 bei beiden hinterlegt.

In den Einstellungen, im Programm steht auch Port 502.


Es gibt noch eine Stelle wo ich mir mit der IP-Adresse nicht ganz sicher bin.


Es gibt Modbus-Ethernet Einstellungen und Service Einstellungen welche IP muss ich da eintragen jedes mal die von dem Modbus Slave??
 

Anhänge

  • 11.JPG
    11.JPG
    32,9 KB · Aufrufe: 35
  • 10.JPG
    10.JPG
    33,4 KB · Aufrufe: 41
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo nochmal,

ich habe mich heute Nachmittag nochmal mit dem ganzen beschäftige ;-)

Ich hatte bei mir noch einen 750-880 in Reserve stehen und habe damit die Kommunikation getestet.


Dort hat auch alles super funktioniert.

Also habe ich in dem Hauptprogramm alles was Modus angeht gelöscht und neu eingetragen.

Jetzt sieht der Error Log für mich so aus der der gar nicht erst den Modbus Starten kann.

Muss ich was tun damit der Modbus Startet?
 

Anhänge

  • 13.JPG
    13.JPG
    12,6 KB · Aufrufe: 16
  • 12.JPG
    12.JPG
    15,4 KB · Aufrufe: 32
Hi,

läuft denn der Rest des Programms?

Früher war das mal so, das PLC_PRG nur automatisch läuft, wenn es keinen weiteren Taks gibt. Bei Deiner Taskkonfiguration ist jetzt nur der eine Task zu sehen.

Sonst weiß ich jetzt auch nicht weiter.

Das ist das eine, ansonsten: Wie ist der Koppler mit dem Controller verbunden, über einen Switch oder direkt? Wenn direkt, hast Du da irgendetwas spezielles am Ethernetport eingestellt? Port disabled oder sniffer port?

Gruß
 
Hi,

in dem PCL_PRG sind die anderen Taks ja eingetragen.

Verbunden bin ich über Switch bzw. Router. Die Geräte stehen an verschiedenen orten ;-)

Die Verbindung zu den Geräten ist ja da nur werden die Sachen für den Modbus nicht richtig ausgeführt.


Mir Fehlt für den anderen 750-880 noch so eine Endplatte 750-600 ;-)
Die Bringe ich mir morgen von Arbeit noch mit.

Dann werde ich das nochmal genauer untersuchen warum der eine 750-880 ohne Programm also da läuft nur eine übergabe- über Modus drauf funktioniert und meine Gesamte Haussteuerung über Modbus nicht raus kriegt ;-)
 

Anhänge

  • 14.JPG
    14.JPG
    74,7 KB · Aufrufe: 38
Zurück
Oben