LabVIEWForum.de
AMC in deterministischer Loop - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW RealTime (/Forum-LabVIEW-RealTime)
+---- Thema: AMC in deterministischer Loop (/Thread-AMC-in-deterministischer-Loop)



AMC in deterministischer Loop - gfzk - 25.06.2020 08:57

Hallo,

ich nutze bei meinen bisherigen Projekten die Asynchronous Message Communication Library (AMC) mit Erfolg wie ich finde. Nun habe ich eine Echtzeitanwendung bei der auch die Sicherheit eine nicht unerhebliche Rolle spielt. Mich würde daher interessieren, ob ich Funktionen besagter Library in eine Timed While Loop stecken darf. Natürlich würde einen möglichst geringen Timeoutwert vorgeben, so dass die Loop eine Chance hat in der vorgegebenen Dauer ausgeführt zu werden.
Da die Library aber kein regulärer Bestandteil von LabView ist wollte ich hier an dieser mal nachfragen, ob das eine so gute Idee ist.

Viele Grüße, Georg


RE: AMC in deterministischer Loop - GerdW - 25.06.2020 09:04

Hallo Georg,

Zitat:Nun habe ich eine Echtzeitanwendung bei der auch die Sicherheit eine nicht unerhebliche Rolle spielt. Mich würde daher interessieren, ob ich Funktionen besagter Library in eine Timed While Loop stecken darf.
Prinzipiell darfst du erstmal alles in eine TWL stecken, solange deren Ausführung nicht behindert wird.

Aber ebenso prinzipiell: wenn die AMC auf irgendeine Art Netzwerk-Kommunikation aufsetzt, dann ist allein dadurch deine "Echtzeitanwendung" nicht gegeben. Ebenso können (normale) Queues das RealtimeOS-Timing stören, für solche Zwecke gibt es dann ja die RT-FIFOs…


RE: AMC in deterministischer Loop - gfzk - 25.06.2020 15:14

Hallo Gerd, danke für Deine rasche Antwort.

Eine TWL bietet sich ja an um z.B. einen Grenzwert zu überwachen und bei einer Verletzung dementsprechend zu handeln, z.B. einen Heizer bei erreichen einer Übertemperatur per DO ausschalten. Dies lässt sich ja problemlos mit IO-Variablen und aktiviertem RT-FIFO bewerkstelligen. Bis hier hätte ich noch keine Shared Resource die blockiert sein kann (glaube ich zumindest). Nun würde ich ganz gerne im Anschluß per AMC eine Message lokal oder übers Netzwerk absetzen um dieses Vorkommnis zu protokollieren. Diese Aktion darf auch gerne nicht-deterministisch sein, d.h. mir ist egal wann sie der nächste Task erhält der die Nachricht verarbeitet. Im schlimmsten Fall soll das Senden der Nachricht per Timeout verhindert werden um die ordnungsgemäße Ausführung der TWL weiterhin zu gewährleisten.

Alternativ fiele mir ein die Funktion des Sendens der Message über AMC in einen nicht-deterministischen Task auszulagern. Dieser würde dann wiederum über einen RT-FIFO von der TWL informiert wenn etwas wichtiges passiert. Ist halt ein zusätzlicher Aufwand, aber vielleicht die Lösung mit weniger Bauchweh? Oder mach ich mir da ohne Grund das Leben schwer?

Viele Grüße, Georg