Step 7 Lichtsteuerung up and down

matti2013

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, ich habe folgende vor und zwar möchte ich mir ein Lauflicht erstellen und zwar die beim einschalten die Lampen der Reihe nach einschalten, beim ausschalten die Lampen von hinten nach vorne ausschaltet. Wie würdet ihr das lösen?
 
Code:
0 -----
1 *----
2 **---
3 ***--
4 ****-
5 *****
6 ****-
7 ***--
8 **---
9 *----
0 -----

Du meinst sowas?

Harald

Hallo Harald,

ja fast genau so was suche ich aber nochmals etwas genauer mit 3 Lampen

Vorwärts
Start Button startet E1, E2 startet durch Freigabe von E1, E3 startet durch Freigabe von E2

Rückwärts
Stopp Button schaltet E3 aus, ist E3 aus schaltet E2 aus, ist E2 aus schaltet E1 aus
 
Hallo Harald,

ja fast genau so was suche ich aber nochmals etwas genauer mit 3 Lampen

Vorwärts
Start Button startet E1, E2 startet durch Freigabe von E1, E3 startet durch Freigabe von E2

Rückwärts
Stopp Button schaltet E3 aus, ist E3 aus schaltet E2 aus, ist E2 aus schaltet E1 aus
Wieviel Zeit soll denn zwischen den einzelnen Freigaben sein?
Die SPS schaltet Dir das sonst in max. 3 Zyklen durch, sprich wenige Millisekunden. Da merkst und siehst Du gar keinen Unterschied zwischen den 3 Lampen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verstehe matti2013 so: 1x drücken Start(+)Taster (Flanke!) schaltet eine Lampe dazu, 1x drücken Stop(-)Taster (Flanke!) schaltet eine Lampe weg.

Das ist sehr einfach mit Up/Down-Zähler realisierbar, wegen nur 3 Lampen aber auch einfach mit Bitverknüpfungen - die hat matti in #4 ja schon sehr schön aufgezählt, fast 1:1 umsetzbar.
Zu lösende Probleme bei der Bitverknüpfung: Taster-Flanken beachten und so schreiben, daß nicht innerhalb 1 Zyklus alle 3 Ausgänge angehen oder alle 3 ausgehen. Gerade dieses letzte Problem verleitet dann Anfänger oder "alles-neu-und-einfacher-Erfinder" zu regelrechten S/R-Orgien ...

Diese Lampenaufgabe ist eigentlich eine schöne Aufgabe, um vielleicht 10 verschiedene mehr oder weniger elegante Lösungen vorzustellen. Man könnte sogar vorgeben, daß S und R nicht erlaubt sind. Leider können manche Starprogrammierer erst wieder nach dem Wochenende posten :sad: ;)

@matti2013
Du hast Deine Aufgabe zwar unter Step7 eingestellt, es wäre aber gut, wenn Du uns noch sagst, mit welchem Step7 mit welcher SPS Du das Problem lösen willst. Damit eventueller Beispielcode dann zu Deinen Mitteln passt.
Welche Lösung hast Du denn bis jetzt? Funktioniert schon was?

PS:
Weil es nur 3 Lampen sind und es nur 4 verschiedene Lampenzustände gibt, würde ich das Problem sogar einfach mit nur 1 Button lösen: alle aus - 1 an - 2 an - 3 an - alle aus - 1 an ... (0-1-2-3-0-1-2-3-0-1-...) eventuell mit Zusatzfunktion "lange drücken" --> alle aus.

Harald
 
Ich verstehe matti2013 so: 1x drücken Start(+)Taster (Flanke!) schaltet eine Lampe dazu, 1x drücken Stop(-)Taster (Flanke!) schaltet eine Lampe weg.
Hab' ich so nicht verstanden, sondern:
Taste Start -> Lampe 1 starten -> Lampe 1 ist an, damit Freigabe Lampe 2 -> Lampe 2 startet -> Lampe 2 ist an, damit Freigabe Lampe 3 ...
z.B. für das versetzte Starten von HQI-Lampen.
Vorwärts
Start Button startet E1, E2 startet durch Freigabe von E1, E3 startet durch Freigabe von E2

Beim Abschalten dann rückwärts:
Rückwärts
Stopp Button schaltet E3 aus, ist E3 aus schaltet E2 aus, ist E2 aus schaltet E1 aus

Deswegen die Frage nach den zeitlichen Abständen.
 
Danke für eure zahlreiche Antworten.

