Autor Thema: Halloween steht vor der Tür (sheduler/Ablaufsteuerung) für Animation  (Gelesen 4237 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Holger

  • Gast
Hi,

jau naechstes Jahr Halloween wollen wir die ein oder andere Sache Animieren mit Pneumatik/Ventilen :)
Im Prinzip ist es dann so das Ausgaenge z.B. Ventiele oder Sounds steuern.

Dafuer suche ich noch eine gute Moeglichkeit eine Ablaufsteuerung zu Realisieren. So das ohne Trigger (Bewegungsmelder/Lichtschranke) bestimmte Ausgänge gesetzt sind.
Theme Sound evtl. Licht gedimmt.

Sobald "Trigger" gesetzt wird geht es in den "Scare" mode in dem dann verschiedenes Ablaufen soll. z.B. erst Zylinder 1 rein/raus/rein/raus/reinraus dabei Flacker licht und sound 1 dann nach einer weile Zylinder 2 mit Sound 2 und Licht voll an Strobe.

Meine erste Idee war dafuer ST zu nehmen (nur vereinfacht dargestellt)
if scare THEN
 IF scaretime > 30 THEN
 scare := false:
 ELSIF scaretime > 20 THEN

 ELSIF scaretime > 10 THEN

 ELSIF scaretime > 5 THEN

ELSE THEN
 scaretime := 0;
 themesound1 := TRUE;
 sound1 := false;
 sound2 := false;
 zylinder1 := false;
 zylinder2 := false;
END_IF


Aber dann muss man immer im naechsten ELSEIF die Werte des vorheriegen Schrittes zuruecksetzen, besser wuerde es mir gefallen wenn es einen Baustein oder so geben wuerde den man dann quasi mitgeben kann was auf welchen Ausgang passieren soll und wie lange. Sowas wie die Zeitschaltuhren nur auf Sekundenbasis.
Programmierung der Art: Ausgang1 soll TRUE sein von 10s bis 15s, 20s - 25s, 30s - 45s


Gibt es sowas schon ? Ideen ?



Gruss
   Holger

Offline Tom

  • Newbie
  • *
  • Beiträge: 40
    • Profil anzeigen
Re:Halloween steht vor der Tür (sheduler/Ablaufsteuerung) für Animation
« Antwort #1 am: 11. November 2010, 15:34:03 »
Vorschlag: Nimm ST und ändere es etwas ab. Am Anfang alles zurücksetzen und dann mit einer CASE-Verzweigung ansteuern. IF-THEN geht natürlich auch.

sound1 := FALSE;
sound2 := FALSE;
zylinder1 := FALSE;
zylinder2 := FALSE;

IF NOT scare RETURN;

CASE scaretime OF

    1 .. 5:    sound1 := TRUE;
            zylinder1 := TRUE;

    6 .. 10:   sound2 := TRUE;
             zylinder1 := TRUE;

   11 .. 20: sound2 := TRUE;
             zylinder2 := TRUE;

END_CASE;




« Letzte Änderung: 11. November 2010, 18:22:57 von Tom »

Offline Tom

  • Newbie
  • *
  • Beiträge: 40
    • Profil anzeigen
Re:Halloween steht vor der Tür (sheduler/Ablaufsteuerung) für Animation
« Antwort #2 am: 11. November 2010, 20:39:32 »
Oder, um die Idee mit dem Baustein aufzugreifen: Bastle einen FB, welchem du z.B. 6 Schaltpunkte übergibst un der einen Ausgang entsprechend schaltet. So könnte es gehen (nicht getestet):


VAR_INPUT
 start: BOOL;
 ein1: DWORD;
 aus1: DWORD;
 ein2: DWORD;
 aus2: DWORD;
 ein3: DWORD;
 aus3: DWORD;
END_VAR

VAR_OUTPUT
 ausg: BOOL;
END_VAR

VAR
 is_started: BOOL;
 time: DWORD;
END_VAR



IF NOT start THEN
 is_started := FALSE;
 ausg := FALSE;
 RETURN;
END_IF;

tx := T_PLC_MS()/1000; (*Millisek. > Sek.*)

IF NOT is_started THEN
 start_time := tx;
 is_started := TRUE;
END_IF;

time := tx - start_time;

IF ein1 <= time AND time <= aus1 OR ein2 <= time AND time <= aus2 OR ein3 <= time AND time <= aus3 THEN
 ausg := TRUE;
ELSE
 ausg := FALSE;
END_IF;



Solange start = TRUE wird der Baustein bearbeitet. Man könnte es auch umschreiben und eine Flanke verwenden.
« Letzte Änderung: 12. November 2010, 15:01:01 von Tom »