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 

daqmx ao stockt



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!

25.07.2012, 12:46
Beitrag #1

yoyo Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jul 2012

2011
2011
kA



daqmx ao stockt
ich versuche einen feedback loop zu implementieren, der jededsmal, wenn ein neuer wert berechnet wurde diesen via eines cDAQ-9188 ausgeben soll. Dise funktioniert meistens auch recht gut, nun habe ich aber ein komisches verhalten beobachtet:

im angehängten test-vi sende ich bei jedem durchlauf des loops ein 1d-array mit nullen an das daq. im schnitt braucht der loop ca 35ms um einmal durchzulaufen. von zeit zu zeit stockt er aber und braucht für einen durchlauf viel länger, nämlich ca 270ms, bevor er dann mit dem nächsten wieder auf 35ms runter kommt.

ich hab dann die zeitpunkte, zu denen das passiert etwas genauer angeschaut und bemerkt, dass dieses stocken immer genau alle 10 sekunden (oder ein vielfaches davon, also 20 / 30 / etc sekunden) auftritt. und wenn man die absolute zeit anschaut, zu der das passiert, fällt auf, dass die stocker immer zur selben zeit auftreten. also z.b. um 13:21:41.8 und 13:21:51.8 und 13:22:11.8 (hh:mm:ss). auch wenn das vi dazwischen gestoppt und neu gestartet wird. wenn ich das daq aber vom computer trenne und wieder neu anschliesse ändert sich diese absolute zeit (dann z.b. 13:25:07.4 & 13:25:17.4 etc)

das ganze ist grösstenteils unabhängig davon wieviele channels ich sende und ob ich im loop noch ein "wait ms" einfüge. bei vielen channels und ohne wartezeit stockt der loop einfach jede 10 sekunden, bei weniger channels und/oder mit wait auch mal erst nach 20 oder 30 sekunden. aber immer zum gleichen absoluten zeitpunkt und immer nach vielfachen von 10 sekunden.

hat irgendjemand eine idee woran das liegen könnte?



Angehängte Datei(en) Thumbnail(s)
   

11.0 .vi  DAQ_delay.vi (Größe: 37,54 KB / Downloads: 180)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2012, 14:58
Beitrag #2

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
RE: daqmx ao stockt
Offtopic2 Bitte LVF-Regeln beachten. Rulez
Vor allem den Abschnitt mit der Groß- und Kleinschreibung.

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2012, 07:13 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2012 07:21 von Lucki.)
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: daqmx ao stockt
Da du die Konfiguration im MAX vorgenommen hast, kann man sie leider nicht sehen. Ich gehe aber mal davon aus, dass die Einstellung "kontinuierlich" und "nicht regenerierend" ist. Puffergröße leider unbekannt.
Was stört Dich überhaupt an diesen Pausen? Es wird doch bei jedem Schleifendurchlauf nur der Puffer nachgefüllt. Entscheidend ist doch nicht die Frage, ob die Pufferauffüllung, sondern ob die Datenausgabe kontinuierlich erfolgt. Dazu müsstest Du die ausgegebene Spannung beobachten. Voraussetzung ist da natürlich, dass du ein strukturiertes Muster ausgibst, wenn es lauter Nullen sind, merkt man nicht, ob die Ausgabe läuft oder ob sie stockt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2012, 16:46
Beitrag #4

yoyo Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jul 2012

2011
2011
kA



RE: daqmx ao stockt
Also, ich hab mir das mal angeschaut. Via Property-nodes bekomm ich raus, dass regeneration erlaubt ist und Buffer Grössen hab ich zwei verschiedene gefunden: Die OutputBufferSize ist 0 und die OnboardBufferSize ist 8191. Leider weiss ich nicht, was der Unterschied zwischen den beiden ist und woher die Einstellungen genau kommen. Wo und wie ich nachschauen kann, ob die Einstellung auf kontinuierlich gesetzt ist, weiss ich nicht. Aber da das vi eigentlich so lange läuft bis ich Stop drücke, gehe ich davon aus, dass es kontinuierlich ist.

Das Problem mit den Pausen ist, dass ich ein Feedback System implementiere. Grob gesagt sieht das ganze Programm so aus, dass in einem paralell laufenden Loop Daten gemessen werden und diese dann im Feedback-Loop verarbeitet und die Kontrollvariabeln neu gesetzt werden. Das heisst ich messe z.B. alle 40ms und will noch vor der nächsten Messung die Kontrollparameter neu anpassen. Das funktioniert auch, solange der Feedback-loop in 35ms einmal durchläuft. Wenn er aber plötzlich stecken bleibt, werden im Mess-loop immer noch alle 40ms Daten aquiriert, die sich dann in einem Buffer stauen und warten bis der Feedback-loop wieder zur verfügung steht. Ist dies dann wieder der Fall bekommt die Feedback-Berechnung in den nächsten paar Durchläufen Daten, die überhaupt nicht auf die Änderungen reagieren, die vom Feedback gemacht wurden, da sie ja schon vorher aufgezeichnet worden sind. Irgendwann hat der Feedback-loop dann den Mess-loop wieder eingeholt und kann sich wieder beruhigen. Aber jedesmal, wenn dieser Delay passiert "verschluckt" sich mein ganzes Feedback halt.

Also eigentlich will ich keinen Buffer haben, sondern jeden Wert, den ich setzte auch sofort ausgeben.

Ich hoffe, das ist einigermassen verständlich...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2012, 17:19
Beitrag #5

BerndDasBrot Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 128
Registriert seit: Feb 2008

8.2.1, 2012, 2017, 2020
2007
EN

7206
Schweiz
RE: daqmx ao stockt
Es scheint mit dem timeout am DAQ write zusammenzuhängen, wo 10 sek angegeben sind. Versuche es mal mit 0, vielleicht behebt es das Problem.

Gruss, BDB
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.07.2012, 09:10
Beitrag #6

yoyo Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jul 2012

2011
2011
kA



RE: daqmx ao stockt
Das hab ich schon probiert, mit diversen verschiedenen Werten. Dadurch ändert sich leider überhaupt nichts.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.07.2012, 14:46 (Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2012 14:47 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: daqmx ao stockt
Zu den Betriebsarten "regenerativ" und "non regenerativ"
Bei "regenerativ" werden nur einmal Daten in den Buffer geschriiben. Die Ausgabe wiederholt sich dann unendlich, das VI DAQmxWrite wird nur ein einziges Mal aufgerufen.
Bei "non regenerativ" ist das nicht so. Es muss dann mit DAQmxWrite laufend der Buffer nachgefüllt werden, bevor er leer ist.

Was passiert, wenn man die Betriebsart "regenerativ" wählt und dann trotzden laufend Daten in den Puffer nachschiebt, das weiß ich ehrlich selbst nicht. Es passt aber nicht zusammen.

Was Du eigentlich genau willst, kann man am VI auch nicht erkennen, denn wenn Du nur Nullen ausgibt, ist es ja ein Nopnsens-VI - das Ganze entspricht der Ausgabe des Einzelwertes "0"

Auf meinen Vorschlag, den Ausgang Dir mal anzuscheuen, bist Du auch nicht eingegangen. Fehlt es an einem Oszilliskop oder was ist sonst der Grund?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: