Schleifenpause - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Schleifenpause (/Thread-Schleifenpause) |
Schleifenpause - iMax - 08.03.2010 12:01 Hallo Ich habe ein VI, in dem ich den Takt eines Motors erfasse. Ich bekomme pro Wellenumdrehung 992 Signale [62:1 Getriebe; 16 Signale / Motorumdrehung] und so eine Wellenumdrehung dauert ca. 2s. Also habe ich pro Sekunde ca. 500 mal ne 1 und 500 mal ne 0. Ich hab das so realisiert, dass ich erst die 1, dann die 0 abfrage. Funktioniert auch prima, allerdings läuft der Cache voll und so alle halbe Minute ca. bleibt der Zähler für einige ms stehen. Ich brauche also irgendwo ne Pause, allerdings komme ich mit 1 ms nicht wirklich hin, weil ich dann einige Signale verpasse. Da ich insgesamt 2500 Zyklen haben muss, würde sich das aufsummieren und mein Motor würde an der falschen Stelle anhalten. Also meine Frage: Gibt es eine Möglichkeit eine Pause/ Wartezeit einzufügen von ca. 0.5 ms? Dann sollte mein VI funktioniern. Und entschuldigt bitte die umständliche Erklärung des VI's, aber an meinem Arbeitsrechner habe ich keinen Zugriff auf das Netzwerk und kann nichts hochladen. Danke schonmal! Max Schleifenpause - jg - 08.03.2010 12:40 ' schrieb:Also meine Frage: Gibt es eine Möglichkeit eine Pause/ Wartezeit einzufügen von ca. 0.5 ms? Dann sollte mein VI funktioniern.Nein, nicht unter Windows. Selbst die 1ms Pause ist dort nicht genau. Was ich mich frage: Wie erfasst du die Taktsignale? Mit welcher Hardware? Wäre es nicht besser, das mit einem Counter zu machen? Wieso läuft dein Cache voll? Dazu wäre das VI oder zumindest ein Screenshot des BD hilfreich! (Es gibt doch USB-Sticks). Gruß, Jens Schleifenpause - iMax - 08.03.2010 13:21 Hmm ok, das ist auf jeden Fall schonmal hilfreich. Ich erfasse die Signale mit einem SICONN USB2 von Geitmann. Das Ding hat auch einen Countereingang, allerdings sind die mitgelieferten Treiber dafür nicht so prickelnd. Ich kann nämlich den Counter nicht einfach mal eben resetten, wenn ich Impulse zählen möchte. Auch das Auslesen an sich gestaltet sich schon schwierig, weil mir der Counter nur als Array ausgegeben wird und nicht als Integer. Also ist da auch nochmal Rechenarbeit gefragt, die wiederrum lässt mich den rechten Zeitpunkt verpassen, zumindest habe ich immer das Gefühl Naja, ich werde dann mal sehen, dass ich mir meine Signale Hardwaremäßig verlangsame, also mir nur jedes 4. Signal geben lasse oder sowas ... gibt ja IC's die sowas regeln können. Dann hab ich auch genug Zeit für Pausen. Aber mal.. Warum kann Windows sowas denn nicht? Mal davon ab, dass jeder, der irgendwas braucht auf "meinem" Rechner seine Treiber installiert und das macht das Ding ja auch nich unbedingt schneller -.- Schleifenpause - Y-P - 08.03.2010 13:55 Also bei NI-Karten läuft das so ab, dass die Signale auf der Karte erfasst und gepuffert werden und Du dann mit DAQmx von Zeit zu Zeit ganze Datenpakete abholst. Dann juckt die 1 ms auch nicht. Wie das mit Deinem Treiber geht und ob Deine Daten auch auf der Karte gepuffert werden können, weiß ich allerdings nicht. Gruß Markus Schleifenpause - Movie - 08.03.2010 13:55 Hallo Wie verzögerst du denn? Ich hab festgestellt das die Timing VI "warten" und "bis zum nächstenvielfachen warten" im (ms) bereicht nicht so toll sind um einen konstanten Takt zuerhalten. "zeitgesteuerte Strukturen" sind da schon zuverlässiger und wenn dich nur das eine High von den 500 Low Werten interessiert könnte vielleicht auch eine "Ereignisstruktur" für dich interessant sein? Oh hab gerade noch mal deine frage gelesen du hast ja nicht ein High signal auf 500 Low sondern beide zustände gleichverteilt ok da weis ich nicht ob da die Ereignisstruktur mit kommt. Sorry Schleifenpause - iMax - 10.03.2010 08:02 Ich habs jetzt so gelöst, dass ich mir einfach nen HEF 4060 (wem das nichts sagt, das ist ein einfacher Digitalzähler) da hinter gebaut und der gibt mir jetzt schöne Signale. Ich greif den einfach am 4. Port ab, also an der 8, sodass ich jetzt nur noch 1/16 so viele Signale habe wie vorher. Dann läuft mein VI auch mit nur 2% Rechnerbelastung, anstatt 40 Zitat:Wie das mit Deinem Treiber geht und ob Deine Daten auch auf der Karte gepuffert werden können, weiß ich allerdings nicht. unsure.gif Öhm ... da hab ich auch keine Ahnung von, ehrlich gesagt. Aber jetzt funktionierts einwandfrei. Zitat:"zeitgesteuerte Strukturen" sind da schon zuverlässiger und wenn dich nur das eine High von den 500 Low Werten interessiert könnte vielleicht auch eine "Ereignisstruktur" für dich interessant sein? Also mit ner Ereignissturktur habe ich das Problem, dass mein LabVIEW mir schonmal ein High Signal als zwei ausgegeben hat. Deswegen hab ich da jetzt so gut es geht beim Timing drauf verzichtet. Und Zeitgesteuerte Strukturen habe ich noch nicht mit gearbeitet. [attachment=25015] Ich habe das so gelöst. "Get first device" gibt mir automatisch die Kartennummer, weil ich nur ein Geitmann-Device am Rechner habe. Und mit "Read Bit" kann ich dann einen eingestellten Kanal lesen, ob der 1 oder 0 ist. Kann ich hier in dem Forum eigentlich Topics auch als "gelöst" oder sowas markieren? Gruß, Max. |