22.06.2009, 14:08
Hallo allerseits,
ich arbeite derzeit an einem kleinen Projekt zur Steuerung eines Linearmotors (Tauchspulenmotor). (Diplomarbeit)
Als Echtzeitsystem kommt ein cRIO-9072 zum Einsatz, das via direkter LAN-Verbindung an einem Laptop hängt. (100Mbit)
Bei der Programmierung verwende ich FPGA-, RT- und PC-Target.
...auf dem FPGA werden 3 I/Os angebunden. Es befindet sich ein PID-Regler zur Positionsregelung auf dem Target und es findet zur späteren Auswertung der Ergebnisse eine live-Ableitung a la [x(i)-x(i-1)]/dt mittels feedbacknode statt, um aus einem gemessenen Positionssignal so gut es geht Geschwindigkeit und Beschleunigung zu ermitteln.
...das PC-Target soll hauptsächlich zu Steuerungszwecken dienen. Es ist möglich Wegvorgaben zu machen, Parameter festzulegen, die für die Regelung nötig sind und Prozesse zu starten und stoppen.
...das RT-Target hat 2 Hauptfunktionen. Zum einen dient es derzeit zur Kommunikation zwischen FPGA und PC target, um Parameter vom PC zum FPGA durchzureichen und andersherum um Messwerte vom FPGA zum PC durchzureichen. Zum anderen berechnet es zu jedem Zeitpunkt geforderte Sollpositionen der Wegvorgabe und gibt diese an das FPGA target.
Soweit zum Aufbau. Nun bleiben noch 2 Problemchen:
1) Laut allem was ich bisher von offizieller Seite rausbekommen habe dürften zur Kommunikation zwischen RT und PC network published shareVariablen das geeignete Mittel zu sein. Das ergab bei ersten Versuchen ca. 15 shared Variables die es von der Shared Variable Engine zu verbreiten galt. Grundsätzlich habe ich dieses System zwar zum laufen gebracht aber viele der Variablen wurden erst mit extremer Verzögerungen einiger Sekunden aktualisiert. Das ist absolut inakzeptabel. Bündelung einiger Cluster zum Zweck die Anzahl der Variablen zu reduzieren brachte etwas abhilfe. Dabei war es egal ob ich die SVE auf dem RT target oder dem PC hab laufen lassen.
2) Datenaufzeichnung. Ich kann, wie gesagt auf dem Frontpanel Verfahrwege einstellen und dann vom RT target entsprechend eine Sollwertvorgabe (Sinusfahrt/Rampenfahrten) produzieren lassen. Während ich verfahre will ich Zeitpunkt, Soll/Istposition, Soll/Istgeschwindigkeit, Beschleunigung und Regelabweichung mitloggen. Mein Plan bestand uhrsprünglich darin, die Kommunikation zwischen RT target und PC einigermaßen zu synchronisieren und dann auf dem PC einfach das ganze zeilenweise alle 20msec-50msec in ein einfaches csv file (genauer gesagt tsv) zu speichern. Ist es vielleicht einfacher auf dem RT target die Daten zu loggen und später manuell via ftp "abzuholen"?
Ich schlag mich jetzt schon wochenlang mit diesen Problemen rum und mittlerweile muss ich Ergebnisse liefern können. Immerhin geht das alles von der Zeit ab die ich für die Doku brauche. Tag für Tag häng ich stundenlang über der software um einen flüssigen datenfluss zu erreichen. Bisher ohne großen Erfolg.
Ich bin um jeden Tipp und jede Anregung dankbar, die mich hier einen Schritt weiterbringt.
Das ist erst mein 2tes größeres LabVIEW-Projekt.
Dank im vorraus, ich hoffe der lange Text hat niemanden abgeschreckt.
(P.S. Angaben zur LabVIEWVersion editiere ich grade in meinem Profil, kann nur Minuten dauern bis die Infos links auftauchen)
ich arbeite derzeit an einem kleinen Projekt zur Steuerung eines Linearmotors (Tauchspulenmotor). (Diplomarbeit)
Als Echtzeitsystem kommt ein cRIO-9072 zum Einsatz, das via direkter LAN-Verbindung an einem Laptop hängt. (100Mbit)
Bei der Programmierung verwende ich FPGA-, RT- und PC-Target.
...auf dem FPGA werden 3 I/Os angebunden. Es befindet sich ein PID-Regler zur Positionsregelung auf dem Target und es findet zur späteren Auswertung der Ergebnisse eine live-Ableitung a la [x(i)-x(i-1)]/dt mittels feedbacknode statt, um aus einem gemessenen Positionssignal so gut es geht Geschwindigkeit und Beschleunigung zu ermitteln.
...das PC-Target soll hauptsächlich zu Steuerungszwecken dienen. Es ist möglich Wegvorgaben zu machen, Parameter festzulegen, die für die Regelung nötig sind und Prozesse zu starten und stoppen.
...das RT-Target hat 2 Hauptfunktionen. Zum einen dient es derzeit zur Kommunikation zwischen FPGA und PC target, um Parameter vom PC zum FPGA durchzureichen und andersherum um Messwerte vom FPGA zum PC durchzureichen. Zum anderen berechnet es zu jedem Zeitpunkt geforderte Sollpositionen der Wegvorgabe und gibt diese an das FPGA target.
Soweit zum Aufbau. Nun bleiben noch 2 Problemchen:
1) Laut allem was ich bisher von offizieller Seite rausbekommen habe dürften zur Kommunikation zwischen RT und PC network published shareVariablen das geeignete Mittel zu sein. Das ergab bei ersten Versuchen ca. 15 shared Variables die es von der Shared Variable Engine zu verbreiten galt. Grundsätzlich habe ich dieses System zwar zum laufen gebracht aber viele der Variablen wurden erst mit extremer Verzögerungen einiger Sekunden aktualisiert. Das ist absolut inakzeptabel. Bündelung einiger Cluster zum Zweck die Anzahl der Variablen zu reduzieren brachte etwas abhilfe. Dabei war es egal ob ich die SVE auf dem RT target oder dem PC hab laufen lassen.
2) Datenaufzeichnung. Ich kann, wie gesagt auf dem Frontpanel Verfahrwege einstellen und dann vom RT target entsprechend eine Sollwertvorgabe (Sinusfahrt/Rampenfahrten) produzieren lassen. Während ich verfahre will ich Zeitpunkt, Soll/Istposition, Soll/Istgeschwindigkeit, Beschleunigung und Regelabweichung mitloggen. Mein Plan bestand uhrsprünglich darin, die Kommunikation zwischen RT target und PC einigermaßen zu synchronisieren und dann auf dem PC einfach das ganze zeilenweise alle 20msec-50msec in ein einfaches csv file (genauer gesagt tsv) zu speichern. Ist es vielleicht einfacher auf dem RT target die Daten zu loggen und später manuell via ftp "abzuholen"?
Ich schlag mich jetzt schon wochenlang mit diesen Problemen rum und mittlerweile muss ich Ergebnisse liefern können. Immerhin geht das alles von der Zeit ab die ich für die Doku brauche. Tag für Tag häng ich stundenlang über der software um einen flüssigen datenfluss zu erreichen. Bisher ohne großen Erfolg.
Ich bin um jeden Tipp und jede Anregung dankbar, die mich hier einen Schritt weiterbringt.
Das ist erst mein 2tes größeres LabVIEW-Projekt.
Dank im vorraus, ich hoffe der lange Text hat niemanden abgeschreckt.
(P.S. Angaben zur LabVIEWVersion editiere ich grade in meinem Profil, kann nur Minuten dauern bis die Infos links auftauchen)