TC3: FB innerhalb eines anderen FBs schneller aufrufen

Beiträge
5.673
Reaktionspunkte
1.174
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
bitte entschuldigt den nicht sonderlich klaren Titel, aber ich wusste nicht, wie ich es anders formulieren könnte.
Es geht darum, dass innerhalb eines FBs ein anderer FB bedingungslos aufgerufen wird, der, wenn er mal was tut und nicht im Lerrlauf arbeitet, relativ viele Zyklen braucht. Ich könnte diesen FB jetzt natürlich in ein PRG einbinden, dieses in einer schnellen Task laufen lassen und mir eine Schnittstelle bauen, aber dies würde ich gerne vermeiden. Gibt es eine andere Möglichkeit diesen FB automatisiert in dem anderen FB mit einer höheren Geschwindigkeit aufzurufen als die Zykluszeit des aufrufenden FBs.
 
Hallo,

den von dir gewünschte Ansatz gibt es in der Form leider nicht.

Wenn ich es richtig verstanden habe geht es dir darum, dass, sagen wir mal der untergeordnete FB z.B. 5 Zyklen, also Durchläufe braucht um ein Ergebniss zu erhaten. Dieses Ergebniss hättest du aber gerne in der gleichen Aktualisierungsrate wie der aufrufende Baustein.

Für mich ist die logische Konsequenz hieraus (falls deine maximale Zykluszeit des Tasks damit nicht allzu sehr ansteigt) den Baustein einfach innerhalb eines Zykluzs 5 mal hintereinander aufzurufen.
Wie sähe das in der Praxis aus?


Da ich deine Programmiersprache nicht kenne, hier mal als Beispiel in ST, in FB ginge das auch mittels Sprungbefehlen


for i=1 to 5 by 1 do


call FB12

end_for;
 
Warum braucht der FB mehrere Zyklen wenn er was zu tun hat? Kann er nicht direkt alles nacheinander abarbeiten?
Es ist ein Kommunikatiosnbaustein und der braucht immer eine feste Anzahl Zyklen, mehrfach aufrufen hilft allerdings auch nicht, weil die vielen Zyklen braucht er ja nur, wenn er was empfängt.
Ich könnte höchstens mal schauen, ob es ein Flag gibt, dass er anfängt was zu empfangen und ihn dann mehrfach aufrufen.
 
Ich glaube du missverstehst mich.
Kann der FB das was er anscheinend mehrmals tun muß nicht direkt in einer While-Schleife (mit Rückwärtssprung) tun? Oder muß zwischendurch das Betriebssystem (die "Systemecke") ran? Oder würde die Schleife länger als die Zykluszeit dauern? - Dann würde nämlich 5x nacheinander aufrufen auch nichts bringen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist ein Kommunikatiosnbaustein und der braucht immer eine feste Anzahl Zyklen, mehrfach aufrufen hilft allerdings auch nicht, weil die vielen Zyklen braucht er ja nur, wenn er was empfängt.
Ich könnte höchstens mal schauen, ob es ein Flag gibt, dass er anfängt was zu empfangen und ihn dann mehrfach aufrufen.

Empfängt der FB denn weiter, wenn zwischen den Aufrufen kein Task-IO-Update stattfindet? Wenn ja, wäre es eine heikle Kiste, weil sich der Inhalt des Empfangspuffers ändern könnte, während der FB darauf zugreift.
 
Handelt es sich um einen fertigen FB von Beckhoff?
Was hast Du für eine serielle Klemme?

Warum kannst Du nicht auf ein Done vom FB warten? Bei Kommunikation ist es oft so das diese asynchron zum Zyklus läuft.
 
Handelt es sich um einen fertigen FB von Beckhoff?
Was hast Du für eine serielle Klemme?

Warum kannst Du nicht auf ein Done vom FB warten? Bei Kommunikation ist es oft so das diese asynchron zum Zyklus läuft.
Das Ganze ist etwas kurios. Es ist eine EL6002, aber irgendwie hat der Kunde hier eine eigene LIB geschrieben so das zur Ansteuerung keine Beckhoff Lizenz benötigt wird. Ich warte ja auf ein Done, aber das dauert halt immer 11 Zyklen, da es nicht wie bei der Beckhoff Lib einen "Hintergrundprozess" gibt den man in einer schnelleren Task laufen lassen könnte.

@Harald: Da könnte ich beim Ersteller der Lib hier im Hause mal nachfragen und es auch mal testen.

@StructuredTrash: Kann ich leider nicht sagen.

Die Angelegenheit hat sich allerdings im gewissen Rahmen eh erledigt, da der Kunde mit der Durlaufzeit bei 10ms Zykluszeit leben kann. Ich dachte er erwartet Bearbeitungszeiten im mittleren zweistelligen ms-Bereich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Ganze ist etwas kurios. ...

ich würde es eher dämlich nennen. Die Lizenz die Du meinst kostet Liste glaube ich 40€ für eine mittlere Plattform. Für die kleinen Plattformen noch weniger. Die Bausteine haben dann ein definiertes und im Zusammenspiel mit der Klemme getestetes Verhalten. Das schreit förmlich danach, dass man hier jemanden ran setzt um die Kosten weg zu optimieren.
 
Zurück
Oben