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

Page 1 of 2 12 LastLast
Results 1 to 10 of 18

Thread: STRING als TEMP-Variable funktioniert nicht?

  1. #1
    Join Date
    21.06.2004
    Posts
    23
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hi,

    Möchte STRINGs als Temp-Variablen (für "Zwischenergebnis")
    deklarieren, irgedwie funktionierts aber nicht.
    Deklaration in der Var-Dek-Tab geht zwar, aber wenn ich einen
    String der Temp-Variable zuweise und dann wieder aufrufe,
    enthält dieser nichts.
    Was mache ich falsch? Habe nichts in der Hilfe gefunden, dass
    Strings nicht als Temp-Var erlaubt sind.

    thanx
    maxdo
    Reply With Quote Reply With Quote STRING als TEMP-Variable funktioniert nicht?  

  2. #2
    Join Date
    27.08.2003
    Location
    Schweitenkirchen
    Posts
    484
    Danke
    101
    Erhielt 74 Danke für 60 Beiträge

    Default

    Lies dir den Thread mal durch, vieleicht wird´s dann klarer

    http://www.sps-forum.de/phpBB2/viewtopic.php?t=1550

  3. #3
    Maxdo is offline Neuer Benutzer
    Themenstarter
    Join Date
    21.06.2004
    Posts
    23
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Default

    danke zefix,

    aber den abgespeicherten Temp-Sting frage ich natürlich wieder
    im gleichen Bausteinaufruf ab.

    Zur Erklärung: Möchte einen String erzeugen, der die Restzeit
    eines IEC Timers anzeigt: '00h 00min 00sec'
    Füge also nacheinander die Zeitwerte in den
    Ursprungs-Stat-String 'h min sec' ein.
    Dabei entstehen aber Strings die nur temporär
    benötigt werden: 'h min 00sec' und 'h 00min 00sec'

    jemand ne Ahnung?

  4. #4
    Join Date
    07.07.2004
    Posts
    3,381
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Default

    Hallo Maxdo,
    Füge also nacheinander die Zeitwerte in den
    Ursprungs-Stat-String 'h min sec' ein
    Mal eine Rückfrage : hast Du daran gedacht, dass der INOUT Parameter "ET" vom Datentyp "TIME" ist ?
    Am besten Du postest etwas von dem nicht funktionierenden Code, dann kann man vielleicht eher einen Tip geben.
    Gruss
    Question_mark
    Reply With Quote Reply With Quote String als Temp-Variable  

  5. #5
    Join Date
    07.07.2004
    Posts
    3,381
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Default

    Hallo Maxdo,
    noch ein Hinweis :
    Wenn ein String in der S7 als temporäre Variable deklariert wird, so muss vor der Verwendung im Anwenderprogramm das Byte "Max.Länge" mit einer definierten Länge beschrieben werden
    Das Byte "Max.Länge" ist das Byte 0 im String.
    Gruss
    Question_mark
    Reply With Quote Reply With Quote String als Temp-Variablen  

  6. #6
    Join Date
    07.05.2004
    Location
    Campbelltown
    Posts
    2,500
    Danke
    131
    Erhielt 293 Danke für 86 Beiträge

    Default

    Hi,
    post mal etwas oder füge mal die Werte in den statischen Bereich ein, nur zum testen. Oft setze ich mir nach jedem Schritt ein Zwischentest-Merker um zu sehen, wo meine Daten verloren gehen.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  7. #7
    Maxdo is offline Neuer Benutzer
    Themenstarter
    Join Date
    21.06.2004
    Posts
    23
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Default

    wenn Strings als STAT-Werte (wie unten) dann funktionierts...


    VAR_INPUT
    ...
    VAR_OUTPUT
    ...
    VAR
    TON : "TON";
    string_h_temp : STRING [3 ];
    string_min_temp : STRING [3 ];
    string_sec_temp : STRING [3 ];
    string_h : STRING [2 ];
    string_min : STRING [2 ];
    string_sec : STRING [2 ];
    string_rt_0 : STRING [9 ] := 'h min sec';
    string_rt_sec : STRING [11 ];
    string_rt_min_sec : STRING [13 ];
    string_rt_h_min_sec : STRING [15 ];
    END_VAR
    VAR_TEMP
    ...
    rem_std : INT ;
    rem_min : INT ;
    rem_sec : INT ;
    END_VAR

    BEGIN
    NETWORK
    TITLE =String 00h 00min 00sec erzeugen

    CALL "I_STRNG" (// -- INT in String (mit Vorzeichen) wandeln --
    I := #rem_std,
    RET_VAL := #string_h_temp);

    CALL "I_STRNG" (
    I := #rem_min,
    RET_VAL := #string_min_temp);

    CALL "I_STRNG" (
    I := #rem_sec,
    RET_VAL := #string_sec_temp);


    CALL "DELETE" (// ------ Vorzeichen aus String löschen ------
    IN := #string_h_temp,
    L := 1,
    P := 1,
    RET_VAL := #string_h);

    CALL "DELETE" (
    IN := #string_min_temp,
    L := 1,
    P := 1,
    RET_VAL := #string_min);

    CALL "DELETE" (
    IN := #string_sec_temp,
    L := 1,
    P := 1,
    RET_VAL := #string_sec);


    CALL "INSERT" (// ------ Sekunden in String einfügen -------
    IN1 := #string_rt_0,
    IN2 := #string_sec,
    P := 6,
    RET_VAL := #string_rt_sec);

    CALL "INSERT" (// ------- Minuten in String einfügen -------
    IN1 := #string_rt_sec,
    IN2 := #string_min,
    P := 2,
    RET_VAL := #string_rt_min_sec);

    CALL "INSERT" (// ------- Stunden in String einfügen -------
    IN1 := #string_rt_min_sec,
    IN2 := #string_h,
    P := 0,
    RET_VAL := #string_rt_h_min_sec);


    END_FUNCTION_BLOCK

  8. Folgender Benutzer sagt Danke zu Maxdo für den nützlichen Beitrag:

    SIGGI (11.03.2009)

  9. #8
    Join Date
    07.07.2004
    Posts
    3,381
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Default

    Hallo nochmal,
    Maxdo schau mal auf mein voriges Posting, dann hast Du die Erklärung.
    Bei Temp-Variablen das Längenbyte setzen.
    Gruss
    Question_mark
    Reply With Quote Reply With Quote String als Temp-Variable  

  10. #9
    Maxdo is offline Neuer Benutzer
    Themenstarter
    Join Date
    21.06.2004
    Posts
    23
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Default

    vielen Dank, Question_Mark

    is jetzt vielleicht blöde frage:

    Aber wie kann ich bei symbolischer Programmierung das
    Byte 0 einer Temp-Variable beschreiben??

    Danke für Deine Geduld!
    Maxdo

  11. #10
    Join Date
    07.05.2004
    Location
    Campbelltown
    Posts
    2,500
    Danke
    131
    Erhielt 293 Danke für 86 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    habe ich zwar auch noch nie gemacht, aber so würde es gehen

    Code:
    L p##Text
    LAR1
    L xy  //Länge
    T DIB[AR1,P#0.0]
    Du könntest natürlich auch direkt auf die Adresse schreiben, ist aber schlecht, wenn die Lokaldaten sich im Verlauf noch ändern.

    Über Erfolg/Misserfolgmeldung würde ich mich freuen, da ich noch nie mit STRING in S7 keulen musste.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

Similar Threads

  1. Replies: 2
    Last Post: 23.07.2020, 16:40
  2. Step 7 String aus DB in eine Temp-Variable schreiben
    By SchnitzelMatzi in forum Simatic
    Replies: 4
    Last Post: 03.07.2014, 07:33
  3. Replies: 1
    Last Post: 14.10.2010, 10:13
  4. String als OUT-Variable an FC
    By baggerandy in forum Simatic
    Replies: 9
    Last Post: 25.11.2009, 09:05
  5. Replies: 9
    Last Post: 04.09.2006, 14:21

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •