Step 7 Verzögerung für nachfolgende Netzwerke

Zuviel Werbung?
-> Hier kostenlos registrieren
Es werden Daten vom Rechner zur SPS und von der SPS zum Rechner gesendet. Da aber der Rechner die Daten nicht so schnell verarbeiten/empfangen kann, muss der Sendebefehl einfach bei jedem Aufruf des entsprechenden FC's für eine kurze Zeit verzögert werden.

Hallo!

1. Wie lange ist denn jetzt deine aktuelle Zykluszeit?
2. Sind die 3ms Verzögerung von dir so gewählt oder reicht es auch wenn z.B. alle 10ms die ganzen Netzwerke aufgerufen werden? => Dann käme ev. ein Weckalarm-OB in Frage?
 
Hi nutellahase,

also es läuft soweit ja alles prima. Die Zykluszeit beträgt 35-40ms; die 3ms wurden von mir gewählt aber länger ist kein Problem.

Mir geht es jetzt eigentlich nur noch um das Verständis - wie das mit dem Zyklus vonstatten geht. Stimmt meine Beschreibung in Thread Nr. 40; oder liege ich da völlig falsch?

Leider finde ich so einen "Spezialfall" mit dem Befehl BEB nicht in einem Lehrbuch um das mit dem Zyklus auf die Reihe zu bekommen... :confused:

Lieben Dank!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

vollmi hat das ja schon im Beitrag #31 erwähnt.. es kann sein, dass die nachfolgenden Befehle bei nie ausgeführt werden!

Sagen wir mal der BEB dauert 10ms. Die Zykluszeit beträgt 40ms. So, nun wird beim Aufruf der Fkt. (z.B. über einen Timer) eben dieser besagte Befehl BEB ausgeführt und anschließend die FC sogleich wieder verlassen, da BEB aktiv.
BEB ist lediglich ein Befehl der höchstens einige µs (Mikrosekunden) in Anspruch nehmen wird, also sicherlich dauert die Ausführung für diesen Befehl niemals 10ms (es sei denn es handelt sich um eine Steinzeit SPS :ROFLMAO:). BEB steht dabei für BausteinEndeBedingt, d.h. es wird, sobald das VKE "1" ist, der aktuelle Baustein verlassen und das Programm setzt seinen Durchlauf im nächsten Baustein fort. Alle nachfolgenden Programmzeilen die nach BEB stehen werden somit in diesem einen Zyklus nicht mehr ausgeführt! Das kann sogar Auswirkungen auf die Zykluszeit haben. Kommst du nun im nächsten SPS Zyklus wieder an die gleiche Stelle wird bei BEB wiederum geprüft ob das VKE immer noch "1" ist. Ist es "0" werden die nachfolgenden Befehle wieder ausgeführt. Neben BEB gibt es noch BEA (BausteinEndeAbsolut) und BE (BausteinEnde). Bei BEA wird VKE unabhängig der aktuelle Baustein beendet (Bei BE bin ich mir jetzt leider nicht mehr sicher ob es das gleiche wie bei BEA oder BEB hervorruft ich glaube dieser Befehl stammt noch aus S5 Zeiten??).

Innerhalb dieser 40ms Zykluszeit wird ja die FC mit dem BEB-Befehl nicht mehr aufgerufen, sondern erst wieder, wenn ein neuer Zyklus gestartet ist. Dann aber ist ja auch der Timer mit den 10ms längst abgelaufen und wird beim erneuten Funktionsaufruf wieder aktiviert, so dass BEB wieder aktiv ist und die FC verlassen wird. Stimmt das soweit?

Dann wäre es aber in der Tat ja doch so, dass alles nach BEB niemals durchlaufen wird!

Das wäre ja dann nur der Fall, wenn die Timerzeit höher als die Zykluszeit gewählt wird.... oder sehe ich das wieder einmal falsch?
Wenn du eine Zykluszeit von 35-40ms und einen Timer mit 3ms hast dann kannst du das ja mal online beobachten ob die Befehle jemals ausgeführt werden (also ob Daten am PC ankommen). Von der Theorie her hast du recht. Die Timer laufen asynchron zur Programmbearbeitung müssten also am Zyklusanfang einen anderen Wert aufweisen als am Zyklusende.

Generell kann ich dir aber noch mitgeben, dass BEB,BEA und BE mit Vorsicht behandelt werden sollten. Bei Setz und Rücksetzbefehlen die beispielsweise nach einem BEB stehen kann dann schon was schiefgehen.
 
Zuletzt bearbeitet:
Zurück
Oben