Uhrzeit von Vis auf S7

klauserl

Level-2
Beiträge
246
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute!:confused:
Folgendes Problem!
Habe ein Netzwerk (Profibus DP) mit mehreren S7 300/400 und Visualisierungs PCs (Intouch).
Problem:!? Ein PC soll als Leitrechner die Uhrzeit für die gesamte Anlage vorgeben.
Hat jemand von euch schon mal so war realisiert????
Danke für Eure Hilfe.
 
Meines Wissens nach gibt es in libnodave eine Funktion zum Lesen und Setzen der Uhrzeit auf der S7. In ACCON-AGLink V4 ist dies ebenfalls enthalten. Mit so einer Bibliothek liese sich somit ein Programm realisieren, das der Reihe nach die Uhrzeit auf allen SPSen an die des PCs anpasst. Ob Intouch das direkt kann, weiss ich nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
SFC0, Set_CLK setzt Uhrzeit und Datum der CPU. Die VISU müßte an allen Steuerungen die Uhrzeit in einen DB schreiben und dann einen Auftrag absetzen, mit denen die SPS ihre Uhrzeit stellen. Allerdings werden Buslaufzeiten etc. als Fehlerzeiten mit in die Genauigkeit der Synchronisation der Uhren eingehen.
 
Guten Morgen,

auch wenn der Thread schon sehr alt ist habe ich eine Frage dazu. Ich bin im Moment in den Weiten des DotNet vertieft und bin am Testen von AGLink und Libnodave. Jetzt ist mir aufgefallen, dass es bei beidne unter DotNet keine standardisierte Möglichkeit gibt die Uhrzeit aus einer S7 zu lesen. In Excel unter vba zum Beispiel gibt es die Option. Warum ist das so?

Gruß
Kobold
 
Guten Morgen,

auch wenn der Thread schon sehr alt ist habe ich eine Frage dazu. Ich bin im Moment in den Weiten des DotNet vertieft und bin am Testen von AGLink und Libnodave. Jetzt ist mir aufgefallen, dass es bei beidne unter DotNet keine standardisierte Möglichkeit gibt die Uhrzeit aus einer S7 zu lesen. In Excel unter vba zum Beispiel gibt es die Option. Warum ist das so?

Gruß
Kobold
Das liegt einfach daran, dass die Deklaration der Siemens-Typen in .net und die Implementierung der Funktionen mehr oder weniger zeitaufwändig ist. Und deshalb werden nicht alle Funktionen auf einmal implementiert.
Bei AGLink ist der .net-Wrapper derzeit in der Überarbeitung wird Ende nächster Woche fertiggestellt. Dann ist auch die Funktion zum Lesen und Schreiben der SPS-Uhrzeit enthalten. Wenn das zu spät ist, einfach den Wrapper selbst um die entsprechende Funktion erweitern, in AGLink ist sie ja enthalten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Kobold: Ich antworte öffentlich auf deine Privatnachricht, dann haben alle was davon.
Bei Libnodave ist es das gleiche: Aus Zeitmangel sind nicht alle Funktionen in der .NET wrapper dll implementiert (und wahrscheinlich auch nicht in allen anderen Sprachschnittstellen. Bei .NET kommt hinzu, daß ich nicht allzu viel Zeit hineinstecken wollte, da ich immer noch darauf wartete, daß ein .NET Guru zu der Übergabe von Zeigern Stellung nähme...
Da der Quellcode offenliegt, kannst du dir selbst helfen.
Problem: die Zeit-Daten aus .NET an den "unmanaged code" von Libnodave zu übergeben.
Mögliche Lösungen:
- Wenn du nur die PC-Zeit zur SPS schicken willst, kannst du daveSetPlcTimeToSystime verwenden. Dazu ergänzt du einfach eine Methode SetPlcTimeToSystime in daveConnection.
- Wenn du beliebige Zeitdaten zur SPS schicken willst, mußt du daveSetPlcTime verwenden. Dazu mußt du die Zeitdaten BCD codiert und in der Richtigen Reihenfoge in ein byte[]-Array packen und dieses übergeben ähnlich wie bei writeBytes.
 
Das mit der Uhrzeit setzen habe ich hinbekommen. War ja auch ganz einfach. Dank an Zottel. Jetzt möchte ich die Uhrzeit aus der SPS auslesen. Mit AGLink funktioniert es jetzt auch schon soweit. Bei Libnodave habe ich es ähnlich versucht, wie mit der Uhrzeit setzen(writeBytes). Ich habe den Aufruf readBytes umgeschrieben und es auf daveReadPLCTime umgeschrieben. Allerdings bekomme ich in jedes Byte eine 0 zurückgeschrieben.
Gruß Kobold
 
Zuletzt bearbeitet:
Bei uns ist ein NTP (Timeserver) im Netz, von dem alle SPSen und PC's ihre Zeit synchronisieren können. Mit Ausnahme einer Vipa-SPS funktioniert das gut (alles über Ethernet) - von 300er bis 400er keine Probleme - man muss nur beachten, dass üblicherweise die UTC-Zeit im AG gehalten wird (keine Sommerzeit). Den Timeserver kann man in der Hardwarekonfiguration der CP angeben.

Diese Lösung ist natürlich für den Betrieb über das Ethernet (nicht Profibus) gedacht.
 
Zurück
Oben