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:
- 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:
- Fügen Sie, falls noch nicht geschehen, den neuen Kanal zum FPGA-Code hinzu (siehe FPGA – Neuen Kanal hinzufügen)
- 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)
- 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
- 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:
| Variable | Typ | Zugriff | Beschreibung | Einheit |
|---|---|---|---|---|
| FPGA_Version (allgemein) | UInt32 | r | HEX-codiertes Kompilierungsdatum des FPGA: Format: 0xYYYYMMDD | |
| Angle | Double | r/w | Simulationswinkel in Grad | ° |
| Angle_Actual | Double | r | Aktueller Simulationswinkel in Grad | ° |
| Angle_DegreePerSec | Double | r/w | Bewegungsgeschwindigkeit zur neuen Winkelposition | °/s |
| Angle_Max | Double | r/w | Maximaler Winkelausschlag (Absolutwert): Winkel, bei dem das Differenzausgangssignal seine maximale Amplitude erreicht, die durch „LUT_Amplitude“ und PGA festgelegt ist. | ° |
| LUT_Amplitude | Double | r/w | Maximale Amplitude des Differenzausgangssignals relativ zur Amplitude des Erregersignals, multipliziert mit PGA (siehe „LUT_Write“). | % |
| LUT_Calibration | CTL[1] | r/w | Kalibriereinstellungen (siehe „LUT_Write“) | |
| LUT_Write | Boolean | r/w | Setzen, 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) | |
| PGA | UInt8 | r/w | PGA-Einstellung (Bereich: 0…7): Û_OUT = 0.078125 * 2^PGA * Û_LUT | |
| SaveConfig | Boolean | r/w | Setzen, 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
| Variable | Typ | Beschreibung | Einheit |
|---|---|---|---|
| SineAmplitude_%, CosineAmplitude_% | Double | Amplituden-Korrekturfaktoren für die Lookup-Tabelle (siehe „LUT_Amplitude“): Amplitude_LUT = "LUT_Amplitude" * x | % |
| SineDCOffset_%, CosineDCOffset_% | Double | Amplitude 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.
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).

- 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 %):