Step 7 2 String[12] auf „gleich“ vergleichen

GFuchs84

Level-1
Beiträge
27
Reaktionspunkte
0
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.
 

Anhänge

  • Vergleich von 2 Strings.pdf
    155,3 KB · Aufrufe: 92
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
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...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
 
Zurück
Oben