# Wago 750-842 Echtzeit programmieren ???



## Anonymous (16 Juni 2005)

Hallo Programmiergenies, 

Habe mal eine Frage, wie könnte ich eine Echtzeit auf meiner Wago 750-842 realisieren? 

Ich möchte eine "Systemzeit" (so nenne ich sie jetzt einfach mal), 
mitder ich alle Ausgänge unabhänig zu bestimmten Zeiten setzen bzw. Rücksetzen lasse. 
(z.B.: Zeitgesteuerte Rolladensteuerung) 

Beim Wago IPC habe ich die Echtzeitanwendung, Beim 750-841 hat man eine gepufferte Echtzeituhr. Jedoch für eine Wago 750-842 habe ich noch keine überzeugende Möglichkeit gefunden, um eine solche Steuerung umzusetzen. Ich denke mal, daß das auch Softwaretechnisch irgendwie gehen müsste! (Watchdog Funktion o.ä) ? 

Meine einzige Idee momentan ist, eine Zeitschaltuhr auf einen Digitalen Eingang zulegen, die Stündlich einen Zähler um 1 Std. anhebt. 

Oder wisst ihr eine bessere Möglichkeit um eine Solche Steuerung zu realisieren? 

"Systemzeit" wäre wichtig, 

"Systemdatum" weniger aber nicht wäre Klasse 
wenns auch gehen würde. 

Danke schonmal im vorraus 


Mfg 

Homeboy


----------



## Zottel (16 Juni 2005)

Ich kenne diese Wago-Steuerung nicht, aber ich bin sicher, daß sie zumindest Timer hat. 
Dann kannst du einen Timer für 1 Sekunde einrichten und dafür sorgen, daß er sich selbst nach Ablauf wieder triggert (oder zwei Timer a 500ms, wenns anders nicht geht).
Nun kannst du bei jedem Ablauf eine Byte-Variable für die Sekunden um 1 erhöhen. Wenn du 60 erreichst, setzt du sie wieder auf 0 und erhöhst eine Byte-Variable für die Minuten. So kannst du daß weiter machen bis Tage. Da wird's etwas schwieriger, weil du die Tage pro Monat berücksictigen müßtest. Aber ein 7-Tage-Zähler reicht ja schon, damit die Rolladensteuerung den Sonntag kennt...


----------



## Anonymous (16 Juni 2005)

Hallo Zottel,

Erstmal Danke für die schnelle Antwort.

Habe das auch schon Probiert.
Bei der Wago gibts die Funktionen time_of_day_, date_and__time usw. Wenn einen Blinker (bezeichnung bei Wago) als Taktgeber mit 1 Sec. (am Ausgang des Blinkers) nehme und diesen Wert über einen Bool to Integer Konverter auf eine Time_of_day Funktion lege bekommen ich die Zeit angezeigt.
Jedoch brauch mein Blinker eine eigene Zeit um seinen Ausgang zu setzen. deshalb weicht meine im Wago programmierte Zeit nach einer Weile (ca.30min) immer ab.

Habe auch versucht, diesen Wert am Eingang des Blinkers (time_on, time_off) (Eingang des Blinker) auf 400ms zu verringern, reicht aber auch nicht. müsste den genauen Mittelwert finden.

Weil ich aber dem Blinktakt auf dauer nicht so vertraue, wollte ich eine wie z.b. im PC Bios haben. Der nach mehreren Jahren mal um wenige Sekunden abweicht.

Trozdem Danke für den tollen & schnellen Vorschlag.

Mfg 

Homeboy


----------



## BadTaste (17 Juni 2005)

Also ich würde (vorausgesetzt das du CoDeSys CAA verwendest ) das mal mit einem zusätzlichen Task versuchen der alle t=constant aufgerufen wird.

schöne Grüße
Michael


----------



## Zottel (17 Juni 2005)

Homeboy schrieb:
			
		

> Habe das auch schon Probiert.
> Bei der Wago gibts die Funktionen time_of_day_, date_and__time usw. Wenn einen Blinker (bezeichnung bei Wago) als Taktgeber mit 1 Sec. (am Ausgang des Blinkers) nehme und diesen Wert über einen Bool to Integer Konverter auf eine Time_of_day Funktion lege bekommen ich die Zeit angezeigt.


Wie kann man denn bool auf Integer konvertieren? Je nach Art der Kodierung der Werte "true" und "false" sollte dabei:
0 oder 1
0 oder -1
0 oder 0xFFFFFFF
herauskommen.


> Jedoch brauch mein Blinker eine eigene Zeit um seinen Ausgang zu setzen. deshalb weicht meine im Wago programmierte Zeit nach einer Weile (ca.30min) immer ab.


Ist die Abweichung in jeden 30 Minuten gleich oder hängt sie von der Belastung der CPU ab? 

Kannst du in dein Projekt Bibliotheken einbinden? Ich kenne nur BECKHOFF, da muß man eine Bibliothek aus einem Menü laden und dann kann man einen Systemzeit (Millisekunden seit start?) laden, wenn ich mich recht erinnere.


----------



## Anonymous (18 Juni 2005)

Hallo Badtaste und Zottel,

Danke für die schnelle Antworten, geht ja Ruck Zuck bei euch !  
Freut mich !

Zu BadTaste,

Ich benutze leider das Wago I/O Pro !   

Zu Zottel,

Wago bietet die Möglichkeit mittels Bausteine verschiedene Werte ( INT,BOOL,TIME,WORD;DWORD usw.) in andere zu wandeln und wieder zurück. Wie das genau funktioniert weiß ich nicht.

Getestet habe ich das Programm im Simulationsmodus! Also nicht auf der Wago.

Bibliotheken kann ich einbinden! Ob sie auch von Beckhoff gehen weiß ich aber nicht. 

Wo könnte ich so eine Bibliothek von Beckhoff herbekommen?

Mfg 

Homeboy


----------



## pete (21 April 2006)

Hallo Homeboy,
das mit der "Echtzeit" ist ohne externe Trigger gar nicht so einfach. Ich kenne leider das wago System nicht, aber BECKHOFF gibt z.B. beim BC9000 (wie ich gesehen hab-so ähnlich wie der Wago 750-842) eine Abweichung von 60s in 24h an-da kann die Software (Bibliothek) nicht mehr viel rausholen.
Der interne Systemtick eines BC9000 z.B.  wird interne jede ms inkrementiert (Controllerstart ist 0) und liegt auf der Adresse %MB4088 (4Byte groß-umgerechnet max. ~49tage). Die Bibliotheken greifen ebenfalls nur auf diesen Wert zu. Bei wago wird das sicher ähnlich behandhabt.
Wenn das so ist kann man sich mit der Mod Funktion n Timer selbst bauen.


pete


----------



## Andreas Eisenmann (22 April 2006)

Hi Homeboy,,

  mit einem externen Takt gibt es noch das Problem, dass bei einem Stromausfall deine Uhr nicht mehr stimmt.

  Eine bessere Lösung wäre, eine der Steuerungen durch eine 750-841 auszutauschen. Dann hast du eine Echtzeituhr mit der du die anderen CPU’s synchronisieren kannst.
  Noch eine Möglichkeit wäre, die Steuerung über den Visualisierungs-PC zu synchronisieren.


  Ich denke, die beste Lösung wäre mit einer Wetterstation mit Echtzeituhr; siehe hier:
http://www.sps-forum.de/showthread.php?t=7748


----------

