# An / Aus Schaltung =)



## Insane (24 Februar 2009)

Hallo zusammen 

ganz kurze frage.  Wie würdet ihr diese Aufgabe am einfachsten realisieren ?? 


Der Taster S1 schaltet eine lampe ein. Die lampe soll 10s anbleiben. Dann soll die Lampe für 10s ausbleiben und danach sofort wieder angehen. Dies soll unabhänig davon funktionieren das man noch irgendwas drücken muss. 

also praktsch -> lampe 10s an, Lampe 10s aus, Lampe 10s an, Lampe 10s aus.............  usw .............. usw ........... usw

sowas lässt sich doch mit dem richtigen trick sicher ganz einfach realisieren oder =)


----------



## dtsclipper (24 Februar 2009)

Ich würde hier mit dem Tatser einen Merker setzen mit dem und dem Taktmerkerbyte einen Sondertakt bilden, 10 sec. halt abzählen,  und dann als Flip_Flop betreiben.

LG dtsclipper


----------



## Insane (24 Februar 2009)

Ideen hab ich wirklich genug aber mit der umsetzung hängts grad irgendwie =) 

bin auch noch ziemlich neu auf dem gebiet sps. könntest du mir vill. etwas näher erklären wie ich das machen kann


----------



## dtsclipper (24 Februar 2009)

Aber gerne!

Also wie gesagt:

1. Mit dem Taster einen Merker setzen, nennen wir ihn Lampenmerker

2. Mit diesem Merker und dem Taktmerker 1 Sekunde aus der CPU einen Sondertakt zaubern


```
U     "Lampenmerker"
      U     "Taktmerker 1s"
      FP    #Flanke_1_Sec
      SPB   w12

      L     #Count_ten
      +     1
      T     #Count_ten

w12:  NOP   0
      L     #Count_ten
      L     10                          // 10S
      >=I   
      =     #Takt 10s

      UN    #Takt 10s
      SPB   re12

      L     0
      T     #Count_ten

re12: NOP   0
```

Und dann noch oben gebauten #Takt 10s mit dem Lampenmerker zum Ausgang verheiraten

dtsclipper


----------



## Insane (24 Februar 2009)

Sieht das jetzt nur so kompliziert aus ?? oder ist es das wirklich ?? 

kann man das irgendwie einfach in fup dastellen ??


----------



## peter(R) (24 Februar 2009)

