LabVIEWForum.de
Eventzähler bei Wertänderung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Eventzähler bei Wertänderung (/Thread-Eventzaehler-bei-Wertaenderung)



Eventzähler bei Wertänderung - 1990 - 17.05.2017 15:20

Hallo Leute,

ich habe folgendes Problem. Ich möchte Messwerte, welche in einem 1D-Array vorliegen, bei Wertänderung in ein 2D-Array speichern. Die Messwerte bekomme ich über die Com-Schnittstelle. Jedoch scheitere ich aktuell bereits an der Stelle die Messwerte in dem 1D-Array bei Wertänderung in ein 2D-Array zu speichern.
Mein Ansatz ist dies mittels einer Wertänderungs-Eventstruktur zu lösen, in der ich einen Zähler einbaue, der die Anzahl der Wertänderungen zählt. Mit diesem Zähler möchte ich dann die Messwerte über "In-Array-einfügen" dem 2D-Array hinzuzufügen. Nur leider funktioniert dieser Zähler noch nicht. Vielleicht denke ich auch zu kompliziert und das ganze geht auch einfacher. Ich hoffe ihr könnt mir helfen.

Gruß 1990


RE: Eventzähler bei Wertänderung - GerdW - 17.05.2017 16:50

Hallo 1990,

was genau soll dein VI eigentlich machen?
Momentan verhinderst DU durch THINK DATAFLOW leider, dass es vernünftig arbeiten kann…

- Wozu eine Wartezeit von 50ms neben einer Eventstruktur mit einem Timeout von 50ms?
- WARUM eine WHILE-Loop innerhalb einer anderen WHILE-Loop?
- Warum verwendest du KEIN Schieberegister für deinen Event-Counter?
- Warum gibt es kein Event für den Stop-Button?
- Warum gibt es kein Schieberegister für dein 2D-Array? Wo soll es denn gespeichert/"gemerkt" werden? THINK DATAFLOW!
- Wieso soll das 2D-Array jedesmal transponiert werden? Hmm

Idee:
[attachment=57838]


RE: Eventzähler bei Wertänderung - 1990 - 18.05.2017 15:41

Hallo GerdW,

danke für deine schnelle Antwort. Ich habe mich an folgendem Beispiel orientiert (http://digital.ni.com/public.nsf/allkb/51EE7758674CBB9286257FDF0051A99E ). Dort war die Wartezeit mit dem Timeout von 50ms so eingebaut und hat funktioniert.
Ist es nicht von Vorteil eine Wartezeit in einer While-Schleife einzubauen, damit die Prozessorauslastung reduziert wird?
In dem Event-Counter habe ich ein Schieberegister eingebaut, bei dem 2D-Array jedoch nicht, danke für den Tipp.
Wozu sollte ich ein Stop-Button-Event einstellen? Sobald ich Stop drücke, verlasse ich die While-Schleife.

Ich habe dein Beispiel nachgebaut, das funktioniert soweit bis auf den Eventzähler. Der wird mit der Frequenz der While-Schleife inkrementiert. Um das zu veranschaulichen wird die Schleife alle 500ms aufgerufen. Ist es möglich, das Beispiel so zu verändern, dass nur bei tatsächlichen Wertänderungen die Werte in das 2D-Array geschrieben werden, damit ich keine doppelten Werte bekomme?

VG
1990


RE: Eventzähler bei Wertänderung - GerdW - 18.05.2017 15:49

Hallo​ 1990,

In jeder Iteration wird ein Event erzeugt, welches deinen counter hochzählt - so hast du es programmiert!
Und jetzt wunderst du dich, warum der counter hochzählt?
Hmm


RE: Eventzähler bei Wertänderung - 1990 - 18.05.2017 18:04

Dass der Counter hochzählt bei jeder Ausführung der While-Schleife ausgerufen wird, weiß ich, dieser dient aktuell nur als Platzhalter. Ich möchte jedoch nur den Zähler hochzählen, wenn das 1D-Array sich ändert und das Wertänderung-Event aufgerufen wird.


RE: Eventzähler bei Wertänderung - GerdW - 18.05.2017 21:45

Hallo 1990,

momentan zählst du den Counter bei jedem Event hoch. Wenn er nur bei einem echten ValueChange hochzählen soll, dann musst du das auch so programmieren!

Du erzeugst ein Event mit der Post. Im Event dann noch old and new value vergleichen...


RE: Eventzähler bei Wertänderung - Lucki - 19.05.2017 08:41

Inirekt wurde es ja schon angedeutet, aber um es im Klartext zu formulieren: Der Eigenschaftstknoten "Wert(Sgnl)" feuert das Ereignis ""Initialisiertes Array":Wertänderung" nicht nur bei Wertänderung, sonderen bei jedem Aufruf dieses Eigenschaftsknotens.
Du köntest ja das Bedienelement "Input" bei Wertänderung das Ereignis auslösen lassen, das müsste eher gehen.


RE: Eventzähler bei Wertänderung - 1990 - 22.05.2017 15:02

Hallo Lucki,

danke für den Hinweis. Jedoch ist dieser bei meinem Problem nicht zielführend, da ohne den Eigenschaftenknoten "Wert(Sgnl)" nur direkte Wertänderungen über Bedienelemente erkannt werden. Bei direkten Wertänderungen über Bedienelemente im VI funktioniert dein Vorschlag ohne Probleme.
Die Messwerte, welche ich über einen COM-Server bekomme, möchte ich so bei Wertänderung in ein 2D-Array speichern.

VG,
1990


RE: Eventzähler bei Wertänderung - Freddy - 22.05.2017 16:08

Wenn Du im Timeout Durchgang nicht die Leitungen durchverbindest, wird immer bei einem Timeout - Durchgang eine Null eingetragen.

Gruß
Freddy