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

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

Thema: String vergleichen

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute, ich habe einen String in einem DB angelegt:

    String[20]

    in der Visu bekomme ich ihn so angezeigt:

    db355.dbb0

    wie kann ich denn in meiner SPS vergleichen, ob der String '' (leer) ist, oder ob etwas drin steht?

    Habe ne S7 317 2DP
    Zitieren Zitieren String vergleichen  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    per direktem Befehl geht das nicht. Dazu gibt es einige FC in der Step7-Bibliothek, die die ganzen String-Operationen erschlagen. Wie die dann funktionieren wird in der Step7-Hilfe erklärt ...

    Gib dort doch einfach mal String-Operationen (oder ähnlich) ein ...

    Gruß
    LL

  3. #3
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.719
    Danke
    729
    Erhielt 1.159 Danke für 970 Beiträge

    Standard

    Es gibt einen FC10 EQ_STRNG. Damit könntest du deinen String mit einem leeren String vergleichen

  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

    Nur mal so zum Rumspielen:

    Code:
    LAR1 P#Der String  // Zeiger auf den String
    L B [AR1, P#1.0]  // Länge des Strings auslesen
    Wenn die Länge 0 ist, sollte der String leer sein. Hab ich aber nicht probiert, könnte so aber funktionieren.

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von Grubba Beitrag anzeigen
    Nur mal so zum Rumspielen:

    Code:
    LAR1 P#Der String  // Zeiger auf den String
    L B [AR1, P#1.0]  // Länge des Strings auslesen
    Wenn die Länge 0 ist, sollte der String leer sein. Hab ich aber nicht probiert, könnte so aber funktionieren.
    Das sollte genau so gehen, wenn man nicht die Funktionen der Library nutzen will/kann.
    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

  6. #6
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Danke für die Hilfe.

    Ich habe den Libary Baustein genommen. habe nun 2 strings drauf gelegt, jedoch ist es egal, ob sie unterschiedlich sind oder nicht, das ergabnis ist immer 0.

    gibt es da noch was zu beachten?
    Zitieren Zitieren Danke  

  7. #7
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Komisch jetzt geht es auf einmal
    Zitieren Zitieren Ok  

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    Ich habe den Libary Baustein genommen. habe nun 2 strings drauf gelegt, jedoch ist es egal, ob sie unterschiedlich sind oder nicht, das ergabnis ist immer 0.

    gibt es da noch was zu beachten?
    Ich denke mal, dass du den CONCAT-Baustein genommen hast ...
    Ganz gernerell gilt auf jeden Fall für die Siemens-Bausteine, dass die Strings initialisiert sein müssen - d.h., dass in den beiden Header-Bytes (je-)des Strings die tasächlich genutzte Länge und die deklarierte Länge eingetragen sein muß. Das macht Step7 NICHT selbstständig ...

    Gruß
    LL

  9. #9
    Registriert seit
    14.01.2015
    Beiträge
    20
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Leute

    Ich schlage mich auch gerade damit herum 2 Strings miteinander zu vergleichen. Aber irgendwie gibt der EQ_STRNG - Baustein immer eine 0 aus.

    Um das ganze zu Testen habe mich mir 2 Stringvariablen der Länge 5 in einem DB angelegt und wie folgt beschrieben:

    Code:
          L     B#16#5
          T     DB19.DBB    0
          T     DB19.DBB    1
    
          L     B#16#61
          T     "Test".Test1[1]
          T     "Test".Test1[2]
          T     "Test".Test1[3]
          T     "Test".Test1[4]
          T     "Test".Test1[5]
    
          L     B#16#5
          T     DB19.DBB    8
          T     DB19.DBB    9
    
          L     B#16#61
          T     "Test".Test2[1]
          T     "Test".Test2[2]
          T     "Test".Test2[3]
          T     "Test".Test2[4]
          T     "Test".Test2[5]
    
          CALL  "EQ_STRNG"
           S1     :="Test".Test1
           S2     :="Test".Test2
           RET_VAL:=#HM_Test
          NOP   0
    Ich habe wie ihr seht habe ich die Header der Strings extra nochmal initialisiert und beide Strings jeweils 5x mit ASCII "a" gefüllt. Aber der Baustein gibt mir dennoch eine 0 aus. Woran kann das liegen? Braucht der Baustein noch einen anderen Baustein um zu funktionieren? Oder stört es, dass ich aus dem eigentlichen FC10 einen FC9 gemacht habe, da FC10 schon benutzt war?

    Danke schonmal für eure Hilfe
    Geändert von DasRallum (14.07.2015 um 10:27 Uhr)

  10. #10
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.356
    Danke
    455
    Erhielt 695 Danke für 520 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also wenn ich nen DB19 "Test" mit 2 String[5] Test1 und Test2 anlege, dann deinen Code kopiere und im Simulator ausführe liefert mir EQ_STRNG eine 1.

    Da haperts anscheinend anderswo. Alles (EQ_STRNG) in die CPU gespielt? HM_Test irgendwie anderweitig überschrieben... ?
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  11. Folgender Benutzer sagt Danke zu RONIN für den nützlichen Beitrag:

    DasRallum (14.07.2015)

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 11.06.2011, 23:19
  2. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  3. Ein String kopieren in einen anderen String
    Von CanYouHelpMe im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.09.2008, 17:21
  4. String vergleichen
    Von enter im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.02.2008, 09:19
  5. WinCC Flex 2005 String vergleichen
    Von PLCTEC im Forum HMI
    Antworten: 7
    Letzter Beitrag: 13.05.2007, 19:33

Lesezeichen

Berechtigungen

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