Step 7 SCL Programmierung Wochentage Auswahl über HMI

marco0104

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Meine Aufgabe ist es eine Auswahl der Wochentag vorzunehmen über eine HMI Schnitstelle.
An diesen Wochentagen soll dann ein gewisses Ereigniss passieren.
Das ganze soll in SCL programmiert werden.

Jetzt meine Frage wie schreibe ich das?

Meine Überlegung war über jeden Button der HMI Schnitstelle ein Bit in einem DB zu setzten.

z.B. Button SO (HMI) = DB1.DBX 0.0 = Sonntag (1)
Button MO (HMI) = DB1.DBX 0.1 = Montag (2)
Button DI (HMI) = DB1.DBX 0.2 = Dienstag(3)........usw.

Das habe ich auch soweit schon fertig.
Im SCL ist es jetzt so, sobald ein Tag aktiv ist im HMI, er mir eine Zahl (Sonntag =1, Montag = 2,....usw)
in eine Temporäre Variable schreibt.
Ich muss dazu sagen es können auch mehrer Tage ausgewählt werden.

Danach soll pasieren wenn das Ereigniss z.B.an einem Montag passier ist, soll für den nächsten Tag eine Berechnung erfolgen wo das Ergebniss auf der Visu Angezeigt wird.

Danke schon mal für die Hilfe :)
 
Hi,

Ich kann dir beim letzten Satz nicht folgen.
Was ist nun deine Frage?

Wir du an die Wochentage kommst oder wie du an einem darauffolgenden Tag das Ergebnis anzeigen kannst?

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Grüß dich,

also mir geht es umd die Berechnung des nächsten Tages auch wenn mal einer vom Bediener nicht angewählt ist.
Er wählt zb nur Montag und Donerstag an. Dazu soll dann in der Visu angezeigt werden das nächste Ereignis tritt dann und dann ein.

Blöde das zu beschreiben irgendwie.


Gruß
 
Ich verstehe auch nicht was Du machen willst, würde aber in der Visu für Sonntag 1 nehmen, für Montag 2 usw.
Wenn Du mit SFC1 die Uhrzeit ausliest steht dort auch der Wochentag in dieser Form drinnen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich versuche es mal anhand einer Beleuchtungssteuerung zu erklären.

Am WinCC sind 7 Button Montag bis Sonntag und ein Fenster für den Zeitraum
Wenn Montag Dienstag und Freitag zum Beispiel gedrückt sind und ein Zeitraum von 7uhr bis 8uhr soll an diesen 3 Tagen und in diesem Zeitraum der Woche das Licht angehen und das auch immer woche für woche für woche.
Wenn Montag das Licht angegangen ist dann soll im WinCC stehen Montag 7uhr ist das Licht angegangen und es soll da stehen Dienstag wird es um 7uhr angehen.

Ich hoffe das warjetzt etwas verständlicher.

Gruß
 
Wenn du wie Folgt ein Array Füllst:

arr = Array[0..13] of Bool

So , Mo , Di , Mi , Do , Fr , Sa , So , Mo , Di , Mi , Do , Fr , Sa
arr = [0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 ]

Das verdoppeln des Array ist um bei einem Überlauf wieder in der neuen Woche anzufangen.
Also immer die Tage Doppelt setzen Montag = index 1 und 8 ...

Dann kannst du eine Schleife durchlaufen lassen und nach dem nächsten Suchen

bsp:
Code:
#arr[1] := true;  // Montag
#arr[4] := true;  // Donnerstag
#arr[8] := true;  // Montag
#arr[11] := true; // Donnerstag
#weekday := 5;  // aktueller Wochentag Fr
#nextEventIn := 0; // init

FOR #index := #weekday TO #weekday + 7 DO
    IF #arr[#index] AND #nextEventIn = 0 THEN
        #nextEventIn := #index - #weekday;
        #onDay := #index MOD 7;
    END_IF;
END_FOR;

Ergebnis 

nextEventIn == 3
onDay == 1 // Montag
 
Zuletzt bearbeitet:
Zurück
Oben