Der IRS-cRIO-Resolver-Simulator kann in einem Compact-RIO-Chassis von National Instruments eingesetzt werden, um das Signal des Resolver-Sensors von Elektromotoren zu simulieren.
Zweck
Dieses Dokument beschreibt die Hardwarefunktionen und die Verwendung der Softwareschnittstelle des IRS-Resolver-Simulationsmoduls.
Resolver-Sensor
Resolver-Sensoren werden häufig im Antriebsstrang von Elektro- oder Hybridfahrzeugen eingesetzt. Die folgende Abbildung zeigt das Prinzip eines typischen Resolvers, bei dem sich die Erregerwicklung „R“ dreht. Die beiden Statorwicklungen erhalten die Energie von der Erregung und erzeugen ein Signal, dessen Amplitude von der Rotorposition abhängt.
Wenn sich die Erregerwicklung dreht, zeigen die beiden Statorwicklungen ein Signal ähnlich wie in der folgenden Abbildung.
Resolver-Simulation
Bei Komponententests der Leistungsendstufen des Motortreibers ist es oft nicht erwünscht, einen Originalmotor mit seinen Sensoren in den Tester einzubinden. Andererseits soll das Resolver-Signal sowohl für Funktionstests und End-of-Line-Tests als auch für Lebensdauertests während der Designvalidierung erzeugt werden.
Speziell für Lebensdauertests bietet IRS Prüfsysteme an, die den Originalmotor mithilfe passiver induktiver Lasten nachbilden. Mit diesem Aufbau lassen sich hohe Phasenströme von 400 Arms erzeugen, während die Verlustleistung sehr gering bleibt, da die Energie als Blindleistung in den Lastspulen gespeichert wird.
Der Wechselrichter, der geprüft wird und die Phasenströme durch die Lastspulen erzeugt, muss dieselben Bedingungen „sehen“ wie mit einem realen Elektromotor im Fahrzeug. Daher muss das Sensorsignal der elektrischen Maschine emuliert werden. An dieser Stelle kommt die Resolver-Simulation ins Spiel.
Die Resolver-Simulation kann das Sensorsignal einer rotierenden Maschine simulieren oder bestimmte Positionen des Elektromotors emulieren. Das Modul lässt sich per Software so steuern, dass es an bestimmten Positionen stehen bleibt oder eine kontinuierliche Modulation ausführt, wie es ein rotierender Elektromotor tut. Die folgende Abbildung zeigt einen typischen Signalverlauf des Resolver-Simulators:
RVDT-Sensor
Ein RVDT (Rotary Variable Differential Transformer) ist ein Transformator zur Messung von Winkelauslenkungen. Die folgende Abbildung zeigt das Prinzip eines typischen Sensors, bei dem der Metallkern in einem begrenzten Winkelbereich drehbar ist. Die beiden Wicklungen auf Seite „B“ erhalten die Energie von der Erregung auf Seite „A“ und erzeugen ein Signal, dessen Amplitude von der Kernposition abhängt. Die Auslenkungsrichtung (Vorzeichen) lässt sich aus der Phase des Ausgangssignals im Vergleich zum Erregersignal bestimmen (positiver Winkel -> 0°; negativer Winkel -> 180°).
Abkürzungen
| Abkürzung | Beschreibung |
|---|---|
| cRIO | Compact Reconfigurable Input Output Module (kompaktes rekonfigurierbares Ein-/Ausgabemodul) |
| FIFO | First In First Out |
| FPGA | Field Programmable Gate Array |
| LUT | Look-up Table (Nachschlagetabelle) |
| MAX | Measurement & Automation Explorer |
| PGA | Programmable Gain Amplifier (Verstärker mit programmierbarer Verstärkung) |
| RPM | Revolutions per Minute (Umdrehungen pro Minute) |
| RT | Real Time (Echtzeit) |
| SPI | Serial Peripheral Interface (serielle Peripherieschnittstelle) |
| VI | Virtual Instrument (virtuelles Instrument) |
| ResSi | Resolver Simulation |
| RVDT | Rotary Variable Differential Transformer |
Tabelle 2: Abkürzungen
Hardware
Das folgende Kapitel stellt die Hardware des Moduls vor.
1.1Blockschaltbild
Die folgende Abbildung zeigt das Blockschaltbild des Moduls. Die Signale auf der rechten Seite sind für den Anwender zugänglich. Die Signale auf der linken Seite stellen die Compact-RIO-Schnittstelle dar und werden in diesem Handbuch nicht im Detail beschrieben.
Alle Ein- und Ausgangssignale sind vom Compact-RIO galvanisch getrennt. Der Erregerreferenzeingang sowie die Sinus- und Kosinusausgänge sind über Transformatoren getrennt. Der SYNC-Eingang ist digital über einen Optokoppler getrennt.
1.2Schnittstellen
Die Signale der Anwenderschnittstelle haben folgende Funktion. Jedes Signal hat einen positiven und einen negativen Anschluss.
- Erregerreferenzeingang:
- Eingangssignal vom zu prüfenden Umrichter
- Typischerweise wird ein Sinussignal von etwa 10 Vpp angelegt
- Sinus-/Kosinusausgang:
- Ausgangssignale der Simulation, eine amplitudenmodulierte Darstellung des Erregersignals. Die Modulation erfolgt per Software.
- Im RVDT-Modus wird das Ausgangssignal zwischen Sin+ und Cos+ abgegriffen (Sin- und Cos- müssen miteinander verbunden werden) -> Differenzausgangssignal:
- SYNC-Eingang (nur ResSi):
- Mit diesem Signal kann die Modulationsfrequenz der Sinus- und Kosinusausgänge mit einem Drehzahlsignal synchronisiert werden (im RVDT-Modus nicht verwendet).
- D. h., hier kann die Drehzahl (RPM) des Motors angelegt werden.

1.3Pinbelegung
Die folgende Tabelle zeigt die Pinbelegung des Frontsteckverbinders.
| Pin | Beschreibung |
|---|---|
| 0 | SYNC + |
| 1 | SYNC - |
| 2 | Sinusausgang - |
| 3 | Sinusausgang + |
| 4 | - |
| 5 | Kosinusausgang - |
| 6 | Kosinusausgang + |
| 7 | - |
| 8 | Erregerreferenzeingang - |
| 9 | Erregerreferenzeingang + |
Tabelle 4: Pinbelegung des Frontsteckverbinders

