TIA 2 Strings vergleichen

Mogli

Level-2
Beiträge
132
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen zusammen,

ich habe ein kleines Problem, bei dem ich nicht weiter komme.

Ich sende einen String und bekomme auch eine Antwort von einem Roboter.
Jedoch darf ich den gleichen String nicht 2 Mal schicken.
Wie vergleiche ich am besten den gesendeten und empfangenen String? Damit ich das gleiche Signal nicht 2 mal sende?

Im Internet habe ich gesehen, dass man dies wohl mit dem Baustein "S_COMP" Baustein machen kann.
Diesen kann ich bei mir jedoch nicht finden.

1648795425618.png

Programmiert ist das Ganze mit TIA V15.1.
Bei meiner CPU handelt es sich um eine 1212C.

Schon Mal vielen Dank für Eure Hilfe!
 
Einfach 'ne Leerbox (aus den Favoriten) nehmen, in diese 2 Gleichheitszeichen (oder welchen Vergleich Du sonst benötigst) eintragen und die beiden String angeben.
Den Rest macht dann TIA.

Z.B. in KOP:

1648795802415.png
 
Hallo, ich habe ein Verständnisproblem zum vergleichen von zwei Strings und dachte ich erweitere den Thread hier.
CPU S7-1517F mit TIA V15.1

Ich möchte einen String[20] mit String[10] vergleichen. Der String[20] hat ist aber immer nur mit 10 Zeichen beschrieben.
1686639374550.png

1. Mein Code sieht folgendermaßen aus:
Code:
IF #iPalettenkonfig[#tmpVars.L].Palette[#tmpVars.K].daten.chargennummer = #"ioOP25.1"[#tmpVars.M].BlechBox[0].Charge THEN
...;
END_IF;

Linke Seite ist der String[20], rechte Seite der String[10].

Der Vergleich "==" wird nicht akzeptiert sondern nur "=". Gibt es hier einen Unterschied, wenn ja welchen? Konnte in der TIA Hilfe dazu nichts finden.

2. Muss ich den wichtigen Teil des String[20] in einen String[10] zwischenspeichern und den dann für den Vergleich verwenden? Ich glaube das der aktuelle Vergleich teilweise falsche Ergebnisse liefert, konnte es bisher aber nicht beobachten.

LG Stogi
 
Servus,

das ist nur die Darstellung in SCL.

Vergleich in SCL "=".
Vergleich in KOP "==".

Zuweisung in SCL ":=".
Zuweisung in KOP ist der "MOVE"-Block.


Ob es Komplikationen mit den unterschiedlich langen Strings gibt, kann ich nicht auswendig sagen.
Um sicher zu gehen, kannst du auch mit FIND versuchen den kurzen String im langen String zu suchen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe ein Verständnisproblem zum vergleichen von zwei Strings und dachte ich erweitere den Thread hier.
CPU S7-1517F mit TIA V15.1

Ich möchte einen String[20] mit String[10] vergleichen. Der String[20] hat ist aber immer nur mit 10 Zeichen beschrieben.
Anhang anzeigen 69433
For i 1 to 10 do
If str1 <> str2 then
StrInvalid := true;
Exit;
End_if;
End_for;
 
Warum die Strings 10 mal vergleichen? Rein sicherheitshalber???
Habe den index vergessen. Aber du als erfahrener Programmierer hast das mit Sicherheit auch sofort erkannt und würdest natürlich niemals dumme Frage stellen um andere Leute versuchen bloßzustellen
 
stellt sich raus das ich ihn nicht vergessen habe, sonderm das in diesem forum eine Formatierungsfunktion ist [i ]
Tipps:
- Programmcode im Beitrag immer als CODE formatieren, dann wird der Text nicht interpretiert und verändert; auch die Einrückungs-Leerzeichen am Anfang einer Zeile bleiben erhalten. So sieht der Beitrag aus, wenn man ihn als CODE formatiert:
Code:
For i 1 to 10 do
  If str1[I] <> str2[I] then
     StrInvalid := true;
     Exit;
   End_if;
End_for;
Als CODE formatieren: im Menü des Beitragseditors oben ganz rechts das 3-Punkt-Menü öffnen und ganz rechts den letzten Menüpunkt " </> " klicken.

- Will man Text außerhalb von CODE-Abschnitten vor Veränderungen schützen, dann den Text in PLAIN-Tags einschließen:
[PLAIN] If str1[I] <> str2[I] then [/PLAIN]
- Vor senden ("Antworten") eines Beitrags, den Beitrag immer erst als "Vorschau" betrachten, damit man solche eigenwilligen Umformatierungen rechtzeitig erkennen und beseitigen kann.
- Wenn ein Beitragstext "komisch/verdächtig" aussieht, dann den Beitrag "Zitieren", dann sieht man im Zitat im Beitragseditor den tatsächlichen unveränderten Text.

Harald
 
Tipps:
- Programmcode im Beitrag immer als CODE formatieren, dann wird der Text nicht interpretiert und verändert; auch die Einrückungs-Leerzeichen am Anfang einer Zeile bleiben erhalten. So sieht der Beitrag aus, wenn man ihn als CODE formatiert:

Als CODE formatieren: im Menü des Beitragseditors oben ganz rechts das 3-Punkt-Menü öffnen und ganz rechts den letzten Menüpunkt " </> " klicken.

- Will man Text außerhalb von CODE-Abschnitten vor Veränderungen schützen, dann den Text in PLAIN-Tags einschließen:
[PLAIN] If str1[I] <> str2[I] then [/PLAIN]
- Vor senden ("Antworten") eines Beitrags, den Beitrag immer erst als "Vorschau" betrachten, damit man solche eigenwilligen Umformatierungen rechtzeitig erkennen und beseitigen kann.
- Wenn ein Beitragstext "komisch/verdächtig" aussieht, dann den Beitrag "Zitieren", dann sieht man im Zitat im Beitragseditor den tatsächlichen unveränderten Text.

Harald
Vielen Dank für die Info, das werde ich beherzigen
 
Zurück
Oben