Timer Einschalt und /oder Auschaltverzögert Selbst Erstellen

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hilfe,
wer kann mir helfen einen Timer selbst zu programmieren ( in einem FB ) ?? Mir reichenm die 255 Timer meiner S7-315-2DP-STeuerung nicht aus !! Wer kann mir helfen ?? Dringend !!
Im vorraus schonmal dankeschöb :!: :?: :idea:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
was hast Du den schönes vor, vieleicht geht es auch einfacher??? Weil zu jedem FB gehört ein DB (es sei denn man nimmt einen Instanzen DB), das wird dann ganz aufgebläht. Also schreib mal auf was Du vorhast.

mfg

dietmar
 
Hallo,
kannst auch in der S7 Hilfe unter Erstellen folgendes Thema finden FB-Motor. Oder Du suchst unter denSiemenslernmodulen die richtigen raus.


mfg

dietmar
 
hab ich mal für eine s5 gebraucht.

zählt über ein dw.

ist s5. lässt sich aber leicht an s7 anpassen.

takt sollte 1 sek oder 1 min sein.
wenn run=1 zählt die zeit rückwärts.
run=0 dw auf zählwert setzen
out=1 wenn dw 0 erreicht hat

Code:
Netzwerk 1
Name :TIME-SE
Bez  :TAKT      E/A/D/B/T/Z: E  BI/BY/W/D: BI
Bez  :DB        E/A/D/B/T/Z: B
Bez  :DW        E/A/D/B/T/Z: E  BI/BY/W/D: W
Bez  :RUN       E/A/D/B/T/Z: E  BI/BY/W/D: BI
Bez  :TW        E/A/D/B/T/Z: D  KM/KH/KY/KC/KF/KT/KZ/KG: KF
Bez  :OUT       E/A/D/B/T/Z: A  BI/BY/W/D: BI
 
     :
     :***
Netzwerk 2
     :AWL
     :B   =DB
     :
     :U   =RUN
     :SPB =RUN
     :
     :LW  =TW
     :T   =DW
     :U   =OUT
     :RB  =OUT
     :BEA
     :
RUN  :
     :UN  =TAKT
     :SPB =ENDE
     :
     :L   =DW
     :L   KF +1
     :-F
     :T   =DW
     :
     :L   =DW
     :L   KF +0
     :>=F
     :SPB =OK
     :L   KF +0
     :T   =DW
OK   :
     :
ENDE :L   KF +0
     :L   =DW
     :!=F
     :=   =OUT
     :
     :BE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
sollten vieleicht alle zum lesen bekommen, Fabian hat geschrieben:
Hi,
Ich habe eine Beleuchtungsanlage zu Programmieren, die pro Scheinwerfer 4 Timer benötigt.
Der Erste ( S_EVERZ ) verzögert eine OK Meldung um ca. 2 min
Der Zweite (S_AVERZ ) sperrt den scheinwerfer gegen das wiedereinschalten vor ablauf einer Abkühlzeit um ca. 2 min
Der Dritte ( S_EVERZ ) überwacht die OK Meldung und gibt wenn diese nicht kommt nach ca. 2 min eine Störmeldung
Der Vierte ( S_AVERZ ) sperrt das Ausschalten direkt nach dem Boosten um ca.10 sec.

Die Zeiten sollten "relativ" einfach zu verstellen sein, vielleicht sogar aussen am baustein. Der momentane DB ist ein Instanz-DB.


Nach Adam Riese müßten das über 63 Strahler sein, müßen die wirklich jeder für sich autark angesteuert werden?

mfg
dietmar
 
Hallo,
das was mir jetzt dazu einfällt ist: die Systemzeit nehmen, und dann wenn der Strahler eingeschaltet wird speichern, danach vergleichen ob die Bedingungen erfüllt sind. Aber die Sache ist nicht von Pappe, ob die 315er die ganze rechnerei packt :roll: .
Vieleicht fällt ja einem Anderen was ein.

mfg

dietmar
 
du kannst dir doch auch "pseudozeiten" im OB35 erzeugen. indem du datenwörter aufaddierst und dann einfach im program den wert vergleichst und daraus deine bedingung ableitest.



L act_val_t01 // actual value timer
L 1.000000e-001 // 1.0e-002 = 10ms - 1.0-001 = 100ms
+R
T act_val_t01 // * actual time [sec] *
 
Als Anregung hier einen "Timer" zur Fehlerüberwachung:

Code:
...

