S5 FB alle n sek einmal aufrufen

cidex

Level-1
Beiträge
15
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte in S5 AWL einen FB nach einer Zeit von n Sekunden einmal aufrufen, dannach wieder n Sek warten.
Ich habe es mit einer Einschaltverzögerung versucht die nach ablauf einen Merker setzt. Ist der Merker gesetzt wird der FB aufgerufen.
Am Ende des FBs wird der Merker wieder rückgesetzt. Die Einschaltverzögerung beginnt von neuem wenn der Merker nicht gesetzt ist.

Allerdings funktioniert das nicht, der Timer läuft nicht an. Wenn ich die Merkervariable manuel setzte, läuft der Timer einmal ab.

Liegt das daran das der Timer eine Flanke zum anlaufen braucht?
Wie kann ich das Problem lösen?
 
Hallo,

es gab bei S5 doch auch schon Weckalarme, oder?
Schon mal in die Anleitung der CPU geschaut?
Welche ist es denn?


PS: ein Timer braucht eine Flanke, da hast du recht :ROFLMAO:


MfG
 
hmm,
das sieht dem sehr ähnlich was ich habe.
Allerdings kenn ich das Komando BEA nicht. Was tut das?
 
@cidex

Jabbas Code stimmt, man kann auch einen Sprungbefehl statt BEA nehmen. Allerdings ist es so, daß der FB einen Zyklus lang aufgerufen wird, dann läuft wieder die Zeit. Du solltest also nachsehen, ob der Timer oder der Merker noch anderswo verwendet werden, denn es muß ja eine Ursache haben, daß dein Code nicht läuft, obwohl er eigentlich laufen sollte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Andere Möglichkeit wäre in einem FB, da sind bei einer S5 auch Sprünge möglich, das funktioniert aber auch.
Nur nach dem BEA darf nix anderes mehr kommen, was man eventuell noch braucht.
 
Aha. also muss BEA wirklich vor dem Aufruf (bzw sprung zu meinem FB) sein?

UN M 1.0
L KT 010.1
SE T 1
U T 1
= M 1.0

UN M 1.0
BEA
// Hier den Baustein aufrufen

Was passiert da genau? - Dachte nach BEA beginnt die abarbeitung des bausteins wieder von vorne und alles was dannach steht wird nicht berücksichtigt.
 
Mist, ein Fehler!
Es muß BEB heißen, Bausteinende bedingt. (Das gab es doch ach bei S5???)
Ansonsten wie gesagt ein FB und SPB.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Baustein wird beendet, und alles was dahinter (im OB1) steht wird weiter berarbeitet. Wenn es nur einen gibt würde dieser halt wieder gestartet.

Aber ! Nur wenn die Zeit gerade abgelaufen ist wird der Code ausgeführt der hinter BEA steht , ansonsten wird er Baustein immer wieder ausgeführt.


DA FÄLLT MIR GERADE EIN RIESEN FEHLER AUF.

MUSS HEISSEN BEB

Baustein ENDE Bedingt.
BEA würde nicht funktionieren also

Code:
UN M 1.0
L KT 010.1
SE T 1
U T 1
= M 1.0
 
UN M 1.0
[COLOR=red][B][U]BEB[/U][/B][/COLOR]
// Hier den Baustein aufrufen

Da merkt man erst , wie lange S5 doch schon vorbei ist ...
 
Ja aber bei der S7 gibt es auch die Befehle BE, BEA und BEB... ;)
Wobei der Befehl BE von der S5 den Befehl BEA in der S7 entspricht.

godi

Es ist eigentlich genau umgekehrt, der Befehl BE der S7 entspricht dem Befehl BEA der S5.
Allerdings kann ich mich wirklich nicht erinnern BE in einem S7-Programm jemals gesehen zu haben.

Mfg
Manuel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Weckalarm

Hallo,

jabba schrieb:

