Zeiten!

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
bitte nicht lachen aber ich bin noch frisch auf dem Gebiet komme aber langsam voran.
Meine Frage ist: Ich möchte gerne eine Pumpe Zeitabhängig ein und Ausschalten. Nur reden wir hier nicht von Millisekunden sondern immer in abstand von zwei Tagen. Also alle 48 Stunden brauche ich eine "1" an mein Flip-Flop. In der Schule hatten wir immer nur Zeiten wo wir Sekunden drangeschrieben haben. Bis wieviel max. kann man denn an ein Zeitglied dranschreiben den Zeitwert? Oder muss ich da was ganz anderes machen.
Danke im voraus.
 
welche sps benutzt du denn?
wenn du alle 2 tage eine änderung brauchst, ist es vielleicht sinnvoller, mit der echtzeituhr zu arbeiten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also es soll eine der 300 serie sein. Aber welche genau steht noch nicht so richtig. Gibt es da auch unterschiede? Und was meinst du mit einer echtzeituhr. Wie kann ich das verstehen?
 
lbuenger schrieb:
welche sps benutzt du denn?
wenn du alle 2 tage eine änderung brauchst, ist es vielleicht sinnvoller, mit der echtzeituhr zu arbeiten.

na ja. wenn man zu festen zeiten wechseln will, ist das natürlich sinnvoll.
will ich aber alle 48 std einen wechsel, müsste ich mir ja auch immer die startzeit merken.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo walli,
wenn du die s7-300 einsetzt, hast du eine echtzeituhr an bord. die kannst du über systemfunktionen abfragen, stellen und dir aktuellen daten (jahr, monat, tag, stunde, minute, sekunde, millisekunde und wochentag) in z.B. datenwörter ablegen. diese wörter kannst du dann für vergleiche benutzen o.ä..
um dir z.b. einen eigenen sekundentimer zu basteln, benötigst du nur den sekundentaktmerker der cpu. diesen läßt du dann z.b. ein doppelwort (dint) hochzählen, dann stehen dir über 2 Millionen Sekunden zur Verfügung. also mehr als 550 Stunden bzw. 24 tage zur verfügung. denk dran, daß du die zählung über eine flanke laufen läßt und daß du den zeitzähler auch irgendwann zurücksetzen mußt.
viel spaß
 
Das ist schon harter Tobak. Ich bin noch nicht ganz so fit wie die anderen die da auf der Seite vorschläge geben. Dachte es würde einfacher gehen. Denke ich muss mir das wohl erklären lassen. Dachte ich schaffe das alleine. Ich habe erst so Schulstandart drauf.
Mal sehen wie ich das hinkriege.
Trotzdem Danke.
 
hallo volker,

es kommt natürlich auf die anwendung an.
wenn ich ab einem bestimmten startpunkt immer alle 48 stunden eine änderung eines bits haben möchte, so habe ich dieses im rechtesten bit des tageswortes (jede positive flanke).
mit diesem bit arbeite ich z.b., um eine tägliche pumpenvertauschung zu realisieren.

gruß lutz
 
Zuviel Werbung?
-> Hier kostenlos registrieren
so hier mal eben der oben erwähnte s5 baustein für s7

ist eine AWL-Quelle
kannst du also so importieren.



Code:
DATA_BLOCK DB 10
TITLE =
VERSION : 0.1


  STRUCT 	
   DB_VAR : INT ;	//vorläufige Platzhaltervariable
   Zeit_1 : INT ;	
  END_STRUCT ;	
BEGIN
   DB_VAR := 0; 
   Zeit_1 := 0; 
END_DATA_BLOCK

FUNCTION FC 60 : VOID
TITLE =
AUTHOR : Lischnew
FAMILY : 'TIMER'
NAME : 'Time-SE'
VERSION : 1.0


VAR_INPUT
  Takt : BOOL ;	//positive Flanke. Sinnvoll sind 1 Sekunde oder 1 Minute.
  Run : BOOL ;	//Zeit läuft wenn dieses Bit 1-Signal hat. bei 0 wird die Zeit auf TW gesetzt
  TW : INT ;	//Zeitwert. 
END_VAR
VAR_OUTPUT
  Out : BOOL ;	//1 Signal wenn die Zeit abgelaufen ist. (DW hat 0 erreicht)
END_VAR
VAR_IN_OUT
  DW : INT ;	//Datenwort in dem die Zeit gespeichert wird. (DW wird dekrementiert)
END_VAR
BEGIN
NETWORK
TITLE =


      U     #Run; 
      SPB   RUN; 

      L     #TW; 
      T     #DW; 
      U     #Out; 
      R     #Out; 
      BEA   ; 

RUN:  UN    #Takt; 
      SPB   ENDE; 

      L     #DW; 
      L     1; 
      -I    ; 
      T     #DW; 

      L     #DW; 
      L     0; 
      >I    ; 
      SPB   OK; 
      L     0; 
      T     #DW; 
OK:   NOP   0; 

ENDE: L     0; 
      L     #DW; 
      ==I   ; 
      =     #Out; 


END_FUNCTION

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 =takt 1 sekunde

      UN    M      1.0; 
      L     S5T#1S; 
      SE    T      1; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
      U     T      1; 
      =     M      1.0; 
NETWORK
TITLE =

      U     M      1.0; 
      =     L     20.0; 
      BLD   103; 
      U     M      2.0; 
      =     L     20.1; 
      BLD   103; 
      CALL FC    60 (
           Takt                     := L     20.0,
           Run                      := L     20.1,
           TW                       := 20,
           Out                      := M      2.1,
           DW                       := DB10.DBW    1);
      NOP   0; 
END_ORGANIZATION_BLOCK
 
Warum nicht einfach SFB4 TON aus dem Standard Library nutzen - das geht bis 24 Tage. Ist im Unterverzeichnis System Function Blocks zu finden.
 
Zurück
Oben