Fragensteller
Auf OPC Server zgreifen

Frage
Alle Antworten
-
Hallo B
was meinst du mit "OPC Server"?
Klassisch wohl:
http://en.wikipedia.org/wiki/OLE_for_process_control
und zuständig ist
http://www.opcfoundation.org
wo es inzwischen auch APIs/Assemblies für die Einbindung in .NET Clients gibt.
Aber du musst wohl zuerst auch abklären, welche OPC-Variante (UA/DA uva) jener Server unterstützt.
Des weiteren gibt es diverse Dritthersteller, die 'Entwickler-Toolkits' (kommerz.) anbieten. -
-
Hallo B.,
> codeproject
ja, da wird schon viel für "OPC Server" beschrieben - sehe ich genauso.
Wenn Du Dein Zielgerät schon kennst, gibt es z.T. auch schon speziell getrimmte OpenSource-Projekte ... :
[S7.Net]
http://s7net.codeplex.com/
ciao Frank -
-
<Thomas Scheidegger Dev> schriebdies stimmt so IMHO (leider) nicht, OPC ist eher eine 'Sammlung' von verschiedenen APIs/Interfaces, wo auch ggf neue dazukommen (gerade für im .NET-Umfeld).
Clientseitig, sollte das nur konfiguriert werden.
Es gibt fertige Software, die für alle OPC-Geräte genutzt werden kann wie z.b. Genesis64/ http://www.iconics.com oder http://www.visiwin.de/software/ da wird nichts mehr programmiert nur noch konfiguriert und sogar unter .Net!
-
Es gibt fertige Software, die für alle OPC-Geräte genutzt werden kann wie z.b. Genesis64/ http://www.iconics.com oder http://www.visiwin.de/software/ da wird nichts mehr programmiert nur noch konfiguriert und sogar unter .Net!
ja, für solche 'fertige' SW stimmt dies durchaus, aber _nicht_ für einen von Grund auf selber geschriebenen OPC Client. Denn vor wenigen Jahren wurde nur zB eine ganz neue Architektur (UA) eingeführt:
http://en.wikipedia.org/wiki/OPC_Unified_Architecture
und schon bei der alten Norm gab es ja zahlreiche 'Standards' (DA, AE...):
http://en.wikipedia.org/wiki/OPC_Foundation
ältere Server bieten wohl heute noch zB nur DA. -
<Thomas Scheidegger Dev> schriebja, für solche 'fertige' SW stimmt dies durchaus, aber nicht für einen von Grund auf selber geschriebenen OPC Client.
Das ist keine Begründung!
Denn vor wenigen Jahren wurde nur zB eine ganz neue Architektur (UA) eingeführt:
Was hat das damit zu tun?
OPC ist eien Art AktiveX und OPC-UA geht übers Ethernet und ist damit auch für andere Betriebssystem als Windows zu gebrauchen, das wars aber schon.
Ein Client sollte NUR konfiguriert werden!und schon bei der alten Norm gab es ja zahlreiche 'Standards' (DA, AE...):
http://en.wikipedia.org/wiki/OPC_FoundationDann muss man eben den passsenden Client haben!
-
Hi Leute habe nach bißchen stöbren das hier gefunden:
// create the plc-object S7.PLC plc = new PLC(CPU_Type.S7300, "192.168.1.130", 0, 2); // open the plc S7300-type ErrorCode errCode = plc.Open(); // set bit 0 in marker-byte 20 plc.Write("M20.0", 1); // read the word-value in DataBlock 100 Word-Position 40 UInt16 b1 = (UInt16)plc.Read("DB100.DBW40"); // close the plc plc.Close(); // reads a struct from DataBlock 1 testStruct test = (testStruct)plc.ReadStruct(typeof(testStruct), 1); // change one item test.varDWord += 1; // and writes it to DB2 S7.ErrorCode code = plc.WriteStruct(test, 2);
Aber es funktioniert so icht, der Compiler erkennt die Objekte nicht, muss ich für sowas noch ne using Datei hinzufügen oder sowas? -
B,
bist du sicher dass du eine _SPS_ (Hardware!) vom Typ S7 300/400 wie:
http://de.wikipedia.org/wiki/Simatic
hast?
Wenn nicht, dann kannst du diesen Code absolut vergessen, hat dann mit generischem 'OPC' nichts mehr zu tun.
Wie ich schon sagte, vergiss die C#/.NET Seite vorerst, du musst zuerst abklären, welche OPC-Variante (UA/DA uva) dein OPC-Server unterstützt. Dann musst du das entsprechende 'SDK' von der OPC-Foundation beziehen (zT kostenpflichtig/Mitgliedschaft), oder ein kompatibles Client-Toolkit eines Drittherstellers kaufen.
Dann musst du die OPC-Anbindung deines Servers studieren (Handbücher vom Hersteller), und dich in die OPC-Interfaces einarbeiten. Erst dann kommt langsam C# ins Spiel. -
B,
ich vermute denn Code hast du doch von
http://s7net.codeplex.com/
und du brauchst natürlich das ganze ZIP (S7.zip) von dort, enthält umfangreiche Visual Studio Projekte.
Aber wenn ich die Klassen im ZIP ansehe, dann hat dies mit OPC nicht das geringste zu tun, sondern es geht IMHO um einen Hack mit Low-Level Direktzugriff via TCP (siehe: PLC.cs).
Wie man korrekt einen OPC-Client beginnt, habe ich zuvor genug beschrieben, hat mit C#/.NET erst sehr sekundär zu tun, daher Ende hier.