Array of Byte to String[12] ,S7

sb9674

Level-1
Beiträge
19
Reaktionspunkte
0
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:
 [B][COLOR=black][FONT=Century Gothic]Adresse          Name         [/FONT][/COLOR][/B][B][COLOR=#5d5959][FONT=Century Gothic]Type                [/FONT][/COLOR][/B][B][COLOR=black][FONT=Century Gothic]Anfangswert           Kommenta[/FONT][/COLOR][/B]
[COLOR=red][FONT=Century Gothic]+32.0              [/FONT][FONT=Century Gothic]SENRT_     ARRAY [1..12]                             Serialnummer RT[/FONT][/COLOR]
[FONT=Century Gothic][COLOR=red]*1.0 BYTE[/COLOR][/FONT]
[COLOR=red] [/COLOR]
[COLOR=#5d5959][FONT=Century Gothic]+44.0                 LIRT_1     ARRAY[1..10]                                Lieferant RT[/FONT][/COLOR]
[FONT=Century Gothic][COLOR=#5d5959]*1.0 BYTE[/COLOR][/FONT]
 
[COLOR=#5d5959][FONT=Century Gothic]+54.0              SANFT_1   ARRAY [1..18]                                 [/FONT][/COLOR][COLOR=#5d5959][FONT=Century Gothic]Sachnummer [/FONT][/COLOR]
 
Zuletzt bearbeitet:
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:
 [B][COLOR=black][FONT=Century Gothic]Adresse          Name         [/FONT][/COLOR][/B][B][COLOR=#5d5959][FONT=Century Gothic]Type                [/FONT][/COLOR][/B][B][COLOR=black][FONT=Century Gothic]Anfangswert           Kommenta[/FONT][/COLOR][/B]
[COLOR=red][FONT=Century Gothic]+32.0              [/FONT][FONT=Century Gothic]SENRT_     ARRAY [1..12]                             Serialnummer RT[/FONT][/COLOR]
[FONT=Century Gothic][COLOR=red]*1.0 BYTE[/COLOR][/FONT]
[COLOR=red] [/COLOR]
[COLOR=#5d5959][FONT=Century Gothic]+44.0                 LIRT_1     ARRAY[1..10]                                Lieferant RT[/FONT][/COLOR]
[FONT=Century Gothic][COLOR=#5d5959]*1.0 BYTE[/COLOR][/FONT]
 
[COLOR=#5d5959][FONT=Century Gothic]+54.0              SANFT_1   ARRAY [1..18]                                 [/FONT][/COLOR][COLOR=#5d5959][FONT=Century Gothic]Sachnummer [/FONT][/COLOR]

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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
Zurück
Oben