INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dauerlauf eines DC-Motors



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

09.07.2014, 13:37
Beitrag #11

ck1984 Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jun 2014

2015
2014
DE

90419
Deutschland
RE: Dauerlauf eines DC-Motors
Hallo Kollegen,

danke für die Tipps mit dem OP.

NI hat mir zugesichert das mit meiner Hardware ich die Impulse nicht messen kann. Da Sie außerhalb des Bereichs liegen. Stattdessen haben Sie mir empfohlen die Flankenzählung softwaremäßig zu programmieren. Dies hab ich auch bereits gemacht.

Hier das VI.

Nun kann ich zwar die Impulse zählen aber es werden immer zu wenig Impulse gezählt. Wenn ich die Samplerate und Sampleanzahl verändere, zählt er praktisch zu viele Flanken.
Mein Zähler funktioniert nach folgendem Prinzip. Immer wenn die Spannung über 4 ist, wird einmal hochgezählt.
Ich möchte aber das nur einmal hochgezählt wird wenn eine Steigende Flanke erkannt wird.
Mit dem Modul "Trigger und Gate" passiert ebenfalls das gleiche.

Ich vermute da das Signal nicht optimal glatt ist und eine wenig Rauschen beinhaltet, erkennt er jede Abtastung über 4 und zählt falsch.

Wie kann ich das Problem beheben? Das er nur die Zählung nur auf die steigende oder fallende Impulse reagiert??? bzw. was muss als Samplerate und Sampleanzahl einstellen wenn ich max. 150 Hz habe.

Die Steilheit der Impulse ist fast perfekt.

Besten Dank Leute.
Gruss
-ck-
Google hat schon längst ausgedient Smile


Angehängte Datei(en)
13.0 .vi  Motordrehrichtungsänderung_test2.vi (Größe: 50,91 KB / Downloads: 90)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.07.2014, 13:46
Beitrag #12

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Dauerlauf eines DC-Motors
Hallo ck,

Zitat:Immer wenn die Spannung über 4 ist, wird einmal hochgezählt. Ich möchte aber das nur einmal hochgezählt wird wenn eine Steigende Flanke erkannt wird.
Du möchtest nur auf steigende Flanken reagieren, programmierst aber eine Reaktion auf High-Level? Hmm

Es gibt da ein VI namens PtByPt-BooleanCrossing, mit dem man Flanken erkennen kann…

(Häng doch dein VI mal in LV2011 an.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2014, 12:23
Beitrag #13

ck1984 Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jun 2014

2015
2014
DE

90419
Deutschland
RE: Dauerlauf eines DC-Motors
Hallo Gerd,

danke erstmal für deinen Wertvollen Hinweis. Ist echt goldwert und zeigt deine Klasse.

Ich das VI BooleanCrossing mal ausprobiert in einem Test Programm(siehe Anhang). Siehe da wunderbar; genau das was ich will. Immer wenn eine HI Flanke kommt wird eins hochgezählt, egal welchen Pegel das Signal hat.

Für meine Software wo ein Signal Analog eingelesen wird, habe ich das aller gleiche Programmiert und seltsamer Weise gar keine Hi Flanke erkannt???

Hängt das vielleicht am Signal, das der Null Pegel nie erreicht wird? Auch wenn der Motor nicht dreht, liegt eine Spannung am Hallsensor. Diese Unterliegt auch starkem Rauschen.

Habt ihr eine Idee? Ich hab mit Sicherheit einige Anfängerfehler in meiner Programmierung. Ihr könnt mich ruhig darauf aufmerksam machen, wie man das ganze besser programmieren kann Wink

lv11_img Hochgeladen


11.0 .vi  portataestelamcoMOD-1.vi (Größe: 46,57 KB / Downloads: 115)



11.0 .vi  Motordrehrichtungsänderung_test4.vi (Größe: 42,19 KB / Downloads: 116)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2014, 12:30 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2014 12:31 von GerdW.)
Beitrag #14

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Dauerlauf eines DC-Motors
Hallo ck,

Zitat:Für meine Software wo ein Signal Analog eingelesen wird, habe ich das aller gleiche Programmiert und seltsamer Weise gar keine Hi Flanke erkannt???
Da sieht man mal wieder, das man eben nicht alles mit ExpressVIs erschlagen kann…

