Rohdatentyp

ddb

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe ein Problem.

Ich habe in WinCC V6.2 eine Variable "rohdatenvar" vom Variablentyp Rohdaten mit der Länge 8 Byte. (Block senden/empfangen)

Nun will ich diese Variable in WinCC auslesen. Laut Hilfe ist das nur in einem Skript möglich und dem Befehl GetTagRaw. Leider habe ich nicht den gewünschten Erfolg. Ich erhalte nur Nullen.

Ich verwende folgendes Skript:

#define DATA_SIZE 8
BYTE* byData[DATA_SIZE];
char szUhrzeit[30];

//Get the current values of the tag
GetTagRaw("rohdatenvar",*byData,DATA_SIZE);



sprintf(szUhrzeit,"%02d:%02d:%02d",*(byData+1),*(byData+2),*(byData+3));


Wende ich den Befehl GetTagRaw falsch an oder liegt es am Array?
Muss auf S7-Seite ein bestimmter Datentyp verwendet werden?
Oder habe ich sonst eine falsche Einstellung gemacht oder eine vergessen?

Wenn ich in WinCC Textvariablen benütze, dann werden die ersten zwei Bytes der Variable als Header verwenden, die unteranderem die Länge des nachfolgenden Strings enthalten.
Beinhaltet eine Rohdatenvariable ebenfalls einen solchen Header?

Dankeschön.
 
C Script

Hi,
wo hast du den Script her? Bist du sicher, dass du über die Pointer die richtige Bereiche liest? Ich denke das stimmt nicht ganz..hab aber jetzt keine Zeit zu prüfen.
Rohdatenvariablen haben keine Header usw.

V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
#define DATA_SIZE 8
BYTE* byData[DATA_SIZE];
char szUhrzeit[30];

//Get the current values of the tag
GetTagRaw("rohdatenvar",*byData,DATA_SIZE);



sprintf(szUhrzeit,"%02d:%02d:%02d",*(byData+1),*(byData+2),*(byData+3));

Es ist bei mir zwar schon sehr, sehr lange her, daß ich was mit C gemacht habe, aber probiers mal so (& (= Adressoperator) anstatt *):

GetTagRaw("rohdatenvar",&byData, DATA_SIZE);

Beim sprintf gilt das gleiche, also & anstatt *.
 
Ich machs so

(ist nur ein auszug aber sollte helfen)


Code:
#define RawTag "LE_I0022"

struct {
       WORD PEW;
       FLOAT MBA;
       FLOAT MBE;
       FLOAT Soll1;
       FLOAT Soll2;
       FLOAT TGO;
       FLOAT TGU;
       FLOAT Soll3;
       FLOAT Soll4;

       } RStat;

 
GetTagRawState(RawTag,(BYTE *)&RStat,sizeof(RStat),&TagState);
 
Zurück
Oben