DAQmx & PFN_LIST_CORRUPT Bluescreen - abrissbirne - 22.01.2009 12:55
' schrieb:ich hab grad mal n büschen rumprobiert und komme zu folgendem Ergebnis:
das wird schon etwas kniffliger und bei DI/DO sieht es tatsächlich so aus als müsstest du tatsächlich auf (IMHO die schlechteste aller Lösungen) Software-Timing zurückgreifen, es sei denn du hast
2 Messkarten, die in der Lage sind gepufferte DIO-Operationen auszuführen, oder eine Messkarte die auf 2 Ports gepufferte DIO Operationen ausführen kann (weiß nicht ob NI so eine im Programm hat)
Hintergrund: Hardware-Timing beruht mehr oder weniger darauf, dass man die Karte einmal "richtig" einstellt und die Karte das "harte Timing" machen läßt und mehr oder weniger "locker" einmal innerhalb eines Datenblocks liest oder schreibt. Beispiel: Analoge Erfassung mit 1000 Hz, Blockgröße 100 Samples => alle 100 ms (= Loop-Rate der Lese-Schleife von 10 Hz) holt man einmal Daten ab. Die Karte macht die schnelle Arbeit, die CPU ist relativ gelangweilt mit alle 100 ms mal 100 Werte in den Hauptspeicher übertragen. Bei Software Timing schreibt man (je nach einstellung, ich beschreib jetzt mal den schlechtesten Fall) jeden Wert als Single-Update auf die Messkarte bzw. holt jeden Wert einzeln hab, das ist jedes mal (mindestens ein) ein DLL function call, Kommunikation über den PCI-Bus, etc und das mit der vollen Sample-Rate
Aber: es gibt eine Alternative, die vielleicht gar nicht mal so schlecht ist:
mach die digitale Ausgabe mit einem analogen Ausgang, es ist ja nicht verboten immer 0 Volt oder 5 Volt auszugeben (und kannst sogar noch deinen TTL-Pegel manipuleren). Dann hast du einen gepufferte analoge Ausgabe und eine gepufferte digitale Erfassung, du kannst das ganze als synchronisierte Tasks auf der Karte laufen lassen und brauchst kein Software-Timing. Leider unterstützen gepufferte digitale Tasks (ich hab's mit einer 6259 getestet) keine start-Trigger, darum muss man sich als Krücke noch mit einem selbst erzeugten, externen Messtakt behelfen den man mit einem Counter erzeugt ...
[attachment=43897:sync_di_do.png]
[attachment=43896:Syn_DI_D...le.1.zip]
Danke für die interessante Ausführung. Die Idee Analoge Ausgänge mit den entsprechenden Pegel auszugeben ist simple und das wiederum ist super:DDas müsste ich mal ausprobieren. Ich verwende eine PCI-6221 (37Pin) Karte.
DAQmx & PFN_LIST_CORRUPT Bluescreen - cb - 22.01.2009 17:31
' schrieb:Danke für die interessante Ausführung. Die Idee Analoge Ausgänge mit den entsprechenden Pegel auszugeben ist simple und das wiederum ist super:DDas müsste ich mal ausprobieren. Ich verwende eine PCI-6221 (37Pin) Karte.
du kannst es direkt ausprobieren, in dem du das Beispiel runterlädst
DAQmx & PFN_LIST_CORRUPT Bluescreen - abrissbirne - 02.02.2009 10:49
' schrieb:du kannst es direkt ausprobieren, in dem du das Beispiel runterlädst
Ok, dein Beispiel funktioniert super. Ich habs aber irgendwie nicht richtig verstanden. Kann ich die Schaltzeiten irgendwie zur laufzeit ändern? Z.b. das ich 100ms High und 50ms Low Abstände habe?
|