06.09.2013, 13:00
|
paddsen
LVF-Grünschnabel
Beiträge: 12
Registriert seit: Aug 2013
2012
2013
EN
|
RE: Erzeugung einer PWM aus TTL Werten
Erstellt man dazu erneut einen Task, der alle verwendeten DOs auf LOW setzt oder geht das einfacher?
|
|
|
06.09.2013, 13:07
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Erzeugung einer PWM aus TTL Werten
Hallo paddsen,
wozu einen neuen Task - du willst doch nur im schon vorhandenen alle DOs auf false setzen...
Einfach eine weitere DAQmxWrite-Funktion verwenden!
|
|
|
06.09.2013, 13:08
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Erzeugung einer PWM aus TTL Werten
Vor Beendigung des Task einfach ein DAQmxWrite... Aus dem Bauch heraus sollte es funktionieren.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
06.09.2013, 13:31
|
paddsen
LVF-Grünschnabel
Beiträge: 12
Registriert seit: Aug 2013
2012
2013
EN
|
RE: Erzeugung einer PWM aus TTL Werten
Ja perfekt. So klappt es jetzt, dass ich alle DOs auf Low oder High setzen kann.
Jetzt ist mein akutes Problem noch, dass ich versuche aus den HauptVI den STOP Knopf des PWM Erzeugungs VIs zu drücken, sodass das Main VI, das die tastverhältnisse berechnet weiterfeährt, aber die kontinuierliche PWM erzeugung gestoppt wird... so wie ich per Forumsuche und Google gesehebn habe, scheint das nicht ganz so einfach zu sein... ich werde mal versuchen das mit einer Globalen Variable zu machen... was meint ihr?
|
|
|
06.09.2013, 14:12
|
paddsen
LVF-Grünschnabel
Beiträge: 12
Registriert seit: Aug 2013
2012
2013
EN
|
RE: Erzeugung einer PWM aus TTL Werten
Ich muss doch nochmal auf das Low Schalten der Ausgänge zurück kommen: ich habe das mit einem DAQmx Write VI und einem Boolean Array versucht. Leider ist die Reaktion beim Stoppen absolut Random, manchmal alle auf High, dann wieder alle Low, dann mal alle bis auf einen low....
Hier mal das Blockschaltbild:
|
|
|
06.09.2013, 15:05
(Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2013 15:09 von GerdW.)
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Erzeugung einer PWM aus TTL Werten
Hallo paddsen,
mal überlegen:
Du definierst den DO-Task mit "1 channel for all lines" und benutzt U8-Werte, um die einzelnen Bits zu setzen. Jetzt versuchst du zum Schluß, mit einem 1D-Bool-Array zu arbeiten.
- Wieso machst du das?
- Wieso wunderst du dich nicht selbst darüber, dass du nun einen anderen Datentyp benutzt?
- Wieso denkst du, dass ein "1D-Bool-Array" auf die Aussage "1 channel for all lines" passt?
Zu deinem STOPP-Knopf:
Es gibt genügend Beispiele, die zeigen wie man Daten von einem VI zum anderen transportiert. Schon mal in den ExampleFinder geschaut? Stichworte (auch zur Suche im Forum): globale Variablen, FGVs, Queues, Melder, parallele Strukturen...
|
|
|
09.09.2013, 12:17
|
paddsen
LVF-Grünschnabel
Beiträge: 12
Registriert seit: Aug 2013
2012
2013
EN
|
RE: Erzeugung einer PWM aus TTL Werten
Hey
Also ok, jetzt, wenn ich es mir so ansehe, macht es natürlich keinen Sinn, einen task, der mit U8 Werten angesteuert wird, dann mit einem Array an Bool werten zu verändern. Problem war nur, dass mir nicht ganz klar war, wie die U8 Werte aussehen müssen, damit ich einzelne Lines damit ansteuern kann.
Danke für die Zurechtweisung.... ich bin leider erst langsam warm mit den DAQmx Funktionalitäten.
Jetzt eine Frage, die wieder auf Erfahrungswerte abzielt.
Ich habe jetzt das PWM-Programm soweit fertig und möchte es als funktionierendes Kern Programm abgeschlossen als VI in der restlichen Software nutzen: Es hat dann ja die 4 Eingänge mit den Duty Cycles und der Frequenz sowie die Ansteuerung des STOP Buttons über eine globale Variable.
Wenn ich jetzt noch parallel zur PWM Erzeugung Analogsignale einlesehen will, die mit in einem XY Graphen live angezeigt werden und dann nach dem Stoppen noch betrachtbar bleiben, wie gehe ich da am besten vor?
Einfach mit dem DAQ-Assistenten einen Task erstellen, der die Signale ab VI-Start einliest und darstellt oder ist das kein guter Stil?
|
|
|
09.09.2013, 12:23
(Dieser Beitrag wurde zuletzt bearbeitet: 09.09.2013 12:25 von GerdW.)
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Erzeugung einer PWM aus TTL Werten
Hallo paddsen,
Zitat:Wenn ich jetzt noch parallel zur PWM Erzeugung Analogsignale einlesehen will, die mit in einem XY Graphen live angezeigt werden und dann nach dem Stoppen noch betrachtbar bleiben, wie gehe ich da am besten vor?
DAQmx-Task erstellen, abfragen und in einem Graphen darstellen. Ob die Daten "nach dem Stoppen" sichtbar bleiben, hast du selbst in der Hand - musst ja den Graphen nicht mit "leeren" Werten überschreiben...
Zitat:Einfach mit dem DAQ-Assistenten einen Task erstellen, der die Signale ab VI-Start einliest und darstellt oder ist das kein guter Stil?
Ich persönlich würde beim Wort "DAQ-Assistenten" nie von gutem Stil reden NI sieht das wohl anders...
Sagen wir es mal anders:
Du hast jetzt eine Routine, die die PWM-Kanäle behandelt. Jetzt brauchst du eine zweite, die sich um die AI kümmert. Kapselung von Funktionalität ist nie schlecht, man muss nur den Datenaustausch vernünftig definieren...
Zitat:mir nicht ganz klar war, wie die U8 Werte aussehen müssen, damit ich einzelne Lines damit ansteuern kann.
Jedes Bit in dem U8 steuert einen der 8 DOs. Lass dir den U8-Wert in Binärdarstellung (mit führenden Nullen) anzeigen...
|
|
|
10.09.2013, 09:11
(Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2013 09:30 von paddsen.)
|
paddsen
LVF-Grünschnabel
Beiträge: 12
Registriert seit: Aug 2013
2012
2013
EN
|
RE: Erzeugung einer PWM aus TTL Werten
So wie ich jetzt verstanden habe, muss ich doch dann DAQmx Write (Digital U8 1Chan 1 Samp) wählen und eine U8 Konstante mit dem Wert 0 an den data Eingang hängen. Ich habe jedoch immernoch die Problematik, dass die DOs beim beenden Zufallswerte ausgeben - Kann es daran liegen, dass oben der Task schon gecleart wurde? Es kann doch nicht so schwer sein, dass man einstellt, dass am Ende alle ports auf 0 gesetzt werden...
EDIT: Kann es damit zusammenhängen, dass ich den Task aufgegriffen habe und dieser noch die Einstellung der sample Clock innehat und dadurch nicht mit DAQmx Write (Digital U8 1Chan 1 Samp) rückgesetzt werden kann, sondern auch irgendwie wieder eingestellt werden muss, dass die es sich um keinen kontinuierlichen Ausgang handelt... ich hänge jetzt schon echt ne ganze Weil an dem Problem...gibts doch nicht.
|
|
|
| |