Was soll denn bitte herauskommen, wenn du eine Waveform mit 1000 Samples in einen skalaren boolschen Wert umformen lässt? Wenn du Flanken entdecken willst, musst du schon alle Samples begutachten…

Deine While-Loops bei den DO-Tasks sind auch hochgradig am DATAFLOW vorbei programmiert! Was soll der Stopp-Button außerhalb der Loops? THINK DATAFLOW!

Auch immer wieder bei Anfängern beliebt: Das Label eines Controls wegzulöschen…
Abgelehnt
Wieso hat dieser Stopp-Button kein Label? Würdest du in einer textbasierten Programmiersprache etwa so programmieren:
Code:
"" := "" + ""
Hmm
Labels kann man verstecken (auf dem FP), aber sollte man nie löschen! Und auf dem BD sollte man sowieso immer den Namen eines Controls sehen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2014, 13:54
Beitrag #15

ck1984 Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jun 2014

2015
2014
DE

90419
Deutschland
RE: Dauerlauf eines DC-Motors
Hab dem Stopp Button wieder einen Namen gegeben.

Ich möchte das sich die DO abwechselnd schalten. Dafür habe ich noch ein Paar Sachen die ich momentan nicht benötige eingefügt.

Das große Problem ist noch das zählen. Heist dass das ich mit den Express VI die Flanken nicht zählen kann??? Das wäre eine Katastrophe da NI zugesichert hat, dass es geht!

In welchen Wert muss ich den die Waveform umwandeln damit ich die Case- Struktur schalten kann?
Ich hab den skalar Boolschen Wert nur gewählt, weil das VI "BooleanCrossing" nur diese konvertierung annimmt.

Sorry ich weis, dass ich viel frage aber ich schaff das nicht alleine.

Danke für Hilfe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2014, 14:13 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2014 14:18 von GerdW.)
Beitrag #16

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Dauerlauf eines DC-Motors
Hallo ck,

für den Anfänger gibt es ja die ganzen Tutorials, auf die ich in meiner Signatur verlinkt habe…
Und aktuell den "Summer of Webcasts" bei NI!

Schau mal hier:
   

Zitat:In welchen Wert muss ich den die Waveform umwandeln damit ich die Case- Struktur schalten kann?
Wozu eine Case-Struktur zum Flankenzählen?

Zitat:Ich hab den skalar Boolschen Wert nur gewählt, weil das VI "BooleanCrossing" nur diese konvertierung annimmt.
Manchmal muss man sich schon überlegen, was man wirklich haben will… Big Grin

Zitat:Heist dass das ich mit den Express VI die Flanken nicht zählen kann??? Das wäre eine Katastrophe da NI zugesichert hat, dass es geht!
Ja, es wird auch mit ExpressVIs gehen. Aber halt nicht so, wie du es programmiert hast… Wink
NI wird halt nicht müde, die großartigen ExpressVIs als Wunder-Allheil-Mittel anzupreisen - irgendwie muss man ja die Programmier-Anfänger (und die "Key-Account-Manager" dahinter) ködern. (Diese Aussage ist nicht gegen dich gerichtet, sondern gegen NI.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2014, 08:44
Beitrag #17

ck1984 Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jun 2014

2015
2014
DE

90419
Deutschland
RE: Dauerlauf eines DC-Motors
Hallo Leute, Hallo Gerd,

ich habs endlich geschafft einen optimalen Zähler für die Hallimpulse zu programmieren und zwar ohne einen Hardware Counter; rein Softwaretechnisch, der jeden Impuls zählt wenn man die passende Schaltschwelle einstellt.
Ich möchte euch meine Lösung natürlich nicht vorenthalten. Da ich gesehen habe das viele einen Zähler Softwaretechnisch suchen.

Erstmal herzlichen Dank an Gerd, ohne dich hätte ich das nicht geschafft. Allerdings habe ich den Zähler etwas anders realisiert. Da deine Version Gerd nicht hochgezählt hat sondern nur die Summe der abgetasteten Impulse pro Sekunde angezeigt hat. Aber egal jetzt gehts.

Ich glaub ich hab schon ein bisschen was gelernt aber nur ein wenig Smile

So nächstes Problem:

Ich würde gerne den Zähler verwenden um die Drehrichtung des Motors zu ändern. Also irgendwie die Buttons "Rechtslauf und Linkslauf" weglassen und automatisiert starten.
Wenn eine 50 mal gezählt wird soll der Motor Links - dann Zähler Reseten - dann Motor Rechts - dann Zähler Reset usw.
Das Ganze packe ich in eine For-Schleife und gebe ihm vor wie oft er diesen Prozess wiederholen soll.

Fragen:
1. Wie kann ich den Zähler zum starten der Digitalen Ausgabe Module verwenden?
2. Wie kann ich den Zähler Reseten?


11.0 .vi  Motordrehrichtungsänderung_test6.vi (Größe: 141,43 KB / Downloads: 126)


Bin für jeden Tip dankbar, sonst häng ich da wieder Wochen alleine dran. Die Lösung werde ich natürlich präsentieren.

Rtmfx hilft nicht immer Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2014, 09:12 (Dieser Beitrag wurde zuletzt bearbeitet: 15.07.2014 09:15 von GerdW.)
Beitrag #18

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Dauerlauf eines DC-Motors
Hallo ck,

dein DAQAssi nimmt jeweils 10 Samples bei 1kS/S Samplerate auf. Von diesen 10 Samples wertest du immer nur das erste für deinen Pulszähler aus: mir wäre das zu unsicher, wenn ich wirklich alle Pulse sicher erkennen wollte…

Zitat:Da deine Version Gerd nicht hochgezählt hat sondern nur die Summe der abgetasteten Impulse pro Sekunde angezeigt hat
Auch die Pulse/s kann man ja leicht aufaddieren…

1. "IF Zähler>= 50 THEN Output DO"

2. "IF Zähler >= 50 THEN Zähler := 0"

Ansonsten:
- Du hast für die DOs jetzt schon mit den DAQmx-Funktionen gearbeitet. Warum dann nicht auch beim AI (statt des DAQAssi)?
- Du gibst bei den DOs ungebremst Werte aus. Dies ist recht uneffektiv und sehr CPU-lastig. Warum nicht eine kleine Wartezeit in diesen Schleifen?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2014, 10:58
Beitrag #19

ck1984 Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jun 2014

2015
2014
DE

90419
Deutschland
RE: Dauerlauf eines DC-Motors
Hi Gerd,

ich nehm jetzt die ersten 5 Werte zum zählen der Impulse, ist ein bisschen sichererSmile

Deine Ratschläge sind top! Habe sie alle umgesetzt. Wartezeit 50 ms eingefügt. Und den DAQ Assi wollte ich sowieso durch die DAQmx Funktionen ersetzen.


1. "IF Zähler>= 50 THEN Output DO"

2. "IF Zähler >= 50 THEN Zähler := 0"

Der C-Code ist mir klarSmile aber wie kann ich das in Labview umsetzen? Kann ich einfach eine abfrage an den Zähler setzen, wenn dieser 50 überschreitet, soll es einen DO0 Ausgang setzen? Aber wie kann ich dann danach den DO1 setzen? In einer Sequenz und um diese Sequenz eine FOR-Schleife?
Wenn ich eine For-Schleife um die DAQmx-Lesen setze, ensteht ein Daten Fehler. "Ein 1D-Array wird in ein Skalar gewandelt". Wie kann ich das lösen?

-Beste Grüße-
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2014, 11:49
Beitrag #20

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Dauerlauf eines DC-Motors
Hallo ck,

so langsam könntest du auch über eine State-Machine und das Producer-Consumer-Schema nachdenken…

Du hast eine Datenquelle (AI), die du nachfolgend analysierst und auswertest. Mit dem Ergebnis der Auswertung wählst du einen aktuellen Systemstatus (links/rechts drehen, etc.). Die passenden Steuerwerte (DOs) gibst du dann an einen Consumer (die DAQmx-Schleifen) weiter…

Zitat:Der C-Code ist mir klar
IF-THEN-ELSE ist in LabVIEW eine Case-Struktur…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Dauerlauf Zylinder und Sensor ck1984 8 5.814 18.07.2016 09:25
Letzter Beitrag: ck1984
  Analysetool? Einbinden eines Motors in LV. Christopher88 9 6.266 06.08.2007 22:30
Letzter Beitrag: Christopher88

Gehe zu: