none
Auf OPC Server zgreifen RRS feed

  • Frage

  • Hallo, kann mir jemand sagen, wie ich auf Variablen eines OPC Servers zugreifen kann? Würde gerne auf diesem Variablen lesen und beschreiben.
    Mittwoch, 22. September 2010 20:03

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.
    Mittwoch, 22. September 2010 20:45

  • <Bensen83> schrieb

    Hallo, kann mir jemand sagen, wie ich auf Variablen eines OPC Servers zugreifen kann? Würde gerne auf diesem Variablen lesen und beschreiben.

    Es gibt Hersteller für Cliens in CSharp, auch bei www.codeproject.com findet man was...

    Donnerstag, 23. September 2010 00:08
  • 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
    Donnerstag, 23. September 2010 08:17

  • <Frank Dzaebel [MVP]> schrieb

    ja, da wird schon viel für "OPC Server" beschrieben - sehe ich genauso.
    Wenn Du Dein Zielgerät schon kennst,

    OPC ist eigentlich ein Standard und sollte mit JEDEM OPC-Gerät funktionieren!

    Donnerstag, 23. September 2010 09:31
  • OPC ist eigentlich ein Standard und sollte mit JEDEM OPC-Gerät funktionieren

    Hallo u

    dies 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).
    Donnerstag, 23. September 2010 09:35

  • <Thomas Scheidegger Dev> schrieb

    dies 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!

    Donnerstag, 23. September 2010 09:48
  • 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.
    Donnerstag, 23. September 2010 10:07

  • <Thomas Scheidegger Dev> schrieb

    ja, 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_Foundation

    Dann muss man eben den passsenden Client haben!

    Donnerstag, 23. September 2010 10:17

  • "umocomp1" <Frank_Schneider@nospam.com> schrieb

    Es gibt Hersteller für Clients in CSharp

    http://www.softing.com/home/

    mal nachfragen

    Freitag, 24. September 2010 10:22
  • 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?
    Freitag, 24. September 2010 15:07
  • 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.

    Freitag, 24. September 2010 15:55
  • OK, das sagt mir jetzt alles recht wenig. Also ich habe ne S7-317-2DP. Wenn ich derekt auf alle Daten der SPS zugreifen könnte, wäre das schon geil. Ansonsten haben wir wincc Flexible 2007 in Betrieb, welches als OPC Server agiert.
    Freitag, 24. September 2010 16:03
  • 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.
    Freitag, 24. September 2010 16:42