VAR_INPUT
  FRG : BOOL ;	//Freigabe Bewegung allgemein
  FRG_STEP_AUTO : BOOL ;	//Freigabe Bewegung für Step und Automatik
  SK_EIN : BOOL ;	//aus Schrittkette --> Einschalten
  SK_AUS : BOOL ;	//aus Schrittkette --> Ausschalten
  HAND_EIN : BOOL ;	//aus Handsteuerung --> Ein
  HAND_AUS : BOOL ;	//aus Handsteuerung --> Aus
  STATUSANZEIGE_AKTIV : BOOL ;	//Ausgabe der Statusnzeige Ein --> Aus spart Zykluszeit !!!
  GRUNDBEDINGUNG : BOOL ;	//Freigabe bei Grundstellungsfahrt
  GRUNDFAHRT : BOOL ;	//Grundstellungsfahrt ausführen
  HARDWARE_o_k : BOOL ;	//Anlage ist eingeschaltet und IO
  QUITT_ERROR : BOOL ;	//Quittierung Fehler
  ZEIT_IMPULS_100ms : BOOL ;	//Zeitimpuls(100ms)
  WERT_LAUFZEIT_100ms : INT ;	//Wert Laufzeit (Xx100ms)
  ENDLAGEN_WACHE_AKTIV : BOOL ;	//Endlagenüberwachung aktiv
  ENDLAGE_G : BOOL ;	//Endlage in -G-
  ENDLAGE_A : BOOL ;	//Endlage in -A-
  ENDLAGE_G_AUS : BOOL ;	//Abschalten bei Endlage Grund
  ENDLAGE_A_AUS : BOOL ;	//Abschalten bei Endlage AST 
END_VAR
VAR_IN_OUT
  STATUS : DWORD ;	//Status, belegung DWORD siehe Bausteinkommentar
  AUSGANG_G : BOOL ;	//Ausgang ->G
  AUSGANG_A : BOOL ;	//Ausgang ->A
  AKKU_LAUFZEIT : WORD ;	//Laufzeitüberwachung
  STOERMELDUNG : BOOL ;	//Laufzeitstörung
  STOERBIT : BOOL ;	//Störbit im Datenbereich des OP
  QUITTIERBIT_OP : BOOL ;	//Quittierbit OP
  QUITTIERBIT_SPS : BOOL ;	//Quittierbit SPS
END_VAR
VAR_TEMP
  LAUFZEIT_EIN : BOOL ;	//Endlage überwachen
  ZM_AUSGANG_G : BOOL ;	//Zwischenmerker Ausgang Grundstellung
  ZM_AUSGANG_A : BOOL ;	//Zwischenmerker Ausgang Arbeitsstellung
  ERROR_ENDLAGE : BOOL ;	//Fehler Endlage
  LAUFZEIT_RESET : BOOL ;	//Laufzeit rücksetzen
  Status_intern : DWORD ;	//internes Statuswort
END_VAR

...

NETWORK
TITLE =Logik Laufzeitüberwachung

      U(    ; 
      U     #AUSGANG_G; 
      UN    #ENDLAGE_G; 
      O     ; 
      U     #AUSGANG_A; 
      UN    #ENDLAGE_A; 
      O     ; 
      UN    #ENDLAGE_G; 
      UN    #ENDLAGE_A; 
      U     #FRG_STEP_AUTO; 
      )     ; 
      U     #HARDWARE_o_k; 
      =     #LAUFZEIT_EIN; 
NETWORK
TITLE =Laufzeit löschen

      U(    ; 
      U     #AUSGANG_G; 
      UN    #ENDLAGE_A; 
      U     #ENDLAGE_G; 
      O     ; 
      U     #AUSGANG_A; 
      UN    #ENDLAGE_G; 
      U     #ENDLAGE_A; 
      O     ; 
      UN    #SK_EIN; 
      UN    #SK_AUS; 
      UN    #HAND_EIN; 
      UN    #HAND_AUS; 
      UN    #GRUNDFAHRT; 
      U(    ; 
      O     #ENDLAGE_G; 
      O     #ENDLAGE_A; 
      )     ; 
      )     ; 
      UN    #STOERMELDUNG; 
      O     ; 
      U(    ; 
      O     #QUITTIERBIT_OP; 
      O     #QUITTIERBIT_SPS; 
      )     ; 
      U     #STOERMELDUNG; 
      =     #LAUFZEIT_RESET; 
NETWORK
TITLE =Logik Endlagenüberwachung

      U     #ENDLAGE_G; 
      U     #ENDLAGE_A; 
      U     #ENDLAGEN_WACHE_AKTIV; 
      =     #ERROR_ENDLAGE; 
NETWORK
TITLE =Fehlerüberwachung
//Lösche Laufzeit
      UN    #LAUFZEIT_RESET; 
      SPB   M001; 

      CLR   ; 
      =     #STOERMELDUNG; 
      L     0; 
      T     #AKKU_LAUFZEIT; 
      SET   ; 
      R     #STOERMELDUNG; 

M001: NOP   0; 

//??Einschaltzeit überschritten
      L     #AKKU_LAUFZEIT; 
      L     #WERT_LAUFZEIT_100ms; 
      >=I   ; 
      S     #STOERMELDUNG; 
      SPB   ENDE; 

      U     #ERROR_ENDLAGE; 
      S     #STOERMELDUNG; 
      SPB   ENDE; 

//??Zeitimpuls
      ON    #ZEIT_IMPULS_100ms; 
      ON    #LAUFZEIT_EIN; 
      SPB   ENDE; 

      L     #AKKU_LAUFZEIT; 
      L     1; 
      +I    ; 
      T     #AKKU_LAUFZEIT; 
      SPA   ENDE; 

ENDE: NOP   0; 

...
 
Zurück
Oben