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

Ergebnis 1 bis 6 von 6

Thema: Umwandeln in Ascii (CHAR)

  1. #1
    Registriert seit
    03.09.2004
    Ort
    Münster
    Beiträge
    193
    Danke
    15
    Erhielt 16 Danke für 14 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Profi´s

    Steuerung: (S7300 CPU 315-2DP, Step7 V5.5)
    muß eine Artikel-Nr. 291889 Wert in Ascii (CHAR) umwandeln, wie geht es am einfachsten!
    Beispiel:
    Artikel-Nr. = DB140.DBD = Wert 291889
    umwandeln in ASCII (CHAR)

    MB40 = '2'
    MB41 = '9'
    MB42 = '1'
    usw. bis MB45
    Bis dann mal

    Martin
    Zitieren Zitieren Umwandeln in Ascii (CHAR)  

  2. #2
    Registriert seit
    24.05.2006
    Beiträge
    234
    Danke
    14
    Erhielt 77 Danke für 57 Beiträge

    Standard

    Zum Beispiel mit dem FC5 DI_STRING aus der iec-library den Wert in einen String wandeln und dann die CHARs au dem Ergebnis-String ausschneiden.

    Grüße
    hovonlo

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

    Standard

    oder hiermit
    Angehängte Dateien Angehängte Dateien
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    sollte auch für INT funktionieren können: Word (hex) to 4x Char
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Martin L. ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.09.2004
    Ort
    Münster
    Beiträge
    193
    Danke
    15
    Erhielt 16 Danke für 14 Beiträge

    Standard

    Hallo hovonlo, Volker + vierlagig,
    danke für eure schnellen Info´s. Habe den FC5 eingebunden funktioniert perfekt.
    Bis dann mal

    Martin

  6. #6
    Registriert seit
    06.11.2008
    Beiträge
    97
    Danke
    9
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin,

    vielleicht hat noch Jemand Interesse an zwei Bausteinen (DINT-> ASCII; ASCII->DINT) beides 4-stellig....

    FUNCTION "ASCII_DINT" : DINT
    TITLE =
    //ASCII -> DINT (ASCII in Doppelwort)
    AUTHOR : MF
    FAMILY : CONVERT
    NAME : ASC_DINT
    VERSION : 1.0


    VAR_INPUT
    Idw_ASCII : DWORD ; //Zeichenfolge (ASCII-Zeichen) - 4 Stellen
    END_VAR
    VAR_TEMP
    Tdw_Eingang : DWORD ; //Zwischenspeicher Eingangsstring
    END_VAR
    BEGIN
    NETWORK
    TITLE =ASCII in DINT
    //Historie:
    //------------------------------------------------------------------------------
    //Release: 15.10.2013 MF
    //
    //
    //Benötigte Bausteine:
    //------------------------------------------------------------------------------
    // -
    //
    //
    //Beschreibung:
    //------------------------------------------------------------------------------
    //ASCII-Code
    //
    //Zeichen Hex Dez BCD
    //----------------------------------------
    // '0' 30h 48 1111 0000
    // '1' 31h 49 1111 0001
    // '2' 32h 50 1111 0010
    // '3' 33h 51 1111 0011
    // '4' 34h 52 1111 0100
    // '5' 35h 53 1111 0101
    // '6' 36h 54 1111 0110
    // '7' 37h 55 1111 0111
    // '8' 38h 56 1111 1000
    // '9' 39h 57 1111 1001
    //
    //Daraus folgt: immer die 1. Tetrade enthält den gesuchten Wert. Nur BCD-Zahlen
    //sind gültig. D.h. die 1. Tetrade muss eine gültige BCD-Zahl enthalten. Dann
    //kann
    //die 1. Tetrade als Zahl verwendet werden.
    //
    //
    //


    //*** Initialisierung ***

    SET ;
    SAVE ; // BIE-Bit vorbelegen


    //*** Daten gültig? ***

    L #Idw_ASCII;
    PUSH ;
    UD DW#16#F0F0F0F0;
    XOD DW#16#30303030;
    SPN FEHL; // Wenn ASCII-Bereich != 0-9 >> springe zu FEHL
    TAK ;
    UD DW#16#F0F0F0F; // 1. Tetrade ausmaskieren MASKE: 0F0F0F0F
    T #Tdw_Eingang;
    UD DW#16#6060606; // 0,1,8 und 9 ausmaskieren MASKE: 06060606
    SPZ OK; // wenn 0,1,8 oder 9 >> springe zu OK
    SLD 1;
    L #Tdw_Eingang;
    UD ;
    UD DW#16#8080808;
    SPN FEHL; // wenn 10-15 >> springe zu FEHL
    TAK ;
    UD DW#16#4040404;
    SLD 1;
    L #Tdw_Eingang;
    UD ;
    SPN FEHL;


    //*** ASCII-Eingang in DINT wandeln ***

    OK: L #Tdw_Eingang;
    PUSH ;
    SLD 28;
    SRD 28;
    TAK ;
    SRD 4;
    OD ;
    PUSH ;
    SLD 24;
    SRD 24;
    TAK ;
    SRD 8;
    SLD 4;
    OD ;
    PUSH ;
    SLD 20;
    SRD 20;
    TAK ;
    SRD 12;
    SLD 8;
    OD ;
    BTD ;
    T #RET_VAL; // Wert ausgeben
    BEA ; // Baustein beenden


    //*** Fehler ***

    FEHL: CLR ;
    SAVE ; // BIE-bit setzen

    END_FUNCTION









    FUNCTION "DINT_ASCII" : DWORD
    TITLE =
    //DINT -> ASCII (ASCII in Doppelwort)
    AUTHOR : MF
    FAMILY : CONVERT
    NAME : DINT_ASC
    VERSION : 1.0


    VAR_INPUT
    Idi_DINT : DINT ; //Zahl in DINT-Format
    END_VAR
    BEGIN
    NETWORK
    TITLE =ASCII in DINT
    //Historie:
    //------------------------------------------------------------------------------
    //Release: 15.10.2013 MF
    //
    //
    //Benötigte Bausteine:
    //------------------------------------------------------------------------------
    // -
    //
    //
    //Beschreibung:
    //------------------------------------------------------------------------------
    //ASCII-Code
    //
    //Zeichen Hex Dez BCD
    //----------------------------------------
    // '0' 30h 48 0011 0000
    // '1' 31h 49 0011 0001
    // '2' 32h 50 0011 0010
    // '3' 33h 51 0011 0011
    // '4' 34h 52 0011 0100
    // '5' 35h 53 0011 0101
    // '6' 36h 54 0011 0110
    // '7' 37h 55 0011 0111
    // '8' 38h 56 0011 1000
    // '9' 39h 57 0011 1001
    //
    //
    //
    //
    //


    //*** Initialisierung ***

    SET ;
    SAVE ; // BIE-Bit vorbelegen


    //*** DINT-Eingang in ASCII wandeln ***

    L #Idi_DINT;
    DTB ;
    PUSH ;
    SRD 12;
    SLD 16;
    TAK ;
    SLD 20;
    SRD 20;
    OD ;
    PUSH ;
    SRD 8;
    SLD 12;
    TAK ;
    SLD 24;
    SRD 24;
    OD ;
    PUSH ;
    SRD 4;
    SLD 8;
    TAK ;
    SLD 28;
    SRD 28;
    OD ;
    OD DW#16#30303030; //ASCII-Offset für 0-9
    T #RET_VAL;

    END_FUNCTION

    _____________________________________________
    "Von nichts kommt was" von B. Trüger

Ähnliche Themen

  1. TIA Char in String Umwandeln
    Von Whiti im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.07.2014, 23:51
  2. [SCL] String in Char umwandeln
    Von emilio20 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 27.11.2012, 06:58
  3. ASCII umwandeln aus RS232
    Von heppy im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 22.12.2011, 15:16
  4. Char umwandeln in Integer
    Von viperserver im Forum Simatic
    Antworten: 47
    Letzter Beitrag: 07.03.2011, 15:23
  5. Array of Char umwandeln?
    Von thomzur im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.02.2008, 17:06

Lesezeichen

Berechtigungen

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