WinCC 6 und S7 Char

S7_Mich

Level-2
Beiträge
214
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine Frage zum Darstellen einiger S7-Char in WinCC.

Im Einsatz ist WinCC 6.0 SP4. Ich möchte einige Zeichen in WinCC als Text darstellen.

Ich habe dazu in WinCC eine Variable Test (Textvariable 8 Bit Zeichensatz) mit einer Länge von 4 Bytes angelegt. Die Variable soll auf DB1.DBB300 zugreifen. Jedoch sind im DB nicht String´s angelegt sondern Char.

DB1.DBB300 'T'
DB1.DBB301 'e'
DB1.DBB302 's'
DB1.DBB303 't'

Die Variable Test habe ich mit einem EA-Feld verknüpft und im Datenformat String und Ausgabeformat * eingestellt.

In dem Textfeld steht aber nur "st" :)

Ich habe gelesen, das WinCC keine Char darstellen kann, sondern nur String's. In einer Anleitung von Siemens soll es durch eine INI-Datei möglich sein, die Formatprüfung (die ersten zwei Bytes beinhaltet die Länge des Strings) abzuschalten. Jedoch kann ich das nicht machen, da in WinCC bereits anderere Textvariablen projektiert sind und diese dann nicht mehr funktionieren werden.

Kann nur WinCC 6.0 SP4 keine Char darstellen und würde es mit einer aktuellen Version 7.x funktionieren?

Welche andere Alternative habe ich?

Vielen Dank für eure Hilfe!

Gruß
Michael
 
Müssen es denn unbedingt Char in deinem DB sein?
Wenn es denn sein muß, dann solltest du die Byte 298 und 299 im DB frei lassen und den String in WinCC bei 298 beginnen lassen, die Länge vielleicht auch noch auf 6 korrigieren. Aber schön ist das nicht, da man das nach ein paar Monaten vergessen hat und sich später dem Kopf zerbricht, was da los ist. Ich kenne ähnliches bei der Verbindung eines PC über OPC und der "Doppelnutzung" von DB-Daten zur Anzeige in einem OP17 (S7-String) und auf dem PC (normaler String).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

das S7 Programm wurde von einer Fremdfirma gemacht und ich darf die WinCC Visu um die Anlagen erweitern.

Ich könnte einen zweiten DB erstellen und die Char aus dem vorhandenen DB in den neuen DB als String schreiben.

Mmh, wie wandle ich Char in String um?

Der anzuzeigende Text hat eine feste Breite von 16 möglichen Zeichen. Aber ob immer 16 Zeichen drin stehen, weiss ich grad nicht. Die 16 als max. Länge müßte ich an das Byte 1 schreiben und die tatsächliche Länge dann an Byte 2. Aber blanks zählen auch als Zeichen, also wären beide Bytes 16dez, oder?

Gruß
Michael
 
Ja, das wäre so, wobei die tatsächliche Länge eine Rolle bei der Darstellung spielt. Man kann dort also so viele Zeichen eintragen, wie ab dem Stringbeginn (3. Byte) in der Visu angezeigt werden sollen. Das jeweilige Char-Byte kopierst du einfach an die Stelle im String, an die es gehört, der String besteht ja aus einer Anzahl von Char.
 
Hallo nochmal,

kann eigentlich WinCC 7.x dann Char darstellen? WinCC Flex kanns ja auch.

Dann würd ich mir evtl. die neue Version 7 besorgen. WinCC 6.0 SP4 ist für Windows XP SP3 eh nicht freigegeben!

Gruß
Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo nochmal,

bin kein C Profi, aber würde es nicht mit C evtl. funktionieren, die Char in Strings zu wandeln?

Vielleicht so ähnlich?

Code:
   char mystr1[100] = "hello" ;   
   char mystr2[] = "abcdef"; 
   
   /*buchstaben anhängen: funktioniert im Beispiel nur, weil
   mystr1 genug Speicher hat. Sonst: Speicher reservieren und String
   vorher kopieren*/
   strncat(mystr1, &mystr2[2], 1);
   printf("%s", mystr1);

Aber wie bekomme ich nun die Variablen (Char) z. B. von DB1.DBB0 = "H" in dieses Skript?

Evtl. ein C-Profi unter euch?

Vielen Dank für eure Hilfe!

Gruß
Michael
 
Zurück
Oben