SPS-Excel-Verbindung OPC Server, über VBA

Bro

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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
Private WithEvents GroupObj As OPCGroup
Private GroupColl As OPCGroups
Private ItemObj1 As OPCItem
Private ItemObj2 As OPCItem
Private ItemObj3 As OPCItem
Private ItemObj4 As OPCItem
Private ItemColl As OPCItems
'--------------------------------------------------------------------
Private Sub CommandButton1_Click()

Set ServerObj = New OPCServer
ServerObj.Connect ("OPC.SimaticNet")
Set GroupColl = ServerObj.OPCGroups
Set GroupObj = GroupColl.Add("MyGroup")
GroupObj.IsSubscribed = True
GroupObj.UpdateRate = CLng(Cells(5, 5))

Set ItemColl = GroupObj.OPCItems

Set ItemObj1 = ItemColl.AddItem("S7:[S7-Verbindung_1]DB2.CHAR0", 1)
ItemObj1.Write CLng(Cells(1, 1))
Set ItemObj2 = ItemColl.AddItem("S7:[S7-Verbindung_1]DB2.CHAR1", 1)
ItemObj1.Write CLng(Cells(1, 2))
Set ItemObj3 = ItemColl.AddItem("S7:[S7-Verbindung_1]DB1.DT0", 2)
ItemObj1.Write CLng(Cells(2, 1))
Set ItemObj4 = ItemColl.AddItem("S7:[S7-Verbindung_1]DB1.DT0", 2)
ItemObj1.Write CLng(Cells(2, 2))

End Sub
'--------------------------------------------------------------------
Private Sub CommandButton2_Click()
'Das soll der Button sein der in der SPS etwas Reseten soll. Ein einfaches BOOL Signal.
End Sub
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
 
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.
 
Zurück
Oben