LabVIEWForum.de - DI richtig lesen und verarbeiten bei Zustandswechsel

LabVIEWForum.de

Normale Version: DI richtig lesen und verarbeiten bei Zustandswechsel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag LabVIEWer

Ich habe folgendes Problem:

Das LabVIEW-Programm soll eine Maschine Erfassen und dazu Regeln. Nun gibt es zum Beispiel reale Ausschalter, Not-Aus-Knopf, Konduktivgrenzstände, etc. alles über Optokoppler an zwei cDAQ Module 9422 angeschlossen.

soweit so gut. Die Zustände werden bei einem kleinen Programm, das nicht anderes zu tun hat als nur auf kontinuierlich lesende Werte zu warten und auszugeben, korrekt gelesen und angezeigt. Nun habe ich aber bei der Maschine 3 Consumer-Producer-Loops, sowie eine State-Machine.

State-Machine = Kopf/Hirn der Maschine: Reagiert auf Inputs aus der Input-DAQ-Loop bzw. sendet neue Outputs and die Output-DAQ-Loop.
Input-DAQ-Loop = Liest Werte ein, schiebt sie in die Queue. (Beinhaltet nicht nur Digitale Signale, sondern auch Analoge)
Output-DAQ-Loop = schiebt Werte in das cDAQ zur Ausgabe/Steuerung der Maschine (Beinhaltet Digitale wie auch Analoge Signale)
Log-DAQ-Loop = Schreibt alle Messdaten in ein Log-File


nun zur Frage. Es macht ja keinen Sinn Tausende Digitale Low's in die Queue zu schieben, nur weil der Ausschalter nicht gedrückt wird.
Wie bringe ich es zu Stande, dass erst bei einem Zustandswechsel einmal das Digitale Signal in die Queue schieben kann, damit die State-Machine darauf reagieren kann? So auf einer Art wie Interrupts bei Mikrokontrollern.

Ich hoffe es ist irgendwie klar geworden, was für ein Problem ich habe.

Gruss Sundypha
Hallo Sundypha,

Zitat:Wie bringe ich es zu Stande, dass erst bei einem Zustandswechsel einmal das Digitale Signal in die Queue schieben kann
Ganz einfach: nur bei einem Flankenwechsel einen neuen Wert in die Queue schreiben...
Flankenwechsel werden hier erläutert!
Es gibt beim VI "DAQmx Timing" auch einen Modus "Änderungserkennung". DAQmx Read liest dann nur bei Flankenwechsel.
Die Messkarte muss das allerdings implementiert haben, und das ist in der Regel eher nicht der Fall. Aber es lohnt sich auf alle Fälle, im Manual deiner Karte mal danach zu recherchieren. Erst bei negativem Ergebnis würde ich mich mit anderen Löungen beschäftigen.
Referenz-URLs