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

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

Thema: Frage zum Datentyp STRING

  1. #1
    Registriert seit
    19.10.2007
    Beiträge
    261
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Ihr,

    ich brauche bitte etwas Hilfe. Es geht darum, dass ich über einen OPC-Server in einem Datenbaustein den Datentyp STRING zur Verfügung gestellt bekomme.

    z.B. steht da 'a' drin.

    Nun möchte ich in der SPS überwachen, ob das Zeichen 'a' im DB vorhanden ist. Muss ich hier zunächst eine Umwandlung in einen anderen Datentyp vornehmen?

    Wenn also 'a' drinsteht, so soll ein Ausgang gesetzt werden...

    Vielen Dank!
    pinolino
    Zitieren Zitieren Frage zum Datentyp STRING  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    je nachdem, was du weiter vorhast und wie du es vorhast.
    Du kannst aber ohne weitere Umwandlungen z.B. so etwas programmieren :
    Code:
    L DB10.DBB2
    L 'a'
    ==I
    = M10.0
    Du mußt nur immer beachten, wie der String aufgebaut ist (er hat immer 2 Header-Bytes und dann kommen erst die "Nutzdaten").

    Gruß
    Larry

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Du mußt vor allem mal ausprobieren, was dein OPC-Server bei einem String anzeigt. Wir hatten Probleme mit dem Siemens-OPC-Server und S7-Strings, da fehlten immer die ersten beiden Buchstaben. Das wurde dann über Char-Arrays gelöst, wenn ich recht erinnere.
    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

  4. #4
    pinolino ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2007
    Beiträge
    261
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank schon mal für eure Hilfe!

    @Larry: Wenn ich das so programmiere, wie du vorschlägst, dann flackert der Merker M10.0 in der Variablentabelle - woher kommt das?


    Wenn die Weiterverwendung umfangreicher wird, so habe ich mir überlegt, dass ich mittels des IEC-Bausteins FC38 ja auch eine Umwandlung vornehmen könnte. Siehe Anhang!

    Allerdings steht dann als Wert im MW10 die Zahl 0 - was habe ich da nur wieder falsch gemacht?

    Grüße
    pinolino
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg FC.jpg (6,6 KB, 51x aufgerufen)
    • Dateityp: jpg DB.jpg (10,6 KB, 35x aufgerufen)

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    du solltest auf jede Fall den String initialisieren, wenn du die Step7-FC's benutzt.
    Das heißt, dass der Header des Strings beschrieben werden muß. Im Byte 0 des Strings muss dann die deklarierte Länge des Strings stehen (bei dir dann 254) und im Byte 1 die benutzte Länge desselben (bei dir 1). Dann sollte der FC38 korrekt arbeiten.

    Warum der Merker (meines Beispiels) flackert kann ich dir so nicht sagen. Wird er ggf. noch woanders verwendet ? Oder das String DBB ?

    Gruß
    Larry

  6. #6
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Hallo,

    Soll das ein "BIT" sein am Eingang "S" ?

    Da passt eigentlich kein Zeichen rein?!

    AH: P#DB5.DBX 0.0 (Byte,Word... zeigt der nicht mehr an?) byte 255
    Geändert von Verpolt (15.07.2011 um 11:14 Uhr)

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    @Verpolt:
    Ich vermute, dass das die FUP-Verschmickelung des ANY-Pointers ist ...

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

    Standard

    Was willst du an dieser Stelle überhaupt mit FC38 anfangen?

    Der wandelt Strings, in denen Zahlen stehnen in Integer.

    Beispiel:
    mySting = '1234'

    Dann wird am RET_VAL ein Integer mit dem Wert 1234 ausgegeben.

    Bei Deinem String kann der FC natürlich nichts umwandeln da 'a' ja keine Zahl ist.
    mfG Aventinus

  9. #9
    pinolino ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2007
    Beiträge
    261
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Aventinus Beitrag anzeigen
    Was willst du an dieser Stelle überhaupt mit FC38 anfangen?

    Der wandelt Strings, in denen Zahlen stehnen in Integer.

    Beispiel:
    mySting = '1234'

    Dann wird am RET_VAL ein Integer mit dem Wert 1234 ausgegeben.

    Bei Deinem String kann der FC natürlich nichts umwandeln da 'a' ja keine Zahl ist.
    Hm, also 'a' entspricht doch der Zahl 97 - und diese hätte ich auch am Ausgang RET_VAL erwartet, oder?

    @Verpolt: P#DB5.DBX 0.0 hat das System von selbst so eingestellt; wie gesagt ich habe ja 'a' im DB stehen und dies hätte eigentlich gewandelt werden sollen.

    @Larry: Der DB lässt mir hier ja gar nicht die Eingabe eines Bytes zu...

    pinolino
    Geändert von pinolino (15.07.2011 um 11:40 Uhr)

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Pinolino:
    Der Einwand von Aventinus ist vollkommen korrekt. Das Zeichen 'a' hat als ASCII-Zeichen zwar den Byte-Wert 97 - im Sinne der Wandlung String_to_INT hat es aber keinen Zahlenwert. (Welche Funktion der von dir verwendete FC hat hatte ich vorhin nicht weiter verifiziert)

    Was heißt: "der DB läßt nicht die Eingabe eines Byte zu" ?
    Ich denke, dein Problem ist hier die Beschränkung der Programmier-Möglichkeiten durch den Einsatz KOP/FUP. Wenn du etwas mit Strings etc. machen möchtest so würde ich dir empfehlen, dich von KOP/FUP zu lösen und es entweder in AWL zu programmieren oder besser noch in SCL ...

    Gruß
    larry

Ähnliche Themen

  1. Frage zu FC5: DINT to STRING
    Von Scanda im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 15.08.2011, 17:53
  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. [Frage] - String mit mehr als 254 Zeichen?
    Von marcengbarth im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.07.2007, 10:39

Lesezeichen

Berechtigungen

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