oder aber das taktmerkerbyte aktivieren da gibt es einen 10 sec takt ( 10s ein, 10s aus

u taster
s Hilfswerkwer

u hilfsmerker
u 10s taktmerker
= ausgang

dann halt nachwas zum rücksetzen dranbasteln

peter(R)


----------



## dtsclipper (24 Februar 2009)

peter(R) schrieb:


> oder aber das taktmerkerbyte aktivieren da gibt es einen 10 sec takt ( 10s ein, 10s aus



ECHT? bei mir gibt's maximal 2sec, deswegen ja der ganze Zinnober...


----------



## dtsclipper (24 Februar 2009)

Dazu noch ein Screenshot:


----------



## peter(R) (24 Februar 2009)

Entschuldigung du hast recht die 10 sind 10 Hz !!


peter(R)


----------



## ukofumo (24 Februar 2009)

Warum so umständlich über eines der Taktmerkerbytes?


```
UN    T      2
      L     S5T#10S
      SE    T      1
      U     T      1
      L     S5T#10S
      SE    T      2
      
      U     E0.0  //Taster Einschalten
      S     M      0.0
      U     T      1
      U     M      0.0
      =     A4.0  // Ausgang Lampe
```
 
Gruß ukofumo


----------



## dtsclipper (24 Februar 2009)

ukofumo schrieb:


> Warum so umständlich über eines der Taktmerkerbytes?



Wenn schon dann Richtig!
Alles andere wäre zu einfach!

dtsclipper


----------



## ukofumo (24 Februar 2009)

einfache Frage.... einfache Antwort....   

gruß ukofumo


----------



## Insane (24 Februar 2009)

Ihr seit viel zu krass

hauptsache kompliziert ohne ende *ROFL*

aber das sollte echt so einfach wie möglich gelöst werden. am liebsten wäre mir ein FUP mit 3 - 4 Bausteinen gewesen 

aber trotzdem danek für alle antworten


----------



## vierlagig (24 Februar 2009)

10s sind doof, die lassen sich scheiße rechnen ... mach doch 8 


```
*
FUNCTION "PULSE_GENERATOR" : VOID
TITLE =PULSE GENERATOR
//with PLC PULSE 1sec:  1 to 32768 seconds
//with PLC PULSE 2sec:  2 to 65536 seconds
//
//DATE:     18.02.2008
//AUTHOR:   4lagig
//VERSION:  V0.1 BasicVer
AUTHOR : '4lagig'
FAMILY : BoolGF
VERSION : 0.1

VAR_INPUT
  xPlcPulse : BOOL ; //PLC PULSE MB x.5 for 1sec
  iMwByNumber : INT ; //MW number that will be for pulse
END_VAR
VAR_IN_OUT
  xHelpFlag : BOOL ; //just a FP-help flag
END_VAR
BEGIN
NETWORK
TITLE =
      U     #xPlcPulse; //READ PLC PULSE
      FP    #xHelpFlag; //CHECK FOR POS TRIGGER
      SPBN  _001; //IF NOT GO BE
      L     #iMwByNumber; //LOAD MW NUMBER
      SLD   3; //MADE POINTER  
      LAR1  ; //AND LOAD IN AR1
      L     MW [AR1,P#0.0]; //LOAD MW
      L     1; //INCREMENT
      +I    ; // 
      T     MW [AR1,P#0.0]; //TRANSFER TO MW
_001: SET   ; 
      SAVE  ; 
      BEA   ; 
END_FUNCTION
 
ORGANIZATION_BLOCK "CYCL_EXC"
TITLE = "Main Program Sweep (Cycle)"
VERSION : 0.1

VAR_TEMP
  OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
  OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
  OB1_PRIORITY : BYTE ; //Priority of OB Execution
  OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
  OB1_RESERVED_1 : BYTE ; //Reserved for system
  OB1_RESERVED_2 : BYTE ; //Reserved for system
  OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
  OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
  OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
  OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
END_VAR
BEGIN
NETWORK
TITLE =
      CALL "PULSE_GENERATOR" (
           xPlcPulse                := "xPLCPulse1Hz",
           iMwByNumber              := 100,
           xHelpFlag                := "xHelpFlag01");
      U     "xTrigger"; 
      FP    "xHelpFlag02"; 
      X     "xHelpFlag03"; 
      =     "xHelpFlag03"; 
      U     "xHelpFlag03"; 
      U     "xPulse8s";  //m101.3
      =     "xOut"; 
END_ORGANIZATION_BLOCK
```


----------



## dtsclipper (24 Februar 2009)

@Insane:
Viel kürzer als Ukofumos Lösung wirds nicht gehen, wobei er nur einen allgemeinen Takt verwendet, der mit Deinem Trigger ( Schalter ) nicht synchronisiert wird.

Und wieer stellen wir fest:
Vermeintlich leichte Aufgaben können viel Code nach sich ziehen!

griele Füße dtsclipper

P.S. Stehe für weitere Fragen gerne zur Verfügung!


----------



## dtsclipper (24 Februar 2009)

vierlagig schrieb:


> 10s sind doof, die lassen sich scheiße rechnen ... mach doch 8



Waren 10 nicht gefordert?

Aber keine Schlechte Idee...


----------



## Insane (24 Februar 2009)

vierlagig schrieb:


> 10s sind doof, die lassen sich scheiße rechnen ... mach doch 8
> 
> 
> ```
> ...


 

und natürlich muss vierlagig NOCH EINEN drauf setzen =)


----------



## ukofumo (24 Februar 2009)

tzzztz tzzztz mit nix zufrieden


----------



## vierlagig (24 Februar 2009)

Insane schrieb:


> und natürlich muss vierlagig NOCH EINEN drauf setzen =)


 
wenigstens kann ich die funktion wieder abschalten


----------



## BadTaste (24 Februar 2009)

Na mal sehen was jetzt kommt  (den UG gibts doch nicht mehr oder?)

schöne Grüße
Michael


----------



## Mangokind (24 Februar 2009)

```
CALL  "TIME_TCK" //sfc64 gibt die zeit in millisekunden zurueck, seitdem letzten stromausfall/start
       RET_VAL:=#zeit   //TIME-variable...
 
set
U E 1.0 //taste zum einschalten
S M 1.0
 
set
U(
L #zeit
mod 10000   //alle 10000 ms
L 0
==D
)
U M 1.0      //nach dem einschalten
UN A 1.0    //wird der wert von A 1.0 invertiert
= A 1.0
```


----------



## Jole (26 Dezember 2009)

ukofumo schrieb:


> tzzztz tzzztz mit nix zufrieden


bei deiner lösung wird die lampe erst nach 10 sek eingeschaltet bei dieser
wird die lampe gleich an und nach 10 sek aus und es gibt noch ein Stop
Taster


----------

