Home

Diplomarbeit

image

Contents

1. Lookup Tables werden ebenfalls in sequentielle Logik umgewandelt Der Prozess in dem sie sich befinden wird durch Anderung des Eingangswerts der Lookup Table angesto en Insgesamt ist der erzeugte VHDL Code trotz seiner Komplexit t gut les und nachvollziehbar 6 2 3 Einbettung in ein VHDL Projekt Anders als beim Systemgenerator unterst tzt der HDL Coder keine Einbettung von VHDL Modulen ins Modell Deshalb m ssen diese manuell hinzugef gt werden Zudem muss dem generierten Modell eine externe Taktquelle zur Verf gung gestellt werden Da es sich bei diesem Modell um ein Single Rate Modell handelt ist nur ein Taktsignal in der Abtastrate des Systems notwendig 74 6 FPGA Implementierung des Reglers Zur Integration aller VHDL Module zu einem Projekt wurde die Software ISE von Xilinx verwendet Einen Uberblick ber die VHDL Module und deren Verkn pfung gibt Abbildung 6 14 FPGA Regler HDL CODER vhd adc over spi vhd clk_wrapper vhd clk_smp_done PWM vhd T Abbildung 6 14 Einbettung des Regler Moduls Istwert I FPGA_Regler vhd Eg aus Simulinkmodell Stellwert Sollwert Hauptmodul und Schnittstelle nach au en ist die Datei FPGA Regler HDL CODE vhd Anhang D4 In ihm sind alle weiteren Module eingebunden Die Ablaufsteuerung erfolgt ber das Modul clk wrapper vhd Anhang D4 Es stellt zwei Signale bereit Zum einen das Taktsignal f r den von Simulink gener
2. Gewichtskraft Gain Integrator1 Integrator2 L Ankergeschw E Ankerpos Abbildung 4 6 Simulink Modell eines Hubmagneten Es wurden ausschlie lich Simulink Bl cke aus der Standardbibliothek verwendet Kategorie Source Constant Erzeugt ein konstantes Signal Dies kann ein vorgegebener Wert sein aber auch eine Variable die im Matlab Workspace definiert Img wurde Step Generiert ein Sprungsignal von einem konstanten Anfangswert zu u einem konstanten Endwert Beide Werte sowie der Zeitpunkt des Sprun ges werden im Eigenschaftsfenster des Blocks festgelegt Kategorie Sink Scope Visualisiert das Eingangssignal in Abh ngigkeit von der Zeit 32 4 Modellbildung mit Matlab Simulink Kategorie Math Operations 4 D Sum Als Ausgabe wird die Summe aber auch die Differenz der Eing nge berechnet Welcher der Eing nge dabei Summand oder Subtrahend ist wird im Eigenschaftsfenster im Textfeld List of signs durch Eintragen von oder festgelegt Product Dividiert bzw Multipliziert die Eingangssignale und legt das Ergebnis auf den Ausgang Welcher der Eing nge dabei Multiplikand oder Divisor ist wird im Eigenschaftsfenster im Textfeld Number of Inputs durch Eintragen von oder festgelegt Wird stattdessen eine Ganzzahl Angegeben so sind alle Eing nge Multiplikanden Gain Multiplikation des Eingangs mit einem konstanten Faktor Dies kann auch eine Variab
3. 55555Baud Aus diesen Vor berlegungen ergibt sich der zeitliche Ablauf wie in Abbildung 5 1 gezeigt Die einzelnen Programmteile kommen gem ihrer Interrupt Priorit t zur Ausf hrung Der Regelalgorithmus kann aufgrund des h heren Interruptlevels nicht durch die ISR der seriellen Schnittstelle unterbrochen werden Interrupt Level Regelalgorithmus Regelalgc Hauptschleife Serieller Empfang Initialisierung Timer Serial Timer Interrupt Receive Interrupt Interrupt Abbildung 5 1 Zeitlicher Ablauf des Mikrocontrollerprogramms Der Mikrocontroller als Digitalregler soll eine Sollwertvorgabe sowie die Parameter f r P I und D Anteil des Reglers von einem PC erhalten Dazu ist der Mikrocontroller mit der seriel len Schnittstelle eines Steuer PCs verbunden Der XC167 Mikrocontroller verf gt ber zwei serielle Schnittstellen ASCO und ASCI Erstere wird bereits von einem Monitor Programm belegt Dieses ist Bestandteil der Keil Entwicklungsumgebung und erm glicht das Programmieren des Mikrocontrollers und das Debuggen von Programmen zur Laufzeit Deshalb wurde die zweite Asynchrone Schnittstelle ASC1 f r die Konfiguration des Digital reglers verwendet Ein zus tzlicher Pegelwandler ist notwendig um den TTL Pegel 5V auf RS232 Pegel zu wandeln und umgekehrt 48 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller Um die Kommunikation mit dem PC zu gew hrleisten m ssen folge
4. Befehle MAC f r Signalverarbei tung sowie ein neu organisierter Block zur Pulsweitenmodulation Das Haupteinsatzgebiet des XC167 sind Industrie und Automotive Anwendungen Die Programmierung des Systems erfolgt ber die Entwicklungsumgebung pu Vision 3 der Firma Keil Technische Daten Mikrocontroller Speicher On Chip On Board Schnittstellen Peripherie Infineon XC167 CI 40 MHz RAM 2K Flash 128K RAM 512K Flash 2048K 2 Drucktaster 8 LEDs an I O Ports RS 232 Schnittstelle 2 CAN Ports LIN 10 100 Mbit Ethernet Schnittstelle 10 Bit AD Wandler mit 16 Kan len 2 berblick Xilinx Spartan 3E Starter Kit Das Spartan 3E Starter Kit ist vielseitiges Entwicklerboard f r programmierbare Logik Auf ihm befinden sich ein Spartan 3 E FPGA sowie ein CoolRunner II CPLD von Xilinx Auf der Leiterplatte befindet sich eine umfangreiche Peripherie die mit dem Spartan 3E an gesteuert werden kann Schaltungen f r das FPGA lassen sich mit der Software ISE von Xilinx entwerfen und Syn thetisieren Das Aufspielen des Programms erfolgt ber USB Schnittstelle Technische Daten Programmierbare Bausteine FPGA Spartan 3E XC3S500E 4FG320C CPLD CoolRunner M II XC2C64A 5VQ44C Speicher 128 Mbit Parallel Flash 16 Mbit SPI Flash 64 MByte DDR SDRAM Schnittstellen Peripherie Ethernet 10 100Mbit JTAG USB Port 2x 9 pin RS 232 PS 2 Maus Tastatureingang 4 Schiebeschalter 8 LEDs 4 Drucktaster 100 Pin
5. 0 when 1 to 8 gt CLK OUT lt 1 DATA lt DATA_OUT cnt 1 AMP_CS_INT 0 when 9 gt CLK_OUT lt 0 AMP_CS_INT 0 when 10 gt amp done int 1 end case else ent lt 0 end if end if 113 Anhang D Code Listings AMP DONE amp done int AMP SHDN lt AMP SHDN INT AMP CS lt AMP CS INT end process process CLK variable cnt integer range 0 to 5 0 variable clk 100ns int STD LOGIC 0 begin if CLK 1 and CLK event then end if end process end ADC AMP RTL cnt cnt 1 if cnt 5 then clk 100ns int not clk 100ns int cnt 0 end if clk 100ns lt clk 100ns int 114 Anhang D Code Listings PWM vhd library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL Uncomment the following library declaration if instantiating any Xilinx primitives in this code library UNISIM use UNISIM VComponents all entity PWM is Port clk in STD LOGIC The onboard clk of the Spartan3E C9 ce in STD LOGIC needed for SystemGenerator PWM OUT out STD LOGIC Output of PWM Signal VALUE in STD LOGIC VECTOR 13 downto 0 0 10000 gt 0 100 PWM EN in STD LOGICOC enable PWM end PWM architecture RTL of PWM is Signal clk int integer range 0 to 10000 begin process clk PWM EN variable PWM int std logic begin if PWM EN 1 then Clk i
6. 1 frnnnuuuunununuuunuunuuuu c Channel 0 CL Te a Ge DT et a Channel 0 SPI_MISO Abbildung 6 3 SPI Kommunikation des AD Wandlers 7 Implementierung Der VHDL Code des Moduls ist im Anhang D3 zu finden Es besteht aus den vier Dateien ADC_OVER_SPI vhd ADC_CONV vhd ADC_AMP vhd und WAIT CLK vhd Die Schnittstelle des Moduls nach au en wird in VHDL als Toplevel Entity bezeichnet In diesem Modul hei t diese ADC_OVER_SPI und ist in gleichnamiger Datei zu finden In Ihr werden zuerst die Chip Select Signale der nicht verwendeten SPI Bausteine fest auf 1 gesetzt Damit nehmen sie nicht an der Buskommunikation teil Die Hauptfunktion ist in einem Zustandsautomaten implementiert der den Ablauf der SPI Kommunikation koordiniert Nach einer Wartezeit von 128 Taktzyklen bei 50 MHz wird der Vorverst rker mit dem Faktor 1 initialisiert Nach dessen Abarbeitung wird die AD Wandlung angesto en und kontinuierlich wiederholt Da die Leitungen SPI SCK und SPI MISO vom Vorverst rker und AD Wandler gemeinsam genutzt werden werden sie im Hauptmodul durch einen Multiplexer umgeschaltet und dem momentan aktiven Modul zugeordnet 6 1 3 Serielle Schnittstellen Auch bei der FPGA Implementierung des Reglers wurde die serielle Schnittstelle zur ber tragung der F hrungsgr e vom PC ausgew hlt F r den FPGA Regler sind nur 10 Stufen f r die Hubh he des Ankers vorgesehen Andere Konfigurationsparameter f r den Re
7. Code der im Initialisierungsteil des generierten Programms platziert wird Outputs Anweisungen die bei jedem Durchlauf des Algorithmus ausgef hrt werden Terminate Anweisungen am Programmende Die Parameter bergabe und die Zuweisung von Ein und Ausg ngen innerhalb dieser Funkti onen erfolgt ber spezielle Funktionsaufrufe der S Function API assign pyO LibBlockOutputSignal 0 0 ADC vStartConv Wandlung starten while ADC_ubBusy 1 Warten bis AD Wandlung ausgef hrt lt py0 gt ADC uwReadConv amp 0x03ff Die untersten 10 Bit auslesen Das Beispiel zeigt einen Auszug aus der Output Funktion der tlc Datei des AD Wandlers In der ersten Zeile erfolgt die Zuordnung einer Variablen zu einem Blockausgang mit Hilfe der Funktion LibBlockOutputSignal F r Einen Blockeingang w rde die Funktion LibBlockInputSignal hei en Der Datentyp der Variable wird an anderer Stelle festgelegt Der Funktionsaufruf ADC_vStartConv bezieht sich auf eine Funktion die von der Basis software bereitgestellt wird Sie startet die Wandlung Durch die While Schleife wird gewar tet bis die Wandlung abgeschlossen ist Die dem Ausgang zugewiesene Variable wird nun mit dem Wert des AD Wandler beschrieben Als Hilfe zum Erstellen von S Functions steht der S Function Builders zur Verf gung Mit ihm l sst sich schnell ein Grundger st sowohl f r die C als auch f r die tlc Datei erstellen ber di
8. ber ein Pulsweitenmoduliertes Signal Da aber die Ausg nge von Mikrocontroller als auch des FPGA nur Signale mit geringer Leistung lie fern m ssen diese verst rkt werden Abbildung 3 10 PWM Verst rker Vorgaben f r die Schaltung des PWM Verst rkers sind folgende Eingang f r PWM Eingang sowohl f r Keil Mikrocontroller Board als auch f r Spar tan 3E Starterkit Arbeitsfrequenz von 3 bis 6 kHz Spannungsverstarkung proportional zur Pulsbreite des PWM Eingangs Betriebsspannung 12 V Ausgangsstrom min 1 8A bei Induktiver Last Neben der Betriebsspannung und dem eingehenden PWM Signal soll keine weitere Spannungsversorgung ben tigt werden nderungen im Eingangssignal sollen mit minimaler Verz gerung an den Ausgang weitergereicht werden 16 3 Der Regelkreis Es wurde eine Schaltung entwickelt die auch am Verst rkerausgang mit Pulsweitenmodulati on arbeitet Abbildung 3 10 zeigt diese Schaltung Teile der Schaltung wurden aus einem Bausatz zur Pulsweitenmodulation der Firma Conrad bernommen R7 L d 1 00kQ n C1 R9 es AL 220uF POL D2 7h at A IN5401 R8 5 4 al 4 BQ557A 3200mH D4 7RZPD3 9 R3 392k Ty Q3 u R5 D ir a BUZ71 12V R4 1 00k0 3 92k Q4 si au s Aba 9 t D1 1N4003 30 1K0 j Q2 k XFG1 gt t ZPD12 R2 lBcss7a ss Abbildung 3 11 PWM Verst rkerschaltung Schaltungsbeschreibung Der Widerstand R9 und die
9. 1 if cnt 128 then WAIT DONE 1 cnt 0 end if end if end if end process end Behavioral 112 Anhang D Code Listings ADC AMP vhd library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL Uncomment the following library declaration if instantiating any Xilinx primitives in this code library UNISIM use UNISIM VComponents all entity ADC AMP is PORT CLK in STD LOGIC RESET in STD LOGIC ADC AMP EN in STD LOGIC AMP CS out STD LOGIC AMP SHDN out STD LOGIC AMP DONE out STD LOGIC SPI MOSI out STD LOGIC SPI_ SCKr out STD DBOGIC end ADC AMP architecture ADC AMP RTL of ADC AMP is signal clk 100ns STD LOGIC signal DATA OUT STD LOGIC VECTOR O0 to 7 signal CLK OUT STD LOGIC signal DATA std logic signal cnt integer range 0 to 10 0 begin DATA OUT 00010001 SPI SCK lt CLK 100ns when CLK OUT 1 else 0 SPI MOSI lt DATA when ADC AMP EN 1 else 0 process CLK 100ns ADC AMP EN variable amp done int std logic variable amp shdn int std logic variable amp cs int std logic begin if CLK 100ns 0 and CLK 100ns event then amp shdn int 0 amp done int 0 DATA lt 0 AMP_CS_INT 1 if RESET 1 then AMP_SHDN_INT 1 ent lt 0 CLK OUT lt 0 elsif ADC AMP EN 1 then ent lt cnt 1 case cnt is when 0 gt AMP_CS_INT
10. ES Tan Main Signal Specihcaton O Specily properties via bus object Bus object for validaling input bus BusObiect itu bu Pot dimensions 1 for inherited 1 Sample time 1 for inherted 4 Data type Specily via dialog Output data type e g sfo 16 uini 9 floalf single stot 4 Output scaling value Slope e g 2 9 or Slope Bias e g 1 25 3 2 0 Signal type teal Sampling mode auto Abbildung 6 7 Konfiguration des Input Blocks 69 6 FPGA Implementierung des Reglers Um das Modell HDL Coder konform zu gestalten m ssen alle nicht unterst tzten Bl cke ersetzt werden Zu diesen Bl cken geh ren alle die eine zeitabh ngige Komponente beinhal ten Beim Reglermodell sind dies der Integrator und der Derivative Block aus der Kategorie Discrete der Simulink Bibliothek Beide Bl cke m ssen also nachgebaut werden Die Nachbildung des Integrator Blocks Abbildung 6 8 besteht aus einem Addierer mit ei nem um eine Abtastperiode verz gerten r ckgekoppelten Zweig Dadurch werden alle Ein gangswerte aufsummiert Durch Multiplikation mit der Abtastzeit erh lt man n herungsweise das Integral des Eingangswerts ber die Zeit Add2 Unit Delay2 Abbildung 6 8 Nachbildung Integrator Block Bei der Nachbildung des Derivative Blocks Abbildung 6 9 wird vom aktuellen Eingangs signal das um eine Abtastperiode verz gerte subtrahiert Durch Multiplikation mit dem Kehrwert der
11. Sat Feb 10 17 14 46 2007 TLC version 6 3 Aug 5 2005 C source code generated on Sat Feb 10 17 14 47 2007 Ef ifndef RTW HEADER PID h define RTW HEADER PID h ifndef PID COMMON INCLUDES define PID COMMON INCLUDES include math h include lt float h gt finclude lt stddef h gt include rtwtypes h include rtlibsrc h endif _PID_COMMON_INCLUDES_ include PID_types h Macros for accessing real time model data structure ifndef rtmGetErrorStatus define rtmGetErrorStatus rtm void 0 tendif ifndef rtmSetErrorStatus define rtmSetErrorStatus rtm val void 0 tendif Block signals auto storage typedef struct real_T serial_IO_ol S1 serial IO real T serial IO 02 S1 serial IO real T serial IO 03 Sl serial IO real T serial IO o4 S1 serial IO real T pwm S1 pwm uintl16 T SFunction S1 S Function uintl16 T Gain S1 Gain BlockIO_PID Block states auto storage for system Root typedef struct real T DiscreteTimeIntegrator DSTATE lt S1 gt Discrete Time Integrator real T UD DSTATE lt S2 gt UD real T Soll S1 Data Store Memory real T P S1 Data Store Memoryl real T I S1 Data Store Memory2 real T D S1 Data Store Memory3 D Work PID External inputs root i
12. flie en m ssen Daf r liefert der System Generator bereits HDL Code der ohne Nachbearbeitung synthetisiert und auf den FPGA bertragen werden kann Zudem kann in System Generator Modellen externer VHDL Code eingebunden werden Der VHDL Code der vom HDL Coder erzeugt wird ist nicht direkt auf einen FPGA ber tragbar Er muss in eine Umgebung eingebettet werden die ihm zumindest ein Taktsignal zur Verf gung stellt Wenn zus tzlich noch VHDL Module angesprochen werden sollen m ssen auch diese manuell eingebunden werden Daf r kann aber das Standard Blockset von Simu link verwendet werden und eine Umstellung ist nicht notwendig Hinsichtlich der Simulierbarkeit schneidet der HDL Coder besser ab da sich das Modell des System Generators nur schwer an ein Standard Simulink Modell das beispielsweise ein phy sikalisches System beschreibt anbinden l sst Der Grund daf r ist die unterschiedliche Zeit basis der beiden Systeme W hrend ein physikalisches Modell beispielsweise im Sekundebe reich abl uft wird ein System Generator Modell taktgenau simuliert Was die Resourcennutzung betrifft so kann der System Generator die Besonderheiten der Xilinx FPGAs nutzen Der HDL Coder erzeugt sehr schlanken Code kann aber nur auf Stan dardkonstrukte die in VHDL definiert sind zur ckgreifen 90 7 Zusammenfassung 7 Zusammenfassung In dieser Diplomarbeit wurde gezeigt wie aus einem simulierbaren graphischen Computer model
13. oe o9 oe oe o9 ge oe function BlockTypeSetup block system Output Sopenfile externs include ADC h oe closefile externs lt LibCacheExtern externs gt oe oe oe Sendfunction oe oe Function Start 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 gt oe oe oe function Start block system Output lt Type gt Block Name ADC vrniti lt endfunction oe Function Outputs oe oe oe oe Purpose Code generation rules for mdlOutputs function oe oe oe oe oe function Outputs block system Output S Function xc167 adc wrapper Block lt Name gt assign py LibBlockOutputSignal 0 0 ADC vStartConv Wandlung starten while ADC_ubBusy 1 Warten bis AD Wandlung ausgef hrt lt py0 gt ADC uwReadConv amp 0x03ff Die untersten 10 Bit auslesen Sendfunction oe Function Terminate 22222222 222 2 2 2 2 2 22 2 2 2 2 22 2 222222 22222 222222 2 2222222222222 oe oe oe function Terminate block system Output lt Type gt Block Name Sendfunction EOF xc167_adc tlc Anhang D Code Listings xcl67 pwm tlc oe oe File xc167_pwm tlc Created Mon Dec 4 12 28 30 2006 oe oe oe oe oe oe Description Real Time Workshop wrapper functions interface generated for S function xcl67 pwm c oe o9
14. Abbildung 2 2 Abbildung 2 3 Abbildung 3 1 Abbildung 3 2 Abbildung 3 3 Abbildung 3 4 Abbildung 3 5 Abbildung 3 6 Abbildung 3 7 Abbildung 3 8 Abbildung 3 9 Abbildung 3 10 Abbildung 3 11 Abbildung 3 12 Abbildung 3 13 Abbildung 4 1 Abbildung 4 2 Abbildung 4 3 Abbildung 4 4 Abbildung 4 5 Abbildung 4 6 Abbildung 4 7 Abbildung 4 8 Abbildung 4 9 Abbildung 4 10 Abbildung 4 11 Abbildung 4 12 Abbildung 4 13 Abbildung 4 14 Abbildung 4 15 Abbildung 4 16 Abbildung 4 17 Abbildung 4 18 Abbildung 4 19 Abbildung 4 20 Abbildung 4 21 Abbildung 5 1 Abbildung 5 2 Abbildung 5 3 Abbildung 5 4 Abbildung 5 5 Abbildung 5 6 Abbildung 6 1 Abbildung 6 2 Abbildung 6 3 Abbildung 6 4 Abbildung 6 5 Abbildung 6 6 Abbildung 6 7 Laboraufbau Hardware des Remote Labors 1 Entwicklungsprozess Grundstruktur eines Regelkreises Erweiterte Grundstruktur des Regelkreises Digitaler Regelkreis Regelkreis des Hubmagneten Hubmagnet Funktionsprinzip eines Infrarot Distanzsensors SHARP GP2D120 2 Ausgangspannung in Abh ngigkeit von der Objektdistanz 2 Spannung in Abh ngigkeit der Entfernung PWM Verst rker PWM Verst rkerschaltung Keil MCBXCI67 Entwickler Board Xilinx Spartan 3E Starterkit Arbeitsablauf Modellbildung Links Simulink Library Browser rechts Arbeitsbereich Elemente des Hubmagneten im Schnittbild Abmessungen des Hubmagneten Ersatzschaltbild einer realen Spule Simu
15. Hirose Erweiterungsstecker 3x 6 Pin Pfostenstecker LCD Display 2x16 Zeichen 2 berblick 2 2 Codegenerierung mit Matlab Simulink Dieser Abschnitt gibt einen berblick des eigentlichen Thema der Diplomarbeit der Codege nerierung mit Matlab Simulink f r Mikrocontroller und FPGA Anhand eines Reglerkreises wird exemplarisch ein Entwicklungsprozess angefangen mit der Modellbildung ber die Co degenerierung bis hin zur Implementierung in eine Mikrocontroller oder FPGA Umgebung gezeigt Abbildung 2 3 Matlab Simulink Modellbildung Codegenerierung Regelalgorithmus Codeanpassung Kompilierung Schaltungssynthese Programm Bitstream Mikrocontroller FPGA Abbildung 2 3 Entwicklungsprozess In der Diplomarbeit wird als erstes auf den Regelkreis im Allgemeinen eingegangen gefolgt vom speziellen Fall eines Regelkreises f r einen Hubmagneten dessen Ankerposition durch einen Digitalregler eingestellt werden kann Bei dem Hubmagneten handelt es sich dabei um einen realen Versuchsaufbau im Remote Labor f r den der Regler entworfen wird Es folgt ein berblick ber Matlab Simulink dessen Funktionsweise am Beispiel der Model lierung einer Regelstrecke gezeigt wird Das Modell ist dabei ausgehend von physikalischen Gesetzm igkeiten hergeleitet Durch Erg nzung dieses Modells mit dem eines Reglers entsteht ein geschlossener Regel kreis 2 berblick Die so erstellte Nachbildung eines Regler
16. PWM EN variable PWM int std logic begin if PWM EN 1 then Clk int lt 0 PWM int 0 elsif clk event and clk 1 then if ce 1 then Clk int lt clk_int 1 if clk_int lt conv_integer unsigned VALUE then PWM int 1 else PWM int 0 end if if clk int 10000 then Clk int lt 0 end if end if end if PWM OUT lt PWM int end process end RTL Es handelt sich um einen Z hler der von O bis 10000 z hlt Innerhalb der Z hlerschleife findet ein Vergleich der Z hlervariablen und dem VALUE Eingang statt Solange der Z hlerwert kleiner oder gleich dem VALUE Wert ist wird PWM OUT auf 1 geschaltet ansonsten auf 0 So erh lt man ein PWM Singal mit einer am Periodenanfang befindlichen Einschalt phase 6 1 2 Analog Digital Wandler ber SPI Bus Das Spartan 3E Starter Kit verf gt ber einen 2 Kanal 14 Bit Analog Digital Wandler Chip Linear Technology LTC1407A 1 Diesem vorgeschaltet ist ein Verst rkerbaustein Linear Technology LTC6912 1 der eine Spannungsverst rkung um die Faktoren 0 1 2 5 10 20 50 oder 100 vornehmen kann Sowohl der AD Wandler als auch der Verst rker sind ber Se rial Peripheral Interface SPI Bus angeschlossen Beim SPI Bus handelt es sich um ein einfaches serielles Bussystem von Motorola zum Ver binden von Digitalbausteinen Am Bus befindet sich immer ein Master der den Zugriff auf die Leitungen steuert und theoretisch beliebig viele
17. Peripheriebausteine die ber drei ge meinsam genutzte Leitungen mit dem Master verbunden sind anbindet Diese sind SDO Serial Data Out oder MOSI Master out Slave in Daten vom Master zu den Peripheriebausteinen SDI Serial Data In oder MISO Master in Slave out Daten von den Peripheriebau steinen zum Master SCKL Serial Clock Gibt den Takt f r die Daten bertragung vor Zudem f hren zu den Peripheriebausteinen noch Chip Select Leitungen CS 64 6 FPGA Implementierung des Reglers Der Anschluss kann auf mehrere Arten erfolgen Eine M glichkeit ist alle Bausteine parallel an die drei Leitungen anzuschlie en Jeder Baustein erh lt eine Chip Select Leitung die zum Master f hrt Eine andere M glichkeit ist die Bausteine hintereinander zu schalten SDO des einen Bau steins zu SDI des n chsten usw Alle Bausteine liegen an einer Chip Select Leitung Auch eine Kombination aus beiden Anschlussarten ist denkbar aber nur die Erstgenannte funktioniert f r jeden Baustein Die Kommunikation ist keinem strikten Protokoll unterworfen Das Funktionsprinzip ist zu meist folgendes Der Master zieht die CS Leitung der ausgew hlten Peripherie auf Low und startet dann ein Taktsignal auf die SCKL Leitung Gleichzeitig sendet er mit jedem Impuls auf der SCKL Leitung ein Datenbit auf der SDO Leitung bzw empf ngt Datenbits auf der SDI Leitung Der AD Wandler und der Vorverst rker des Spartan 3E Starter Kit sind pa
18. Rechenaufwand 4 1 berblick ber Matlab Simulink Simulink der Firma The Mathworks ist eine Software die das Programm Matlab des gleichen Herstellers um ein Werkzeug zur graphischen Modellierung Simulation und Analyse dyna mischer Systeme erweitert Solche Systeme k nnen z B technischer mathematischer physi kalischer oder auch finanzmathematischer Natur sein Die Modellierung erfolgt mithilfe graphischer Bl cke welche untereinander durch Linien verbunden werden und zusammen einen Wirkplan bilden Die einzelnen Bl cke sind in Bib liotheken organisiert Neben der standardm ig enthaltenen Simulink Bibliothek die im fol genden n her erl utert wird sind auch noch zahlreiche zus tzliche Bibliotheken so genannte Blocksets die sowohl vom The Mathworks als auch von anderen Herstellern bezogen werden k nnen erh ltlich Sie erweitern die Funktionalit t von Simulink f r spezielle Anwendungen wie etwa Codegenerierung Bildverarbeitung Bioinformatik Signalverarbeitung usw Nach dem Starten von Matlab kann Simulink durch dr cken des Buttons in der Werk zeugleiste oder durch Eingabe von simulink im Befehlsfenster gestartet werden Es er scheint der Simulink Library Bowser Abbildung 3 2 links ix untitled Scope simulink Sinks Scope W Smuink t 34 Commonly Used Blocks E Joisp gt Continuous I Floating Scope gt Discontinulties 3j Discrete 1 Logic and Bt Operation
19. Standard Blockset zur Modellbildung verwendet wurde sondern das Xilinx System Generator Blockset Dieses ist laut Herstellerangaben zum Implementieren von Anwendungen der Digitalen Sig nalverarbeitung auf FPGAs von Xilinx konzipiert Die Tatsache dass das Blockset nicht nur DSP spezifische sondern auch elementare Bl cke zur Verf gung stellt l sst aber auch eine alternative Verwendung zu Nach Installation des Xilinx System Generators stehen im Simulink Library Browser neue Elemente zur Verf gung Diese entsprechen in der Handhabung denen der normalen Simulink Bausteine Einige wesentliche Unterschiede zum Standard Blockset gibt es dennoch Die System Gene rator Komponenten sind hardwarebezogen und oft direkte Nachbildung digitaler Schaltele mente Anstelle von konventionellen Datentypen wie int uint double usw werden beim System Generator Blockset nur Festkommazahlen benutzt Es handelt sich aber dabei nicht um die Datentypen ufix und sfix wie sie beim HDL Coder Modell verwendet werden sondern um ein eigenes Format 6 3 1 Nachbau des Reglers Das mit dem System Generator erstellte Reglermodell ist das komplexeste der gezeigten Es baut wieder auf dem im Abschnitt 4 3 vorgestellten diskreten PID Regler auf In diesem Fall wird aber das Modell nicht nur angepasst sondern mit den Elementen des Xilinx Blocksets komplett neu aufgebaut Neben der in der Bibliothek verwendeten Kategorisierung der Xilinx Blocks wie sie in hn li
20. Vorlagen geladen werden die das Programm ber die verf gbaren Hardwarekomponenten und Register informiert Die Konfiguration des Mikrocontroller die ber gezieltes Setzten von Spezial Funktion Re gisters umgesetzt wird erfolgt dialogfeldbasierend Bei den Dialogfeldern handelt es sich aber nicht nur um die Abbildung der einzelnen Register auf Formulare Auch die logischen Zu sammenh nge und architekturbedingten Restriktionen werden beachtet Zudem werden die Registerfunktionen textuell erkl rt Abbildung 5 2 zeigt das DAvE Hauptfenster Oben rechts findet sich der Architektur berblick unten rechts ein Konfigurationsdialogfeld und links die Peripheriekomponenten des XC167 Ele yew Options Add Ins Windows 2 da D u t HOM F Asynchronous Synchronous Serial Interface ASC1 a Module Clock Pin Selection Autobsud Control AFO Baud Rate WDA interrupts it Extension PEC tale Mode Conrol M Raeceever Eneble Loopback Mode c V Enable receiver REN Enable loopback mode 18 Fot data asynchronows 7 bit data parity asynchronous C 9 bit date asynchronous 8 bt data wake up asynchronous bit data parity asynchronous WDA mode bit data asynchronous Stop Bi Selection STP Porty Selecton 000 One stop bt 6 C Two stop bits c CADokumete und Einstellungen Mere Eigene Dateien Dipl Abain XC 16710167 Basis X167 Regler dev Abbildung 5 2 Programmoberfl che von DAvE Ist
21. Workshop Comments Symbols Custom Code Debug interface Templates Data Placement Data Type Repla TLC options Make command Template makefile ert default tmf make tw optimized fioatng point 1 Custom storage c ass C Ignore custom storage classes Generate code v Generate code only R v Abbildung 5 5 Real Time Workshop Konfiguration Da f r den Mikrocontroller bereits ein Codegrundger st mit DAvE erstellt wurde beschr n ken sich die Einstellungen f r dieses Projekt auf einige wenige Punkte Als Zielsprache wird C gew hlt Als System target file das die main Funktion beinhaltet wurde die Datei ert tlc gew hlt Dies ist eine generische Datei f r eingebettete Zielsysteme F r den Generierungsprozess wurde der Parameter optimized_floating_point 1 ange f gt da im Reglermodell Flie komma Datentypen verwendet wurden Die Option zur Generierung von Dokumentation wurde ausgew hlt 59 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller 5 4 3 Ausf hren der Codegenerierung Die Codegenerierung kann sowohl f r ein gesamtes Modell als auch f r ein ausgew hltes Subsystem erfolgen Die zweite Methode kommt in diesem Fall zum Einsatz da die Generie rung des Gesamtmodells die Regelstrecke beinhalten w rde aber nur der Regler ben tigt wird Die Durchf hrung erfolgt durch Rechtsklick auf das Subsystem und durch Auswahl des Punkts Real TimeWorksh
22. X OUT1 Subtract Gain Lookup Tsble1 Abbildung 6 11 Lookup Table mit Interpolation Deshalb wurde ein Subsystem im Modell erstellt das die vorhandene Lookup Table benutzt um aus benachbarten Eingangswerten genauere Ausgangswerte zu interpolieren Abbildung 6 11 Dazu werden zwei Instanzen der Lookup Table verwendet Bei der ersten wird der n chst niedrige Eingangswert zur Ermittlung des Ausgangswerts benutzt bei der Zweiten der n chst h here Die beiden unterschiedlichen Ergebnisse werden voneinander subtrahiert Mit dem Kehrwert des Abstands der Tabelleneintr ge multipliziert erh lt man die Steigung f r den Abschnitt zwischen den zwei Tabelleneintr gen Die so ermittelte Steigung wird nun mit dem Abstand des Eingangswerts zum n chst niedri gen Lookup Table Eintrag multipliziert und zum Eintrag der ersten Lookup Table addiert Mit diesem Verfahren wird die Lookup Table st ckweise linearisiert 71 6 FPGA Implementierung des Reglers ADC IN U Out U_INK_OUTI Ist_in U Data T Conversion2 nS ADC gt U Bs Stell out 150 Dats Type Conversion Subtract Constant id Subtract1 e 3 x Int Outt 833 34 Add Gain4PWM Ssturstion Integrator Constant2 Int Outt Add4 Soll in Subsystem z Derivative Abbildung 6 12 HDL Coder konformes Reglermodell 72 6 FPGA Implementierung des Reglers 6 2 2 Codegenerierung Die Codegenerierung kann wie schon bei
23. der CORE Generator verwendet um Teile des Modells zu implementieren Diese Bausteine sind in den edn und ngc Dateien zu finden modellname cw xcf Timing und Area Constrains f r das Synthesewerkzeug modellname cw ise Die Xilinx ISE Projekt Datei vcom do Skriptdatei f r Verhaltenssimulation in ModelSim L dt man das Projekt in Xilinx ISE und synthetisiert man die Schaltung werden viele War nungen erzeugt die keine Auswirkung auf die Funktionsf higkeit des generierten Codes ha ben Das Problem hierbei ist jedoch das Warnungen die wirklich zu unerw nschten Verhalten des FPGAs f hren in der Menge verloren gehen Weitere Probleme treten auf wenn man versucht die Zuordnung der FPGA Pins erst im Xilinx ISE durchzuf hren Offensichtlich f hrt dies zu Konflikten zwischen der ISE Constrains Datei und der vom System Generator erzeugten 89 6 FPGA Implementierung des Reglers 6 4 HDL Coder und Xilinx System Generator im Vergleich Sowohl HDL Coder als auch Xilinx System Generator haben FPGAs als Zielsystem Jedoch nur der HDL Coder liefert generischen HDL Code Der System Generator ist an die FPGAs des Herstellers Xilinx gebunden Die Modellierungsbausteine die der System Generator zur Verf gung stellt sind n her an der Hardware Dies l sst mehr Eingriffsm glichkeiten bei der Modellbildung zu hat aber auch zur Folge dass bereits mehr Gedanken zur tats chlichen Hardwareumsetzung ins Modell ein
24. die HDL Codegenerierung ausgelegt sind Um einen Regler zu erstellen ist es notwendig den gesamten Regler mit diesen Bl cken nachzubilden Der Vorteil zum HDL Coder ist der dass mit dem System Generator direkt ein Modell erstellt werden kann das ohne manuelle Codeanpassung synthetisiert werden und auf das FPGA bertragen werden kann Den Abschluss der Diplomarbeit bildet eine kurze Zusammenfassung 3 Der Regelkreis 3 Der Regelkreis In diesem Kapitel werden die Grundlagen der Regelungstechnik kurz umrissen Diese sind f r das Verst ndnis der folgenden Kapitel notwendig Beginnend mit dem Aufbau eines Regel kreises im Allgemeinen und dessen Komponenten werden einzelne Reglertypen n her be leuchtet um schlie lich den auf den Regelkreise des Hubmagneten der in der Diplomarbeit ungesetzt wird n her einzugehen 3 1 Aufbau eines Regelkreises Als Regelkreis wird ein geschlossener Wirkkreis bezeichnet der durch fortlaufende Anpas sung einer Stellgr e eine Regelgr e so ndert dass sie eine m glichst geringe Differenz zu einem vorgegebenen Sollwert aufweist Regelkreise k nnen in zwei Teile zerlegt werden den Regler und die Regelstrecke Letztere ist hierbei das System das geregelt wird Eingangsgr e des Regelkreises ist die F hrungs gr e oder auch Sollwert Ist die F hrungsgr e konstant wird der Regelkreis als Festwertre gelung bezeichnet ansonsten hei t er Folgeregelung F hrungsgr en k nnen
25. die Konfiguration fertig gestellt l sst sich das Codeger st der Basissoftware generieren F r jede der benutzen Hardwarekomponenten wird eine C Datei plus eine Header Datei er zeugt Je nach getroffener Auswahl werden mehr oder weniger viele C Funktionen zum An sprechen der Peripherie bereitgestellt 50 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller Die in DAvE gew hlten Einstellungen sind nachfolgend aufgelistet Systemkonfiguration Eingangsfrequenz 8 MHz Systemtakt 20 MHz Fcpu Timer General Purpose Timer Unit GPT1 Konfiguration Timer 2 Betriebsart Timer Vorteiler 16 Z hlrichtung Abw rts Startwert OxB98B entspricht 38ms Analog Digital Wandler Betriebsart fixed channel single conversion mode Aufl sung 10 bit resolution Wandlungszeit 89 900 us Eingang Pin 5 0 Pulsweitenmodulation Konfiguration des CCU6 Timers 12 Vorteiler 1 Betriebsart edge aligned mode Periodendauer 250us Konfiguration des CCU6 Channel 0 Betriebsart Compare mode Ausgang Pin 1L 1 Serielle Schnittstelle Asynchronous Synchronous Serial Interface ASC Baudrate 38400 Baud bertragung 8 Datenbists keine Pari t 1 Stopbit FIFO 8 Byte Ausgang Pin 3 0 TxDA1 Eingang Pin 3 1 RxDA1 51 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller Interrupts Timer 2 Interrupt priority level ILVL 13 Interrupt group level GLVL 0 ASCI Rx inte
26. e M 3 Lookup Tables H Scope 2B Math Operations P Model Verfication tos Stop Simulation 2 Model Wide Ut ties 2 Ports amp Subsystems Terminator gt Signal Attributes 3 Signal Routing To Fil gt Sinks ps 2 Sources eam ToW 2j User Defined Functions a wotupsce 3 Additional Math amp Denm v XY Graph Ready Abbildung 4 2 Links Simulink Library Browser rechts Arbeitsreich 21 4 Modellbildung mit Matlab Simulink Von hier k nnen Simulink Modelle neu angelegt bzw ge ffnet werden Der Library Browser enth lt eine Verzeichnisstruktur in der die einzelnen Blocks hierarchischen organisiert sind Auf der rechten Seite befinden sich die einzelnen Bl cke des gew hlten Ordners Sie K nnen einfach in das Fenster des Arbeitsbereichs Abbildung 3 2 rechts gezogen und dort platziert werden Die Verbindung der Bl cke untereinander erfolgt durch ziehen von Signalleitungen mit der Maus Die Signale dieser Leitungen k nnen einfache Datentypen oder Datenstruktu ren sein bzw Arrays aus solchen Im oberen Fensterabschnitt des Library Browsers wird eine kurze Beschreibung des im Moment markierten Blocks oder Ordners angezeigt Die in diesem Projekt verwendeten Blocksets und Toolboxes sind Simulink Standard Bibliothek Realtime Workshop Realtime Workshop Embedded Coder Fixedpoint Blockset System Generator von Xilinx Zu den einzelnen Blocksets und Toolboxen Die Simulink Standard Bibliothek ste
27. heraus die vom Codegrundger st bereits zur Verf gung gestellt wird Nur der Funktionsaufruf One Step ist dort einzutragen Zum erfolgreichen Kompilieren ist es notwendig die Matlab Bibliothek rtlibsrc einzu binden Diese enth lt alle vom Regelalgorithmus ben tigten Funktionen In den Kompilie rungseinstellungen von u Vision erfolgt das Einbinden durch eine entsprechende Pfadangabe Zu bemerken ist dass die Anpassung des Projekts nur einmal durchgef hrt werden muss so lange sich die Schnittstellten zum Modell nicht ndern Bei erneuter Codegenerierung werden lediglich die alten Dateien berschrieben 61 6 FPGA Implementierung des Reglers 6 FPGA Implementierung des Reglers In diesem Kapitel wird die Implementierung des Reglers auf einem programmierbaren Logik baustein behandelt Als Hardware dient ein Spartan 3E FPGA Board von Xilinx Wie schon beim Mikrocontroller basiert der Regler auf dem diskreten Simulink Modell eines solchen Es werden zwei Methoden der Implementierung gezeigt Bei der ersten Variante wird der Simulink HDL Coder verwendet Dieser kann aus einer Teilmenge des Standard Blocksets VHDL oder Verilog Code generieren Bei der zweiten Variante erfolgt die Modellbildung mit dem Xilinx System Generator einer Blockset Erweiterung f r Simulink Sowohl HDL Coder als auch System Generator benutzten als Schnittstelle zur Peripherie des FPGA Boards VHDL Module die als erstes in diesem Kapitel behandelt w
28. mechanischen Grenzen erweitert werden F r den Betrieb des Hubmagneten ergeben sich folgende F lle 1 Der Anker befindet sich innerhalb der Hubstrecke 2 Der Anker befindet sich am oberen Anschlag 2 1 Die Gewichtskraft ist gr er als die Magnetkraft 2 2 Die Gewichtskraft ist Kleiner oder gleich der Magnetkraft 3 Der Anker befindet sich am unteren Anschlag 3 1 Die Gewichtskraft ist gr er als die Magnetkraft 3 2 Die Gewichtskraft kleiner oder gleich der Magnetkraft Die Beschr nkung der Ankerbewegung hat im Modell Auswirkungen auf drei Parameter Das sind die Hubh he x die Geschwindigkeit x und die Beschleunigung x des Ankers Trifft der Anker auf einen Anschlag so erfolgt eine hohe Gegenbeschleunigung die die An kergeschwindigkeit auf 0 abbremst Der Anker verharrt in der Anschlagsposition Diese Gegenbeschleunigung l sst sich im Modell nur sehr schwer rekonstruieren Deshalb geht man vom Zustand des Ankers nach dem Abbremsvorgang aus Solange die re sultierende Kraft aus Gewichtkraft und Magnetkraft in Richtung des Anschlags wirkt erf hrt der Anker keine Beschleunigung die Geschwindigkeit bleibt 0 Dies ist f r die oben genann ten F lle 2 2 und 3 1 zutreffend F r die restlichen F lle verh lt sich das Modell des Magneten normal Um festzustellen welcher der oben genanten F lle gerade zutreffend ist m ssen die drei Wer te Gewichtskraft Magnetkraft und Hubh he berwacht werden Dies wird mit einem fnc Bloc
29. oe oe oe ge oe oe File generated by S function Builder Block oe oe oe oe For more information on using the Target Language with the Real Time Workshop see the Target Language Compiler manual under Real Time Workshop in the Inlining S Functions chapter under the section and subsection Writing Block Target Files to Inline S Functions Function Based or Wrappered Code oe o oe o9 oe AP o9 oe oe oe oe oe oe H mplements xc167 pwm C oe oe oe oe oe ole Purpose Set up external references for wrapper functions in the generated code oe oP oe oe o9 ge oe function BlockTypeSetup block system Output Sopenfile externs include CCU6 h Je sclosefile externs lt LibCacheExtern externs gt 2 e oe endfunction oe oe o oe oe function Start block system Output lt Type gt Block Name DOUG vInit Sendfunction oe oe oe oe oe Purpose Code generation rules for mdlOutputs function oe oe oe oe oe function Outputs block system Output S Function xcl67 pwm wrapper Block Name assign pul LibBlockInputSignal 0 0 CCU6 vLoadChannelShadowRegister CCU6 CHANNEL 0 5000U lt pu0 gt CCU6 vEnableShadowTransfer CCU6 TIMER 12 oe oe Sendfunction oe oe oe oe oe function Terminate block system Output lt Type gt Block lt Name gt CCU6 vLoadChannelShadowRegister CCU6 CHANNE
30. tsampmath S2 TSamp Sample Time Math Block lt S2 gt TSamp y7 u k where K 1 w Ts InputO Data Type Floating Point real T Output0 Data Type Floating Point real T Saturation Mode Saturate Parameter WtEt Weighted Elapsed Time Data Type Floating Point real T rtb TSamp rtb r64 temp27 25 0 real T rtb dbl rtsaturate UO0DataInYOContainer real T rtb dbl tmp Sum S1 Add incorporates UnitDelay lt S2 gt UD Sum lt S2 gt Diff Sum lt S1 gt Sum2 Product lt S1 gt P iA rtb r64 temp27 rtb P rtb DiscreteTimeIntegrator rtb TSamp PID DWork UD DSTATE 6 0 Saturate lt S1 gt Saturation rtb dbl rtsaturate U O0DataInYOContainer rt SATURATE rtb r64 temp27 0 0 X2 0y5 Gain S1 Gain rtb dbl tmp fmod floor rtb dbl rtsaturate UODataInYOContainer 4 1667E 002 65536 0 if rtb dbl tmp lt 0 0 rtb dbl tmp 65536 0 PID_B Gain uint16_T rtb_dbl_tmp Sum S1 Suml incorporates DataStoreRead lt S1 gt Data Store Readl Product lt S1 gt I Sum lt S1 gt Sum aA rtb_Suml rtb Sum3 PID_DWork I rtb_r64_temp27 rtb_dbl_rtsaturate_U0DataInY0Container S Function xcl67_pwm_wrapper Block lt S1 gt pwm U6 vLoadChannelShadowRegister CCU6 CHANNEL 0 5000U PID B Gain U6 vEnableShadowTransfer CCU6 TIMER 12 Outport eRoot Stell D Y Stell PID B pwm Update for DiscreteInte
31. unt 8 float single sto 32 Output sealing value Slope e g 2 9 or Slope Bias eg 1 25 3 2 16 7 Lock output scaling against changes by the autoscaling tool Round integer calculations toward Floor C Saturate on integer overflow Lx Io J uw Abbildung 6 6 Explizite Festlegung der Zahlendarstellung Innerhalb des Reglermodells werden beide Varianten verwendet F r den ersten Block hinter einem Eingangs Block und f r Konstanten wurde die Zahlendarstellung explizit festgelegt Alle folgenden Bl cke erhielten als Regel die Zahlendarstellung des Blockeingangs zu ber nehmen Das Modell arbeitet somit durchgehend mit der gleichen Zahlendarstellung Die Eing nge selbst wurden so konfiguriert dass sie mit den Schnittstellen der VHDL Module aus Abschnitt 6 1 bereinstimmen Dies erfolgt durch die Parameter der Ein und Ausgangs Bl cke des Modells Abbildung 6 7 Aus sfix 14 am Istwert Eingang wird beispielsweise std logic vector 13 downto 0 im generierten VHDL Code i7 Source Block Parameters Ist n Inport Provide an input port lor subsystem or model po AL reas arg Latch input by delaying outside signal produces the value the subsystem input at the previous lime step bed sanse Fri Latch input by copying inside signal copies the Inpod block s output to a bulfer before the contents of the subsystem are executed The other parameters can be used to explicitly spec y the input signal olimbutes
32. wert und dem der vorherigen Abtastung ergibt multipliziert mit dem Kehrwert der Abtastpe riode die Steigung Delay Abbildung 6 24 Derivation Subsystem Addierer mit Drei Eing ngen Die drei Zweige des PID Reglers werden mit dem 3xAdder Subsystem summiert In ihm werden einfach zwei Addierer hinter einander geschaltet Der letzte Addierer ent h lt ein Speicherglied wodurch die unter schiedlichen Signallaufzeiten der Eing nge ausgeglichen werden Das korrekte Ergebnis wird einen Takt verz gert ausgegeben In3 AddSub4 Abbildung 6 25 Subsytem Dreifach Addierer 84 6 FPGA Implementierung des Reglers Saturation Subsystem Constant Relational Constant Abbildung 6 26 Subsystem Saturation Das Saturation Subsystem ist eine Nachbildung des gleichnamigen Blocks aus dem Simulink Standard Blockset Innerhalb des Reglermodells wird dieses mehrfach eingesetzt Es sorgt daf r dass der Eingangswert auf einen definierten Wertebereich beschr nkt wird Die beiden Constant Blocks bilden das Minimum und Maximum des Wertebereichs Uber relationale Operatoren werden diese mit dem Eingangswert verglichen Deren Ausg nge wer den im Concat Block zusammengefiigt und dienen als Steuersignal eines Multiplexers Je nachdem ob sich der Wert innerhalb der Grenzen befindet oder nicht wird entweder die Eingangsleitung das Minimum oder Maximum zum Ausgang durchgeschaltet 85 6 FPGA Implementierung
33. z B Tempera tur Abstand oder Drehzahl sein Ausgangsgr e des Regelkreises ist die Regelgr e was als die zu regelnde Gr e zu interpretieren ist Zudem k nnen noch St rgr en auf unerw nschte Weise auf den Regelkreis einwirken Abbildung 3 1 zeigt die Grundstruktur eines Regelkrei ses z t w t e t y t Regelstrecke Abbildung 3 1 Grundstruktur eines Regelkreises Bezeichnungen w t F hrungsgr e Sollwert y t Regelgr e Istwert u t Stellgr e e t Regeldifferenz e t w t y t z t St rgr e 10 3 Der Regelkreis Die obige Darstellung gilt f r Regelkreise allgemein Es gibt auch Regelkreise mit mehreren Regelgr en die wenn sie miteinander im Zusammenhang stehen Mehrgr enregler ge nannt werden Im Rahmen der Diplomarbeit wird nur eine Eingr enregelung behandelt Die Funktionsweise eines Regelkreises ist folgende Zwischen dem vorgegebenen Sollwert und dem Istwert wird eine Differenz gebildet Diese Regeldifferenz liegt am Eingang des Reglers der daraus eine Stellgr e ermittelt die die Regeldifferenz verkleinern soll Die neue Stellgr e wiederum wirkt auf die Regelstrecke ein was eine nderung der Regelgr e also des Istwerts zur Folge hat Im optimalen Fall n hert sich der Istwert dem Sollwert schnell an bis er identisch ist und bleibt dort stabil Abbildung 3 1 ist eine vereinfachte Darstellung eines Regelkreises Tats chlich muss f
34. 0 to 29 variable AD CONV INT STD LOGIC variable AD CONV DONE INT STD LOGIC begin if CLK 0 and CLK event then AD CONV INT 0 AD CONV DONE INT 0 if RESET 1 then SPI CLOCK EN lt 0 count 0 elsif ADC CONV EN 1 then count lt count 1 case count is when 0 gt AD CONV INT when 1 SPI CLOCK EN when 5 to 34 gt when 35 SPI CLOCK EN when 36 gt AD CO when others gt end case else count 0 end if end if CONV DONE AD CONV DONE INT AD CONV lt AD CONV INT end process end ADC CONV RTL Nan il V_DONE_ 13 downto 0 13 downto 0 0 qus PI CLOCK EN ONV DONE rss TEMP count 5 SPI MISO lt 0 DATA A lt TEMP 0 to 13 DATA B TEMP 16 to 29 INT 1 count 0 111 Anhang D Code Listings Wait clk vhd library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL Uncomment the following library declaration if instantiating any Xilinx primitives in this code library UNISIM use UNISIM VComponents all entity wait clk is Port clk in STD LOGIC WAIT EN in STD LOGIC WAIT DONE out STD LOGIC end wait clk architecture Behavioral of wait clk is signal cnt integer range 0 to 128 begin process clk WAIT EN begin if clk event and clk 1 then WAIT DONE lt 0 TE WAIT EN 1 then ent lt cnt
35. 1 gt Data Store Write ral TO Ool Data Store Writel DWork P PID B serial IO 02 Data Store Write2 DWork I PID B serial IO 03 Data Store Write3 DWork D PID B serial IO o4 S Function xc167 adc wrapper Block lt S1 gt S Function ADC vStartConv while ADC_ubBusy 1 rtb_Sum3 PID_DWork Soll 0 1008 real_T PID_B SFunction 0 0029296875 xk F F X X DataTypeConversion Gain lt S3 gt ADC gt Sum lt S3 gt Subtract U 1 wandlung starten Warten bis AD Wandlung ausgef hrt PID B SFunction ADC uwReadConv amp 0x03ff Die untersten 10 Bit auslesen Sum S1 Sum3 incorporates lt S1 gt Data Type Conversion Product S3 Divide Sum lt S1 gt Subtract DataStoreRead lt S1 gt Data Store Read3 Constant lt S1 gt Constant 0 23 0 04 105 Anhang D Code Listings rt rt zt oXx 0X 0 amp 0 0X 0X Xo X X X X X GC cc PA PI Product lt S1 gt P incorporates DataStoreRead S1 Data Store Read b P rtb Sum3 PID DWork P DiscreteIntegrator lt S1 gt Discrete Time Integrator b DiscreteTimeIntegrator PID DWork DiscreteTimeIntegrator DSTATE Product lt S1 gt D incorporates DataStoreRead lt S1 gt Data Store Read2 b r64 temp27 rtb Sum3 PID DWork D S Function sfix
36. A da die Ankerquerschnittsflache in etwa der des Luftspalts entspricht ergibt sich 3 1 1 L n uyu A As UL us FAZU lanin A LAU Amin Die so errechnete Induktivit t wird f r die Berechung des elektrischen Kreises ben tigt F r die Magnetkraft wird nun noch die Ableitung der Induktivit t nach x dem Ankerweg ben tigt 3 12 a n uu A A H 1 dx CCE min h F x H Loss T x A LAY i eingesetzt in 3 6 1 nuu Ay A Cu 1 j 2 Clan 2 XM 1 jin OA LAS Amin Gleichung 3 2 l st sich dann so ausdr cken 1 nuu A Ay Cu 1 di 2 ymin XM Lu tA LAS m g 3 14 m X Amin Neben der oben ausgef hrten Herleitung ist dar ber hinaus auch der elektrische Kreis des Modells zu berechnen der ja urs chlich f r den Stromfluss in der Spule und somit das Mag netfeld ist Der Strom ist aber nicht konstant da der Quellspannung w hrend einer nderung des Magnetfelds eine selbstinduzierte Spannung entgegenwirkt Dies ist z B bei der Ande rung der angelegten Spannung der Fall wie dies beim Einschalten oder sp ter durch den Reg ler geschieht Zudem ist durch den beweglichen Anker auch die Induktivit t L der Spule nicht konstant sondern abh ngig von der momentanen Ankerposition 29 4 Modellbildung mit Matlab Simulink F r die selbstinduzierte Spannung gilt 3 15 u Zu ua Induktionsspannung der Spule 1V t Da die reale Spule einen o
37. A mit der gew nschten Logik Bis auf die serielle Schnittstelle und den AD Wandler mit dem zugeh rigen Vorverst rker die beide ber Serial Pheripheral Interface SPI angesprochen werden wird keine weitere externe Hardware des Entwickler Boards benutzt 19 4 Modellbildung mit Matlab Simulink 4 Modellbildung mit Matlab Simulink Die Simulation ist nach VDI Richtlinie 3633 wie folgt definiert Simulation ist das Nachbilden eines Systems mit seinen dynamischen Prozessen in einem experimentierf higen Modell um zu Erkenntnissen zu gelangen die auf die Wirklichkeit bertragbar sind 4 Mit dynamischen Prozessen sind Prozesse gemeint deren Ausgangsgr fe sich im zeitlichen Verlauf ndert Die Nachbildung solcher Prozesse wird als Modellbildung bezeichnet Diese kann theoretisch oder experimentell erfolgen Bei der theoretischen Modellbildung kann man dabei auf physikalische Gesetzm igkeiten zur ckgreifen Als Ergebnis der physikalischen Herleitung erh lt man wenn es sich um ein System mit R ckkopplung handelt Differentialgleichungen welche in Matlab Simulink modelliert wer den k nnen Durch Simulation des Modells k nnen die gewonnenen Resultate dann mit Mes sungen verglichen und bei ungen gender bereinstimmung nderungen am Modell vorgenommen werden Abbildung 3 1 zeigt den Arbeitsablauf der Modellbildung Differential gleichungen Modellierung d Ergebnis Modell anpassen Ja Abb
38. Abtastperiode erh lt man die durchschnittliche Steigung zwischen dem letzten und dem aktuellen Eingangswert Unit Delay Abbildung 6 9 Nachbildung Derivative Block Obwohl der Saturation Block keine speichernden Elemente enth lt wird er trotzdem nicht vom HDL Coder unterst tzt Der Nachbau Abbildung 6 10 erfolgt mit 2 Switch Bl cken die in Abh ngigkeit des Eingangswerts schalten Liegt dieser au erhalb des Wertebereichs wird die entsprechende Konstante durchgeschaltet 70 6 FPGA Implementierung des Reglers Out Switch1 Constant Abbildung 6 10 Nachbildung Saturation Block Auch der Division Block von Simulink wird nicht unterst tzt Dieser wird im Reglermodell bei der Umrechnung des Spannungswerts des AD Wandler in die Objektdistanz ben tigt Eine M glichkeit zur L sung des Problems w re es den Dividierer mit Grundelementen nachzubauen Die bei dieser Implementierung gew hlte Methode ist jedoch die Umrechnung ber eine Lookup Table durchzuf hren F r die Spannungen von 0 1V bis 3 3V liegen in 0 1V Schritten die jeweiligen Distanz am Ausgang vor Bei der Codegenerierung hat sich gezeigt dass die Lookup Table im VHDL Code keine Zwischenwerte interpoliert sondern bei der Umrechnung auf den n chst niederen Wert rundet Da die Messwerte im Bereich von 0 8V bis 2 6V liegen w ren nur 19 unterschiedliche Ausgangswerte m glich Dies sind zu wenige um eine pr zise Regelung durchzuf hren
39. C CONV EN lt 1 109 Anhang D Code Listings END IF WHEN Z3 gt NEXT STATE Z2 END CASE END IF END PROCESS process clk variable clkint STD LOGIC 0 begin if clk 1 and clk event then if ce 1 then clkint not clkint Clk2 lt clkint end if end if end process CONV1 ADC_CONV port map CLK2 RESET ADC_CONV_EN DATA_A DATA_B CONV_DONE AD_CONV SPI_MISO CONV SPI CLK WAT1 wait clk Port map clk2 WAIT EN WAIT DONE AMP1 ADC AMP PORT map CLK2 RESET ADC AMP EN AMP CS AMP SHDN AMP DONE SPI MOSI AMP SPI CLK end Behavioral 110 Anhang D Code Listings ADC CONV vhd library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL Uncomment the following library declaration if instantiating any Xilinx primitives in this code library UNISIM use UNISIM VComponents all entity ADC CONV is Port CLK in STD LOGIC RESET in STD LOGIC ADC CONV EN in STD LOGIC DATA A out STD LOGIC VECTOR DATA B out STD LOGIC VECTOR CONV DONE out STD LOGIC AD CONV out STD LOGIC SPI MISO in STD LOGIC SPI SCK out STD LOGIC end ADC CONV architecture ADC CONV RTL of ADC CONV is signal SPI CLOCK EN STD LOGIC signal COUNT integer range 0 to 36 begin SPI SCK lt CLK when SPI CLOCK EN 1 else process CLK variable TEMP STD LOGIC VECTOR
40. Coder Zusatzmodule FPGA Regler vhd library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL Uncomment the following library declaration any Xilinx primitives in this code library UNISIM use UNISIM VComponents all if instantiating entity FPGA Regler HDL CODER is port clk in std logic serial in in std logic gateway in3 in std logic vector 13 downto Spi miso in std logic ad conv out std logic amp cs out std logic amp shdn out std logic dac clr out std logic dac cs out std logic fpga init b out std logic pwm out out std logic Sf ce0 out std logic spi mosi out std logic Spi sck out std logic Spi ss b out std logic i end FPGA_Regler_HDL_CODER architecture rtl of FPGA_Regler_HDL_CODER is component ADC_OVER_SPI PORT clk in STD LOGIC System Clock 50 MHz ce in STD LOGIC RESET in STD LOGIC Reset all SPI Devices AMP CS out STD LOGIC AD Amp ChipSelect AMP SHDN out STD LOGIC AD Amp ShutDown SPI MOSI out STD LOGIC SPI FPGA out SPI MISO in STD LOGIC SPI FPGA in SPI SCK out STD LOGIC SPI FPGA clk DATA A out STD LOGIC VECTOR 13 downto 0 Output of ADC A DATA B out STD LOGIC VECTOR 13 downto 0 Output of ADC B AD CONV out STD LOGIC Trigger Output for ADC Conversion DAC CLR out STD LOGIC Reset DAC DAC CS out STD LOGIC ChipSelect Digital Anal
41. DER_PID_h_ File trailer for Real Time Workshop generated code Ef EOF 104 Anhang D Code Listings PID c Cane 0X 0X F F XX F X X X incl incl Bl Block states File PID c Real Time Workshop code Model version Real Time Workshop file Real Time Workshop file T c m C version Source code generated ude PID h ude PID private h generated for Simulink model PID 1 92 version 6 3 R14SP3 26 Jul 2005 generated on Sat Feb 10 17 14 46 2007 6 3 Aug 5 2005 on Sat Feb 10 17 14 47 2007 OCk signals auto storage BlockIO PID PID B D Work PID PID DWork External inputs ExternallInputs PID PID U External output ExternalOutputs PID PID Y Model step function void PID step void auto storage root inport signals with auto storage root outports fed by signals with auto storage local block i o variables real T rtb P real T rtb TSamp real T rtb_Suml real T rtb Sum3 real T real T rtb r64 temp27 rtb DiscreteTimeIntegrator S Function serial IO wrapper Block S1 serial IO U U U U DWork Soll PID B DataStoreWrite S DataStoreWrite S DataStoreWrite S se gt gt gt D_B serial_IO_ol param x D_B serial_IO_o2 p_faktor D_B serial_IO_o3 i_faktor D_B serial_IO_o4 d_faktor DataStoreWrite lt S
42. FACHHOCHSCHULE REGENSBURG UNIVERSITY OF APPLIED SCIENCES HOCHSCHULE F R TECHNIK WIRTSCHAFT SOZIALWESEN Fakult t Informatik Diplomarbeit Thema Codegenerierung mit Matlab Simulink f r Mikrocontrol ler und FPGAs Verfasser Martin Froschhammer Erstpr fer Prof Dr Richard Roth Zweitpr fer Prof Dr Hans J rgen Wagner Betreuung Prof Dr Richard Roth Ausgabe 15 09 2006 Abgabe 14 02 2007 Erkl rung 1 Mir ist bekannt dass die Diplomarbeit als Priifungsleistung in das Eigentum des Freistaats Bayern bergeht Hiermit erkl re ich mein Einverst ndnis dass die Fachhochschule Re gensburg diese Pr fungsleistung die Studenten der Fachhochschule Regensburg einsehen lassen darf und dass sie die Abschlussarbeit unter Nennung meines Namens als Urheber ver ffentlichen darf Ich erkl re hiermit dass ich diese Diplomarbeit selbst ndig verfasst noch nicht anderwei tig f r andere Pr fungszwecke vorgelegt keine anderen als die angegebenen Quellen und Hilfsmittel ben tzt sowie w rtliche und sinngem e Zitate als solche gekennzeichnet ha be Ort Datum Unterschrift Inhaltsverzeichnis Inhaltsverzeichnis Einleitung 2 berblick 2 1 Das Remote Labor 2 2 Codegenerierung mit Matlab Simulink 3 Der Regelkreis 3 1 Aufbau eines Regelkreises 32 Komponenten des Regelkreises 3 2 1 Der Hubmagnet 3 2 2 Infrarot Distanzsensor 3 2 3 PWM Verst rker 3 2 4 Keil MCBXC167 Entwickler Board 3 2 5 Xilinx Spa
43. Gain Integrator1 Integrator2 Ankergeschw 3 Ankerpos Abbildung 4 7 Modellauszug Kr ftegleichung Die Ausgabe dieses Blocks ist somit mx Im folgenden Gain Block wird durch die konstante Masse des Ankers dividiert Die so erhaltene Ankerbeschleunigung wird nun zweimal integ riert Man erh lt Ankergeschwindigkeit und Ankerposition Im zweiten Integrationsblock wird zudem der Initialwert der Ankerposition x Om gesetzt L Mit der bekannten Ankerposition und Geschwindigkeit k nnen nun auch L x und m be x rechnet werden F r beide wird jeweils ein fcn Block generiert Abbildung 4 8 dL dx Abbildung 4 8 Modellauszug fcn Blocks F r un wird Gleichung 3 12 die ja wiederum Teil von Gleichung I ist verwendet F r Ps fcn Block L x kommt Gleichung II zum Einsatz In den beiden fcn Blocks muss lediglich die Variable x des Ausdrucks durch u ersetzt werden da das Eingangssignal so definiert ist 34 4 Modellbildung mit Matlab Simulink FM 0 5 u 1 2 u 2 Magnetkraft Gewichtskraft Abbildung 4 9 Modellauszug Magnetkraft In einem weiteren fcn Block kann dann mithilfe von und i aus dem elektrischen Kreis die x Magnetkraft berechnet werden Abbildung 4 9 Um jedoch beide Signale als Eingang nutzen zu k nnen ist ein Multiplexer vorgeschaltet Die Magnetkraft liegt nun wieder am Eingang des Summationsgliedes f r die Kr ftegleichung das zu Beginn erw hnt wurde an Die Ab h ngig
44. Generate HDL and display generated model Restore Factory Defaults Run Compatibility Checker Generate Abbildung 6 13 HDL Coder Konfigurationsdialog 23 6 FPGA Implementierung des Reglers Generierungsergebnis Das Ergebnis der Codegenerierung sind mehrere VHDL Dateien Aus jedem Subsystem des Modells wir eine Datei generiert Alle erzeugten Dateien werden als Komponenten in das Modul das den Namen des Modells tr gt eingef gt In den VHDL Dateien werden nach der Schnittstellenbeschreibung entity alle Signale defi niert Sie entsprechen den Signalleitungen im Modell oder Subsystem und tragen den Namen der Modellbl cke aus denen sie hervorgehen Konvertierungen und Umwandlungsfunktionen stammen aus den VHDL Standard Bibliotheken IEEE std_logic_1164 und IEEE numeric_std Der Gro teil des Modells ist in kombinatorischer Logik umgesetzt Die Anzahl der erreichten Schaltungsstufen bei einem komplexen Modell wie dem des Reglers ist daher erheblich Speicher oder Verz gerungsglieder werden in sequentiellen VHDL Code umgewandelt Das Beispiel zeigt das Verz gerungsglied aus dem nachgebildeten Derivative Block Unit Delayl process PROCESS clk reset BEGIN IF reset 1 THEN Unit Delayl outl lt OTHERS gt 0 ELSIF clk event AND clk 1 THEN IF enb 1 THEN Unit Delayl outl lt Add4_outl END IF END IF END PROCESS Unit Delayl process
45. Induktivit t L1 stellen das Ersatzschaltbild des Hubmagneten dar Parallel dazu ist eine Freilaufdiode geschalten die die Selbstinduktionsspannungen bei den Schaltvorg ngen der Pulsweitenmodulation kurzschlie t In Reihe zur Last befindet sich ein MOSFET Metal Oxide Semiconductor Feld Effekt Transistor Dieser f hrt die eigentliche Pulsweitenmodulation im Leistungsteil der Schaltung durch Im Gegensatz zu einem Bi Polar Transistor ist dieser Transistortyp nicht Strom sondern Spannungsgesteuert Im voll durch geschalteten Zustand betr gt der Widerstand des verwendeten Typen BUZ71 nur 0 14 Ohm weshalb er sich hervorragend als Leistungsschalter eignet Um den MOSFET optimal anzusteuern werden 2 Bipolar Transistoren Q1 und Q2 vorgeschal tet Diese arbeiten als Schalter und ziehen das Gate des MOSFET entweder auf 12V wenn Q1 durchgeschaltet ist oder auf OV wenn Q2 durchgeschaltet ist Liegt kein Signal oder 0V am PWM Eingang an so ist standardm ig Q2 durchgeschaltet Das Gate des MOSFET liegt an OV wodurch er sperrt Zur Pegelanpassung kommt ein weiterer Transistor Q4 zum Einsatz Er dient zum einen dazu dass die Schaltung sowohl mit dem 5V Signal des XC167 Mikrocontroller als auch mit dem 3 3V Pegel des Spartan 3E angesteuert werden kann Zum anderen sorgt er daf r dass die Schaltung nicht invertiert angesteuert werden muss Liegt ein High Pegel am PWM Eingang schaltet Q4 durch Der L ngszweig wird auf OV gezogen und QI schaltet ebenfall
46. L 0 5000U CCU6 vEnableShadowTransfer CCU6 TIMER 12 Sendfunction EOF xc167_pwm tlc Function BlockTypeSetup Function Start Function Outputs Function Terminate 2 gt 98 Anhang D Code Listings serial IO tlc oe oe File serial IO tlc Created Mon Jan 1 01 49 52 2007 oe oe oe oe oe oe Description Real Time Workshop wrapper functions interface generated for S function serial IO c oe oe oe oe oe oe oe oe File generated by S function Builder Block oe oe oe oe For more information on using the Target Language with the Real Time Workshop see the Target Language Compiler manual under Real Time Workshop in the Inlining S Functions chapter under the section and subsection Writing Block Target Files to Inline S Functions Function Based or Wrappered Code oe o o o oe oe o9 o ge oe oe oe H mplements serial IO C Function BlockTypeSetup oe oe oe oe oe oe Purpose Set up external references for wrapper functions in the generated code oe oe oe oe ge oe oe function BlockTypeSetup block system Ou
47. S12XDT512 Das Herz des DEMO9S12XDT512 Entwicklerboards bildet der 16 Bit Mikrocontroller MC9S12XDT512 von Freescale Eine Besonderheit des MC9S12XDT512 ist der XGATE Koprozessor der separat program miert fiir den Datentransfer zwischen der Peripherie sorgt ohne den Prozessor zu belasten Laut eigenen Angaben von Freescale handelt es sich beim MC9S12XDT512 um einen AII round Mikrocontroller Er erfreut sich aber im Automotive Umfeld nicht zuletzt wegen des geringen Preises der niedrigen Leistungsaufnahme und den CAN und LIN Schnittstellen groDer Beliebtheit Als Entwicklungsumgebung dient das Programm CodeWarrior 4 1 f r HCS12X 2 berblick Technische Daten Mikrocontroller Speicher Schnittstellten Peripherie Keil MCBX167 NET Freescale MC9S12XDT512 mit X GATE Koprozessor 80MHz 512 KB Flash EEPROM 4KB EEPROM 32 KB SRAM 59 O Ports SCI und SPI Kommunikationsports Key Wake up Port 2 AD Wandler mit 8 und 16 Kan len LIN und CAN 2 0 Schnittstelle 4 Dip Schalter 3 Drucktaster 4 LEDs Lichtsensor Potentiometer USB Anschluss zum Pro grammieren und Debuggen Auf dem MCBX167 NET Entwicklerboard befindet sich der XC167 CI 16 Bit Mikrocontrol ler von Infineon Dabei handelt es sich um eine Weiterentwicklung der verbreiteten C16x Reihe des gleichen Herstellters Die wesentlichen Neuerungen dieses Mikrocontrollers sind die h here Taktrate beschleunigte mathematische Operationen Multiply and Accumulate
48. TD LOGIC D CONV out STD LOGIC PI MISO in STD LOGIC PI SCK out STD LOGIC 108 Anhang D Code Listings signal AMP DONE STD LOGIC TYPE STATE TYPE IS 20 21 22 23 SIGNAL STATE NEXT STATE STATE TYPE signal clk2 STD logic signal wait done std logic signal TMP STD LOGIC VECTOR 1 downto 0 begin This are the chip select ports for the other spi devices on the Spartan 3E board Setting CS High for disable them SPI SS B lt 1 SF CEO 1 FPGA INIT B lt 1 DAC CLR lt 1 DAC CS lt 1 TMP lt ADC AMP EN amp ADC CONV EN with TMP select SPI SCK lt AMP SPI CLK when 10 CONV SPI CLK when 01 O when others Moore FSM SPI_SCK lt AMP_SPI_CLK PROCESS clk2 NEXT STATE BEGIN IF CLK2 1 AND CLK2 event THEN STATE NEXT STATE END IF END PROCESS PROCESS STATE WAIT DONE AMP DONE RESET CONV DONE BEGIN DC AMP EN lt 0 DC CONV EN lt 0 D zZ EXT_STATE lt Z0 WAIT EN lt 0 IF RESET 1 THEN NEXT STATE 20 ELSE CASE STATE IS WHEN ZO gt IF WAIT DONE 1 THEN NEXT STATE Z21 ELSE NEXT STATE 20 WAIT EN lt 1 end if WHEN Z1 gt IF AMP DONE 1 THEN NEXT STATE Z22 ELSE NEXT STATE 21 END IF WHEN Z2 gt ADC AMP EN lt 1 NEXT STATE 22 WHEN 22 gt IF CONV DONE 1 THEN ELSE NEXT STATE 23 NEXT STATE 22 AD
49. aben P I und D zum Ausdruck kommt Der P Zweig bildet dabei den Proportionalanteil des Stellsignals Die Regeldifferenz wird mit einem konstanten Faktor K multipliziert I ist der Integralanteil des Stellsignals Dabei wird die Regeldifferenz ber die Zeit Integriert und mit dem Faktor K multipliziert Wird eine Regeldifferenz durch den Proportionalanteil nicht vollst ndig ausgeglichen verst rkt sich der Einfluss des integralen Regelanteils mit der Zeit und kompensiert dies D steht f r den Differential Anteil des Reglers Er wird bei nderung der Regeldifferenz wirksam und sorgt f r ein schnelleres Reagieren des Reglers auf nderung der Regelgr e d mpft aber auch die anderen Regelanteile Ein D Regler alleine ist nutzlos da er von der nderung der Regeldifferenz und nicht von der Regeldifferenz selbst abh ngig ist 39 4 Modellbildung mit Matlab Simulink Vor dem Ausgang des Reglers ist ein Saturation Block geschaltet Dieser beschr nkt das Stellsignal auf einen g ltigen Wert In diesem Fall sind dies 12 Volt Abbildung 4 15 zeigt die Sprungantwort der einzelnen Regelanteile b c und d nach einer sprunghaften Anderung der Regeldifferenz a c I Regler d D Regler Abbildung 4 15 Sprungantwort der einzelnen Regleranteile Die drei Anteile werden zum Stellsignal summiert Abbildung 4 16 zeigt die Wirkung eines Sprungs der Regelgr e auf einen analogen PID Regler Wie man an der Sprungantwort erkenn
50. aktor von k 0 7 ergibt sich der Kurvenverlauf in Abbildung 4 13 Spannung V O DD WPA DN O O O Messung gt Modell 0 125 2 5 3 75 5 625 7 5 8 75 Abstand cm Abbildung 4 13 Vergleich Modell mit Korrekturfaktor Der berechnete Wert scheint im Vergleich zum Gemessenen flacher zu verlaufen Die Genau igkeit des Simulationsmodells sollte jedoch fiir den Entwurf eines Reglers geniigen 38 4 Modellbildung mit Matlab Simulink 4 3 Simulink Reglermodell Im letzten Unterabschnitt wurde die Modellierung der Regelstrecke erl utert Um einen ge schlossenen Regelkreis zu erhalten muss das Modell mit einem Regler erg nzt werden Eingang des Reglers ist die Hubh he x An die Stelle der Sprungfunktion als Spannungsquelle des Modells tritt der Ausgang des Reglers 4 3 1 Modell eines stetigen PID Reglers Ausgangspunkt des Reglermodells ist die Nachbildung eines stetigen PID Reglers Abbildung 4 14 Dieser kann f r viele Regelstrecken eingesetzt werden und zeichnet sich durch ein schnelles Anfahren des Sollwerts mit anschlie endem pr zisen Ausregeln aus 425 Pi f Integrator D Derivative Abbildung 4 14 Modell eines stetigen PID Reglers Den Eingang des Reglers bildet ein Subtraktionsglied das die Regeldifferenz aus Soll und Istwert bildet Der Regler selbst setzt sich aus drei parallel geschalteten Einzelreglern zusam men was durch die drei Buchst
51. ateway In Gateway Out Abbildung 6 15 Gateway Bl cke Das Modell des gesamten Reglers aus System Generator Bausteinen ist Abbildung 6 15 zu sehen Die einzelnen Elemente und die verwendeten Subsysteme werden im Folgenden ange fangen mit dem Reglereingang detailliert beschrieben 74 6 FPGA Implementierung des Reglers 1 45 e Constant3 Tg Step 1044998 1689453125 Constant Int Out1 Serisl in Int Out Z Int Out i SPI ADC ADC gt U m System Resource Generator Estimator VALUE ewu our ox L3 A CMult i gt a PWM_EN PWM_OUT Soie Constant4 Black Box CMuli2 Positive Offset Integrator Saturation PWM_VALUE Constant Ssturstion CMulte Registers CMult3 Derivation b EN enable2 1 a Counter amp Constant Relstionsl1 Constants Abbildung 6 16 System Generator Modell des Reglers 78 6 FPGA Implementierung des Reglers 6 3 1 1 Reglereingang Abbildung 6 17 zeigt den Eingangsabschnitt des FPGA Reglers Dieser ist im Gesamtmodell des Reglers Abbildung 6 15 oben links zu finden In der Simulation ist das Eingangssignal ein konstanter Wert wie er vom Sensor stammen k nnte Durch Addition einer Sprungfunkti on kann das Verhalten des Reglers bei Spannungs nderung betrachtet werden Ind Qut Ind Outi Int Cutt Constants SPI ADpC ADC gt U lx Abbildung 6 17 Reglereingang Der Eingangsteil des Reglers besteht aus drei Subsyste
52. b dieser Bl cke wird die Zuweisungen der Ein und Ausg nge zu den entsprechenden physikalischen Anschl ssen des FPGAs vorgenommen Da die Black Box des AD Wandlers nur Bitvektoren als Ausgang liefert wird ein Rein terpret Block zwischengeschaltet so dass die Daten des Analog Digital Wandlers am Aus gang DATA A als 14 Bit Zweierkomplement interpretiert werden Subsystem ADC gt U Berechnung der Spannung aus dem Wert des AD Wandlers 1 649993896484375 Constant5 Abbildung 6 19 Subsystem ADC gt U Am Eingang dieses Subsystems liegt der 14 Bit Wert des ADWandlers in Zweierkomple mentdarstellung Bei einer Referenzspannung von 3 3V kann der AD Wandler Werte von 1 65V 1 25V darstellen 1 65 V am Eingang entspricht dabei dem Wert 0 am Ausgang des Wandlers Das Spartan 3E Benutzerhandbuch 7 liefert folgende Gleichung f r diesen Zusammenhang D 13 0 Wert am Ausgang des AD Wandlers 8192 GAIN Vorverstarkung Vw Eingangsspannung V D 13 0 GAIN v 65V Da f r den Infrarot Distanzsensor nur der Zusammenhang zwischen Spannung und Entfer nung bekannt ist wird die Gleichung nach V umgestellt _ D 13 0 125V 8192 ys 1 65V Die Darstellung der Gleichung als Modell zeigt Abbildung 6 19 Um unn tige Berechungen w hrend der Laufzeit zu vermeiden sind alle Multiplikatoren und Divisoren mit konstanten Werten vorberechnet und in einem CMult Block zusammengefasst 80 6 FPGA Implementierung des Re
53. ch nicht berechnet jedoch ergibt sich diese automatisch bei der Modellbildung wie in Abschnitt 3 2 3 gezeigt wird Die Gleichungen 3 11 3 14 und 3 17 gen gen um das Simulationsmodell des Hubmagneten in Simulink zu modellieren 4 2 2 Darstellung in Simulink Um die im vorigem Abschnitt aufgestellten Gleichungen als simulierbaren Wirkplan in Si mulink zu modellieren hat es sich als vorteilhaft erwiesen die Differenzialgleichungen so umzustellen dass in den einzelnen Summentermen der Gleichungen nur immer eine Ablei tung einer Unbekannten enthalten ist Diese Vorgehensweise hat schon im Vorfeld positive Auswirkungen auf die bersichtlichkeit des sp teren Modells Hier noch ein mal die drei f r das Modell wichtigen Gleichungen Sie entsprechen bereits in der geforderten Form D FRE SE GE n2ugu A A Cu 1 P m g 2 Lymn hu Lus XA LAS aD L NUM A Ag L x Cimin h X B lamin FDA Ap di dL IDu R i L x x II u R ei L x X E Xi Folgendes Simulink Modell Abbildung 4 6 Kann daraus erstellt werden wobei es sich nicht um die einzig m gliche Darstellung handelt Das Modell entstand in Anlehnung an ein Mo dell eines Hufeisenmagneten aus 4 Diese sind vergleichbar da f r beide Modelle das Mag netfeld im Luftspalt als homogen angenommen wird 3l 4 Modellbildung mit Matlab Simulink Stromst rke u LT Product1 Integrator3 Magnetkraft 0 5 u 1 42 u 2
54. cher Weise auch im Simulink Standard Blockset vorliegt und bereits in Abschnitt 4 1 erl u tert wurde ist es f r den Nachbau des Reglers von Vorteil das Xilinx Blockset wie folgt ein zuteilen Systemblocks Sie dienen zur Verwaltung des Modells an sich und werden ben tigt um HDL Code zu generieren Modelle zu analysieren und Schnittsellen zu andern nicht auf dem System Generator beruhenden Modellteilen zu realisieren Elemente die in hnlicher Form auch im Simulink Standard Blockset zur Verf gung stehen Dabei handelt es sich zumeist um elementare Komponenten aus dem Bereich mathematischer logischer und relationaler Operatoren Viele elementare Bestandteile sind nicht im System Generator enthalten Meist ist dies der Fall wenn speichernde Komponenten enthalten sind die von der jeweiligen Bezugszeit des Modells abh n gen Diese m ssen dann mit elementaren Bl cken und Registern nachgebildet werden 76 6 FPGA Implementierung des Reglers Bl cke die auf spezielle Hardware des FPGAs zur ckgreifen wie etwa Dual Port RAM Shift Register usw Dar ber hinaus gibt es noch Bl cke die speziell f r die Digitale Signalverarbeitung bestimmt sind Nicht f r alle Elemente der Simulink Standard Bibliothek gibt es auch ein quivalent im Sys tem Generator Speziell auf das Reglermodell bezogen sind die Bl cke Integrator und Deriva tive sowie der Saturation Block im System Generator nicht verf gbar Der Nachbau dieser Kompone
55. chten Baudrate entsprechen erzeugt Diese werden vom clkDiv Modul geliefert Wurden Daten vom kcuart Modul empfangen wird dies am data strob Ausgang des Moduls angezeigt Die Daten werden dann an den data Ausgang des eigenen Moduls wei tergegeben wenn die Parit tspr fung erfolgreich war Die Parit tspr fung erfolgt mittels XOR auf die empfangenen Datenbits und Vergleich mit dem h chstwertigen Bit am data out Ausgang des kcuart Moduls 67 6 FPGA Implementierung des Reglers 6 2 HDL Coder kompatibles Reglermodell Die erste Implementierung des Reglermodells auf dem Xilinx FPGA erfolgt unter Verwen dung des HDL Coders Dieser erweitert Matlab Simulink um die F higkeit aus Modellen syn thetisierbaren VHDL oder Verilog Code zu generieren Die Verwendung des HDL Coders ist allerdings mit Einschr nkungen der Blockvielfalt von Simulink verbunden weshalb eine Modellanpassung erfolgen muss Anders als beim System Generator kann mit dem HDL Coder kein externer VHDL Code eingebunden werden Ist dies gew nscht muss dies nach der Codegenerierung manuell erfol gen 6 2 1 Anpassung des Reglermodells Modelle aus denen mit dem HDL Coder Code generiert werden soll m ssen einigen Kon ventionen entsprechen So muss es sich um ein diskretes Modell handeln Alle im Modell verwendeten Elemente m ssen mit Fixed Point Datentypen arbeiten Nicht alle Bl cke aus der Simulink Standardbibliothek werden unterst tzt deshalb m ssen nicht u
56. den 8l 6 FPGA Implementierung des Reglers Die Register bernehmen die am Eingang liegenden Werte taktsynchron wenn l am Enable Eingang anliegt Diese Freigabe wird ber einen Vergleichsoperator realisiert der immer dann wenn ein Z hler der an einem Eingang des Relationalen Operators anliegt mit dem konstanten Wert der am andren Eingang anliegt bereinstimmt So l sst sich der zeitli che Ablauf gezielt steuern Am Ausgang des Subsystems werden von der ermittelten Distanz noch 0 04 m subtrahiert Dies ist der Abstand des Ankers vom Sensor wenn sich dieser am unteren Anschlag befindet Subsystem Serial in Gateway In Constant RS232 1 Rx Convert AddSub Saturation Constant Abbildung 6 21 Subsystem Serial in Der Messwerteingang ist jedoch nicht der Einzige des Reglers Im Serial in Subsystem ist das VHDL Modul f r die serielle Schnittstelle die den Sollwert eingang des Reglers bildet eingebettet Das Black Box Element RS232 1 Rx enth lt dieses Treffen Daten ein wird dies ber den new data Ausgang signalisiert Die Daten werden in ein Register geschrieben Da als serielle Eingabe die ASCII Zeichen von 0 bis 9 festgelegt wurden erh lt man durch Subtraktion von 48 den Wert in Zentimeter Werte die nicht im Bereich von 0 bis 9 liegen werden mit dem Saturation Block zum n chst g ltigen Wert gerundet 82 6 FPGA Implementierung des Reglers 6 3 1 2 PID Regler 3x Adder CMul
57. des Reglers Anti Wind Up Algorithmus Registers CMult2 Relstionsl2 Constant2 Abbildung 6 27 Anti Wind Up Subsystem Wie bei allen digitalen Reglern die ein Integrationsglied enthalten ist es auch hier notwen dig den maximalen Integrationsanteil zu beschr nken Eine R ckkopplung muss geschaffen werden Dazu werden die Werte vor und nach dem Saturation Subsystem voneinander abgezogen Die Differenz wird mit einer Abtastperiode verz get vom Eingangswert des Integrator Subsytem subtrahiert Dies sorgt daf r dass der gespeicherte Wert des Integrators innerhalb definierter Grenzen bleibt Synchronisation Counter enable enable Constanti Relational1 Constant5 Abbildung 6 28 Synchronisation Die Synchronisation der Reglerschaltung erfolgt hnlich wie im U gt x Subsystem mit durch einen Z hler freigeschaltete Register Der Z hler ist als Aufw rtsz hler konfiguriert Beim Erreichen des maximalen Z hlerwerts springt dieser auf 0 zur ck und beginnt erneut Der maximale Z hlerwert ist ma gebend f r die Abtastzeit des Reglers Auch in diesem Fall dient die Abtastzeit des Sensors von 38 ms als Vorgabe f r den Regler Bei einem Taktzyklus von 20 ns entspricht dies 1900000 Takten Bei einem Z hlerstand von 60 wird der aktuelle Wert der Regeldifferenz in das Eingangsre gister des Reglers bernommen und das Stellsignal wird erneut berechnet Beim Z hlerstand 70 liegt das Ergebnis des Stellwerts
58. die von der S Function API festgelegt sind Diese werden von der Simulationsumgebung zu unterschiedlichen Zeitpunkten aufgerufen Wichtige Funktionen f r die Einbettung von Hardwareschnittstellen sind hierbei mdlIntitialSizes Diese Funktion wird w hrend der Initialisierung des Modells auf gerufen Es werden die Blockparameter sowie die Ein und Ausg nge des Blocks festgelegt mdlInitializeSampleTimes Legt die Abtastzeit des Blocks fest mdlOutputs Der Aufruf dieser Funktion erfolgt in jedem Simulationsschritt Hier wird der Blockausgang berechnet Es kann beispielsweise das bertragungsverhal ten der Hardwarekomponente die durch diesen S Funktion Block repr sentiert wird nachgebildet werden mdlTerminate Verhalten des Blocks am Simulationsende F r den hardwarespezifischen Code der den S Function Block des Modells nach der Code generierung ersetzt muss eine tlc Datei erzeugt werden In eine tlc Datei kann parametri sierbarer C Code eingebettet werden Wie schon die C Datei enth lt auch die tlc Datei Funktionen Diese Funktionen geben aber nicht vor wann der Funktionsinhalt ausgef hrt wird sondern an welcher Stelle im generierten Programmcode der Inhalt der Funktionsrumpfs platziert wird 53 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller tlc Dateien enthalten folgende Funktionen BlockTypeSetup Enth lt Pr prozessoranweisungen oder Makros Start
59. e Reiter des Dialogfelds lassen sich Ein und Ausg nge des Blocks festlegen und das gew nschte Simulationsverhalten als C Code formulieren F r die tlc Datei l sst sich ledig lich bestimmen welche Funktionsr mpfe erzeugt werden sollen Mit Hilfe der Generate Schaltfl che werden die n tigen Dateien erzeugt und der C Quellcode in eine mex32 Datei bersetzt die von der Simulationsumgebung zur Modellberechnung verwendet wird Im Folgenden werden die einzelnen Schnittstellen f r die Reglerimplementierung auf dem Infineon XC167 Mikrocontroller und die dazu notwendigen S Funktionbl cke kurz erl utert Die zugeh rigen tlc Dateien sind im Anhang D1 zu finden 54 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller 5 3 1 Schnittstelle zum AD Wandler Der S Function Block f r den AD Wandler enth lt zwei Eing nge Zum einen den Messeingang zum anderen den Wert f r die Referenzspannung ADC auf die sich der AD Wandler bezieht Das Simulationsverhalten wird in der Funktion mdlOutputs durch folgenden C Ausdurck beschrieben y0 0 u0 0 pow 2 10 u1 0 u0 und ul sind die Variablen f r den Blockeingang y f r den Blockausgang In diesem Fall wird der Messwert mit Aufl sung des AD Wandlers multipliziert und durch die Referenzspannung dividiert Der so berechnete Wert entspricht dem den der AD Wandler des Mikrocontrollers bei gleicher Eingangsspannung liefert Die tlc Datei f r AD Wandler
60. ecke weiterhin stetig bleibt ist ein Rate Transition Block am Ein gang des Reglers erforderlich Wie bereits beschrieben wurden f r die dynamischen Elemente des Reglers Blocks aus der Continuous Kategorie der Simulink Bibliothek verwendet Diese m ssen durch ihre Pedanten aus der Discrete Kategorie ersetzt werden F r das Reglermodell sind das der Integrator Block aus dem I Zweig des Reglers und Derivative Block aus dem D Zweig In den Eigen schaftsdialogen dieser Blocks lassen sich die Abtastzeiten einstellen 4 3 4 Anti Wind Up Algorithmus Ein wichtiger Bestandteil der bei digitalen Reglern mit Integralem Anteil nicht fehlen darf ist ein so genannter Anti Wind Up Algorithmus Im Gegensatz zu analogen Reglern die durch ihre Realisierung mit elektronischen Bausteinen bereits technisch bedingte Grenzen f r ihren Ausgangswert haben besteht innerhalb von Digitalreglern kein direkter Zusammenhang zwi schen numerisch ermittelten Stellsignal und dem tats chlich an der Reglerstrecke anliegenden Stellwert Diese Fehlende R ckkopplung kann nicht einfach durch Beschr nkung des Regler ausgangs kompensiert werden Dies wird deutlich wenn man das interne Verhalten des Reglers betrachtet im Falle dass der Regler die Regeldifferenz nicht ausgleichen kann Das ist beispielsweise m glich wenn die Regelstrecke blockiert ist oder die n tige Hilfsenergie fehlt 44 4 Modellbildung mit Matlab Simulink Setzt man eine solche Situation
61. eine Variable zugewiesen Bei den beiden folgenden Aufrufen werden Funktionen angesprochen die vom DAvE Programmgrundger st bereitgestellt werden Die erste Funktion l dt den Wert in ein Register des PWM Moduls die zweite sorgt f r die bernahme in den Z hler des PVM Moduls 5 3 3 Serielle Schnittstelle Der S Function Block f r die serielle Schnittstelle hat keine Ein g nge In der zugeh rigen C Datei werden den Ausg ngen ledig lich Default Werte zugewiesen Data Store Write Data Store Write1 sollwert 0 0 045 p_faktor 0 150 0 serial IO Data Store i faktor 0 428 0 nat d faktor 0 12 6 Data Store Write3 Anders als bei den anderen S Functions Bl cken spricht dieser nicht direkt die Hardware an Der serielle Empfang verl uft autonom Der Nachrichten Parser wird bereits in der Interrupt Service Routine der seriellen Schnittstelle ausgef hrt Die empfangenen Reglerparameter werden in globalen Variablen hinterlegt Die einzige Auf gabe die in der tlc Datei erf llt werden muss ist die bernahme dieser Variablen assign sl Soll LibBlockOutputSignal 0 0 assign sl P LibBlockOutputSignal 1 0 assign sl I LibBlockOutputSignal 2 0 assign sl D LibBlockOutputSignal 3 0 sl Soll param x sl P p faktor sl I i faktor sl D d faktor Mit der seriellen Schnittstelle ist die Hardwareanb
62. en kann findet man alle drei Regleranteile aus Abbil dung 4 15 summiert wieder Ssturation Scope D Derivative Abbildung 4 16 Modell eines Analog PID Reglers 40 4 Modellbildung mit Matlab Simulink Der Istwert am Reglereingang liegt jedoch nicht als Hubh he in cm sonder als Spannungs wert des Sensors vor Das bertragungsverhalten des Sensors muss daher ins Modell aufge nommen werden Aus Abschnitt 3 2 2 ist folgender gen herter Zusammenhang f r die Ermitt lung der Distanz in Abh ngigkeit von der Ausgangsspannung des Sensors bekannt Diese Formel l sst sich problemlos in Simulink nachbilden Abbildung 4 17 Sie wird zu sammengefasst als Subsystem in die Signalleitung des Ist Werts geschalten Subtract1 Constant1 Abbildung 4 17 Subsystem U gt x Der minimale Abstand zwischen Sensor und Messfl che liegt bei 40 mm Durch Addition dieses Wertes zur Ankerposition x wird diese Eigenschaft ins Modell bernommen Inner halb des Reglers wird der Wert wieder subtrahiert Auch das Stellsignal am Reglerausgang ist kein Spannungswert sondern ein PWM Signal dessen Pulsweite proportional zur Spannung am Hubmagneten ist Wie im Abschnitt f r die Hardwareimplementierung noch festgelegt wird wird das Verh ltnis der Pulsweite im Ver gleich zu Gesamtperiodendauer als Ganzzahlwert von 0 bis 5000 beim Mikrocontroller und von 0 bis 10000 beim FPGA dargestellt bertragen auf die Stellgr e bedeutet d
63. en notwendig sind da es sich um ein labiles Gleichgewicht handelt 13 3 Der Regelkreis 3 2 2 Infrarot Distanzsensor Zur Messung der momentanen Hubh he des Ankers kommt ein Infrarot Distanzsensor zum Einsatz Das Funktionsprinzip besteht darin das ein Infrarot LED einen Strahl zu dem vor ihm stehenden Objekt sendet Dieses reflektiert ihn und trifft zur ck beim Sensor auf einen Position Sensetive Detector kurz PSD In Abh ngigkeit von der Entfernung des Objekts ndert sich der Auftreffpunkt im PSD Ab bildung 3 6 Dieser und die Auswertelektronik wandeln die Position des ankommenden Strahls in einen analogen Spannungswert um Diese Art der Entfernungsmessung ist weitge hend unabh ngig von den Reflektionseigenschaften und der Farbe des Objekts Analogausgang elektronik Objekt Infrarot Distanzsensor Abbildung 3 6 Funktionsprinzip eines Infrarot Distanzsensors Im Versuchsaufbau wird der GP2D120 Infrarot Distanzsensor der Firma SHARP verwendet Abbildung 3 7 der senkrecht zur am Anker befestigten Scheibe steht ok Abbildung 3 7 SHARP GP2D120 2 Es handelt sich dabei um einen Typen der f r den Einsatz im Nahbereich 4 30 cm konzi piert wurde Der Messwert liegt am Ausgang des IR Sensors als analoge Spannung vor Der Messvorgang dauert 38 2 ms 9 6 ms und liegt 5 ms sp ter als Spannungswert am Ausgang des IR Sensors an Dieser wird solange gehalten bis ein neuer Messwert ermittelt wurde Ab bild
64. erden 6 1 VHDL Schnittstellenmodule Im Laufe der Diplomarbeit hat sich herausgestellt dass sich f r bit und zyklusgenaue Aufga ben die Umsetzung mittels g ngiger Hardwarebeschreibungssprachen besser eignet als die im Modell Aus diesem Grund wurden f r die Ansteuerung der Peripherie des Spartan 3E Boards sowie f r alle anderen Schnittstellen des Reglermodells nach au en VHDL Module entwickelt Dies sind Module f r den Pulsweitenmodulator den Analog Digital Wandler mit Vorverst r ker und die serielle Schnittstelle Die gleichen Module werden sowohl f r die HDL Coder Implementierung als auch f r die des System Generators verwendet Wie im Abschnitt 6 3 noch gezeigt wird erfolgt die Einbettung der VHDL Module in das System Generator Modell mit Black Box Elementen Dabei werden folgende Forderungen an VHDL Module gestellt In der Schnittstellenbeschreibung Entity auf der h chsten Ebene d rfen nur die Typen std_logic und std logic vector vorkommen Wird das Modul durch den System takt angesteuert m ssen in der Schnittstelle zwei Eing nge existieren die den Teilstring clk und ce enthalten Ersterer ist dabei der Systemtakt w hrend der Zweite diesen f r das Mo dul freigibt Die beiden Eing nge m ssen paarweise auftreten 62 6 FPGA Implementierung des Reglers 6 1 1 Pulsweitenmodulator Wie bei der Mikrocontroller Implementierung steuert auch das FPGA den Hubmagneten mit tels Pulsweitenmodulat
65. erpolation HDL Coder konformes Reglermodell HDL Coder Konfigurationsdialog Einbettung des Regler Moduls Gateway Bl cke System Generator Modell des Reglers Reglereingang SPI_ADC Subsystem Subsystem ADC gt U Subsystem U gt x Subsystem Serial_in System Generator PID Reglermodell Integrator Subsystem Derivation Subsystem Subsytem Dreifach Addierer Subsystem Saturation Anti Wind Up Subsystem Synchronisation Reglerausgang System Generator Block System Generator Konfiguration 95 Anhang C Abk rzungsverzeichnis Anhang C Abk rzungsverzeichnis ADC ADU API ASC ASIC CAN CLB COM CPLD DAU DAvE EEPROM FPGA GPIO GPT HDL IDE IOB IR ISR LED LIN MAC MDA MOSFET PID PWM RAM RS 232 SCI SPI SRAM tlc UART USB VHDL Analog Digital Converter Analog Digital Umsetzer Application Programming Interface Asynchron Synchron Communication Application Specific Integrated Circuit Controller Area Network Configurable Logic Blocks Serielle Schnittstelle Complex Programmable Logic Device Digital Analog Umsetzter Digital Application virtual Engineer Electrically Erasable Programmable Read Only Memory Field Programmable Gate Array General Purpose Input Output General Purpose Timer Hardware Description Language Integrated Development Environment Input Output Block Infrarot Interrupt Service Routine Light Emitting Diode Local Interconnect Network Multiply and Accumulate Model Driven Ac
66. erst mit Hilfe eines Analog Digital Wandlers in ein f r einen Digitalrechner verwert bares Format gebracht werden Des Weiteren muss auch das in digitaler Form vorliegende Stellsignal wieder zu einem Analogwert r ckgewandelt werden Die Abtastrate h ngt im Wesentlichen von den verwendeten Sensoren der Wandlungszeit der AD Wandler der Berechnungsdauer des Regelalgorithmus sowie den Erfordernissen der Re gelstrecke selbst ab 11 3 Der Regelkreis Mikrorechner w t e t yt Stellglied Regelstrecke DAU Digital Analog Umsetzer ADU Analog Digital Umsetzer Abbildung 3 3 Digitaler Regelkreis Der grundlegende Aufbau des Digitalreglers kann nun auf das Projekt der Diplomarbeit der Regelung eines Hubmagneten bertragen werden Die Regelstrecke bildet der Hubmagnet Die Hubh he ist die Regelgr e St rgr en k nnen beispielsweise zus tzliche Belastung des Ankers sein oder Magnetisierungseffekte des Eisen kerns Die momentane Hubh he wird ber einen Infrarot Distanzsensor ermittelt Als Regler dient wahlweise ein Mikrocontroller oder ein FPGA Die Regelalgorithmen die sich in diesen Digi talreglern befinden werden mit Hilfe von Matlab Simulink erstellt Die Sollwertvorgabe w t erh lt der Regler ber die serielle Schnittstelle von einem PC Das Stellsignal a t ist ein pulsweitenmoduliertes Signal dessen Pulsweite proportional zur Stellgr e u t ist Als Stellglied kommt ein PWM Leistungsver
67. findet sich im Anhang D1 Als Auszug ist hier der Inhalt der Funktion Outputs aufgef hrt assign py0 LibBlockOutputSignal 0 0 ADC vStartConv Wandlung starten while ADC_ubBusy 1 Warten bis AD Wandlung ausgef hrt lt py0 gt ADC uwReadConv amp 0x03ff Die untersten 10 Bit auslesen Dieser ist bereits weiter oben als Beispiel verwendet und erkl rt 5 3 2 Schnittstelle zum PWM Modul Der PWM Ausgang des Mikrocontrollers wurde so konfiguriert dass er Werte von 0 bis 5000 akzeptiert Der an den S Funktion Block ber gebene Wert ist dabei proportional zur Pulsweite des Ausgangssignals pum und damit auch proportional zur durchschnittlichen Ausgangsspan nung Der Einfachheit halber wurde im Modell auf die Generierung eines PWM Signals verzichtet Das Verhalten des Blocks wurde auf den einfachen proportionalen Zusammenhang zwischen Eingangswert und durchschnittlicher Spannung reduziert xcilB87 pwm yO 0 u0 0 416 67 Durch die Division des Eingangswertes mit 416 67 sind Ausgangwerte von O bis 12 Volt m glich Im Outputs Funktionsrumpf der tlc Datei ist folgender Code zu finden assign pu0 LibBlockInputSignal 0 0 CCU6 vLoadChannelShadowRegister CCU6 CHANNEL 0 5000U lt pu0 gt CCU6 vEnableShadowTransfer CCU6 TIMER 12 55 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller Durch den ersten Ausdruck wird dem Blockeingang
68. gler gibt es nicht Deshalb kann das bertragungsprotokoll auf eine Ein Byte bertragung reduziert werden Die bertragung erfolgt als Zahl im ASCII Format Die Zahl gibt dabei die Hubh he in Zentime tern vor 66 6 FPGA Implementierung des Reglers Anders als bei den vorhergehenden Modulen wurde dieses nicht komplett selbst program miert sondern gro teils vom PicoBlaze Softcore Prozessor entliehen Dieser enth lt bereits ein entsprechendes Modul das lediglich um eine Parit tspr fung und einen Ein Byte Buffer erg nzt wurde Schnittstelle ce data 7 0 p clk Takt ce Taktfreigabe ic serial in FPGA Pin des seriellen Eingangs LP data Byte Ausgang I data serial in new data new data Byte Empfangen Abbildung 6 4 UART Modul Funktionweise F r die serielle Kommunikation m ssen Einstellungen gew hlt Baudrate 38400 Datenbits 8 Parit t gerade Stopbits 1 FluDsteuerung keine Wird ein Byte ber serial in Eingang empfangen und ist dessen Parit t korrekt so wird es an den data Ausgang weitergegeben Das eintreffen von Daten wird mit einem Impuls am new data Ausgang bekannt gegeben Implementierung Die VHDL Dateien f r das UART Modul sind im Anhang D3 zu finden Dies sind uart vhd und clkDiv vhd Das verwendete VHDL Modul kcuart vhd des PicoBlaze Softcores ist in 8 n her be schrieben Es ben tigt lediglich eine Taktquelle die Impulse die dem 16 fachen der ge w ns
69. glers Subsystem U gt x Berechnung Objektdistanz aus Sensorspannung Le E a b Register3 Counter1 Relational 0 2299957275390625 d y2 z AE Y1 he om nu 2d o amp a o c 5 E Constant4 0 108001708984375 y CORDIC DIVIDER a b E Relstional PESE Constant1 Register a b wen IR Minimal E o N Constant2 Relstionsl2 Out1 Registers Abbildung 6 20 Subsystem U gt x Aus dem Spannungswert der vom letzten Subsystem geliefert wird wird in diesem Subsys tem die Objektdistanz errechnet Dazu wird der aus Abschnitt 3 2 2 bekannte Zusammenhang zwischen Ausgangsspannung des Infrarot Distanzsensors und Distanz zum Objekt in ein Mo dell umgesetzt x Abstand m U z Spannung am Ausgang V x f rx gt 4cm i U Y Y Steigungskonstante Vm Y Offset V Abbildung 6 20 zeigt die Gleichung als Modell im Subsystem U gt x F r die dazu n tige Division wird ein CORDIC Divider aus dem Xilinx Reference Blockset verwendet CORDIC steht f r COordinate Rotation DIgital Computer Es handelt sich um iterative Algorithmen mit denen sich viele mathematisch Funktionen umsetzten lassen Der CORDIC Divider ben tigt mehrere Taktzyklen um ein g ltiges Ergebnis zu liefern Zudem befinden sich zeitkritische Pfade in dem Subsystem Um bei der Codegenerierung und Schaltungssynthese keine Fehlermeldungen zu erhalten m ssen speichernde Elemente in Form von Registern zwischengeschaltet wer
70. grator S1 Discrete Time Integrator D DWork DiscreteTimeIntegrator DSTATE 0 04 rtb Suml PID DWork DiscreteTimeIntegrator DSTATE 106 Anhang D Code Listings Update for UnitDelay lt S2 gt UD PID DWork UD DSTATE rtb TSamp Model initialize function void PID initialize boolean T firstTime if firstTime S Function Block Sl1 serial IO S Function Block S1 S Function ADC vInit S Function Block lt S1 gt pwm CCU6_vInit Start for DataStoreMemory lt S1 gt Data Store Memory PID DWork Soll 0 045 Start for DataStoreMemory lt S1 gt Data Store Memoryl PID DWork P 150 07 Start for DataStoreMemory lt S1 gt Data Store Memory2 PID DWork I 428 0 Start for DataStoreMemory lt S1 gt Data Store Memory3 PID DWork D 12 6 File trailer for Real Time Workshop generated code EOF Ef 107 Anhang D Code Listings D3 VHDL Module ADC OVER SPI vhd library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL Uncomment the following libr any Xilinx primitives in thi library UNISIM use UNISIM VComponents all entity ADC OVER SPI is ary declaration if instantiating S code PORT clk in STD LOGIC System Clock 50 MHz ce in STD LOGIC RESET in STD LOGIC Reset all SPI Device
71. gt lE us 36 F 2 i 3 0 Fu 2 dx Die Induktivit t der Spule berechnet sich wie folgt d Magnetischer Fluss V s 1Wb l n Windungszahl der Spule 1 um den magnetische Fluss zu berechen bedient man sich des magnetischen Wider stands R der definiert ist als m R magneticher Widerstand 4 4 2 Vs Wb H l 3 10 R Molt A ug magnetische Feldkonstante sd Ss m H Permeabili amp itskonstante 1 Der Gesamtwiderstand eines magnetischen Kreises ergibt sich aus der Summe der Einzelwi derst nde Im Einzelnen sind das hier R f r den Magnetischen Widerstand des Jochs R mJ f r den des beweglichen Ankers mit sich ndernder L nge und sowie R f r den des Luft spalts dessen L nge sich ebenfalls ndert E M l mittlere L nge des Jochs 1m my UL A limin minimale Eintauchtiefe des n amin des Ankers in die Spule 1m Hoy A l n Luftspalt bei angezogenem Anker 1m limin FU Ruy TOR S h Hubstrecke 1m 0 L BL R Rd cR A Querschittsfl che des Jochs 1m2 A Querschittsfl che des Ankers 1m2 A Querschittsfl che des Luftspalts 1m2 Say gab eye een MoH A Ho A HA 28 4 Modellbildung mit Matlab Simulink Der magnetische Fluss ist dann IT uum mGes Unter Verwendung von Gleichung 3 7 folgt 2 2 n n LET ne HoH A Ho A MA Vereinfacht und mit der Definition A A
72. hischen Modell heraus Dazu kommt die Software Matlab Simulink der Firma The Mathworks dem derzeit f hren dem Hersteller auf diesem Gebiet zum Einsatz Anhand eines Regelkreises der aus einem Hubmagneten besteht dessen Ankerposition rege lungstechnisch einstellbar ist soll der Entwicklungsprozess vom Entwurf bis zu Implementie rung gezeigt werden Letztere erfolgt hierbei sowohl auf dem Mikrocontroller XC167 von Infineon als auch auf dem programmierbaren Logikbaustein Spartan 3E von Xilinx 2 berblick 2 berblick Dieses Kapitel umrei t den Aufbau der Diplomarbeit Im ersten Abschnitt wird der Kontext der Diplomarbeit zur e Learning Plattform hergestellt Der zweite Teil geht auf den Aufbau des Dokuments sowie auf die Vorgehensweise bei der Behandlung des Diplomarbeitsthemas ein 2 4 Das Remote Labor Die Beispielanwendung eines Regelkreises die aus der Diplomarbeit hervorgeht ist Teil einer neuen e Learning Plattform f r Hard und Softwaredesign Da es sich nicht um eine rein virtuelle Lernplattform handelt sondern auf den Entwicklungs rechner sowie die angeschlossene Hardware ber Internetverbindung entfernt zugegriffen werden kann wird die e Learningplattform im Folgenden als Remote Labor bezeichnet Zielsetzung des Projekts ist es einer gro en Zahl von Studenten eine Experimentierumgebung zur Verf gung zu stellen unabh ngig von Vorlesungs und Labor ffnungszeiten Es soll da bei aktuellen Entwicklungen
73. hitecture Metal Oxide Semiconductor Feld Effekt Transistor Proportional Integral Differenzial Pulsweiten Modulation Random Access Memory Serielle Schnittstele Serial Communication Interface Serial Pheripheral Interface Static Random Access Memory Target Language Compiler Universal Asynchronous Receiver Transmitter Universal Serial Bus Very High Speed Integrated Circuit Hardware Description Language 96 Anhang D Code Listings Anhang D Code Listings D1 tlc Dateien xcl67 adc tlc oe oe File xc167 adc tlc Created Sun Dec 3 22 35 54 2006 oe oe oe oe oe oe Description Real Time Workshop wrapper functions interface generated for S function xc167 adc c oe oe oe oe ge oe oe oe File generated by S function Builder Block oe oe oe oe For more information on using the Target Language with the Real Time Workshop see the Target Language Compiler manual under Real Time Workshop in the Inlining S Functions chapter under the section and subsection Writing Block Target Files to Inline S Functions Function Based or Wrappered Code o oe oe o oe o de oe oe ge oe oe oe H mplements xcl67_adc C Function BlockTypeSetup oe oe oe oe oe oe Purpose Set up external references for wrapper functions in the generated code
74. hmschen Widerstand besitzt muss der elektrische Kreis nach dem Schema aus Abbildung 4 5 hergeleitet werden R L Abbildung 4 5 Ersatzschaltbild einer realen Spule Es l sst sich die Maschenregel anwenden u Quellspannung iV u udcu ind up Spannung am ohmschen Widerstand 1V Umgestellt nach u U Ug Upa mit 4 R i und Gleichung 3 15 folgt u RU PI R Gesamtwiderstand des Stromkreises 102 t Da aber die Induktivit t eine Funktion der Ankerposition ist und diese sich ebenfalls ndern kann gilt di dL R i L x i ges d 3 16 u R i La dt dt Eine Gleichung f r die Ableitung der Induktivit t nach der Zeit gibt es aber im Moment t noch nicht direkt Aber es gibt die Gleichung fiir Z In x der aktuellen Ankerposition ist x die Zeit indirekt enthalten Folgender Ansatz f hrt deshalb zum Erfolg dL dL dx dL dx dL dt dt dx dx dt dx 30 4 Modellbildung mit Matlab Simulink Eingesetzt in 3 16 ergibt sich di dL 3 17 u R i La x 3 17 u Ri L x en Das Ergebnis l sst sich so interpretieren dass sowohl eine Strom nderung z B durch ndern der Eingangsspannung als auch die nderung der Ankerposition das Magnetfeld beeinflussen und somit eine selbstinduzierte Spannung hervorrufen Diese wirkt der Quellenspannung ent gegen Die Spannungsdifferenz liegt an R an und f hrt zum Stromfluss 7 Zwar ist die Ankergeschwindigkeit x bisher no
75. htig zu wissen dass bereits vorab bekannt sein muss welche Peri pherie des Mikrocontrollers verwendet wird bevor eine Anpassung des Modells an die hard warespezifischen Gegebenheiten erfolgt Es ist auch m glich parametrisierbare S Function Bl cke f r die Peripherie des Zielsystems zu erstellen Diese k nnen dann per Dialogfeld in Simulink konfiguriert werden Der Auf wand beim Erstellen solcher Bl cke ist aber weitaus h her und lohnt sich nur wenn mehrere Projekte f r das gleiche Zielsystem geplant sind Nur aus zeitdiskreten Modellen kann Simulink Code generieren Diese Eigenschaft muss auch f r das erstellte Programm erhalten bleiben Deshalb muss der Code aus diskreten Modellen regelm ig im Zeitintervall das in der Simulation festgelegt wurde ausgef hrt werden F r die Mikrocontroller Implementierung bedeutet dies dass der generierte Algorithmus der mit der Funktion One_Step aufgerufen wird durch einen zyklischen Task eines Be triebssystems innerhalb einer Interrupt Service Routine ISR eines Timers oder der Realtime Clock angesto en wird 46 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller Wie in Kapitel 3 2 4 beschrieben benutzt der Mikrocontroller als Digitalregler einen AD Wandler zur Messwerterfassung des Infrarot Distanzsensors eine pulsweitenmoduliertes Sig nal als Stellsignal und eine asynchrone serielle Schnittstelle f r die Parameter und Sollwert bergabe Zur Is
76. ierten Regler zum anderen ein Signal das zeitver z gert zum Ersten daf r sorgt dass der ermittelte Stellwert zum richtigen Zeitpunkt ber nommen und an das PWM Modul weitergegeben wird 6 2 4 Schaltungssynthese Die Schaltungssynthese wurde aus dem Xilinx ISE mit dem XST Synthesewerkzeug durchge f hrt Der Syntheseprozess des generierten Codes verl uft fehlerfrei Eine Codeanpassung des Codes ist daher nicht notwendig Lediglich einige Warnungen die auf der Entkoppelung des Modells vom Taktsignal beruhen werden gemeldet Auf das FPGA bertragen erwies sich der Regler aber als nicht funktionsf hig Die Pulsweite am PWM Ausgang betr gt durchg ngig 100 Bei der Untersuchung mit ChipScope einem Programm zur schaltungsinternen Analyse stell te sich heraus dass das Eingangssignal des Reglers au erhalb des Wertebereichs der Lookup Tables lag Der Regler nimmt also f lschlicherweise an dass sich der Anker weit unterhalb des vorgegebenen Wertes befindet Dies weist auf einen Konvertierungsfehler oder die Missinterpretation eines Zahlenwerts hin Leider konnte bis zur Abgabe der Diplomarbeit nicht ermittelt werden ob der Fehler im Mo dell liegt oder bei der Codegenerierung aufgetreten ist 75 6 FPGA Implementierung des Reglers 6 3 Reglermodell mit Xilinx System Generator Blockset Die zweite Umsetzung des Reglers f r das Spartan 3E FPGA unterscheidet sich von den bis herigen Methoden dadurch dass nicht das Simulink
77. ies 0 ent spricht OV und 5000 bzw 10000 entsprechen 12V an den Spulen des Hubmagneten Das Stellsignal ist demnach mit 5000 12 416 67 bzw 1000 12 833 33 zu multiplizieren Das Gesamtmodell des Reglers ist der bersicht wegen in einem Subsystem zusammenge fasst Dies ist auch notwendig um den Regler f r die sp tere Codegenerierung von der Regel strecke abzugrenzen Au erhalb des Reglersubsystems werden dann die jeweiligen Umkehroperationen sowohl f r Eingangs als auch f r Ausgangssignale eingef gt Diese Umkehroperationen repr sentieren das bertragungsverhalten von Infrarot Distanzsensor und PWM Verst rker 41 4 Modellbildung mit Matlab Simulink 4 3 2 Ermittlung der Regelparameter Damit der Regler auch korrekt funktioniert d h stabil ist und ein gutes F hrungsverhalten zeigt m ssen die Reglerparameter in diesem Fall die einzelnen Faktoren f r den P I und D Anteil bestimmt werden Zur Bestimmung der Parameter wurden die Einstellregeln nach Ziegler und Nichols herange zogen 6 Das Vorgehen ist dabei folgendes Der Regler wird anfangs als P Regler benutzt d h die Faktoren des I und D Anteils werden auf 0 gesetzt Der P Anteil des Reglers wird nun soweit erh ht bis er grenzstabil wird Dies ist der Fall wenn der Istwert um den Sollwert in eine Dauerschwingung ger t Mit einem Proportionalfak tor von K 250 ist das der Fall Aus Abbildung 4 18 kann die Schwingungsdauer 7 von 0 7s abge
78. ildung 4 1 Arbeitsablauf Modellbildung Zu welchem Grad das Modell mit der Wirklichkeit bereinstimmen muss h ngt dabei immer vom Anwendungsfall ab Der im Rahmen der Diplomarbeit entwickelte Regelkreis l sst sich in zwei Teilmodelle zerlegen Zum einen ist das das Modell des Hubmagneten der die Regel strecke bildet zum anderen das des Reglers aus dem dann eigenst ndig ausf hrbarer Code generiert werden soll Beide sollen in der Simulation zusammenarbeiten Daraus folgt dass die G te des Reglers und dessen Funktionsf higkeit in der Praxis in direktem Zusammenhang mit Genauigkeit des Modells des Hubmagneten steht Bei der Simulation von Modellen werden die zugrunde liegenden Differentialgleichungen in Differenzengleichungen umgeformt und numerisch integriert Matlab stellt dazu eine Vielzahl von Integrationsmethoden zur Verf gung deren Eignung von der Art der Differenzialglei chungen abh ngt 5 Bei der Simulation wird beginnend von einem festen Anfangszustand schrittweise der zeitlich n chste Wert berechnet Jeder dieser Schritte baut auf das Ergebnis des letzten auf 20 4 Modellbildung mit Matlab Simulink In Simulink kann die Schrittweite fest oder variabel sein Ist die Schrittweite variabel so ist sie von der Gr er der Ver nderung des Rechenergebnisses abh ngig Bei gro er Ver nde rung wird die Schrittweite verkleinert und umgekehrt Je kleiner die Schritte desto genauer das Ergebnis desto gr er aber der
79. im Embedded Systems Bereich folgen Diese sind beispielsweise rechnergest tzte Logikentwicklung mit VHDL Kommunikation ber Bussysteme wie FlexRay CAN und LIN sowie moderne Methoden der Softwareentwicklung wie etwa Mo dellgetriebene Architektur MDA und Codegenerierung mit Matlab Simulink Wobei letzte res das eigentliche Thema dieser Diplomarbeit ist User VPN Gateway Datenban fbim fh regensburg de WEB Server Regelkreis Hubmagnet PWM Verst rker IR Distanzsenor Keil MCBXC167 NET Mikrocontroller Board 2x Freescale DEMO9S12XDT512 Mikrocontroller Board Spartan 3E Starter Kit FPGA Board Abbildung 2 1 Laboraufbau 2 berblick Das Remote Labor besteht aus einem handels blichen Desktop PC der ber Internet mit der Au enwelt verbunden ist Dieser Rechner ist via Remote Desktop Verbindung welche von Windows XP bereitgestellt wird von einem entfernten Rechner steuerbar Abbildung 2 1 An das Labor angeschlossen sind mehrere Entwicklerboards Dies sind zwei Freescale DEMO9S12XDT512 Boards mit Freescale MC9S12X Mikrocontrollern Dar ber hinaus ist das Labor mit einem Keil MCBXCI67 NET Board sowie ein Xilinx Spartan 3E FPGA Board best ckt Abbildung 2 2 2x Freescale DEMO9S12XDT512 Mikrocontroller Board Keil MCBXC167 NET Mikrocontroller Board Infineon XC167 CI XILINX Spartan 3E Starter Kit FPGA Board Abbildung 2 2 Hardware des Remote Labors 1 Freescale DEMO9
80. indung des Modells abgeschlossen Abbildung 5 3 auf der folgenden Seite zeigt das vollst ndige Modell des Reglers f r die Mik rocontrollerimplementierung Zu sehen sind die S Function Blocks an den Ein und Ausg n gen des Modells Die serielle Schnittstelle ist nicht direkt an die jeweiligen Bl cke ange schlossen sondern speichert die Daten in Memory Blocks zwischen Mit Hilfe von Read und Write Bl cken k nnen dort Daten gespeichert bzw gelesen werden Die Konstanten Multiplikatoren f r P I und D Faktor wurden durch Multiplikatoren mit zwei Eing ngen ersetzt um die Regelparameter der seriellen Schnittstelle aufnehmen zu k nnen Das gesamte Reglermodell Abbildung 5 3 ist in ein Subsystem zusammengefasst Wie wei ter unten gezeigt wird erleichtert dies die Codegenerierung 56 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller 1 Ur eD E Rate Transitio S Function Data Type Conversion Ux gt x Vref Data Store Constant gt ar Subtract Discrete Time Data Store Integrator Constant Resd1 3 T Tsz Jata Store gt D Discrete Derivative Read3 Data Store Read2 Data Store Write Dats Store Seas Data Store Data Store Data Store Data Store Memory Memory1 Memory2 Memory3 serial IO Dats Store Data Store Write Abbildung 5 3 Reglermodell fiir Mikrocontroller Add Ssturation Gain pwm 57 Stell 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontrolle
81. ion an Die entsprechende Schnittstelle des VHDL Moduls ist in Ab bildung 6 1 zu sehen Schnittstelle VAPUECEGSENIN QUI VALUE Einschaltdauer von 0 bis 10000 clk Taktsignals ce Taktfreischaltung PWM EN Pulsweitenmodulation Ein Aus PWM OUT PWM Signal Abbildung 6 1 PWM Modul Funktionsweise Durch Vorgaben von 0 bist 10000 am VALUE Eingang wird die Einschaltdauer im Verh lt nis zur Gesamtperiode vorgegeben 0 entspricht dabei einer Einschaltdauer von 096 und 10000 einer Einschaltdauer von 100 Das pulsweitenmodulierte Signal liegt am PWM OUT Aus gang an Dieser wird einem Pin des FPGAs zugeordnet Um eine Periodendauer von 5 kHz zu erhalten muss die Taktfequenz am clk Eingang 50MHz entsprechen Durch den PWM EN Eingang kann der Pulsweitenmodulator zus tzlich ein und ausgeschal tet werden Implementierung Die Realisierung eines PWMs in einem FPGA gestaltet sich einfach wie folgendes VHDL Programm das aufgrund seiner K rze hier aufgef hrt ist zeigt PWM vhd entity PWM is Port clk in STD_LOGIC The onboard clk of the Spartan3E C9 ce in STD LOGIC needed for System Generator PWM_OUT out STD_LOGIC Output of PWM Signal VALUE in STD LOGIC VECTOR 13 downto 0 0 10000 gt 0 100 PWM EN in STD LOGIC enable PWM end PWM 63 6 FPGA Implementierung des Reglers architecture RTL of PWM is signal clk int integer range 0 to 10000 begin process clk
82. itializes the General Purpose Timer Unit GPT1 GPT1 vInit initializes the Watchdog Timer WDT WDT vInit USER CODE BEGIN Init 3 Defaultwerte f r Reglereinstellungen 100 Anhang D Code Listings param x 0 0 p faktor 150 0 i faktor 150 0 d faktor 10 0 USER CODE END End of function MAIN vInit void rt OneStep void Disable interrupts here Check for overun if OverrunFlag t rtmSetErrorStatus PID_M Overrun return Save FPU context here if necessary Re enable timer or interrupt here Set model inputs here PID step WDT vTriggerWDT Get model outputs here OverrunFlag Disable interrupts here Restore FPU context here if necessary Enable interrupts here void MAIN_vUnlockProtecReg void ubyte ubPASSWORD if SCUSLS amp 0x1800 0x0800 if low protected mode ubPASSWORD ubyte SCUSLS amp OxOOFF ubPASSWORD ubPASSWORD SCUSLC 0x8E00 ubPASSWORD command 4 end if low protected mode if SCUSLS amp 0x1800 0x1800 if write protected mode SCUSLC OxAAAA command 0 SCUSLC 0x5554 command 1 ubPASSWORD ubyte SCUSLS amp OxOOFF ubPASSWORD ubPASSWORD SCUSLC 0x9600 ubPASSWORD command 2 SCUSLC 0x0800 command 3 ubPASSWORD ubyte SCUSLS amp OxOOFF ubPASSWORD ubPASSWORD SCUSLC 0x8E00 ubPASSWORD co
83. jedoch darauf geach tet werden dass keine Daten bei der bertragung durch Nichtabhohlung verloren gehen Dies k nnte Beispielsweise der Fall sein wenn der Regelalgorithmus fast die gesamte Rechenzeit des Mikrocontrollers beansprucht oder die bertragungsgeschwindigkeit der eingehenden Daten so gro ist dass w hrend der Abarbeitung des Regelalgorithmus der Empfangspuffer berl uft Um die Geschwindigkeit des Regelalgorithmus zu ermitteln wurde eine erste lauff hige Imp lementierung des Modells ohne Hardwareschnittstelle auf dem Mikrocontroller XC167 bei 20 MHz zum Ablauf gebracht Vor dem Start des Algorithmus wird ein Ausgangspin des Mikro controllers gesetzt bzw nach Beendigung der Abarbeitung wieder zur ckgesetzt An dem Pin wurde eine Zeitmessung mittels Oszilloskop durchgef hrt Das Ergebnis ergab eine Rechenzeit von ca 1000us zum Ermitteln des Stellsignals Zwar ist hierbei die Wandlungszeit von maximal 440us des AD Wandlers noch nicht enthalten bei einer Gesamtabtastrate von 0 038s bleiben immer noch ca 0 0366s f r alle anderen Aufga ben 47 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller F r die maximale serielle bertragungsgeschwindigkeit ohne Datenverlust bei einem 8 Byte Puffer ergibt sich aus GI 5 1 eine maximale bertragungsrate von 55555 Baud s Es wurde dabei mit 1 Startbit 1 Stopbit und ohne Paritibit gerechnet 8Byte 10 Bit G1 5 1 Baudrate 0 001445 Byte
84. k Ck k kk A k kk Ck kk kk 2 2 222 22 K 202 2 2 22 2 22 2 2 RIAA AA Kk k ke kk e ko kk kc koe ke kk k k Module Project Settings Filename MAIN C Project DAVE config dav 5 5 5 55 5 Controller Infineon XC167CI 16F40 74 Compiler Keil Codegenerator 2 4 Description This file contains the project initialization function Date 21 12 2006 01 52 55 TBR KK KK KK KK KK I KK IK KR I A IR AR IRA IRR IA k A k e A k 22 2 22 2 2 I He TBR RRR KR KK EEE 2 EEE 2 222 2 22 2 2 A k 22 2 2 22 2 22 2 2 22 2 2 222 22 2 2 22 2 2 22 2 22 2 2 22 2 2 k k Project Includes TBR RRR RK EEE e e A 2 22 2 22 2 2 22 2 22 2 2 22 2 2 22 2 222 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 20202 include MAIN H include PID h Model s header file include rtwtypes h MathWorks types static boolean T OverrunFlag 0 TBR RK KK EEE EEE 2 22 2 2 222 22 2 2 22 2 2 22 2 22 2 2 22 2 2 222 222 2 22 2 2 22 2 22 2 2 22 2 2 2 2 02 Function void MAIN vInit void Date 21 12 2006 TBR RK KR KK KK I KR IK KR AR 2 2 202 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 22 22 2 2 22 2 22 2 2 22 2 2 20202 void MAIN vInit void MAIN vUnlockProtecReg unlock write security PLLCON 0x7889 load PLL control register A A E sin dn at FE Initialization of the Peripherals Vel ee ee initializes the Parallel Ports IO vInit f in
85. k umgesetzt Eine bisher noch nicht angef hrte Eigenschaft die ses Blocks ist dass er relationale und logische Operationen durchf hren kann und dazu die Wahrheitswerte 0 oder 1 ausgibt Der Ausgang des fcn Blocks soll eins sein wenn sich der Anker innerhalb der Hubstrecke befindet Ebenso soll der Ausgang eins sein wenn sich der Anker am unteren Anschlag be findet und die Magnetkraft gr er als die Gewichtskraft ist Der Ausgang soll auch dann eins sein wenn der Anker am oberen Anschlag befindet und die Gewichtskraft gr er als die Magnetkraft ist Der Folgende logische Ausdruck fast dies zusammen ys x 0A x h v x 0 ACE gt F v gt haa F DUE max 36 4 Modellbildung mit Matlab Simulink Mit dem kleinen Kunstgriff die logischen Ausgangswerte mit den Signalleitungen zu multip lizieren k nnen diese gezielt beeinflusst werden Liefert der fcn Block eine Eins f r logisch Wahr bleibt der Signalweg bei der Multiplikation unbeeinflusst Liefert der fcn Block hinge gen Null wird der Ausgang des Multiplikators ebenfalls Null Da sowohl Geschwindigkeit als auch Beschleunigung des Ankers am Anschlagspunkt O sind werden dort solche Multiplikatoren eingef gt Zudem verf gen die Integrator Blocks ber einen flankengesteuerten Reset Eingang Dieser kann den Integrationswert auf den Initialisierungswert zur cksetzten was f r den Integrator der Beschleunigung Anwendung findet Abbildung 4 11 zeigt die Erweite
86. keiten der Differenzialgleichung I sind durch den geschlossenen Kreis erf llt Der einzige offene Wert der noch Einfluss auf Gleichung I hat ist die St rke des Stromes der durch die Spule flie t Gleichung III formuliert den Zusammenhang von Stromst rke und Induktivit t der Spule Auch hier soll das Summationsglied Abbildung 4 10 rechts der Mitte als Ausgangspunkt dienen Der Step Block u dar ber fungiert dabei als Spannungs quelle und simuliert den Einschaltvorgang Von der Eingangsspannung wird die induzierte Spannung subtrahiert die von der Ankerbewegung herr hrt Stromst rke u Product1 Integrator3 Abbildung 4 10 Modellauszug Stromkreis Dividiert man diesen Wert laut Gleichung II durch die Induktivit t die ja bereits in einem fcn Block ermittelt wurde erh lt man die Strom nderung die integriert den tats chlich flie Denden Strom im Stromkreis ergibt 35 4 Modellbildung mit Matlab Simulink Erweiterung des Simulink Modells Das erstellte Modell simuliert das Verhalten des realen Hubmagneten Die Ergebnisse sind aber nur dann korrekt wenn sich ein Teil des Ankers innerhalb der Spule befindet Ist dies nicht der Fall l uft die Simulation au erhalb des spezifizierten Bereichs Beim realen Hub magneten sind mechanische Anschl ge oben im Inneren der Spule und unten durch eine Auffangeinrichtung vorhanden Um das korrekte Betriebsverhalten nachzuahmen muss das Modell um diese
87. l funktionsf higer Code sowohl f r Mikrocontroller als auch f r FPGAs generiert werden kann Am Beispiel eines Digitalreglers wurde der gesamte Entwurfsprozess von der Modellbildung bis zur Integration ins System dargestellt Begonnen wurde hierbei mit der Modellierung der Regelstrecke anhand physikalischer Gesetzm igkeiten Das dabei entstandene Modell diente als Grundlage f r den Reglerentwurf Durch Modellanpassung und Verfeinerung wurde der Regler f r die Zielplattformen Mikrocontroller und FPGA umgesetzt Die Codegenerierung f r den verwendeten Mikrocontroller XC167 von Infineon erfolgte mit dem Embedded Real Time Workshop von The Mathworks F r die FPGA Implementierung auf dem Spartan 3E von Xilinx wurde sowohl der HDL Coder ebenfalls von The Mathworks als auch der Xilinx System Generator zur Erzeugung von HDL Code verwendet Es sei an dieser Stelle erw hnt dass in der Diplomarbeit bei weitem nicht alle M glichkeiten von Matlab Simulink aussch pft wurden Speziell das m chtige Stateflow Werkzeug mit dem komplexe Zustands und Ablaufdiagramme erstellt werden k nnen blieb au en vor Mit Stateflow Diagrammen k nnen beispielsweise Programmablaufsteuerungen oder Nach richtenparser realisiert werden F r den Anwendungsfall des Reglers stellt Matlab Simulink mit der Control System Tool box weitere Methoden zum Reglerentwurf bereit die ber das in dieser Arbeit angewandte empirische Verfahren hinausgehen Aber scho
88. le des Matlab Workspace sein Kategorie Continuous j 0 Integrator Dieser Block integriert fortlaufend das Eingangssignal Die gew hlte Methode der numerischen Integration wird im Men Simulati on Configuration Parameters im Unterpunkt Solver des Arbeitsbe reichs festgelegt Im Eigenschaftsdialogfenster des Integrators kann au Derdem sein Anfangswert sowie obere und untere Begrenzung des Aus gabesignals festgelegt werden Kategorie User Defined Functions dL dx Fen Selbstdefinierte Funktion mit Eingangssignal als Funktionsargu ment Im Eigenschaftsfenster kann die Funktion in Form eines Matlab typischen Ausdrucks eingegeben werden Die Eingangsvariablen sind als u definiert Bei Multiplex Leitungen am Eingang kann mittels Index z B u 1 auf die einzelnen Signale zugegriffen werden Kategorie Signal Routing Mux Abk rzung f r Multiplexer Er dient dazu mehrere Signalleitun gen zu einer zusammenzufassen Mittels eines Demux kann eine sol che Leitung wieder aufgeteilt werden 33 4 Modellbildung mit Matlab Simulink Erl uterung des Simulink Modells des Hubmagneten Der untere Bereich des Modells bildet das quivalent zur Gleichung I Das Summati onsglied Abbildung 4 7 in der linken unteren Ecke ist der Ausgangspunkt der Betrachtung Es spiegelt die Kr ftegleichung 3 2 wieder Die Differenz aus Magnetkraft und Gewichts kraft ist die Kraft die auf den Anker wirkt Gewichtskraft
89. lenden Validierbarkeit der Software kommt der Simulink eigene Code generator z B zur Erstellung von Steuerger tesoftware f r Automobile zur Zeit noch nicht zum Einsatz Allerdings gibt es mittlerweile Drittanbieter die Codegeneratoren f r Simulink anbieten die zertifizierten Code erzeugen Sicher ist in den n chsten Jahren noch eine interessante Entwicklung auf dem Sektor der modellbasierenden Codegenerierung zu beobachten Nicht zuletzt wenn sie mit andern mo dernen Methoden der Softwareentwicklung wie Modell Driven Achitecture kombiniert wird 92 Anhang A Literaturverzeichnis Anhang A Literaturverzeichnis 1 2 3 4 5 6 7 8 Fachhochschule Regensburg EMS Labor http fbim fh regensburg de ems labor SHARP GP2D120 General Purpose Type Distance Measuring Sensors Datasheet Fabian Greif Infrarot Entfernungsmesser kreatives chaos com Juli 2006 http www kreatives chaos com artikel infrarot entferungsmesser Scherf H E Modellbildung und Simulation dynamischer Systeme Oldenbourg Verlag 2004 Angermann A et al Matlab Simulink Stateflow Oldenbourg Verlag 2005 Berger Manfred Grundkurs der Regelungstechnik Books On Demand GmbH 2001 Spartan 3E Starter Kit Board User Guide Xilinx Ltd 2006 Ken Chapman UART Transmitter and Receiver Macros Xilinx Ltd 2003 93 Anhang B Abbildungsverzeichnis Anhang B Abbildungsverzeichnis Abbildung 2 1
90. lesen werden 5 6 7 8 9 tis Abbildung 4 18 Grenzstabile Schwingung des Reglers Aus diesen Werten l sst sich laut Ziegler und Nichols Vorhaltezeit und Nachstellzeit sowie der Verst rkungsfaktor ermitteln K 0 6 K 0 6 250 150 K Verstr kungsfaktor 1 T 90 5 T 20 5 0 75 2 0 355 T Nachstellzeit 15 T 20 12 T 2 0 12 0 7s 0 0845 T Nachstellzeit 15 Ein PID Regler l sst sich mathematisch wie folgt darstellen 1 u Stellgr e u Kp e edt T i i T e Regeldifferenz 42 4 Modellbildung mit Matlab Simulink Der Regler im Modell hat jedoch folgende Form K Proportionalfaktor u K e K edt K K Integralfaktor K Differentialfaktor Die gesuchten Parameter K K und K erh lt man durch Ausmultiplizieren der ersten Reg lergleichung mit Kp K K 150 Ra oY E T 035s K K T 150 0 0845 12 6 Setzt man die so ermittelten Werte als P I und D Faktoren in das Reglermodell ein verl uft der Istwert der Regelstrecke wie in Abbildung 4 19 gezeigt Die Sollwertvorgabe wurde auf 0 045m eingestellt Abbildung 4 19 Regelungsverlauf mit Parametern nach Ziegler und Nichols 43 4 Modellbildung mit Matlab Simulink 4 3 3 Zeitdiskreter Regler Bei digitalen Reglern handelt es sich immer um Abtastsysteme Die Erfassung der Messwerte und Berechnung der Stellwerte erfolgt zeitdiskret Das bisher entworfene Modell entspricht de
91. link Modell eines Hubmagneten Modellauszug Kr ftegleichung Modellauszug fen Blocks Modellauszug Magnetkraft Modellauszug Stromkreis Erweiterungen am Modell Vergleich Modell und realer Hubmagnet Vergleich Modell mit Korrekturfaktor Modell eines stetigen PID Reglers Sprungantwort der einzelnen Regleranteile Modell eines Analog PID Reglers Subsystem U gt x Grenzstabile Schwingung des Reglers Regelungsverlauf mit Parametern nach Ziegler und Nichols Anti Wind Up Algorithmus Diskreter PID Regler Zeitlicher Ablauf des Mikrocontrollerprogramms Programmoberfl che von DAvE Reglermodell f r Mikrocontroller Simulink Hardwarekonfiguration Real Time Workshop Konfiguration Durchf hrung der Codegenerierung PWM Modul ADC_OVER_SPI Modul SPI Kommunikation des AD Wandlers 7 UART Modul Verwendete Zahlendarstellung Explizite Festlegung der Zahlendarstellung Konfiguration des Input Blocks 94 Anhang B Abbildungsverzeichnis Abbildung 6 8 Nachbildung Integrator Block Abbildung 6 9 Nachbildung Derivative Block Abbildung 6 10 Abbildung 6 11 Abbildung 6 12 Abbildung 6 13 Abbildung 6 14 Abbildung 6 15 Abbildung 6 16 Abbildung 6 17 Abbildung 6 18 Abbildung 6 19 Abbildung 6 20 Abbildung 6 21 Abbildung 6 22 Abbildung 6 23 Abbildung 6 24 Abbildung 6 25 Abbildung 6 26 Abbildung 6 27 Abbildung 6 28 Abbildung 6 29 Abbildung 6 30 Abbildung 6 31 Nachbildung Saturation Block Lookup Table mit Int
92. llt die grundlegenden Bausteine f r die Modellierung dynamischer Systeme zur Verf gung Im Simulink Standard Blockset sind Bl cke in folgenden Kategorien organisiert Commonly Used Blocks Beinhaltet eine Ansammlung allgemeiner Bl cke die nur be dingt einer der unten genannten Kategorien zugeordnet werden k nnen Continuous Integration Differentiation Verz gerungsglieder bertragungsfunktio nen in zeitkontinuierlichen Systemen Discontinuous Bl cke mit nichtstetigem bertragungsverhalten Discrete Integration Differentiation Verz gerungsglieder bertragungsfunktionen f r zeitdiskrete Systemen Logical and Bit Operations Bitweise logische und relationale Operationen Lookup Tables Zuordnungsfunktionen denen nicht zwangsl ufig eine mathematische Verkn pfung zugrunde liegt z B empirisch ermittelte Kennlinien Math Operations Dieser Unterpunkt beinhaltet Mathematische Verkn pfungen und Operationen Neben den Grundrechenarten sind hier auch Verst rkerglieder und ma thematische Funktionen zu finden Model Verification Pr fbl cke die sicherstellen dass sich das Modell innerhalb be stimmter Grenzen bewegt Model Wide Utilities Modellweit g ltige Bl cke z B f r Zeitverhalten oder Doku mentation und Information Ports amp Subsystems Bl cke die der Hierarchiebildung innerhalb eines Modells die nen Dies geschieht durch zusammenfassen logischer zusammenh ngende Bl cke in Subsystemen Signal Att
93. m M glichkeit Model le mit Festkomma Datentypen zu erstellen Da aber die meisten einfachen Mikrocontroller keine Floating Point Unit kurz FPU besitzen wird eine eigene Fixedpoint Bibliothek zur Verf gung gestellt so dass festkommaoptimierter Code erzeugt werden kann Zwar verarbei ten die meisten C Compiler das ohne Fixedpoint Bibliothek generierte ANSI C aber ein so erzeugtes Programm w re wenig performant F r den Einsatz des HDL Coders ist diese Tool box Vorraussetzung HDL Coder Der HDL Coder erweitert Simulink um die F higkeit synthetisierbaren VHDL oder Verilog Code aus Modellen zu erzeugen Xilinx System Generator for DSP Neben der Produktion von programmierbaren Bausteinen bietet der Chiphersteller Xilinx auch Entwicklungssoftware f r seine Bausteine an Die vom System Generator bereitgestell ten Bl cke d rfen im Modell nicht mit anderen Bl cken gemischt werden Der System Generator beinhaltet drei Blocksets XILINX Blockset Dieses Blockset enth lt grundlegende Modellbl cke Diese reichen von hardwarenahen Bausteinen f r logische und relationalen Operationen Register oder Ein Ausg ngen bis zu abstrakteren Bl cken beispielsweise f r die schnelle Fourier Transformation 23 4 Modellbildung mit Matlab Simulink Xilinx Reference Blockset Hier sind Bl cke zu finden die aus Bl cken des Xilinx Standard Blocksets zusammenge stellt sind Darunter sind auch komplizierte Algorithmen wie Winkelf
94. m Mikrocontroller sowohl f r ein gesamtes Modell als auch f r ein Subsytem durchgef hrt werden Die dazu n tigen Einstellungen erfolgen im Dialogfeld der Modellkonfiguration Me n Simulation Configuration Parameter Ist der HDL Coder installiert ist ein entsprechender Auswahlpunkt HDL Coder vorhanden Abbildung 6 13 Dort kann das zu generierende Modell oder Subsystem ausgew hlt werden Au erdem kann festgelegt werden ob der Code in VHDL oder Verilog generiert werden soll und in welchem Zielverzeichnis in dem die Dateien erstellt werden sollen Mit der Schaltfl che Run Compatibilitiy Checker kann berpr ft werden ob das Modell HDL Coder konform ist Die Codegenerierung wird durch Bet tigung der Generate Schaltflache eingeleitet Configuration Parameters hdl3 Configuration Active Select Code generation control file Solver Data Import E sport ptimization Diagnostics Sample Time Data Validity Type Conversion Connectivity Compatibility Model Referencing File name Jes Target Generate HDL for Language hdl3 FPGA Regler vhdl v Froschhammer Desktop hdlcoder FPGA_Regler_HDL_CODER Browse i Directory Hardware Implementation Model Referencing Real Time Workshop Comments Symbols Custom Code Debug Interface HDL Coder Global Settings Test Bench Code generation output Generate HDL code Display generated model only
95. m eines Analogreglers F r alle dynamischen Elemente das sind im Regler Integrator und Differenzierer wurden Bl cke der Kategorie Continuous verwendet Um einen Regler zu erhalten der dem realen digitalen Regler gleich kommt muss dieser stetige Regler in einen diskreten umgewandelt werden Die Umwandlung ist notwendig denn nur aus diskreten Modellen kann berhaupt Code gene riert werden Hierf r sind folgende Schritte notwendig Es muss ein Abtastintervall im Modell als Sample time bezeichnet festgelegt werden Je niedriger dieses ausf llt desto hnlicher verh lt sich der diskrete zum stetigen Regler F r das Modell werden 38ms gew hlt Dies entspricht dem Zeitintervall in dem der Infrarot sensor neue Messwerte liefert Abtastraten die dar ber hinausgehen bringen keine Vorteile da die Stellwertberechnungen dann mehrfach auf dem gleichen Messwert beruhen was im Falle des Differenzialanteils des Reglers sogar zu einem fehlerhaften Wert f hrt Die zweite n tige Anpassung ist das Einf gen von Rate Transition Bl cken an den ber gangsstellen vom stetigen zum diskreten Modell Diese sorgen daf r dass ein stetiger Ein gangswert oder ein Wert mit anderer Abtastrate zu einem Ausgangswert mit vorgegebener Abtastrate gewandelt wird Dies wird dadurch realisiert indem der Eingangswert zum Abtast zeitpunkt gespeichert und f r die Dauer des Abtastintervalls am Ausgang zur Verf gung ge stellt wird Da das Modell der Regelstr
96. men die ihrerseits Teilfunktionen des Modells zusammenfassen Das erste der drei Subsysteme beinhaltet das VHDL Modul des AD Wandlers Im zweiten wird die Ausgabe des AD Wandlers in einen Spannungswert um gerechnet und im dritten Subsystem wird aus der Spannung die Objektdistanz errechnet Die drei hintereinander geschalteten Subsyteme werden im Folgenden einzeln erl utert SPI ADC Subsystem Schnittstelle zum Analog Digital Wandler Gateway In3 Out1 AMP_SHDN L 2 Constanti E Terminators reinterpret Reinterpret Simulation Multiplexer 1 SPI MISO DA Ei rminatort Constant SPI MISO FPGA INIT B Terminator1O Black Box Abbildung 6 18 SPI_ADC Subsystem Den Eingang des Reglers bildet das SPI ADC Subsystem F r Simulation und Codegenerie rung existieren in diesem Subsystem zwei unterschiedliche Pfade Durch den Simulationsmul tiplexer wird jeweils der g ltige Pfad gew hlt Im Simulationspfad befindet sich ein fcn Block der das Verhalten des Analog Digital Wandlers w hrend der Simulation nachahmt indem er das Eingangssignal in 14 Bit Zweier komplementdarstellung konvertiert 79 6 FPGA Implementierung des Reglers Im zweiten Pfad ist das VHDL Modul zur Ansteuerung des Analog Digital Wandlers ber SPI eingebettet Alle Ein und Ausgangspins die zum Ansteuern des SPI Busses notwendig sind sind mit einem Gateway In oder Gateway Out Block verkn pft Innerhal
97. mmand 4 end if write protected mode End of function MAIN vUnlockProtecReg new PASSWOR is 0x00 101 Anhang D Code Listings TBR RRR KR KK KK KKK IK RR IR IR AR Kk Ck Kk kk Kk Ck CK kk Ck kk Kk Ck kk Ck kk 22 2 22 2 2 22 2 2 202 02 Function void main void When Sag te oe oe ae ee et PEE Bg ee ee ee ee ee ee ere Description This is the main function De ee Pe eee ee eee eS Returnvalue None Ve rip up enge ee ee ee Parameters None lucc SS ear oe eee ee ee ee ee ee Date 21 12 2006 fe TBR RRR KR KK KK KK IK KR A A I 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 k k void main void USER CODE BEGIN Main 2 USER CODE END MAIN vInit globally enable interrupts PID initialize 1 Attach rt OneStep to a timer or interrupt service routine with period 0 04 seconds the model s base sample time here The call syntax for rt OneStep is rt OneStep xf PSW_IEN 1 RSTCON RSTCON amp 0x40 Configure ResetOut DP2 Oxff00 P2 0x100 while rtmGetErrorStatus PID_M NULL Perform other application tasks here End of function main 102 Anhang D Code Listings PID h File PID h Real Time Workshop code generated for Simulink model PID Model version Ue Real Time Workshop file version 6 3 R14SP3 26 Jul 2005 Real Time Workshop file generated on
98. n bei diesem Projekt haben sich die Vorteile der Codegenerierung mit Matlab Simulink gezeigt Beachtlich ist dass f r die gesamte Reglerimplementierung auf dem Mikrocontroller mit der Einbettung des generierten Codes in ein Programmger st keine 100 Codezeilen von Hand programmiert werden mussten Bei der FPGA Variante sieht dies aufgrund der VHDL Module f r die Peripherie deren Er stellung mit herk mmlicher Programmierung noch effizienter ist anders aus Was die Einbettung solcher externer Module in ein Modell betrifft herrscht beim HDL Coder noch Nachholbedarf Insgesamt kann man sagen dass der Entwurf von Algorithmen mit Simulink auf einer h he ren Abstraktionsebene erfolgt Typische Programmierfehler werden dadurch vermieden und der Entwickler kann sich auf das eigentliche Problem konzentrieren Ein wesentlicher Vorzug der modellgest tzten Softwareentwicklung besteht darin dass der Algorithmus schon bevor er im realen System zum Einsatz kommt in der Simulation erprobt werden kann Bei sicherheitskritischen Systemen in denen risikolose Tests nicht m glich sind oder unter Umst nden zur Zerst rung des Systems selbst f hren ist dies von gro em Nutzen 91 7 Zusammenfassung Jedoch muss darauf vertraut werden dass der Codegenerator fehlerfreien Code aus dem Mo dell produziert Bei generiertem C Code kann dies nicht berpr ft werden da Simulink eine properit re Bibliothek verwendet Gerade wegen der feh
99. ncing Real Time Workshop Comments long native word size Symbols Byte ordering Custom Code Signed integer division rounds to 7 Debug Rinde f Interface Templates Data Placement Data Type Repla Device type Infineon C 16x XC 16x Number of bits char short Abbildung 5 4 Simulink Hardwarekonfiguration 58 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller 5 4 2 Voreinstellungen des Embedded Real Time Workshop Die f r die Codegenerierung wichtigen Parameter werden Abschnitt Real Time Workshop des Modellkonfigurations Dialogs vorgenommen Abbildung 5 5 Es k nnen Programmschablonen in Form von tlc Dateien eingebunden werden aber auch normale C Source oder C Header Dateien Ferner kann festgelegt werden inwieweit der generierte Code kommentiert werden soll Au erdem ist es m glich automatische Dokumentation in HTML Format erzeugen zu lassen C Configuration Parameters phymodell_pid2_discrete Configuration Select Target selecton Solver Data Import Export Optimization s Diagnostics System target file ert ic Language C v Descripton Real Time Workshop Embedded Coder auto configures for optimized floating point code Sample Time Data Vabdity Type Conversion Connectivity Compatibility Documentation 7 Generate HTML report 7 Include hyperlinks to model E Launch report after code generation completes Model Referencing Hardware Implement Model Referencing Real Time
100. nde Einstellungen f r die serielle Schnittstelle gew hlt werden Baudrate 38400 Datenbits 8 Parit t keine Stopbits 1 Flusskontrolle keine Das Nachrichtenformat wurde so gew hlt das die Einstellungen des Digitalreglers auch ber ein Terminalprogramm wie dem in Windows mitgelieferten HyperTerminal vorgenommen werden kann Eine Nachricht setzt sich aus ASCII Zeichen zusammen und pro Nachricht wird ein Kommando bermittelt A Kommando Byte Vorzeichen ASCII Zahlenwert E Folgende Kommandobytes sind verf gbar X Sollwert Hubh he in mm 0 bis100 P Verst rkungsfaktor der Regeldifferenz im P Anteil 9999 bis 9999 I Verst rkungsfaktor der Regeldifferenz im I Anteil 9999 bis 9999 D Verst rkungsfaktor der Regeldifferenz im D Anteil 9999 bis 9999 Bsp AXASE Sollwert der Hubh he 45mm AP 150E Proportionalfaktor des Reglers auf 150 setzten Die Nachrichtenauswertung erfolgt in einem Parser der sich direkt in der Empfangs Interrupt Service Routine der seriellen Schnittstelle befindet 49 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller 5 2 Grundger st des Mikrocontrollerprogramms Das Grundger st des Programms wird aus den Vorgaben des letzten Abschnitts heraus mit DAVE generiert Dabei handelt es sich um eine Software von Infineon mit der sich die Basis software f r Mikrocontroller dieses Herstellers erzeugen l sst F r die einzelnen Mikrocontroller von Infineon k nnen
101. nport signals with auto storage typedef struct real T Ist Root Ist ExternallInputs PID External outputs root outports fed by signals with auto storage typedef struct real T Stell Root Stell ExternalOutputs PID Block signals auto storage extern BlockIO PID PID B Block states auto storage extern D Work PID PID DWork External inputs root inport signals with auto storage extern Externallnputs_PID PID U 103 Anhang D Code Listings External outputs root outports fed by signals with auto storage extern ExternalOutputs PID PID Y Model entry point functions extern void PID initialize boolean T firstTime extern void PID step void The generated code includes comments that allow you to trace directly back to the appropriate location in the model The basic format is system block name where system is the system number uniquely assigned by Simulink and block name is the name of the block Use the MATLAB hilite system command to trace the generated code back to the model For example hilite system S3 opens system 3 hilite_system lt S3 gt Kp opens and selects block Kp which resides in S3 Here is the system hierarchy for this model Root PID Pesper PID PID Regler NES D gt PID PID Regler Discrete Derivative TRETEN PID PID Regler U gt x endif _RTW_HEA
102. nt lt 0 PWM int 0 elsif clk event and clk 1 then if ce 1 then clk int lt clk int 1 if clk int lt conv_integer unsigned VALUE then PWM int 1 else PWM int 0 end if if clk int 10000 then Clk int lt 0 end if end if end if PWM OUT PWM int end process end RTL 115 Anhang D Code Listings Uart vhd library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL Uncomment the following library declaration if instantiating any Xilinx primitives in this code library UNISIM use UNISIM VComponents all entity uart is Port clk in std logic ce in std logic serial in in std logic data out std logic vector 7 downto 0 new data out std logic end uart architecture Behavioral of uart is component clkDiv is Port clk in STD LOGIC ce in STD LOGIC Clk 2 out STD LOGIC Clk 16 out STD LOGIC end component component kcuart9 rx is Port serial in in std logic data out out std logic vector 8 downto 0 data strobe out std logic en 16 x baud in std logic elk 2 in std Logic end component signal parity std logic signal data out std logic vector 8 downto 0 signal data strobe std logic signal clk 38400 std logic signal clk 2 std logic begin parity lt data out 7 xor data out 6 xor data out 5 xor data out 4 xor da
103. nten wird sp ter im Detail erl utert F r die Ansteuerung der Peripherie des FPGA werden die VHDL Module f r den Analog Digital Wandler die serielle Schnittstelle und Pulsweitenmodulation aus Abschnitt 6 1 ver wendet Die Einbettung erfolgt unter Verwendung von Black Box Bl cken Eine weitere Besonderheit dieses Modells besteht darin dass der zeitliche Ablauf des Regel algorithmus selbst koordiniert werden muss Dies ist notwendig da bei der Codegenerierung so genannte Timing Constrains f r den Syn theseprozess erstellt werden In diesen Vorgaben wird die maximale Durchlaufzeit eines Sig nals festgelegt die nicht gr er als eine Taktperiode sein darf Das f hrt dazu dass nicht be liebig viele Schaltglieder hintereinander folgen d rfen da sonst die Schaltungssynthese mit Fehlern abbricht Um dem entgegenzuwirken ist es bei mehrstufiger Logik m glich Register zwischenzuschalten die ihr Eingangssignal um einen Takt verz gert weiterleiten Um Ein und Ausg nge des Reglermodells einem physikalischen Pin am FPGA zuzuweisen und um das System Generator Modell von einem normalen Simulink Modell abzugrenzen stehen Gateway In und Gateway Out Bl cke zur Verf gung Abbildung 6 15 In Ihnen kann einem Signal im Modell ein Input Output Block IOB des FPGAs zugeordnet werden Ist die Signalleitung die zum Gateway Block f hrt ein Bitvektor so muss eine entsprechende Anzahl an IOBs zur Verf gung gestellt werden ep Li G
104. nterst tzte Bl cke nachgebaut werden Ein und Ausg nge des Modells m ssen dem Umfeld in das sie eingebet tet werden entsprechen Die erste Forderung dass es sich beim Modell des Reglers um ein diskretes Modell handeln muss ist bereits durch den Regler aus Abschnitt 4 3 erf llt Um ein Modell in Fixed Point Datendarstellung umzuwandeln muss die Fixed Point Toolbox installiert sein Diese erweitert Matlab Simulink um die Typen sfix f r Festkommazahlen in Zweierkomplementdarstelltung und ufix f r vorzeichenlose Festkommazahlen Die Bitl nge und Position des Dezimalpunkts ist bei diesem Datentypen frei w hlbar F r das Reglermodell wurde eine 32 Bit Zahlendarstellung im Zweierkomplement mit Kom ma nach dem sechzehnten Bit ausgehend vom hochwertigsten Bit gew hlt Abbildung 6 5 31 16 0 Vorkommateil Nachkommateil Vorzeichenbit Abbildung 6 5 Verwendete Zahlendarstellung Dadurch ergibt sich eine Wertebereich 32768 bis 432768 bei einer Aufl sung von 275 15 259 10 Die Festlegung der Datentypen innerhalb des Modells erfolgt explizit im Konfigurationsdia log Abbildung 6 6 der einzelnen Bl cke oder durch implizite Regeln 68 6 FPGA Implementierung des Reglers L7 Function Block Parameters Gan Element wise gain y K u ot matrix gain y Ku ot y u K Tq nn Main Signal Data Types Parameter Data Types Output data type mode Specily via dialog Output data type e g sfed16
105. odegenerierung 6 4 HDL Coder und Xilinx System Generator im Vergleich 7 Zusammenfassung Anhang A Anhang B Anhang C Anhang D DI D2 D3 D4 Literaturverzeichnis Abbildungsverzeichnis Abk rzungsverzeichnis Code Listings tlc Dateien Generierter C Code VHDL Module HDL Coder Zusatzmodule 76 76 88 90 91 93 94 96 97 97 100 108 118 1 Einleitung 1 Einleitung Es gibt heutzutage kaum mehr ein elektronisches Ger t das nicht mit mindestens einem Mik rocontroller ausgestattet ist Tats chlich finden mehr als 95 der produzierten Prozessoren innerhalb von eingebetteten Systemen ihren Einsatz Eine wesentliche Gemeinsamkeit mit ihren gro en Br dern den interaktiven Rechnersyste men wie PC oder Workstations haben sie Um ihren Dienst zu verrichten ben tigen sie Soft ware Angesichts dieser Zahl kann man sich ausmalen wie viel Aufwand f r die Programmierung von Embedded Systems aufgebracht wird vor allem wenn man betrachtet wie kurz die Pro duktzyklen in der Elektronik geworden sind Manche Ger te gerade im Consumer Bereich sind nicht mal mehr ein Jahr im Handel erh ltlich Und um die Nachfrage nach neuen Produkten zu sch ren werden gleichzeitig immer neue Raffinessen in die Ger te eingebaut Bei gro en St ckzahlen kommt noch hinzu dass m glichst viel Funktionalit t in die Software verlagert und m glichst wenig mit Hilfe elektronischer Bauelemente realisiert wird denn die
106. og Converter SPI SS B out STD LOGIC SF CE0 out STD LOGIC FPGA INIT B out STD LOGIC end component component uart Port clk in std logic ce in std logic serial in in std logic data out std logic vector 7 downto 0 new data out std logic end component component FPGA Regler PORT clk IN std logic reset IN std logic Clk enable IN std logic Ist in IN std logic vector 13 DOWNTO 0 ufixl14 Soll in IN std logic vector 7 DOWNTO 0 ufix8 ce out OUT std logic Stell out OUT std logic vector 13 DOWNTO 0 ufix14 i END component component PWM Port clk in STD LOGIC The onboard clk of the Spartan3E C9 118 Anhang D Code Listings ce in STD LOGIC needed for SystemGenerator PWM OUT out STD LOGIC Output of PWM Signal VALUE in STD LOGIC VECTOR 13 downto 0 0 10000 gt 0 100 PWM EN in STD LOGIC enable PWM end component component clk wrapper Port clk in STD LOGIC ce in STD LOGIC Clk smp out STD LOGIC smp done out STD LOGIC end component signal PWM VALUE STD LOGIC VECTOR 13 downto 0 signal PWM EN STD LOGIC signal clk smp STD LOGIC signal smp done STD LOGIC signal clk smp enable STD LOGIC signal Stell out std logic vector 13 downto 0 signal serial data std logic vector 7 downto 0 signal Soll in std logic vector 7 downto 0 00110000 signal new data std logic signal ADC DATA A STD LOGIC VECTOR 13 down
107. on XC167 Mikrocontroller 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller In diesem Abschnitt wird erl utert welche nderungen des diskreten Reglermodells aus dem letzten Kapitel durchgef hrt werden m ssen damit aus ihm ein lauff higes Mikrocontroller programm generiert werden kann Vorab m ssen dabei berlegungen bez glich der verwendeten Hardwarekomponenten und der Softwarearchitektur getroffen werden Aus diesen Vorgaben wird ein Programmger st erstellt in das der aus dem Reglermodell generierte C Code eingebettet wird Dar ber hinaus muss das Modell um Schnittstellen zum Ansprechen der Mikrocontroller spezifischen Hardware erg nzt werden 5 1 Verwendete Hardwarekomponenten und Softwarearchitektur Wie bereits angesprochen l sst sich aus Simulink Modellen C Code generieren Soll aus die sem die Hardware des Zielsystems direkt angesprochen werden m ssen spezielle Elemente so genannte S Function Bl cke in das Modell aufgenommen werden Sie repr sentieren die Hardwareschnittstellen im Modell Die S Functions wobei S f r System steht beinhalten benutzerdefinierten Code der zwei Aspekte abdeckt Zum einen das Verhalten der Hardware innerhalb der Simulation Zum an deren den hardwarespezifischen Code durch den Block nach der Codegenerierung vertreten wird Die einzelnen f r die Mikrocontroller verwendenden S Functions werden im Abschnitt 5 3 beschrieben An dieser Stelle ist nur wic
108. op Build Subsystem Abbildung 5 6 Model Advisor Requirements gt Real Time Workshop d Build Subsystem Fixed Point Settings Generate S Function Linearize Block Mask Subsystem Signal amp Scope Manager Port Signal Properties Format Foreground Color Background Color v v Help Ist Sti PID Regler Abbildung 5 6 Durchf hrung der Codegenerierung Nach Beendigung der Codeerstellung erscheint ein Bericht ber den Generierungsprozess in einem neuen Fenster Folgende Dateien werden bei der Codegenerierung erzeugt bzw angef gt ert main c Nach einer Vorlage generierte C Datei mit main Funktion PID h Header Dateien und Definitionen von Datenstrukturen f r den Regelalgorithmus PID c In dieser Datei befindet der Algorithmus aus dem Simulink Modell PID private h Header Datei die nur von PID C eingebunden wird P Fi ID types h Modellspezifische Datentypen twtypes h Definition von Standarddatentypen die vom Real Time Workshop verwendet werden Das Pr fix der Dateien hier PID folgt aus dem Namen des Subsystems aus dem sie generiert wurden Die beiden Dateien PID h und PID c enthalten den generierten C Code des Reglermodells Sie sind im Anhang D2 aufgef hrt In PID c sind zwei Funktionen zu finden PID initialize f r die Initialisierung des Algorithmus und PID step zum Ausf h ren des Algorithmus 60 5 Implementierung des Regler
109. or Block 20 Co C Create testbench Provide clock enable clear pin zj Simulink system period sec 1 Block icon display Detout eee Co Cm ome Abbildung 6 31 System Generator Konfiguration Es stehen verschiedene Optionen zur Codegenerierung zur Verfiigung HDL und NGC Netlist Durch die Codegenerierung wird ein ISE Projekt erstellt das das codierte Modell beinhaltet Timing Analysis Codegenerierung und Schaltungssynthese wird durchgef hrt Anschlie end wird das Zeitverhalten der erzeugten Schaltung untersucht Bitstream Direkt aus Simulink heraus wird der vollst ndige Syntheseprozess durchlaufen Ergebnis ist eine Bitsteam Datei die nur noch auf den FPGA bertragen werden muss Weitere Einstellungen betreffen die Bauteilauswahl das verwendete Synthesewerkzeug so wie Einstellungen bez glich des Taktsignals Mit der Schaltfl che Generate wird die Codegenerierung bzw Schaltungssynthese durchge f hrt Das Ergebnis wird im gew hlten Verzeichnis hinterlegt 88 6 FPGA Implementierung des Reglers Generierungsergebnis Wurde die Option HDL Netlist gew hlt wird eine Reihe von Dateien generiert die in ei nem ISE Projekt zusammengefasst sind modellname vhda Beinhaltet den in VHDL generierten Teil des Modells lt modellname gt _cw vhd Schnittstelle nach Au en edn und ngc Dateien Neben der Generierung von VHDL Code wird bei der Codege nerierung
110. r 5 4 Codegenerierung Die Codegenerierung in Simulink ist ein weitgehend automatisierter Prozess der aus einem vorgegebenen Modell oder Subsystem bersetzbaren C Code erzeugt Lediglich einige Ein stellungen in der Modellkonfiguration sind notwendig Mit den richtigen Codevorlagen k n nen sogar eigenst ndig lauff hige Anwendungen generiert werden 5 4 1 Festlegung des Zielsystems Im Konfigurations Dialogfeld des Modells Abbildung 5 4 zu finden im Men des Simulink Arbeitsbereichs unter Simulation Parameter Configuration Hardware Imple mantation k nnen die Parameter des Zielsystems eingestellt werden G ngige Plattformen befinden sich bereits in einer Auswahlliste Darunter auch der XC167 von Infineon Die Einstellungen betreffen hierbei die L nge der einzelnen Datentypen sowie die Byte Order Mit diesen Vorgaben lassen sich bereits w hrend der Simulation Konflikte des Modells mit der Hardware des Zielsystems erkennen i Configuration Parameters phymodell pid2 discrete Configuration Select Embedded hardware simulation and code generation Solver Device type Infineon C 16x XC 16x Data Impon Export Number of bits char short Optimization Disgnostes R long 2 native word size Sample Time Byte ordering Data Vabdity Signed integer division rounds to Type Conversion finghton a sd inte Connectvity Compatibility Emulaton hardware code generation only Model Referencing None Hardware Implement Model Refere
111. r jede elektrische oder elektronische Regelung die Regelgr e zuerst in ein elektrisches Signal das Regelsignal y t umgewandelt werden bevor eine Regeldifferenz zum Sollwert ermittelt wird Auch die Stellgr e wirkt nicht direkt auf die Regelstrecke ein Meist ist verst rkendes oder energiewandelndes Element zwischengeschaltet das als Stellglied bezeichnet wird Der Ausgang des Reglers ist dann nicht mehr die Stellgr e sondern das Stellsignal u t Abbil dung 3 2 wird der Praxis eher gerecht e t y t w t Stellglied Regelstrecke Sensor Abbildung 3 2 Erweiterte Grundstruktur des Regelkreises Diese Darstellung gilt f r Analog wie f r Digitalregler gleicherma en Analogregler zeich nen sich dadurch aus dass sie zeit und wertkontinuierlich arbeiten Sie k nnen durch eine analoge elektronische Schaltung beispielsweise mit Operationsverst rkern aber auch mecha nisch realisiert werden Das Kernst ck eines digitalen Reglers hingegen bildet ein Digital rechner der den Regelalgorithmus enth lt Dieser kann durch einen PC oder wie in diesem Projekt durch einen Mikrocontroller bzw programmierbare Logik realisiert sein Der Digital regler Abbildung 3 3 unterscheidet sich vom Analogregler dadurch dass der Ist Wert der Regelung nicht kontinuierlich erfasst sondern in konstanten zeitlichen Abst nden gemessen wird Die Frequenz dieser Messungen wird als Abtastrate bezeichnet Zudem m ssen Mess werte zu
112. rallel am SPI Bus angeschlossen Abbildung 6 2 zeigt die VHDL Schnittstelle des AD Wandler Moduls Schnittstelle ce DATA_A 13 0 b DATA_B 13 0 DOOR s clk Taktsigal AMP csl ce Taktfreigabe clk 7 RESET R cksetzen des Moduls AMP SHDN SPI MISO FPGA SPI Dateneingangsleitung SPI MOSI FPGA SPI Datenausgangsleitung Er SPI SCK SPI Taktsignal DAC CS DATA A DATA B Ergebnis der AD Wandlung AD CONV RESET FPGA INIT B AMP_SHDN R cksetzeingang f r Vorverst rker sr ceo AMP CS Chip Select Vorverst rker SPI MOSI FPGA INIT B CEU se SF CEO Leitungen zu nicht genutzten a sp ss BL DAC_CS SPI Bausteinen re N DAC CLR Abbildung 6 2 SPI SS B ADC OVER SPI Modul 65 6 FPGA Implementierung des Reglers Funktionsweise Um den AD Wandler nutzten zu k nnen muss zuerst der Verst rkerbaustein einmalig pro grammiert werden Da der AD Wandler f r eine Eingangsspannung von 0 4V 2 9V ausgelegt ist und der verwendete Infrarot Distanzsensor einen Spannungswert in diesem Bereich liefert wird ein Verst rkungsfaktor von 1 eingestellt Nach der Initialisierung des Vorverst rkers liegt Spannung am Eingang des AD Wandlers an Die AD Wandlung wird durch einen Puls an der AD CONV Leitung ausgel st Im Folgen den werden die beiden Kan le des Wandlers ausgelesen wobei die Daten immer Zeitversetzt um einen Messzyklus ausgegeben werden Abbildung 6 3 Sample Sample point point AD CONV LS an sPLscK
113. ributes Elemente zur Angleichung von Abtastraten setzen von Anfangszu st nden und auslesen von Signaleigenschaften Signal Routing Bl cke die den Signalweg beeinflussen wie etwa Multiplexer Demultiplexer Schalter etc 22 4 Modellbildung mit Matlab Simulink Sinks Bl cke dieser Kategorie dienen der Signalausgabe Diese Ausgabe kann visuell ber Graphen erfolgen oder in eine Datei bzw in den Matlab Workspace geschrieben werden Sources Enth lt B cke zur Signalerzeugung Signale k nnen beispielsweise Konstan ten oder Sprungfunktionen sein von diversen konfigurierbaren Signalgeneratoren stammen oder aus Dateien oder vom Matlab Workspace gelesen werden User Defined Functions Bl cke die die Verwendung eigener mathematischer Aus dr cke oder Funktionen zulassen Die einzelnen Bl cke dieser Kategorien werden im Zusammenhang mit ihrer Verwendung im Modell des Hubmagneten und Reglers n her erl utert Real Time Workshop und Real Time Workshop Embedded Coder Diese Pakete erweitert Simulink nicht um zus tzliche Funktionsbl cke sondern baut Simu link um die M glichkeit selbst ndig ablaufenden C Code zu generieren aus Dabei kann mit dem Real Time Workshop nur Code erzeugt der auf x86 kompatiblen Rechnern lauff hig ist F r andere Plattformen ist zus tzlich die Real Time Workshop Embedded Coder Toolbox notwendig Fixedpoint Toolbox Auch dieses Paket erweitert Simulink nicht um neue Bl cke sondern u
114. rithmus zyklisch aufruft Des Weiteren findet die Capture Compare Unit als PWM Modul ihren Ein satz Die F hrungsgr e und andere Regelparameter werden ber den seriellen Port an den Mikrocontroller bertragen Dar ber hinaus werden noch einige Ausgabepins benutzt die den Status ber LEDs ausgeben 18 3 Der Regelkreis 3 2 5 Xilinx Spartan 3E Starterkit f icron Platfoeen Flagf o pnr TEXAS INSTRUMENTS SLXIUNX DIGILENT SPARTAN 3E b gt y Intel Flash Mernory Vlde pbddndbe bd dl Abbildung 3 13 Xilinx Spartan 3E Starterkit 7 Die FPGA Implementierung des Reglers erfolgt auf dem Spartan 3E Starter Kit von Xilinx Zur Erstellung des Regelalgorithmus wird wiederum Matlab Simulink verwendet Der Regler f r das FPGA wird in zwei Varianten erstellt Zum einen mit dem System Generator von Xi linx welcher Simulink um Funktionen zur Generierung von herstellerspezifischem HDL Code erweitert Zum anderen wird die HDL Coder Toolbox f r Simulink verwendet um generischen VHDL Code zu erzeugen Die Schnittstellen f r AD Wandler serielle Schnittstelle und PWM sind f r beide Implemen tierungen als VHDL Module programmiert Dazu wurde die Software ISE 8 1 von Xilinx verwendet Dieses Programm f hrt auch die Schaltungssynthese des von Simulink generierten HDL Codes durch und sorgt f r die bertragung des erzeugten Bitstreams auf das FPGA Board Der Bitstream konfiguriert dabei den FPG
115. rrupt priority level ILVL 9 Rx interrupt group level GLVL 0 Watchdog Eingangsfrequenz Fcpu 128 Watchdog berlauf 78 643 ms Das Programm kann dann aus diesen Vorgaben ein Programmgrundger st erstellen Dieses steht dann als Projekt f r die Keil u Vision Entwicklungsumgebung zur Verf gung 52 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller 5 3 Codierbares Modell des Reglers Im Abschnitt 4 3 wurde das Modell eines diskreten Reglers erstellt Dieses beinhaltet aber noch keinerlei Schnittstellten zur Hardware des Zielsystems Diese sind aber notwendig damit der generierte Code in Interaktion mit der Umgebung treten kann Die Schnittstellen zur Hardware werden in Simulink Modellen mittels S Functions herge stellt Mit S Function Bl cken l sst sich benutzerdefinierter Code in den Programmierspra chen Ada C C oder Fortran in ein Modell einbinden In diesem Projekt werden in C pro grammierte S Funktionen verwendet Ein S Function Block ben tigt mehrere Dateien Unter anderem eine C Quellcode Datei die das Verhalten des Blocks innerhalb der Simulation beschreibt sowie eine Target Language Compiler Datei die den hardwarespezifischen Code des Zielsystems enth lt Vor dem Einsatz in einer S Function muss dessen Programmcode mit dem MEX Kompiler von Matlab ber setzt werden Die C Datei die das Verhalten des Blocks w hrend der Simulation beschreibt besteht aus einer Reihe Funktionen
116. rtan 3E Starterkit 4 Modellbildung mit Matlab Simulink 4 1 berblick ber Matlab Simulink 4 2 Das Modell des Hubmagneten in Simulink 4 2 1 4 2 1 Physikalische Herleitung 2 2 2 Darstellung in Simulink 4 3 Simulink Reglermodell 4 3 1 Modell eines stetigen PID Reglers 4 3 2 Ermittlung der Regelparameter 4 3 3 Zeitdiskreter Regler 4 3 4 Anti Wind Up Algorithmus 5 Implementierung des Reglers auf dem Infineon XC167 Mikrocontroller 5 1 Verwendete Hardwarekomponenten und Softwarearchitektur 5 2 Grundger st des Mikrocontrollerprogramms 5 3 Codierbares Modell des Reglers 5 3 1 Schnittstelle zum AD Wandler 5 3 2 Schnittstelle zum PWM Modul 5 3 3 Serielle Schnittstelle 5 4 Codegenerierung 5 4 1 Festlegung des Zielsystems 344 2 Voreinstellungen des Embedded Real Time Workshop 5 4 3 Ausf hren der Codegenerierung 5 5 Einbettung in das Grundger st 6 FPGA Implementierung des Reglers 6 1 VHDL Schnittstellenmodule 6 1 1 Pulsweitenmodulator 6 1 2 Analog Digital Wandler ber SPI Bus 6 1 3 Serielle Schnittstellen 6 2 HDL Coder kompatibles Reglermodell 6 2 1 Anpassung des Reglermodells 6 2 2 Codegenerierung 6 2 3 Einbettung in ein VHDL Projekt 6 2 4 Schaltungssynthese ofp BW 10 13 13 14 16 18 19 20 21 25 26 31 39 39 44 44 46 46 50 53 55 55 56 58 58 59 60 61 62 62 63 64 66 68 68 73 74 75 Inhaltsverzeichnis 6 3 Reglermodell mit Xilinx System Generator Blockset 6 3 1 6 3 2 Nachbau des Reglers C
117. rungen des Modells duct2 Integrator1 Integrator2 Abbildung 4 11 Erweiterungen am Modell Modellverifizierung und Modellangleichung Um zu berpr fen in wie weit das Modell mit der Realit t bereinstimmt wurde eine Mess reihe am realen Hubmagneten vorgenommen und mit dem Modell verglichen Dabei wurde gemessen welche Spannung notwendig ist um den Anker von unterschiedlicher Ausgangsposition aus anzuheben Dadurch erh lt man einen Vergleichswert ber den gesam ten Wertebereich Abbildung 4 12 10 o S 5 4 Messung E m Modell a 6 2 ol O 0 125 2 5 375 5 625 75 875 Abstand cm Abbildung 4 12 Vergleich Modell und realer Hubmagnet 37 4 Modellbildung mit Matlab Simulink Wie zu erkennen ist ist der Fehler des Modells nicht unwesentlich Der Kurvenverlauf hnelt sich aber Der auftretende Fehler steht in direktem Zusammenhang mit der Hubh he Je n her sich der Anker am oberen Anschlagpunkt des Hubmagneten befindet desto geringer der Feh ler Deshalb wird das Modell um einen wegabh ngigen Korrekturfaktor erweitert der mit der Magnetkraft multipliziert wird Die Erweiterung erfolgt unter Zuhilfenahme eines fcn Block der folgende Gleichung enth lt V Verst rkunkgsfaktor 1 k Korrekturfaktor 1 V 14 2 x l orrekturfaktor 1 h max Hubh he 1m x Hubh he 1m Mit dem empirisch ermittelten Korrekturf
118. s AMP CS out STD LOGIC AD Amp ChipSelect AMP SHDN out STD LOGIC AD Amp ShutDown SPI MOSI out STD LOGIC SPI FPGA out SPI MISO in STD LOGIC SPI FPGA in SPI SCK out STD LOGIC SPI FPGA clk DATA A out STD LOGIC VECTOR 13 downto 0 Output of ADC A DATA B out STD LOGIC VECTOR 13 downto 0 Output of ADC B AD CONV out STD LOGIC Trigger Output for ADC Conversion DAC CLR out STD LOGIC Reset DAC DAC CS out STD LOGIC ChipSelect Digital Analog Converter SPI SS B out STD LOGIC SF CE0 out STD LOGIC FPGA INIT B out STD LOGIC end ADC OVER SPI architecture Behavioral of ADC OV component ADC AMP PORT CLK in STD LOGIC ER SPI is RESET in STD LOGIC ADC AMP EN in STD LOGIC AMP CS out STD LOGIC AMP SHDN out STD LOGIC AMP DONE out STD LOGIC SPI MOSI out STD LOGIC SPI SCK out STD LOGIC end component component wait clk Port clk in STD LOGIC WAIT EN in STD LOGIC WAIT DONE end component component ADC CONV Port CLK n STD LOGIC p DC CONV EN Oo c uNNnNPA end component signal AMP SPI CLK STD LOGIC signal CONV SPI CLK STD LOGIC signal ADC CONV EN STD LOGIC signal CONV DONE STD LOGIC signal ADC AMP EN std logic signal WAIT EN std logic out STD LOGIC ESET in STD LOGIC in STD LOGIC ATA A out STD LOGIC VECTOR 13 downto 0 ATA B out STD LOGIC VECTOR 13 downto 0 ONV DONE out S
119. s auf dem Infineon XC167 Mikrocontroller Der erzeugte Quellcode enth lt Standarddatentypen die ber Typendefinition neue Namen erhalten Ebenso werden Datenstrukturen aus diesen Typen verwendet Der Code der in der Datei PID c zu finden ist bildet das Modell als sequentiellen Algorith mus ab Die Namen der Variablen werden von den Blocknamen abgeleitet dessen Berech nungsergebnis sie enthalten Mathematische Standardoperationen wie Addition Division usw werden direkt in den C Code umgewandelt Bl cke die sich nicht durch C Operation oder Standardfunktionen dar stellen lassen wie Integration Ableitung oder S ttigung werden ber Aufrufen von Metho den der rt 1ibsrc Bibliothek in den Code eingebettet 5 5 Einbettung in das Grundger st Die Einbettung des Regelalgorithmus erfolgt in die Entwicklungsumgebung Keil uVision Das mit dem Programm DAVE generierte Programmgrundger st liegt bereits als u Vision Projektdatei vor Lediglich der von Simulink generierte Regelalgorithmus muss eingebunden werden Wie f r C Programme blich erfolgt die Bekanntmachung der entsprechenden Quellcodeda tei durch Einbinden einer Header Datei gleichen Namens Aus der generierten Hauptdatei ert_main c wird die Funktion one step in die eigene Main Datei bernommen Der Aufruf dieser Funktion die ihrerseits den Regelalgorithmus zum Ablauf bringt muss in regelm igen Abstand erfolgen Dies erfolgt aus der Timer ISR GPT1_viTmr2
120. s dient im Folgenden als Basis f r weitere Regler modelle aus denen sich Programmcode f r Mikrocontroller und HDL Code f r FPGAs gene rieren l sst HDL steht dabei f r Hardware Description Language und ist ein Oberbegriff f r verschiedene Hardwarebeschreibungssprachen Die Entwicklung des Reglers erfolgt schrittweise von einem einfachen virtuellen Analogreg ler der noch keine Randbedingungen wie Messgr en oder Steuergr en ber cksichtigt bis zum endg ltigen Regler der bereits die Schnittstellen zur Hardware beinhaltet Insgesamt werden drei Reglerimplementierungen vorgestellt die sich obwohl sie auf dem gleichen Regelalgorithmus beruhen zum Teil erheblich unterscheiden Den Anfang bildet die Reglerimplementierung auf dem XC167 Mikrocontroller von Infineon Das Reglermodell muss hierf r um Elemente erweitert werden die benutzerdefinierten hardwarespezifischen Code zulassen Die Basissoftware in die der generierte Code eingebet tet wird ist mit der Software DAvE von Infineon erstellt worden Die beiden anderen Reglerimplementierungen haben das Spartan 3E FPGA als Ziel Beim ersten erfolgt die Codierung mit dem HDL Coder in Simulink Das Reglermodell muss hierf r auf Festkommaarithmetik umgestellt werden Des Weiteren ist es n tig einige nicht unterst tzte Elemente zu ersetzten Die letzte Implementierung des Reglers erfolgt mit dem System Generator von Xilinx Dieser erweitert Simulink um Modellbl cke die speziell f r
121. s durch so dass das Gate des MOSFET auf 12V liegt woraufhin dieser durchl sst 17 3 Der Regelkreis 3 20 4 Keil MCBXC167 Entwickler Board Abbildung 3 12 Keil MCBXC167 Entwickler Board Der digitale Regler wird im Zuge der Diplomarbeit sowohl auf einem Mikrocontroller als auch auf einem FPGA realisiert Als Mikrocontroller kommt der XC167 CI der sich auf dem Keil MCBXC167 Entwicklerboard befindet zum Einsatz Die Eckdaten dieses Boards wur den bereist in Abschnitt 2 2 erl utert Eine auf das Keil Board zugeschnittene Entwicklungsumgebung steht mit dem Programm Keil u Vision 3 zur Verf gung u Vision stellt einen Codeeditor Projektnavigation und Compi ler f r die C166 Architektur und deren Derivate zur Verf gung Die erstellten Programme f r den XC167 Mikrocontroller k nnen bereits am PC simuliert werden Um Programme auf den Mikrocontroller zum Ablauf zu bringen m ssen sie zuerst auf diesen bertragen werden Dies kann ber die serielle Schnittstelle aus der Entwicklungsumgebung heraus erfolgen oder ber das externe Programm Memtool von Infineon welches das kompilierte Programm auf den internen Flashspeicher des Mikrocontrollers schreibt Zudem besteht die M glichkeit das Programm w hrend der Ausf hrung auf dem Mikrocontroller zu debuggen Die benutzte Peripherie des Mikrocontrollers f r die Regelungsanwendung ist der integrierte Analog Digital Wandler zum Erfassen der Messwerte ein Timer der den Regelalgo
122. se verursachen Kosten die bei jeder hergestellten Baugruppe neu anfallen Software hingegen muss nur ein einziges Mal entwickelt werden Softwareentwickler stehen also vor einem Dilemma K rzere Entwicklungszeiten mehr Funk tionalit t und Komplexit t bei gleichen Anforderungen an Qualit t und Robustheit des Sys tems Neben dem Massenmarkt f r Elektronik m ssen h ufig eingebettete Systeme f r Individual l sungen und Kleinserien besonders f r den industriellen Einsatz entwickelt werden Auch hier gilt dass sich die Entwicklungszeiten aufgrund der Marktgegebenheiten st ndig verk r zen Gerade in diesem Bereich werden h ufig programmierbare Logikbausteine eingesetzt vor allem wenn zeitkritische Anwendungen realisiert werden sollen Einen flexiblen Ansatz bieten hierzu Field Programmable Gate Arrays kurz FPGAs Auf ih nen lassen sich komplexe logische Schaltungen erstellen und vor Ort programmieren Gehen die St ckzahlen ber die von Kleinserien hinaus K nnen die entwickelten Schaltungen von FPGA Prototypen auf kosteng nstigere Application Specific Integrated Circuits kurz ASICs bertragen werden Um vor dem Hintergrund dieser komplexen Technologien produktive Entwicklungsarbeit leisten zu k nnen bedarf es moderner Methoden der Hard und Softwareentwicklung Diese Diplomarbeit besch ftigt mit einer dieser Methoden dem so genannten Model based Design genauer gesagt mit der Codegenerierung aus einem simulierbaren grap
123. sfl che des Luftspalts A g zr 1 77 10 m2 Querschnittsfl che des Ankers A 8A 1 77 10 m 26 4 Modellbildung mit Matlab Simulink Magnetische Feldkonstante u 7 Az 107 m Permabilit tskonstante Eisen u 1200 Fallbeschleunigung g 9 8Ims Aufstellen der Gleichungen Ausgangsgleichung des Models ist F Kraftaufden Anker 1N Magnetkraft 1N Masse des Ankers lkg a 3 1 Fy Fy m g m g Erdbeschleunigung m 2 welche aussagt dass die Kraft die den Anker in Bewegung setzt gleich der Kraftdifferenz zwischen der Gewichtskraft des Ankers und die auf ihn wirkende magnetische Anziehungs kraft ist Aus dem zweiten Newtonschen Axiom dem Aktionsprinzip x Ankerposition 1m F a X m m X Ankerbeschleunigung L4 S folgt F m X und 32 m x F m g Dies ist die Differentialgleichung des Systems Gleichungen werden so bezeichnet wenn die Ableitung einer unbekannten Funktion enthalten ist Die Kraft die ein Magnetfeld auf einen K rper aus bt lasst sich folgender Formel herleiten aW N 3 4 EF Fa Wae Energiegehalt des Magnetfelds IW 1 x S mag 27 4 Modellbildung mit Matlab Simulink Ferner gilt L Induktivit t der Spule m 1H 3 5 W L i Nl i Stromstr rke 1A Die Magnetkraft ist somit die Kraft die sich durch Ver nderung der im Magnetfeld gespei cherten Energie ergibt wenn sich der Anker bewe
124. st rker zum Einsatz Die einzelnen Komponenten werden im n chsten Unterabschnitt n her beschrieben Abbildung 3 4 zeigt schematisch den Regelkreis des Diplomarbeitsprojekts FPGA Mikrocontroller e t y PWM IR Distanzsensor PWM Pulsweitenmodulator ADU Analog Digital Umsetzer Abbildung 3 4 Regelkreis des Hubmagneten 12 3 Der Regelkreis 3 2 Komponenten des Regelkreises 3 2 1 Der Hubmagnet Abbildung 3 5 Hubmagnet Die Regelstrecke des Versuchsaufbaus bildet ein eigens hierf r konstruierter Hubmagnet dessen Anker das ist der bewegliche Teil des Hubmagneten entgegen der Schwerkraft auf einer vorgegebenen H he gehalten werden soll Der Hubmagnet besteht aus zwei aufeinander stehenden parallel geschalteten Spulen mit je weils 1900 Windungen Die beiden Spulen sind von einem Metallrahmen umgeben der die magnetischen Feldlinien des Hubmagneten b ndelt Im innern der Spulen befindet sich der Anker der in seiner L ngsachse beweglich ist Am Anker ist eine Scheibe befestigt die der Messsensorik als Bezugsfl che dient Die Funktionsweise ist folgende Wird eine Spannung an die Spulen angelegt flie t ein ent sprechender Strom Das dadurch erzeugte Magnetfeld zieht den Anker ins Spuleninnere Da durch verk rzt sich der Luftspalt wodurch die Kraft auf den Anker erh ht wird Es ist ersicht lich dass wenn der Anker auf einer bestimmten H he gehalten werden soll regulative Maf nahm
125. t2 044998 1689453125 Constant Integrator Saturation1 Constant Serial in Abbildung 6 22 System Generator PID Reglermodell Wie schon die vorangegangenen Regelerimplementierungen kommt auch hier wieder ein PID Regelalgorithmus zum Einsatz Die drei parallelen Pfade f r Proportional Integral und Differenzialanteil befinden sich in der Mittle von Abbildung 6 22 Zuvor wird aber erst die Regeldifferenz zwischen dem Istwert der Hubh he und der Sollwertvorgabe aus dem Seri al in gebildet F r die Integration und das Differenzieren stehen keine Bl cke im System Generator zur Ver f gung Sie wurden aus diesem Grund in den Subsystemen Integrator Abbildung 6 23 und Derivation Abbildung 6 24 nachgebildet F r das Subsytem des Integrierers wurde das sehr einfache Verfahren der Vorw rtsintegration gew hlt Dieses basiert darauf dass der aktuelle Wert der Regeldifferenz mit der Abtastzeit multipliziert und zum letzten Wert hinzuaddiert wird So erh lt man einen angen herten Wert f r das Integral der Regeldifferenz ber die Zeit AddSub6 Registers Constant Abbildung 6 23 Integrator Subsystem 83 6 FPGA Implementierung des Reglers Der Differenzialanteil verst rkt die nderung der Regeldifferenz Um die H he dieser nde rung zu ermitteln wird der Vorg ngerwert in einem Register zwischengespeichert und mit Verz gerung an ein Subtraktionsglied weitergeleitet Die Differenz aus aktuellem Eingabe
126. ta out 2 xor data out 1 xor data out 0 process data strobe clk 2 begin new data 0 if data strobe 1 and parity data out 8 then data data out 7 downto 0 new data 1 end if end process cdiv clkDiv Port map clk ce clk 2 clk 38400 kcu kcuart9 rx Port map serial in data out data strobe clk 38400 end Behavioral clkDiv vhd library IEEE use IEEE STD_LOGIC_1164 ALL use IEEE STD_LOGIC_ARITH ALL use IEEE STD_LOGIC_UNSIGNED ALL Uncomment the following library declaration if instantiating any Xilinx primitives in this code library UNISIM use UNISIM VComponents all xor data_out 3 Glk 23 116 Anhang D Code Listings clkDiv vhd entity clkDiv is Port clk in STD_LOGIC ce in STD_LOGIC Clk 2 out STD LOGIC Clk 16 out STD LOGIC end clkDiv architecture Behavioral of clkDiv is signal clk 2 int std logic begin Clk 2 lt clk 2 int process clk ce variable clk int std logic 0 begin if clk event and clk 1 then if ce 1 then Clk int not clk int end if clk 2 int lt clk int end if end process process clk 2 int variable cnt integer range 0 to 41 begin if clk 2 int event and clk 2 int 1 then Cclk 16 lt 0 cnt cnt 1 if cnt 41 then clk 16 lt 1 cnt 0 end if end if end process end behavioral 117 Anhang D Code Listings D4 HDL
127. to 0 Output of ADC A signal ADC DATA B STD LOGIC VECTOR 13 downto 0 Output of ADC A signal IST IN STD LOGIC VECTOR 13 downto 0 Output of ADC A signal RESET STD LOGIC signal ce std logic signal ce out std logic begin PWM EN lt 1 Clk smp enable lt 1 reset lt 0 ce lt 1 process new_data begin if new data event and new data 1 then Soll in lt serial data end if end process process smp done begin if smp done event and smp done 1 then PWM Value Stell out end if end process process clk smp begin if clk smp event and clk smp 1 then IST in lt ADC DATA A end if end process pwml PWM Port map clk ce PWM OUT PWM VALUE PWM EN Reglerl FPGA Regler PORT map clk smp reset clk smp enable Ist in Soll in Stell out ADC1 ADC OVER SPI PORT map clk System Clock 50 MHz ce RESET AMP CS AMP SHDN PI MOSI PI MISO PI SCK DC DATA A DC DATA B D CONV AC CLR AC CS PI SS B F CEO PGA INIT B seriall uart Port map clk ce serial in serial data new data Clk wrl clk wrapper Port map clk ce clk smp smp done pDppspucouu nuunuu nj end rtl ce out 119 Anhang D Code Listings clk wrapepr vhd library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL Uncomment the following library declaration if instantiating any Xilin
128. tput Sopenfile externs include ASC1 h Sclosefile externs lt LibCacheExtern externs gt 676 endfunction oe oe Function Start gt gt gt 3 gt gt gt gt gt gt gt oe oe oe function Start block system Output lt Type gt Block Name assign sl Soll LibBlockOutputSignal 0 0 assign sl P LibBlockOutputSignal 1 0 assign sl I LibBlockOutputSignal 2 0 tassign sl D LibBlockOutputSignal 3 0 Sendfunction oe oe Function Outputs SSSSSS SS SSS SSS SSS 5 SSS SSS S SS SSS SS SS SSS SS SSS SSS SSS oe oe oe oe Purpose Code generation rules for mdlOutputs function oe oe oe oe oe function Outputs block system Output assign sl Soll LibBlockOutputSignal 0 0 assign sl P LibBlockOutputSignal l 0 assign sl I LibBlockOutputSignal 2 0 lt assign sl D LibBlockOutputSignal 3 T 0 sl Soll param x sl P p faktor sl I i faktor sl D d faktor oF endfunction oe oe Function Terminate 22222222 22 222 2 2222222 22222222 22222 2 22222222222222222222 2 22 2 oe oe oe function Terminate block system Output lt Type gt Block Name Sendfunction EOF serial IO tlc Anhang D Code Listings D2 Generierter C Code MAIN C RR KKK k
129. twerterfassung wird der erste der 16 Kan le des 10 Bit AD Wandlers des XC167 ver wendet Der zyklische Aufruf des Algorithmus wird mit dem Timer 2 sichergestellt in dessen ISR der entsprechende Funktionsaufruf durchgef hrt wird Neben der verwendeten Hardware spielt auch der zeitliche Ablauf des Mikrocontrollerpro gramms eine wesentliche Rolle Ein Betriebsystem kommt nicht zum Einsatz weshalb der zeitliche Ablauf selbst organisiert werden muss Die in diesem Projekt angewandte Methode ist die Ablaufsteuerung unter Zuhilfenahme der Interrupt Priorit t Interrupt Service Routinen mit hohem Interruptlevel l sen solche mit nied rigerem Interruptlevel ab Je wichtiger die Ausf hrung eines Programmteils ist desto h her ist die zugeordnete Interrupt Priorit t Um die Regelung optimal zu gestalten muss nach jedem Abtastzeitpunkt m glichst schnell ein aktueller Stellwert berechnet werden Also hat f r den Regler das Messen des Abtastwerts mit anschlie ender Berechnung des Stellsignals h chste Priorit t Folglich wird auch der In terruptlevel f r den Timer der den Regelalgorithmus aufruft hoch bei Interruptlevel 13 an gesetzt Des Weiteren wird der Aufruf des Algorithmus nicht nur durch eine Variable getriggert was durchaus denkbar w re sondern direkt in der Interrupt Service Routine ausgef hrt Dies ver hindert ein Unterbrechen durch andere Interrupts Die Abarbeitung seriell eingehender Daten ist weniger wichtig Es muss
130. ung 3 8 zeigt dabei die Ausgangsspannung in Abh ngigkeit von der Objektdistanz 14 3 Der Regelkreis Analog output voltage Vo V 0 4 S8 12 16 20 24 28 32 36 40 Distance to reflective object L cm Abbildung 3 8 Ausgangspannung in Abh ngigkeit von der Objektdistanz 2 Der mathematische Zusammenhang zwischen Spannung U und Abstand x ist hierbei 3 x Abstand m U Spannung am Ausgang V x f rx 4cm U Y Y Steigung Vm Y Offset V Die beiden Parameter Y und Y werden wie folgt ermittelt y U U xx PES X X U U Spannungen aus Probemessungen a One X X Messdistanzen 2 z ee x nr x Die dazu notwendigen Wertepaare aus Spannung und Entfernung wurden direkt am Ver suchsaufbau ermittelt Die Umwandlung ist notwendig um den Sensorwert der den Istwert in der Regelung repr sentiert mit dem Sollwert vergleichen zu k nnen und daraus eine Regel differenz zu bilden Es wurden die Werte Y 0 10151Vm und Y 0 15310V ermittelt Abbildung 3 9 zeigt die Graphen f r berechnete und gemessene Spannung bei gleicher Ob jektdistanz 15 3 Der Regelkreis 2 5 Rechnung 1 5 Messung Spannung V 0 5 0 04 0 05 0 06 0 07 0 08 0 09 0 1 0 11 0 12 0 13 Distanz m Abbildung 3 9 Spannung in Abh ngigkeit der Entfernung 3 2 3 PWM Verst rker Die Ansteuerung des Hubmagneten erfolgt
131. ung dient Er besteht aus zwei parallel geschalteten Spulen einem Joch aus Stahl sowie dem Anker der durch die Regelung in einer festge legen Position gehalten werden soll Die folgenden Vereinfachungen wurden f r das Modell Hubmagneten vorgenommen Magnetische Streufelder die au erhalb des Jochs verlaufen wurden vernachl ssigt Die Ankerbewegung verl uft reibungsfrei Innenwiderstand der Spannungsquelle wird als O angenommen Hffekte die sich durch die Magnetisierung der fer romagnetischen Werkstoffe ergeben bleiben un ber cksichtigt Arbeits luftspalt Anker Abbildung 4 3 Elemente des Hubmagneten im Schnittbild 25 4 Modellbildung mit Matlab Simulink 4 2 1 Physikalische Herleitung Abmessungen Parameter und Konstanten Abbildung 3 4 zeigt die Abmessungen des Hubmagneten Aus ihnen und den elektromagneti schen Eigenschaften werden die Parameter f r das Simulationsmodell hergeleitet Abbildung 4 4 Abmessungen des Hubmagneten Links im Querschnitt von Vorne rechts Ansicht von unten Windungszahl n 1900 Ohmscher Widerstand der Spulen R 7 6Q Ankermasse m 55g Hubstrecke des Ankers h 90mm 0 09m Minimale Eintauchtiefe des Ankers 18mm Amin Minimaler Luftspalt Limin lu lp gt 0 012m Lmin Mittlere Jochl nge I 1 21 0 168m Querschnittsfl che des Jochs A 2ab 2 6mm 35mm 420mm 4 210 m 2 Querschnitt
132. unktionen und digi tale Filter zu finden Die beiden oben aufgef hrten Gruppen sind in folgende Kategorien eingeteilt Basic Elements Standard Bl cke Communication Bl cke f r digitale Kommunikationssysteme Control Logic Steuerung und Zustandsautomaten Data Types Datenkonvertierung Ein Ausgange DSP Digitale Signalverarbeitung Math Mathematische Funktionen Memory Bl cke f r Speicherzugriff Shared Memory Implementierung f r Shared Memory Zugriff Tools Codegenerierung Resourcensch tzung Analyse XILINX Extrem DSP Blockset Enth lt Bl cke f r das BenADDA FPGA Entwicklungsboard von Nallatech das speziell f r Digitale Signalverarbeitung konzipiert wurde und wird daher an dieser Stelle nicht n her erl utert 24 4 Modellbildung mit Matlab Simulink 4 2 Das Modell des Hubmagneten in Simulink Wie bereits geschildert liegt jeder Computersimulation ein Simulationsmodell zu Grunde Da ein Modell eine Abstraktion der Wirklichkeit ist muss dies nur genau genug sein um die n tigen Schl sse aus ihm zu ziehen Parameter die nur unwesentlichen Einfluss auf das Ver halten haben werden vernachl ssigt Die Anforderung an dieses Modell ist dass es den real existierenden Hubmagneten pr zise genug nachbildet um einen Regler zu entwerfen der sich auch im praktischen Einsatz auf einem Mikrocontroller oder FPGA bew hrt Abbildung 4 3 zeigt das Schnittbild des Hubmagneten das als Grundlage der Modellbild
133. vor und wird an den PWM Eingang bergeben und dort gehalten bis ein neuer Stellwert ermittelt wurde 86 6 FPGA Implementierung des Reglers 6 3 1 3 Regler Ausgang PWM OUT Constant4 Black Box Puit VALUE Saturation Registers Abbildung 6 29 Reglerausgang Das Erste Glied des Reglerausgangs bildet ein weiteres Saturation Subsystem Dieses be grenzt den durch den PID Regler ermittelten Stellwert auf 0 bis 12 V Durch Multiplikation mit 833 4 erh lt man einen Wert von 0 bis 10000 Dieser wird in einen vorzeichenlosen 14 Bit Wert konvertiert Dies entspricht den Vorgaben des VHDL Moduls f r die Pulsweiten modulation welches in dem Black Box Element eingebettet ist Die Gateway Out Komponente weist dem Reglerausgang einen Kontakt am FPGA zu 87 6 FPGA Implementierung des Reglers 6 3 2 Codegenerierung Um HDL Code aus dem eben vorgestellten Reglermodell zu generieren muss ein System Generator Block Abbildung 6 30 in dieses eingef gt werden Durch Doppelklick auf diesen wird ein Dialogfenster Abbildung 6 31 ge ffnet in dem unter anderem Einstellungen f r die Codegenerierung vorgenommen werden k nnen System Gener tor untitled Xlinx System Generator Compilation HDL Netkst Part Spartande xc3s500e 419320 Target directory ret Synthesis tool Hardware description language System 2 Generator XST z VHOL z FPGA clock period ns Clock pin location Abbildung 6 30 System Generat
134. voraus so summiert sich der Integralwert des Reglers immer weiter auf obwohl die Ober oder Untergrenze des Stellsignals bei weitem berschritten ist Selbst wenn die Regelstrecke sp ter wieder einwandfrei funktioniert wirkt der aufsummierte Integralanteil so dominant auf das Stellsignal dass keine Regelung erfolgt Demzufolge muss nicht nur der Ausgangswert des Integrators sondern auch der im Integrator gespeicherte Wert eingeschr nkt werden Um dies zu realisieren werden die Signalleitungen vor und hinter dem am Reglerausgang befindlichen Saturation Block voneinander subtrahiert Die Differenz ist der Wert um den der Stellwert zu gro oder klein ist Er wird durch ein Subtraktionsglied vom Eingang des Integra tor Blocks abgezogen Mit dieser Methode wird verhindert dass der Integralanteil berl uft und der Regler reaktionsschnell bleibt K Ts z 1 Discrete Time Integrstor Saturation Abbildung 4 20 Anti Wind Up Algorithmus Abbildung 4 20 zeigt den diskreten Regler mit Rate Transiton Block am Eingang und Anti Wind Up Algorithmus Dieser Regler dient als Grundlage fiir die Implementierung auf Mik rocontroller und FPGA rz fe m m Rate Transition u X U gt x K Ts f z Ln Stell Discrete Time aturation TO PWM Integrator K z 1 Tsz D Discrete Derivative Constant Soll Abbildung 4 21 Diskreter PID Regler 45 5 Implementierung des Reglers auf dem Infine
135. x primitives in this code library UNISIM use UNISIM VComponents all entity clk wrapper is Port clk in STD LOGIC ce in STD LOGIC Clk smp out STD LOGIC smp done out STD LOGIC end clk wrapper architecture rtl of clk wrapper is signal cnt integer range 0 to 1900000 begin process clk ce variable clk smp int std logic 0 begin if clk event and clk 1 then if ce 1 then cnt lt cnt 1 smp done lt 0 if cnt 0 then Clk smp int not clk smp int end if if cnt 1000 then smp done lt 1 end if if cnt 950000 then Clk smp int not clk smp int end if if cnt 1900000 then cnt lt 0 end if Clk smp lt clk smp int end if end if end process end rtl 120

Download Pdf Manuals

image

Related Search

Diplomarbeit diplomarbeit diplomarbeit beispiel diplomarbeit drucken diplomarbeiten24 diplomarbeit bbs diplomarbeit englisch diplomarbeit musiktherapie diplomarbeit binden lassen diplomarbeit vorlage diplomarbeit binden diplomarbeitsdatenbank login diplomarbeit schreiben lassen diplomarbeit drucken lassen diplomarbeit datenbank diplomarbeit themen diplomarbeitsthemen hak diplomarbeit meduni wien diplomarbeit korrigieren lassen

Related Contents

北芝単相モータ - 北芝電機株式会社  Technoline WS 9116 weather station  Global Mapper User`s Manual  Manuel d`utilisation Du module puissance US9004  Guide d`utilisation de la maisonnette  Wiley Beginning XSLT and XPath: Transforming XML Documents and Data  Apollo SL70 Installation Manual  Baby bureau 2 en 1 Manuel d`utilisation  User Guide: - Chelmsford Borough Council  VE Series Printer Operation Manual V1  

Copyright © All rights reserved.
Failed to retrieve file