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!
18.03.2012, 22:43 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2012 22:44 von schrotti.)
Um einen Counter zur verwenden ist, soweit ich weiß, ein FPGA notwendig, der im Chassis des cRIO sitzt. Weiterhin muss das FPGA-Toolkit installiert sein. Es wird deutlich einfacher und günstiger sein, sich ein Counter-Modul zu kaufen, deren Preise bei ca. 100 € anfangen.
Hallo Gerd
Ich benutze einen Motor an dem ein Zahnrad mit 8 zähnen befestigt ist. Ein Hall Effekt Sensor erfasst dann die Zähne diese Zahnrads. Der Motor dreht mit einer maximalen Geschwindigkeit von 300U/min. Das sind also meine „höheren Geschwindigkeiten“. Das wären dann 5 U/Sek mit 8 Zähnen bei denen der Sensor jeweils an und ausgeht sind das dann ja 80 Signale pro Sekunde.
Die HW-Zugriffe habe ich gegen den Knopf „Zählereingang“ ersetzt. An dessen Stelle befindet sich sonst einer der Digitalen Eingänge des 9403-Moduls.
Zu deiner Frage:
„Wie schnell fragst du den DI ab? „
Da ich sehr neu und unerfahren mit der Software und Hardware bin weiß ich nicht so genau was du damit meinst. Also kann ich das einstellen?
Normalerweise mache ich das so:
Ich erstelle von dem „Getting started“ Fenester ein neues Real-time Projekt (sind dann ja mehrere Schritte bei denen ich dann die CompactRIO auswählen kann) und ziehe dann mit „drag and drop“ aus dem „Project Explorer“ den Eingang an dem ich den Sensor angeschlossen habe z.B. DIO0 in mein Block Diagramm. Ja und dann führe ich das VI aus.
Kann ich da irgendwo einstellen wie schnell ich den Digitalen Eingang abfragen möchte? Würde das dann auch die Nyquist-Frequenz beachten?!
Achso die CompactRIO ist über ein Ethernet Kabel mit dem Pc verbunden.
Wie und wo kann ich die DI- Module als Counter konfigurieren und was hat das dann für eine Auswirkung?
19.03.2012, 09:01 (Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2012 09:02 von GerdW.)
Zitat:Kann ich da irgendwo einstellen wie schnell ich den Digitalen Eingang abfragen möchte? Würde das dann auch die Nyquist-Frequenz beachten?!
Ja, über das Schleifen-Timing - aller Schleifen. Es nützt nichts, wenn du alle Schleifen ohne Timing laufen lässt und die sich gegenseitig die CPU-Leistung abgraben ("hogging")...
Zitat:Wie und wo kann ich die DI- Module als Counter konfigurieren und was hat das dann für eine Auswirkung?
Rechtsklick auf das Modul (im Projekt natürlich), Eigenschaften, "Specialty Digital Configuration"... ( )
@Schrotti:
Zitat:Um einen Counter zur verwenden ist, soweit ich weiß, ein FPGA notwendig, der im Chassis des cRIO sitzt. Weiterhin muss das FPGA-Toolkit installiert sein.
Ja und nein. Ja, der FPGA macht eh die ganze Arbeit, da er die ScanEngine bedient. Nein, man braucht für die ScanEngine kein FPGA-Modul.
Außerdem benutzt Michel doch schon ein 9403-Modul...
Also ich habe jetzt mal die "Scan Period" von der Crio von 10 auf 1ms geändert. Jetzt funktioniert der Zähler!
Das nächste Problem was sich jetzt ergeben hat ist, dass wenn ich jetzt für mein Versuchsmodell vier von diesen Zählern benutze das ganze System sehr träge wird. Also ich benutze dabei vier Motoren mit je einem Rad, dessen Geschwindigkeit von vier Sensoren aufgenommen wird.
Diese Motoren steuere ich mit einer Verstärker Schaltung über das analoge Ausgangs Modul 9263 an.
Wenn ich dann jetzt ein VI erstelle mit 4 Zählern und einem Regler für die Motorspannung ändert sich die Motorgeschwindigkeit immer erst ca. 3 Sekunden nachdem ich den Regler höher drehe (VI nur mit Regler klappt sofort)
Könnte das daran liegen, dass die 4 Schleifen so viel CPU Leistung "abgraben", dass das ganze Programm dann so langsam wird?
Könnte da dann das Timing helfen?
Und wie mache ich das? Einfach in die Schleifen "time delays" einbauen damit die nicht permanent durchlaufen?
Das mit dem ""Specialty Digital Configuration"" muss ich nochmal ausprobieren.
Viele Grüße
20.03.2012, 10:46 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2012 10:46 von GerdW.)
Zitat:"Scan Period" von der Crio von 10 auf 1ms geändert. Jetzt funktioniert der Zähler!
Also doch Nyquist...
Zitat:Könnte das daran liegen, dass die 4 Schleifen so viel CPU Leistung "abgraben", dass das ganze Programm dann so langsam wird?
Könnte da dann das Timing helfen?
Und wie mache ich das? Einfach in die Schleifen "time delays" einbauen damit die nicht permanent durchlaufen?
- Wenn die ScanEngine mit 1kHz arbeitet, brauchen die Schleifen auch nicht schneller arbeiten...
- Das cRIO hat zwar ein RT-OS, d.h. aber nicht, dass es unendlich schnell arbeitet. Und 1kHz-Schleifen können das cRIO auch ganz schnell auslasten (zumindest die kleineren 9073/74, die ich bisher auf dem Schreibtisch hatte).
- Du kannst die Zähler auch alle in eine Schleife packen. Wozu 4 parallele Schleifen?
- Evtl. kannst du auch statt 4 Einzelbits abzufragen gleich ein ganzes Wort abfragen und auswerten. Auf FPGA geht das jedenfalls, kann gerade nicht auf ein cRIO zugreifen...
Viele Dank nochmal das du dir so viel Mühe mit mir gibst
Ich habe die Crio jetzt leider nicht hier. Kann das mit dem Timing also erst morgen ausprobieren aber ich habe die 4 Schleifen schon mal alle in eine gepackt und ausprobiert ob es geht. Und dabei ist mir dann das selbe Phänomen aufgefallen, dass auch bei meinen Versuchen mit der Crio vorkam:
Wenn ich einen Sensor alleine laufen lasse Zeigt mir ein VI mit einer U/min Schleife bei bei 15V am Motor 300U/min an (soll auch so sein laut Hersteller). Benutzte ich dann 4 Sensoren, also auch vier Schleifen, zeigen mir meine U/min Anzeigen weniger als 300U/min an (ca. 160-235) und Schwanken auch sehr. Ich hatte dann jetzt geschlussfolgert, dass durch die Auslastung der Crio diese nicht mehr in der Lage ist jedes Signal zu verarbeiten und dadurch diese Abweichungen zustanden kommen.
Wenn ich mir jetzt aber wieder das Sensor Signal von LabVIEW simulieren lasse (siehe Anhang - ich weiß der RubeGoldberg-Code ist immer noch drin ) ist genau das selbe Phänomen. Also mit einem "Sensor" klappt es super jedoch bei der gleichen Einstellung des simulierten Signals und 4 Geschwindigkeits-Schleifen sinkt die Geschwindigkeit.
Dadurch kann es doch eigentlich nicht an der Auslastung der Crio liegen oder wird dann der Chip von meinem Pc so sehr ausgelastet?
"Evtl. kannst du auch statt 4 Einzelbits abzufragen gleich ein ganzes Wort abfragen und auswerten"
Wie funktioniert denn das ? Oder was hat das für Auswirkungen/Vorteile?
Fehler:
Deine Messungen sind nicht unabhängig voneinander, denn du nimmst du für alle 4 Messungen denselben Zeitstartwert.
Kritikpunkt an deiner Simulation: Damit bringst du jeden Rechner an den Anschlag, auch einen Quadcore-Desktop. Das Signal-Erzeugungs-VI so schnell und mit so vielen Daten laufen zu lassen, katastrophal. Ich habe das mal etwas reduziert und angepasst.
Weiterhin solltest du der CPU etwas Zeit zum "Atmen" geben, das habe ich durch ein Wait von 1ms pro Schleife eingefügt. Für Real-Time-Code kannst du auch weniger warten (z.B. 500 µs), dafür gibt es spezielle VIs in der RT-Palette. Weniger macht kaum Sinn, da durch Verwendung des Scan-Engines sowieso die Daten nicht schneller als mit ca. 1 kHz kommen.
Also meinst wenn ich dann eine Wartezeit von 500 µs in meine Schleifen einbaue, müsste das dann auch für meine Anwendung mit der Crio funktionieren?
Habe mal die Wartezeit bei dem VI das du verändert hast entfernt und es funktioniert trotzdem. Liegt das dann daran, dass das simulierte Signal das du eingebaut hast nicht so viel Leistung verbraucht?
Werde es morgen mal mit den Wartezeiten ausprobieren. Hoffe ich bekomme es dann hin das die CPU nicht so stark ausgelastet wird.
Für mich ist das irgendwie ein bisschen schwierig nachzuvollziehen, das die schleifen so viel Leistung in Anspruch nehmen aber bin ja noch in den Anfängen.
Viele Grüße
21.03.2012, 09:20 (Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2012 09:20 von GerdW.)
Zitat:Für mich ist das irgendwie ein bisschen schwierig nachzuvollziehen, das die schleifen so viel Leistung in Anspruch nehmen aber bin ja noch in den Anfängen.
Also:
- Es ist für dich schwierig nachzuvollziehen, dass eine Schleife, die ungebremst (ohne irgendwelche Wartezeiten) mit vielleicht 1M Iterationen/s mehr CPU-Last erzeugt als eine Schleife, die durch eine Wartezeit eingebremst mit nur 1k Iteration/s vor sich hin eiert???
- Es ist für dich nicht nachvollziehbar, dass man eine Datenquelle (hier: ScanEngine), die nur 1000 Messwerte pro Sekunde liefert, nicht 1Mio pro Sekunde abzufragen braucht, da dies weder neue Daten liefert noch die CPU-Last verringert?
(21.03.2012 01:15 )michelb schrieb: Hey Jens
Das läuft ja jetzt echt gut!
Also meinst wenn ich dann eine Wartezeit von 500 µs in meine Schleifen einbaue, müsste das dann auch für meine Anwendung mit der Crio funktionieren?
Habe mal die Wartezeit bei dem VI das du verändert hast entfernt und es funktioniert trotzdem. Liegt das dann daran, dass das simulierte Signal das du eingebaut hast nicht so viel Leistung verbraucht?
Genau, alleine schon die Reduktion und Korrektur bei der Signal-Simulation hat die CPU-Last extrem heruntergeschraubt.
(21.03.2012 01:15 )michelb schrieb: Werde es morgen mal mit den Wartezeiten ausprobieren. Hoffe ich bekomme es dann hin das die CPU nicht so stark ausgelastet wird.
Für mich ist das irgendwie ein bisschen schwierig nachzuvollziehen, das die schleifen so viel Leistung in Anspruch nehmen aber bin ja noch in den Anfängen.
Für das RT-Programm, bau auf JEDEN Fall irgendeine Art von Wartezeit ein. Alles Anderes ist ein tödlich. Ansonsten versucht LabVIEW, deine 4 Schleifen so schnell wie möglich ablaufen zu lassen. Auf deinem 9024 läuft zwar ein RT-Betriebssystem, aber es hat "nur" einen Single-Core-Prozessor mit 800 MHz, irgendwann ist Schluss mit den CPU-Resourcen.
Und wie schon mehrfach hier erwähnt, da du deine DIs per Scan-Engine und somit Einzelpunkterfassung ausliest, kommst du sowie nicht auf eine höhere Ausleserate als 1 KHz ( = 1 ms Wartezeit).
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!