SanderKarl
Level-1
- Beiträge
- 10
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
ich habe einen OPC-Client in ExcelVBA geschrieben, der Daten aus einem Datenbaustein einer S7 315-2DP liest und Diese dann in eine Excel-Tabelle schreibt.
Da es sehr viele verschiedene Daten sind, werden die Daten in einer For-Schleife per "Set OPC_Item" aus der SPS gelesen, in den Server geschrieben und im nachfolgenden Schritt per "Tabelle1.Cells(Zeile, Spalte) = OPC_Item" in das Tabellenblatt geschrieben.
Die Schleife sieht also folgendermaßen aus (vereinfacht, aber alles wichtige ist drin):
Wenn ich Dies per Debugging Schritt für Schritt durchtippe funktioniert alles wunderbar, ebenso funktioniert es, wenn ich einen Breakpoint hinter die "Set"-Anweisung setze und es dann ausführe.
Will ich das Ganze jedoch einfach nur ausführen, werden keine Daten in die Tabelle geschrieben, als hätte die "Set"-Anweisung gar keine Daten aus der SPS gelesen.
Habe betreits eine Wartezeit per "Sleep" hinter die "Set"-Anweisung gepackt, leider ohne Erfolg. Egal, ob ich 1ms oder 5s warte, es funktioniert nur, wenn ein Breakpoint hinter dem Set gesetzt ist oder ich das Ganze händisch durchtippe.
Ich müsste recht schnell eine Lösung zu diesem Problem finden, wäre also super wenn hier jemand eine Idee hätte woran es zumindest liegen kann.
Vielen Dank schonmal im Vorraus
ich habe einen OPC-Client in ExcelVBA geschrieben, der Daten aus einem Datenbaustein einer S7 315-2DP liest und Diese dann in eine Excel-Tabelle schreibt.
Da es sehr viele verschiedene Daten sind, werden die Daten in einer For-Schleife per "Set OPC_Item" aus der SPS gelesen, in den Server geschrieben und im nachfolgenden Schritt per "Tabelle1.Cells(Zeile, Spalte) = OPC_Item" in das Tabellenblatt geschrieben.
Die Schleife sieht also folgendermaßen aus (vereinfacht, aber alles wichtige ist drin):
For i = 1 To numOfData
Set OPC_Item = OPC_Items.AddItem("S7-Verbindung.DB11.DBDI" & byteAdress, Line) ' Daten aus SPS in Server holen
Tabelle1.Cells(Line, Column) = OPC_Item ' Daten aus Server in Tabellenblatt 1 schreiben
byteAdress = byteAdress + SIZEofDINT ' Adresse der nächsten DINT-Variablen
line = line + 1 ' nächste Zeile im Tabellenblatt
Tabelle1.Cells(Line, Column) = OPC_Item ' Daten aus Server in Tabellenblatt 1 schreiben
byteAdress = byteAdress + SIZEofDINT ' Adresse der nächsten DINT-Variablen
line = line + 1 ' nächste Zeile im Tabellenblatt
Next
Wenn ich Dies per Debugging Schritt für Schritt durchtippe funktioniert alles wunderbar, ebenso funktioniert es, wenn ich einen Breakpoint hinter die "Set"-Anweisung setze und es dann ausführe.
Will ich das Ganze jedoch einfach nur ausführen, werden keine Daten in die Tabelle geschrieben, als hätte die "Set"-Anweisung gar keine Daten aus der SPS gelesen.
Habe betreits eine Wartezeit per "Sleep" hinter die "Set"-Anweisung gepackt, leider ohne Erfolg. Egal, ob ich 1ms oder 5s warte, es funktioniert nur, wenn ein Breakpoint hinter dem Set gesetzt ist oder ich das Ganze händisch durchtippe.
Ich müsste recht schnell eine Lösung zu diesem Problem finden, wäre also super wenn hier jemand eine Idee hätte woran es zumindest liegen kann.
Vielen Dank schonmal im Vorraus
SanderKarl