Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: S7 String variablen

  1. #1
    Registriert seit
    07.03.2004
    Beiträge
    4.371
    Danke
    946
    Erhielt 1.162 Danke für 834 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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
    Zitieren Zitieren S7 String variablen  

  2. #2
    zotos ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.03.2004
    Beiträge
    4.371
    Danke
    946
    Erhielt 1.162 Danke für 834 Beiträge

    Standard

    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.

  3. #3
    Registriert seit
    19.11.2007
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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.............

  4. #4
    zotos ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.03.2004
    Beiträge
    4.371
    Danke
    946
    Erhielt 1.162 Danke für 834 Beiträge

    Standard

    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.

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.608
    Danke
    583
    Erhielt 2.791 Danke für 2.022 Beiträge

    Standard

    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

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.950
    Danke
    408
    Erhielt 2.446 Danke für 2.036 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    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!
    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 :
    Code:
    Temp_String := '' ;
    Dann ist es erledigt.
    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

  7. #7
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    5.090
    Danke
    91
    Erhielt 853 Danke für 581 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. Arbeiten mit STRING-Variablen
    Von Mike Vanstrike im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 20.07.2011, 16:49
  2. string Variablen verschieben
    Von Felse im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 13.03.2009, 09:06
  3. STRING einer DB-Variablen indirekt zuweisen (SCL)
    Von maweri im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 26.05.2008, 16:58
  4. String Variablen verschieben
    Von SPS_Nord im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 19.01.2008, 00:30
  5. Antworten: 5
    Letzter Beitrag: 17.01.2008, 15:23

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •