Hallo erstmal!!!
Ich habe nun seit einiger Zeit ein Problem, bei dem ich einfach nicht weiter komme!
Ich hoffe ihr könnt mir dabei helfen!
Vorgeschichte:
Grundsätzlich arbeite ich an einer Software die Schrittmotoren ansteuert!!
Ich bekomme von einem externen Taktgen. (selbstgebaut ca. 150-200Hz) Takte über den Counter Eingang eines USB 6501 Boards eingelesen.
Der Schrittmotor wird über eine Treiberstufe angesteuert an der auch der Taktgen. hängt.
Ich brauche im Prinzip nur ein boolsches Enable an die Treiberstufe zu senden um den Motor zu starten der Rest erledigt sich von selbst.
D.h um jetzt eine bestimmte Schrittanzahl zu fahren lese ich den Counter kurzzeitig aus, starte dabei den Motor, addiere nun meine gewünschte
Schrittanzahl und stoppe den Motor sobald der Counter diese gewünschte Zahl erreicht hat.
Zusätzlich ist dazu eine Visualisierung programmiert, die ständig laufen soll.
Also ich gebe im Prinzip die Schritte ein, drücke einen Knopf und der Motor soll diese Schritte fahren.
So das ganze funktioniert ja am Anfang alles jedoch....
So nun zur eigentlichen Frage:
...ist mir aufgefallen, wenn ich die Visualisierung laufen lasse, dass der Motor von mal zu mal ungenauer wird.
Ich habe beobachtet das die Bearbeitung dieses SubVIs immer langsamer wird. Hab Testweise auch die Zeit gemessen und erkannt
das er bei der 20. Bearbeitung des SubVIs schon um 300ms langsamer ist als wie beim ersten mal.
Man kann dies auch sehr gut bei dem eingelesen Counter erkennen, das er schon ganz schöne Sprünge macht.
Wenn ich nun aber das ganze VI einfach beende und alles wieder neu starte, funktionierts wieder einwandfrei. Zumindest am Anfang!!
Das ganze habe ich auch nur mit einer while Schleife getestet, die ich nur 50 mal abarbeiten lasse.
Ergebnis: Ist im Prinzip dasselbe, wird von mal zu mal langsamer.
Mir ist auch durchaus bewusst das Globale sowie Lokale Variablen die Performance verlangsamen, darum
habe ich auch beachtet, diese so gut es geht nicht zu benutzen. Außerdem erstelle ich auch einen virtuellen Kanal, den
ich aber gleich danach wieder stoppe bzw. lösche. Außerdem ist die CPU Auslastung während der Bearbeitung noch im
akzeptablen Bereich.
Darum vestehe ich auch das ganze nicht????
Mir kommt es so vor als ob in Lab VIEW ein Speicherplatz beschrieben wird, der mit der Zeit voll wird und das das Überschreiben
diese Speicherplatzes einfach länger dauert als das erstmalige speichern beim Anfang!!
Sorry für diesen Roman, aber ich habe versucht so gut es geht, aller Unklarheiten von Anfang an auszuschließen
Ich Bitte um Eure Hilfe!!!
mfg Cerbi
Ps.: Wer Rechtschreibfehler findet......... .........kann sie behalten.