Zeichenkette an Panel übegeben

Fl0Bru

Level-1
Beiträge
49
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine S7 317-2PN/DP und ein TP177B. Ich habe in einem DB nun 16 Zeichenketten mit einer Länge von jeweils 32 Zeichen angelegt. In meinem DB werden aber für die 32 Zeichen, 34 Byte benutzt. Was an sich ja noch nicht so schlimm ist.

Wenn ich jetzt unter WinCC die Variablen einfüge, und ich die Länge von 32 Zeichen eingebe, setzt WinCC die Adressen auch Automatisch um 34 Byte hoch. Dies ist so ja auch in Ordnung.

Wenn ich jedoch jetzt die Zeichenkette ausgeben lasse, steht vor dem ersten Zeichen immer ein kleines Quadrat. Woher kommt das? Ich bekomme das nur weg, wenn ich WinCC sage, das das Startbyte nicht DB114.DBB0 ist sonder DB114.DBB2. Aber das kann doch nicht die Lösung sein oder?


Vielen Dank schonmal.
 
hast du mal geschaut, wie der parameter string aufgebaut ist?

die hilfe ist hier nicht schlecht

In den ersten zwei bytes steht die länge des strings.

fütter die mal händisch mit werten und du bekommst eine anzeige
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, wenn man die Ansicht aud Dezimal umschaltet, sieht man dies auch. :)

Aber warum kann WinCC das nicht verarbeiten? Es erkennt ja richtig, das für 32 Zeichen 34 Byte benötigt werden. Muss ich jetzt also das "Startbyte" um 2 Byte verschieben?
 
Muss ich jetzt also das "Startbyte" um 2 Byte verschieben?
Nein, das Startbyte nicht verschieben.
Als Stringadresse muß die Adresse des Stringkopfes 2 Byte vor dem eigentlichen String angegeben werden.

Du meinst sicher WinCC flexible. Ist Dein TP177B bzw. das WinCCflex-Projekt in das Step7-Projekt integriert?
Wenn Du die Strings im DB korrekt als STRING[32] deklariert hast und in WinCCflex die Strings symbolisch auswählst, dann
macht WinCCflex alles richtig und erstellt die Variable als String mit der Länge 32 und zeigt dann die Strings korrekt an.

Wenn Du die Variablen nicht symbolisch anlegst, dann mußt Du selber String (nicht StringChar!!!) einstellen und die
Länge 32 eingeben. Die Adresse des Strings muß die selbe sein, wie im DB angezeigt, also z.B. DB114.DBB0.

Harald
 
Danke, es lag daran das ich der Typ auf StringChar stand, und nicht auf String. ich gehe mal davon aus, das StrinChar alle Zeichen als Char interpretiert und die Steuerzeichen ignoriert.
 
Zurück
Oben