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

Ergebnis 1 bis 7 von 7

Thema: 2 String[12] auf „gleich“ vergleichen

  1. #1
    Registriert seit
    08.08.2014
    Beiträge
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Idee


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe 2 String[12] die ich auf „gleich“ vergleichen will.
    1.png


    1. String: String[12]


    1. String: String[12]




    Inhalt dieser Strings:
    4.png
    5.png

    Wie man oben sehen kann ist der Inhalt gleich und deshalb eigentlich der Merker gesetzt.



    Bis dahin gut, aber jetzt verändere ich einmal den Inhalt des Sachnummernstring:
    6.png

    Der Merker bleibt „TRUE“, obwohl die Inhalte verschieden sind!


    Was mach ich falsch und was hat es eigentlich mit den ersten beiden Bits des Strings zu tun. Darf man die nicht nutzen??
    Die Symbolik zeigt es nie an?



    Siehe auch PDF im Anhang, falls die Bilder nicht lesbar sind.
    Angehängte Dateien Angehängte Dateien
    Danke
    Zitieren Zitieren 2 String[12] auf „gleich“ vergleichen  

  2. #2
    Registriert seit
    03.02.2015
    Ort
    Hatten
    Beiträge
    183
    Danke
    16
    Erhielt 32 Danke für 29 Beiträge

    Standard

    Hallo,

    erstmal vorweg: Die ersten beiden Bytes sind Infos, wie lang der String sein darf (Byte 0) und wie lang er tatsächlich ist (Byte 1). Denn in der SPS gibt es kein \0 wie bei anderen Programmiersprachen am Ende des Strings.

    Sieh Dir das mal in der Hilfe von Step7 an: Aufbau der STRING Variablen.
    Und da scheint auch Dein problem zu liegen: Das zweite Byte ist bei Dir auf 0 gesetzt, somit haben die Zeichenketten beide die Länge null und sind somit gleich. Egal was in den einzelnen Speicherplätzen steht. Die SPS nutzt zum Vergleich nur die n Zeichen, die im zweiten Byte angegeben sind.
    Wie befüllst Du den String? Schreibst Du selber in die einzelnen Speicherzellen?
    Dann mußt Du auch die Länge selber schreiben...

    Gruß
    JS

  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

    Wie befüllst du die Strings?
    In die ersten beiden Byte (ohne Symbolnamen in der Variablentabelle) müssen die max. Länge und die tatsächliche Länge des Strings eingetragen werden, also 12dez bei dir.
    Jetzt ist die Länge 0 und bei dieser Länge sind die Strings auch gleich, egal was du als Text einträgst.
    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
    Avatar von GFuchs84
    GFuchs84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.08.2014
    Beiträge
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Leute,

    vielen Dank für die schnellen Antworten.
    Der Fehler war dass ich die ersten beiden Bits des Strings nicht beschrieben habe.
    Hab jetzt feste Soll und Ist hineingeschrieben und schon gehts!!!

    Gibt es einen Standardbaustein um aus Char einen String zu machen,
    so das die Soll- und Ist Bits automatisch beschrieben werden?

    Vielen Dank euch!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Danke

  5. #5
    Registriert seit
    03.02.2015
    Ort
    Hatten
    Beiträge
    183
    Danke
    16
    Erhielt 32 Danke für 29 Beiträge

    Standard

    Was hast Du denn für Char? Ein Array oder verschiedene Variablen?
    Wie befüllst Du die CHAR?
    Meines Wissens gibt es keine direkte Funktion, um von Array of CHAR in STRING zu kommen.
    Aber vielleicht kann man sich ja den Umweg sparen...

  6. #6
    Avatar von GFuchs84
    GFuchs84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.08.2014
    Beiträge
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von JSEngineering Beitrag anzeigen
    Was hast Du denn für Char? Ein Array oder verschiedene Variablen?

    Wie befüllst Du die CHAR?

    Meines Wissens gibt es keine direkte Funktion, um von Array of CHAR in STRING zu kommen.
    Aber vielleicht kann man sich ja den Umweg sparen...
    Es ist ein Arry mit 10 CHAR

    L Char
    T Bit von String
    Danke

  7. #7
    Registriert seit
    03.02.2015
    Ort
    Hatten
    Beiträge
    183
    Danke
    16
    Erhielt 32 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich meine: Wie befüllst Du das Array of CHAR? Kommt das von irgendeinem seriellen Input oder so?
    Ist die Zeichenkette immer gleich lang?
    Dann könntest Du Dir den Umweg über Array of Char sparen und direkt zeichenweise in String schreiben. Ggf. dann mit CONCAT immer ein Zeichen anhängen, wenn die Strings variabel lang sind, so würde dann Deine Länge immer korrekt gesetzt.

Ähnliche Themen

  1. String vergleichen
    Von Bensen83 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 14.07.2015, 10:52
  2. String vergleichen bzw. finden
    Von bastler im Forum CODESYS und IEC61131
    Antworten: 13
    Letzter Beitrag: 03.01.2015, 13:18
  3. Enum mit String vergleichen
    Von RennV4.1 im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 12.11.2014, 14:32
  4. Step 7 String führende Nullen dazufügen damit Länge immer gleich
    Von screwdriver im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 10.02.2014, 14:49
  5. String vergleichen
    Von enter im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.02.2008, 09:19

Stichworte

Lesezeichen

Berechtigungen

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