Multitask Zugriff auf eine Netzwerkkarte
Wenn eine Netzwerkkarte aus mehreren Echtzeit-Kontexten (Tasks) genutzt werden soll, so muss dieses wie hier beschrieben realisiert werden.
- Es muss pro Echtzeit-Kontext (z. B. Task), aus welchem Daten empfangen oder gesendet werden sollen, ein TCP/UDP RT-Objekt angelegt werden.
- Der Parameter PassiveMode an allen TCP/UDP RT-Objekten legt fest, ob diese Objekte von dem RT-Ethernet Adapter eingegangene Frames abholen sollen oder nicht. Per Default ist PassiveMode auf FALSE, sodass die Pakete abgeholt werden.
Bei Multitask-Zugriffen sollten nur ein TCP/UDP RT Objekt die Daten abholen und alle anderen Objekte mit PassiveMode auf TRUE konfiguriert werden.
Üblicherweise kann dieses das Objekt sein, welches im schnellsten Zyklus Pakete empfängt. Ggf. kann hierfür eine niedrigere Priorität verwendet werden, um die Echtzeitabläufe anderer Tasks unabhängiger von den eintreffenden Frames zu gestalten. - Der Funktionsbaustein muss in dem gleichen Kontext die RegisterReceiver() / Open() wie auch im zyklischen Ablauf die CheckReceived() Methode aufrufen.
- Die Callbacks über ReceiveData()/...Event() werden im gleichen Kontext aufgerufen, wie zuvor das CheckReceived() vom Funktionsbaustein der Anwendung.