Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
S7 300 CPU Automatischer abgleich der Uhrzeit,Datum u. Wochentag mit dem PC
#21
(28.06.2013, 10:52)S.Rings schrieb:
(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 möchte den Übertragungsbutton nicht eine Stunde lange betätigen, sondern bei Ergebnis wahr für einen Zyklus (positive Flanke).
Antworten
#22
(29.06.2013, 12:46)therme schrieb:
(28.06.2013, 10:52)S.Rings schrieb:
(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 möchte den Übertragungsbutton nicht eine Stunde lange betätigen, sondern bei Ergebnis wahr für einen Zyklus (positive Flanke).

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". Cool

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
Man hat niemals zu viele Backups ...

www.mepeku.de
Antworten
#23
(01.07.2013, 13:16)mepkub schrieb:
(29.06.2013, 12:46)therme schrieb:
(28.06.2013, 10:52)S.Rings schrieb:
(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 möchte den Übertragungsbutton nicht eine Stunde lange betätigen, sondern bei Ergebnis wahr für einen Zyklus (positive Flanke).

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". Cool

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
Sorry, ich dachte es gibt wie in AWL einen Befehl für positive Flanke.
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.Huh
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]
Antworten
#24
(11.07.2013, 14:58)therme schrieb:
(01.07.2013, 13:16)mepkub schrieb:
(29.06.2013, 12:46)therme schrieb:
(28.06.2013, 10:52)S.Rings schrieb:
(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 möchte den Übertragungsbutton nicht eine Stunde lange betätigen, sondern bei Ergebnis wahr für einen Zyklus (positive Flanke).

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". Cool

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
Sorry, ich dachte es gibt wie in AWL einen Befehl für positive Flanke.
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.Huh
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]

Hallo therme,

anbei habe ich Dir meine Flankenauswertung, mit denen ich meine Scripts immer einmalig aufrufe bzw. durchlaufen lasse, kopiert.

Gruß
kirchi_since1996
' ### Startbedingungen ###
'
Start = VDF.ReadBitB (20,41,0,1) ' StartMerker lesen
SpM = VDF.ReadBitB (20,41,1,1) ' SperrMerker lesen
If Start = 0 Then VDF.WriteBitB 20,41,1,1,0 ' SperrMerker zurücksetzen

If SpM = 1 Then Exit Sub
If Start = 0 Then Exit
Sub

###### hier das Script eingügen ######


Call VDF.WriteBitB (20,41,1,1,1) ' SperrMerker setzen
Antworten
#25
bei der Version

Vergleich aktVAR / savedVAR
wenn gleich:
- optional savedVAR = aktVAR
- raus aus script
wenn ungleich:
- Code verarbeiten
- savedVAR = aktVAR
- raus aus script

wird der Code, egal ob in AWL, VBA oder sonst einer Programmiersprache immer nur ein einziges Mal durchlaufen

erster Durchlauf: aktuelles Datum ist 15.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 15.07.2013) ?
Ja => raus

zweitert Durchlauf: aktuelles Datum ist 15.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 15.07.2013) ?
Ja => raus

.......

x-ter Durchlauf: aktuelles Datum hat irgendwann gewechselt und ist 16.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 16.07.2013) ?
Nein => weiter
Code
Code
Code
Anweisung saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 16.07.2013) >> saved_Date (Inhalt = 16.07.2013)
=> und raus

x-plus1-ter Durchlauf: aktuelles Datum ist 16.07.2013
Abfrage saved_Date (Inhalt = 16.07.2013) = akt_Date (Inhalt = 16.07.2013) ?
Ja => raus

Ergebnis: ein einziger Durchlauf pro Tag bei Änderung des Tages
>> ebenfalls möglich mit Stunden oder Minuten oder Sekundenänderung: immer nur ein einziger Durchlauf

Das Skript kann, wenn nicht kontinuierlich gewünscht, von jeder beliebigen Bedingung gestartet werden: Hochfahren, Timer, Ereignis, manuell, ......
Man hat niemals zu viele Backups ...

www.mepeku.de
Antworten
#26
(17.07.2013, 08:58)mepkub schrieb: bei der Version

Vergleich aktVAR / savedVAR
wenn gleich:
- optional savedVAR = aktVAR
- raus aus script
wenn ungleich:
- Code verarbeiten
- savedVAR = aktVAR
- raus aus script

wird der Code, egal ob in AWL, VBA oder sonst einer Programmiersprache immer nur ein einziges Mal durchlaufen

erster Durchlauf: aktuelles Datum ist 15.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 15.07.2013) ?
Ja => raus

zweitert Durchlauf: aktuelles Datum ist 15.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 15.07.2013) ?
Ja => raus

.......