Auch wenn man da BEB schreibt, sollte man sich drüber im klaren sein dass bei erfüllter Bedingung die nachfolgenden Anweisungen nicht mehr bearbeitet werden. Gibt sonst noch ganz lustige und interessante Effekte im Programmablauf :ROFLMAO: , insbesondere wenn danach noch Flankenauswertungen gemacht werden .... :)
Man sollte wirklich versuchen, nach Möglichkeit diese Bausteinaufrufe über Weckalarme auszuführen, ist einfach der saubere Weg.

Gruß

Question_mark
 
BE oder BEA, das ist sowas von egal

Hallo,

MSB schrieb:
BE entspricht nicht BEA!

Im Unterschied zu BE können nach BEA noch Anweisungen / Netzwerke usw. stehen.
Den Befehl BE gibt es imho überhaupt nicht mehr bei der S7, auch nichts vergleichbares.

BE und BEA haben aber eines gemeinsam : Alle danach stehenden Anweisungen werden im Programmablauf nicht mehr ausgeführt, egal welche Anweisungen im Baustein noch dahinter stehen. Es wirkt sich also nur auf den Editor im PG aus, ansonsten sche...egal ...
Aber man kann ja vorher mal ganz locker einen SPB/SPA/SPN/SPZ oder sonstwas über den BE/BEA machen

Gruß

Question_mark
 
Zuletzt bearbeitet:
Hallo,



BE und BEA haben aber eines gemeinsam : Alle danach stehenden Anweisungen werden im Programmablauf nicht mehr ausgeführt, egal welche Anweisungen im Baustein noch dahinter stehen. Es wirkt sich also nur auf den Editor im PG aus, ansonsten sche...egal ...

Gruß

Question_mark

Das ist schon richtig, aber BE ist "endgültig", während BEA übersprungen werden könnte.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Normal ist das nicht ...

Hallo,

MSB" schrieb:
Das ist schon richtig, aber BE ist "endgültig", während BEA übersprungen werden könnte.

BE ist nicht endgültig, da man im S5 Bausteinkopf die Bausteinlänge manipulieren kann ...
Aber natürlich wird das nicht gerade der Normalfall sein ;)

Gruß

Question_mark
 
Ich möchte in S5 AWL einen FB nach einer Zeit von n Sekunden einmal aufrufen, dannach wieder n Sek warten.

Hier noch einmal ein Programmbeispiel mit einem Taktgeber und einem bedingten Sprung zu einem Funktionsbaustein (SPB FB):

Code:
OB 1                                 F:TAKT@@ST.S5D                    LAE=30   
                                                                       Blatt   1
Netzwerk 1
0000      :                                    ********************************
0001      :                                    Taktgeber
0002      :                                    ********************************
0003      :
0004      :                                    ================================
0005      :                                    Taktgeber 1 Sekunde
0006      :                                    ================================
0007      :
0008      :UN  M   10.0                        Taktgeber 1 Sekunde
0009      :L   KT 001.2                        1 * 1 Sekunde
000B      :SE  T   10
000C      :
000D      :U   T   10
000E      :=   M   10.0                        Taktgeber 1 Sekunde
000F      :
0010      :                                    ================================
0011      :                                    Sollwertgeber
0012      :                                    ================================
0013      :
0014      :U   M   10.0                        Taktgeber 1 Sekunde
0015      :SPB FB  10                          Sollwertgeber
0016 Name :SOLLWERT
0017      :
0018      :BE

Gruß Kai
 
Das is jetzt allerdings interessant. Denn bis auf die Zeile 16 kommt alles so in meinem Programm vor. Nur das Zeilen 14 und 15 in einem anderem Netzwerk als die Timerinitialisierung stehn.
Werde es nochmals Versuchen.

@Kai: Muss der Merker im FB rückgesetzt werden?



edit: Seh schon was der unterschied ist. Ich habe mit dem Timer den Merker gesetzt:
U T 10
S M 10.0

und dann im FB rückgesetzt.
 
Zuletzt bearbeitet:
Zurück
Oben