Bewegungsmelder

Sprengel

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
mein Kollege möchte gern eine Schaltung mit Bewegungsmeldern. Da sagte ich " mit Klappertechnik wird es zu teuer " so lande ich hier.
Also:
Habe 3 BWM und 3 Leuchten,
wenn BWM 1 anspricht soll H1 leuchten und H2 & 3 blinken
wenn BWM 2 anspricht soll H2 leuchten und H1 & 3 blinken
wenn BWM 3 anspricht soll H3 leuchten und H1 & 2 blinken.

Danke schon mal, wenn möglich mit Funktionsplan.
 
Da gibt es noch eine "Unbekannte" und deiner Beschreibung. Was ist denn wenn z. B. BWM 1 und BWM 2 gleichzeitig aktiv sind. Soll dann H1 und H2 leuchten oder blinken???
 
ja wenn BMW1 und 2 aktiv sind soll H1 und 2 leuchten und H3 blinken. Ich sitze schon 2 Tagen daran und bekomme es einfach nicht hin. Seitdem ich ausgelernt habe, hatte ich nix mehr mit Logo zutun, leider. würde mich um Hilfe freuen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... wie schon angedeutet ... Hilfe wirst du sicher bekommen ... eine schon fertige Lösung sehr wahrscheinlich nicht.

Also ... wenn du schon seit Tagen da dran sitzt : was hast du denn schon Schönes erstellt ?

Gruß
Larry
 
Hallo,

ich habe dir mal die erste Leuchte vorbereitet. Bin davon ausgegangen, dass die BWM Dauersignale liefern. Fals dies nicht der Fall sein sollte, musst du noch mit Ausschaltverzögerungen arbeiten.

SPS-Forum.jpg

Das Blinken realisierst du mit einem Impulsgeber.
Denke die anderen solltest du jetzt hinbekommen.

Grüße
 
Viel zu kompliziert gedacht.

Wenn BWM1, 2 oder 3 was erfassen, wird der Blinkgeber aktiviert.
Jede Leuchte geht an, wenn ihr BWM ein ist oder der Blinkgeber.
Der BWM übersteuert also einfach den Blinkgeber für seine Leuchte:



Fertsch.


PS: Falls die BWMs nur Impulse liefern, einfach 'ne Ausschaltverzögerung den Eingängen nachschalten.
 
Hier ist eine mögliche Lösung in SCL:

Code:
FUNCTION_BLOCK "Bewegungsmelder"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      Bew_1 : Bool;
      Bew_2 : Bool;
      Bew_3 : Bool;
   END_VAR

   VAR_OUTPUT 
      Lampe_1 : Bool;
      Lampe_2 : Bool;
      Lampe_3 : Bool;
   END_VAR

   VAR 
      Timer1 {OriginalPartName := 'IEC_TIMER'; LibVersion := '1.0'} : TON_TIME;
      Timer2 {OriginalPartName := 'IEC_TIMER'; LibVersion := '1.0'} : TON_TIME;
      Blinker : Bool;
   END_VAR


BEGIN
    
    
    #Timer1(IN :=NOT #Timer2.Q,PT := T#1s);
    #Timer2(IN := #Timer1.Q,PT := T#1s);
    
    #Lampe_1 := #Timer1.Q;
    #Lampe_2 := #Timer1.Q;
    #Lampe_3 := #Timer1.Q;
    
    
    IF #Bew_1 THEN
        #Lampe_1 := 1;
    END_IF;
    
    IF #Bew_2 THEN
        #Lampe_2 := 1;
    END_IF;
    
    IF #Bew_3 THEN
        #Lampe_3 := 1;
    END_IF;
    
    
END_FUNCTION_BLOCK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier ist eine mögliche Lösung in SCL:

