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!
Hallo!
Ich muß einen Testlauf für einen Motor programmieren. Dazu müssen ungefähr zehn verschiedene Drehzahlen und Drehmomente zu bestimmten Zeiten gefahren werden. Die Zeitspannen bewegen sich von 0,3s bis über 100s und sind auf 10ms genau vorgegeben.
Wie kann man das "elegant" programmieren? Ich habe mal die Zeitgesteuerte Sequenz genommen und für jeden Schritt einen neuen Rahmen erzeugt. Das Ganze in eine While-Schleife verpackt funktioniert gut. Allerdings wird die gesamte Sequenz mindestens zwei Bildschirme breit :?
Kann mir jemand eine schönere Lösung vorschlagen, bei der das Timing nicht weniger genau ist?
Wenn ich während eines Durchganges den Stop-Taster drücke, wird die Schleife trotzdem noch einmal komplett durchlaufen. Wie kann ich das unterbinden :?:
Ich löse so etwas, idem ich eine Schleife nehme und dort eine Case-Struktur einsetze.
Habe mal ein kleines Beispiel mit angehängt.
Damit kannst Du auch die Abarbeitung der Schleifen an beliebigen Stellen unterbrechen.
Gruß
sven
P.S.
Auf 10ms genau? Bekommst Du da nicht Probleme mit dem Betriebssystem. Wenn Du Pech hast greift das BS genau im falschen Moment zu und klaut die Resourcen, dann kann es zu Abweichungen in deinem Takt kommen.
Oder irre ich da?
Hallo Sven,
danke für den Versuch! Es trifft aber mein Problem nicht (denke ich).
Ich muß z.B.
0,3s 80Nm 0 upm
6,35s 80Nm 730 upm
5,6s 65Nm 635 upm
11,5s 65Nm 0 upm
...
oder so ähnlich. LV8 bietet dafür ja die Zeitgesteuerte Sequenz an, bei der ich jedem Rahmen eine andere Zeit zuweisen kann. Bei zehn Rahmen wird es halt ein bischen breit
Dein Hinweis auf die genauen Zeiten war schon richtig. Der Test wird aber über viele Stunden laufen und einige Fehler im Zehntelsekundenbereich werden sich hoffentlich ausgleichen. Ich muss diesem VI eine Hohe Priorität zuweisen und die Messaufgaben einem anderen Rechner überlassen. Wenn man eine 2GHz-Kiste mit ein bischen Fensterverschieben belastet werden aus zehn Sekunden auch schnell mal 15 Sekunden :?
Sollte ich auf die Idee kommen unser Schwingungsanalysesystem zu starten, bleibt das VI auch mal zehn Sekunden stehen :evil:
Gruß
Peter
Hallo Sven,
danke für den Versuch! Es trifft aber mein Problem nicht (denke ich).
Ich muß z.B.
0,3s 80Nm 0 upm
6,35s 80Nm 730 upm
5,6s 65Nm 635 upm
11,5s 65Nm 0 upm
...
oder so ähnlich. LV8 bietet dafür ja die Zeitgesteuerte Sequenz an, bei der ich jedem Rahmen eine andere Zeit zuweisen kann. Bei zehn Rahmen wird es halt ein bischen breit
Dein Hinweis auf die genauen Zeiten war schon richtig. Der Test wird aber über viele Stunden laufen und einige Fehler im Zehntelsekundenbereich werden sich hoffentlich ausgleichen. Ich muss diesem VI eine Hohe Priorität zuweisen und die Messaufgaben einem anderen Rechner überlassen. Wenn man eine 2GHz-Kiste mit ein bischen Fensterverschieben belastet werden aus zehn Sekunden auch schnell mal 15 Sekunden :?
Sollte ich auf die Idee kommen unser Schwingungsanalysesystem zu starten, bleibt das VI auch mal zehn Sekunden stehen :evil:
Gruß
Peter
Habe mir gerade mal die zeitgesteuerte Sequenz angeschaut.
Ist ja ärgerlich, dass mal die Sequenz nicht auf gestapelt umstellen kann.
Wenn mir noch eine Idee kommt, melde ich mich noch einmal.
Habe ich den Ablauf richtig verstanden?
Es gibt verschiedene States, die für unterschiedliche Zeiten anstehen sollen. Wenn die States abgearbeitet worden beginnt das ganze wieder von vorn.
Die Vorgaben für Drehmoment und Drehzahl müssen nur einmal pro State ausgegeben werden.
Svenni schrieb:Habe ich den Ablauf richtig verstanden?
Es gibt verschiedene States, die für unterschiedliche Zeiten anstehen sollen. Wenn die States abgearbeitet worden beginnt das ganze wieder von vorn.
Die Vorgaben für Drehmoment und Drehzahl müssen nur einmal pro State ausgegeben werden.
Gruß
sven
Hast du richtig verstanden!
Das Problem mit dem Stopptaster ist mittlerweile gelöst: Ich lege den Taster in den letzten Rahmen, dann wird nach dessen Beendigung auch die While-Schleife verlassen.
habe heut abend noch einmal etwas asprobiert. Dabei ist noch einmal ein kleines VI entstanden.
Du kannst die Periode dür den nächsten State im vorherigen State einstellen.
das funktioniert gut! Mit der Zeit nimmt es LabVIEW halt nicht soo genau. Seltsam ist, daß 1000 oder 2000 ms genau funktionieren, 1500ms oder 330ms aber immer eine kleine Abweichung hat :?
Für meine Anwendung müsste es aber genügen.
Danke
Peter