Repositorio Institucional de Documentos
Abstract
Die Arbeit wurde in Rahmen des europeischen StudentenAustauschprogramms ERASMUS am Institut ELSYS durchgeführt. Es geht um die Programmierung und Steuerung des Motors eines bereits vorhandenen Elektrofahrzeugs (E-Buggy). Für das Fahrzeug braucht man verschiedene Komponenten, wie einen Umrichter der von einem Mikrocontroller gesteuert und geregelt wird, andere Leistungselektronik Elemente, sowie ein kleines Batteriemanagement. Puertollano Ventura, Luis Alfonso; Dietz, Armin; Graß, Norbert
Full text
PI - Regler mit Anti - Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Bachelorthesis - Abschlussprojekt Autor: Luis Alfonso Puertollano Ventura Studienbereich: Elektro - und Informationstechnik Matrikelnummer: 23 50 38 2 Erstprüfer : Prof. Dr. - Ing. Armin Dietz Zweitprüfer: Prof. Dr. - Ing. Norbert Gra ß Datum: 2 3 /08/2012 [Escriba aquí una descripción breve del documento. Normalmente, una descripción breve es un resumen corto del contenido del documento. Escriba aquí una descripción breve del documento. Normalmente, una descripción breve es un resumen corto del contenido del documento.]
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 1 Einleitung Die Arbeit wurde in Rahmen des europeischen StudentenAustauschprogramms ERASMUS am Institut ELSYS durchgeführt. Es geht um die Programmierung und Steuerung des Motors eines bereits vorhandenen Elektrofahrzeugs (E-Buggy). Für das Fahrzeug braucht man verschiedene Komponenten, wie einen Umrichter der von einem Mikrocontroller gesteuert und geregelt wird, andere Leistungselektronik Elemente, sowie ein kleines Batteriemanagement.
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 2 Inhaltsverzeichnis A. Abkürzungsverzeichnis .......................................................................................................... 3 1. Zusammenfassung ................................................................................................................. 4 2. Vergleich der Reglertypen ..................................................................................................... 5 3. PI-Regler mit Anti-Windup .................................................................................................... 6 3.1. Eigenschaften des PI-Reglers ........................................................................................ 7 3.2. Anti-Windup Methode .................................................................................................. 9 4. Realisierung des PI-Reglers ................................................................................................. 14 4.1. PI-Regler mit Anti-Windup-Funktionalität .................................................................. 15 4.1.1. Initialisierung ....................................................................................................... 15 4.1.2. Berechnung und Anti-Windup-Algorithmus........................................................ 16 4.1.3. Ergebnisse ........................................................................................................... 17 4.1.4. Einstellungen des Reglers .................................................................................... 23 4.2. Hauptprogramm .......................................................................................................... 24 B. Literaturverzeichnis ............................................................................................................. 25 C. Anhang ................................................................................................................................ 26 C.1. Mikrocontrollers Infineon XC2287M ................................................................................ 26
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 3 A. Abkürzungsverzeichnis µC Mikrocontroller FOC Feldorientierte Regelung (engl. Field Oriented Control ) PWM Pulsenweitenmodulation PMSM Permanenterregte Synchronmaschine (engl. Permanent Magnet Synchronous Motors)
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 4 1. Zusammenfassung Das Projekt E-Buggy hat zum Ziel der Bau eines Elektrofahrzeugs (E-Buggy). Dafür wurden verschiedene Teams gebildet, welche sich verschiedenen Teilprojekten gewidmet haben. Dazu gehört das Design des Fahrzeuges, die Untersuchung der Batterie und das Programmieren der Leistungelektronik. Ich persönlich habe mich besonders mit der Motorregelung beschäftigt. Für die Steuerung der PMSM, wird die feldorientierte Regelung (Field Oriented Control, FOC) genutzt (Abb. 1). Dafür war es zunächst nötig zu lernen, wie jedes Teilaufgabe funktioniert. Dazu gehört zum Beispiel: die Anwendung der Park- und Clark-Transformationen, die Funktion des Umrichters, das Programmieren eines PI-Reglers in C für den Infineon µC XC2287M. Für diesen Teil der Arbeit, hat man sich in der PI-Regler beschäftigt. So kann man mit dem Elektromotor und seinem Drehmoment arbeiten (Abb. 1), ohne die maximale Grenze des Motorstromes zu überschreiten. Um das ganzen Regelungsystem gut funktionieren zu machen, muss man auch anpassende Reglerparameter hingefügt werden. Abbildung 1: Struktur der Feldorientierten Motorregelung [Sahhary, 2008] Folgende Programme wurden eingesetz: • DAvE – Auto code generation. • TASKING VX-toolset for C166 – C/C++ compiler and debugger. • DAS Control Server – Device Acces Server. • UDE Desktop 3.0 – Universal Debug Engine, Develop and test software applications.
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 5 2. Vergleich der Reglertypen In der Abbildung 2 (Abb. 2) ist der Vergleich von P-, I-, PI-, PD- und PID-Regler in einem Regelkreis mit PT2-Glied als Regelstrecke dargestellt. Es ist deutlich zu sehen, dass die Regler ohne I-Anteil (P und PD) eine bleibende Regelabweichung aufweisen. Erst die Regler mit I- Anteil können auf den normierter Endwert von 1 ausregeln. Beim reinen I-Regler geht das so langsam, dass es gar nicht mehr auf dem Diagramm zu sehen ist. Der Hauptzweck eines I- Anteils ist also die Vermeidung bleibender Regelabweichungen. Daher ist ein I-Anteil normalerweise nicht nötig, wenn die Strecke schon einen I-Anteil besitzt (ausnahme: es wird ein doppelter I-Anteil zur Vermeidung von Schleppfehlern benötigt). Die schnellsten Regler sind die mit einem D-Anteil (PD- und PID-Regler). Der D-Anteil kommt deshalb hauptsächlich zum Einsatz, wenn schnelle Dynamik gefragt ist oder die Strecke selbst schon instabil ist. Voraussetzung für die Schnelligkeit ist allerdings, dass keine Begrenzung im Stellglied oder Aktuator auftritt. In der Praxis ist eine Begrenzung meistens nicht zu vermeiden, deshalb gilt die Sprungantwort in der Praxis nur für kleine Sprünge. Die Regler ohne D-Anteil, aber mit P-Anteil (P- und PI-Regler) sind mittelschnell. Für einfache Regelaufgaben reicht auch oft schon ein reiner P-Regler aus, wenn die bleibende Regelabweichung vernachlässigt werden kann oder wenn die Strecke schon einen I-Anteil besitzt. Abbildung 2: Vergleich der Antwort der Reglertypen [www.rn-wissen.de, Regelungstechnik]
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 6 3. PI-Regler mit Anti-Windup Der PI-Regler (Proportional–Integral Regler) besteht aus den Anteilen des P-Gliedes K P und I- Gliedes mit der Zeitkonstante T N . Er kann sowohl aus einer Parallelstruktur oder aus einer Reihenstruktur definiert werden. Der Begriff der Nachstellzeit T N stammt aus der Parallelstruktur des Reglers (Abb. 3). Abbildung 3: Struktur des PI-Reglers [Udenar] So dass diese Ideale Sprungsantwort sehen kann (Abb. 4): ∗ (3.1.) K p → Proportionale Verstärkung K i → Integral Verstärkung Abbildung 4: Idealer Sprungantwort des PI-Reglers [Wikipedia, PI-Regler] Signaltechnisch wirkt der PI-Regler gegenüber dem I-Regler so, dass nach einem Eingangssprung dessen Wirkung um die Nachstellzeit T N vorverlegt ist. Durch den I-Anteil wird die stationäre Genauigkeit gewährleistet, die Regelabweichung wird nach dem Einschwingen der Regelgröße zu Null.
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 7 3.1. Eigenschaften des PI-Reglers • Kompensation eines PT1-Gliedes der Strecke: Er kann mit dem PD-Glied ein PT1-Glied der Strecke kompensieren und damit den offenen Regelkreis vereinfachen. • Keine Regelabweichung bei konstantem Sollwert: Durch das I-Glied wird im stationären Zustand bei konstantem Sollwert die Regelabweichung zu Null. • Langsamer Regler: Der durch das I-Glied erworbene Vorteil der Vermeidung einer stationären Regelabweichung hat auch den Nachteil, dass eine zusätzliche Polstelle mit -90 ° Phasenwinkel in den offenen Regelkreis eingefügt wird, was eine Reduzierung der Kreisverstärkung K PI bedeutet. Deshalb ist der PI-Regler kein schneller Regler. • 2 Einstellparameter: Der Regler enthält nur zwei Einstellparameter, K PI = K P / T N und T N . • Regelstrecke höherer Ordnung: kann optimal an einer Regelstrecke höherer Ordnung eingesetzt werden, von der nur die Sprungantwort bekannt ist. Durch Ermittlung der Ersatztotzeit T U (Verzugszeit) und der Ersatzverzögerungs-Zeitkonstante T G (Ausgleichszeit) kann das PD-Glied des Reglers die Zeitkonstante T G kompensieren. Für die I-Regler-Einstellung der verbleibenden Regelstrecke mit Ersatztotzeit TU gelten die bekannten Einstellvorschriften. • Regelstrecke mit 2 dominanten Zeitkonstanten: er kann eine Regelstrecke mit zwei dominanten Zeitkonstanten von PT1-Gliedern regeln, wenn die Kreisverstärkung reduziert wird und die längere Dauer des Einschwingens der Regelgröße auf den Sollwert akzeptiert wird. Dabei kann mit K PI jeder gewünschte Dämpfungsgrad D eingestellt werden, von aperiodisch (D=1) bis schwach gedämpft schwingend (D gegen 0). • PD-Glied ohne Differenzierung: Das in der Reihenstruktur entstandene PD-Glied des PI- Reglers ist mathematisch ohne Differenzierung entstanden. Deshalb entsteht bei der Realisierung des Reglers in der Parallelstruktur auch keine parasitäre Verzögerung. Wegen eines möglichen Windup-Effektes durch Regelstreckenbegrenzung der Stellgröße u(t) ist die schaltungsmäßige Realisierung des PI-Reglers in Parallelstruktur anzustreben. Die Grundidee des PI-Reglers (Abb. 5) ist einfach und lässt sich vergleichen mit der Entscheidungsfindung von Menschen, welche häufig auf der Kenntniss von Vergangenheit und Gegenwart basiert. Der PI-Regler macht das Gleiche mit dem Regler. Das Steuersignal besteht aus zwei Teilen: • Ein proportionaler Teil zum Auffinden des Fehlers (Regelverhalten aufgrund der gegenwärtigen Information). • Ein proportionaler Teil zum Integral-Fehler der Vergangenheit (Regelverhalten aufgrund der vergangenen Information).
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 8 So dass: Abbildung 5: PI-Regler [www.rn-wissen.de, Regelungstechnik] Übertragungsfunktion der Parallelstruktur. Solche Werten werden so normalerweise berechnet: TN und KP sind berechnet so dass es keine Oberschingungen erscheinen. Wenn man es falsch macht, kann folgendes passieren (Abb. 6): Abbildung 6: Sprungsnatworte mit Oberschwingungen [Luis Puertollano, 2012] Deswegen, werden die kritische Werte berechnet, um an der Grenze den Oberschwingungen zu bleiben, und werden danach wie folgendes benutzt: U H S L E H S L = K p 1 + T N ∗ s T N ∗ s K PI = K p T N 1 2 3 4 5 6 7 0.25 0.5 0.75 1 1.25 1.5 2 4 6 8 10 12 14 -2 -1 1 2 K p = 0.45 ∗ K PKrit T N = 0.83 ∗ T N Krit
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 15 4.1. PI-Regler mit Anti-Windup-Funktionalität 4.1.1. Initialisierung Hier wird der Regler initialisiert, und wird folgende Werte für die verschiedenen Glieden benutzen: // Initialisierung des Reglers – Werten die man für die verschiedenen Glieden will. void initRegler(volatile struct PIRegler *ptrRegler) { ptrRegler->KP = 0;// Proportionalkonstant - Constante proporcional ptrRegler->KI = 0;// Integrationskonstant - Constante de integración ptrRegler->StellGroesse = 0;// Stellgrösse - Control de la variable ptrRegler->FuehrungsGroesse = 0;// Führungsgrösse - Comando de la variable ptrRegler->RegelGroesse = 0;// Regelgrösse - Control de la variable ptrRegler->RegelAbweichung = 0;// Abweichung (Unterschied) - Desviación ptrRegler->EingangsBegrenzungMax = 0;// Maximal Eingangs Begrenzung - Limitación máxima de entrada ptrRegler->EingangsBegrenzungMin = 0;// Minimal Eingangs Begrenzung - Limitación mínima de entrada ptrRegler->AusgangsBegrenzungMax = 0;// Maximal Ausgangs Begrenzung - Limitación máxima de salida ptrRegler->AusgangsBegrenzungMin = 0;// Minimal Ausgangs Begrenzung - Limitación mínima de salida ptrRegler->Abtastzeit = 0;// Abtastzeit - Tiempo de muestreo ptrRegler->Summe = 0;// Summe - Suma ptrRegler->SummenBegrenzungMax = 0;// Maximal Summe Begrenzung - Limitación máxima de la suma ptrRegler->SummenBegrenzungMin = 0;// Minimal Summe Begrenzung - Limitación mínima de la suma }
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 16 4.1.2. Berechnung und Anti-Windup-Algorithmus Hier wird es beschrieben wie man die Berechnung des PI-Reglers programmiert ist: // Berechnung des Regler Algorithmus -> Cálculo del algoritmo del regulador long calcRegler(volatile struct PIRegler *ptrRegler) { // Berechnung der Regel Abweichung - Cálculo ptrRegler->RegelAbweichung = ptrRegler->FuehrungsGroesse - ptrRegler->RegelGroesse; // Begrenzung für den Regler Eingang - Limitación if(ptrRegler->RegelAbweichung > ptrRegler->EingangsBegrenzungMax) { ptrRegler->RegelAbweichung = ptrRegler->EingangsBegrenzungMax; } else if(ptrRegler->RegelAbweichung < ptrRegler->EingangsBegrenzungMin) { ptrRegler->RegelAbweichung = ptrRegler->EingangsBegrenzungMin; } // Berechnung der Regler Summe - Cálculo de la suma del regulador ptrRegler->Summe = ptrRegler->Summe + ptrRegler->RegelAbweichung; // Begrenzung der Regler Summe - Limitación de la suma del regulador if(ptrRegler->Summe > ptrRegler->SummenBegrenzungMax) { ptrRegler->Summe = ptrRegler->SummenBegrenzungMax; } else if(ptrRegler->Summe < ptrRegler->SummenBegrenzungMin) { ptrRegler->Summe = ptrRegler->SummenBegrenzungMin; }
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 17 // Berechnung der Stellgröße - Cálculo de la variable de control ptrRegler->StellGroesse = ptrRegler->KP * ptrRegler->RegelAbweichung + ptrRegler->KI * ptrRegler->Abtastzeit * ptrRegler->Summe; // Begrenzung für den Regler Ausgang - Limitación de la salida del regulador if(ptrRegler->StellGroesse > ptrRegler->AusgangsBegrenzungMax) { ptrRegler->StellGroesse = ptrRegler->AusgangsBegrenzungMax; } else if(ptrRegler->StellGroesse < ptrRegler->AusgangsBegrenzungMin) { ptrRegler->StellGroesse = ptrRegler->AusgangsBegrenzungMin; } return ptrRegler->StellGroesse; } /*********************************************************************/ 4.1.3. Ergebnisse Hier wird es beschrieben wie man die Ergebnisse des PI-Reglers bekommen kann: // Get Methode für KP int getReglerKP(volatile struct PIRegler *ptrRegler) { return ptrRegler->KP; } // Set Methode für KP void setReglerKP(volatile struct PIRegler *ptrRegler, int kp) { ptrRegler->KP = kp;
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 18 } /*********************************************************************/ // Get Methode für KI int getReglerKI(volatile struct PIRegler *ptrRegler) { return ptrRegler->KI; } // Set Methode für KI void setReglerKI(volatile struct PIRegler *ptrRegler, int ki) { ptrRegler->KP = ki; } /*********************************************************************/ // Get Methode für StellGroesse long getReglerStellGroesse(volatile struct PIRegler *ptrRegler) { return ptrRegler->StellGroesse; } // Set Methode für StellGroesse void setReglerStellGroesse(volatile struct PIRegler *ptrRegler, long stellgroesse) { ptrRegler->StellGroesse = stellgroesse; } /*********************************************************************/ // Get Methode für FuehrungsGroesse long getReglerFuehrungsGroesse(volatile struct PIRegler *ptrRegler) { return ptrRegler->FuehrungsGroesse;
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 19 } // Set Methode für FuehrungsGroesse void setReglerFuehrungsGroesse(volatile struct PIRegler *ptrRegler, long fuehrungsgroesse) { ptrRegler->FuehrungsGroesse = fuehrungsgroesse; } /*********************************************************************/ // Get Methode für RegelGroesse long getReglerRegelGroesse(volatile struct PIRegler *ptrRegler) { return ptrRegler->RegelGroesse; } // Set Methode für RegelGroesse void setReglerRegelGroesse(volatile struct PIRegler *ptrRegler, long regelgroesse) { ptrRegler->RegelGroesse = regelgroesse; } /*********************************************************************/ // Get Methode für RegelAbweichung long getReglerRegelAbweichung(volatile struct PIRegler *ptrRegler) { return ptrRegler->RegelAbweichung; } // Set Methode für RegelAbweichung void setReglerRegelAbweichung(volatile struct PIRegler *ptrRegler, long regelabweichung) { ptrRegler->RegelAbweichung = regelabweichung;
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 20 } /*********************************************************************/ // Get Methode für EingangsBegrenzungMax long getReglerEingangsBegrenzungMax(volatile struct PIRegler *ptrRegler) { return ptrRegler->EingangsBegrenzungMax; } // Set Methode für EingangsBegrenzungMax void setReglerEingangsBegrenzungMax(volatile struct PIRegler *ptrRegler, long eingangsBegrenzungMax) { ptrRegler->EingangsBegrenzungMax = eingangsBegrenzungMax; } /*********************************************************************/ // Get Methode für EingangsBegrenzungMin long getReglerEingangsBegrenzungMin(volatile struct PIRegler *ptrRegler) { return ptrRegler->EingangsBegrenzungMin; } // Set Methode für EingangsBegrenzungMin void setReglerEingangsBegrenzungMin(volatile struct PIRegler *ptrRegler, long eingangsBegrenzungMin) { ptrRegler->EingangsBegrenzungMin = eingangsBegrenzungMin; } /*********************************************************************/ // Get Methode für AusgangsBegrenzungMax long getReglerAusgangsBegrenzungMax(volatile struct PIRegler *ptrRegler) { return ptrRegler->AusgangsBegrenzungMax;
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 21 } // Set Methode für AusgangsBegrenzungMax void setReglerAusgangsBegrenzungMax(volatile struct PIRegler *ptrRegler, long ausgangsBegrenzungMax) { ptrRegler->AusgangsBegrenzungMax = ausgangsBegrenzungMax; } /*********************************************************************/ // Get Methode für AusgangsBegrenzungMin long getReglerAusgangsBegrenzungMin(volatile struct PIRegler *ptrRegler) { return ptrRegler->AusgangsBegrenzungMin; } // Set Methode für AusgangsBegrenzungMin void setReglerAusgangsBegrenzungMin(volatile struct PIRegler *ptrRegler, long ausgangsBegrenzungMin) { ptrRegler->AusgangsBegrenzungMin = ausgangsBegrenzungMin; } /*********************************************************************/ // Get Methode für Abtastzeit int getReglerAbtastzeit(volatile struct PIRegler *ptrRegler) { return ptrRegler->Abtastzeit; } // Set Methode für Abtastzeit void setReglerAbtastzeit(volatile struct PIRegler *ptrRegler, int abtastzeit) { ptrRegler->Abtastzeit = abtastzeit;
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 22 } /*********************************************************************/ // Get Methode für SummenBegrenzungMax long getReglerSummenBegrenzungMax(volatile struct PIRegler *ptrRegler) { return ptrRegler->SummenBegrenzungMax; } // Set Methode für SummenBegrenzungMax void setReglerSummenBegrenzungMax(volatile struct PIRegler *ptrRegler, long summenBegrenzungMax) { ptrRegler->SummenBegrenzungMax = summenBegrenzungMax; } /*********************************************************************/ // Get Methode für SummenBegrenzungMin long getReglerSummenBegrenzungMin(volatile struct PIRegler *ptrRegler) { return ptrRegler->SummenBegrenzungMin; } // Set Methode für SummenBegrenzungMin void setReglerSummenBegrenzungMin(volatile struct PIRegler *ptrRegler, long summenBegrenzungMin) { ptrRegler->SummenBegrenzungMin = summenBegrenzungMin; } /*********************************************************************/
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 23 4.1.4. Einstellungen des Reglers Hier wird es geschrieben wie man die Parametereinstellungen des PI-Reglers: // Reglereinstellungen setzen für Id-Regler - Establecer los parámetros del Regulador (Potencia reactiva) void mainSetPIReglerIdParams(struct PIRegler *ptrPIReglerId) { setReglerKP(ptrPIReglerId, 0); setReglerKI(ptrPIReglerId, 0); setReglerEingangsBegrenzungMax(ptrPIReglerId, 350); setReglerEingangsBegrenzungMin(ptrPIReglerId, -350); setReglerAusgangsBegrenzungMax(ptrPIReglerId, 52213); setReglerAusgangsBegrenzungMin(ptrPIReglerId, -52213); setReglerAbtastzeit(ptrPIReglerId, 1); setReglerSummenBegrenzungMax(ptrPIReglerId, 100000); setReglerSummenBegrenzungMin(ptrPIReglerId, -100000); } // Reglereinstellungen setzen für Iq-Regler - Establecer los parámetros del Regulador (Potencia activa) void mainSetPIReglerIqParams(struct PIRegler *ptrPIReglerIq) { setReglerKP(ptrPIReglerIq, 0); setReglerKI(ptrPIReglerIq, 0); setReglerEingangsBegrenzungMax(ptrPIReglerIq, 350); setReglerEingangsBegrenzungMin(ptrPIReglerIq, -350); setReglerAusgangsBegrenzungMax(ptrPIReglerIq, 52213); setReglerAusgangsBegrenzungMin(ptrPIReglerIq, -52213); setReglerAbtastzeit(ptrPIReglerIq, 1); setReglerSummenBegrenzungMax(ptrPIReglerIq, 100000); setReglerSummenBegrenzungMin(ptrPIReglerIq, -100000); }
PI-Regler mit Anti-Windup für eine feldorientierte Motorregelung für ein Elektrofahrzeug Luis Alfonso Puertollano Ventura 24 Mit diesem Code wird der Regler definiert, d.h. die Ausgangsbegrenzungen und die Parameter des Reglers. Und man muss auch den Regler initialisieren. Damit wird folgender Code in der Main.c File geschrieben: 4.2. Hauptprogramm Hier wird es geschrieben, wie man die anderen Teilen des Programms anrufen muss: // Initialisierung des Reglers void initRegler(volatile struct PIRegler *ptrReglerId); void initRegler(volatile struct PIRegler *ptrReglerIq); void mainSetPIReglerIdParams(struct PIRegler *ptrPIReglerId); void mainSetPIReglerIqParams(struct PIRegler *ptrPIReglerIq);