Zum Inhalt springen
Kapitel 3 · Resolver Simulation

Echtzeitsystem

Die Software des Echtzeitsystems steuert das Gerät entsprechend den Werten, die sie über die Netzwerkschnittstelle (Shared Network Variables) erhält.

Hinweis: Das FPGA kann auch ohne das Echtzeitsystem angesteuert werden. Der Anwender kann eine eigene Anwendung entwickeln.

3.1Netzwerkschnittstelle (Shared Network Variables)

Zur Steuerung der Simulation kommuniziert das Echtzeitsystem mit der Host-Anwendung über eine Technik namens „Shared Network Variables“. Dabei handelt es sich um Variablencontainer, auf die über eine spezielle Netzwerkadresse zugegriffen werden kann. Die Container befinden sich in den RT-Ordnern („RT_ResSi“ oder „RT_RVDT“):

  • ResSi_Variables.lvlib / RVDT_Variables.lvlib: Enthält nicht kanalbezogene Variablen wie die FPGA-Version
  • ResSi_Variables_x.lvlib / RVDT_Variables_x.lvlib: Enthält kanalbezogene Variablen, wobei x die Kanalnummer darstellt (jeder Kanal hat eine eigene Datei).

3.1.1Zugriff auf eine Variable vom Host-Computer

Um von einem entfernten System auf eine Variable zuzugreifen, kann der Entwickler das VI „RT_PC_ResSi_NetVarPathGen.vi“ (bzw. „RT_PC_RVDT_NetVarPathGen.vi“) in „RT_ResSi/Share“ (bzw. „RT_RVDT/Share“) zusammen mit einem „Read Variable“- oder „Write Variable“-Element verwenden.

PC-Beispiel zum Lesen des aktuellen Winkels und zum Schreiben eines neuen Winkels im RVDT-Simulatormodus:

LabVIEW-Beispiel zum Lesen der Netzwerkvariable Angle_Actual
Abbildung 19: Beispiel zum Lesen einer Netzwerkvariable (PC)
LabVIEW-Beispiel zum Schreiben der Netzwerkvariable Angle
Abbildung 20: Beispiel zum Schreiben einer Netzwerkvariable (PC)
  • TargetIP: IP-Adresse oder Hostname des RIO
  • Angle_Actual / Angle: Name der gewünschten Variable in „RVDT_Variables_x.lvlib“
  • ChannelNb: Kanalnummer -> x (bei x = 255 erfolgt der Zugriff auf „RVDT_Variables.lvlib“)

3.1.2Neuen Kanal hinzufügen

Beispiel für RVDT-Kanal 1:

  1. Fügen Sie, falls noch nicht geschehen, den neuen Kanal zum FPGA-Code hinzu (siehe FPGA – Neuen Kanal hinzufügen)
  2. Erstellen Sie eine Kopie von „ResSi_Variables_0.lvlib“ und benennen Sie sie in „ResSi_Variables_1.lvlib“ um (dieser Schritt ist im Project Explorer nicht möglich; verwenden Sie stattdessen den Windows Explorer)
  3. Aktualisieren Sie die FPGA-Referenz
    • Öffnen Sie „RT_RVDT/RT_RVDT_Thread.vi“
    • Klicken Sie mit der rechten Maustaste auf „RefnumIn“ und wählen Sie „Open Type Def.“
    • Klicken Sie mit der rechten Maustaste auf „Reference“ und wählen Sie „Configure FPGA VI Reference…“
    • Klicken Sie auf „Import from bitfile…“, navigieren Sie zur benötigten Bitdatei in „FPGA Bitfiles“ und öffnen Sie sie
    • Speichern Sie alles
  4. Aktualisieren Sie die Build-Spezifikation und führen Sie den Build erneut aus
    • Rechtsklick auf „RIO-System/Build_Specification/RT_RVDT“ -> Properties
    • Wählen Sie auf der rechten Seite „Source Files“ aus
    • Navigieren Sie zu „RT_RVDT/RVDT_Variables_1.lvlib“ und fügen Sie die Datei dem Abschnitt „Always Included“ hinzu
    • Führen Sie den Build erneut aus und flashen Sie das Ergebnis („Run as startup“)

3.2Resolver-Simulation (RT_ResSi)

Im Handbuch V3.0 nicht beschrieben. Siehe Software für den Resolver-Modus (aus Handbuch V2.2).

3.3RVDT-Simulation (RT_RVDT)

Dieser Abschnitt beschreibt das Echtzeitsystem für den RVDT-Simulationsmodus.

3.3.1Steuerschnittstelle (RVDT_Variables)

Wie im Abschnitt Netzwerkschnittstelle beschrieben, wird die RVDT-Simulation über Network Shared Variables gesteuert. Die folgende Tabelle beschreibt sie:

