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

Ergebnis 1 bis 10 von 10

Thema: Char in einen String oder als Int

  1. #1
    Registriert seit
    01.05.2007
    Beiträge
    100
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    habe eine vorgegebene Struktur in einem DB.

    Möchte 4 Char Werte zu einem String zusammensetzen. Oder Besser noch als Int Ausgeben. Ich denke wenn ich die Char als String habe kann ich den String mit dem FC 38 umwandeln richtig?

    Könnt Ihr mir bitte einen Tipp geben.

    Danke
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Char in einen String oder als Int  

  2. #2
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Das wird so funktionieren.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  3. #3
    bluebird277 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.05.2007
    Beiträge
    100
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ok danke Tigerente

    Aber wie bekomme ich die einzelnen Character zu einem String zusammen?

  4. #4
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Mit SCL könnte man das so machen:

    Code:
     
    tmpString:= ' ';
    
    FOR i:= 1 TO "n" DO
                tmpString:=REPLACE(IN1 := tmpString, IN2 := DATEN[i],L := 1,P := i);
            END_FOR;
    n = Anzahl der CHAR-Variablen
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  5. Folgender Benutzer sagt Danke zu Tigerente1974 für den nützlichen Beitrag:

    bluebird277 (29.09.2014)

  6. #5
    bluebird277 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.05.2007
    Beiträge
    100
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard

    und mit AWl geht's wohl nur mit viel Aufwand oder?

  7. #6
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    In AWL habe ich das noch nicht gemacht.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  8. #7
    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

    Du kannst auch direkt in INT umwandeln.
    Sie Zahlen in ASCII sind 30hex (0) bis 39hex (9)

    Dann kannst du folgendermaßen vorgehen in AWL:
    Code:
    //My_Int als Int in Temp deklarieren
    
    //1000-er
    L DB10.Daten[1]    //Daten laden
    L w#16#30   //30hex
    -I                 //subtrahieren
    L 1000          //1.Stelle (1000-er)
    *I
    T #My_Int
    
    //100-er
    L DB10.Daten[2]    //Daten laden
    L w#16#30   //30hex
    -I                 //subtrahieren
    L 100           //2.Stelle (100-er)
    *I
    L #My_Int 
    +I
    T #My_Int
    
    //10-er
    L DB10.Daten[3]    //Daten laden
    L w#16#30   //30hex
    -I                 //subtrahieren
    L 10             //3.Stelle (10-er)
    *I
    L #My_Int 
    +I
    T #My_Int
    
    //1-er
    L DB10.Daten[4]    //Daten laden
    L w#16#30   //30hex
    -I                 //subtrahieren
    L #My_Int 
    +I
    T #My_Int
    Wenn du nicht sicher bist, ob in den Char auch wirklich Ziffern liegen, dann mußt du natürlich vorher jeden Char darauf prüfen, ob er zwischen 30hex und 39hex liegt, sonst würde es natürlich Ärger geben.
    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

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

    bluebird277 (29.09.2014)

  10. #8
    bluebird277 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.05.2007
    Beiträge
    100
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Ralle,

    super Vielen Dank werde es mal ausprobieren.

    Habe heute Mittag mal auf die schnelle was in SCL gebastelt. Vielleicht habt Ihr ja noch Verbesserungsvorschläge. Wobei ich eher zu AWL tendiere.

    CASE iSchritt OF
    0:

    ischritt:=10;


    10:

    iString1:=CHAR_TO_STRING(char1);
    iString2:=CHAR_TO_STRING(char2);
    iString3:=CHAR_TO_STRING(char3);
    iString4:=CHAR_TO_STRING(char4);
    iString5:=CHAR_TO_STRING(char5);
    iString6:=CHAR_TO_STRING(char6);

    ischritt:=20;

    20:

    StringGesamt:=CONCAT(IN1:=iString1, IN2:=iString2);
    StringGesamt:=CONCAT(IN1:=StringGesamt, IN2:=iString3);

    IF db10.dbw2=4 THEN
    StringGesamt:=CONCAT(IN1:=StringGesamt, IN2:=iString4);
    ischritt:=30;
    ELSE
    ischritt:=30;
    END_IF;

    30:

    Integer:=STRING_TO_INT(StringGesamt);

    ischritt:=100;

    100:

    ischritt:=0;

    ELSE:
    // Anweisungen_ELSE
    ;
    END_CASE;

  11. #9
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Hallo bluebird.

    Grundsätzlich finde ich es immer gut, alle Möglichkeiten abzuwägen und dabei auch eigene Ideen zu probieren. Lernen wird man auf diese Weise immer.
    Allerdings ist das extrem "zu Fuß" was Du gemacht hast.
    Die Stringvariablen müssten aber irgendwo noch initialisiert werden. Außerdem ist es nicht besonders sinnvoll, jede CHAR-Variable einzeln auf eine STRING-Variable zu rangieren.
    Der absolute Zugriff auf DB10.DBW2 ist auch nicht so schön. Versuch Dir anzugewöhnen symbolisch zu programmieren.
    Ansonsten sieht es so aus, als würde der Code so auch zum Ziel führen.
    Allerdings ist der Code viel umfangreicher als der, den ich in meinem post #4 gezeigt habe. Zumal man damit bei einer größeren Zahl von CHAR auch noch arbeiten kann. "Zu Fuß" wird man ab einer gewissen Anzahl schnell ein Sklave der Tasten...
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  12. #10
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    hier gabs ja auch schon mal info's zu (oscat: buffer_to_string):

    http://www.sps-forum.de/simatic/25379-char_to_string.html


    damit sollte auch ein array of char in eine Zeichenkette wandelbar sein und
    anschließend mit FC37/FC38 in eine Zahl.

    MfG Sinix
    and we all support the team (S.King - Die Arena)

Ä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: 9
    Letzter Beitrag: 31.08.2012, 08:55
  3. Antworten: 50
    Letzter Beitrag: 09.08.2012, 09:31
  4. Int als Hexadezimalwerte darstellen und in String schreiben
    Von carki im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 30.03.2012, 09:15
  5. Antworten: 5
    Letzter Beitrag: 10.12.2011, 13:58

Lesezeichen

Berechtigungen

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