Eine Sinusschwingung am Eingang wird abhängig von der geforderten Drehrichtung und Motordrehzahl moduliert. Die modulierten Signale werden als gedämpfte Sinusschwingung und als gedämpfte (und phasenverschobene) Kosinusschwingung ausgegeben. Die Dämpfung lässt sich per Software konfigurieren.
Es ist auch möglich, einen statischen Rotorwinkel einzustellen.
Darüber hinaus steht ein Synchronisationseingang zur Verfügung, mit dem sich beispielsweise eine externe Frequenz messen lässt.
1.4Technische Daten
| Signal | Merkmal | Min | Typisch | Max | Einheit |
|---|---|---|---|---|---|
| Versorgungsspannung | Versorgungsspannung (wird vom cRIO-Chassis bereitgestellt, keine externe Spannung erforderlich) | 4,5 | 5,5 | V | |
| Versorgungsspannung | Stromaufnahme (wird vom cRIO-Chassis bereitgestellt) | 50 | mA | ||
| Erregerreferenzeingang | Spannungsbereich der Erregerreferenz | 20 | Vpp | ||
| Erregerreferenzeingang | Eingangswiderstand der Erregerreferenz (bei 10 kHz, induktiv) | 2000 | Ohm | ||
| Erregerreferenzeingang | Eingangsfrequenz der Erregerreferenz | 2 | 10 | 20 | kHz |
| SYNC-Eingang | Eingangsspannungsbereich SYNC (Spitzenspannung) | 5 | 50 | Vpeak | |
| SYNC-Eingang | Erkennungsschwelle SYNC-Eingang | 3 | V | ||
| SYNC-Eingang | Eingangsfrequenz SYNC | 1 | 200 | Hz | |
| SYNC-Eingang | Eingangsstrom SYNC (U > 3 V) | 2 | 7 | mA | |
| Sinus-/Kosinusausgang | Ausgangspegel Sinus/Kosinus (abhängig von den Softwareeinstellungen) | 0 | 20 | Vpp | |
| Sinus-/Kosinusausgang | Ausgangswiderstand (bei 2,5–10 kHz) | 5 | 7 | 20 | Ohm |
Tabelle 5: Technische Daten
1.5Beispiel-Signalverläufe (Resolver)
Die folgenden Screenshots veranschaulichen die Funktion (Kanal 1: Erregung, Kanal 2: Sinusausgang, Kanal 3: Kosinusausgang).
1.6Beispiel-Signalverläufe (RVDT)
Die folgenden Screenshots veranschaulichen die Funktion (Kanal 3: Erregung; Kanal M: Differenzausgangssignal; max. Winkel (Einstellung): 30°).
LabVIEW-Projekt und FPGA
2.1LabVIEW-Projekt
2.1.1Allgemeines
Das Projekt enthält die vollständige Software für das Target:
- FPGA
- Echtzeitsystem: RT_ResSi & RT_RVDT
- Computer: PC_ResSi & PC_RVDT
Die Targets cRIO-9074, cRIO-9075 und sbRIO-9602 sind bereits für einen Kanal vordefiniert und vorkompiliert; weitere Targets und/oder Kanäle lassen sich jedoch einfach zum Projekt hinzufügen.
Hinweis 1: Die PC-Software dient ausschließlich Demonstrationszwecken.
Hinweis 2: Das RT-System ist nicht zwingend erforderlich, wird aber empfohlen. Das FPGA kann auch direkt von einem Computer angesteuert werden, dieses Handbuch behandelt jedoch nur den empfohlenen Weg (FPGA <-> RT <-> Network Shared Variables <-> PC).
2.1.2Neues RIO-Target hinzufügen
Ein neues RIO-Target lässt sich sehr einfach hinzufügen. Im Folgenden eine kurze Beschreibung:
- Legen Sie ein neues Target-Gerät an
- Klicken Sie mit der rechten Maustaste auf das Projekt -> New -> Targets and Devices…
- Wählen Sie das Target aus
- Das neue Target erscheint im Project Explorer
- Kopieren Sie die benötigten Elemente aus den alten Targets an dieselbe Stelle im neuen Target
- Ordner: RT, RT_ResSi, RT_RVDT
- Fügen Sie das FPGA-Target hinzu (Rechtsklick auf das neue Chassis -> New -> FPGA Target)
- Kopieren Sie die FPGA-Elemente: „[0]_ResSi“ (Ordner & Gerät), „FPGA“, „Memory“, „SPI_Resolver_Clock“
- Legen Sie neue Build-Spezifikationen für FPGA, RT_ResSi und RT_RVDT an und verwenden Sie dabei die alten als Vorlagen (ändern Sie nur „Name“ [1] und „Target Directory“ [2] und aktualisieren Sie „Source Files“ [3])
- Führen Sie den Build der FPGA-Build-Spezifikation aus und warten Sie, bis er abgeschlossen ist (dauert einige Zeit) -> Bitdatei
- Fügen Sie die neue Bitdatei zu „RT_ResSi/RT_OpenFPGA.vi“ hinzu:
- Duplizieren Sie das Unterdiagramm (Duplicate Subdiagram)
- Setzen Sie das Symbol auf „DeviceCode“ und den Wert auf den Gerätecode des Targets und klicken Sie dann auf „OK“ (den Gerätecode erhalten Sie per Rechtsklick auf das neue Target -> Properties -> Conditional Disable Symbols -> DeviceCode)
- Konfigurieren Sie „Open FPGA VI Reference“ so, dass es auf die neu erzeugte FPGA-Bitdatei verweist
- Führen Sie den Build der benötigten RT-Build-Spezifikation aus („Run as startup“)
2.2FPGA
Dieser Teil behandelt den Code für das FPGA. Er ist für ein Gerät in Steckplatz 1 (Kanal 0) eingerichtet und bereits für die Erweiterung um weitere Kanäle vorbereitet.
2.2.1Top-VI & FPGA-Schnittstelle
Das Top-VI enthält alle Ein- und Ausgangsvariablen, die für den Betrieb benötigt werden.
Eingänge
LUT Update Section (siehe: Sinus- und Kosinus-Lookup-Tabellen)
Bedienelemente zum Aktualisieren der Sinus- und Kosinus-Lookup-Tabellen. Verwenden Sie DMA_FIFO zum Schreiben neuer Werte.
| Parameter | Beschreibung |
|---|---|
| LutUpdate_ChannelNb | Kanalnummer für den LUT-Schreibvorgang (nur Kanal 0 ist vordefiniert) |
| LutUpdate_WriteSine | Setzen, um das Schreiben in die Sinus-LUT zu starten (DMA_FIFO). |
| LutUpdate_WriteCosine | Setzen, um das Schreiben in die Kosinus-LUT zu starten (DMA_FIFO). |
ResSi_Settings[x], Speed_Set_[RPM][x], Speed_Gradient_Set_[RPM/s][x]
Steuerwerte der Resolver-Simulation (Arrays, deren Index x die Kanalnummer darstellt).
| Parameter | Beschreibung |
|---|---|
| SampleRate_[Ticks] | ResSi-Modus: Aktualisierungsrate der Ausgangsabtastwerte zur Festlegung der Drehzahl. Wenn RPM die gewünschte Drehzahl in Umdrehungen pro Minute ist: SampleRate[Ticks] = (40^6 * 60) / (RPM * 1024). RVDT-Modus: Änderungsgeschwindigkeit des Winkels. Wenn [delta_phi/sec] die gewünschte Winkeländerung pro Sekunde ist: SampleRate[Ticks] = (abs(phi_max) * 40^6) / ([delta_phi/sec] * (1023 >> 1)) |
| Position_fixed_LUT | Legt eine konstante Position der Simulation fest. Der Wert liegt im Bereich 0…1023. ResSi-Modus: Range = 0° … 360°. RVDT-Modus: Range = -phi_max … 0° … phi_max (0° -> Position = 1023>>1 = 511) |
| SYNC_Phase_LUT | ResSi-Modus: Legt den 0°-Simulationswert relativ zur positiven Flanke des SYNC-Eingangssignals fest. Der Wert liegt im Bereich 0…1023 und entspricht einem Winkel von 0…360°. SYNC_Phase_LUT = Angle * 1024/360 |
| PGA_Setting | Maximales Übersetzungsverhältnis, wenn die Sinus-/Kosinus-LUT auf Vollaussteuerung definiert ist (Amplitude 100 %). Û_OUT = 0.078125 * 2^PGA * Û_LUT mit PGA = 0…7. Setzen Sie diesen Wert bei Hardwareversion 1.3 auf „2“! |
| Direction | ResSi-Modus: Legt die Drehrichtung fest. FALSE: links. TRUE: rechts |
| Rotate_Enable | ResSi-Modus: TRUE: Es wird eine rotierende Maschine simuliert. FALSE: Es wird eine feste Position simuliert |
| SYNC_Enable | ResSi-Modus: TRUE: Die Drehzahl wird aus der Frequenz des SYNC-Eingangs abgeleitet. FALSE: Die Drehzahl wird aus dem Eingang Sample_Rate[Ticks] abgeleitet |
| RVDT_Mode_(Rotation) | TRUE: RVDT-Modus. FALSE: Resolver-Simulationsmodus (Standard) |
| Speed_Set_[RPM] | ResSi-Modus: Zieldrehzahl der Drehzahlrampe in RPM |
| Speed_Gradient_Set_[RPM/s] | ResSi-Modus: Drehzahländerungsrate in RPM pro Sekunde; bei 0 wird die neue Drehzahl sofort übernommen. Andernfalls 1 RPM/s bis 16e6 RPM/s |
Ausgänge
- LUT_Size-1: Konstante: Der Wert stellt den letzten Index der Sinus- und Kosinus-Lookup-Tabellen dar.
- FirmwareVersion: Konstante: Datum der FPGA-Firmwareversion (HEX-Format: yyyymmdd)
- ResSi_Values[x]: Statuswerte der Resolver-Simulation (Array, dessen Index x die Kanalnummer darstellt).
| Parameter | Beschreibung |
|---|---|
| Sync_Period_[Ticks] | ResSi-Modus: Anzahl der Ticks zwischen zwei positiven Flanken am SYNC-Eingang (Ticks zu 25 ns) |
| Position_actual_LUT | Aktuelle Position der Simulation (siehe „Position_fixed_LUT“). |
| SampleRate_Actual_[Ticks] | ResSi-Modus: Aktuelle Aktualisierungsrate der Ausgangsabtastwerte, die die Drehzahl festlegt. |
| Sync_PosEdge | ResSi-Modus: Externes Drehzahlsignal auf die positive Flanke synchronisieren. |
2.2.2Sinus- und Kosinus-Lookup-Tabellen
Die Ausgangssignalverläufe sind in zwei Lookup-Tabellen mit je 1024 vorzeichenbehafteten 16-Bit-Integer-Elementen gespeichert. Eine LUT ist für den Sinusausgang zuständig, die zweite für den Kosinusausgang. Diese Tabellen können (sollten) vom Anwender aktualisiert werden. Dazu stehen drei Bedienelemente und ein DMA zur Verfügung.
Zum Aktualisieren kann der Entwickler „RT_PC_LUT_Write.vi“ im Ordner „RT_Share“ verwenden. Es führt die folgenden Schritte aus:
- Schreibt die gewünschte Kanalnummer in „LutUpdate_ChannelNb“. Im Standardzustand ist nur ein Kanal verfügbar.
- Setzt „LutUpdate_WriteSine“ oder „LutUpdate_WriteCosine“ auf true, um eine neue Übertragung einzuleiten.
- Schreibt 1024 Werte in den DMA „DMA_FIFO“ und wartet anschließend einige Millisekunden.
- Setzt den binären Schreibwert wieder auf false zurück.
2.2.3Neuen Kanal hinzufügen
- Legen Sie einen neuen Steckplatz an
- Rechtsklick auf das FPGA-Target -> New -> C Series Module -> New target or device -> C Series Module
- Name: „[x]_ResSi“, wobei x = Kanalnummer (in diesem Beispiel x = 1)
- Type: cRIO-generic. Anmerkung: Wenn diese Option nicht verfügbar ist, muss die folgende Zeile in die Datei LabVIEW.ini eingefügt werden (LabVIEW muss dabei geschlossen sein):
cRIO_FavoriteBrand=generic - Location: Steckplatznummer
- Erstellen Sie eine Kopie aller Speicherelemente außer DMA_FIFO (ändern Sie den Namen jedes Speicherelements so, dass er die neue Kanalnummer wiedergibt, hier 1).
- Folgende Änderungen sind erforderlich:
- FPGA_Top.vi -> SPI Handlers: Duplizieren Sie den Frame und setzen Sie die neuen Port-Pins (hier „[1]_ResSi/...“).
- FPGA_Top.vi -> Speed Ramp Generator: Erhöhen Sie die Array-Größe der beiden Eingangsvariablen um eins (hier auf 2): Rechtsklick auf die Variable -> Properties -> Size -> Fixed. Duplizieren Sie den Frame, setzen Sie das neue Speicherelement (hier „[1]RampSampleRate[Ticks]“) und verbinden Sie das VI mit den nächsten Array-Elementen (durch Erweitern der „Index Array“-Elemente)
- FPGA_LutUpdate.vi: Duplizieren Sie das Case-Element und aktualisieren Sie die Speicherelemente (hier „[1]_LUT_Sine“ und „[1]_LUT_Cosine“).
- FPGA_ResolverSim.vi: Erhöhen Sie die Größe von „ResSi-Settings“ um eins (hier auf 2) und wiederholen Sie diesen Schritt auch im Top-VI. Duplizieren Sie den Frame und aktualisieren Sie alle Konstanten (hier „[1]_...“). Verbinden Sie die Ein- und Ausgangsvariable mit dem neuen Array-Eintrag.
- Kompilieren Sie das FPGA-Target neu (Rebuild)
- Wenn Sie das Echtzeitsystem verwenden, müssen Sie eine Kopie der Netzwerkvariablen für den neuen Kanal anlegen. Weitere Informationen finden Sie unter Echtzeitsystem – Neuen Kanal hinzufügen.
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:
- 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 %):
PC-Software
Die PC-Software dient überwiegend nur Demonstrations- und Testzwecken; viele ihrer Komponenten (VIs) lassen sich jedoch auch in eigenen Softwareimplementierungen verwenden. Das macht die Entwicklung von Kundenanwendungen schneller und einfacher.
Hinweis: Die in diesem Projekt enthaltene PC-Software ist nicht für die direkte Ansteuerung des FPGA ohne das Echtzeitsystem geeignet!
4.1Ausführen der Demo-Software
Zum Starten der Software gibt es zwei Möglichkeiten. Bei der ersten öffnen Sie das gewünschte Top-VI („PC_ResSi_Top.vi“ oder „PC_RVDT_Top.vi“) und klicken auf die Run-Schaltfläche. Bei der zweiten führen Sie den Build der vordefinierten Build-Spezifikation aus (falls noch nicht geschehen) und starten anschließend die kompilierte ausführbare Datei im Unterordner „PC_EXE“. Der Vorteil der zweiten Methode ist, dass auf dem Zielrechner nur die Runtime installiert sein muss.
4.2Resolver-Simulation
Im Handbuch V3.0 nicht beschrieben. Siehe Software für den Resolver-Modus (aus Handbuch V2.2).
4.3RVDT-Simulation
4.3.1Demo- & Test-GUI
- Grundkonfiguration
- Target IP / Hostname -> Adresse des RIO-Targets
- FPGA Versions (Date) -> Kompilierungsdatum des FPGA (Format: YYYYMMDD)
- Channel Number -> Aktuell ausgewählter Kanal, der gesteuert wird
- Winkelsteuerung
- Angle [°] -> Gewünschter Simulationswinkel in Grad
- Set / Update -> Startet die Bewegung zu der durch „Angle [°]“ festgelegten Position
- Act. Angle [°] -> Aktuelle Simulationsposition in Grad
- Gerätekonfiguration
- Set Config. -> Konfiguration auf das Target schreiben
- Get Config. -> Aktuelle Konfiguration vom Target lesen
- Save Config. -> Aktuelle Konfiguration dauerhaft im Flash-Speicher des Targets speichern
- Max. Angle [°] -> Maximaler Winkelausschlag (siehe Steuerschnittstelle)
- Angle Speed [°/sec] -> Bewegungsgeschwindigkeit zur neuen Winkelposition (siehe Steuerschnittstelle)
- Amp. Transfer Factor -> Übertragungsfaktor zwischen Erregersignal und Differenzausgangssignal
- Calibration -> Kalibriereinstellungen (siehe Steuerschnittstelle > RT_PC_RVDT_LUT_Calibration.ctl)
- Anwendungssteuerung
4.3.2VIs zur Integration in eigene Anwendungen
Für die Kommunikation mit dem Echtzeitsystem stehen einige VIs zur Verfügung. Diese VIs können in jeder eigenen Anwendung verwendet werden:
- PC_RVDT_FPGAVersion.vi -> Liest das Kompilierungsdatum des FPGA

