Simatic Net V7.1.1 - OPC Server - Syntax

Rosenberger

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

Ich habe gerade ein kleines Problem mit der Variablensyntax.
Also ich lese mittels Simatic Net OPC Server Variablen aus einer S5. Dies funktioniert bei Bool und Word einwandfrei.
Der Dateityp Byte möchte allerdings nicht so wie ich es möchte. Soweit ich es Verstanden habe teilt ein Byte ein Wort in links und rechts (bzw. 0 und 1) ein.
Die Syntax beim INAT Server ist z.B. für den DB 61, Wort 2 -> (links, 0) DB61,DL2 bzw. (rechts, 1) DB61,DR2
Kann mir jemand auf die Sprünge helfen wie es sich mit der Syntax bei Siemens verhält?

Hier einmal die funktionierende Syntax.

TagType;Level;ShortName;RTName;DataType;AccessRights;102;103
L;1;Verbindung:ZMS1_Bild:Zuweisung_,X-Ray_Name:,X-Ray_Belegung_1;SR:[ZMS 1 FETCH]DB61,X81.15;B;R;0;0 \\BOOL
L;1;Verbindung:ZMS1_Bild:Zuweisung_x-Ray_Name:Zähler_x-Ray;SR:[ZMS 1 FETCH]DB61,W70;12;R;0;0 \\WORD
L;1;Verbindung:ZMS1_Bild:Ausdruck_mit_Rücksetzen_1_Name:1_Stillstand_DW_11;SR:[ZMS 1 FETCH]DB15,D11;3;R;0;0 \\DINT


MfG

Andreas

Edit: Ich sollte noch erwähnen, dass ich die Variablen mittels .csv Datei erstelle und dann mit der Hilfe des Symboldatei-Konfigurators in den OPC-Server einfüge.
 
Zuletzt bearbeitet:
Hallo,

ich steh etwas unter Zeitdruck, bin deswegen für jede noch so kleine Anregung offen.
Kann ich dies evtl. lösen indem ich das komplete Wort auslese und dies dann in WinCC flexible 2008 "teile"?

MfG

Andreas
 
Zuletzt bearbeitet:
Hallo,

kann mir jemand die Schiebe und Maskiere Funktion in WinCC Flexible 2008 erklären. Bekomme es gerade nicht gebacken :confused:.
Wie stelle ich aus einem Word die ersten 8 Bit getrennt von den letzten 8 Bit dar?

Vielen Dank schon mal im Voraus!

Andreas
 
Hast du schonmal die Adressangabe B also ",B0" für Byte 0 versucht? Das ist beim Simatic Net OPC Server normalerweise die Syntax für Bytes. Ich weiß aber nicht ob es da bei einer S5 irgendwelche Einschränkungen beim Fetch/Write bzw. Send/Receive gibt. Aber vielleicht 'popelt' dir der OPC Server die Bytes automatisch aus den Wörtern.

WinCCflexible hat auch einen S5 Treiber on Board. Über AS511 kannst du direkt aus WinCCflexible mit einer S5 Daten austauschen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas_v2.1,

Danke für die Antwort. Sobald mit der Adressangabe Byte gearbeitet wird, kommt die Rückmeldung vom OPC Server, dass dieser Itemname nicht im Adressraum vorhanden ist :?.

Die Daten müssen über Ethernet abgefragt werden, da es sich um eine "antike" Maschine handelt, die eine ganze Halle belegt, also von mehrern S5en gesteuert wird. Das WinCC 4.xx Programm aus dem die Variablen mittels Rückdokumentation ausgelsesen wurden gibt die Itemdefinition "0 in Word DBx,DWy" bzw, "1 in Word DBx,DWy" aus.

MfG,

Andreas
 
Hallo,

ich muss das Wort ja nicht unbedingt in der Symboltabelle schon in Bytes aufteilen, es würde mir auch schon helfen wenn mir jemand sagen kann ob das mit WinCC flexible prinzipiell möglich ist.

MfG

Andreas
 
Hallo,

ich habe das Problem jetzt mit Schieben und Maskieren gelöst, dann bekomm ich halt ca. 300 variablen mehr. Naja fällt bei knapp 2500 Stück auch nicht mehr ins Gewicht.

Wenn trotzdem noch jemandem etwas dazu einfällt. Bitte trotzdem noch Antworten.

MfG

Andreas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es scheint etwas Verwirrung zu geben was die Adressierung betrifft. Beim SR-Protokoll gibt es wortweise und byteweise Adressierung, und das hängt vom Datenbereich ab, der adressiert werden soll. DBs werden wortweise adressiert (und um die geht es hier anscheinend)

Wenn also der Offset ein Wort ist kann man nur immer 2 Byte = 1 Wort weiter springen in der Adressierung.
Beispiel wortadressiert:
SR:[ZMS 1 FETCH]DB61,W70
SR:[ZMS 1 FETCH]DB61,W71

entspricht byteadressiert:
S7:[S7Connection1]DB61,W140
S7:[S7Connection1]DB61,W142

Wenn man wortadressiert nun aber zwei einzellne Bytes haben möchte, kann man das nicht adressieren, da man den "Offset" nicht angeben kann. Es entsteht also eine nicht adressierbare "Lücke".
SR:[ZMS 1 FETCH]DB61,B70 \\ an das zweite Byte kommt man nicht ran
SR:[ZMS 1 FETCH]DB61,B71 \\ an das zweite Byte kommt man nicht ran

byteadressiert geht das ab sehr wohl:
S7:[S7Connection1]DB61,B140
S7:[S7Connection1]DB61,B141
S7:[S7Connection1]DB61,B142
S7:[S7Connection1]DB61,B143

Den einzigen Trick den man nun anwenden kann, ist ein Array-of-Byte mit 2 Elementen an die wortadressierte Anfangsadresse zu legen (denn das entspricht "zufälligerweise" der Länge von einem Wort). Somit wäre das "linke" und "rechte" Byte im Wort entsprechend im Array das erste bzw. das zweite Element.
SR:[ZMS 1 FETCH]DB61,B70,2
SR:[ZMS 1 FETCH]DB61,B71,2

Nun muss der Client allerdings mit einem Array klarkommen und sich das Element rauslösen das er benötigt (also ähnlich wie das Schieben und Maskieren bei WinCC). Es gibt allerdings auch noch die Möglichkeit Array-Elemente "automatisch" von der Symboldatei auflösen zu lassen "[x]"-Notation.
 
Zurück
Oben