S7-312C mit DCF77 ?

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
zusammen kann man die "geniale" :cry: Software Uhr der S7-312C irgendwie davon überzeugen (z.B. durch ein Zusatzmodul) zeitgenau zu gehen (DCF77 synchronisiert) auch dann wenn einmal Stromausfall war ?
Da die Uhrzeit ja nach einem Stromausfall nicht mehr richtig eingestellt ist machen Zeitsteuerung auf dieser CPU ja garkeinen Sinn....

Danke !
 
Hallo
... die einfachste Möglichkeit, (die 'ewig' provisorisch benutzt nie versagte) war mit Hilfe einer CControll (oder Ähnlichem) fortlaufend/ mehrmals täglich zu synchronisieren. Billigere Lösung und einfacher bei nur einer CPU ist ein (früher) bei eBay angebotenes DCF77 Modul für S5. Das funktionierte auch mit allen S7 kostete 20€ + Antenne, erforderte aber Softwareanpassung in der CPU während die CC nur einen IN-Pin belegt.

Ansonsten gibt es mir bekannte zwei Projekte die DCF77 'Antenne' direkt an der 31x-C auszuwerten. Leider stürzt es bei den Softwareuhren ( probiert: IFM312) dann regelmässig ab. Siemens brachte dazu jedoch mal ein Firmware'update'. Jedoch eingestampft liegt die die Adressen des SoftDownloads nicht mehr vor . Ehemals waren diese Seiten beim WDR-CC verlinkt, ob heute noch ???

Zur Zeit integrierte ich ich die Atomuhr in den Bus. Bei Hardwareuhren funktioniert das 100%-ig. Ob mit der Softuhr wage ich zu bezweifeln, wenn auch auch oft eine CPU221 beschwerdefrei mit im Bus läuft. Ist jedoch fraglich ob es dort mit eingesetztem Uhrenmodul sich noch um eine Softuhr handelt, denke das ist nicht ganz so. Die anderen 'uhrenlosen' CPUs sind alle ausgetauscht da deses ewige umstellen (und riesige Zeitabweichungen) irgendwie nichts brachten.

Berthold
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Logout,

danke für die Infos !

Die Variante mit der CControl o. ä. gefällt mir. Nur als absolutem Anfänger im Bereich SPS stellt sich mir die Frage wie das dann funktioniert ?
Ich habe mal irgendwo im Forum was von einem DCF Modul von Siemens gelesen was im FB77 läuft und man einen Weckalarm nutz. ( http://www.sps-forum.de/phpBB2/viewtopic.php?t=2786 )
Wenn ich Dich richtig verstanden habe muß ich nur eine DCF Zeitsignal an einen Eingang legen und mir dann eine Funktion bauen die dieses dekodiert, richtig ?

Besten Dank,
Uwe
 
Hallo, erst jetzt
Hatte am Router gedreht, die falsche IP Range eingetippt womit es keine Verbindung mehr gab.


>>Signal an Eingang legen .... (CControl)

versuchte ich auch, allerdings mit 'Zwischenprotokoll'. Gab die codierte Zeit alle 15Min seriell an einen Eingang der CPU. Eigentlich bedarf es eines 'Handshakes' - sprich zwei Leitungen (Takt). Kurzum: I2C. Geht aber auch, wenns nur langsam genug ist, mit einer Leitung:
Prinzipiell: 'Einmal klopfen' ==> erste Viertelstunde des Tages ...
'Zweimal ....' ===> zweite ....
Zum synchronisieren/ die interne Uhr nachstellen, reichts allemal.


Es über RS485 zu übertragen, was besser ist, setzt genügend Schnitstellen an der CPU (die oft fehlen) vorraus.

Um direkt über MPI (was geht) den kompletten Wert einzulesen ist die Aufdröselung des Protokolls vonnöten. Denke das ist nichts für mal eben (???). Die CC ist dazu zudem fürchterlich ungeeignet. Der Vogel hat nur max. 9600Baud - bremst alles aus.
Du gäbest in diesem Fall die Zeit auf Anfrage der CPU 'MPI-codiert' von der mit 8MHZ (über)getakteten (Faktor 2 ==> 19200Bd) CC an die CPU. Wobei die codierung in der CC stattfand. Das bekommt man ungefähr hin, (schreibst dort in ASCII zusammen was die CPU frist, weil binär sendet der Vogel nicht richtig ...) Das Protokoll ist in libnoDave beschrieben, bedarf aber viel Insiderwissens.

Die Zeit direkt aus dem DCF77 Signal auszulesen (was dann mit jeder 'Küchenatomuhr' für 3,95€ ginge), bekamm ich teilweise mit der S7-221 gebacken. Das verstärkte Antennensignal kann demnach direkt an einem/ zwei (schnellen) Zählern eingelesen werden. Denke nur das dabei 90% der CPU Leistung verzehrt wird. Da zudem massig fehlende Zeichen 'auftauchten' bliebs liegen. Gut möglich das es dabei mit den Alarmeingängen der 300 besser aussieht.

Anfangen würde ich daher mit Ausgabe fester intervalle. Einfach alle 1/5Minuten mit einem Impuls der Atomuhr in der CPU einen Timer starten. Den dann zählen/ vergleichen. Damit stimmt die Uhrzeit/ Datum zwar nicht zwingend genau, aber 5Minuten sind fünf Minuten.
Ich synchronisierte so lange nur eimal täglich um Punkt 24.00Uhr (Atomzeit) alle Uhren - das brachte schon viel.
Dazu nahm ich die M-Unit der CC_I. Kostete um 50DM. Die Antenne dazu 25DM. Günstigers gabs damals nichts. In der CC liegt die Zeit schonmal im 'Klartext' (ASCII), von daher ganz anschaulich, fertig vor.

Werde das 'S5' Modul mal vorkramen, wenns noch da ist schreibe ich die Type hier auf. Vielleicht finde ich das Programm auch noch. War von eBay ('Eigenbau') wird z.zt. aber offenbar nicht angeboten.

Berthold
 
Hallo logout,

danke erneut für die Antwort. Mr ist da noch eine weiter Idee gekommen, man könnte ja z.B. das Conrad DCF Modul für ca. 10€ mit einem kleinen 8051 Mikrokontroller und Pegelanpassung versehen. Dieser dekodiert munter das DCF Signal (Source Code findet man im Netz) und schickt auf 1, 2, oder von mir aus 9 Leitungen (8+Clk) die Daten auf Eingange als Byte Werte. Zuerst die Sekunden Einer, Zehner, usw.
Die 14-15 Byte sollten die CPU nicht sonderlich belasten.
Bei meiner 312 mit der ungebufferten Software Uhr wählt man dann halt kleine Update Intervalle von 5-15 Min während man bei Hardware Uhren dann nur noch einmal am Tag updated.

Grüße !
 
Hallo Uwe
wenn Du im 8051 die DCFytes codieren kannst dann sollte der Rest über RS485 (MPI) vielleicht nicht mehr die ganz grosse Hürde sein (?)

Ich bekam es so (per normaer Funkuhr aus der Luft gefischt) bisjetzt auf dem PC hin in eine 226-er zu übertragen. Den Weg dazu wählte ich folgendermasse:
Der Einfacheit halber die DCFytes zuerst im Variablenspeicher (DB) abgelegt/ gesammelt 'holt' sich die Uhr dann dort die Zeit. Kriterium des Vergleiches sind abweichende Minuten. Wenn also die DCF Minute nicht mit der CPU Minute identisch ist verzweigts die CPU in die 'Verstellfunktion' und 'synchronisiert' die Uhr neu. Ob das günstig ist will ich nicht behaupten, war aber ein Anfang.

Bei der 200-er werden dazu nur wenige Worte mit den neuen Werten verändert ansonsten bleibt das Telegramm 'Konstant'.
Bei der 300-er kommt mindestens die Initialisierung notwendigen MPI-Adapters hinzu .... Eine ebenfalls feststehende Bitfolge, die damit fest im µC zu verankern wäre. Solange jedenfalls wie immer derselbe Adapter verwendet wird ...

Um das evtl. rauszufummeln hilft Dir sicherlich 'zottels' libNoDave enorm weiter. Du kannst es damit auf dem PC komplett 'simulieren'. Da bin ich auch bei - muss zuerst aber ein Prinzip ertüfteln mehrere CPUs am Bus und verschiedenen orten durchzustellen. Wird noch ewig dauern, die reine Uhrzeit-Daten-Übertragung funktioniert allerdings schonmal ()in richtiger Reihenfolge ...)
Berthold
 
