# SPS-Excel-Verbindung OPC Server, über VBA



## Bro (8 Februar 2011)

Hallo sehr geehrtes SPS-Forum,
Ich benötige dringend Hilfe. Ich schreibe momentan eine Facharbeit über eine SPS-Excel-Verbindung und bekomme es nicht hin. 
*Ich bin unerfahren in dieser Thematik*.

Benutzt wird eine CPU313C  mit CP343-1, diese ist angeschlossen mit einem PC, wo SimaticNet Softnet S7 Lean und Excel2003 installiert ist.

Nun möchte ich in die
Zelle „A1“=CHAR0 ; Zelle „A2“=CHAR1; usw. schreiben.

Nun habe ich 3.Probleme.

1.
Mit dem eingegebenen VBA-Code bekomme ich keine Werte in meine Zelle geschrieben und schlimmer es gibt ein Fehler: 


> LAUFZEITFEHLER –„1073479673 (c0040007)“
> Die Methode „AddItem“ für das Objekt „OPCItem“ ist fehlgeschlagen


Ich habe den Siemens OPC DAAuutomation 2.0 zugewiesen und über OPC Data Control funktioniert es, über ein Label das CHAR einzulesen und mit Caption in eine Zelle zu schreiben.

Mein VBA-Programm:



> Option Explicit
> Option Base 1
> 
> Private ServerObj As OPCServer
> ...


2. Zu jedem CHAR Wert soll der passende Zeitstempel der SPS stehen, also in Zelle „B1“=DT0...

3. Ich möchte in Excel ein 
Button haben, der mir ein BOOL Signal zur SPS schickt.


*Danke für eure Hilfe im Voraus!!!*

  Mit freundlichen Grüßen
  Bro


----------



## Dr. OPC (16 Februar 2011)

Der Fehler sagt ja schon was das Problem ist, das Item konnte nicht hinzugefügt werden. Und der FehlerCode "c0040007" bedeutet "OPC_E_UNKNOWNITEMID" und das bedeutet im Klartext "The item ID is not defined in the server address space or no longer exists in the server address space."Und genau deshalb konnte sie auch nicht hinzugefügt werden.
*
Auf Deutsch heist das die Syntax der angegebenen ItemID ist falsch.

*Und das liegt vermutlich daran das Du sie falsch abgeschrieben hast. Es muss ein "," (Komma) und kein "." (Punkt) zwischen <Baustein>,<Typ>
Denn wie auch im Handbuch beschrieben ist die Item ID folgendermaßen aufgebaut:
<ProtokollPräfix>:<[Verbindung]><Baustein>,<Typ><Offset>[,<Anzahl>]

Davon abgesehen ist der nachfolgende Code mit Abstand das langsamste was man programmieren kann (einzelnd Items in eine aktive Gruppe hinzufügen und dann einzelnd nacheinander  auf diese Items schreiben, es bedeutet auch die maximale Kommunikationsbelastung für die S7. Bei jedem Click eine neue Verbindung zum Server ohne die alte abzubauen geschweige denn die Items und Gruppe zu löschen. Für eine Facharbeit mag das gehen, aber alle anderen, die das vielleicht hier lesen: *
NICHT DEN OBIDEN CODE VERWENDEN.* Es gibt hier im Forum deutlich bessere Beispiele.


----------

