# OPC in DB schreiben



## Adzalg (27 März 2008)

Hallo,

ich bin ganz neu im Forum aber auch ganz frisch im dem Thema. Hier nun meine Frage.

Ich habe mir ein kleines Programm in C# geschrieben das per OPC auf eine SPS zugreifen soll. Das läuft auch ganz gut. Im Augenblick Teste ich das ganze an der WinLC RTX. Ich kann sowohl lesen auch als schreiben. Jedoch beim schreiben in den DB muss bereits ein Typ und ein Anfangswert definiert sein. Ohne diese Vordefinition klappt es nicht. 

Gibt es eine Möglichkeit dies über den OPC zu machen. Also die Definition eines Anfangswertes und des Types? 



Vielleicht kann mir jemand einen Tipp geben in welche richtung ich mich bewegen sollte.


Vielen Dank
Adzalg


----------



## pvbrowser (28 März 2008)

Verwende in der Datenbank doch einfach Texte.
Damit kannst Du ja auch Integer oder Float Werte darstellen.


----------



## Adzalg (28 März 2008)

Danke für die Antwort! Aber gibt es nicht eine andere Lösung...?


----------



## marcengbarth (28 März 2008)

Geht es um die Datenbank oder um den Datenbaustein?


----------



## Adzalg (28 März 2008)

Es geht um den Datenbaustein. In diesem möchte ich Variablen ablegen die dann weiter von der SPS verarbeitet werden.

Wie ich schon geschrieben habe ist es kein Problem bereits vordefiniert zu beschreiben. Aber direkt über den OPC welche zu erzeugen... Wie macht man das?


----------



## Rainer Hönle (28 März 2008)

Welchen OPC-Server verwendest Du? Und welche OPC-Toolbox? Dort müsste das Anlegen von Gruppen und Items zur Laufzeit doch dokumentiert sein.


----------



## Adzalg (28 März 2008)

Ich nutze den Siemens NET OPC-Server Version 3.6 und die "Siemens OPC DAAutomation"-Bibliothek. Leider konnte ich nichts zu diesem Thema finden.


----------



## afk (29 März 2008)

Adzalg schrieb:


> Ich nutze den Siemens NET OPC-Server Version 3.6 und die "Siemens OPC DAAutomation"-Bibliothek. Leider konnte ich nichts zu diesem Thema finden.


Ich kenne zwar nur eine ältere Version vom SimaticNet OPC-Server, aber der konnte dynamisch adressieren und war auch nicht von der Typdefinition im DB abhängig. Wichtig war nur, das der DB existiert und ausreichend lang ist.

Kann es sein, daß Dein Problem darin besteht, daß Du die Struktur des DBs definieren mußt (Datentyp und Anfangswert), damit der DB überhaupt existiert ?

Oder übernimmst Du die Symbolik aus Deinem SPS-Programm in den OPC-Server, um über die Symbolik adressieren zu können ?

Im zweiten Fall könnte Dir die direkte Adressierung im OPC-Server weiter helfen: _S7:[Verbindung]DBx,By_ z.B. für Datenbyte y in Datenbaustein x (wenn ich mich richtig erinnere, sonst bitte ich um Richtigstellung).


Gruß Axel


----------



## Adzalg (29 März 2008)

Hallo Alex,



> Kann es sein, daß Dein Problem darin besteht, daß Du die Struktur des DBs definieren mußt (Datentyp und Anfangswert), damit der DB überhaupt existiert ?


Ja, das ist mein Problem und da komme ich nicht weiter. Gibt es eine Möglichkeit? 



> Im zweiten Fall könnte Dir die direkte Adressierung im OPC-Server weiter helfen: _S7:[Verbindung]DBx,By_ z.B. für Datenbyte y in Datenbaustein x (wenn ich mich richtig erinnere, sonst bitte ich um Richtigstellung).


Genau so mache ich es...! 



> Wichtig war nur, das der DB existiert und ausreichend lang ist.


Wie bekomme ich das hin? Mit einem Array kann ich das nicht lösen da ich unterschiedlichen Datentypen verwenden werde. Teilweise auch Array's.


----------



## afk (29 März 2008)

Adzalg schrieb:


> Wie bekomme ich das hin? Mit einem Array kann ich das nicht lösen da ich unterschiedlichen Datentypen verwenden werde. Teilweise auch Array's.


Dem OPC-Server im SimaticNET ist es meines Wissens nach egal, was für Datentypen im DB definiert sind, wenn Du so adressierst, hauptsache er ist da und lang genug. Im SPS-Programm kannst Du AFAIK (bin kein SPS-Programmierer) auch unabhängig vom definierten Typ drauf zugreifen, solange Du nicht unbedingt per Symbolik adressieren willst. Du kannst also einfach mit einem Array of Bytes einen ausreichend großen DB erzeigen, und dann beliebig mit direkter Adressierung aus dem OPC-Server und dem SPS-Programm drauf zugreifen. Es fehlt dann halt eine Struktur im DB und die Symbolik, Du mußt also die Struktur der Daten dann anders dokumentieren, um den Überblick zu behalten.


Gruß Axel


----------



## Adzalg (29 März 2008)

OK, vielen dank. Werde ich ausprobieren.


----------

