|
17.03.2026, 09:31
Beitrag #2
|
|
|
|
|
|
17.03.2026, 11:32
Beitrag #3
|
Fuchs
LVF-Grünschnabel

Beiträge: 28
Registriert seit: Mar 2013
2023
-
DE
Deutschland
|
RE: Tasks streaming
Hallo Achim,
starten und beenden wenn benötigt ist doch für Dinge die bei jeder Interation abgefragt werden auch nicht im Sinne des Erfinders, oder?
Für Aktionen die nur zu bestimmten Zeiten oder durch eine andere Aktion ausgelöst werden evtl. ok.
Wie separierst du den entsprechenden Kanal in der Queue? Wird der Datenstrang im Ablauf unterbrochen?
Klar werden die Kanäle in den Speicher geladen und man kann sie einfach aufrufen. Das ist ja das was ich Programmiert habe.
Ich würde gerne wissen ob das eine "Geht schon so - Lösung" ist oder ist es besser den Datenstrang nicht zu unterbrechen.
VG Fuchs
|
|
|
|
17.03.2026, 15:04
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2026 15:13 von Achim.)
Beitrag #4
|
|
|
|
|
17.03.2026, 15:40
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2026 15:41 von GerdW.)
Beitrag #5
|
GerdW
______________
Beiträge: 17.540
Registriert seit: May 2009
LV2019 (LV2021)
1995
DE_EN
10×××
Deutschland
|
RE: Tasks streaming
Hallo Fuchs,
Zitat:Wie separierst du den entsprechenden Kanal in der Queue? Wird der Datenstrang im Ablauf unterbrochen?
Bleiben wir beim Beispiel der DO-Channels:
- Du hast einen DO-Task, der alle Channels beinhaltet.
- Du hast einen QMH, der sich um diesen Task kümmert.
- Du schickst dem QMH eine Message, in der du den Wert eines Channels angibst.
- Der QMH hat eine Tabelle, mit der er den Channel-Namen in eine Channel-Nummer umsetzt und das entsprechende Bit im DO-Task aktualisiert.
- Der QMH hält intern den aktuellen Zustand aller DOs.
Das gleiche Prinzip kannst du für alle anderen Tasks anwenden…
(Jedenfalls solltest du weniger FGVs, locals, etc. einsetzen.)
|
|
|
|
18.03.2026, 07:52
(Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2026 07:53 von Achim.)
Beitrag #6
|
|
|
|
|
18.03.2026, 08:01
(Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2026 08:06 von GerdW.)
Beitrag #7
|
GerdW
______________
Beiträge: 17.540
Registriert seit: May 2009
LV2019 (LV2021)
1995
DE_EN
10×××
Deutschland
|
RE: Tasks streaming
Hallo Achim,
Zitat:Ergänzung: Ich bau mir für die Kanäle ein TypeDef-Enum zum entnehmen der Tabelleninhalte...da hab ich jeweils im Programm schön den Klartext des Kanals, somit selbstdokumentierend und leicht zu handhaben.
Das funktioniert, solange man einen festen Aufbau automatisiert.
Bei einem variablen Prüfstand wird man solche Zuordnungen eher in eine (wie auch immer verwaltete) Konfigurationsdatei auslagern…
- DOs/AOs waren bei meinen Anwendungen eher fest verdrahtet, da ging es mehr darum, den Namen des Kanals anzupassen.
- AIs waren deutlich variabler, da wurde öfter mal ein anderer Sensor mit anderem Kanalnamen verbaut. Und da fängt die Konfiguration erst an: Skalierungen, Kalibrierungen, Einheiten, …
@Fuchs:
Tipp aus meiner Erfahrung: verwende ein festes (und dokumentiertes) Namensschema für alle Aufbauten. Deine Kollegen werden es dir danken, wenn sie anhand des Kanalnamens sofort wissen, wo der Sensor/Aktor im System eingreift…
|
|
|
|
18.03.2026, 14:37
(Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2026 15:21 von Fuchs.)
Beitrag #8
|
Fuchs
LVF-Grünschnabel

Beiträge: 28
Registriert seit: Mar 2013
2023
-
DE
Deutschland
|
RE: Tasks streaming
Danke für eure Antworten.
Ich werde versuchen eure Anregungen umzusetzen, obwohl mir noch das Verständnis fehlt wie ich Tasks in einem QMH verarbeiten soll?
In erster Linie werde ich die Tasks nacheinander abarbeiten.
Ich werde die Anzahl der Nachrichtenverabeitungsschleifen reduzieren.
|
|
|
|
|
19.03.2026, 08:13
Beitrag #9
|
Achim
*****
    
Beiträge: 4.230
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
RE: Tasks streaming
(18.03.2026 14:37 )Fuchs schrieb: Danke für eure Antworten.
Ich werde versuchen eure Anregungen umzusetzen, obwohl mir noch das Verständnis fehlt wie ich Tasks in einem QMH verarbeiten soll?
Die Tasks laufen parallel/ asynchron in separaten VIs, und bekommen von außen Kommandos...Config...Start...Stopp...Initialize...Measure (Collect values)...was immer du willst...z.B. über Queues...das sind also ebenfalls eigene QMH's...und melden ebenfalls ihren Status zurück an die "Haupt-QMH-Schleife"...z.B. dass diese erst gestoppt wird, wenn alle parallelen Schleifen fertig sind.
Wenn's etwas "advanced" sein soll, dann könntest du dich mal mit dem DQMH-Toolkit befassen.
https://dqmh.org/
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
|
| |