- PC_RVDT_SetAngle.vi -> Setzt einen neuen Simulationswinkel

- PC_RVDT_GetStatus.vi -> Liest den aktuellen Status (aktueller Winkel)

- PC_RVDT_GetConfig.vi -> Liest die aktuelle Konfiguration

- PC_RVDT_SetConfig.vi -> Setzt eine neue Konfiguration

- PC_RVDT_SaveConfig.vi -> Speichert die Konfiguration dauerhaft im Flash-Speicher (Boot-Konfiguration)

Software für den Resolver-Modus
Dieses Kapitel beschreibt den Softwareteil im Detail. Die Software der Simulation wird hauptsächlich auf einem cRIO-FPGA ausgeführt und kann auf jedem Compact-RIO-Chassis laufen. Sie ist bereits für ein NI-9074 und ein NI-9075 mit dem Modul in Steckplatz 1 kompiliert und getestet. Der Quellcode der Software ist in der Dokumentation des Moduls enthalten und kann auch in ein anwenderspezifisches LabVIEW-Projekt eingebunden werden.
Das LabVIEW-Projekt enthält außerdem Beispielcode, der zeigt, wie das Modul mit LabVIEW vom PC aus gesteuert wird. Dieser Beispielcode für die Ausführung auf einem Computer lässt sich einfach für die Echtzeitausführung auf den Compact-RIO-Echtzeit-Controller portieren.
Darüber hinaus steht eine DLL zur Verfügung, um das Modul aus Anwendungen heraus zu steuern, die in C geschrieben sind. Auf der Dokumentations-CD ist eine Beispielsoftware enthalten, die die Verwendung der DLL zeigt. Beachten Sie, dass die DLL nur mit der zugehörigen FPGA-Bitdatei funktioniert, die bereits für ein cRIO-9075-Chassis mit einem einzelnen Modul in Steckplatz 1 kompiliert ist.
5.1Allgemeine Steuerung
Im folgenden Kapitel werden die allgemeinen Steuerparameter beschrieben. Ihre Namen werden durchgängig auf den verschiedenen Softwareebenen verwendet, etwa im FPGA-Top-Level-Design, in der PC-Demo-Steuersoftware oder in der DLL.
Die Amplitudensteuerung mit programmierbarem Übersetzungsverhältnis bei Vollaussteuerung ist nur ab HW-Version 2.0 verfügbar.
5.1.1Modus- und Drehzahlsteuerung
Mit den folgenden Parametern lassen sich Status und Drehzahl des Moduls per Software steuern
| Parameter | Typ | Beschreibung |
|---|---|---|
| Mode = FixedPosition | Aufzählung | Auf feste Position setzen. Ist dieser Modus gesetzt, verändert das Modul die aktuelle Position, bis es die feste Position erreicht, und hält diese feste Position. |
| Mode = Rotate_Right | Aufzählung | Rechtsdrehung mit der durch den Wert RPM_Set festgelegten Drehzahl |
| Mode = Rotate_Left | Aufzählung | Linksdrehung mit der durch den Wert RPM_Set festgelegten Drehzahl |
| Mode = Rotate_Right_Sync | Aufzählung | Rechtsdrehung mit der durch den SYNC-Eingang vorgegebenen Drehzahl |
| Mode = Rotate_Left_Sync | Aufzählung | Linksdrehung mit der durch den SYNC-Eingang vorgegebenen Drehzahl |
| RPM_Set | Numerischer Wert (setzen) | Drehzahl in RPM (Umdrehungen pro Minute) (nur im Modus Rotate_xxx) |
| Position_Set [degrees] | Numerischer Wert (setzen) | Konstante Position der Simulation in Grad im Bereich 0…360° (nur im Modus FixedPosition) |
| SYNC_Phase [degrees] | Numerischer Wert (setzen) | Konstante Phase der Drehung relativ zum Sync-Eingang im Bereich 0…360° (nur im Modus Rotate_xxx_Sync) |
| Speed_Gradient [RPMps] | Numerischer Wert (setzen) | Drehzahländerungsrate in RPM pro Sekunde; bei 0 wird die neue Drehzahl sofort übernommen |
| RPM_Actual | Numerischer Wert (lesen) | Aktuelle Drehzahl in RPM (Umdrehungen pro Minute) |
| Position_Act [degrees] | Numerischer Wert (lesen) | Aktuelle Position der Simulation in Grad im Bereich 0…360° |
| RPM_SYNC | Numerischer Wert (lesen) | Aktuelle Drehzahl des Sync-Eingangs in RPM (Umdrehungen pro Minute) |
Tabelle 6: Beschreibung der Steuerparameter
Der Parameter RPM_Set hat je nach Simulationszustand unterschiedliche Bedeutungen, wie die folgende Tabelle zeigt:
| Wert von RPM_Set | Modus | Bedeutung von RPM_Set |
|---|---|---|
| > 0 | FixedPosition | Legt die Geschwindigkeit fest, mit der das Modul zur festen Position wechselt. |
| > 0 | Rotate_Right, Rotate_Left | Drehzahl |
| > 0 | Rotate_Right_Sync, Rotate_Left_Sync | Minimale Drehzahl, wenn kein SYNC-Signal anliegt |
| = 0 | Beliebig | Position sofort auf die feste Position setzen. |
Tabelle 7: Bedeutung von RPM abhängig vom aktuellen Modus
5.1.2Amplitudensteuerung
Mit den folgenden Schnittstellen lässt sich das Übersetzungsverhältnis des Moduls steuern. Beachten Sie, dass PGA_Set erst ab Hardwareversion 2.0 der Resolver-Simulation funktioniert.
| Parameter | Typ | Beschreibung |
|---|---|---|
| PGA_Set | Numerischer Wert (setzen) | Maximales Übersetzungsverhältnis, wenn die Sinus-LUT auf Vollaussteuerung definiert ist (Amplitude 100 %): 0 = 0,078125; 1 = 0,15625; 2 = 0,3125; 3 = 0,625; 4 = 1,25; 5 = 2,5; 6 = 5; 7 = 10. Setzen Sie diesen Wert bei Hardwareversion 1.3 auf „2“! |
| Write_LUT | Binärschalter zum Auslösen der DMA-Übertragung (siehe auch DMA_FIFO) | Setzen Sie „Write_LUT“ auf True und füllen Sie den DMA_FIFO. Setzen Sie „Write_LUT“ auf False zurück, wenn die DMA-Übertragung abgeschlossen ist. |
| DMA_FIFO | DMA-Puffer zum Schreiben einer Sinus-Lookup-Tabelle | Schreiben Sie einen Sinus-Amplitudenverlauf mit 1024 Elementen als 14-Bit-Integerwerte, wie in der folgenden Abbildung gezeigt |
Tabelle 8: Beschreibung der Amplitudensteuerung
Mit PGA_Set lässt sich der Bereich des Übersetzungsverhältnisses festlegen. Ist dieser Wert gesetzt, kann das Verhältnis zusätzlich feinjustiert werden, indem die Sinus-LUT über den DMA_FIFO geschrieben wird. Die Sinusschwingung muss gemäß der folgenden Abbildung durch 1024 Integerwerte (i16) dargestellt werden. Die Abbildung zeigt die Sinusschwingung bei Vollaussteuerung, wobei der Maximalwert 16383 für volle Amplitude beträgt.
Verwenden Sie das LabVIEW-VI „LUT_Init“, um eine Standard-Sinusschwingung für den DMA_Buffer zu erzeugen; als Eingangsparameter dient ein einstellbarer Amplitudenfaktor von 0…100 %.
5.2Steuerung per DLL
Die folgenden Funktionen stehen zur Steuerung des Moduls über eine DLL zur Verfügung. Die DLL setzt voraus, dass ein Compact-RIO-Chassis über Ethernet mit dem PC verbunden ist, auf dem die DLL läuft. Die DLL muss mit der Bitdatei für das tatsächlich verwendete Chassis und Modul neu kompiliert werden. Die aktuelle DLL ist für ein cRIO-9075 mit einem Modul in Steckplatz 1 verfügbar.
Beachten Sie, dass die Steuerung per DLL nicht für alle Versionen implementiert ist
Damit eine Anwendung auf die DLL zugreifen kann, müssen folgende Dateien in die Anwendung eingebunden werden:
cRIO_ResolverSimulation.dllcRIO_ResolverSimulation.hcRIO_ResolverSimulation.lib
Alle Funktionen geben einen Fehlercode zurück (sofern nicht anders angegeben):
- Null => kein Fehler
- Negativ => Fehler
- Positiv => Warnung
5.2.1Kommunikationssteuerung
Verbindung öffnen
Die folgende Funktion öffnet die Verbindung zum Modul:
int __stdcall cRIO_ResolverSim_Open (char* sRIO_Device_IP_Address);
sRIO_Device_IP_Address: Nullterminierter String, der die IP-Adresse des FPGA im cRIO-Chassis enthält. Ein typischer Adressstring lautet: „192.168.101.88“. Die IP-Adresse des Compact-RIO-Chassis kann mit NI-MAX („Measurement and Automation Explorer“) geändert werden- Rückgabewert: Die Funktion gibt einen Fehlercode zurück
Version lesen
Diese Funktion gibt das Kompilierungsdatum des FPGA-Designs zurück.
int __stdcall cRIO_ResolverSim_GetVersion (unsigned int* nVersion_Nr);
nVersion_Nr: Kompilierungsdatum des FPGA-Codes. In hexadezimaler Darstellung als 0xYYYYMMDD lesbar, z. B. 0x20130128- Rückgabewert: Die Funktion gibt einen Fehlercode zurück
Verbindung schließen
Die folgende Funktion schließt die Verbindung zum Simulationsmodul:
int __stdcall cRIO_ResolverSim_Close (void);
- Rückgabewert: Die Funktion gibt einen Fehlercode zurück
5.2.2Fehlerbeschreibung abrufen
Die folgende Funktion wandelt den von den DLL-Funktionen zurückgegebenen Fehlercode in einen lesbaren Text um.
int __stdcall cRIO_ResolverSim_GetErrorText (int nError_Code, char* sError_String);
nError_Code: In diesem Parameter kann die Anwendung den von einer DLL-Funktion zurückgegebenen Fehlercode übergebensError_String: In diesem Parameter wird die Fehlerbeschreibung zurückgegeben, indem die Daten in diesen Puffer kopiert werden. Die Anwendung muss im Puffer ausreichend Platz bereitstellen (>1024 Elemente)- Rückgabewert: Die Funktion gibt immer 0 zurück
5.2.3Simulationsparameter setzen
Die folgende Funktion setzt den aktuellen Modus der Simulation
int __stdcall cRIO_ResolverSim_SetStatus (
cRIO_ResolverSim_Mode eMode,
double fPosition_degrees_Set,
double fRPM_Set,
double fSync_Phase_Set,
double fTransformationRatio);
eMode: Dieser Aufzählungsparameter legt den aktuellen Simulationszustand gemäß Tabelle 6: Beschreibung der Steuerparameter fest
typedef enum
{
cRIO_ResolverSim_Mode_FixedPosition = 0,
cRIO_ResolverSim_Mode_Rotate_Right = 1,
cRIO_ResolverSim_Mode_Rotate_Left = 2,
cRIO_ResolverSim_Mode_Rotate_Right_sync = 3,
cRIO_ResolverSim_Mode_Rotate_Left_sync = 4,
} cRIO_ResolverSim_Mode;
fPosition_degrees_Set: Dies ist die einzustellende Position in °. Der Bereich kann 0…360° betragen. Dieser Wert gilt nur, wenn der aktuelle Simulationsmodus „FixedPosition“ ist (siehe auch Modus- und Drehzahlsteuerung)fRPM_Set: Dies ist die Drehzahl in Umdrehungen pro Minute (RPM); ihre Bedeutung hängt vom aktuellen Modus ab, wie in der folgenden Tabelle gezeigt. Die Bedeutung dieses Werts hängt von den verschiedenen Modi ab (siehe Modus- und Drehzahlsteuerung).fSync_Phase_Set: Damit wird die Phase des Drehsignals relativ zur positiven Flanke des SYNC-Signals in ° gesetzt. Der Bereich kann 0…360° betragen. Dieser Wert gilt nur, wenn der aktuelle Simulationsmodus „Rotate_Right_Sync“ oder „Rotate_Left_Sync“ ist (siehe auch Modus- und Drehzahlsteuerung)fTransformationRatio: Damit wird das Übersetzungsverhältnis der Simulation gesetzt. Das Übersetzungsverhältnis wird in die beiden Parameter der Amplitudensteuerung umgerechnet: PGA_Setting und Amplitudeneinstellung der LUT-Werte- Rückgabewert: Die Funktion gibt einen Fehlercode zurück
Die folgende Tabelle zeigt die Bedeutung des Drehzahlparameters abhängig vom aktuellen Modus:
| Wert von fRPM_Set | Modus | Bedeutung von fRPM_Set |
|---|---|---|
| > 0 | FixedPosition | Legt die Geschwindigkeit fest, mit der das Modul zur festen Position wechselt. |
| > 0 | Rotate_Right, Rotate_Left | Drehzahl |
| > 0 | Rotate_Right_Sync, Rotate_Left_Sync | Minimale Drehzahl, wenn kein SYNC-Signal anliegt |
| = 0 | beliebig | Position sofort auf die feste Position setzen. |
Tabelle 9: Bedeutung des RPM-Parameters
5.2.4Drehzahlrampe setzen
Die folgende Funktion setzt die Rate der Drehzahländerung in RPM pro Sekunde. Ist die Rate 0, werden neue Drehzahleinstellungen sofort übernommen. Andernfalls ändert sich die Drehzahl mit der angegebenen Rate.
int __stdcall cRIO_ResolverSim_SetRampGrad (double fRPM_Gradient_Set);
fRPM_Gradient_Set: Setzt den aktuellen Rampengradienten in RPM pro Sekunde- Rückgabewert: Die Funktion gibt einen Fehlercode zurück
5.2.5Simulationsstatus abrufen
Die folgende Funktion liest den aktuellen Status der Simulation. Der Status wird durch die aktuelle Position, die aktuelle Drehzahl und die aktuelle Drehzahl am SYNC-Eingang beschrieben.
int __stdcall cRIO_ResolverSim_GetStatus (double* fSync_Frequency_RPM,
double* fActual_Frequency_RPM,
double* fPosition_degrees);
fSync_Frequency_RPM: Dies ist die aktuelle Drehzahl am Synchronisationseingang in Umdrehungen pro MinutefActual_Frequency_RPM: Dies ist die aktuelle Drehzahl der Simulation in Umdrehungen pro MinutefPosition_degrees: Dies ist die aktuelle Position in °. Der Bereich kann 0…360° betragen- Rückgabewert: Die Funktion gibt einen Fehlercode zurück
5.2.6Einstellungen speichern
Die folgende Funktion speichert die aktuellen Einstellungen im cRIO-System. Nach Abschluss des Bootvorgangs nach dem Einschalten werden die Einstellungen automatisch wiederhergestellt.
int __stdcall cRIO_ResolverSim_SaveSettings (void);
- Rückgabewert: Die Funktion gibt einen Fehlercode zurück
5.2.7DLL-Testsoftware
Zum Testen des Zugriffs auf die Resolver-Simulation per DLL ist ein Debug-Panel enthalten. Dieses Tool liegt als Installationsprogramm im Ordner CRIO_ResolverSim_DLL_Test_Install im Ordner bin auf der Dokumentations-CD.
Nach Abschluss der Installation und dem Start der Software erscheint das folgende Fenster:

Sobald
- die korrekte IP-Adresse eingegeben wurde,
- ein Resolver-Simulationssystem im Netzwerk vorhanden ist
- und dieses seinen Bootvorgang abgeschlossen hat (ca. 1 Minute),
kann die Verbindung durch Drücken der Schaltfläche „Open“ hergestellt werden. Ist die Verbindung hergestellt, erscheint das Fenster wie folgt. Der Anwender kann über die Bedienelemente auf die Simulation zugreifen.

5.3GUI für das Stand-alone-System
Zum Ändern anwendungsspezifischer Einstellungen ist eine eigene grafische Benutzeroberfläche (GUI) implementiert.
5.3.1Installation
Zum Ausführen der GUI befindet sich die ausführbare Datei „ResSi.exe“ auf der Dokumentations-CD. Kopieren Sie den gesamten Ordner, der diese Datei enthält, auf den PC.
Zusätzlich muss die LabVIEW 2013 Runtime installiert sein. Die Runtime ist auf der Dokumentations-CD enthalten, kann aber auch von NI.com heruntergeladen werden.
5.3.2Frontpanel

Änderungen der Einstellungen werden nur übernommen, wenn:
- die GUI läuft (siehe GUI starten/stoppen)
- das System korrekt ausgewählt ist (siehe System auswählen) – andernfalls stoppt die GUI mit einem Fehler.
5.3.3GUI starten/stoppen
Die GUI startet automatisch, wenn „ResSi.exe“ ausgeführt wird.
Während die GUI läuft, wird die Schaltfläche „Start application“ wie in der folgenden Abbildung dargestellt:

