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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 48

Thema: Char umwandeln in Integer

  1. #1
    Registriert seit
    23.12.2007
    Beiträge
    21
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Ihr,
    ich hab folgendes Problem.
    Zur Zeit lade ich von einem Handscanner Daten (Ascii) in einen DatenBaustein (DB).
    Zu Scannen ist 1.500 oder 500 oder 2.300 als Barcode.
    In meinem DB schreibt er mir dann aber in jede Zeile ein Zeichen
    0
    1
    _
    5
    0
    0

    (Zeile im DB ist als "Char" deklariert)

    Mein Problem ist bloß das ich das so nicht gebrauchen kann, sondern als komplete Zahl ("1500" oder "500" oder "2300"). Am besten wäre es wenn es ein INT oder eine REAL Zahl wäre.

    Leider bin ich in der SPS nicht so der Checker und hab keine ahnung wie ich das am besten umwandeln kann, ob ich das am besten davor mache bevor ich das in den DB schreibe oder hinterher.

    Ich hoffe ihr könnt mir helfen.

    Gruß Dennis
    Zitieren Zitieren Char umwandeln in Integer  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo,
    ich würde das Ganze in einen String einlesen und dann mit der Funktion aus der Systembibliothek (IEC-Funktionen) "STRING_I" (FC3 in einen INT-Wert wandeln lassen.
    Es gäbe da auch noch "STRING_DI" für DINT-wandeln (FC37).

    Gruß
    LL

  3. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    viperserver (02.01.2008)

  4. #3
    viperserver ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.12.2007
    Beiträge
    21
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also ich hab das schon mal Probiert, aber das geht nicht! Hab an dieser Lösung auch schon herum gemacht.
    Aber was mir dazu noch aufgefallen ist, was mache ich mit dem Unterstrich "_"? den Kann die Funktion mir ja nicht Umwandeln.

    Ist es normal das ich in deinem DB Strings nicht beobachten kann?

    aber trotzdem vielen Dank
    Nur kurz zur Info.
    Ich habe eine cou 315 2dp und eine cp340 über der ich die Daten per Handscanner einlese. (zur Zeit in den DB). Den Wert wie oben beschrieben möchte ich als Int oder Real haben z.B 1500.

  5. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Sieh dir das mal an:

    http://www.sps-forum.de/showthread.p...2914#post72914

    Der FC207 von OHGN paßt eigentlich exakt zu dem, was du brauchst.
    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

  6. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    viperserver (02.01.2008)

  7. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo,
    erstens:
    - warum funktioniert die Geschichte mit dem String nicht bei dir ?
    Vielleicht stellst du mal dein bisheriges Programm hier ein - dann läßt sich vielleicht auch was lösen ...

    zweitens:
    - der Unterstrich ist immer zwischen der Tausender und der Hunderter-Stelle ? Wäre bei einem String auch kein Problem, da es dort noch die Funktion FIND gäbe für "Zeichen(-kette) in einem String finden" bzw. die Funktion DELETE, die ein (oder mehrere) Zeichen an/ab einer Position löscht ...

    Gruß
    LL

  8. #6
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von viperserver Beitrag anzeigen
    Zur Zeit lade ich von einem Handscanner Daten (Ascii) in einen DatenBaustein (DB).
    Zu Scannen ist 1.500 oder 500 oder 2.300 als Barcode.
    In meinem DB schreibt er mir dann aber in jede Zeile ein Zeichen
    0
    1
    _
    5
    0
    0

    (Zeile im DB ist als "Char" deklariert)

    Mein Problem ist bloß das ich das so nicht gebrauchen kann, sondern als komplete Zahl ("1500" oder "500" oder "2300"). Am besten wäre es wenn es ein INT oder eine REAL Zahl wäre.
    Hier mal ein kurzes Programmbeispiel:

    Code:
    // ASCII-Tabelle
    //
    // CHAR '0' = HEX 30 = DEZ 48
    // CHAR '1' = HEX 31 = DEZ 49 
    // CHAR '2' = HEX 32 = DEZ 50 
    // CHAR '3' = HEX 33 = DEZ 51 
    // CHAR '4' = HEX 34 = DEZ 52 
    // CHAR '5' = HEX 35 = DEZ 53 
    // CHAR '6' = HEX 36 = DEZ 54 
    // CHAR '7' = HEX 37 = DEZ 55 
    // CHAR '8' = HEX 38 = DEZ 56 
    // CHAR '9' = HEX 39 = DEZ 57 
     
          AUF   DB   200
     
          L     0
          T     MD   200                    // Ergebnis
     
          L     DBB    0                    // Wert x 10000
          ITD   
          L     L#48
          -D    
          L     L#10000
          *D    
          T     MD   200                    // Ergebnis
     
          L     DBB    1                    // Wert x 1000
          ITD   
          L     L#48
          -D    
          L     L#1000
          *D    
          L     MD   200
          +D    
          T     MD   200                    // Ergebnis
     
          L     DBB    3                    // Wert x 100
          ITD   
          L     L#48
          -D    
          L     L#100
          *D    
          L     MD   200
          +D    
          T     MD   200                    // Ergebnis
     
          L     DBB    4                    // Wert x 10
          ITD   
          L     L#48
          -D    
          L     L#10
          *D    
          L     MD   200
          +D    
          T     MD   200                    // Ergebnis
     
          L     DBB    5                    // Wert x 1
          ITD   
          L     L#48
          -D    
          L     MD   200
          +D    
          T     MD   200                    // Ergebnis
    Gruß Kai

  9. #7
    viperserver ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.12.2007
    Beiträge
    21
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich schreibe das Programm im FUP.
    von mir aus könnte ich dir das Programm schicken Larry Lafer.
    Das mit dem String ist so, er macht da einfach gar nichts... Ich bin mir eigentlich ziehmlich sicher, das es daran liegt, das da der Unterstrich "_" drin ist...
    Weil er mir das ja auch so vom Handscanner in den DB ließt.
    0
    1
    _
    5
    0
    0
    und er ja immer das Ziffern will!
    Geändert von viperserver (02.01.2008 um 17:12 Uhr)

  10. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Zitat Zitat von viperserver Beitrag anzeigen
    Ich schreibe das Programm im FUP.
    von mir aus könnte ich dir das Programm schicken Larry Lafer.
    .. wenn dann hier einstellen (siehe Beispiel von Kai).
    Ich denke aber, dass die FUP-Geschichte schon meinem Vorschlag entgegensteht. Ich glaube nicht, dass ich das in FUP schreiben könnte.

    @Kai:
    Ich glaube, dein Vorschlag funktioniert bei Zahlen unter 1000 nicht, da dann der Tausender-Punkt an der Position wegfällt und die vorderen Stellen vermutlich auch ...

    Gruß
    LL

  11. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    viperserver (02.01.2008)

  12. #9
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Ich glaube, dein Vorschlag funktioniert bei Zahlen unter 1000 nicht, da dann der Tausender-Punkt an der Position wegfällt und die vorderen Stellen vermutlich auch ...
    @Viperserver,

    wie sehen Deine Zahlen < 1000 im DB aus?

    DBB0 = '0'
    DBB1 = '0'
    DBB2 = '.'
    DBB3 = '9'
    DBB4 = '8'
    DBB5 = '7'

    oder so:

    DBB0 = '9'
    DBB1 = '8'
    DBB2 = '7'
    DBB3 = ''
    DBB4 = ''
    DBB5 = ''

    Gruß Kai

  13. Folgender Benutzer sagt Danke zu Kai für den nützlichen Beitrag:

    viperserver (02.01.2008)

  14. #10
    viperserver ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.12.2007
    Beiträge
    21
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Leider hab ich ein Problem mit AWL. Ich kenn mich damit mal 0 Aus



    Also ich speichere das in den DB41 es kommt vom FC41 über den P_RCV (1 Netzwerk)
    Angehängte Dateien Angehängte Dateien
    Geändert von viperserver (02.01.2008 um 17:32 Uhr)

Ähnliche Themen

  1. INT oder DINT in CHAR/BYTE Umwandeln
    Von MAVI im Forum Simatic
    Antworten: 41
    Letzter Beitrag: 29.04.2016, 12:51
  2. Antworten: 25
    Letzter Beitrag: 15.06.2011, 12:14
  3. Integer in Char Array wandeln ?
    Von Power_Pete im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 28.01.2010, 15:26
  4. Array of Char umwandeln?
    Von thomzur im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.02.2008, 17:06
  5. REAL in Integer umwandeln
    Von dummyuser im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 02.10.2006, 14:59

Lesezeichen

Berechtigungen

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