LabVIEWForum.de
PWM über DO mit USB-6221 ausgeben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: PWM über DO mit USB-6221 ausgeben (/Thread-PWM-ueber-DO-mit-USB-6221-ausgeben)



PWM über DO mit USB-6221 ausgeben - Mace - 12.06.2013 10:14

Hallo Labview-Gemeinde,

ich möchte über zwei DOs meiner USB-6221 jeweils ein PWM Signal ausgeben, deren duty cycles ich laufend ändern kann. Ich habe mich größtenteils an diesem Beispiel orientiert bzw. bedient. Das Beispiel-VI funktioniert tadellos bis zu einer Frequenz von 5kHz.
Ich benötige für meine Anwendung allerdings eine Frequenz von mindestens 20kHz. Den Specs der USB Karte nach sollte das wohl auch eigentlich kein Problem sein.
Bei meinem jetztigen Stand der Dinge bekomme ich aber immer nach kurzer Zeit einen Buffer-Überlauf.

Über Hilfe jedweder Art wäre ich wirklich sehr dankbar, denn um ganz ehrlich zu sein ist mir das Zusammenspiel von Sample Rate, Sample Clock, Samples per Channel etc irgendwie ein Rätsel Bahn

Ich habe meine Anwendung mal auf das Problem reduziert und angehängt, ich hoffe man kann es einigermaßen nachvollziehen. lv11_img


RE: PWM über DO mit USB-6221 ausgeben - Achim - 12.06.2013 10:39

Offtopic2

Nicht mehr als eine Event-Struktur pro Blockdiagramm verwenden!

Dies ist ein kostenloser Ratschlag!Big Grin


RE: PWM über DO mit USB-6221 ausgeben - jg - 12.06.2013 10:47

Ist es Absicht, dass du mit einer beim Start die Clock Frequency auf 20M setzt, dann aber später im PWW-Änder-VI fest auf 5M?

Gruß, Jens


RE: PWM über DO mit USB-6221 ausgeben - Mace - 12.06.2013 11:23

@Achim, bisher hat das bei mir glaube ich keine Probleme verursacht - wenn es aber prinzipiell nicht zu empfehlen ist werde ich mir das in Zukunft mal zu Herzen nehmen.

@Jens, nein das ist eigentlich nicht so gedacht. Da habe ich wohl beim herumexperimentieren mit verschiedenen Werten für etwas Inkonsistenz gesorgt :/


RE: PWM über DO mit USB-6221 ausgeben - Achim - 12.06.2013 11:33

(12.06.2013 11:23 )Mace schrieb:  @Achim, bisher hat das bei mir glaube ich keine Probleme verursacht - wenn es aber prinzipiell nicht zu empfehlen ist werde ich mir das in Zukunft mal zu Herzen nehmen.

http://zone.ni.com/reference/en-XX/help/371361J-01/lvhowto/caveatsrecmndtnsevnts/


RE: PWM über DO mit USB-6221 ausgeben - Mace - 12.06.2013 11:55

(12.06.2013 11:33 )Achim schrieb:  
(12.06.2013 11:23 )Mace schrieb:  @Achim, bisher hat das bei mir glaube ich keine Probleme verursacht - wenn es aber prinzipiell nicht zu empfehlen ist werde ich mir das in Zukunft mal zu Herzen nehmen.

http://zone.ni.com/reference/en-XX/help/371361J-01/lvhowto/caveatsrecmndtnsevnts/

Danke für den Hinweis - auch wenn ich im Fall State Machine nicht wirklich wüsste, wie ich die Anzahl der Eventstrukturen minimieren kann (im vollständigen MainVI gibts noch mehr davon...)

Davon unabhängig: Die Frequenzen im Main- & SubVI konsistent zu halten ist offensichtlich richtig (bzw. alles ander unsinnig); aber mit den für mich nicht nachvollziehbaren Buffer under-/overflow Fehlern komme ich immer noch nicht zurecht Sad

Gruß
Mace


RE: PWM über DO mit USB-6221 ausgeben - Achim - 12.06.2013 12:17

(12.06.2013 11:55 )Mace schrieb:  Danke für den Hinweis - auch wenn ich im Fall State Machine nicht wirklich wüsste, wie ich die Anzahl der Eventstrukturen minimieren kann (im vollständigen MainVI gibts noch mehr davon...)

Alter Schwede...böses Foul!

Ich wüsste nicht, wie man inbesondere bei einer State Machine mehrere Eventstrukturen verwenden sollte...Guck dir DRINGEND mal folgendes Schema an:

http://www.ieee.li/pdf/viewgraphs/labview_style_templates.pdf
Seite 38/39

Oder hier:
http://expressionflow.com/2007/10/01/labview-queued-state-machine-architecture/

Ähnliche Beispiele gibts im Netz zuhauf...

Gruß
A.


RE: PWM über DO mit USB-6221 ausgeben - Lucki - 12.06.2013 13:22

Habe jetzt keine Zeit, mich in Dein VI zu vertiefen. Nur kleines Detail:
In der Hilfe zu DAQmx Timing steht:
Samples pro Kanal gibt die Anzahl der an jedem Kanal im Task zu erfassenden bzw. generierenden Samples an, wenn der Sample-Modus auf Endliche Anzahl eingestellt ist. Wenn der Sample-Modus auf kontinuierlich eingestellt ist, verwendet NI-DAQmx diesen Wert zur Bestimmung der Puffergröße.

Es ist allgemein kein gute Idee, bei kontinuierlicher Betriebsart an den dann umfunktionierten Eingang "Sample pro Kanal" etwas anzuschließen - die Intelligenz von Labview reicht meist aus, die richtige Buffergröße zu finden.


RE: PWM über DO mit USB-6221 ausgeben - Mace - 12.06.2013 13:34

(12.06.2013 13:22 )Lucki schrieb:  Es ist allgemein kein gute Idee, bei kontinuierlicher Betriebsart an den dann umfunktionierten Eingang "Sample pro Kanal" etwas anzuschließen - die Intelligenz von Labview reicht meist aus, die richtige Buffergröße zu finden.

Danke, das war ein guter Tipp! Offensichtlich ist es sehr tückisch, beim Lesen der Hilfe immer nach dem ersten Satz zum nächsten Punkt zu springen Wink


RE: PWM über DO mit USB-6221 ausgeben - Mace - 12.06.2013 14:28

Okay, es scheint ich habe mein Problem großteils gelöst. Immerhin stürzt LabVIEW nicht mehr ab und ich habe die gewünschten PWM Signale.
Im Anhang ist das modifizierte BeispielVI lv12_img, das zwei PWM Signale mit je 25kHz auf DO1&2 ausgibt. DutyCycle ist jeweils variierbar.

Das Workaround steckt zum einen in dem oben genannten Weglassen der manuellen Puffergröße und zum Anderen im SubVI Create DO array, wo ich das Array in Zehntel aufteile.

Ich verstehe selbst nicht genau, wieso es jetzt funktioniert; aber da ich eigentlich auch gar kein Programmierer sein möchte sondern nur Anwender darf es mir zum Glück herzlich egal sein Badewanne_2_2

Danke für die Hilfe!
Mace

EDIT: Das Einbauen in mein MainVI scheint ebenfalls funktioniert zu haben. Den Hinweis mit den Eventstrukturen nehme ich mir bei Gelegenheit nochmal vor, vorerst muss es so reichen.