TIA TIA V13 SP1 SCL Split-Funktion

dentech

Level-1
Beiträge
577
Reaktionspunkte
39
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich komme bei einem Problem nicht weiter.

System: TIA V13 SP1
CPU: S7 1511-1 PN
VISU: WINCC V13 Runtime auf IPC

Es wird eine Artikelnummer eingescannt, dann mit Strg_to_Chars in einzelne Zeichen zerlegt und dann soll nach einem bestimmten Muster mit Split zerlegt werden. Als nächstes wird der Zweite String in eine Integerzahl gewandelt.

Das Problem ist das ganze funktioniert nur einmal und ich meine vor dem Update auf SP1 hat es auch noch funktioniert.

Artikelnummer ist z.B. "8008004L107", ich brauche nur die Zahl ab dem 'L'.

Code:
#Artikel.Mode :=16#0000_0000;
Strg_TO_Chars(Strg := #Artikelnummer,
                  pChars := #Artikel.pChars,
                  Cnt => #Artikel.Cnt,
                  Chars := #Artikel.Chars);
    
    //Laserprogramm Nr. extrahieren
    #Artikel.#Fehler := SPLIT(Mode := #Artikel.Mode, RecSeparator := #Artikel.RecSeparator,
                              EndSeparator := #Artikel.EndSeparator,
                              SrcArray := #Artikel.Chars,
                              Count => #Artikel.Cnt,
                              DstStruct := #Artikel.DstStruct,
                              Position := #Artikel.Position);
    
    //String in Int wandeln und in Output Laser[Int] schreiben
    #Laser := STRING_TO_INT(#Artikel.DstStruct[1]);
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi dentech

wenn es nur einmal funzt, könnte es an der #Artikel.Position liegen.
Das ist ein INOUT, soweit ich mich erinnere, den musst du vor dem Aufruf von SPLIT richtig, also in deinem Fall auf 0 setzen.

Ich finde das mit dem INOUT gar nicht so verkehrt, denn wenn die #Artikel.DstStruct deutlich kleiner ist wie das SrcArray und das Array diese Struktur mehrfach enthält, dann kann man das in einer Schleife mehrfach hintereinander aufrufen.
Oder das Array enthält verschiedene Strukturen, dann kann man diese ebenfalls einfach hintereinander aus dem Array ziehen, ohne dass man selbst wissen muss wie groß die Struktur ist.

Aber trotzdem muss man aufpassen, dass man am Zyklusbeginn mit 0 anfängt.

'n schön' Tach auch
HB
 
Danke HB,

man muß die Position wirklich auf 0 setzen, damit es dann erneut funktioniert. Bin mir aber ziemlich sicher das es vor dem Update auf SP1 noch so ging. Naja egal.

Schönen Tag noch.
 
Zurück
Oben