LabVIEWForum.de
Automatisierte Signale über DAQmx ao0 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Automatisierte Signale über DAQmx ao0 (/Thread-Automatisierte-Signale-ueber-DAQmx-ao0)



Automatisierte Signale über DAQmx ao0 - ceego - 11.04.2012 11:56

Hallo zusammen,

bin nicht so der Experte und brauche eure Hilfe.

Es geht um einen (realen) Motorenprüfstand, bei dem ein NI USB-6221 die Datenerfassung und Steuerung übernimmt.
In Labview werden die Daten aufgezeichnet, über einen ao die Drehzahl (0-10V) vorgegeben.
Jetz wird folgendes gesucht:
Irgendwie soll die Drehzahl automatisch in vorher festgelegten Schritten in Abhängigkeit von der Zeit angepasst werden.
Also z.B. Start bei 1500 upm, dann nach 30sec. 3000 upm usw.

Wie mache ich das am einfachsten?
Am liebsten wäre mir ein Excel/csv oder anderes File, in dem Drehzahl und Zeit stehen und das ich einfach in Labview einbinden kann. Kann man sowas mit Diadem machen oder brauch ich das gar nicht?

Und wie (welcher Block) binde ich es ein?
Zur Zeit gibt es einfach nur einen numerischen Block, in dem die Solldrehzahl angegeben werden kann. Eine Regelung erfolgt nicht.

Vielen Dank!


RE: Automatisierte Signale über DAQmx ao0 - Y-P - 15.04.2012 14:59

Ich würde eine State Machine verwenden und Diadem brauchst Du dazu nicht.
Lade am besten einfach mal Dein VI hoch.

Gruß Markus


RE: Automatisierte Signale über DAQmx ao0 - ceego - 16.04.2012 08:17

Das VI kann ich leider nicht hochladen, aus arbeitstechnischen Grünen.

Kannst du mir kurz erklären was die StateMachine macht und wie man Sie verwendet?

Noch kurz zur Info:
Das VI ist komplett in einer einzigen while-Schleife aufgebaut, die nur durch den STOP unterbrochen wird...


RE: Automatisierte Signale über DAQmx ao0 - GerdW - 16.04.2012 08:49

Hallo ceego,

Statemachine

Alternativ:
Datei -> "Neu..." -> Aus Vorlage -> Frameworks -> Entwurfsmuster -> Standardzustandsautomat


RE: Automatisierte Signale über DAQmx ao0 - ceego - 18.04.2012 21:30

So, erst mal vielen Dank für die Hilfe, funktioniert schon fast.

Also angehängt das VI und einen Screenshot davon.

Die Drehzahlsteuerung funktioniert (bei der Anzeige kommt später die Verknüpfung zum DAQmx), die untere kleine while-Schleife mit der Clock soll mein restliches Programm darstellen (wollte wissen, ob das ohne Probleme weiterläuft).

Jetzt habe ich noch folgendes Problem:

Ich will einen "Knopf" einführen, der mir Sofort die Drehzahl auf 0 setzt oder das Programm beendet.

Mache ich das mit dem Bool der äußeren Case-struktur, laufen zuerst noch alle Cases durch. Mache ich das mit dem Stopp der inneren while-Schleife, muss ich noch den kommenden Case abwarten bis die Schleife zu Ende ist. Später wird so ein Case aber bis zu 180 sec dauern, daher ist das recht unvorteilhaft. Ich habs mal pauschal mit ner case-struktur parallel zum Zustandsaustomaten versucht, die je nach "Schalterstellung" die Drehzahl mit 0 oder 1 multipliziert.

Was kann ich machen, damit die Drehzahländerung sofort wirkt?

Gruß,


RE: Automatisierte Signale über DAQmx ao0 - GerdW - 19.04.2012 08:20

Hallo ceego,

Zitat:Was kann ich machen, damit die Drehzahländerung sofort wirkt?
- Keine langen Wartezeiten einbauen.
- States besser/anders definieren, sodass keine langen Wartezeiten auftreten: z.B. statt "Warte für 1000ms" 50mal "Warte 20ms" aufrufen - oder gleich ein ordentliches "Warte bis jetzt()+1000ms" programmieren...


RE: Automatisierte Signale über DAQmx ao0 - ceego - 19.04.2012 19:19

(19.04.2012 08:20 )GerdW schrieb:  "Warte bis jetzt()+1000ms"

Könntest du mir das erklären?
Das mit den 50 mal 50ms ist leider eher weniger praktikabel, da insgesamt ca. 30min zustande kommen. Und wenn man da mal was ändern muss...


RE: Automatisierte Signale über DAQmx ao0 - GerdW - 20.04.2012 07:55

Hallo ceego,

Zitat:Das mit den 50 mal 50ms ist leider eher weniger praktikabel, da insgesamt ca. 30min zustande kommen. Und wenn man da mal was ändern muss...
???
Du benutzt doch LabVIEW - und das ist eine PROGRAMMIERsprache! D.h. man kann automatisieren, wie oft ein Wait-State für eine bestimmte Wartezeit aufgerufen werden muss...

Zitat:"Warte bis jetzt()+1000ms" Könntest du mir das erklären?
Du nimmst die aktuelle Zeit, addierst deine Wartezeit hinzu und rufst (evtl. mehrfach) einen Wait-State auf, der prüft, ob die Wartezeit abgelaufen ist, indem du die dann aktuelle Zeit mit der vorher berechneten vergleichst...