WinCC flexible SP3, INAT OPC und StirngChar -> String

Rosenberger

Level-1
Beiträge
43
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
WinCC flexible SP3, INAT OPC und StringChar -> String

Hallo ihr Wissenden,

ich stehe gerade vor einem Problem für das ich keine gute Lösung finde.

Es sollen Daten vom Format StringChar aus mehreren S7 300 bzw. 400 gelesen werden. Da WinCC flexible nur 8 Verbindungen unterstützt, werden weiter Daten mittels OPC ausgelesen. In WinCC flexible kann, wenn die Daten über OPC ausgelesen werden, aber nur String als Format gewählt werden.

Da bei StringChar die Längenangabe fehlt, habe ich einfach die Startadresse um 2 Byte verschoben, dies funktioniert auch in 90% aller Fälle. Aber sobald die Startadresse auf ein "leeres" Byte fällt, fehlt dem Stringformat ja eine Längenangabe und es wird nichts ausgelesen.

Hoffe es gibt eine Lösung für das Problem.

Mit freundlichen Grüßen,

Andreas
 
Zuletzt bearbeitet:
Guten Morgen euch allen,

wenn ich mir so die Flut an Antworten ansehe, komme ich zu dem Schluss, dass kein Weg daran vorbei führt die Daten in den SPS wieder in Strings zu wandeln.

Wenn trotzdem noch jemandem etwas einfällt, freue mich über jeden Lösungsansatz.

Frohes Arbeiten!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nur mal so am Rande :
Wie wäre es, wenn du das Sammeln und Konvertieren der daten einer "Konzentrator"-SPS übergibst ?
Also eine SPS sammelt die Einzel-Info's, bereitet sie auf und übergibt sie der Visu so, wie die sie haben möchte ...

Gruß
Larry
 
Hallo Larry,

Dies ist auch eine Möglichkeit an die ich schon gedacht habe.

Eine weitere Möglichkeit die mir in den Sinn kommt, ist ein Skript zu erstellen und das CHAR Array in eine Zeichenkette zu schreiben und mit Header zu versehen. Nur leider bin ich mit meinen Programmierkenntnissen noch nicht zu einem Ergebnis gekommen.

Danke für die Antwort.

MfG,
Andreas
 
Bietet der Inat OPC Server denn keine spezielle Item-Syntax für S7-Strings an? Softing rückt die Handbücher leider nur mit Anmeldung raus.

Ansonsten würde ich überlegen auf den Simatic Net OPC Server zu wechseln. Denn wenn man bei diesem ein OPC Item mit dem SPS Datentyp String anmeldet, handelt dieser auch die Kopfinformationen korrekt ab. Dort ist als Anfangsadresse auch die wirkliche Startadresse anzugeben.
Ich kann mir aber kaum vorstellen dass der von Inat das nicht kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,

das Problem liegt ja nicht am INAT-OPC sondern an WinCC flexible, welches mir nicht die Möglichkeit bietet einen StrinChar über OPC zu lesen. Der OPC liest die Werte korrekt aus, nur WinCC flexible weigert sich daraus eine Zeichenkette zu erstellen.

MfG,

Andreas
 
Ich habe gerade in einer VM noch eine Demo von dem Inat Server getestet, funktioniert bei mir einwandfrei mit WinCC flexible.

In WinCC flexible eine Verbindung zum OPC Server angelegt. Dann eine Variable vom Datentyp String, mit dem Item-Name "db200.STRING512.10".

In der SPS liegt im DB200 ab DBB512 ein String mit 10 Zeichen Länge: STRING[10].
Wenn ich Texte von WinCC flexible eingebe wird auch die aktuelle Stringlänge korrekt gesetzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,

das ist klar, dass das funktioniert. aberich greife ja nicht auf einen string zu, sondern auf eine abfolge von char zeichen. die kann man mit der s7 verbindung wunderbar über das datenformat stringchar auslesen.

MfG
 
Ah, jetzt schnall ich was du vorhast. Aber warum legt man es nicht in der SPS als String sondern alls Char-Array an wenn es ein String sein soll?
Na wie auch immer.

In dem Handbuch was ich hier habe steht, dass man über einen entsprechenden Item-Namen einen String auch ohne Längenangabe auslesen kann (als S5-String).
Für meinen müsste das dann "db200.s514.10" sein, habs jetzt aber nicht ausprobiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe leider keinen Einfluss auf die SPS programme :(

Habe jetzt eine Lösung gefunden, die zwar etwas aufwändiger ist, aber einwandfrei funktioniert.

Ich lese jetzt die einzelnen Char aus subtrahiere 48 und tadaa das Ergebnis stimmt.

Danke für eure Hilfe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Doch, das funktioniert! Habs grad getestet.

Du musst das nur im Inat-Server vorher einstellen. Dazu das Inat OPC Konfigurationsprogramm starten, und im Menü "Server-Optionen" bei String-Format die Option auf "DBxSy.z ist immer S5-String" umstellen.
Falls du trotzdem noch echte S7-Strings hast, musst du bei diesen die Adressangabe "DBxgy.z" verwenden. Dann werden wieder die Kopfinformationen ausgewertet / gesetzt.

Bei S5-Strings ist dann Stringende entweder wenn ein Null-Zeichen im Sinne von binärer Null \0 kommt, oder die angegebene Anzahl an Zeichen erreicht wurde.
 
Zurück
Oben