Kann euch nicht sagen warum, aber jetzt gehts.
Strings sind einfach nichts für die Siemens-SPS-Welt.
![]()
Bin aber froh das es jetzt geht.![]()
Ich habe ein Problem mit Stringvariablen in einer S7 314C2DP.
Der Replace FC funktioniert nicht![]()
Ich habe die Funktion bereits in einer 315er CPU problemlos verwendet. Habt ihr eine Idee was da noch schief gehen kann?
Die Variable lässt sich in der VariablenTabelle verändern aber nicht durch besagten Replace FC.
Gruß
ZoToS![]()
Kann euch nicht sagen warum, aber jetzt gehts.
Strings sind einfach nichts für die Siemens-SPS-Welt.
![]()
Bin aber froh das es jetzt geht.![]()
„If you open your Mind too much, your Brain will fall out.“
wäre ganz gut wenn du schreiben könntest woran es gelegen hat,
habe das gleich Problem das die Replace funktion nicht geht.....
kann die Variable verändern wie ich möchte
Ini1 String [10]
Ini2 String [10]
RetVal String [10]
somit haben alle die gleiche Länge.
egal wie ich Ini1 oder auch Ini2 verändere
RetVal bleibt gleich.............
Ich bin gerade erschrocken. Der Beitrag ist ja so alt das ich mich gerade fragen musste bei welchem Arbeitgeber ich damit gearbeitet habe ;o)
Ich kann aber nicht sagen woran es gelegen hat das hatte ich damals nicht herausgefunden. Das war so ein Phänomen wo es plötzlich ging. Sowas was durch Reorganisieren oder so manchmal geht und man bekommt nicht raus was es war.
Welchen Teil des Strings möchtest Du denn überschreiben? Kopiere doch mal den Aufruf hier rein.
„If you open your Mind too much, your Brain will fall out.“
Schau mal nach, was in Byte 0 und 1 deines String tatsächlich drinsteht. Dort gehört die Max. Länge und die tatsächliche Länge rein. Viele (oder alle?) Stringfunktionen arbeiten nur, wenn der Stringkopf auch eine Länge eingetragen hat!
Gruß
Ralle
... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
and the third kinds of people … those who love TIA-Portal
Der Beitrag von Ralle ist nach meiner Erfahrung der Schlüssel zu dem Ganzen. Siemens nennt das Ganze charmant "String initialisieren". Ist auch unter SCL ein Problem, dort aber noch am einfachsten in den Griff zu bekommen. Man schreibt einfach :
Dann ist es erledigt.Code:Temp_String := '' ;
In AWL sind es tatsächlich die ersten beiden Bytes die zugewiesen werden müssen ...
Wie auch immer, es gilt für alle Siemens String-FC's also "LEFT , MID , RIGHT ..." usw. Ich hatte mir irgendwann mal den Spass gemacht und so eine FC im Code angesehen und dort wurde dann als Erstes das Byte "String-Länge tatsächlich" angefasst.
...
Gruß
LL
kann obiges bestätigen. die ersten 2 bytes sind wichtig.
ich hatte hier mal einen string den ich an eine fremdsteuerung als asc schicken musste. das habe ich mit der sfc21 gemacht ohne die ersten 2 bytes.
da bei einer wandlung einer zahl in einen string aber nicht der komplette string überschrieben *1 wird, habe ich den kompletten string vorher auf b#16#0 gesetzt.
dann gehen die string fc's nicht mehr.
*1
z.b. stringlänge 10
123456 (dez) -> 123456 (string) == byte0 = 10; byte1 = 6 der rest halt die zahlen
danach 9876 (dez) -> 9876 (string) == byte0 = 10; byte1 = 4; byte 7 und 8 enthalten aber immer noch 5 und 6 aus dem vorigen transfer.
mfg Volker ............ alles wird gut ..
=>Meine Homepage .. direkt zum Download auf meiner HP
zum Download im Internet (Backup nicht unbedingt aktuell)
Bookmarks