x-ter Durchlauf: aktuelles Datum hat irgendwann gewechselt und ist 16.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 16.07.2013) ?
Nein => weiter
Code
Code
Code
Anweisung saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 16.07.2013) >> saved_Date (Inhalt = 16.07.2013)
=> und raus

x-plus1-ter Durchlauf: aktuelles Datum ist 16.07.2013
Abfrage saved_Date (Inhalt = 16.07.2013) = akt_Date (Inhalt = 16.07.2013) ?
Ja => raus

Ergebnis: ein einziger Durchlauf pro Tag bei Änderung des Tages
>> ebenfalls möglich mit Stunden oder Minuten oder Sekundenänderung: immer nur ein einziger Durchlauf

Das Skript kann, wenn nicht kontinuierlich gewünscht, von jeder beliebigen Bedingung gestartet werden: Hochfahren, Timer, Ereignis, manuell, ......
Antworten
#27
(19.07.2013, 18:00)therme schrieb:
(17.07.2013, 08:58)mepkub schrieb: bei der Version

Vergleich aktVAR / savedVAR
wenn gleich:
- optional savedVAR = aktVAR
- raus aus script
wenn ungleich:
- Code verarbeiten
- savedVAR = aktVAR
- raus aus script

wird der Code, egal ob in AWL, VBA oder sonst einer Programmiersprache immer nur ein einziges Mal durchlaufen

erster Durchlauf: aktuelles Datum ist 15.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 15.07.2013) ?
Ja => raus

zweitert Durchlauf: aktuelles Datum ist 15.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 15.07.2013) ?
Ja => raus

.......

x-ter Durchlauf: aktuelles Datum hat irgendwann gewechselt und ist 16.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 16.07.2013) ?
Nein => weiter
Code
Code
Code
Anweisung saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 16.07.2013) >> saved_Date (Inhalt = 16.07.2013)
=> und raus

x-plus1-ter Durchlauf: aktuelles Datum ist 16.07.2013
Abfrage saved_Date (Inhalt = 16.07.2013) = akt_Date (Inhalt = 16.07.2013) ?
Ja => raus

Ergebnis: ein einziger Durchlauf pro Tag bei Änderung des Tages
>> ebenfalls möglich mit Stunden oder Minuten oder Sekundenänderung: immer nur ein einziger Durchlauf

Das Skript kann, wenn nicht kontinuierlich gewünscht, von jeder beliebigen Bedingung gestartet werden: Hochfahren, Timer, Ereignis, manuell, ......


hab' ich was verpasst oder warum wurde der Beitrag nur mal so zitiert?

War mein Hinweis hilfreich?
die "Antwort" ungewollt?
Überflüssig?

Wer kann ein an-x2-ab-dhrio liefern?
Man hat niemals zu viele Backups ...

www.mepeku.de
Antworten
#28
(21.07.2013, 00:32)mepkub schrieb:
(19.07.2013, 18:00)therme schrieb:
(17.07.2013, 08:58)mepkub schrieb: bei der Version

Vergleich aktVAR / savedVAR
wenn gleich:
- optional savedVAR = aktVAR
- raus aus script
wenn ungleich:
- Code verarbeiten
- savedVAR = aktVAR
- raus aus script

wird der Code, egal ob in AWL, VBA oder sonst einer Programmiersprache immer nur ein einziges Mal durchlaufen

erster Durchlauf: aktuelles Datum ist 15.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 15.07.2013) ?
Ja => raus

zweitert Durchlauf: aktuelles Datum ist 15.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 15.07.2013) ?
Ja => raus

.......

x-ter Durchlauf: aktuelles Datum hat irgendwann gewechselt und ist 16.07.2013
Abfrage saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 16.07.2013) ?
Nein => weiter
Code
Code
Code
Anweisung saved_Date (Inhalt = 15.07.2013) = akt_Date (Inhalt = 16.07.2013) >> saved_Date (Inhalt = 16.07.2013)
=> und raus

x-plus1-ter Durchlauf: aktuelles Datum ist 16.07.2013
Abfrage saved_Date (Inhalt = 16.07.2013) = akt_Date (Inhalt = 16.07.2013) ?
Ja => raus

Ergebnis: ein einziger Durchlauf pro Tag bei Änderung des Tages
>> ebenfalls möglich mit Stunden oder Minuten oder Sekundenänderung: immer nur ein einziger Durchlauf

Das Skript kann, wenn nicht kontinuierlich gewünscht, von jeder beliebigen Bedingung gestartet werden: Hochfahren, Timer, Ereignis, manuell, ......



Yuhu, das Script funktioniert super.

Besten Dank an das Visam Team!

Vielleicht ist es auch für andere Visam-Nutzer interessant.

Hier mal das lauffähige Script.


Angehängte Dateien
.zip   Date Time an SPS.zip (Größe: 1,15 KB / Downloads: 7)
Antworten


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste