S7 200 und echtzeituhr "Zeitschaltuhr"

YepeMC

Member
Beiträge
10
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
hi...
ich will sowas wie ne zeitschaltuhr schreiben. wollte die echtzeituhr als richtliene nehmen. Kann ich mit dem Baustein READ-RTC ne zeit vergleichen? und damit den ausgang schalten?
hätte es ja einfach getestet aber leider hab ich das nicht rausbekommen wie ich T einsetze.
z.B. um 20:00 soll irgend ein ausgang kommen was muss ich dann bei T setzen?

MFG YepeMC
 

kaufmann-michael

Well-known member
Beiträge
58
Punkte Reaktionen
0
Zeit mit Ob1 auslesen

Hallo,

also ich würde das mit den Lokaldaten des OB1 machen. Ab Lokaldatenbyte 12 bis 20 sind Uhrzeit und Datum hinterlegt und zwar in jedem Byte, z. B, Stunde Minuten usw. Diese Zahlen sind im BCD-Format hinterlegt, also würd ich das ganze noch umwandeln in Integer mit BTI.

Den Rest wißt er ja eh sicherlich!

Gruß
Michael
 

andre

Well-known member
Beiträge
268
Punkte Reaktionen
37
Hallo,
platziere in einem Netzwerk den Baustein READ_RTC, markiere ihn und drücke die Taste F1. Die Hilfe öffnet sich und besser kann ich es nicht beschreiben. An "T" wird die Zeit BCD-codiert ausgegeben, die mit der Echtzeit verglichen wird.
Leider vollzieht die Echtzeituhr meines Wissens nicht die Sommer- /Winterzeitumstellung.
Nachtrag:
Der Zeitwert T kann dann an anderer Stelle im Programm mit einer Referenzzeit verglichen werden. Leider weiß ich nicht, wie man Programmteile in die Beiträge kopiert, sonst hätte ich fix ein kleines Beispiel erstellt.
 
A

Anonymous

Guest
Auslesen der Uhrzeit aus der S7 200

Für das Datum und die Uhrzeit sind 8 Byte erforderlich
Am Baustein READ_RTC wird am Eingang T die Adresse festgelegt ab welchem Bereich die 8 Byte belegt werden.
Hier bei unserem Fall beginnt der Bereich ab VB100 und geht bis VB107.

VB 100 hier steht in Darstellung HEX das Jahr
VB 101 hier steht in Darstellung HEX der Monat
VB 102 hier steht in Darstellung HEX der Tag
VB 103 hier steht in Darstellung HEX die Stunden
VB 104 hier steht in Darstellung HEX die Minuten
VB 105 hier steht in Darstellung HEX die Sekunden
VB 106 hier steht in Darstellung HEX die Millisekunden (nicht bei allen Typen der Fall)
VB 107 hier steht in Darstellung HEX der Wochentag 0= deaktiviert 1= Sonntag, 2= Montag, 3= Dienstag bis 7= Samstag

LD SM0.0
TODR VB100

mfg

Christian
 
OP
Y

YepeMC

Member
Beiträge
10
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
ja das sieht doch schonmal nicht schlecht aus muss mir das jetzt mal durch den kopf gehen lassen. ob ich das so umsetzen kann. aufjeden fall erstmal danke. falls jemand zuhause ein beispiel programm rumfliegen hat wäre ich sehr dankbar wenn ihr mir es schicken würdet.
 
OP
Y

YepeMC

Member
Beiträge
10
Punkte Reaktionen
0
hab mir das jetzt mal so durch den kopf gehen lassen und ich versteh das nicht so wirklich

was müsste ich an T schreiben wenn ich alle 2 min ein signal am ausgang haben will??? :oops:

Mfg YepeMC
 
A

Anonymous

Guest
Nein nicht an T
An T legst Du die Adresse fest wo die Daten also sprich die Uhrzeit geschrieben wird. In diesem Bereich steht dann immer die aktuelle Zeit.
Ganz einfaches Beispiel:

VB 103 hier steht in Darstellung HEX die Stunden
VB 104 hier steht in Darstellung HEX die Minuten
VB 105 hier steht in Darstellung HEX die Sekunden

Das heißt im VB103 bis VB105 steht jetzt die aktuelle Zeit.
Jetzt mußt du Dir noch in 3 andere Bereiche die Werte schreiben ab wann
Du zB. etwas einschalten willst.

VB203 Stunden
VB204 Minuten
VB206 Sekunden

zb. VB 203=17 VB204=30 VB205=00 ergibt zB. 17.30 Uhr
jetzt mußt Du Deinen Einschaltpunkt in unserem Fall 17.30 mit der
aktuellen Uhrzeit vergleichen.Also VB103-VB104 vergleichen mit VB203-VB204.
Und mit dem vergleichen kannst Du Dir zB. dann einen Merker/Ausgang setzen der dann etwas einschaltet.


Hoffe Du kommst klar mit meiner Erklärung
Mit dem hier bist Du von einer Schaltuhr noch sehr weit entfernt aber kommst dem ganzen doch schon etwas näher.

Mfg

Christian
 
