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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: S7 über Ethernet an PC (spezielles Protokoll)

  1. #1
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Liebe Community,

    Sitze schon seit längerem an einem Tech-Projekt, das ziemlich viel im Bereich Simatic beeinhaltet.

    Ich stehe nun wieder mal vor einem rießigen Berg von Fragezeichen
    Es wird einfach gewiss daran liegen dass mir die technischen Grundlagen im Bereich Bussysteme fehlen...

    Das Thema: S7 Verbindung über Ethernet an ein spezielles PC-Interface

    Hardware: CPU variabel, gerne eine 315 DP/PN oder eben eine CPU mit CP
    Bussystem: Ethernet
    Protokoll: TCP, Ich habe mehrere TCP-Protokolle zu übertragen, beschränken möchte ich mich aber auf die ersten beiden:

    1. Startprotokoll 12 Byte
    2. Dateninformationsprotokoll 38 byte

    Das Startprotokoll dient der Verbindungsaufnahme
    Im Dateninformationsprotokoll möchte ich gerne Daten übertragen aus der SPS auf den PC. Leider kann ich an der Struktur der Protokolle nichts ändern, da das verwendete Interface die nur so "aufnimmt".

    Habe noch die Socketnummer

    Ich hoffe euch reichen die Informationen und es ist verständlich was ich machen möchte...


    Jetzt nur meine Fragen:

    1. Ist sowas überhaupt möglich, dass man von der S7 in einem gewissen Protokoll (Wie oben, ohne dies zu verändern) senden kann? Wenn ja wie? Wenn nein, welche alternative hätte ich?

    2. Wäre so etwas auch über die Integrierte Ethernetschnittstelle eines Multi Panels möglich (über Visual Basic Script)?

    3. Wenn mir die technischen Grundlagen fehlen (wovon ich ausgehe) gibt es irgendwelche guten Homepages (außer Wiki, da war ich) die mir weiterhelfen könnten- vielleicht FAQs von Siemens selbst(habe leider dazu nichts richtiges gefunden)


    Ich hoffe wirklich das die Angaben reichen und mir wer hilft...

    Gruß Hocheck
    Zitieren Zitieren S7 über Ethernet an PC (spezielles Protokoll)  

  2. #2
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Habe folgenden Beitrag von Siemens gefunden:
    ID 18843927
    http://support.automation.siemens.co...ard&viewreg=WW

    Bringt mich sowas weiter? Ich versteh einfach immer noch nicht, wie ich die Daten so sende wie mir das Interface Protokoll vorgibt...

  3. #3
    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

    Zu 1.
    Ja, Du kannst beliebige Telegramme an einen PC versenden. Der Telegrammaufbau ist von Dir frei definierbar.

    Zu 2.
    Kann ich nicht sagen, aber so ein Panel kann schon von sich aus auf die Daten der Steuerung zugreifen

    Zu 3.
    Wenns darum geht, wie Du die Verbindung aufbaust, Daten sendest etc. ist die Online Hilfe von Step 7 ganz OK. Grundsätzliches zum Netzwerkaufbau oder über TCP/IP als solches findest Du dann wohl im INet. Google ist da Dein Freund.

    Zum Schluss gibts auch noch die Möglichkeit, mittels einer freien Software (Libnodave, 10.000 Einträge nur hier im Forum) vom PC aus auf die S7 zuzugreifen. Der Vorteil ist, dass die SPS in diesem Fall garnichts machen muss. Der PC schreibt und liest dann ganz alleine ohne zutun der SPS.

  4. #4
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Zitat Zitat von Hocheck Beitrag anzeigen
    Hallo,

    Habe folgenden Beitrag von Siemens gefunden:
    ID 18843927
    http://support.automation.siemens.co...ard&viewreg=WW

    Bringt mich sowas weiter? Ich versteh einfach immer noch nicht, wie ich die Daten so sende wie mir das Interface Protokoll vorgibt...
    Ja, das würde dich weiter bringen. Beschreib doch mal was dein "Interface Protokoll" vorgibt.
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  5. #5
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @ Grubba
    Danke für deine schnelle Antwort.
    Könntest du mir bitte irgendwie ein Beispiel oder so zeigen, wenn das nicht zu viel Aufwand wäre? Ich finde leider einfach nichts was ich so verwerten könnte...

    Habe bei Siemens nun die Möglichkeit gefunden, dass man über die Bausteine FB 63 TSEND, FB 64 TRCV Daten tauschen kann. Dazu muss man den FB 65 TCON mit UDT 65 Parametrieren. Aber irgendwie wüsste ich nicht wie ich da ein eigen definiertes Protokoll erstellen sollte...

    Zu den theoretischen Dingen- Habe mich heute den gesamten Tag eingelesen und viele Dinge rund um den Aufbau TCP/IP OSI schicht usw gelernt... Jedoch bringt mir das nicht den nötigen Ansatz um irgendwie einen Anfang zu bekommen...

  6. #6
    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

    Habe bei Siemens nun die Möglichkeit gefunden, dass man über die Bausteine FB 63 TSEND, FB 64 TRCV Daten tauschen kann. Dazu muss man den FB 65 TCON mit UDT 65 Parametrieren. Aber irgendwie wüsste ich nicht wie ich da ein eigen definiertes Protokoll erstellen sollte...

    Zu den theoretischen Dingen- Habe mich heute den gesamten Tag eingelesen und viele Dinge rund um den Aufbau TCP/IP OSI schicht usw gelernt... Jedoch bringt mir das nicht den nötigen Ansatz um irgendwie einen Anfang zu bekommen...
    Also:

    So ganz einfach in ein paar Sätzen ist das Ganze wohl nicht so einfach zu erklären, deshalb hier nur ein grundsätzlicher Aufbau:

    Jetzt aber mal was positives vorweg:
    Das Schichtenmodell zu verstehen kann zwar sehr nützlich sein, ist für Dich als User der Anwendungsschicht aber nicht zwingend notwendig.

    Angenommen, die SPS soll die Verbindung aufbauen:

    Hast Du eine PN-CPU (also mit integriertem Ethernetanschluss) musst du im SPS-Programm die Verbindung aufbauen. Das geht mit dem FB TCON, wie Du schon rausgefunden hast. Dieser FB benötigt natürlich Informationen über Deine Verbindung. Diese holt er sich aus einem Datenbaustein. Vorlage für den Datenbaustein ist eine Struktur vom Typ UDT65.
    UDT65 ist einfach mal so als Standardvorgabe angegeben. Theoretisch kann die auch UDT12345 sein. Von Siemens gibts dazu eine PC-Software, die die Verbindungsdaten für Dich erstellt. Heisst Open Communication Wizard und ist, man glaubts ja nicht, umsonst. Kann man bei Siemens saugen.
    Auf der PC-Seite benötigst Du dann einen TCP-IP Server, zu dem die SPS die Verbindung aufbauen soll.
    Steht die Verbindung, kannst Du mit den Bausteien FB 63 TSEND und FB 64 TRCV Daten senden und empfangen.

    Was das Protokoll angeht:
    Mit dem Sendebaustein werden i.a. Daten aus einem DB versendet. Die Datenanordnung im DB entspricht deinem Protokoll.
    Sind z.B. im DB die ersten 10 Werte vom Typ Real und danach die nächsten 10 Werte Integer, werden diese Werte in einem Rutsch an den PC versendet. Dieser muss natürlich den Protokollaufbau kennen, weil er ja die Werte auf seiner Seite wieder zusammenbauen muss.

    Was muss denn auf der PC-Seite mit den Daten passieren?
    Und mal so nebenbei: Musst Du auch die PC-Seite programmieren?

    Die SPS Seite ist auch ohne grosse Vorkenntnisse relativ schnell zusammengebaut. Musst Du auch die PC-Seite programmieren, und Du noch keine PC-Programmierung gemacht hast, wirds schon schwieriger.

    Ich empfehle Dir mal, die Siemens Page noch mal zu löchern, der Link den Du angegeben hast, passt da schon gut.

    Zum Testen des Verbindungsaufbaus kann ich Dir ein kleines Programm vorschlagen, was einen TCP-Server bereitstellt. Zu diesem Programm könntest Du dann die Verbindung aufbauen, um zumindest schon mal das zu testen.

    Link:
    http://www.sps-forum.de/showpost.php...05&postcount=8

    Hast Du eine S7 mit extra CP, wird die Verbindung über NetPro eingerichtet.

    Poste dann nochmal, was Du hast und wo das erste Problem (von vielen) auftaucht.

  7. Folgender Benutzer sagt Danke zu Grubba für den nützlichen Beitrag:

    Hocheck (18.02.2010)

  8. #7
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Grubba diese Erklärung war wohl nun ein Meilenstein für mich

    Mein Problem war immer zu verstehen wie ich das Protokoll erstellen soll mit dem überhaupt die Daten aus einem Datenbaustein gesendet werden können. Dass das Interface die ankommenden Daten aus einem Datenbaustein als solches (Protokoll) ansieht wusste ich nicht Dachte es würde dies nur als reine Daten (I/O) interpretieren... Hoffe du verstehst wie ich das meine...

    Die Beschreibung der Protokolle werde ich also in einen DB legen und dann je nachdem was ich senden möchte dies über einen Anypointer zusammenstellen und dem FB 63 TSEND übergeben- (wenn ich alles richtig verstanden habe)

    Die Verbindung erstelle ich so wie du mir freundlicherweise erklärt hast

    Wie die Daten abgegriffen werden ist bereits in einem C-Programm geschreiben worden- muss ich zum Glück nicht machen, da meine C-Kenntnisse leider noch sehr beschränk sind... Das Interface dient eigentlich der Kommunikation mit einem speziellen Regler- Sollte nun im Rahmen meiner Recherche für die SPS benutzbar gemacht werden...

    Ich werde dich auf dem laufenden halten... werde bestimmt noch einige Fragen haben, aber jetzt habe ich wenigstens den Einstieg


    @ Lars:

    Es gibt 20 einzelne Protokolle.. 18 Datenprotokolle (wovon ich höchstens 2 brauche) Dann noch 1 Startprotokoll und 1 Dateninfoprotokoll.
    Jedem Protokoll sind 3 Byte vorgelagert.
    1. Byte: Länge des Protokolls
    2. Byte: Art des Protokolls (Also welches der 20 Protokolle nach dem 3. Byte folgt)
    3. Byte: Sicherheitsbyte (Verwendung unbekannt)

  9. #8
    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

    Die Beschreibung der Protokolle werde ich also in einen DB legen und dann je nachdem was ich senden möchte dies über einen Anypointer zusammenstellen und dem FB 63 TSEND übergeben- (wenn ich alles richtig verstanden habe)
    .. das klären wir jetzt lieber doch nochmal...

    Der FB TSend hat einen Eingang "DATA".
    Daten, die dieser FB sendet, müssen hier bereitgestellt werden, wie Du schon richtig bemerkt hast, als AnyPointer.

    Angenommen, die Daten, die Du versenden möchtest, stehen in DB1. Der soll mal 20 Byte lang sein.

    Die ersten 4 Werte sind vom Typ Real, und die nächsten 2 vom Typ Integer.
    Dann sieht der DB1 so aus:

    Startadresse Variablenname
    Byte 0 RealVar_1
    Byte 4 RealVar_2
    Byte 8 RealVar_3
    Byte 12 RealVar_4
    Byte 16 IntVar_1
    Byte 18 IntVar_2

    oder so ähnlich.

    Willst Du alles in einem Rutsch versenden, musst Du als Länge 20 angeben (Eingang Len) und der Eingang Data wäre P#DB1. DBX0.0 BYTE 20.

    Dann wird der DB mit dieser Struktur versendet und in dieser Reihenfolge kommen sie dann auch am PC an. Der PC muss sich dann auch an diese Reihenfolge halten, sprich er muss wissen, das die ersten 4 Bytes die er bekommt, die Variable RealVar_1 bilden.
    Wie Du die Daten im DB anordnest kannst Du Dir ja aussuchen, sprich Dein eigenes Protokoll festlegen.

  10. Folgender Benutzer sagt Danke zu Grubba für den nützlichen Beitrag:

    Hocheck (18.02.2010)

  11. #9
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    erst einmal vielen Dank für die Klarstellung...

    Hätte da schon das erste Problem...

    Verlangt werden folgende Datentypen auf Interface Seite:

    Protokolllänge = 1 Byte, vorzeichenlose Ganzzahl
    Protokollart = 1 Byte, vorzeichenlose Ganzzahl
    Zeittrigger = 6 Byte vorzeichenlose Ganzzahl
    Information = 23 Byte ASCII Zeichen
    Datum = 8 Byte Gleitkommazahl

    Nun stellt sich die Frage wie passt das mit den Datentypen der S7 überein?!
    Die Integer Variablen der S7 haben ja 16 bit- Wie mach ich aus einer S7 INT (16 bit) eine Ganzzahl (8 bit vorzeichenlos)?! Ohne dass der andere Teil einer INT Variable schon als neue 8 bit Ganzzahl interpretiert wird...

    Und wie verhält sich das mit dem ASCII Zeichen? Die haben ja 7 bit...




    Hätte jetzt gedacht (DB):
    Adresse Name Typ Anfangswert
    0.0 Länge Byte B#16#0
    1.0 Art Byte B#16#0
    2.0 Trigger Byte ???
    3.0 Trigger Byte ???

    8.0 Trigger Byte ???
    9.0 Info char oder string?!

  12. #10
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zeittrigger = 6 Byte vorzeichenlose Ganzzahl
    Information = 23 Byte ASCII Zeichen
    Datum = 8 Byte Gleitkommazahl
    Was die ASCII Zeichen angeht, kann ich Dich beruhigen, die haben schon 8 Bit, also 1 Byte.
    Die ASCII Zeichen kannst Du einfach als Bytes darstellen. Dann per kleinem Algorithmus den Byte-Wert des Zeichens ermitteln.

    Tja, mit den Ganzzahlen hörts bei der S7 bei 4Byte (DINT) auf.

    Die 8 Byte Gleitkommazahl kann die S7 natürlich auch nicht, der Typ Real hat auf S7 Seite nur 4 Byte.

    Da die S7 ohnehin nur mit maximal 4 Byte breiten Datentypen arbeitet, stellt sich zumindest mir erstmal die Frage, welche Werte ihr denn aus der S7 rausbekommen wollt, die z.B. 6 Byte breit sind. Denn dann müsstest Du ja schon auf der S7 mit solchen Zahlen hantieren.

    Z.B. die 6 Byte breite Ganzzahl. Schon auf der SPS müsstest Du die Standard-Datentypen verlassen und dir eigenen Funktionen bauen, die mit einer 6Byte breiten Zahl arbeiten. Macht das Sinn oder möchte der PC-Mensch einfach nur seinen PC-Datentyp erhalten?

    Wenn das nicht nötig sein sollte, sende dem PC doch einfach nur 4Byte breite Ganz und Fließkommazahlen, die auf dem PC zu wandeln ist eine Zeile Code.

    Wenns aus irgendwelchen Gründen doch nötig sein sollte, kann man sich natürlich auch ein solches Format selber basteln. Dazu müsstest Du den gewünschten Wert selbst in 6 Byte stückeln und diese Bytes manuell auf die 6 Bytes im DB verteilen.


    Das würde ich an Deiner Stelle erstmal klären.

Ähnliche Themen

  1. Hart-Protokoll über Profibus
    Von Jordy im Forum Feldbusse
    Antworten: 4
    Letzter Beitrag: 27.10.2010, 08:37
  2. Micromaster 440 über USS-Protokoll an S7-300
    Von Zizu2006 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 20.02.2009, 10:07
  3. PRIM Ethernet - Frei definierbares Protokoll für Ethernet TCP/IP
    Von whatisnesps im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 20.08.2008, 13:51
  4. Ethernet Kommunikation mit ISO Protokoll
    Von Mütze im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 16.05.2008, 08:21
  5. Protokoll für Datenaustausch über RS232
    Von taucherd im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 25.09.2007, 15:51

Lesezeichen

Berechtigungen

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