Drücken Sie zum Stoppen der GUI die Schaltfläche STOP.

Drücken Sie zum Neustarten der GUI die Schaltfläche „Start Application“ in der linken oberen Ecke.

Die GUI stoppt automatisch, wenn ein Fehler auftritt. Ein Fehler wird in der Anzeige error_out signalisiert und erläutert

Ist das System nicht korrekt ausgewählt, tritt ein Fehler auf und die GUI wird gestoppt. Wählen Sie das System gemäß System auswählen aus und starten Sie die GUI durch Drücken der Schaltfläche „Start Application“ neu.
5.3.4System auswählen
Der Zugriff auf die Einstellungen des Systems erfolgt über NI-PSP Shared Variables. Der Variablenserver läuft auf dem cRIO-System. Da die IP-Adresse des Systems variieren kann, muss der Anwender das richtige System auswählen.
Klicken Sie auf „Variable Reference“:

Das folgende Fenster sollte erscheinen:

Wählen Sie den Eintrag „Variables“ auf dem System mit der korrekten IP-Adresse aus.
- 172.22.11.2 bei USB-Geräten
- Bei Ethernet abhängig von DHCP
Ist das System korrekt ausgewählt, läuft die GUI; tritt ein Fehler auf, stoppt die GUI und zeigt einen Fehler an. Stellen Sie in diesem Fall sicher, dass alle Verbindungen hergestellt sind und das System mit Spannung versorgt wird. Starten Sie die GUI nach dem Auswählen des Systems wie unter GUI starten/stoppen beschrieben neu.
5.3.5Alle Einstellungen speichern
Die aktuellen Einstellungen können gespeichert werden, damit sie nach einem Neustart wieder aktiv sind. Wird die Schaltfläche „Save_All_Settings“ gedrückt, werden alle Einstellungen dauerhaft im System gespeichert.