Kaum hat man Urlaub, da vergisst man doch glatt im Forum zu lesen :->

@ andre
Danke für die Links, scheinen recht interessant zu sein zu sein, werde mich mal durcharbeiten....

@ Berthold
ich habe noch einige Problem mit dem Verständnis über den Aufbau einer SPS ganz zu schweigen von der Programmierung :)
Ich denke bevor ich den Umweg über eine CPU oder PC mach werde ich wohl lieber ein simbles serielles Protokoll über 2 bis 3 I/O Kanäle programmieren. Falls die MPI Schnittstelle nicht alzu kompliziert ist könnte man die ja mal versuchen.
Was ist eigentlich libNoDave ?

Grüße !
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Libnodave
http://libnodave.sf.net
ist eine freie Bibliothek zur Kommunikation mit S7 SPS. Die Quelltexte liegen bei. Sie ist für PCs gedacht. Mit etwas Nacharbeit dürfte sie (oder die nötigen Teile) sich aber auch mit C-Compilern für Mikrocontroller übersetzen lassen, wenn ein solcher für die DCF-77 Decodierung eingesetzt werden soll.
Libnodave ist allerdings für die PC-üblichen seriellen oder Ethernet-Schnittstellen gedacht.
Bei der S7-200 ist das kein Problem, der Umsetzer im PPI-Kabel wandelt im wesentlichen nur zwischen RS232 und RS422. Bei der 300/400 familie ist allerdings der MPI-Adapter erforderlich. PCs können die normalerweise für MPI verwendeten Baudraten sowieso nicht.

Es wäre kein großes Problem, auch das Profibus-Protokoll der MPI Schnittstelle auf einem uC zu implementieren, solange die Baudrate niedrig ist. 187,5 kBaud sollte gehen. Das Problem liegt eher darin, daß der Anschluß eines solchen Selbstbaus bei Fehlern die Funktion von Profibus oder MPI-Schnittstelle beeinträchtigen könnte. MPI-Adapter und Profibus-Geräte verwenden im Allgemeinen spezielle ICs (ASICs), die das Profibus-Protokoll in Hardware implementieren.
Um eine Uhr als einzigen Teilnehmer an die MPI-Schnittstelle zu hängen, dürfte es aber gehen.
 
Zurück
Oben