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

Seite 3 von 6 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 54

Thema: String: Übergabe der Max Länge Falsch

  1. #21
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ok in die richtung habe ich noch gar nicht gedacht

  2. #22
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.791
    Danke
    398
    Erhielt 2.415 Danke für 2.011 Beiträge

    Standard

    ... so langsam wird es etwas klarer ...

    Irgendetwas füllt dir deinen Datenbaustein.
    Mit den verschiedenen Funktionen greifst du unterschiedliche Stellen des DB's ab und verschiebst Lese-Pointer etc. (Seek).

    Dann von Anfang an :
    1.) steht der erwartete Inhalt in der korrekten Form im Puffer ?
    2.) liefert dir "DCI_SeekByParamID" das korrekte Ergebnis ?
    3.) liefert dir dann darauf "DCP_ReadByte" das korrekte erste Zeichen ?
    4.) steht in Size der korrekte Wert drin ?

    ... es geht nur schrittweise ...

    Ich hätte das Script-technisch nicht so gelöst (zu viele Funktionen, die etwas hin- und herreichen). Nichts-desto-weniger sehe ich aber erstmal noch keinen Fehler (außer, dass sich das sicher sehr schlecht debuggen läßt).

  3. #23
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    1. ja
    2. ja
    3. ja
    4. ja

  4. #24
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.791
    Danke
    398
    Erhielt 2.415 Danke für 2.011 Beiträge

    Standard

    ... dann fällt mir im Augenblick nur noch eins ein :
    nimm doch mal für den String-Parameter in "DCI_GetStringParam" einen IN_OUT statt einem OUTPUT.

  5. #25
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    jop dachte ich auch schon aber daran liegt es leider nicht ^^

    es kommt auch beim output richtig raus wie gesagt da wird es richtig übergeben. da ist der header auch korrekt und auch der inhalt. wenn ich dann die var kopiere wird der string header total verhunst.

  6. #26
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.791
    Danke
    398
    Erhielt 2.415 Danke für 2.011 Beiträge

    Standard

    ... wenn du dich bei deiner Annahme auf das folgende beziehst :
    Code:
        IF DCI_Command.isOK THEN  
            DATA.PortID     := Var1;
            DATA.MaterialID := Var2;
            DATA.LocationID := Var3;
        END_IF;
    ... dann denk bitte hier an 3 Sachen :
    1.) zu welchem Zeitpunkt siehst du Var3 ? (immer dran denken - du arbeitest mit TEMP's)
    2.) ist zu dem Zeitpunkt, wo du Var3 (mit dem richtigen Inhalt) siehst auch "DCI_Command.isOK = true" ?
    3.) wenn "DCI_Command.isOK = TRUE" dann wird das übertragen, was zu übertragen zur Verfügung gestellt wird. Es wird (zu dem Zeitpunkt) nichts daran geändert.

    Zusätzlich hätte ich dann noch etwas :
    - in "DCI_GetStringParam" ist s nicht initialisiert.
    - in "DCI_GetStringParam" ist s 254 Zeichen groß - in der Folge willst du aber einen String mit 16 Zeichen verwenden. Da haut das dann schon mal mit der max.Size des String nicht mehr hin.

    ...

  7. #27
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.261
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Ich hab mir das nun auch mal kurz angetan. Larry, das wird wohl so nichts.

    1. Ich denke Kai86 ist Informatiker. Wenn dem so ist, ist ihm leider nicht zu helfen. Sorry Kai, aber das sind Erfahrungswerte aus vielen Jahren.
    2. Die Stringverarbeitung in der S7-SCL ist nicht unproblematisch, aber sie funktioniert bei Beachtung der Angaben die Larry gemacht hat.
    3. Die S7 ist kein Windows, also immer schön Piano alles streng nacheinander und fein zerlegt. Warum trennst du im String nicht alles jeweils durch ein Trennzeichen, dann kann man danach suchen den String zerlegen und das funktioniert.
    4. Der Code sieht nett aus, ist sogar strukturiert und trotzdem blickt keine Sau durch (siehe Larrys Nachfragen). Das sollte dir mal zu denken geben, wer soll das mal warten? Klingt ja alles schön klug (seek, ID etc.) sagt aber eigentlich gar nichts!!!

    PS: Kommentare im Code sind immer gut!!!
    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

  8. #28
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich versuchs ja nur auf das wesentliche zu beschränken.

    Machen wir es ganz einfach.

    Ich habe Irgendwo nen Datenblock "Data". Darin steht die MaterialID vom Typ String[16].
    Warum wird der Header von Var3 (b0 = 16 und b1 = 5) nicht übernommen sondern ein neuer mit (b0 = 16 und b1 = 16) generiert??? der vorherige Code spielt hier keine Rolle mehr. Was ist hier noch falsch?
    Code:
    FUNCTION DCI_HandleCommand:Void
    VAR
        Var3 : STRING[16];
    END_VAR
    
    Var3 := 'AAAAA';
    DATA.LocationID := Var3;
    
    END_FUNCTION

  9. #29
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Code:
    VAR
        Var3 : STRING[16];
    END_VAR
    
    Var3 := 'AAAAA';
    DATA.LocationID := Var3;
    Ist DATA.LocationID vom gleichen Typ wie Var3, sprich ist DATA.LocationID auch vom Typ STRING[16] ?

    Die SCL Hilfe sagt was von Zuweisungen nur bei Typgleichheit.

  10. #30
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    jop habe ich ja auch reingeschrieben ist beides der gleiche Typ beide String[16]

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 04.06.2010, 09:55
  2. Länge eines String mit der LEN-Funktion auslesen
    Von baggerandy im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 10.04.2009, 16:13
  3. String in Int. Was ist hier falsch ?
    Von noeppkes im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 06.10.2007, 17:57
  4. Optimale String übergabe ?
    Von Projekt 06 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 28.03.2006, 20:36
  5. Länge im Bausteinkopf falsch
    Von kolbendosierer im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 02.02.2006, 12:10

Lesezeichen

Berechtigungen

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