Also ich möchte beim betätigen des Start Tasters die Lampe 1 eingeschaltet haben, danach Lampe 2 und dann Lampe 3. Mittels einem Stopp Tasters soll bei betätigen die Lampe 3 ausgehen, 4 Sekunden später Lampe 2 und weitere 4 Sekunden später Lampe 1.

Ich verwende Siemens Step7 Version 5.5

Das einzigste was bisher läuft ist bei betätigen der Start Taste das die Lampen 1 eingeht, dann die Lampe 2 und dann die Lampe 3. Das andere bereitet mir gerade noch Schwierigkeiten... :cry:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann stell doch mal online, was Du hast und wir schauen, wo's hapert.

Und um noch mal sicher zu gehen:
Nur 1x Start drücken und alle 3 Lampen gehen nacheinander an.
Und auch nur einmal Stop und alle gehen nacheinander aus.

Sollen die 4 Sekunden Verzögerung zwischen den Lampen auch beim Einschalten gelten?
 
Dann stell doch mal online, was Du hast und wir schauen, wo's hapert. ��

Und um noch mal sicher zu gehen:
Nur 1x Start drücken und alle 3 Lampen gehen nacheinander an.
Und auch nur einmal Stop und alle gehen nacheinander aus.

Sollen die 4 Sekunden Verzögerung zwischen den Lampen auch beim Einschalten gelten?

Hi, also doe Verzögerung soll nur beim ausschalten gelten. Ich stell den Code morgen früh rein, bin heute unterwegs.

Schaust du hier morgen nochmal rein Hucki?

Danke
 
Ich vermute mal, nicht nur ich. ;)

Und wie gesagt, wenn Du das Einschalten nicht selbst verzögerst, schaltet Dir die SPS die 3 Ausgänge auch nacheinander in "Nullkommanichts" durch.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann stell doch mal online, was Du hast und wir schauen, wo's hapert. ��

Und um noch mal sicher zu gehen:
Nur 1x Start drücken und alle 3 Lampen gehen nacheinander an.
Und auch nur einmal Stop und alle gehen nacheinander aus.

Sollen die 4 Sekunden Verzögerung zwischen den Lampen auch beim Einschalten gelten?
Hi, also doe Verzögerung soll nur beim ausschalten gelten.
Hmm, soll das eine Art 3-Stufen-Dimmer mit langsamen Ausschalten sein?
Sonst kann ich mir kaum vorstellen, warum rasend schnell eingeschaltet aber langsam stufenweise ausgeschaltet werden soll. Normal kenne ich langsam stufenweise einschalten und "auf Schlag" ausschalten.
Trotzdem würde ich wohl auch beim Einschalten kleine Verzögerungsstufen einbauen. "Nacheinander" heißt ja, daß etwas Zeit vergehen soll.

Deine Aufgabe ist eigentlich gar nicht schwer zu lösen. Du kannst sie in kleine übersichtliche Teilaufgaben zerlegen und dann noch einfache Ausgangsverknüpfungen für jede Lampe machen. Fertig.

Weil Du keine Schalter sondern 2 Taster hast brauchst Du einen Merker, der speichert, ob eingeschaltet oder ausgeschaltet ist. Dann noch zwei Timer für die kurzen Einschalt-Verzögerungszeiten zu Lampe2 und Lampe3 und zwei Timer für die Nachhaltezeit der Lampe2 und Lampe1 für das stufenweise Ausschalten.
Die Lampe1 leuchtet solange eingeschaltet ist oder solange die Nachhaltezeit zu Lampe2 noch läuft.
Die Lampe2 leuchtet etwas später als Lampe1 oder solange die Nachhaltezeit zu Lampe3 noch läuft.
Die Lampe3 leuchtet etwas später als Lampe2 und nur solange eingeschaltet ist (keine Nachhaltezeit).

Man könnte die Aufgabe auch mit einer kleinen Schrittkette lösen.

PS:
Wenn Du Deine Aufgabenstellung gleich korrekt und vollständig beschrieben hättest, dann stünde jetzt hier ganz bestimmt schon die Lösung ... oder sogar mehrere ...
Wie Du siehst, steht hier aber noch kein Stück Code. Das Programmieren fängt man nämlich erst an, wenn die Aufgabenstellung klar und widerspruchsfrei formuliert ist. Wir waren noch in der Phase, wo quasi das Pflichtenheft geschrieben wird.

Harald
 
