Step 7 SCL vergleichen

dann muss die Schleife aber nicht von 30dez bis 35dez gehen, sondern von 48dez bis 53dez
Sorry wenn ich bisschen verwirrt bin, wie gesagt Anfänger.
Meinst du so wäre es richtig?

REGION Daten auslesen
// Statement section REGION
IF "MV500_IDENT_DATA"."Auswertung Starten"THEN
// Start durch einlesen
;
FOR #Temp_Zähler_codes := 48 TO 53 BY +1DO
// Gelesen QR-codes zurücksetzten
;
"MV500_IDENT_DATA"."QR-Code_Stk."[#Temp_Zähler_codes] := 0;
END_FOR;

FOR #Temp_Zähler_codes := 48 TO 53 BY +1 DO
// Code schleife
;
FOR #Temp_Zähler_Zeile := 2 TO 17 BY +1 DO
// Zeilen Schleife
IF "MV500_IDENT_DATA".DAT [#Temp_Zähler_Zeile] = #Temp_Zähler_codes THEN
"MV500_IDENT_DATA"."QR-Code_Stk."[#Temp_Zähler_codes] := "MV500_IDENT_DATA"."QR-Code_Stk."[#Temp_Zähler_codes] + 1;
END_IF;
END_FOR;

END_FOR;
END_IF;
END_REGION
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry wenn ich bisschen verwirrt bin, wie gesagt Anfänger.
Meinst du so wäre es richtig?
Bin mir nicht sicher, weil ich Dein Programm so schnell nicht durchschaue.
Du hast eine LaufVariable von 48..53 und hattest mal die Indizes 0..5 und verwendest für beides dieselbe Variable.
ASCII-Zeichen := Idx + 48, sofern die Indizes zum Adressieren des ArrayElementes im Bereich 0..5 liegen und die Werte, mit denen Du vergleichst im Bereich 48..53.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich erwarte 0-5 es wird mir halt als dezimal von 30-35 angezeigt
Du erhältst höchstwahrscheinlich die ASCII-Zeichen '0 .. '5', die dir als 16#30 .. 16#35 angezeigt werden, was dezimal 48 .. 53 ist. Da du bei der FOR-Schleife die Werte dezimal angibst, musst du FOR #Temp_Zähler_codes := 48 TO 53 DO schreiben
 
SCL Auswerung für SPS forum.PNG
Du erhältst höchstwahrscheinlich die ASCII-Zeichen '0 .. '5', die dir als 16#30 .. 16#35 angezeigt werden, was dezimal 48 .. 53 ist. Da du bei der FOR-Schleife die Werte dezimal angibst, musst du FOR #Temp_Zähler_codes := 48 TO 53 DO schreiben
Ich verstehe was du meinst, allerdings hab ich nach wie vor keine funktion im Array 48..53 ( QR-code_Stk).:(
 
An welcher Stelle zwischen 0 und 17 erwartet du 0 bis 5:
Code:
$00 $10 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 5
Kannst du mal bitte die Fragen zum QR Code beantworten?

Wie ist der aufgebaut? Wo erwartest du was? Wie ist der Code definiert?

Wie sieht der Code aus wenn du mit einer App o.ä. abscannst?

Die müssen ja irgendein System bzw eine Definition haben
 
Wie ist der aufgebaut?
die QR-Codes sind in einem Generator generiert worden und gehen von 0-5.

Wo erwartest du was
Die Zahlenfolge ist vom Mittelpunkt ausgehend allerdings liest er nicht immer gleich heißt ich erwarte nicht z.b. bei DAT [4] eine 32 ich weiß es vorher nicht. die zu lesenden QR-Codes sind immer an unterschiedlichen orten.

Wie sieht der Code aus wenn du mit einer App o.ä. abscannst?
In den Codes sind nur die Zahlen eingebettet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich bin gerade dabei eine Simatic MV500 In betrieb zu nehmen.
Ich muss hierfür eine Auswertung der gelesenen QR-Codes erstellen
Ich gehe hier die verschiedenen QR-Codes und Zeilen durch.
kann mir wer Erklären warum mir diese nicht in den Dafür Vorgesehenen Array (OR-Code_Stk.) geschrieben werden.
Ich bin froh über jede Hilfe (ich bin Anfänger also über die schlechte Struktur hinweg sehen XD).Anhang anzeigen 74872
Anhang anzeigen 74873
Screenshot 2024-01-31 130921.png

Wie schaffst du es in Zeile 17 ein Byte mit einem Integer zu vergleichen?
Sind deine Variablen mit denen du den Schleifenzeiger inkrementierst im statischen oder temporären Bereich?
 
Wie schaffst du es in Zeile 17 ein Byte mit einem Integer zu vergleichen?
1706703106618.png
Dadurch

Sind deine Variablen mit denen du den Schleifenzeiger inkrementierst im statischen oder temporären Bereich?
Die Sind wie ich sie auch genannt habe in Temp angelegt. Ich habe die Arrays halt nicht wie du im FB selber angelegt sondern habe einen separaten DB dafür, Geht aber auch oder? Ich stelle gerade mein ganzes wissen in frage, dachte ich brauch für das 10 min.:ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich glaube du verrennst dich ein bisschen mit den Schleifen..

Du hast eine Zeichenfolge von 2 bis 17, in dieser sollst du suchen wie viele Zahlen zwischen 0 bis 5 sich in dieser befinden und dann addieren wie oft welche Zahl vor kommt? Ist die Annahme richtig?

Ich hab das zB jetzt mit diesem Aufbau gelöst:
Code:
IF Start THEN
    FOR .. DO
        // Hier darf dein Code stehen
        IF .. THEN
            // Hier darf dein Code stehen
        END_IF;
    END_FOR;
    Start:= FALSE;
END_IF;
 
Zurück
Oben