Beckhoff String vergleichen

Klohie

Level-1
Beiträge
49
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde,

ist es möglich, einen String zu vergleichen? Also z.B.
IF ARRAY1[1].String1 = ARRAY2[2].String2 THEN
...............
END_IF

Wenn ich den oberen Code verwende und String1 sich von String2 unterscheidet, macht er trotzdem das, was in der IF Anweisung steht.

IF.PNG
 
Kann es gerade nicht prüfen aber wenn überhaupt nur ein Gleichheitszeichen, wir sind hier schließlich nicht bei C, aber das hatte der TE ja schon erfolglos versucht.
Ansonsten könntest Du es auch mit Memory Compare probieren, Details findest Du hier.
 
Zuletzt bearbeitet:
Hi Klohie,

Dein Bild sieht in der Tat etwas ungewöhnlich aus.

Ich halte noch weitere Szenarien für möglich:
1. Der Bereich wird nicht abgearbeitet
2. Die Variable MonatTagSchreibenStep wird später im gleichen Zyklus noch mal beschrieben.

Was zeigt denn die Ablaufkontrolle für ein Bild?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Klohie,

Dein Bild sieht in der Tat etwas ungewöhnlich aus.

Ich halte noch weitere Szenarien für möglich:
1. Der Bereich wird nicht abgearbeitet
2. Die Variable MonatTagSchreibenStep wird später im gleichen Zyklus noch mal beschrieben.

Was zeigt denn die Ablaufkontrolle für ein Bild?

Mich verwundert das Bild in #1 auch. Das == nicht funktioniert ist klar. Ich arbeite öfters mit CoDeSys im Bereich Schneider LMC und kenne diese Beobachtungsprobleme auch nur, wie asci schon schreibt, wenn die Variable an einer anderen Stelle folgend noch einmal beschrieben wird.
 
Moin, das sieht echt wahnsinnig aus...
kann Codesys überhaupt eine so lange IF anweißung verarbeiten?!

Kannst du es nicht irgendwie vereinfachen?
ForSchleife?

Tipp:
Bau doch zustätzlich einen Counter ein um zu schauen ob der wirklich hochzählt nicht das du an anderer Stelle die VAR noch benutzt und auf 5 setzt.
 
Tipp:
Bau doch zustätzlich einen Counter ein um zu schauen ob der wirklich hochzählt nicht das du an anderer Stelle die VAR noch benutzt und auf 5 setzt.

Ja, das wäre einmal eine einfache Möglichkeit zu schauen, ob die Variable dort beschrieben wird.
So z.B.:

Code:
....THEN
MonatTagSchreibenStep := 5
[B]TestVar := TestVar +1;[/B]
ELSE...

EDIT:
Am besten gleich so:
Code:
....THEN
     MonatTagSchreibenStep := 5
     [B]TestVar1 := TestVar1 +1;[/B]
ELSE
    MonatTagSchreibenStep := 3
[B]    TestVar2 := TestVar2 +1;[/B]
END_IF;
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
kann Codesys überhaupt eine so lange IF anweißung verarbeiten?!

War das jetzt ernst gemeint? :roll:
Oder meinst Du den Vor-dem-Bildschirm-sitzenden-Code-Leser?:ROFLMAO:

Ich finde, das der Code gut formatiert wurde und somit leicht erfassbar ist.

Bei der Idee das mit einer Schleife zu machen, gebe ich Dir allerdings Recht.
 
Zuletzt bearbeitet:
Ja die Frage war/ist ernst gemeint.
Ich weiß nicht ob es eine Limitierung gibt.

Ich finde eine For-Schleife wäre besser Lesbar.
Der gemeine Programmierer ist doch faul beim Tippen :P

Grüße
 
Ja die Frage war/ist ernst gemeint.
Ich weiß nicht ob es eine Limitierung gibt.

Nein, das wäre unlogisch. Selbst bei einer S5 konntest Du schon so viele U Mx.x untereinanderschreiben, bis der Programmspeicher voll war. Das Zwischenergebnis wurde nach jeder Verknüpfung im VKE gehalten und weiterverknüpft. Lediglich beim Klammerstack gibt es gerne mal eine Limitierung.

Ich finde eine For-Schleife wäre besser Lesbar.
Der gemeine Programmierer ist doch faul beim Tippen :P

100% ACKN

Aber beim Debuggen war die gewählte Schreibweise jetzt doch von Vorteil.
 
Zuletzt bearbeitet:
Zurück
Oben