A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Das auschalten nicht vergessen geht genauso wie das einschalten.
Und wenn Du wirklich alle 2 Minuten etwas einschalten möchtest dann
benutze besser einen normalen Timer.
Eine richtige Schaltuhr mit 3-4 Einschaltpunkten und 3-4 Ausschaltpunkten pro Tag und das ganze mal 7 für eine Woche ist schon etwas arbeit.

mfg
 
OP
Y

YepeMC

Member
Beiträge
10
Punkte Reaktionen
0
nein will nicht alle 2 min etwas einschalten es soll schon so wie ne zeitschaltuhr funktionieren.
also ich glaube das mit den VB 103 bis VB 105 hab ich jetzt verstanden.
also ich erstelle jetzt für dieses beispiel 3 rtc_read und jeweils an T muss dann eins von den VB&s. okay!?
so aber was ich jetzt nicht verstanden habe ist wo ich jetzt dem VB den wert gebe.
sorry das ich mich so dumm anstelle hab leider noch nicht wirklich viel mit microwin zutun gehabt kenn mich nur mit Step7 aus
 
A

Anonymous

Guest
Hi

also so ganz hast Du das noch nicht verstanden aber nicht schlimm wir werden das schon schaffen.
Das auslesen der Zeit brauchst Du nur einmal machen und nicht 3x.
Einen Merker kann man ja auch nur einmal zuweisen aber Ihn so oft man will verarbeiten im Programm.
Also an T schreibst Du die Adresse.
Ab dieser Adresse werden 8 Byte's belegt in die das Datum und die Uhrzeit geschrieben werden.
Deine Einschaltwerte und Ausschaltwerte mußt Du schon fest programmieren mit dem PG oder Du hast ein Display, Touch Panel worüber eine Eingabe erfolgt.


Mit nettem Gruß

Christian
 

Hanf_Lolly

Member
Beiträge
18
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
hi, ich wollte das Thread nochmal eben wieder aufleben lassen. Genau wie der Thread Ersteller habe das selbe vor. Allerdings möchte ich nun wissen wie ich in den

VB204 und VB205 meine "Wunschzeit" zu schreiben. Vielen dank für eure Hilfe!!!

Mfg

Hanf_Lolly
 

dalbi

Well-known member
Beiträge
1.364
Punkte Reaktionen
371
Hallo Leute,

also als erstes benötigt man folgende Variablen

Code:
CPU_Jahr    VB0    Aktuelles Jahr (0-99) BCD-Wert
CPU_Monat    VB1    Aktueller Monat (1-12) BCD-Wert
CPU_Tag    VB2    Aktueller Tag (1-31) BCD-Wert
CPU_Stunde    VB3    Aktuelle Stunde (0-23) BCD-Wert
CPU_Minute    VB4    Aktuelle Minute (0-59) BCD-Wert
CPU_Sekunde    VB5    Aktuelle Sekunde (0-59) BCD-Wert
CPU_Reserviert    VB6    Reserviert immer auf 00 gesetzt
CPU_Wochentag    VB7    Aktueller Wochentag (1-7) 1=Sonntag (BCD-Wert)

das auslesen der Uhr erfolgt dann mittels READ_RTC siehe Bild.

In denn Variablen steht jetzt das aktuelle Datum und die Uhrzeit BCD codiert.

Gruss Daniel
 

Anhänge

  • READ_RTC.jpg
    READ_RTC.jpg
    37,5 KB · Aufrufe: 118

Hanf_Lolly

Member
Beiträge
18
Punkte Reaktionen
1
Soweit so gut, das habe ich verstanden, aber wie ich jetzt die Uhrzeit, wo ich eine Aktion haben in eine VB schreibe, das ist meine Frage!!! Das steht ich nicht, in AWL kann ich ja ncht schreiben VB100=2 oder so...

Weiß jemand wie das geht? Danke!!!

Hanf_Lolly
 

dalbi

Well-known member
Beiträge
1.364
Punkte Reaktionen
371
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo also ich habe es so gelöst,
da meine S7-200 nicht alle Funktionen unterstützt.

Stunde u. Minute in ein Wort (VW8 schieben)
Code:
LD     log_1:SM0.0
MOVB   CPU_Stunde:VB3, VB8

LD     log_1:SM0.0
MOVB   CPU_Minute:VB4, VB9
Zeit BCD codiert in INT wandeln (Stunde*100+Minute)
Code:
LD     log_1:SM0.0
BCDI   Zeit:VW8
z.B. Einschalten um 20:00 Uhr
Code:
LDW=   Zeit:VW8, 2000
S      A_Brunnen:A0.0, 1
z.B. Ausschalten um 23:30 Uhr
Code:
LDW=   Zeit:VW8, 2330
R      A_Brunnen:A0.0, 1
Gruss Daniel
 

Hanf_Lolly

Member
Beiträge
18
Punkte Reaktionen
1
ok vielen dank an euch! konnte es noch nicht testen weil mein usb serial adapter kaputt ist aber werde es in den nächsten tagen nachholen!Vielen vielen dank!!!

Mfg

Hanf_Lolly
 
Oben