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

Ergebnis 1 bis 7 von 7

Thema: Array of Byte to String[12] ,S7

  1. #1
    Registriert seit
    10.09.2009
    Beiträge
    19
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPS freunde
    Habe eine kleine frage, und zwar, in ein DB 14 Position 32 muss ich ein ARRAY [1..12] of Byte to String vom länge 12 umwandeln, weiß jemanden wie das geht?

    MFG
    I.S
    Code:
     
     Adresse          Name         Type                Anfangswert           Kommenta
    +32.0              SENRT_     ARRAY [1..12]                             Serialnummer RT
    *1.0 BYTE
    
    +44.0                 LIRT_1     ARRAY[1..10]                                Lieferant RT
    *1.0 BYTE
     
    +54.0              SANFT_1   ARRAY [1..18]                                 Sachnummer 
    Geändert von sb9674 (28.09.2009 um 14:26 Uhr)
    Zitieren Zitieren Array of Byte to String[12] ,S7  

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

    Zitat Zitat von sb9674 Beitrag anzeigen
    Hallo SPS freunde
    Habe eine kleine frage, und zwar, in ein DB 14 Position 32 muss ich ein ARRAY [1..12] of Byte to String vom länge 12 umwandeln, weiß jemanden wie das geht?

    MFG
    I.S
    Code:
     
     Adresse          Name         Type                Anfangswert           Kommenta
    +32.0              SENRT_     ARRAY [1..12]                             Serialnummer RT
    *1.0 BYTE
    
    +44.0                 LIRT_1     ARRAY[1..10]                                Lieferant RT
    *1.0 BYTE
     
    +54.0              SANFT_1   ARRAY [1..18]                                 Sachnummer 
    Ich muß nochmal nachfragen, du willst das Array in einen anderen DB kopieren und dort soll es dann ein String sein, quasi ein Typecast?

    Ein S7-String hat zusätzlich zu den Char noch einen Kopf aus 2 Byte. Byte 0 ist die maximale Länge, Byte 1 die tatsächliche Länge und dann kommen die Byte mit den Char-Werten. In deinem Falle mußt du also in einem andern DB einen String[12] anlegen. In diesen kopierst du Byte für Byte, besser noch Doppelwortweise deine Char hinein. Dann setz du noch Byte 0 und 1 auf 12 (Byte 0 ist eigentlich schon 12, weil ein ein String[12] im DB angelegt wurde. Dieser String kann dann z.Bsp. von WinCCflex oder Protool angezeigt werden.

    Bsp:

    Du legt DB15 mit dem String[12] an.

    Dann kopierst du.

    Code:
    L DB14.DBD32
    T DB12.DBD2 
    
    L DB14.DBD36
    T DB15.DBD6
    
    L DB14.DBD40
    T DB15.DBD10
    
    L 12
    T DB15.DBB0
    T DB15.DBB1
    PS: Das ganze ginge auch mit dem SFC20 (Blockmove), aber das lohnt hier irgendwie nicht unbedingt.
    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

  3. #3
    sb9674 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.09.2009
    Beiträge
    19
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja ,also habe schon ein Umwandlung mit der IEC Funktionen gemacht , nun zweifle ich an das Ergebnis , habe früher die FC16 (I-String) oder die FC5 (DI_String) benutzt , aber als INPUT wollte ich den Kompleten Array eingeben als DB14.senrt_1 ,geht leider nicht (Array passt nicht zu formalen Typ INT) ,da passt nur ein Wort oder doppelwort als Eingabe (DB14.DBW32 (bei FC16)oder DB14.DBD32(bei FC), das Problem ist das sind 12 Byte ….
    Ich probiere mal was du mir geschrieben hast und dann sag ich dir bescheid.
    MFG
    I.S

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

    I_String und DI_String wandeln numerische Werte in Strings, in deinen 12 Byte ist doch keine numerische Zahl enthalten oder? Ich ging davon aus, daß da schon Char drinstehen.
    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
    sb9674 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.09.2009
    Beiträge
    19
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Ralle
    ich glaube dass in mein 12 Byte keine numerische zahl erhalten, habe die Lösung kopiert,und ich werde gleich gucken ob es funktioniert hat ..
    mit so eine Array[1..12]of Byte bekommt man als Ergebnis ein INT oder ?
    Mfg
    I.S

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

    Zitat Zitat von sb9674 Beitrag anzeigen
    mit so eine Array[1..12]of Byte bekommt man als Ergebnis ein INT oder ?
    Mfg
    I.S
    Ne, eher nicht, es kommt ja immer auch auf das angelieferte Format an. Zuerst mußt du mal wissen, was genau da in den 12 Byte drinsteht. numerische Zahlen, BCD-Codierte Zahlen, Ascii-Zeichen (Char)?
    Das soll dann in den S7-String. Also mußt du gegebenfalls noch die Daten aus den 12 Byte in Ascii-Zeichen umsetzen. Im einfachsten Fall steht in jedem Byte schon ein Ascii-Zeichen, weil du einen String von einer PC-Anwendung oder Kamera bekommen hast. Dann muß nur der Header (2 Byte) dazu, fertig ist der S7-String. Diesen Fall hab ich mal angenommen.
    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
    18.06.2007
    Ort
    im Loch
    Beiträge
    56
    Danke
    6
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Ralle
    Die dümmsten Programmierer haben die dicksten Programme.

Ähnliche Themen

  1. String := '$Byte';
    Von SirTom78 im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 04.09.2011, 00:54
  2. Array of Byte in String mit Step 7 V10.5
    Von Lord Cartman im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 09.12.2010, 09:34
  3. array of [1..8] byte
    Von domino im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 13.04.2010, 07:25
  4. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  5. Bool-Array in Byte-Array
    Von Techniker im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 13.01.2006, 19:12

Lesezeichen

Berechtigungen

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