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

Ergebnis 1 bis 9 von 9

Thema: Suche Hilfe! Inhalt zweier Merkerwörter (Int) über TCP/IP (CP343-1) an PC versenden

  1. #1
    Registriert seit
    18.07.2007
    Beiträge
    11
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Habe folgendes Problem:

    Ich möchte zwei Füllstände (2 Analogwerte in S7 (CPU 316-2DP) skaliert und in zwei Merkerwörtern gespeichert) über eine TCP/IP-Verbindung mit einer CP 343-1 an einen PC versenden.
    Die Verbindung habe ich in Net-Pro konfiguriert und über AG_Send -Baustein schaffe ich es auch einzelne Buchstaben (Char's aus einem Datenbaustein ) zu versenden. (Zeichen werden auch über Hyperterminal (Testweise) empfangen.


    FC1:

    NW1:

    CALL "AG_SEND"
    ACT :=M100.0
    ID :=1
    LADDR :=W#16#100
    SEND :=P#DB5.DBX0.0 BYTE 10
    LEN :=10
    DONE :=M2.0
    ERROR :=M2.1
    STATUS:=MW20

    NW2:

    U E 0.0 Testtrigger zum senden
    = M 100.0

    DB5:

    send CHAR '1'
    send1 CHAR '2'
    send2 CHAR '3'
    send3 CHAR '4'
    send4 CHAR ' '
    send5 CHAR ' '
    send6 CHAR ' '
    send7 CHAR ' '
    send8 CHAR ' '

    Mein Problem: Wie schaffe ich es, das z.B. die Merkerwörter MW50 (Wert-Beisp. 1111) und MW52 (Wert-Beisp.2222) im Format 11112222 an den PC gesendet werden.

    Dazu sollte ich vielleicht noch sagen, das oben stehendes Progamm aus einem Beispiel stammt.
    Ich habe aber noch nie mit Pointern zu tun gehabt, sodaß mir Send-Parameter auch nicht ganz klar ist.

    Ich habe versucht die Merkerwörter direkt mit AG_Send (SEND :=MW50) zu versenden - Es kommen aber nur "Mülldaten" an.


    Hoffe mir kann jemand helfen

    Gruß Michael
    Zitieren Zitieren Suche Hilfe! Inhalt zweier Merkerwörter (Int) über TCP/IP (CP343-1) an PC versenden  

  2. #2
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    Standard Library, IEC FCs, FC16: konvertiert ein Integer in einem String.
    Also zuerst dein MW konvertieren, als String ein DB Bereich angeben, und
    der Pointer zeigt drauf.
    Z.B.: nach der Konvertierung steht der Wert als String in DB100.DBB0 bis
    DBB 9 (10 Bytes=10 Zeichen), das ist deklariert als Array of Char.
    Dann als SEND bereich eintragen
    ....
    SEND :=P#DB100.DBX0.0 BYTE 10
    ...

    Die 10 Zeichen werden übertragen. Kannst auch weniger machen, je nach dem wie deine Werte sind.

    Gruss: Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Rs232  

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Wenn du sendest, dann werden 10 Byte gesendet, die im DB5 ab Dw 0 stehen
    P#DB5.DBX0.0 BYTE 10

    Versuch doch mal alles so zu lassen, aber dein MW50 in DB5.DBW0 zu schreiben und dein MW52 in DB5.DBW2. Was kommt dann an am PC? Was willst du genau am PC lesen? INT oder Char?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #4
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    MOOOment mal, ich dachte an RS232, er meint ja TCP/IP Übertragung!
    So geht das doch nicht, sorry! Was für Hyperterminal und TCP/IP ???
    Verstehe nur Bahnhof(i understand onli railstation).

    Vladi

    P.S. Geht das über die WinSocket Verbindung? Habe nie was probiert damit.
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Ähhhhhm  

  5. #5
    SPS_Michael ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.07.2007
    Beiträge
    11
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard

    An Vladi:
    Den Hyperterminal kann man so einstellen, das er Daten über TCP/IP (Winsock) sendet/empfängt - Funktioniert auch (Man muß nur IP und Port einstellen) - Ist auch nur mein Test-Empfänger

    An Ralle:

    Ralle schrieb:
    "Versuch doch mal alles so zu lassen, aber dein MW50 in DB5.DBW0 zu schreiben und dein MW52 in DB5.DBW2. Was kommt dann an am PC? Was willst du genau am PC lesen? INT oder Char?"

    A. Es kommen gar keine Daten an (Verbindung steht)
    B. Ich möchte die INT-Inhalte der Merkerwörter am PC lesen - Die Chars waren nur aus dem Beispiel mit dem ich rumprobiert habe

  6. #6
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    ja wenn es so geht, dann solltest du so konvertieren, wie ich gesagt habe, denn sonst ist mir die Formatanpassung sehr unklar..Du empfängst im Hyperterminal ja ASCII Zeichen, also sollte zuerst von INT nach ASCII umgewandelt werden(die og. FC).

    Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Ach so..  

  7. #7
    SPS_Michael ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.07.2007
    Beiträge
    11
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard

    An Vladi: (Korrigiert)

    FC16 ist eigebaut

    CALL "I_STRNG"
    I :=MW50
    RET_VAL:=DB5.Senden



    in DB5 habe ich dann einen String[10] definiert (DB5.Senden)

    Daten von MW50 werden gesendet -- Klasse
    Noch ein kleines Problem : Es wird ein Vorzeichen mitgesendet (Siehe Hilfe FC16) - Weißt Du zufällig wie ich das wegbekomme ???

    Ansonsten Vielen DANK für dei schnelle Hilfe
    Geändert von SPS_Michael (18.07.2007 um 18:26 Uhr)

  8. #8
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    sorry, du brauchst gar keinArray of Char, im DB5 kannst du ganz normal eine Variable als STRING[10] deklarieren(hier z.B. 10 Byte lang).

    OK, dein Daten-String steht im Lokaldatenbereich. Die Adresse siehst du
    oben im Deklarationsteil. Nehmen wir an, es fängt an ab LB20. Und im DB5 ab Byte 0 steht dein String, der gesendet wird.

    L LD 20 // 4 Byte übertragen
    T DB5.DBD0
    L LD 24 // noch 4 Byte übertragen
    T DB5.DBD4
    L LD 28 // noch 4 Byte übertragen usw., je nachdem wie lang
    T DB5.DBD8

    So ist dein Lokalstring in dem DB5 kopiert.

    Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Daten  

  9. Folgender Benutzer sagt Danke zu vladi für den nützlichen Beitrag:

    SPS_Michael (18.07.2007)

  10. #9
    SPS_Michael ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.07.2007
    Beiträge
    11
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Vladi

    Funktioniert
    Musste allerdings erst ab dem 3. Byte der Variable in den DB übertragen, da sonst das Vorzeichen in den DB geschrieben wurde, und die letzte Stelle fehlte.

    Beispiel:
    L LD 3
    T DB5.DBD 0

    Wobei die Startadresse der Lokalvariable bei 0 liegt !!!

    Das Direkte schreiben in den DB (Siehe meinen vorherigen Beitrag, den ich schon editiert hatte, bevor ich Deine letzte Antwort gelesen hatte)
    funktioniert auch. Allerdings hat man dann das Vorzeichen mit im Sendestring.

    Vielen Dank für deine Hilfe

    Und auch Danke an Ralle


    Michael

Ähnliche Themen

  1. CH: SMS über Internet versenden
    Von gloeru im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 07.11.2012, 10:10
  2. Kommunikation zweier SPS über Profibus
    Von Gerri im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.09.2009, 16:18
  3. DB über CP342-5 versenden
    Von ottopaul im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 06.01.2007, 18:15
  4. Antworten: 4
    Letzter Beitrag: 26.04.2006, 13:00
  5. Antworten: 7
    Letzter Beitrag: 14.09.2005, 06:33

Lesezeichen

Berechtigungen

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