Zeitverzögerung In Funktionsbaustein

moeggu

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Bin noch zimlich am Anfang mit S7 Programmierung

Habe nun ein problem

Ich habe einen Funktionbaustein der gestartet wird und einen Ausgang setz. Ein Eingang muss in der Zeit von 5 sek. kommen.

Das problem ist jetz aber dass die Einschaltverzögerung auf der Anzeige 5sek sek. bleibt und nie abläuft. Wen der Baustein im OB1 nur einmal aufgerufen wird funktioniert alles. Ich denke ich habe bei meiner Einschaltverzögerung etwas falsch gemacht. (Datenbausteine sind 2 stück vorhanden)


Freundliche Grüsse und vielen dank.
 
Hallo,
wahrscheinlich hast du in deinem Baustein überwiegend (oder sogar ausschließlich) Zugriffe auf absolute Operanden verwendet. Das ginge dann natürlich nicht. Wenn du aber konkret etwas wissen möchtest, dann wäre es doch hilfreich (weil meine Kristallkugel nicht mehr in Ordnung ist)m wenn du den Code deines FB's hier mal einstellst.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo moeggu,

Timer arbeiten Flankengesteuert.
Kann es sein, dass Du den Start des Timers einmal setzt und er dann die ganze Zeit auf 1 bleibt?

Grüße
Gebs
 
Der Start des Timers bleibt auf 1. Aber wen ich es ohne zweiten FB aufruf verwende Funktioniert es ja...

Der Pc zum programmieren hat keinen Internetanschluss und das ganze ist in FUB programmiert. Habe es jetz in AWL umgewandelt weiss aber nicht ob du damit etwas anfangen kannst...

Code:
U     #start
      S     #M_relais
      U     #M_reset
      R     #M_relais
      U     #M_relais
      =     L      0.0
      U     L      0.0
      L     S5T#5S
      SE    T      1
      U     #ueberwachug
      R     T      1
      NOP   0
      NOP   0
      U     T      1
      =     L      0.1
      U     L      0.1
      S     #M_stoer
      U(    
      O     #M_ok
      O     "T_stoer"
      )     
      R     #M_stoer
      U     #M_stoer
      =     #stoerrug
      U(    
      UN    L      0.1
      U     #M_relais
      U     #ueberwachug
      U     #relais
      S     #M_ok
      U(    
      O     #M_stoer
      O     "T_Stopp"
      )     
      R     #M_ok
      U     #M_ok
      )     
      L     S5T#1S
      SE    T      2
      NOP   0
      NOP   0
      NOP   0
      U     T      2
      =     L      0.2
      U     L      0.2
      BLD   102
      =     #M_reset
      U     L      0.2
      UN    #ueberwachug
      =     #ok
      U     L      0.0
      BLD   102
      =     #relais
 
... wie ich angenommen habe ... du arbeitest im Baustein mit Absolut-Operanden - hier den Timern. Das geht natürlich so, wenn du nur einen Aufruf des FB's verwendest - dann müssen die Timer ja auch nur dem einen Azfruf gehorchen.
Du mußt also für beide Aufrufe unterschiedliche Timer nehmen. Das könnte gehen in dem du die Timer auch als Parameter mit übergibst. Du köntest aber auch IEC-Timer (SFB3 .. 5) verwenden und die mit in die Instanz deines FB's einbauen (integrieren). Beides geht - was ist dir lieber ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da ich den Fb am schluss etwa 20 mal verwende wäre es sinnvoller IEC-Timer zu verwenden...

Wenn ich das richtig verstanden habe brauche ich sonst 20 verschiedene Timer...oder 40 weil ich im FB 2 habe...?
 
:p ... richtig, du bräuchtest sonst 40 verschiedene Timer.

Ist dir der Gebrauch (Einbindung in die Instanz) des IEC_Timer's (in deinem Fall SFB4 = SE) und die anschließende Verwendung desselben klar ?

Gruß
Larry
 
:confused:nein hab ich leider noch nie verwendet...

kann den der timer SFB4 rückgestellt werden. Den Timer den ich verwendet habe, hat ja eine Rückstellfunktion die ich verwende...also wen die zeit abgelaufen ist gibt es eine störrung aus...wen sie vorher per R zurückgestellt wird läufts weiter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja ... kein Beinbruch ...

Einbinden des SFB4 :
Variable im STAT-Bereich deines FB einlegen , z.B.
Code:
Name: Verzoegerung_1  Typ:SFB4
und natürlich
Name: Verzoegerung_2  Typ:SFB4

Hier könntest du auch die M's deklarieren - dann kannst du nämlich auch auf die von Aussen verzichten ... (also M_Reset etc.)

Aufruf des Bausteins :
Code:
U M_Relais
UN Ueberwachung
= L0.0
 
call Verzoegerung_1
  IN := L0.0
  PT := t#5s
  Q := L0.1
  ET :=
nun kannst du die Sequenz mit Timer T1 aus dem FB entfernen. Einen Reset-Eingang hat der SFB nicht. Die Beschaltung würdest du aber bei gleicher Anwendung wie oben für die SE-Timer auch nicht benötigt haben - das Wegnehmen des Eingangs bewirkt genau das Gleiche.

Ich denke, für T2 bekommst du das dann selbst hin.

Anmerkung :
Das Arbeiten mit TEMP-Variablen (z.B. L0.0) ist OK - man sollte sich aber grundsätzlich angewöhnen, sie im TEMP-Bereich des Bausteins mt Namen anzulegen und diesen dann in der Folge zu verwenden.

Gruß
Larry
 
...
Hier könntest du auch die M's deklarieren - dann kannst du nämlich auch auf die von Aussen verzichten ... (also M_Reset etc.)
Da ich ja momentan nur mit der S7-200 (S7-300 ist schon wieder 'ne große Weile her) arbeite:
Woran erkennst du denn, daß z.B. M_relais nicht schon im STAT-Bereich deklariert ist? Ich hätte das nämlich angenommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Woran erkennst du denn, daß z.B. M_relais nicht schon im STAT-Bereich deklariert ist? Ich hätte das nämlich angenommen.
Gar nicht ... ist blosse Spekulation.
Die Frage kann dir / uns nur der TE beantworten - ich schätze die Wahrscheinlichkeit dafür, dass ich richtig getippt habe, mit > 50% ein ...

Gruß
Larry
 
Zurück
Oben