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

Ergebnis 1 bis 6 von 6

Thema: ASCII Zeichenkette über CP senden

  1. #1
    Registriert seit
    22.07.2016
    Beiträge
    7
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Servus Leute!

    Ich sitze an folgendem Problem:

    Ich muss einem Regler eine Zeichenkette vorgeben, um damit Parameter zu beschreiben / auszulesen.

    Via Docklight bekomme ich die Befehle an den Regler übermittelt und er ändert seine Werte dementsprechend oder liest sie aus und gibt sie mir zurück. (Bild siehe Anhang)

    Dort sieht man den Befehl einmal zum beschreiben des Parameters "!2075" mit dem Wert "30" - Der Regler antwortet mit "2075" und "OK".
    Das selbe beim lesen, der Befehl zum abfragen des Parameters "?2075" - Der Regler antwortet mit dem Parameter "2075" und dem beschriebenen Wert "30".

    Der Befehl müsste so aussehen - <SOH>~<STX>!207530<ETX>\Ð<EOT> bzw. in HEX 01 7E 02 21 32 30 37 35 33 30 03 5C D0 04

    Ich möchte das ganze aber über eine CPU 315 2 PN/DP und einen CP 340 laufen lassen, also ich habe versucht über den FB3 P_SEND einen dieser Befehle zu übertragen, leider ohne Erfolg. Der Regler hat den Wert nicht angenommen.

    Mache ich da etwas verkehrt? Muss die Zeichenkette noch umgewandelt werden, da ich sie nicht einfach so eingeben kann?

    Für eure Hilfe wäre ich euch sehr dankbar

    Grüße, und einen guten Start ins Wochenende!
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren ASCII Zeichenkette über CP senden  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.016
    Danke
    511
    Erhielt 2.647 Danke für 1.910 Beiträge

    Standard

    Ich gab das ketzte Mal den FB_SND_RK (mit ASCII-Protokoll) genutzt.
    An den kann man den DB_No, das DBB_No und die Länge der zu sendenen Daten antragen.
    Da kann man dann einen String mit den benötigten Daten zusammenfügen (z.B. mit FC2/Concat aus der Standard-IEC-Library).

    Zu beachten ist:

    Wenn du den String in einen DB ab DBB 0 legst (z.B. ab DB100.DBB0), dann mußt du am FB_SND_RK für DB_No 100 und für DBB_NO 2 eintragen.
    Siemens-Strings haben am Anfang 2 extra Byte, die max. String-Länge und die tatsächliche Stringlänge.
    Diese darfst du nicht mit an dein Gerät übermitteln, das kann mit diesen beiden Zeichen nichts anfangen!
    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

  3. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Garviel (16.08.2016)

  4. #3
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.240
    Danke
    240
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Schliesse mich zu 100 Prozent Ralle an.
    Das ist sicher mal ein Grund warum das Spiel nicht läuft.

  5. Folgender Benutzer sagt Danke zu borromeus für den nützlichen Beitrag:

    Garviel (16.08.2016)

  6. #4
    Garviel ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.07.2016
    Beiträge
    7
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank euch beiden für eure Antworten!

    Das mit den ersten beiden Zeichen bei einem String war mir bewusst, leider bekam ich es trotzdem nicht hin den Befehl via Sring an den Regler zu schicken. Nach einem Gespräch mit einem Kollegen gestern morgen haben wir es mit einer Struktur ausprobiert und darin jeden Teil des Befehls (in Hex) als Byte eingetragen und es hat funktioniert.

    Momentan sitze ich daran die Daten, welche vom Regler zu mir zurückgesandt werden, so zu verarbeiten das sie auch für normalsterbliche lesbar sind, welche nachher damit arbeiten sollen.

    Ich habe da an so etwas gedacht: Die Antwort wenn ich einen Parameter auf dem Regler beschrieben habe sieht beispielhaft so aus: 01 7E (Adresse des Geräts) 02 23 32 30 37 35 3F 3B (Parameter 2075 OK) 03 5C D0 (Checksumme) 04.
    Und für die Abfrage : 01 7E (Adress des Geräts) 02 23 32 30 37 35 32 30 (Parameter 2075 mit dem Wert 20) 03 ** (Checksumme) 04.

    Nun möchte ich einmal für die Antwort "OK" beim parametrieren eine Ausgabe machen und für die Antworte beim abfragen des Parameterwertes (s.o.) "20" ebenfalls. Ich muss quasi einzelne Bytes aus der Struktur herausholen.

    Hat da jemand eine Idee wie man das am geschicktesten macht?

    Liebe Grüße

  7. #5
    Registriert seit
    01.08.2016
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    was meinst du mit herausholen ?. Vergleiche den Inhalt mit einer for - Schleife

    Gruß

  8. #6
    Registriert seit
    23.10.2009
    Beiträge
    365
    Danke
    58
    Erhielt 104 Danke für 78 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mach aus der Antwort wieder einen String, dann kannst Du mit entsprechenden Stringfunktionen den relevanten Teil herausschneiden und dann in Integer oder was auch immer umwandeln.
    Gruß
    Erich

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 11.10.2012, 16:51
  2. Umwandlung ASCII-Zeichenkette
    Von E-Komiker im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 01.01.2010, 12:27
  3. Antworten: 1
    Letzter Beitrag: 29.12.2009, 16:31
  4. Antworten: 8
    Letzter Beitrag: 06.02.2008, 18:19
  5. Umwandlung einer ASCII Zeichenkette in S7-200
    Von M.S. 36 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 21.10.2003, 09:48

Lesezeichen

Berechtigungen

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