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

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

Thema: CM PtP RS485 Daten via Send_PtP an Aktor versenden

  1. #1
    Registriert seit
    16.03.2013
    Beiträge
    36
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallöchen liebe Wissenden,

    ich habe das Problem, dass ich absolut neu in die RS485 Welt mit der SPS einsteige und habe leider das Problem nicht zu wissen, wie ich Daten senden kann.
    Wir haben eine S7-300 nutzen einige ET200SP mit einem CM PtP, in Verbindung mit TIA 12.

    Der Aktor (Druckcontroler), muss mit einer Sollwertvorgabe via RS485 versorgt werden. Den Baustein Send_PtP habe ich mir schon einmal angesehen und habe
    jetzt leider einfach noch ein paar Problemchen. Wir wollen 11Byte an Infos senden und ihm so mitteilen, was der Druckcontroler zu tun hat.
    Beim Send_PtP gibt es einen Buffer Eingang, wenn ich es richtig verstanden habe, könnte man diesen mit den Infos versehen, die gesendet werden sollen. Wie kann
    ich ihm denn beliebige 11Byte verpassen?! In der Variablentabelle kann man keine Strings deklarieren und irgendwie blicke ich da generell nicht durch. Ich habe mir das
    Programmierhandbuch A5E31625080-AA besrogt, finde darin aber leider auch nicht die Infos, die ich benötige.
    Bitte helft mir und erklärt mir, wie ich das realisieren kann. Es soll halt später so sein, ich habe auf meinem HMI ein Eingabefeld, gebe dort den Druck vor, der wird zu nem
    String gemacht, dieser wird dann seriell über RS485 an das Gerät geschickt und bekomme dann den aktuellen Druck über RS485 zurück und zeige mir diesen ebenfalls auf dem
    HMI an.

    LG
    Christian
    Geändert von Grapefruuuut (01.04.2014 um 17:10 Uhr)
    Zitieren Zitieren [***gelöst***]CM PtP RS485 Daten via Send_PtP an Aktor versenden  

  2. #2
    Registriert seit
    26.09.2013
    Beiträge
    20
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi,
    also ich mache das immer über einen Datenbaustein,
    dort kann man Strings deklarieren. Diese dann an den Buffer Eingang gelegt und fertig.
    Umgekehrt den empfangenen String im Datenbaustein zwischen speichern und weiterverarbeiten.

    Gruß Dirk

  3. #3
    Registriert seit
    16.03.2013
    Beiträge
    36
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Lieben Dank für die schnelle Rückmeldung.

    Könnten wir da denn bitte noch etwas ins Detail gehen?!
    Das bedeutet in dem Baustein deklarierst du unter Input eine String-Variable und packst den an den Buffer, richtig?! Soweit so gut, die Frage ist jetzt nur, wie kannst du diese Variable ändern bzw an den Inhalt der Vorgabe aus dem Textfeld auf dem HMI anpassen?!
    Kannst du mir das bitte im Detail erklären?! Da blicke ich nämlich noch nicht ganz durch.

    Danke. Lg

  4. #4
    Registriert seit
    26.09.2013
    Beiträge
    20
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Mit dem Baustein VAL_STRG (zu finden unter Erweiterte Anweisung) kannst du einen Real Wert in einen String wandeln.
    Real kann das HMI verarbeiten (ein/ausgabe Feld Typ Real).
    Mit dem Baustein STRG_VAL wird dein String wieder zurückgewandelt in Real.
    Du deklarierst in einem DB einmal den Real Wert vom Eingabe Feld des HMI, wandelst den in String um (auch im DB deklarieren).
    Diesen String Wert kannst du dann senden und jedesmal wenn du am HMI eine Eingabe machst ändert sich der String dementsprechend.
    Beim empfangen ist es halt um gekehrt. Deklarierst wieder einen String im DB den du empfängst und wandelst den wieder um in Real
    und gibst den auf deinem HMI im Ausgabefeld aus.


    Gruß Dirk

  5. #5
    Registriert seit
    16.03.2013
    Beiträge
    36
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Klingt bis dahin ganz verständlich. Kann man dem Baustein val_strg denn auch eine Größe bzw länger mitteilen?! Ich bräuchte 11byte. Das bedeutet, dass dies alles außerhalb der PLC variablentabelle geschieht?! Habe ich das richtig verstanden?!
    Ich werde mir das morgen früh mal zu Gemüte führten, hoffe ich kann damit dann irgendwie etwas anfangen. Ich danke dir Dirk.

  6. #6
    Registriert seit
    26.09.2013
    Beiträge
    20
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Richtig das läuft alles außerhalb der Variabelentabelle.
    Ja die Größe kannst du dem Baustein sagen. Ruf dir die Bausteine mal auf und dann F1.
    Die sind da ganz gut beschrieben.
    Da sind dann auch Tabellen zu sehen was bei welcher Länge eingetragen werden soll.

  7. #7
    Registriert seit
    16.03.2013
    Beiträge
    36
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Sodele,

    habe ein paar Dinge ausprobiert und bin auch ein ganzes Stück weiter, aber nicht da, wo ich hin möchte.

    Den Baustein Val_Strg gibt es in TIA 12 nicht. Stattdessen nutze ich den Baustein Send_PtP, es wird auch defitniv etwas geschickt, aber nicht das richtige.
    Es sollen 11Byte übertragen werden, ich habe den Baustein wie folgt beschaltet:

    REQ wird mit einem Button auf der HMI getriggert, funktioniert auch
    Port dort habe ich die erste Eingangadresse meines CM PtP Moduls eingetragen, ist auch korrekt
    Buffer dort habe ich einen Verweis auf eine Variable, diese wird vom Baustein HTA gefüttert. HTA wird vom DB gefüttert, indem ich 11Bytes stehen habe.
    "Byte 1" '55'
    "Byte 2" 'xx'
    ....
    Hier scheint es ein Problem zu geben. Ich verweise mit einem Pointer auf das 1. Byte und möchte alle folgenden umwandeln, scheint halbwegs zu funktioeren,
    zumindest erscheint am Send_ptp Baustein-Eingang der String in Hex, den ich senden möchte,....37..........16$00$00$00$00$00$00$00$00$00$00$00$00.....
    Die $00 werden hintern immer angehangen, verstehe ich zwar nicht ganz, scheint aber keine Auswirkungen zu haben. Ich habe mir mit HTerm mal angesehen, was gesendet
    wird, es werden genau 11Byte gesendet, aber nicht mit dem Inhalt, der vorne am Send_PtP Baustein anliegt. Im Prinzip stimmt nur die 10.Position, sprich das 10.Byte.
    Length ist mit 11 deklariert, da ich ja 11Byte übertragen möchte.

    Kennt jemand mein Problem bzw. kann mir sagen was ich falsch mache?! Laut Programmierhandbuch für mein CM PtP an dezentraler Peripherie, bin ich der Meinung, dass ich alles richtig deklariert habe.
    Es läuft aber wie gesagt nicht, weil nicht das geschickt wird, was vorne am Sendenbaustein anliegt und das Gerät, welches via RS485 bedient werden soll, sich nicht angesprochen fühlt.

    LG

  8. #8
    Registriert seit
    16.03.2013
    Beiträge
    36
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich habe nochmal ein paar Dinge geändert. Ich habe jetzt nur noch den send_ptp Baustein und trigger diesen mit einem bool Merker und habe am Buffer einen DB, dieser ist mit einem Array 0..10, sprich 11Bytes belegt und als Typ Byte initialisiert. Dort befinden sich alle Hex Daten als Startwert.
    Der Buffer verweist auf das erste Byte in diesem Array und schickt auch leider nur dieses,....was mache ich falsch?!

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Was genau hast Du an den Eingang vom Send_PtP geschrieben?
    Falls Du da sowas wie DB1.bArray[0] stehen hast, lass mal die Klammer weg und schreibe nur DB1.bArray (das bArray müsste als ARRAY[0..10] OF BYTE deklariert sein)
    In Step7 classic müsste man schreiben: P#DB1.DBX0.0 BYTE 11
    Geht sowas auch in TIA?

    Vielleicht kann man auch ein STRING[11] dranschreiben? Ein STRUCT mit 11 Bytes gibt es ja wohl nicht.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #10
    Registriert seit
    16.03.2013
    Beiträge
    36
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Abend,

    erstmal danke für die schnelle Beteiligung. Ich kann Morgen gerne mal ein Bild posten wie das aussieht.
    Aber es ist sowas wie DB1.DBB0 oder sowas in der Art. Wenn ich es live beobachte, dann steht da auch das P# vor, dass bedeutet aber mir, dass es ein Pointer ist, oder?!

    Unter dem DB1.... in hellblau steht dann noch die Bezeichnung in "..." und innerhalb des Arrays das erste Byte.

    Schon doof, dass das nirgendwo vernünftig beschrieben ist und ich habe schon verdammt viel gelesen. Ich habe leider erst mit TIA angefangen und habe so den Eindruck das es keine detaillierte Literatur gibt und viele Fachleute sich einfach streunen damit Erfahrungen zu sammeln.

Ähnliche Themen

  1. TIA S7 1200 und PtP RS 485 (SEND_PTP, RCV_PTP)
    Von 53tao im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 25.10.2013, 07:48
  2. Antworten: 1
    Letzter Beitrag: 29.01.2013, 07:34
  3. Daten per E-mail versenden
    Von zwerg77 im Forum HMI
    Antworten: 3
    Letzter Beitrag: 03.06.2008, 08:12
  4. Benutzung von SEND_PTP
    Von quant81 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 05.06.2007, 10:29
  5. Daten größer 240 Bytes versenden...
    Von Jochen Kühner im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 31.03.2007, 00:56

Lesezeichen

Berechtigungen

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