Beachten Sie, dass die aktuellen Einstellungen des Systems gespeichert werden. D. h., die Einstellungen müssen vor dem Speichern gemäß Resolver-Einstellungen ändern übernommen werden.
5.3.6Resolver-Einstellungen ändern
Alle folgenden Einstellungen können in der GUI geändert werden. Sind mehrere Resolver-Module im Einsatz, wirken die Einstellungen jeweils nur für einen einzelnen ausgewählten Kanal, nachdem die Schaltfläche „Apply_Settings“ gedrückt wurde.

D. h., wählen Sie zuerst „Select_channel_1…4“ (optional bei mehreren Modulen). Ändern Sie dann die Einstellungen wie in den folgenden Unterkapiteln beschrieben. Drücken Sie anschließend „Apply_Settings“.
Wenn die Einstellungen dauerhaft gespeichert werden sollen, drücken Sie „Save_All_Settings“
Drehzahleinstellungen

Die Drehzahleinstellungen umfassen Folgendes:
- Rotate_Enable:
- kontinuierliche Drehung bei TRUE
- Anfahren der festen Position bei FALSE.
- Direction:
- Drehung „links“ mit steigendem Winkel bei TRUE
- Drehung „rechts“ mit fallendem Winkel bei FALSE
- RPM_Set:
- Legt die Drehzahl in „Umdrehungen pro Minute“ fest, wenn SYNC_Enable FALSE ist.
- Bei deaktivierter Drehung legt RPM_Set die maximale Geschwindigkeit fest, mit der eine feste Position angefahren wird, wenn sich die feste Position ändert.
- SYNC_Enable:
- Bei TRUE wird der externe Synchronisationseingang verwendet. Die Zeit zwischen positiven Flanken am SYNC-Eingang bestimmt die Drehzahl. Beachten Sie, dass die Drehzahl auf RPM_Set begrenzt ist, wenn RPM_Set höher als SYNC ist
- Bei FALSE wird RPM_Set als Drehzahlwert verwendet.
Positionseinstellungen

