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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Frage zu FC5: DINT to STRING

  1. #1
    Registriert seit
    25.01.2008
    Beiträge
    18
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich versuche einen DINT in einen STRING umzuwandeln. Dafür gibt es den FC5.

    Nun will ich in einem FCxxx diesen Code in AWL ausführen:

    Code:
          CALL  "DI_STRNG"
           I      :="DB_Umwandlung_Seriennr".STRING_STRUCT_DINT.Zahlenblock1
           RET_VAL:="DB_Umwandlung_Seriennr".Schmierstring
    Der Zahlenblock1 ist ein DINT
    Der Schmierstring ein STRING[18]
    Die beiden Variablen sind in einem Global-DB gespeichert

    Doch er macht die Umwandlung nicht bzw. er kopiert mir den String nicht auf den "Schmierstring".

    Was läuft da falsch?

    Danke schon mal im Voraus!
    Zitieren Zitieren Frage zu FC5: DINT to STRING  

  2. #2
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ist natürlich wenig Info...

    Irgendwelche Zugriffsfehler in der CPU (Diagnosepuffer)?
    mfG Aventinus

  3. #3
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Aus Online-Hilfe

    Die Funktion FC 5 wandelt eine Variable im DINT­Format in eine Zeichenkette. Die Zeichenkette wird mit einem führenden Vorzeichen darstellt. Ist die am Rückgabeparameter angegebene Variable zu kurz, findet keine Wandlung statt und das BIE­Bit wird auf "0" gesetzt.
    Hast du das mal geprüft?
    mfG Aventinus

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Aus der Step7-Hilfe:


    STRING

    Wenn Sie diesem Formalparameter einen Aktualparameter zuweisen, den Sie im Lokaldatenbereich des aufrufenden Bausteins definiert haben, so beachten Sie bitte:
    Vor dem FC-Aufruf müssen Sie in der temporären Variable vom Datentyp STRING das Verwaltungsbyte "maximale Länge des Strings" mit der definierten Stringlänge beschreiben.
    Das sind Byte 0 und Byte 1 der Stringvariable.
    Prüfe mal, ob das in der DB-Variablen korrekt eingetragen ist. (Byte 0 und 1 des String im DB)
    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

  5. #5
    Scanda ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.01.2008
    Beiträge
    18
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Also direkt Fehler gibt es nicht. Die CPU läuft ganz normal durch.

    Am Ausgabestring ist alles "0". Selbst die ersten beiden Statusbits des Strings sind "0".

    Zu klein dürfte der String[18] auch nicht sein, da auch bei sehr kleinen Zahlen das gleiche Problem besteht. Außerdem können DINT nur 10stellig (+Vorzeichen) werden.

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von Scanda Beitrag anzeigen
    Also direkt Fehler gibt es nicht. Die CPU läuft ganz normal durch.

    Am Ausgabestring ist alles "0". Selbst die ersten beiden Statusbits des Strings sind "0".

    Zu klein dürfte der String[18] auch nicht sein, da auch bei sehr kleinen Zahlen das gleiche Problem besteht. Außerdem können DINT nur 10stellig (+Vorzeichen) werden.
    Du mußt dir mal den String direkt ansehen in der Variablentabelle, byteweise.

    Die beiden ersten Byte 0 und 1 enthalten die maximale und die tatsächliche Stringlänge. Steht da 0, macht der FC5 nichts, du mußt dann in Byte 0 eine 18dez eintragen, in Byte 1 sollte 11dez stehen. Das geht leider nur über Absolutadressierung oder über Zeiger. Zum Test kannst du das ja absolut machen, indem du dir aus dem DB die Absolutadresse für Byte 0 und 1 suchst.
    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

  7. #7
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich bin der Meinung, dass das Byte 1 von der FC beschrieben wird und somit lediglich das Byte 0 mit 18dez beschrieben werden muss.
    mfG Aventinus

  8. #8
    Scanda ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.01.2008
    Beiträge
    18
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ja hab mir den String auch Byteweise angeschaut. alles auf "0".

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

    Standard

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

    Fazit:
    Deklariere einfach den Header korrekt und die Welt ist wieder OK ...

    Gruß
    Larry
    Geändert von Larry Laffer (11.08.2011 um 12:41 Uhr)

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Aventinus Beitrag anzeigen
    Ich bin der Meinung, dass das Byte 1 von der FC beschrieben wird und somit lediglich das Byte 0 mit 18dez beschrieben werden muss.
    so ist es.
    siehe bild
    Angehängte Grafiken Angehängte Grafiken
    Geändert von volker (11.08.2011 um 12:41 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ä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
  •