LabVIEWForum.de - DI-DO einlesen, verarbeiten, ausgeben

LabVIEWForum.de

Normale Version: DI-DO einlesen, verarbeiten, ausgeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag,
ich hatte vor mit der NI myDAQ Digitale Ein und Ausgangssignale aufzunehmen, zu verarbeiten und wieder auszugeben. Ich hab einen Motor der mehrere Positionen abfahren soll.
Der Motor wird über ein Relais angesteuert. Der Motor soll von einem Startpunkt 0° bis zu einem Endpunkt 180° fahren. Über 2 Magnetschalter wurden Startposition (0°) und Endposition (180°) abgefragt. Zwischen den Endschaltern für Start und Endposition, wird noch die Position (90°) durch eine Lichtschranke abgefragt. Komme aus der Automatisierungstechnik (SPS). Ziel ist es meine kleine „Steuerung“ mit Booleschen Werten zu realisieren. Da ich noch Anfänger in Labview (Version 2011 und 2014)bin, habe ich noch keine Idee, wie ich das Programm realisieren könnte. Ich hab nach Beispiel Vi´s über Steuerungen gezielt gesucht, jedoch leider nichts gefunden. Mit dem DAQ-Assistenten habe ich versucht die Eingänge über „Signalerfassung über Leitung Port 0“ einzulesen. Geh ich in den Run-Modus, habe ich ein dauerhaftes TRUE #1 am DAQ-Assistenten anstehen, obwohl der Taster nicht betätigt ist. Hat jemand eine Idee wie man die Signale systematisch erfasst? Und danach verarbeitet und anschließend ausgibt?

Vielen Dank schon einmal im Voraus
Nico
Hallo Nico,

LabVIEW kommt mit einer ganzen Bibliothek von Beispiel-VIs, da kannst du dir anschauen, wie man DI/DO einliest/ausgibt.

Der Rest sollten dann IF-THEN-ELSE-Abfragen sein…
(27.03.2015 12:37 )GerdW schrieb: [ -> ]Hallo Nico,

LabVIEW kommt mit einer ganzen Bibliothek von Beispiel-VIs, da kannst du dir anschauen, wie man DI/DO einliest/ausgibt.

Der Rest sollten dann IF-THEN-ELSE-Abfragen sein…

Vielen Dank für die schnelle Antwort.
Genau die Funktion wollte ich mit IF-THEN-ELSE, Selektionen und Switch and Case realisieren. Die Funktion bekomme ich hin. Ich hab gelesen das man mit Lokalen Variablen innerhalb im Programm arbeiten kann. Ermöglicht mir dann auf dem Frontpanel Melde leuchten zu realisieren. Das ist schon einmal viel Wert. Leider hab ich bisher kein passendes Beispiel gefunden die Eingänge systematisch einzulesen. Die Abfrage müsste ja ziemlich Realitätsnahe sein. Bräuchte ein Beispiel mit dem über "Express" DAQ-Assistenten. Habe es mal mit MAXlesen und schreiben probiert, jedoch ohne Erfolg.
Also das Einlesen und Ausgeben der Digitalen Größen hab ich hinbekommen. Auch die Programmierung. Jetzt hab ich nur noch ein Problem. Ich arbeite mit der NI myDAQ Messbox. Mein Prozesszyklus von der Steuerung ist zu langsam. Die Messbox realisiert erst nach 5-6 Sekunden, ob ein Signal vorhanden ist oder nicht. Kann man die Zykluszeit ändern (Echt-Zeit-Abfrage)? Kann man eine andere Einstellung vornehmen um die Abtastrate der Eingängen zu erhöhen?
Kurze Information:
Ich habe über Express Signale erfasst (DAQ-ASSISTENT) Einstellungen: Wert auf Anforderung.

Merci.
Hallo Nico,

Zitat:Die Messbox realisiert erst nach 5-6 Sekunden, ob ein Signal vorhanden ist oder nicht.
Das dürfte nicht an der Messbox, sondern an deinem VI liegen.

Aber mangels VI nur Glas2
Ich hab jetzt mal ein Beispiel aufgebaut. Auch da hab ich einen Zyklus von knapp 6 Sekunden und der Motor schaltet bei erreichen der Endlage (180°) nicht ab. Wenn ich den Endschalter(0°) in diesem Beispiel betätige soll der Motor anfangen zu drehen, bis der Motor nach 180° Drehung den anderen Endschalter(180°) erreicht.
Gibt es da nicht einen Trick? Ich hab schon im "Einführung in Labview Buch" nachgelesen, doch nichts gefunden.

Version : 2014
Hallo Niko,

Zitat:Ich hab jetzt mal ein Beispiel aufgebaut.
- Warum benutzt du einerseits in MAX definierte DAQmx-Tasks, andererseits aber noch einen DAQ-Assi?

- In deinem VI ist nirgends eine Wartezeit zu sehen. Es könnte nur Wartezeiten bei den DAQmx-Tasks geben - leider kennen wir die nicht, du hast sie ja in deinem lokalen MAX defniert...

- Es gibt keine Schleife in deinem VI, d.h. die Routine wird genau einmal abgearbeitet und bleibt dann stehen. Dass der Motor dann nicht mehr reagiert, ist nachvollziehbar...

Zitat:Gibt es da nicht einen Trick?
Ja: man könnte die ganzen Beispiel-VIs studieren, die bei LabVIEW mitgeliefert werden...
Vielen Dank für die schnelle AntwortSmile

Ok, wie gesagt ich bin noch ziemlich Frisch. Hab das jetzt mal nur mit DAQ-Assistenten realisiert. Und die passende Schleife ausgewählt. Bei True Soll der Endschalter 180° die Wiederholung auflösen. Wartezeit war ich mir nicht ganz sicher. Verzögert das nicht noch mehr meinen Prozess? Jedenfalls glaube ich das mein Fehler an der Einstellung von der Signalerfassung liegt.
Hallo Nico,

Zitat:Hab das jetzt mal nur mit DAQ-Assistenten realisiert.
Ich hätte mir eine Realisation NUR mit einfachen DAQmx-Funktionen gewünscht…

Zitat:Und die passende Schleife ausgewählt.
Schon besser…

Zitat:Wartezeit war ich mir nicht ganz sicher. Verzögert das nicht noch mehr meinen Prozess?
Das meinte ich zwar nicht, ist bei deinem VI aber durchaus sinnvoll.
Deine DAQ-Assi sind alle auf "1 Wert auf Anforderung", da ist eine Wartezeit zwischen den "Anforderungen" durchaus sinnvoll!

Was ich eigentlich meinte: du hast immer von "6 Sekunden oder so" gesprochen - diese Verzögerung war in deinem VI nicht zu erkennen…

Zitat:Jedenfalls glaube ich das mein Fehler an der Einstellung von der Signalerfassung liegt.
Dann probiert man diese erst einmal getrennt vom Rest aus.
Reagieren LED-Anzeigen, wenn du nur einen Endschalter abfragst?
Reagieren LED-Anzeigen, wenn du beide Endschalter abfragst? (Warum fragst du nicht beide mit nur einem DAQmxTask ab?)

Was soll der Blödsinn, den "Endschalter 180°", welcher als boolsches Array geliefert wird, in ein DDT umzuwandeln und dieses dann wieder in ein weiteres DDT? Warum nicht einfach mal auf ExpressVIs verzichten und RICHTIG programmieren - z.B. mit Arrayfunktionen wie IndexArray? Wall
Und was soll es bringen, wenn du per Endschalter180 zwar die Schleife beendest, aber den Motor weiter drehen lässt? Hmm
Referenz-URLs