11.07.2013, 14:58
(01.07.2013, 13:16)mepkub schrieb:Sorry, ich dachte es gibt wie in AWL einen Befehl für positive Flanke.(29.06.2013, 12:46)therme schrieb:(28.06.2013, 10:52)S.Rings schrieb:Ich möchte den Übertragungsbutton nicht eine Stunde lange betätigen, sondern bei Ergebnis wahr für einen Zyklus (positive Flanke).(25.06.2013, 14:52)therme schrieb: Besten Dank für die Antwort.
Das Script funktioniert jetzt super.
Ich möcht noch die Zeit automatisch einmal wöchentlich abgleichen, den Button zum übertragen (sagen wir am Mo 13:00 Uhr) für einen Zyklus betätigt wird.
die Funktion:
Code:Tag = WeekDay(Now)
gibt Ihnen den Tag als Zahl zurück.
Genauso erhalten sie die aktuelle Stunde mit:
Code:Stunde= Hour(Now)
Ich gehe davon aus, dass dies nur der Hinweis ist, wie Sie das script selbstständig erweitern können. An Sonsten hätte der Satz lauten müssen: "Kann mir bitte jemand das script schreiben, damit ich durch Betätigen eines Button die Uhrzeit in der SPS aktualisieren kann".
Btw:
- Warum "nur" Montag um 13:00? (muss da eine Abfrage rein dass ausserhalb des Bereiches nicht übertragen werden darf?)
- Warum "nur" manuell? (kann vergessen werden!)
Ich würde sowas einmalig beim Hochfahren des Systems auslösen oder, bei 24/7 Betrieb automatisch bei Datumswechsel.
Vergleich aktDAY / savedDAY
wenn gleich:
- savedDAY = aktDAY und raus aus script
wenn ungleich:
- Zeit und Datum umwandeln
- übertragen
- savedDAY = aktDAY und raus aus script
Unsere Anlage lauft übrigens immer durch.
Ich möchte die SPS nicht unötig belasten und den Automatischen Abgleich nur ienmal pro Woche ausführen.
Hir ein Asschnitt aus meinem Script.
'Übertragungsbutton für manuellen Abgleich
Man_Uebertr=VDF.[b]ReadBitB(1,21,8,1)[/b]
If Man_Uebertr=1 Then
Man_Uebertr=0
AbgleichBit=1
End If
'Automatischer Wochenabgleich
'Hir möchte ich nur bei steigender Flanke das 'AbgleichBit' wahr 'ist .
'Bei diesem Beispiel schreibt das Script eine Minute lang die Daten in die 'CPU.
AbgleichWoTag=[b]VDF.[b]ReadInt(2,40)[/b]
If AbgleichWoTag=iMinute Then 'Habe hir zum testen die Minuten 'genommen.[/b]
[b]AbgleichBit=1
[b]End If [/b][/b]
Bit gesetzt zum übertragen ?
AbgleichBit=1 Then
[b][b][b][i][b][b][b][b]VDF.WriteBitB 2,30,8,8 , BCDJahr
VDF.WriteBitB 2,30,0,8 , BCDMonat
VDF.WriteBitB 2,31,8,8 , BCDTag
VDF.WriteBitB 2,31,0,8 , BCDStunde
VDF.WriteBitB 2,32,8,8 , BCDMinute
VDF.WriteBitB 2,32,0,8 , BCDSekunde
VDF.WriteBitB 2,33,0,8 , BCDWochentag
VDF.WriteBitB 1,19,9,1,1 [i]'Übertragungsbit von Read in Set CLOCK[/b][/b][/b][/i]
[b][b][i][b][b][b][b][i]End If 'wird von SPS ückgesetzt
[/b][/b][/b][/i][/b][/i][/b][/b][/b][/i][/b][/b][/b]