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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Sting nach String kopieren in SCL

  1. #1
    Registriert seit
    18.04.2005
    Ort
    Fast an der Schweiz
    Beiträge
    856
    Danke
    208
    Erhielt 108 Danke für 76 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo LEute, mich fuchst gerade SCL.

    ich will folgende Parameter (auszug) übergeben :

    Code:
    FUNCTION FC1000 :VOID
    //Stutzen prüfen
    VAR_INPUT
    Start : BOOL;
    STUTZEN_EIN : STRING[32] //Name eingelesen
    END_VAR 
    VAR_OUTPUT  
    STUTZEN_AUS : STRING[32]; //Name Auslesen
    BEGIN
    STUTZEN_AUS := STUTZEN_EIN;
    END_FUNCTION
    geht nicht, wenn ich den eingang und ausgang mit Strins beschreibe (aus DB)
    Code:
    FUNCTION FC1000 :VOID
    //Stutzen prüfen
    VAR_INPUT
    Start : BOOL;
    STUTZEN_EIN : STRING[32] //Name eingelesen
    END_VAR 
    VAR_OUTPUT  
    STUTZEN_AUS : STRING[32]; //Name Auslesen
    BEGIN
     STUTZEN_AUS := 'IRGENDEINTEXT';
    END_FUNCTION
    dann steht IRGENDEINTEXT drin ?

    Wie schaffe ich es aus dem DB den String auszulesen und zu übergeben ?

    Danke noch
    Code:
     RTFM ! Read The F..ing Manual
    Arbeitet mit : Step7 V5.5 SPx / WinCC Flex 2008 SPx / Intouch / Winmod /TIA V14 (abgestürzt...Zitat der Hotline : "Sie dürfen nicht so viel rumdrücken....." TIA, so isses halt)

    ║▌║█║║▌║█║ Warnung! Falscher oder fehlender Kaffee - Benutzer angehalten --(◔̯◔)--
    1334566890111
    Zitieren Zitieren Sting nach String kopieren in SCL  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.399 Danke für 1.999 Beiträge

    Standard

    Sorry Waelder ... ich verstehe die Frage gerade nicht ...

  3. #3
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.624
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Code:
    FUNCTION FC1000 :VOID
    //Stutzen prüfen
    VAR_INPUT
    Start : BOOL;
    STUTZEN_EIN : STRING[32]; //Name eingelesen (";" fehlten)
    END_VAR 
    VAR_OUTPUT  
    STUTZEN_AUS : STRING[32]; //Name Auslesen
    END_VAR // fehlt in dein Code !
    VAR_TEMP
    str_temp : STRING[32] ;
    END_VAR
     
    BEGIN
    str_temp := STUTZEN_EIN ;
    STUTZEN_AUS := str_temp;
    END_FUNCTION
    Geändert von JesperMP (28.02.2011 um 17:16 Uhr)
    Jesper M. Pedersen
    Zitieren Zitieren Probier über ein TEMP zu gehen.  

  4. #4
    Avatar von Waelder
    Waelder ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.04.2005
    Ort
    Fast an der Schweiz
    Beiträge
    856
    Danke
    208
    Erhielt 108 Danke für 76 Beiträge

    Standard

    im prinzip müsste es auch so gehen :

    Wenn ich in SCL (FC Baustein) einen String (32) von einem DB einlese möchte ich diesen wieder hinten am Baustein auch String (32) rausgeben.

    dieses Beispiel geht :
    STUTZENNAME := 'B20K00';
    da steht dann B20K00 am Ende drin

    dieses Beispiel geht nicht:
    STUTZENNAME := TL_TANK.B01.NAME;
    da steht dann gar nichts drin....

    ich bekomms einfach nicht gebacken
    Code:
     RTFM ! Read The F..ing Manual
    Arbeitet mit : Step7 V5.5 SPx / WinCC Flex 2008 SPx / Intouch / Winmod /TIA V14 (abgestürzt...Zitat der Hotline : "Sie dürfen nicht so viel rumdrücken....." TIA, so isses halt)

    ║▌║█║║▌║█║ Warnung! Falscher oder fehlender Kaffee - Benutzer angehalten --(◔̯◔)--
    1334566890111
    Zitieren Zitieren oha... hab zuwenig geschrieben  

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.399 Danke für 1.999 Beiträge

    Standard

    ... und der String, der in "TL_TANK.B01.NAME" steht, ist auch korrekt initialisiert (also die beiden Header-Bytes) ?

  6. #6
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.624
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Die STRINGs werden per POINTER übertragen. Wie alle Parameter die länger als 4 Byte sind.

    So weit das ich weiss muss man zuerst in ein TEMP kopieren bevor das man die Parameter verwendet.
    Jesper M. Pedersen

  7. #7
    Avatar von Waelder
    Waelder ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.04.2005
    Ort
    Fast an der Schweiz
    Beiträge
    856
    Danke
    208
    Erhielt 108 Danke für 76 Beiträge

    Standard

    hmm da hat´s mir die CPU gestoppt....

    Kann das sein, dass :
    Code:
    VAR_TEMP
    str_temp0 : STRING[32] ; <-- Hier nur ne begrenzte länge möglich?
    str_temp1 : STRING[32] ;
    str_temp2 : STRING[32] ;
    str_temp2 : STRING[32] ;
    END_VAR
    bei mehr wie 2 String variabeln ist essig... da macht die CPU zu.....
    Code:
     RTFM ! Read The F..ing Manual
    Arbeitet mit : Step7 V5.5 SPx / WinCC Flex 2008 SPx / Intouch / Winmod /TIA V14 (abgestürzt...Zitat der Hotline : "Sie dürfen nicht so viel rumdrücken....." TIA, so isses halt)

    ║▌║█║║▌║█║ Warnung! Falscher oder fehlender Kaffee - Benutzer angehalten --(◔̯◔)--
    1334566890111

  8. #8
    Registriert seit
    19.04.2009
    Beiträge
    302
    Danke
    31
    Erhielt 40 Danke für 32 Beiträge

    Standard

    Wenn ich es richtig verstehe... Willst du am eingang eines FC einen String übergeben und den selben gleich an den Ausgang übergeben? wenn ja wieso kein blockmove? geht wunderbar mach ich auch so

  9. #9
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Beim verwenden von Strings in temporären Variablen gibt es etwas sehr wichtiges zu beachten!
    Der String muss immer initialisiert werden, da ansonsten die Längenangabe im ersten Bytes des Strings nicht korrekt gesetzt wird.
    Code:
    VAR_TEMP
        str_temp0 : STRING[32] ;
    END_VAR
    
    BEGIN
        str_temp0 := ''; // << Immer machen!
    ...
    ...
    Machst du die Initialisierung nicht, stehen dort zufällige Längen drin. Ist dieser zufällige Wert größer als der echte String, zerschießt es dir im schlimmsten Fall andere Variablen in den Lokaldaten. Steht in der Länge 0 so werden nur evtl. Kopieroperationen nicht durchgeführt, weil der Zielstring die falsche Länge hat.

    Wie sieht denn bei dir der Funktionsaufruf auf? Wenn du die Funktion direkt mit 2 Datenbausteinen als Parameter beschaltest sollte es eigentlich funktionieren.

  10. #10
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Waelder Beitrag anzeigen
    hmm da hat´s mir die CPU gestoppt....

    Kann das sein, dass :
    Code:
    VAR_TEMP
    str_temp0 : STRING[32] ; <-- Hier nur ne begrenzte länge möglich?
    str_temp1 : STRING[32] ;
    str_temp2 : STRING[32] ;
    str_temp2 : STRING[32] ;
    END_VAR
    bei mehr wie 2 String variabeln ist essig... da macht die CPU zu.....
    Kann sein dass dadurch deine FC zuviel Lokaldaten beansprucht.
    Bei Stringbearbeitung gabs in SCL mal ne Einstellung, das die Stringlänge begrenzt.
    Ob dies immer noch nötig ist weiss ich nicht, aber wir hatten selber mal so einen Baustein bei die CPU die Grätsche machte.
    Erst als wir vorm Übersetzen die Einstellung, von ich glaub 254 auf unsere maxl. Stringlänge setzten, gings dann.

    Strings vorher Intialisiern , beim FC sowieso
    Wenn ich einen meiner Finger in eines deiner Nasenlöcher stecke, haben wir beide nen Finger in der Nase

Ähnliche Themen

  1. String kopieren?!
    Von blueColt im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.09.2010, 12:53
  2. String Variable kopieren
    Von cindy im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 25.06.2009, 15:47
  3. Ein String kopieren in einen anderen String
    Von CanYouHelpMe im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.09.2008, 17:21
  4. String 20 kopieren in DB
    Von ice6461 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.04.2008, 17:03
  5. String kopieren
    Von dietere im Forum Sonstige Steuerungen
    Antworten: 2
    Letzter Beitrag: 12.02.2008, 12:12

Lesezeichen

Berechtigungen

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