' schrieb:Hallo,
ich programmiere zur Zeit eine linearen Verschiebetisch von PI (M-415.CG). Das Gerät wird leider durch eine recht betagte ISA-Karte (Physik Instrumente C-842) angesteuert, die natürlich nicht im "Measurement & Automation Explorer" auftaucht. Die Ansteuerung des Verschiebetisches lässt sich trotzdem recht komfortabel in mein bestehendes LV-Programm einbinden, da der Hersteller eine DLL nebst passender VIs zur Verfügung stellt. Auf diesen Weg lassen sich auch Host-Interrupts programmieren, die eine bestimmte Verfahrposition signalisieren.
GIBT ES EINE MÖGLICHKEIT DIESE HOST-INTERRUPTS DER ISA-KARTE MIT LabVIEW AUSZUWERTEN?
Zur Zeit bin ich gezwungen über die DLL ein Statusregister zu pollen, welches mir einen entsprechenden Interrupt anzeigt. Wegen der entsprechenden Kommunikationsdauer lässt sich die gewünschte Auflösung der Verfahrposition bei einem fahrendem Verschiebetisch nicht erreichen.
Ich bin auch über recht grundlegende Infos zum Thema IRQ-Auswertung mit LV sehr dankbar.
Unter Protected Mode Betreibssystemen kann die Applikation selber mit Interrupts gar nichts tun da jeder Versuch von der Applikationsebene aus um Interruptroutinen zu verändern als protection fault error unnachsichtig geahndet wird.
Das muss der Kernel Treiber zu der Karte machen (also die Treiber die mit der Karte kommen). Ob dieser eine Möglichkeit bietet um vom Kernel aus im Falle eines Interrupts ein Event auszulösen dass dann von der User Space DLL an die Applikation weitergereicht werden kann hängt ganz einfach von diesem Treiber ab. Oftmals ist dies Möglichkeit gar nicht gegeben und selbst wenn der Kernel Treiber das unterstützt, unterstützt die User Space DLL das oft noch nicht.
Wenn die User Space DLL und der Kernel Treiber entsprechende Unterstützung bieten ist aber die ganze Chose noch nicht eine Pappenstiel um in LabVIEW zu bekommen. Du wirst dann nämlich dieses OS Event dass vom Treiber ausgelöst werden kann auch noch in ein LabVIEW Event umsetzen müssen. Dazu könntest Du entweder Occurrences oder User Events verwenden.
Beides geht eigentlich nur mit spezifischem externen Code in der Form einer DLL die man in C schreiben muss. Also es geht prinzipiel aber ob es mit Deiner Karte möglich ist steht bestenfalls in den Sternen. Und sollte es das sein wirst Du trotzdem noch einiges an C Kenntnissen aufwenden müssen um es wirklich funktionierend zu bekommen. (Oder jemanden dafür bezahlen der das macht oder (hüstel, hüstel) den Kartenhersteller dazu bringen Dir dieses LabVIEW spezifische Interface zur Verfügung zu stellen).
Rolf Kalbermatter