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

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

Thema: Kommunikation codesys und S7

  1. #1
    Registriert seit
    16.12.2009
    Beiträge
    75
    Danke
    3
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich bin erst seit kurzem stolzer Besitzer und Betreiber einer SABO PLM 707.
    Laut dem technischen Support von Sabo kann die Steuerung ( Codesys ) nicht aktiv TCP/IP Telegramme verschicken. Ich habe aber mal irgendwo gelesen, dass man mit einem bestimmten ( codesys- ) Telegrammaufbau von der S7 an die Codesys-Steuerung diese zur "Herausgabe" von Netzvariablen veranlassen kann.
    Kennt jemand die richtige Stelle im WWW, wo ich dazu eine Beschreibung finden kann?
    Die PLM 707 steuert meine Heizung misst dazu über einen PT 1000 die Außentemperatur. Eine Siemens 314 und eine Vipa CPU sollen nun per TCP/IP erfahren, wie warm bzw. kalt es draußen ist...

    bis dann
    Thomas
    Zitieren Zitieren Kommunikation codesys und S7  

  2. #2
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Unterstützt Deine Sabo das Modbus-Protokoll?

    Dann könntest Du von der S7 oder Vipa Seite damit die Werte anfordern.

    Falls die Sabo das kann, ist nur noch das Problem, das es von offizieller Siemens Seite nichts kostenloses an Bausteinen für Modbus gibt. (Mehr Glaube als Wissen )

    Aber a) ist das Modbus-Protokoll offen, und man kann überall Dokus finden, und b) gibts bestimmt hier einige Leute die das schon programmiert haben, oder zumindest wissen, wo man sowas bekommt.

  3. #3
    Tom... ist offline Benutzer
    Themenstarter
    Registriert seit
    16.12.2009
    Beiträge
    75
    Danke
    3
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Zitat Zitat von Grubba Beitrag anzeigen
    Unterstützt Deine Sabo das Modbus-Protokoll?.
    Sollte Sie!

    Zitat Zitat von Grubba Beitrag anzeigen
    Dann könntest Du von der S7 oder Vipa Seite damit die Werte anfordern..
    ... habe ich mir so vorgestellt ...

    Zitat Zitat von Grubba Beitrag anzeigen
    Falls die Sabo das kann, ist nur noch das Problem, das es von offizieller Siemens Seite nichts kostenloses an Bausteinen für Modbus gibt. (Mehr Glaube als Wissen ).
    ... das ist nicht schlimm ...

    Zitat Zitat von Grubba Beitrag anzeigen
    Aber a) ist das Modbus-Protokoll offen, und man kann überall Dokus finden, und b) gibts bestimmt hier einige Leute die das schon programmiert haben, oder zumindest wissen, wo man sowas bekommt.
    Genau nach so einem Link suche ich.
    Ich habe mal irgendwo ein Beispiel gesehen, wie eine S7 Netzvariablen von einer WAGO ausgelesen hat - finde aber nicht mehr wo?!

    Gruß
    Thomas

  4. #4
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Zumindest einen Link kann ich Dir mal geben:

    http://www.wagocatalog.com/okv3/inde...41&lid=1&cid=1

    Dort unter Download die Bedienungsanleitung für die Wago 750-841 nehmen. (ca. 3,3MB)

    Dort ist der Protokollaufau erklärt.

    Oder auf:

    http://www.anybus.de/technologie/modbustcp.shtml

    nachsehen.

  5. #5
    Tom... ist offline Benutzer
    Themenstarter
    Registriert seit
    16.12.2009
    Beiträge
    75
    Danke
    3
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Hallo zusammen,

    und erstmal allen hier ein Gesundes Neues Jahr!

    Die Sache ist offenbar viel einfacher als ich dachte...

    Einfach Netzwerkvariablen zum Senden eingestellt und fertig!
    UDP Paket mit Wireshark mitgeschnitten...
    Die S7 empfängt so etwas mit dem AG_Recv...

    Auch wenn ich mir aus dem "Byte-Haufen" dann heraussuchen kann, was ich brauche, bleibt folgendes bis jetzt ungeklärt:

    1. Wie ist dieses UDP Paket definiert - also kennt jemand hier den richtigen Link zur Definition?
    2. Daraus sollte sich dann ergeben, wo die ID der Variablenliste steht
    3. Ebenso die Checksumme und hoffentlich auch wie sie gebildet wird

    Dann könnte ich mir die Gegenrichtung in der S7 zusammenbauen und der CoDeSys Steuerung antworten...
    Das wäre doch 'was...

    bis dann
    Thomas

  6. #6
    Registriert seit
    19.04.2006
    Beiträge
    29
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Thomas,

    schau dir mal diesen Link an:

    http://www.wago.com/wagoweb/document...a101400d_f.htm

    Ich habe damit mal eine Verbindung zwischen einer S7-400 und einem Wago 750-841 gebastelt. Die S7 ist dabei aber der Master und holt sich die Daten aus dem 841.

    Grüße
    Tobi

  7. #7
    Tom... ist offline Benutzer
    Themenstarter
    Registriert seit
    16.12.2009
    Beiträge
    75
    Danke
    3
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Danke Tobi,

    das Beispiel ist super, aber nicht die Lösung...

    Am Anfang dachte ich auch, dass ich Modbus benötige, aber ich will ja keine Eingänge von einem Controler lesen, sondern Variablen von einer selbständigen Steuerung.
    Das funktioniert auch schon, wobei ich den Aufbau des UDP Paketes mehr errate und ausprobiere.
    Für die UDP Antwort funktioniert das natürlich nicht...
    Ich brauche die "echte" Spezifikation um den UDP Header und auch die Prüfsumme korrekt erzeugen zu können...

    bis dann
    Thomas

  8. #8
    Registriert seit
    19.04.2006
    Beiträge
    29
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Thomas,

    aber ich will ja keine Eingänge von einem Controler lesen, sondern Variablen von einer selbständigen Steuerung.
    Geht doch auch! Du legst dir die Variablen einfach in den Merkerbereich (mit z.B. AT %MW100) und hast somit Lese- und Schreibrechte von Modbusseite (S7). Die S7 holt sich dann die Variablen bzw. schreibt sie in deinen Wago-Contoller.
    Bei mir funktioniert das seit ca. zwei Jahren problemlos. Natürlich musst du dich noch um einen Watchdog o.Ä. kümmern.

    Bezüglich Modbus: Schau mal im Handbuch vom 841 nach Modbusadressen. Da ist das eigentlich ziemlich übersichtlich erklärt.

    Bei Interesse suche ich mal das Projekt raus und kann den Code mal posten.

    Viel erfolg.
    Tobi

  9. #9
    Tom... ist offline Benutzer
    Themenstarter
    Registriert seit
    16.12.2009
    Beiträge
    75
    Danke
    3
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Danke,

    aber ich möchte eigentlich nicht "... in die andere Steuerung schreiben ... "
    ( Was passier mit dem Modbus-Stack - gibt es das? - wenn der Schreibvorgang zu lange Zeit nicht "ankommt" )

    Unabhängig davon habe ich keinen Wago Controler und die Geschichte mit den Merkern schein mir auch eine "Wago Spezialität" zu sein...

    Wozu braucht man eigentlich Merker? Habe ich noch nie verwendet...

    bis dann
    Thomas

  10. #10
    Tom... ist offline Benutzer
    Themenstarter
    Registriert seit
    16.12.2009
    Beiträge
    75
    Danke
    3
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    auf Nachfrage will ich hier noch mal kurz beschreiben, wie die Lösung schlussendlich aussah ( auch wenn selbige schon länger wieder außer Betrieb ist... ).

    Die S7 kann mit "AG RECV" Variablenlisten von CoDeSys Steuerungen empfangen.
    ABER ACHTUNG!
    Mir ist das nur gelungen mit einer Variablenliste, die nicht Broadcast, condern direkt an die IP Adresse der S7 gerichtet war. ( Irgendwo ist dokumentiert, dass die S7 kein UDP Broadcast empfangen kann... ).
    In der S7 habe ich entsprechend eine UDP Verbindung projektiert, mit der IP Adresse der CoDeSys Steuerung als Verbindungspartner ( unspezifiziert ) und dem Port 1202.
    In den empfangenen Daten ( Array of Byte 0.. ) findet sich dann z.B. in Byte 14 und 15 die ID der Variablenliste.
    Ab 34 stehen die "Nutzdaten".
    Achtung!
    String und Byte sind unproblematisch und erscheinen 1:1. ( nach einem String wird ein "leer" Byte angefügt )
    Bei INT ( also auch der VariablenlistenID ) muss man die Bytereihenfolge umtauschen!
    Auf noch längere Datenformate habe ich bewusst verzichtet.

    Soll die CoDeSys Steuerung Daten von der S7 empfangen, braucht man eine zweite UDP Verbindung.
    Der Verbindungspartner ist diesmal Broadcast mit Port 1202. ( UDP Broadcast senden kann die S7 )
    In den Sendedaten ( Array of Byte 0.. ) steht diesmal in Byte 8 und 9 die VariablenlistenID. Ab Byte 20 folgen die Nutzdaten.
    Auch hier wieder die Byte Reihenfolge umdrehen.

    Herausgefunden habe ich das alles mit Wireshark.
    Als erstes die von CoDeSys gesendete Variablenliste. Am besten mit INT Variablen, die als Rundenzähler mit dem Sekundentakt laufen. Da sieht man alles, was man braucht.
    In der Rückrichtung sind die Daten im Array verschoben, warum weiss wohl nur Siemens...

    Viel Spaß beim Basteln!
    Das Beispiel hat bei mir mehrere Jahre sehr gut funktioniert...
    Die in den "Versuchsdaten" übertragene Uhrzeit habe ich sogar drin gelassen. An der Sekundenanzeige kann man sehr gut einen Watchdog anbinden, ob die empfangenen Daten glaubwürdig und aktuell sind...

    Grüße Tom

Ähnliche Themen

  1. Kommunikation CoDeSYS => Panel der Fa. Eaton
    Von Brand81 im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 14.06.2011, 08:38
  2. CoDeSys V3
    Von junkie im Forum CODESYS und IEC61131
    Antworten: 44
    Letzter Beitrag: 20.04.2011, 13:46
  3. Kommunikation Twincat-Codesys
    Von FredlFesl im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 12.02.2011, 07:37
  4. CodeSys und S7
    Von Tommi im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 19.12.2010, 20:32
  5. CoDeSys SPS
    Von leo im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 27.04.2005, 13:24

Stichworte

Lesezeichen

Berechtigungen

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