03.10.2012, 10:35
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
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