Code:
FUNCTION_BLOCK "Bewegungsmelder"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      Bew_1 : Bool;
      Bew_2 : Bool;
      Bew_3 : Bool;
   END_VAR

   VAR_OUTPUT 
      Lampe_1 : Bool;
      Lampe_2 : Bool;
      Lampe_3 : Bool;
   END_VAR

   VAR 
      Timer1 {OriginalPartName := 'IEC_TIMER'; LibVersion := '1.0'} : TON_TIME;
      Timer2 {OriginalPartName := 'IEC_TIMER'; LibVersion := '1.0'} : TON_TIME;
      Blinker : Bool;
   END_VAR


BEGIN
    
    
    #Timer1(IN :=NOT #Timer2.Q,PT := T#1s);
    #Timer2(IN := #Timer1.Q,PT := T#1s);
    
    #Lampe_1 := #Timer1.Q;
    #Lampe_2 := #Timer1.Q;
    #Lampe_3 := #Timer1.Q;
    
    
    IF #Bew_1 THEN
        #Lampe_1 := 1;
    END_IF;
    
    IF #Bew_2 THEN
        #Lampe_2 := 1;
    END_IF;
    
    IF #Bew_3 THEN
        #Lampe_3 := 1;
    END_IF;
    
    
END_FUNCTION_BLOCK
Auf diese Art programmiertes SCL oder ST ist sowieso der letzte Dreck ;) Ich würde KOP oder FUP nehmen. Passt auch besser zur vorhandenen LOGO.

Harald
 
Da muss ich Harald recht geben. Ist auch etwas übersichtlicher und leichter verständlich, gerade wenn man sich mit SCL nicht wirklich auskennt ;)
 

Anhänge

  • BWM.jpg
    BWM.jpg
    117,9 KB · Aufrufe: 32
Zuviel Werbung?
-> Hier kostenlos registrieren
Außerdem ... @Sanja:
Der Code könnte dann übersichtlicher auch so aussehen :
Code:
    #Lampe_1 := #Timer1.Q or #Bew_1 ;
    #Lampe_2 := #Timer1.Q or #Bew_2 ;
    #Lampe_3 := #Timer1.Q or #Bew_3 ;
Gruß
Larry
 
Auf diese Art programmiertes SCL oder ST ist sowieso der letzte Dreck;)
Was gefällt die denn an dieser Art nicht?
Hast Du mal auf Haralds Link geklickt?
Und dann geschaut, worauf ich da geantwortet habe?
Und hast Du Dir dann die gerade zitierte Frage noch mal gestellt?
;)

Ansonsten genau das:
Code:
    #Lampe_1 := #Timer1.Q;
    #Lampe_2 := #Timer1.Q;
    #Lampe_3 := #Timer1.Q;
    
    
    IF #Bew_1 THEN
        #Lampe_1 := 1;
    END_IF;
    
    IF #Bew_2 THEN
        #Lampe_2 := 1;
    END_IF;
    
    IF #Bew_3 THEN
        #Lampe_3 := 1;
    END_IF;
Warum kann man da nicht einfach:
Code:
[FONT=Courier New]    #Lampe_1 := #Timer1.Q OR #Bew_1;
    #Lampe_2 := #Timer1.Q OR #Bew_2;
    #Lampe_3 := #Timer1.Q OR #Bew_3;[/FONT]
schreiben?

PS: Da bin ich wohl nicht allein mit meiner Meinung. :cool:



PPS: Keine Ahnung, warum die Forumssoftware Haralds Zitat immer von selbst auftrennt? :confused:
Scheinbar ist 'ne Schriftart die Ursache für die Trennung, obwohl ich da einfach nur zitiert habe.
Im Standard-Editor konnte ich das dann rausnehmen.
 
Zuletzt bearbeitet:
... ich finde es übrigens interessant, wie ihr fleissig die Logik für den TE gebaut habt. Ich hätte es besser gefunden, dem TE beizubringen, das selbst zu können ...
8) na vielleicht beim nächsten Mal ...
 
Zurück
Oben