Die Positionseinstellungen umfassen Folgendes:
- Position_degrees_Set:
- Einzustellende Position im Bereich 0…360°
- Nur gültig, wenn die Drehung deaktiviert ist und für diesen Kanal keine Position über die serielle Leitung empfangen wird.
- SYNC_Phase_degrees:
- Winkel im Bereich 0…360°
Amplitudeneinstellungen

Das Übersetzungsverhältnis eines Kanals lässt sich über die Amplitudeneinstellungen ändern. Zwei Werte legen das Übersetzungsverhältnis fest:
- PGA_Setting:
- Der programmierbare Verstärker (Programmable Gain Amplifier) legt den maximalen Bereich des Übersetzungsverhältnisses fest
- Einstellung zwischen 0…7 gemäß der Tabelle in der Abbildung oben
- Amplitude [%]:
- Legt die Feinabstimmung innerhalb des aktuellen, durch den PGA festgelegten Bereichs fest
- Einstellung im Bereich 0…100 %.
Diese beiden Werte werden in das System geschrieben und bestimmen das tatsächliche Übersetzungsverhältnis.
Zur Vereinfachung der Amplitudeneinstellung kann ein Übersetzungsverhältnis eingegeben werden. Wird ein neuer Wert für „Transformation_Ratio“ eingegeben, werden „PGA_Setting“ und „Amplitude [%]“ automatisch auf einen optimalen Wert berechnet.
5.3.7Aktuelle Statusanzeigen