Hmm, soll das eine Art 3-Stufen-Dimmer mit langsamen Ausschalten sein?
Sonst kann ich mir kaum vorstellen, warum rasend schnell eingeschaltet aber langsam stufenweise ausgeschaltet werden soll. Normal kenne ich langsam stufenweise einschalten und "auf Schlag" ausschalten.
Trotzdem würde ich wohl auch beim Einschalten kleine Verzögerungsstufen einbauen. "Nacheinander" heißt ja, daß etwas Zeit vergehen soll.

Deine Aufgabe ist eigentlich gar nicht schwer zu lösen. Du kannst sie in kleine übersichtliche Teilaufgaben zerlegen und dann noch einfache Ausgangsverknüpfungen für jede Lampe machen. Fertig.

Weil Du keine Schalter sondern 2 Taster hast brauchst Du einen Merker, der speichert, ob eingeschaltet oder ausgeschaltet ist. Dann noch zwei Timer für die kurzen Einschalt-Verzögerungszeiten zu Lampe2 und Lampe3 und zwei Timer für die Nachhaltezeit der Lampe2 und Lampe1 für das stufenweise Ausschalten.
Die Lampe1 leuchtet solange eingeschaltet ist oder solange die Nachhaltezeit zu Lampe2 noch läuft.
Die Lampe2 leuchtet etwas später als Lampe1 oder solange die Nachhaltezeit zu Lampe3 noch läuft.
Die Lampe3 leuchtet etwas später als Lampe2 und nur solange eingeschaltet ist (keine Nachhaltezeit).

Man könnte die Aufgabe auch mit einer kleinen Schrittkette lösen.

PS:
Wenn Du Deine Aufgabenstellung gleich korrekt und vollständig beschrieben hättest, dann stünde jetzt hier ganz bestimmt schon die Lösung ... oder sogar mehrere ...
Wie Du siehst, steht hier aber noch kein Stück Code. Das Programmieren fängt man nämlich erst an, wenn die Aufgabenstellung klar und widerspruchsfrei formuliert ist. Wir waren noch in der Phase, wo quasi das Pflichtenheft geschrieben wird.

Harald

Ja ich gebe dir in jedem Punkt recht. Lass es mich heute bearbeiten, ich stelle es dann hier rein. Mit heute früh wird's wohl nichts mehr werden :)

Aber ich versuche es nach deinem Vorgehen umzusetzen, stelle es hier rein und freue mich auf jeden Input eurerseits!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier mein aktueller Stand (hab heute kein Step7 zur Hand)

Code:
E1 => Start Button
E2 => Stopp Button
A1 = Lampe 1
A2 = Lampe 2
A3 = Lampe 3


NW 1
// Gesamtanlage Anlaufzeit bevor irgend etwas gestartet wird 
L S5T#5S // Gesamtanlage Anlaufzeit 5 Sekunden 
SE T0