VariableTypZugriffBeschreibungEinheit
FPGA_Version (allgemein)UInt32rHEX-codiertes Kompilierungsdatum des FPGA: Format: 0xYYYYMMDD
AngleDoubler/wSimulationswinkel in Grad°
Angle_ActualDoublerAktueller Simulationswinkel in Grad°
Angle_DegreePerSecDoubler/wBewegungsgeschwindigkeit zur neuen Winkelposition°/s
Angle_MaxDoubler/wMaximaler Winkelausschlag (Absolutwert): Winkel, bei dem das Differenzausgangssignal seine maximale Amplitude erreicht, die durch „LUT_Amplitude“ und PGA festgelegt ist.°
LUT_AmplitudeDoubler/wMaximale Amplitude des Differenzausgangssignals relativ zur Amplitude des Erregersignals, multipliziert mit PGA (siehe „LUT_Write“).%
LUT_CalibrationCTL[1]r/wKalibriereinstellungen (siehe „LUT_Write“)
LUT_WriteBooleanr/wSetzen, um die Lookup-Tabellen mit neuen Daten zu aktualisieren, die aus den Werten in „LUT_Amplitude“ und „LUT_Calibration“ berechnet werden. True: Aktualisierung starten (vom Anwender gesetzt). False: Aktualisierung abgeschlossen (vom RT gesetzt)
PGAUInt8r/wPGA-Einstellung (Bereich: 0…7): Û_OUT = 0.078125 * 2^PGA * Û_LUT
SaveConfigBooleanr/wSetzen, um die aktuelle Konfiguration und Winkeleinstellung dauerhaft im Flash-Speicher des Echtzeitsystems zu speichern (sie wird bei jedem Start geladen). True: Speichervorgang starten (vom Anwender gesetzt). False: Speichervorgang abgeschlossen (vom RT gesetzt)

CTL[1] -> RT_PC_RVDT_LUT_Calibration.ctl

VariableTypBeschreibungEinheit
SineAmplitude_%, CosineAmplitude_%DoubleAmplituden-Korrekturfaktoren für die Lookup-Tabelle (siehe „LUT_Amplitude“): Amplitude_LUT = "LUT_Amplitude" * x%
SineDCOffset_%, CosineDCOffset_%DoubleAmplitude der DC-Offset-Korrektur der LUT relativ zur Amplitude des Erregersignals, multipliziert mit PGA: Amplitude_LUT = "LUT_Amplitude" + x%

3.3.2RT_RVDT_Top.vi

Top-VI des Echtzeitsystems im RVDT-Simulationsmodus.

Ablaufdiagramm von RT_RVDT_Top.vi: FPGA öffnen, ein RT_RVDT_Thread.vi pro Kanal, Status-LED und Firmwareversion
Abbildung 21: RT_RVDT_Top.vi – Ablaufdiagramm

3.3.3RT_RVDT_Thread.vi

Dieses VI ist für die Ansteuerung des FPGA zuständig. Es wird vom Top-VI zyklisch (100 ms) für jeden verfügbaren Kanal des FPGA aufgerufen (parallel als Multithread).

Anschlussfeld von RT_RVDT_Thread.vi

  • LUT_Size-1: Letzter Index der Lookup-Tabellen (aus dem FPGA lesen)
  • ChannelNb: Kanalnummer
  • ResSi_Values: Mit dem Element des FPGA-Arrays „ResSi_Values“ an dem durch „ChannelNb“ festgelegten Index verbinden
  • ResSi_Settings: Mit dem Element des FPGA-Arrays „ResSi_Settings“ an dem durch „ChannelNb“ festgelegten Index verbinden

3.3.4RT_RVDT_SaveCfg.vi & RT_RVDT_LoadCfg.vi

Diese VIs dienen zum Speichern der aktuellen Konfiguration im Flash-Speicher und zum erneuten Laden.

3.3.5RT_PC_RVDT_LUT_ValueWrite.vi

Mit diesem VI werden die Aktualisierungsdaten für die Lookup-Tabellen erzeugt. Es übernimmt die Amplitude (LUT_Amplitude) und die Kalibriereinstellungen (LUT_Calibration) als Eingangsparameter und erzeugt die Lookup-Tabellen-Daten für beide Tabellen. Das folgende Diagramm zeigt Beispieldaten (LUT-Größe = 1024; max. Winkel = ±30°; LUT_Amplitude = 100 %):

Beispieldaten der Sinus- und Kosinus-LUT über Position 0 bis 1023 und Winkel -30 bis +30 Grad
Abbildung 22: Diagramm der RVDT-LUT-Beispieldaten