Deklarationsfelder in Universal Fc (Problem mit Timer)

A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Ich bin noch ganz neu beim schreiben von Sps Programmen und hab da ein Problem. Und zwar hab ich einen Universal Fc versucht zu bauen. Bloss hab ich in meiner Schaltung einen Timer (T1) , aber es darf ja nicht T1 stehen bleiben weil wenn man sonst den Universal Fc mehrmals aufruft bekommt man Probleme. So nur was und wo soll ich was in die Deklarationsliste schreiben. Weil egal was ich bis jetzt versucht hab, das wort über dem Timer blieb immer rot. Hoff mal ihr könnt mir helfen
 

Ralf

Well-known member
Beiträge
194
Punkte Reaktionen
50
Ich kopiere mal hier nochmal mein Beispiel 'Ralf bastelt Timer' aus nem anderen Topic, damit umgeht man viel Timerärger
Speichernde Einschaltverzögerung über Analogeingang 0 - 240 minuten
Code:
Variablen 


Statisch: 
Tempzeit   DINT 
Flankenmerker   BOOL 
Rennt      BOOL 

Eingänge: 
OB_Letzter   INT  // Hier immer OB_PREV_CYCLE 'auflegen' 
Zeit      INT  // Der Analoge Eingang 
Schalter   BOOL 

Ausgänge: 
Geschaltet   BOOL 

Programm: 

   U   Schalter 
   FP   Flankenmerker 
   SPB    Init   // Bei Positiver Flanke am Schalter Initialisierung durchlaufen
    
   UN   Rennt    
   BEB  // Wenn kein Timer läuft 'Aus die Maus'


   L    Tempzeit  // ansonsten läuft ja die Zeit, dann nehme die gesetzte Zeit (Millisekunden) 
   L   OB_Letzter // nehme OB_PREV_CYCLE (vorher eingeleden) OB1 letzter in Millisekunden
   -D         // Typenkonlikt, aber geht  ** Zieh die von der Restzeit ab 
   T   Tempzeit // Schreib neue Restzeit
   L   D#0 
   <D // Wenn Restzeit kleiner Null
   R   Rennt // Rücksetzte Zeit läuft
   S   Geschaltet // Setze Ausgang für Fertig

BE // Hier gehört nen BE hin sonst geht es nicht 
Init:   UN    Rennt // Die Init Prozedur
   S   Rennt // Setze Rennt und Rücksetze geschaltet
   R   Geschaltet 

   L   Zeit // Speichere Die zu laufende Zeit in Millisekunden in den Timer
   ITD   // Hier über Analogeingang
   DTR 
   L    27648 
   ITD 
   DTR 
   /R 
   L   1.44 E7  // 240 Min in Millisek. 
   *R 
   RND 
   T   Tempzeit    
   BE
Müßte entsprechend modifiziert für Deine Zwecke gehen


Gruß

Ralf

P.S.
Vorsicht, wenns über viele Tage geht,
über 590 Stunden kriegt man Schwierigkeiten
 
OP
A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
ohje das mir alles zu kompliziert.....hab ja erst seit kurzen damit zu tun (Ausbildung) Kann man das nicht leichter erklären was man die Tabelle mit Deklarationsfeldnern schreiben muss wenn man einen timer hat??
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
Hi,
kein Problem. Schreib in die Deklaration des FCs unter Eingang "Timer_Nr_1" vom Typ "TIMER"

An dein Baustein schreibst Du "Timer_Nr_1" , fertig.

Für die Zeit geht es ähnlich, Eingang-> T_Dauer ->Typ S5TIME und fertig.

Bei abspeichern meldet dir Simatic noch die Schnittstellenänderung und ab.

Beim Aufruf des FCs hast du jetzt Parameter, die du übergeben kannst.


Gruß pt
 
Oben