NW 2
// Lampe E1 Ausschaltverzögert
U(
L S5T#2S
SA T1	// Ausschaltverzögerung Lampe E1
U T0	// Gesamtanlage Anlaufzeit 5 Sekunden
U E1	// Start Button
UN E2 	// Stopp Button
= A1	// Lampe 1

NW 3
// Lampe E2 Ausschaltverzögert
U(
L S5T#2S
SA T2	// Ausschaltverzögerung Lampe E1
U T0	// Gesamtanlage Anlaufzeit 5 Sekunden
U E1	// Start Button
UN E2 	// Stopp Button
R A1	// Lampe 1
= A2	// Lampe 2

NW 4
// Lampe E3 Ausschaltverzögert
U(
L S5T#2S
SA T2	// Ausschaltverzögerung Lampe E1
U T0	// Gesamtanlage Anlaufzeit 5 Sekunden
U E1	// Start Button
UN E2 	// Stopp Button
R A2	// Lampe 1
= A3	// Lampe 2
 
Andere möglichkeit schemas in DB.dbb und dan mit step durch db laufen
Code:
db1
dbb0 = 0000 0000
dbb1 = 0000 0001
dbb2 = 0000 0011
dbb3 = 0000 0111
dbb4 = 0000 0011
dbb5 = 0000 0001
 
hab heute kein Step7 zur Hand
Das sieht man. ;)

1. Immer wenn eine Klammer geöffnet wird, muss man sie auch wieder schließen.

2. Du hast offensichtlich Start- und Stop-Taster. Das heißt, Du mußt Dir eine richtige EIN-/AUS-Funktion bauen, die Du dann bei den Lampen abfragst. Die Taster ändern ja nur kurz ihren Zustand und können deswegen dafür nicht (bzw. nur bedingt) herhalten.

3. Wenn Du die Ausgänge über Zuweisungen (=) steuerst, sollte eigentlich ein Rücksetzen nicht nötig sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier mein aktueller Stand (hab heute kein Step7 zur Hand)
Du hast Dein Programm hier wohl aus dem Gedächtnis aufgeschrieben?
Dann warten wir mit Korrekturen wohl besser bis Du uns das echte Programm zeigst. Das gezeigte enthält zu viele Fehler: zu viele oder fehlende Klammern, fehlendes VKE vor Timerfunktionen, 2x "SA T2", T1 und T2 sind nie verknüpft, ...

Wie hucki und ich schon schrieben: Du brauchst eine EIN-/AUS-Funktion (Merker), die mit den Tastern geschaltet wird (z.B. als SR-Flipflop oder als Selbsthaltung). Die Lampen und Timer verknüpfen dann nicht mehr die Taster sondern diesen EIN-/AUS-Merker.
Code:
// SR-Flipflop
      U     E      0.1   // Ein-Taster (Start)
      S     M      2.0   // EIN-/AUS-Merker
      U     E      0.2   // Aus-Taster (Stop)
      R     M      2.0   // EIN-/AUS-Merker
      NOP   0            // (NOP: nur für KOP/FUP-Darstellung nötig)

// Selbsthaltung
      U(
      O     E      0.1   // Ein-Taster (Start)
      O     M      2.0   // EIN-/AUS-Merker Selbsthaltung
      )
      UN    E      0.2   // Aus-Taster (Stop)
      =     M      2.0   // EIN-/AUS-Merker

Harald
 
Wenn dein Stop-Taster ein Öffner ist, wie es normalerweise der Standard ist, darfst Du den Eingang bei der Selbsthaltung nicht negieren, sondern dafür beim FlipFlop:
Code:
[FONT=courier new]// SR-Flipflop
      U     E      0.1   // Ein-Taster (Start)
      S     M      2.0   // EIN-/AUS-Merker
      [U][COLOR=#b22222]UN[/COLOR][/U]    E      0.2   // Aus-Taster (Stop)
      R     M      2.0   // EIN-/AUS-Merker
      NOP   0            // (NOP: nur für KOP/FUP-Darstellung nötig)

// Selbsthaltung
      U(
      O     E      0.1   // Ein-Taster (Start)
      O     M      2.0   // EIN-/AUS-Merker Selbsthaltung
      )
      [U][COLOR=#b22222]U[/COLOR][/U]     E      0.2   // Aus-Taster (Stop)
      =     M      2.0   // EIN-/AUS-Merker[/FONT]
 
@Harald,
kann es sein, das da ein Lehrer durch kommt, der sich mal austoben kann?
:ROFLMAO: :ROFLMAO: :ROFLMAO:
:ROFLMAO: :ROFLMAO: :ROFLMAO:

Da vom TE wohl nichts mehr kommt will ich meine Lösung des Problems loswerden.
Code:
FUNCTION "Lampenkette" : VOID
TITLE =
AUTHOR : PN_DP
VERSION : 0.1

BEGIN
NETWORK
TITLE =Ein/Aus und Einschaltverzögerungen
      U(    ; 
      U(    ; 
      U     E      0.1;   // Ein-Taster (Start)
      S     M      2.0; 
      U     E      0.2;   // Aus-Taster (Stop)
      R     M      2.0; 
      U     M      2.0; 
      )     ; 
      L     S5T#500MS; 
      SE    T      1; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
      U     T      1; 
      )     ; 
      L     S5T#500MS; 
      SE    T      2; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
NETWORK
TITLE =Lampe 1
      O     M      2.0; 
      O     T      3; 
      =     A      0.1; 
NETWORK
TITLE =Lampe 2 und Nachhaltezeit für Lampe 1
      U(    ; 
      O     T      1; 
      O     T      4; 
      )     ; 
      =     A      0.2; 
      U     A      0.2; 
      L     S5T#4S; 
      SA    T      3; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
NETWORK
TITLE =Lampe 3 und Nachhaltezeit für Lampe 2
      U     T      2; 
      =     A      0.3; 
      U     A      0.3; 
      L     S5T#4S; 
      SA    T      4; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
END_FUNCTION
die vielen NOP sind nur für die KOP/FUP-Ansicht nötig, Ansicht in KOP siehe Bild im Anhang

Harald
 

Anhänge

  • Lampenkette_KOP.gif
    Lampenkette_KOP.gif
    8 KB · Aufrufe: 25
Zuletzt bearbeitet:
Zurück
Oben