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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: Frage zu FC5: DINT to STRING

  1. #11
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    ich habe schon mal überlegt, ob ich es mir in die Signatur schreibe ...
    ALLE Siemens String-FC's arbeiten (wie schon von Ralle und Aventinus geschrieben) NUR mit INITIALISIERTEN Strings - das heißt die Hearder-Informationen müssen vor der ersten Verwendung schon richtig eingetragen sein - in diesem Fall die deklarierte Länge. Durch das blosse Anlegen eines Strings in einem DB wird dieser Header in denselben NICHT eingetragen (keine Ahnung warum nicht).
    Dann schreib bitte auch in deiner Signatur für welche Step7 Version das gelten soll.
    Step7 5.5 trägt bei Strings in Datenbausteinen und auch bei Strings im statischen Bereich von Funktionsbausteinen die Header Daten, also Maximale und Aktuallänge, (zumindest bei mir) korrekt ein.
    Imho muss man nur bei Temp-Variablen dafür sorgen dass die Header passend gesetzt werden.
    In SCL reicht dazu das Initialisieren mit
    stringVar := '';

  2. #12
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.849
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    der test mit dem bildchen was ich gemacht habe ist mit s7 v5.5 geproggt.
    und du muss, wie du sehen kannst das byte 0 initialisiert werden.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #13
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    der test mit dem bildchen was ich gemacht habe ist mit s7 v5.5 geproggt.
    und du muss, wie du sehen kannst das byte 0 initialisiert werden.
    Komisch, bei mir funktioniert das. Ich hatte dahingehend auch noch nie Probleme mit Strings in statischen Daten.

    Wenn man einen komplett neuen Datenbaustein anlegt geht es direkt, bei einer Änderung an einem Datenbaustein muss man aber noch "Datenbaustein initialisieren" durchführen.

  4. #14
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.849
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    ich hab jetzt mal folgendes probiert.

    simu gestartet und programm übertragen
    und siehe da es geht. aber auch NUR solange man nicht byte 0 überschreibt. danach geht es nicht mehr.
    keine ahnung was s7 da bei ERSTEN mal macht.

    bild1

    in der vat einmal dbb40 auf 0 gesetzt.
    nix geht mehr. bild2
    Angehängte Grafiken Angehängte Grafiken
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  5. #15
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.849
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    nachtrag.

    übertrage ich, nachdem ich dbb40 mal auf 0 gesetzt habe den db "test" erneut in die cpu geht es wieder.

    aus sicherheitsgründen würde ich aber immer hergehen und den string neu initalisieren bevor ich eine der stringfunktionen nutze.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #16
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    ich hab jetzt mal folgendes probiert.

    simu gestartet und programm übertragen
    und siehe da es geht. aber auch NUR solange man nicht byte 0 überschreibt. danach geht es nicht mehr.
    keine ahnung was s7 da bei ERSTEN mal macht.

    bild1

    in der vat einmal dbb40 auf 0 gesetzt.
    nix geht mehr. bild2
    Also ich sehe hier nichts verwunderliches.
    Du bügelst den Header per VAT oder Programm mit falschen Werten platt und wunderst dich dass es nicht funktioniert?

  7. #17
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.849
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    ja. gebe ich dir recht.
    das zeigt aber auch wie 'verwundbar' diese art des stringhandlings ist.
    ich bleibe dabei und initialisiere das lieber neu bevor, aus welchem grund auch immer, plötzlich das ganze prog nicht mehr vernünftig läuft.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  8. #18
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Step7 5.5 trägt bei Strings in Datenbausteinen und auch bei Strings im statischen Bereich von Funktionsbausteinen die Header Daten, also Maximale und Aktuallänge, (zumindest bei mir) korrekt ein.
    Imho muss man nur bei Temp-Variablen dafür sorgen dass die Header passend gesetzt werden.
    In SCL reicht dazu das Initialisieren mit
    stringVar := '';
    Hallo Thomas,
    Danke für die nette Belehrung. Tatsächlich war es mir neu, dass Step7 die maximale Länge bei der Deklaration in den String-Header schreibt - wieder etwas gelernt.
    Als deklarierte Länge wird bei mir allerdings nicht die Stringlänge eingetragen sondern 0 (auch wenn es ein neu erstellter DB ist und in dem deklarierten String etwas drinsteht).
    Das dieses Verhalten bei DB's und im STAT-Bereich eines FB identisch ist kann ich mir vorstellen.
    Das SCL das Paket gleich rund macht war mit auch bekannt. SCL kann hier auch (egal ob STAT oder TEMP) die Headerdaten komplett erstellen - also auch die tasächliche Länge und auch nach 10maligen hin- und herändern.

    Bei TEMP-Variablen ist es immer noch so, wie von mir genannt (und natürlich auch von dir). Wo ist da der signifikante Unterschied ?

    Da wir nach wie vor die Header-Info's des TE nicht kennen - was sagt dir, dass ich mit meiner Vermutung dann nicht doch Recht habe ?
    Es ist für mich nicht ersichtlich, warum Step7 nicht auch mit einem nicht deklarierten String arbeiten kann, wenn es doch einen Pointer bekommt - ich hatte mir mal selber einen Baustein in dieser Art erstellt und mein Baustein konnte wunderbar auch ohne den Header arbeiten.
    Naja - sei es drum ...

    Gruß
    Larry

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

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Es ist für mich nicht ersichtlich, warum Step7 nicht auch mit einem nicht deklarierten String arbeiten kann, wenn es doch einen Pointer bekommt - ich hatte mir mal selber einen Baustein in dieser Art erstellt und mein Baustein konnte wunderbar auch ohne den Header arbeiten.
    Du hast also einen Baustein geschrieben der mit korrupten String-Variablen arbeiten kann, schön.
    Wie prüft dein Baustein denn ob der String in den z.B. Texte kopiert werden sollen überhaupt lang genug ist? String ist ein Pointer, also steckt dort nicht wie im Any-Pointer die Längenangabe mit drin.
    Mal angenommen dein Baustein soll 'Hallo' in den String kopieren, jemand der deinen Baustein verwendet legt aber in einem DB den String mit der Länge 3 an, und nun?

  10. #20
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Thomas:
    Was passiert, wenn du einem Baustein (von mir aus ein FC), der als Übergabeparameter einen String[5] (z.B.) haben will einen String[3] übergibst ?

Ähnliche Themen

  1. Frage zum Datentyp STRING
    Von pinolino im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 15.07.2011, 14:39
  2. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  3. Frage zum FC10 String Vergleich
    Von bernd67 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.01.2009, 10:18
  4. SCL, String + DB. Kleine Frage
    Von noeppkes im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 13.01.2008, 17:17
  5. DINT->STRING->DB
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.11.2005, 12:08

Lesezeichen

Berechtigungen

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