Die aktuellen Statusanzeigen sind:
- RPM_actual: Aktuelle Drehzahl, abhängig entweder von RPM_Set oder von der Drehzahl am Synchronisationseingang.
- SYNC_Phase_LUT: Interne Darstellung von SYNC_Phase
- Position_Set_LUT: Interne Darstellung der festen Position
- Current position [°]: Aktuelle Position im Bereich 0…360°
- Sample_Rate_Actual: Interne Drehzahldarstellung (= 25-ns-Ticks für einen einzelnen Schritt)
- RPM_Sync: Drehzahl des externen SYNC-Eingangs in RPM
- Position_LUT_Act: Aktuelle Position (interner Wert)
- Position_LUT_Set: Interne Darstellung der festen Position. Entweder feste Einstellung oder empfangene Daten
5.4VIs zur Integration in eigene Anwendungen
Zum Setzen der Simulationsparameter oder zum Lesen des aktuellen Status können zwei Haupt-VIs in eine eigene Anwendung integriert werden. Beide VIs sind in der Stand-alone-LabVIEW-Beispiel-GUI enthalten.
Diese VIs benötigen kein Open- oder Close-VI. Sie können von jeder LabVIEW-Anwendung oder TestStand-Sequenz aufgerufen werden.
5.4.1PC_ResSi_Wr.vi
PC_ResSi_Wr.vi setzt den neuen Status der Resolver-Simulation. Die Eingangsparameter sind unter Allgemeine Steuerung beschrieben. Die Ausgangsparameter ..._LUT sind interne Darstellungen der Einstellungen. Diese Ausgänge können ignoriert werden.
Verbinden Sie mit „Refnum in“ eine gültige Referenz auf das Gerät gemäß System auswählen

5.4.2PC_ResSi_Rd.vi
PC_ResSi_Rd.vi liest den aktuellen Status der Resolver-Simulation. Die Ausgangsparameter sind unter Allgemeine Steuerung beschrieben
Verbinden Sie mit „Refnum in“ eine gültige Referenz auf das Gerät gemäß System auswählen

Analoge Steuerung
cRIO_Resolver_Simulation_V31_LV15_1_Channel_AnalogControl
- NI9201 8-Kanal ±10 V
- Berechnete Abtastrate: 50 Hz
- Berechnete Auflösung: 488 µV
| Eingang | Funktion | Zuordnung |
|---|---|---|
| AI0 | Rotate | >= 3 V (empfohlen 5 V) (2,9 V Hysterese) -> „True“ |
| AI1 | SampleRate | 0–10 V -> 0–20.000 RPM; min. 0,00976 V -> 20 RPM; aus < 0,00585 V; Auflösung 0,00391 V -> 8 RPM |
| AI2 | Direction | >= 3 V (empfohlen 5 V) (2,9 V Hysterese) -> „Clockwise“ |
| AI3 | Position | 0–10 V -> 0–360°; min. 0,00976 V -> 1°; aus < 0,00585 V; Auflösung 0,00391 V -> 0,4° |
| AI4 | Gradient | 0–10 V -> 0–10.000 RPM/s; min. 0,00976 V -> 10 RPM/s; aus < 0,00585 V; Auflösung 0,00391 V -> 4 RPM/s |
| AI5 | Nicht verwendet | |
| AI6 | Nicht verwendet | |
| AI7 | Modus | >= 3 V (empfohlen 5 V) (2,9 V Hysterese) -> „AnalogControl“ |