Zeit über 2,5 Stunden ???

Deep Blue

Level-2
Beiträge
431
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich brauche einen Enschaltverz. Timer, wo ich auch einen Zeitwert grösser als 2 Stunden, 46 Minuten eingeben kann. Im Step 7 Hilfethema heisst es dazu "Sie können einen Zeitwert von max. 9 990 Sekunden bzw. 2H_46M_30S eingeben.". Das ist ja gut und schön, eine Lösung wird aber nicht angeboten. Bei Volker habe ich mir die Datei "Timer.zip" runter geladen. Nur ist mir dort das drumherum zu viel. Gibt es nicht noch eine kürzere Variante?:confused:
 
Hallo!
siehe dir mal die IEC Zeitfunktionen an. (SFB3 TP, SFB4 TON, SFB5 TOF)
Da sollte eine Zeit von über 24 Tagen möglich sein.

godi
 
Bei Volker habe ich mir die Datei "Timer.zip" runter geladen. Nur ist mir dort das drumherum zu viel. Gibt es nicht noch eine kürzere Variante?:confused:

wieso viel drumrum?

du brauchst doch nur den fc aufrufen und ein paar parameter dranschreiben. fertig.
ist nicht viel mehr zu parametrieren als an einer stinknormalen zeit von s7.
du musst nicht die db's benutzen, so wie ich da in dem beispiel gemacht habe. das ist sinnvoll, wenn der baustein oft benutzt wird.

der ganz klare nachteil der sfb3-5 ist, das du jeweils einen db dafür brauchst. es sei denn du verwendest multiinstanzen.
 
Zuletzt bearbeitet:
Guten Morgen!

Die SFB findest du in den Bibliotheken -> Standart Library -> System Function Blocks.
Wenn du mit den Hilfefragezeichen auf den jeweiligen SFB klickst dann bekommst du die Hilfe dazu.

Hier noch ein kleines Beispiel mit Multiinstanz (AWL Quelle):

Code:
FUNCTION_BLOCK FB 1
TITLE =
VERSION : 0.1
 
VAR
  TP : SFB 3; 
  TON : SFB 4; 
  TOF : SFB 5; 
END_VAR
BEGIN
NETWORK
TITLE =TP
      CALL #TP (
           IN                       := E      1.0,
           PT                       := T#1D22H5M12S3MS,
           Q                        := A      1.0);
NETWORK
TITLE =TON
      CALL #TON (
           IN                       := E      1.1,
           PT                       := T#9S543MS,
           Q                        := A      1.1);
NETWORK
TITLE =TOF
      CALL #TOF (
           IN                       := E      1.2,
           PT                       := T#12H22M46S,
           Q                        := A      1.2);
END_FUNCTION_BLOCK
 
ORGANIZATION_BLOCK OB 1
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 =Multiinstanz aufruf
      CALL FB     1 , DB     1 ;
 
END_ORGANIZATION_BLOCK

godi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch einfacher ist es, wenn man hinter die erste Einschaltverzögerung noch eine weitere setzt ;)
Lässt man den ersten eben bis 24h laufen .. und den zweiten dann bis 10 Stunden und schon hat man 34 Stunden zusammen..

MfG Mainzl0r
 
Zeitzähler

Hallo,

für viele Anwendungen reicht es, mit einem Zähler einen Taktmerker herunterzuzählen. Dann geht die Zeit z.B. im Minutentakt bis 999 Minuten, das sind schonmal mehr als 16 Stunden.
 
Ich habe jetzt den SFB 4 (TON) benutzt, klappt damit sehr gut. Aber Werner, Deine Idee ist so einfach wie genial und lag die ganze Zeit offenbar vor einem. Man muss nur erst mal drauf kommen. Danke für alle Beiträge !!!:p
 
Zurück
Oben