String erzeugen

speedy_nrw

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.
Gibt es in S7 einen Baustein, mit dessen Hilfe man aus einzelnen Bytes elegant einen String erzeugen kann? Oder wie kann ich ansonsten die Kopfzeile eines Strings generieren der 10stellig werden soll?
 
In Byte 0 steht die max. Länge des Strings, in Byte 1 die tatsächliche Länge des Strings, du brauchst also 12 Byte für einen 10-stelligen String.

S7-Hilfe "Suchen" nach "String-Länge"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch eine Anmerkung:
Byte 0 kann man wohl auch mit 0 oder gar nicht beschreiben, der String wird trotzdem korrekt in einem OP angezeigt, auch ein Stringvergleich mit FC180 (EQ_String) funktioniert, wenn in Byte 0 "Unsinn" steht.
 
Was fertiges:

Hallo,

in der S7-Stardard-Library unter

IEC-Funktionen die Bausteine FC5 oder FC16 sollten aus Zahlen String-Format erzeugen.
 
Wenn man (10) einzelne Bytes die hintereinanderstehen hat dann müsste das ja über ne Schleife auch funktionieren.
In etwa so:
Code:
      LAR1  P#M 10.0                    // Anfangsbereich der Merkerbyte
      LAR2  P##Zeichen                  // Adresse von String in Lokaldaten
      L     10                          // Anzahl der maximalen Stringlaenge
      T     #Stringlaenge
m1:   T     #Loopzaehler
      L     0
      L     B [AR1,P#0.0]               // Lade Merkerbyte wo Zeichen hinterlegt ist
      ==I   
      SPB   next                        // Wenn kein Zeichen vorhanden dann springe
      T     B [AR2,P#2.0]               // schreibe Zeichen in String
      +AR2  P#1.0
      L     #Zeichenlaenge
      L     1
      +I    
      T     #Zeichenlaenge              // Berechne Tatsächliche länge des String
next: +AR1  P#1.0
      L     #Loopzaehler
      LOOP  m1
      LAR2  P##Zeichen
      L     #Stringlaenge               // STRING-Länge 
      T     B [AR2,P#0.0]               // maximale Länge des Strings (Byte) 
      L     #Zeichenlaenge              // tatsächliche Länge des Strings 
      T     B [AR2,P#1.0]               // tatsächliche Länge des Strings eintragen 
      L     0
      T     #Zeichenlaenge

mfg Godi
 
Zurück
Oben