Programmieren von Mikrocontrollern mit EasyKit © Festo Didactic GmbH & Co. KG 1 Mikrocontrollerprogrammierung mit EasyKit Stand: 03/2010 Autoren: Reinhard Pittschellis, Monika Bliesener © Festo Didactic GmbH & Co. KG, 73770 Denkendorf, 2010 Internet: www.festo-didactic.com E-Mail: [email protected] Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts verboten, soweit nicht ausdrücklich gestattet. Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte vorbehalten, insbesondere das Recht, Patent-, Gebrauchsmuster- oder Geschmacksmusteranmeldungen durchzuführen. Hinweis Soweit in dieser Broschüre nur von Lehrer, Schüler etc. die Rede ist, sind selbstverständlich auch Lehrerinnen, Schülerinnen etc. gemeint. Die Verwendung nur einer Geschlechtsform soll keine geschlechtsspezifische Benachteiligung sein, sondern dient nur der besseren Lesbarkeit und dem besseren Verständnis der Formulierungen. 2 © Festo Didactic GmbH & Co. KG EasyKit Inhaltsverzeichnis Inhaltsverzeichnis ............................................................................................................................................ 3 Bestimmungsgemäße Verwendung ................................................................................................................. 5 1 Didaktische Hinweise .................................................................................................................................... 6 2 Einführung .................................................................................................................................................... 8 2.1 Historischer Rückblick ............................................................................................................................ 8 2.2 Anwendungen von Mikrocontrollern ...................................................................................................... 9 2.3 Funktionsweise von Mikroprozessoren .................................................................................................. 9 3 Kennenlernen von EasyKit........................................................................................................................... 12 3.1 Auspacken............................................................................................................................................ 12 3.2 Das Board mit dem Mikrocontroller ..................................................................................................... 12 3.3 Installation von EasyLab....................................................................................................................... 14 3.4 Installation des Lernprogramms Mikrocontroller ................................................................................. 14 4 Erste Schritte mit EasyLab........................................................................................................................... 15 4.1 Grundlagen: Signalarten ...................................................................................................................... 15 4.2 Grundlagen: Blockschaltbilder ............................................................................................................. 17 4.3 Funktionsblöcke in EasyLab - Datenflussdiagramme ........................................................................... 18 4.4 Bedienung von EasyLab ....................................................................................................................... 19 5 Variablen und Schrittketten ........................................................................................................................ 21 5.1 Variablen und Konstanten .................................................................................................................... 21 5.2 Schrittketten ........................................................................................................................................ 21 6 Logische Verknüpfungen ............................................................................................................................ 23 7 Programmieren mit Flip-Flops ..................................................................................................................... 24 7.1 Flankenerkennung................................................................................................................................ 24 7.2 Flip-Flops .............................................................................................................................................. 24 8 Binäre und Gleitkommazahlen .................................................................................................................... 26 8.1 Grundlagen: Binäres Zahlensystem und Gleitkommazahlen ................................................................ 26 8.2 Typumwandlung ................................................................................................................................... 27 8.3 Signalgenerierung ................................................................................................................................ 28 8.4 Multiplexer und Demultiplexer ............................................................................................................. 29 9 Analog-Digital-Wandler ............................................................................................................................... 30 9.1 Grundlagen: Phototransistor ................................................................................................................ 30 9.2 Grundlagen: Analog-Digital-Wandler.................................................................................................... 30 9.3 Analoge Eingangskanäle in EasyKit ...................................................................................................... 31 10 Ansteuerung von Gleichstrommotoren ..................................................................................................... 34 10.1 Grundlagen: Digital-Analog-Wandler.................................................................................................. 34 10.2 Grundlagen: Gleichstromotore ........................................................................................................... 35 10.3 Grundlagen Pulsweitenmodulierter Ausgängskanale......................................................................... 37 11 Schnelle Zählereingänge ........................................................................................................................... 38 11.1 Grundlagen: Lichtschranken .............................................................................................................. 38 11.2 Schnelle Zählereingänge .................................................................................................................... 38 12 Regelungstechnik mit EasyKit ................................................................................................................... 39 12.1 Grundlagen: Steuern und Regeln ....................................................................................................... 39 12.2 Reglertypen in EasyLab ...................................................................................................................... 43 13 Übersicht über die Funktionsblöcke in EasyKit ......................................................................................... 45 Arbeitsblatt 1 ................................................................................................................................................. 46 © Festo Didactic GmbH & Co. KG 3 Mikrocontrollerprogrammierung mit EasyKit Arbeitsblatt 2 ................................................................................................................................................. 48 Arbeitsblatt 3 ................................................................................................................................................. 50 Arbeitsblatt 4 ................................................................................................................................................. 52 Arbeitsblatt 5 ................................................................................................................................................. 54 Arbeitsblatt 6 ................................................................................................................................................. 56 Arbeitsblatt 7 ................................................................................................................................................. 58 Arbeitsblatt 8 ................................................................................................................................................. 60 Arbeitsblatt 9 ................................................................................................................................................. 62 Arbeitsblatt 10 ............................................................................................................................................... 64 Arbeitsblatt 11 ............................................................................................................................................... 66 4 © Festo Didactic GmbH & Co. KG EasyKit Bestimmungsgemäße Verwendung Der EasyKit Starter ist nur zu benutzen: • für die bestimmungsgemäße Verwendung im Lehr- und Ausbildungsbetrieb • in sicherheitstechnisch einwandfreiem Zustand Die Komponenten des Pakets sind nach dem heutigen Stand der Technik und den anerkannten sicherheitstechnischen Regeln gebaut. Dennoch können bei unsachgemäßer Verwendung Gefahren für Leib und Leben des Benutzers oder Dritter und Beeinträchtigungen der Komponenten entstehen. Das Lernsystem von Festo Didactic ist ausschließlich für die Aus- und Weiterbildung im Bereich Automatisierung und Technik entwickelt und hergestellt. Das Ausbildungsunternehmen und/oder die Ausbildenden hat/haben dafür Sorge zu tragen, dass die Auszubildenden die Sicherheitsvorkehrungen, die in diesem Arbeitsbuch beschrieben sind, beachten. Festo Didactic schließt hiermit jegliche Haftung für Schäden des Auszubildenden, des Ausbildungsunternehmens und/oder sonstiger Dritter aus, die bei Gebrauch/Einsatz dieses Gerätesatzes außerhalb einer reinen Ausbildungssituation auftreten; es sei denn Festo Didactic hat solche Schäden vorsätzlich oder grob fahrlässig verursacht. © Festo Didactic GmbH & Co. KG 5 Mikrocontrollerprogrammierung mit EasyKit 1 Didaktische Hinweise Dieser Band ist Teil des Lernsystems EasyKit. EasyKit ist das Ergebnis eines vom Bundesministerium für Bildung und Forschung geförderten Verbundprojektes, das das Ziel verfolgte, ein einfach handhabbares System für die Erstellung von Embedded Controllern zu entwickeln. Das Ergebnis war so positiv, dass das BMBF sich entschlossen hat, eine große Anzahl von Starterkits zu finanzieren, welche dann an Schulen verteilt werden konnten. Das Ergebnis halten Sie nun in Händen. Die Idee von EasyKit ist es, Steuerungen mit Mikrocontrollern nicht mehr aus einzelnen Chips aufzubauen (was immer Experten erfordert), sondern diese einfach aus konfektionierten Bausteinen zusammenzusetzen. Im Starterkit ist dies so realisiert, dass die Ein- und Ausgangsbeschaltungen des Mikrocontrollers durch EasyKit-Bausteine einfach auf das EasyBoard aufgesteckt werden. Ein einfacher Hardwareaufbau ist aber nur sinnvoll, wenn die Programmierung anschließend auch einfach zugänglich ist. Nun kommt man beim Programmieren nie ohne irgendwelche Fachkenntnisse aus, aber bei EasyLab – so heißt die Software, die im Rahmen des Projektes entstanden ist – kann man sich beim Programmieren viel stärker auf die zu realisierende Aufgabe konzentrieren als auf Programmiertechniken, weil EasyLab mächtige Funktionsbausteine zur Verfügung stellt, mit denen selbst Regelungstechnik relativ einfach umsetzbar wird. EasyLab erlaubt die Programmierung von Schrittketten oder Datenflussdiagrammen. Beide Beschreibungsverfahren sind in der Technik üblich, um Abläufe zu beschreiben. Dieses Arbeitsbuch enthält einen Theorieteil. Jedes Kapitel wird eingeführt durch die zugehörigen Lernziele sowie einen Hinweis, welches Arbeitsblatt zum Kapitel gehört. Die Informationen sind zum einen Basisinformationen, die ganz allgemeinen Charakter haben (z.B. Drehzahlmessung), zum anderen spezifische Anleitungen, wie in EasyLab programmiert wird. Am Ende dieses Arbeitsbuches befinden sich die Arbeitsblätter mit eingedruckten Lösungen (in rot). Diese Lösungen haben oft nur Vorschlagscharakter, denn oft gibt es mehrere Möglichkeiten, ein technisches Problem zu lösen. Wenn die Lösung der Schüler die Aufgabe erfüllt, ist diese richtig! Die in den Lösungen angesprochenen Beispielprogramme finden Sie ebenfalls auf der CD. Die Arbeitsblätter enthalten Verständnisfragen, welche dazu dienen, Wissen abzufragen und einzuüben, und Aufgaben, die mit der Programmiersoftware EasyLab und dem EasyBoard gelöst werden müssen. Die beiliegende CD enthält EasyLab. Sie dürfen die Software so oft installieren, wie sie möchten. EasyLab verfügt über einen Simulationsmodus. Daher können die Schüler Ihre Lösungen auch ohne das EasyBoard testen. Allerdings ist die Simulation nicht perfekt, das Zeitverhalten, das die Programme zeigen, wenn es auf dem Mikrocontroller ausgeführt wird, kann nicht richtig wiedergegeben werden. Logische Fehler im Programmablauf lassen sich in der Simulation aber gut finden und eliminieren. EasyLab kann mit oder ohne Beispielprogramme installiert werden – dies können Sie während der Installation entscheiden. Ob sie die Theorieteile des Arbeitsbuches komplett oder teilweise ausdrucken und den Schülern zur Verfügung stellen, bleibt Ihnen überlassen. Sie können die Schüler auch mit dem pdf des Buches arbeiten lassen. Allerdings ist es nicht erlaubt, die Copyrightvermerke zu entfernen! Ob die Schüler sich die Inhalte aus dem Buch selbst erarbeiten oder Sie als Lehrer diese vortragen, obliegt ebenfalls Ihrer Entscheidung. Die Arbeitsblätter enthalten auf der ersten Seite immer einen sehr kurz gefassten Abriss des notwendigen Theoriewissens (meist in Tabellenform), auf der zweiten Seite die Aufgaben. Weiterhin enthält die mitgelieferte CD ein Lernprogramm, das Sie ebenfalls beliebig oft installieren dürfen. Es führt in anschaulicher Form in die Thematik ein und erläutert, was Mikrocontroller sind, wozu sie benötigt werden und wie Sie funktionieren. Das Lernprogramm ist allerdings keine Einführung in das Programmieren 6 © Festo Didactic GmbH & Co. KG EasyKit mit EasyLab. Die Lernzeit beträgt ca. 45 min. Alle Erläuterungen in diesem Buch gehen davon aus, dass die Schüler grundlegende Kenntnisse in der Bedienung eines PC mitbringen. Begriffe wie Anklicken, Ziehen, Fenster oder Menue sollten den Schülern vertraut sein. Ein möglicher Unterrichtsverlauf könnte also folgendermaßen aussehen: 1. Einführung in das Thema durch Leitfragen o Wo werden Mikrocontroller eingesetzt? o Wer nutzt Mikrocontroller? o Wer stellt sie her? o Wer programmiert sie? 2. Die Schüler können dann individuell (z.B. als Hausaufgabe) das Lernprogramm bearbeiten 3. Einführung in die grundsätzliche Arbeitsweise durch Vorführung, am besten mit PC mit EasyLab, Beamer und einem EasyBoard 4. Dann können die Schüler in kleineren Gruppen die Arbeitsblätter bearbeiten. Dabei können Sie als Lehrer jeweils eine kleine Einführung in die jeweils notwendigen Wissensgebiete geben oder die Schüler das selbst erarbeiten lassen. Wenn die Schüler selbst das Wissen erarbeiten, können sie anschließend die Ergebnisse der Gruppenarbeit präsentieren. Dazu benötigen die Schüler auf jeden Fall einen PC mit EasyLab und natürlich die Arbeitsblätter. Falls nicht genügend EasyBoards für jede Gruppe zur Verfügung stehen, können die Schüler zunächst ihr Programm im Simulationsmodus testen. Wenn es in der Simulation zufriedenstellend arbeitet, können sie eines der EasyBoards nutzen und das Programm real testen. Die Arbeitsblätter sind so gestaltet, dass eine Doppelstunde zur Bearbeitung ausreichen sollte (jeweils mit kurzer Einführung, eigenständiger Bearbeitung und Test mit dem EasyBoard). Über die Aufgabenstellung der Arbeitsblätter hinaus können viele weitere Aufgaben mit EasyKit gelöst werden. Alle mitgelieferten Aufgaben beziehen sich nur auf das EasyBoard und das Applikationsboard. Natürlich können auch andere Hardwarekomponenten mit EasyKit gesteuert werden. So lassen sich natürlich Taster, Schalter, Sensoren, Lampen, LED’s und viele andere Dinge mit EasyKit steuern. Diese müssen Sie dann aber selbst beisteuern. Wollen Sie mit Mehr Ein- und Ausgangskanälen arbeiten, kann das EasyBoard durch weitere Bausteine erweitert werden, so dass insgesamt bis zu 4 digitale Eingangskanäle, 4 digitale Ausgangskanäle, 4 analoge Eingangskanäle sowie 4 analoge Ausgangskanäle zur Verfügung stehen. Es sit möglich, das EasyBoard konventionell mit C++ zu programmieren. Der entsprechende Compiler und die notwendige Toolchain wird mit EasyLab installiert. Auf der CD ist ein File „easykit-starter-c.pdf“ enthalten, dass die Vorgehensweise beim Programmieren mit C knapp darstellt. Allerdings ist dies eher für Experten empfehlenswert. EasyKit ist eigentlich zur Programmierung mit Easylab gedacht. Nun wüschen wir Ihnen viel Erfolg mit Ihrem EasyKit Starter! © Festo Didactic GmbH & Co. KG 7 Mikrocontrollerprogrammierung mit EasyKit 2 Einführung 2.1 Historischer Rückblick Bereits im 16. Jahrhundert haben sich Mathematiker mit dem Entwurf von Rechenmaschinen beschäftigt. So hat Gottfried Wilhelm Leibniz um 1670 eine Rechenmaschine konstruiert, die nicht nur addieren und subtrahieren, sondern auch multiplizieren und dividieren konnte. Diese Maschine war sehr kompliziert und konnte erst in unserer Zeit tatsächlich hergestellt werden. Im 16. Jahrhundert waren noch keine Maschinen verfügbar, die die mechanischen Einzelteile mit der benötigten Präzision herstellen konnten. Die Maschine hat aber tatsächlich funktioniert. Sie basierte im Übrigen bereits auf dem von Leibniz endeckten binären Zahlensystem. Die ersten Computer wurden Ende des zweiten Weltkrieges entwickelt, basierten zunächst auf Relais, dann Elektronenröhren. Sie waren sehr teuer, sehr groß und ausschließlich von Spezialisten zu bedienen. Kennzeichnend für diese Computer war und ist die von-Neumann-Architektur. Diese ist gekennzeichnet von einer schrittweisen Befehlsausführung und die Verwendung binärer Zahlen. Daher sind bis heute die Taktfrequenz (d.h. die Anzahl der pro Sekunde ausgeführten Befehle) und die Anzahl der gleichzeitig bearbeitbaren Bits (binary digit – 0 oder 1) die wichtigste Leistungsmerkmale aller Computer geblieben. Eine Taktfrequenz von 1 MHz bedeutet z.B., dass pro Sekunde 1 Million Befehle ausgeführt werden. Spricht man von einem 8 Bit Prozessor, bedeutet das, dass der Mikroprozessor in einem Rechenschritt 256 verschiedene Zahlen unterscheiden kann. In den Computerwissenschaften wird beim Zählen üblicherweise mit Null begonnen, so dass ein 8-Bit Mikroprozessor also Zahlen zwischen 20 (=0) und 28-1 (=255) unterscheiden kann. 1949 wurde der Transistor erfunden. Mit dem Transistor ist ein kontaktloses Schalten wie bei der Elektronenröhre möglich. Der Transistor ist aber viel kleiner, verbraucht weniger Strom und ist zuverlässiger als eine Röhre. 1961 gelang, mehrere Transistoren auf einem Siliziumchip unterzubringen und damit den Platzbedarf und Stromverbrauch nochmals zu verringern. Diese integrierten Schaltkreise waren die Grundvoraussetzung für die preiswerte Massenproduktion von Computern, die bereits 20 Jahre späte einsetzte. Nur 10 Jahre später, also 1971, konnte man bereits die komplette CPU (Central Processing Unit Rechenwerk) eines Computers auf einem Chip unterbringen. Damit war der Mikroprozessor geboren. Der erste Mikroprozessor (der 4004 von Intel) hatte ein nur 4 Bit breites Rechenwerk und eine Taktfrequenz von unter einem Megahertz und war entsprechend leistungsschwach. Moderne Mikroprozessoren haben ein 32 oder 64 Bit Rechenwerk und arbeiten mit Taktfrequenzen über 1 GHz, d.h. es werden mehr als eine Milliarde Befehle pro Sekunde ausgeführt. Solche Mikroprozessoren übertreffen die Leistung vieler Großcomputer der Vergangenheit um ein Vielfaches. Es ist naheliegend, Mikroprozessoren auch für Steuerungszwecke einzusetzen. Dabei müssen typischerweise digitale oder analoge Signale von Sensoren oder Tasten gelesen und an Aktuatoren (Antriebe) oder andere Ausgabegeräte wie Displays oder Signallampen übertragen werden. Verfügt ein Mikroprozessor über entsprechende Ein- und Ausgangskanäle und zudem über einen Programmspeicher, spricht man von einem Mikrocontroller. Es gibt mittlerweile eine Vielzahl von unterschiedlichen Mikrocontrollern für unterschiedlichste Anwendungen, welche sich durch Rechenleistung und die Anzahl der Ein- und Ausgangskanäle unterscheiden. Viele Mikrocontroller verfügen zudem bereits über Schnittstellen zu Bussystemen, wie z.B. I2C, CAN oder Ethernet und können damit in einfacher Weise mit übergeordneten Steuerungen kommunizieren. 8 © Festo Didactic GmbH & Co. KG EasyKit 2.2 Anwendungen von Mikrocontrollern Mikrocontroller finden sich heute fast überall. Überall, wo gesteuert wird, werden Mikrocontroller eingesetzt. Hier seien beispielhaft einige wenige Anwendungsbeispiele genannt: • Steuerung von Motoren und Getrieben in Kraftfahrzeugen: Die Zündung und die Kraftstoffeinspritzung von modernen Verbrennungsmotoren geschieht heute immer elektronisch. Mikrocontroller messen wichtige Parameter des Motors (Last, Temperatur, Abgaswerte) und wählen aus einem vorher ermittelten und im Speicher des Mikrocontrollers abgelegten Kennfeld den richtigen Zeitpunkt der Zündung und die richtige Kraftstoffmenge aus. Ebenso wird bei automatischen Getrieben der Schaltzeitpunkt und der richtige Gang gewählt. • Mobiltelefone enthalten Mikrocontroller, die unter anderem die Kommunikation mit dem Nutzer steuern. • Haushaltsgeräte wie Kaffee-Vollautomaten enthalten Mikrocontroller, welche die Komponenten wie Pumpen, Heizung, Mahlwerk und Anzeigefunktionen steuern. • Mobile Roboter dargestellt, enthalten zahlreiche Mikrocontroller, um Messwerte von Navigationssensoren aufzunehmen (Sensoren für Raddrehzahl, Abstand, Beschleunigung oder die Kamera), daraus einen Weg zwischen Hindernissen auf ein bestimmtes Ziel zu berechnen und durch richtige Ansteuerung der Aktoren (Gleichstrommotore) zu erreichen. 2.3 Funktionsweise von Mikroprozessoren Mikrocontroller bestehen aus dem Mikroprozessor als zentraler Steuereinheit sowie zahlreichen Ein- und Ausgangskanälen, die zur Kommunikation mit dem (physikalischen) Prozess notwendig sind, der durch den Mikrocontroller gesteuert werden soll. Im Folgenden wird die grundsätzliche Funktionsweise eines Mikroprozessors dargestellt. Ein Mikroprozessor dient zur schrittweisen Abarbeitung einfacher Befehle. Der Ablauf bei der Ausführung eines Programmschrittes ist im Wesentlichen bei allen Mikroprozessoren gleich und läuft prinzipiell wie folgt ab (vgl. Abb. 2-1). Im Programmzähler PC steht die Speicheradresse des nächsten auszuführenden Befehls, welcher im RAM oder ROM des Computers stehen kann. Der Wert des Programmzählers wird an den Adressdecodierer MUX übertragen, der die Adresse über den Adressbus an den externen Speicher überträgt. Der externe Speicherbaustein stellt daraufhin den Inhalt der Speicheradresse auf dem Datenbus zur Verfügung. Damit kann dieser Inhalt (also der nächste Befehl) in das Befehlsregister IR übertragen werden. Hier wird der Befehl decodiert und der Programmzähler PC um 1 erhöht, damit dieser auf den nächsten Befehl zeigt. Die Befehle können den Inhalt von Speicherzellen aus dem RAM in den Akkumulator laden oder diese Daten verarbeiten. Die Datenverarbeitung findet in der Arithmetisch-Logischen Einheit ALU statt. Dort werden die an den beiden Eingängen anliegenden Daten verarbeitet, z.B. addiert, subtrahiert oder miteinander verglichen. Das Ergebnis wird wieder im Akkumulator abgelegt. Der Akkumulator ist ein spezieller Speicherbaustein innerhalb des Prozessors. Der Mikroprozessor kann neben dem Akkumulator noch viel mehr Register zur Datenspeicherung enthalten. Register innerhalb des Prozessors können wesentlich schneller zugegriffen werden als externer Speicher. In unserem einfachen Fall gibt es nur den Akkumulator. © Festo Didactic GmbH & Co. KG 9 Mikrocontrollerprogrammierung mit EasyKit Abb. 2-1: Prinzipieller Aufbau eines Mikroprozessors IR Befehlsregister PC Programmzähler Status Statusregister ALU Arithmetisch-Logische Einheit (Rechenwerk) MUX Adressdecodierer RAM Random Access Memory (Schreib-Lese-Speicher) ROM Read Only Memory (Nur-Lese-Speicher) Das Statusregister Status besteht aus einer Reihe von Status-Bits, welche das Ergebnis einer Rechenoperation im Akkumulator enthalten. Typisch sind: • Bit Z: Zerobit, wird immer gesetzt, wenn das Ergebnis der Operation Null beträgt • Bit N: Negativbit, wird immer gesetzt, wenn das Ergebnis negativ ist • Bit C: Carry-Bit, wird immer gesetzt, wenn die Rechenoperation einen Übertrag ergeben hat (also innerhalb der 8 Bit nicht mehr darstellbar ist) Mit Hilfe des Status-Registers Status kann der Programmablauf abhängig vom Ergebnis einer Rechenoperation gesteuert werden. Die Taktfrequenz des Prozessors gibt an, wie viele Befehle der Prozessor pro Sekunde ausführen kann. Eine Taktfrequenz von 1 MHz (Megahertz) bedeutet, dass der Prozessor 1 Million Befehle pro Sekunde ausführen kann. 1 GHz (Gigahertz) steht für 1 Milliarde Befehle pro Sekunde. Der Befehlssatz des Mikroprozessors besteht aus sehr einfachen Operationen, wie z.B.: 10 • Lade den Inhalt einer Speicherzelle in den Akkumulator • Addiere den Inhalt des Akkumulators mit dem einer Speicherzelle © Festo Didactic GmbH & Co. KG EasyKit • Vergleiche den Inhalt des Akkumulators mit dem einer Speicherstelle • Wenn Statusbit N gesetzt ist, springe zu einer bestimmten Speicherstelle Da die Befehle eines Mikroprozessors so einfache Operationen sind, benötigt dieser für sinnvolle Operationen sehr viele Befehle. So kann eine Multiplikation von zwei Kommazahlen bereits die Ausführung von mehreren hundert Befehlen erfordern. Die Angabe 8, 16 oder 32 Bit bezieht sich auf die Anzahl Bits in den Registern des Mikroprozessors. Verfügt der Prozessor über 8 Bit, kann er in einem Rechenschritt Zahlen im Bereich von 0 bis 255 (=28-1) verarbeiten. Größere Zahlen müssen in mehreren Schritten verarbeitet werden. Ein 16 Bit Prozessor dagegen kann Werte zwischen 0 und 65535 (=216-1) verarbeiten und benötigt daher weniger Operationen für die gleiche Rechenoperation. © Festo Didactic GmbH & Co. KG 11 Mikrocontrollerprogrammierung mit EasyKit 3 Kennenlernen von EasyKit 3.1 Auspacken Wenn Sie den Systainer mit EasyKit auspacken, sollten Sie folgende Dinge finden: • Easyboard - die Platine mit dem Mikrocontroller • Applikationsboard – ein kleines Applikationsboard mit einem DC-Motor • 2 EasyKit Steckbausteine DIO 1.1 und AIO 1.1 • CD mit EasyLab, Lernprogramm Mikrocontroller und Lernunterlagen • USB-Anschlusskabel • Schraubendreher • Litze zum Anschluß von EasyBoard und Applikationsboard 3.2 Das Board mit dem Mikrocontroller Abb. 3-1: Draufsicht auf EasyBoard 1 USB-Anschluss 2 Taster und LED 3 Resettatster 4 Steckplatz 1 5 Klemmleiste für Steckplatz 1 6 Steckplatz 2 7 Klemmleiste für Steckplatz 2 8 Anschluss für externe Stromversorgung 9 Mikrocontroller Abb. 3-2: EasyKit-Bausteine In Abb. 2-1 ist eine Prinzipskizze des EasyBoards zu sehen. Das Herz der Platine ist ein leistungsfähiger Mikrocontroller mit folgenden technischen Daten: 12 © Festo Didactic GmbH & Co. KG EasyKit • 32 bit Kontrollerkern • 8 MhZ Taktfrequenz • 64 MByte Flash Memory Der Mikrocontroller verfügt über zahlreiche Ein- und Ausgangskanäle. Diese sind jedoch nicht direkt geeignet, externe Geräte wie LED’s, Taster, Motore oder andere Sensoren direkt anzuschließen. Dazu sind in der Regel Treiber- bzw. Schutzbeschaltungen notwendig (z.B. Freilaufdioden, Verstärkerstufen usw.). Beim EasyBoard sind diese Treiber bzw. Schutzbeschaltungen in den Steckbausteinen untergebracht und können je nach Bedarf auf den Steckplätzen 4 und 6 eingesteckt werden. Jeder Baustein (Abb. 3-2) ist mit einer anderen Klemme der Klemmleisten 5 und 6 verbunden. Derzeit stehen die in der Tabelle zusammengefassten Bausteine zur Verfügung: Baustein Funktion Klemme AIO 1 Analoger Spannungsein- und ausgang, 0 – 5 V, überspannungsgesichert A-In 1 / A-Out 2 AIO 2 Analoger Spannungsein- und ausgang, 0 – 5 V, überspannungsgesichert A-In 2 / A-Out 2 DIO 1 Digitaler Ein- und Ausgang, o – 5 V (TTL-kompatibel), überspannungsgesichert D-In 1 / D-Out 1 DIO 2 Digitaler Ein- und Ausgang, o – 5 V (TTL-kompatibel), überspannungsgesichert D-In 2 / D-Out 2 ILT 1 Digitaler Ausgang, Treiber für induktive Lasten, Schaltspannung entspricht der des angeschlossenen Netzteils (12..24V) D-Out 1 ILT 2 Digitaler Ausgang, Treiber für induktive Lasten, Schaltspannung entspricht der des angeschlossenen Netzteils (12..24V) D-Out 2 Das EasyBoard enthält weiterhin drei Taster, drei farbige LED (2) sowie einen Resetknopf (3). Mit dem Resetknopf kann das EasyBoard in den Ursprungszustand zurückgesetzt werden. Der Stromanschluß 8 wird für alle in diesem Lehrgang beschriebenen Versuche nicht benötigt. Falls aber an einem Kanal eine höhere Spannung als 5 V benötigt wird, kann dies erreicht werden, indem der Baustein ILT zusammen mit einer entsprechenden Stromversorgung genutzt wird. 1 DC-Motor 2 Klemmleiste 3 Lichtschranke 4 Phototransistor 5 Jumper 6 Jumper zum Umschalten von Lichtschranke auf Photodiode Abb. 3-3: Prinzipdarstellung des Applikationsboards Das Applikationsboard (Abb. 2-2) enthält einen DC-Motor (1), einen zugehörigen Verstärkerbaustein, eine © Festo Didactic GmbH & Co. KG 13 Mikrocontrollerprogrammierung mit EasyKit Lichtschranke (3) sowie einen Phototransistor (4). Das Applikationsboard wird mit dem EasyBoard mit Hilfe der beiliegenden Kabel verbunden. Je nach Versuch müssen andere Kontakte der Klemmleiste (2) verbunden werden. Es ist möglich, die beiden lichtempfindlichen Sensoren digital oder analog auszulesen. Dafür gibt es am Applikationsboard zwei Kontakte. Um zwischen der Lichtschranke und dem Einzelsensor umzuschalten, muss der Jumper JP 2 (6) umgesteckt werden. 3.3 Installation von EasyLab Der PC sollte folgende Voraussetzungen erfüllen, um die Programmiersoftware EasyLab ausführen zu können: • 1x USB-Schnittstelle • Windows XP, Vista oder 7 • mindestens 256MB Arbeitsspeicher • mindestens 1024x768 Bildschirmauflösung Um EasyLab zu installieren, legen Sie die mitgelieferte CD in das CD-Laufwerk Ihres Computers und starten Sie das Programm EasyLab_setup.exe. Folgen Sie den Anweisungen des Installationsprogramms. EasyLab kommuniziert mit dem Mikrocontrollerboard über die USB-Schnittstelle des PC. Um die dazu notwendigen Treiber zu installieren, verbinden Sie bitte EasyBoard mit Hilfe des mitgelieferten USB-Kabels mit einer der USB-Schnittstellen Ihres PC (Achtung: Vorher muss EasyLab installiert worden sein). Nach einigen Sekunden wird das Betriebssystem mit einem Dialogfenster nach den Treibern fragen. Wählen Sie nicht die Option, im Internet nach den Treibern zu suchen, sondern die automatische Suche (bei der Installation von EasyLab wurden die Treiber bereits auf Ihre Festplatte kopiert). Die Treiber werden dann vom Betriebssystem gesucht und installiert. Manchmal muss dieser Vorgang einmal wiederholt werden. Danach ist EasyKit einsatzbereit. Starten Sie Easylab und verbinden Sie das EasyBoard mit dem mitgelieferten USB-Kabel mit der USBSchnittstelle Ihres PC, falls Sie es noch nicht getan haben. Nach einigen Sekunden sollte Ihr Bildschirm so wie in Abb. 3-4 aussehen. Die blau eingekreisten Funktionsblöcke erscheinen automatisch, wenn EasyLab mit EasyBoard kommuniziert. Easylab kann nun mit dem EasyBoard kommunizieren und Sie können mit dem Programmieren beginnen. Hinweis: in Ausnahmefällen kann es notwendig sein, manuell im Systemmenue (Start -> Einstellungen -> Systemsteuerung -> System -> Hardware -> Geräte-Manager) die COM-Schnittstelle des USB-Serial Converters zu verändern, damit EasyLab das Gerät findet. 3.4 Installation des Lernprogramms Mikrocontroller Rufen Sie das Programm „Setup_231_Lernprogramm_Mikrocontroller_1330.exe“ auf der EasyKit-CD auf und folgen Sie den Anweisungen. Das Lernprogramm muss freigeschaltet werden. Dazu ist eine Internetverbindung notwendig (nicht notwendigerweise auf dem Rechner, auf dem das Lernprogramm installiert werden soll). Eine telefonische Freischaltung ist ebenfalls möglich. Zur Freischaltung ist die auf der CD aufgedruckte Product ID notwendig. Das Lernprogramm kann beliebig oft installiert werden. 14 © Festo Didactic GmbH & Co. KG EasyKit 4 Erste Schritte mit EasyLab Lernziele: • Binäre Signale • Blockschaltbilder und Datenflußdiagramm • Bedienung EasyLab • Taster und LED in EasyLab Arbeitsblatt 1 4.1 Grundlagen: Signalarten Mikrocontroller müssen Informationen (z. B. Taster betätigt bzw. nicht betätigt) auswerten und weiterverarbeiten. Die Information wird deshalb durch Signale dargestellt. Ein Signal ist eine physikalische Größe, z. B.: • der Druck an einer bestimmten Stelle einer pneumatischen Anlage • die Spannung an einer bestimmten Stelle einer elektrischen Schaltung Ein Signal ist die Darstellung von Informationen. Die Darstellung erfolgt durch den Wert oder den Werteverlauf einer physikalischen Größe. Analoges Signal Ein analoges Signal ist ein Signal, bei dem einem kontinuierlichen Wertebereich des Informationsparameters Punkt für Punkt unterschiedliche Information zugeordnet sind (DIN 19226, Teil 5). Anwendungsbeispiel Bei einem Manometer ist jedem Wert des Druckes (= Informationsparameter) eine bestimmte Anzeige (= Information) zugeordnet. Steigt oder fällt das Signal, ändert sich die Information kontinuierlich. Digitales Signal Ein digitales Signal ist ein Signal mit einer endlichen Zahl von Wertebereichen des Informationsparameters. Jedem Wertebereich ist eine bestimmte Information zugeordnet (DIN 19226, Teil 5). Anwendungsbeispiel Eine Druckmesseinrichtung mit Digitalanzeige zeigt den Druck in Schritten von 1 bar an. Bei einem Druckbereich von 7 bar ergeben sich 8 mögliche Anzeigewerte (0 bar bis 7 bar), d. h. 8 mögliche Wertebereiche des Informationsparameters. Steigt oder fällt das Signal, ändert sich die Information stufenförmig. Binäres Signal Ein binäres Signal ist ein digitales Signal mit nur zwei Wertebereichen des Informationsparameters, die meist als 0 und 1 bezeichnet werden (DIN 19226,Teil 5). Anwendungsbeispiel Mit einer Kontrollleuchte wird angezeigt, ob eine pneumatische Anlage ordnungsgemäß mit Druckluft versorgt wird. Liegt der Versorgungsdruck (= Signal) unter 5 bar, so ist die Kontrollleuchte ausgeschaltet © Festo Didactic GmbH & Co. KG 15 Mikrocontrollerprogrammierung mit EasyKit (Schaltzustand 0). Liegt der Druck über 5 bar, ist die Kontrollleuchte eingeschaltet (Schaltzustand 1). Signal/physikalische Größe Druck 7 bar 5 4 3 2 1 0 Zeit Information a) analog Zeigerstellung 7 6 5 4 23 45 1 6 0 7 8 3 2 1 0 Zeit b) digital Anzeige 7 6 5 4 3 2 1 0 3 Druck bar Zeit c) binär Druck ja Versorgungsdruck 1 nein 0 Zeit 4-1: Signalarten Binäre Zustande lassen sich mit Hilfe der Elektronik besonders einfach und sicher erfassen, übertragen und speichern. Daher sind die binären Signale die Grundlage praktisch aller Mikroprozessoren. Auch in der Automatisierungstechnik gibt es viele Beispiele von Geräten, die binäre Signale liefern oder die mit binären Signalen gesteuert werden: 16 • Taster oder Schalter • Lichtschranken • Glühlampe • Elektromagnet © Festo Didactic GmbH & Co. KG EasyKit 4.2 Grundlagen: Blockschaltbilder Ingenieure nutzen gern Blockschaltbilder, um komplexe Sachverhalte darzustellen. Blockschaltbilder werden verwendet, um Wirkungen zwischen mehreren Bauteilen zu verdeutlichen, die in Wechselwirkung zueinander stehen. Die Verbindungen stellen aber nicht echte Leitungen (wie im elektrischen Schaltplan), sondern Wirkungen, Stoff-, Energie- oder Informationsflüsse dar. Das eben dargestellte Programm ist ein sogenanntes Datenflussdiagramm, weil es darstellt, wie Informationen zwischen den Funktionsblöcken ausgetauscht werden. Dafür wird nur eine Verbindung gezeichnet, obwohl die Daten in der Realität auf vielen elektrischen Leitungen fließen mögen. In Abb. 3-1 sind zwei Beispiele für Blockschaltbilder dargestellt. Bild a.) stellt das Prinzip einer Steuerung dar. Sensoren liefern Signale an eine Steuerung, die wiederrum einen Aktor ansteuert, z.B. einen Elektromotor. Die Pfeile deuten an, in welche Richtung die Signale fließen. In b.) ist das Prinzip eines Fahrzeugantriebs dargestellt. Der Motor erzeugt ein Drehmoment, dass über ein Getriebe an die Antriebsräder fließt. Mit einem Blockschaltbild kann also nicht ein Daten- , sondern auch ein Energie- oder Materialfluss dargestellt werden. Bild a.) bezeichnet man auch Datenflußdiagramm. Bild c.) schließlich zeigt das Prinzip eines Netzwerks. Die Computer sind mit einem Router verbunden und tauschen mit diesem birektional (d.h. in beide Richtungen) Informationen aus. Wie man sieht, dürfen Blockschaltbilder auch nicht nur „Blöcke“ enthalten. Abb. 4-2: Beispiele für Blockschaltbilder © Festo Didactic GmbH & Co. KG 17 Mikrocontrollerprogrammierung mit EasyKit 4.3 Funktionsblöcke in EasyLab - Datenflussdiagramme Auch in EasyLab wird in Form von Datenflussdiagrammen programmiert. Wird die Programmiersoftware EasyLab gestartet und EasyBoard an die USB-Schnittstelle des Programmier-PC angeschlossen, sieht nach wenigen Sekunden der Bildschirm aus wie Abb. 3-4. Abb. 4-3: Startbildschirm von EasyLab mit angeschlossenem EasyBoard Auf der rechten Seite im Fenster Funktionsblöcke finden sich alle Bausteine, aus denen sich das Programm zusammensetzen wird. Diese Liste ist unterteilt in allgemeine Funktionsblöcke und spezifische Blöcke für das Starterkit. Durch Anklicken der Symbole und können die Unterordner mit den Funktionen geöffnet oder geschlossen werden. In den Ordnern LEDs und Taster befinden sich Funktionsblöcke, die durch Anklicken und Ziehen auf die Programmieroberfläche geholt werden können. Auf dem Bildschirm sehen diese Funktionsblöcke so aus: Die Funktionsblöcke haben an der linken bzw. rechten Seite hellblaue Quadrate. Dies sind die Anschlüsse der Funktionsblöcke. Die Funktionsblöcke liefern bzw. empfangen Daten. Merke: Anschluss auf der rechten Seite: Datenausgang Anschluss auf der linken Seite: Dateneingang. Durch Anklicken des Ausgangs des einen Funktionsblocks und Ziehen auf den Eingang des anderen Funktionsblock werden beide Funktionsblöcke verbunden. Der Funktionsblock Taste liefert ein binären 18 © Festo Didactic GmbH & Co. KG EasyKit Wert. Wenn die Taste gedrückt wird, ist der Wert TRUE, ansonsten FALSE. Erhält der Funktionsblock LED den Eingangswert TRUE, wird die LED eingeschaltet, ansonsten ist sie ausgeschaltet. Durch Anklicken der Funktionsblöcke mit der rechten Maustaste kann in einem Kontexmenue eine Hilfe zu jedem Funktionsblock aktiviert werden. 4.4 Bedienung von EasyLab Nach dem Start zeigt EasyLab folgenden Starbildschirm. In der nachfolgenden Tabelle sind die wichtigsten Komponenten der Oberfläche erläutert. Abb. 4-4: Startbildschirm von EasyLab Nr. Bedeutung 1 Arbeitsfläche zur der Erstellung der Programme 2 Programmbausteine für die Unterprogramme (Funktionsbibliothek) 3 Hinzufügen neuer Hardware (geschieht normalerweise automatisch) 4 Kontrolltasten zur Ablaufsteuerung (siehe Abb. 3-4) 5 Reiter zum Umschalten zwischen Haupt- und Unterprogrammen EasyLab hält sich bei der Bedienung weitestgehend an den Windows-Standard, d.h. die üblichen Funktionen wie Speichern, Drucken usw. findet man in der Symbolleiste oben im Programmfenster. In der Steuerleiste werden dagegen die Programmierspezifischen Funktionen von EasyLab gesteuert. EasyLab kann ein erstelltes Programm simulieren (das geht auch ohne angeschlossenes EasyBoard) oder kompilieren und auf den Mikrocontroller übertragen, der das Programm dann ausführt. Simulation Um das Programm in der Simulation zu testen, muss der Umschalter 1 der Steuerleiste auf Simulationsmodus stehen. Durch Anklicken der grünen Pfeiltaste (3) in der Steuerleiste wird die Simulation © Festo Didactic GmbH & Co. KG 19 Mikrocontrollerprogrammierung mit EasyKit des Programms gestartet. Simulation bedeutet, dass das Programm nicht auf den Mikrocontroller des EasyBoard übertragen wird, sondern nur auf dem Programmier-PC nachgebildet wird. Daher gibt es natürlich auch keine Eingangswerte, da ja keinerlei Hardware wie Tasten oder LED angeschlossen sind. Die Eingabewerte müssen manuell nachgebildet werden. Codeerzeugung Um das Programm auf den Mikrocontroller zu übertragen, muss am Umschalter 2 in der Steuerleiste auf den Codeerzeugungsmodus umgeschaltet werden und wieder die Start-Taste (3) gedrückt werden. Das in EasyLab erstellte Programm wird nun zuerst in C übersetzt und dann in Maschinensprache umgesetzt (kompiliert) und schließlich über das USB-Kabel auf den Mikrocontroller übertragen. Dies wird durch ein Dialogfenster und das Blinken einer roten LED auf dem EasyBoard angezeigt. Live-Debugging Sobald das Dialogfenster verschwindet, läuft das Programm auf dem Easyboard. Gleichzeitig wird der Zustand der Funktionblöcke auch auf dem Bildschirm angezeigt. Diese Fähigkeit von EasyLab nennt man Live-Debugging. Sie wird dadurch erreicht, dass neben dem eigentlichen Programm noch ein Kommunikationsprogramm auf dem Mikrocontroller installiert wird, dass alle Daten zum Programmier-PC überträgt. Besonders nützlich ist das Live-Debugging für die Fehlersuche in komplexeren Programmen. Stand-Alone-Betrieb Nachteil dieses Modus ist, dass das Programm auf dem Mikrocontroller nur läuft, wenn der PC angeschlossen ist. Will man ein fehlerfreies Programm auf dem EasyBoard allein ausführen, so muss durch längeres Klicken auf die grüne Starttaste der Modus EasyKit Starter Standalone ausgewählt werden. In diesem Modus wird das Programm ohne zusätzliches Kommunikationsprogramm übertragen. Das Programm wird dann jedes Mal gestartet, wenn EasyLab an die Stromversorgung angeschlossen wird Abb. 4-5: Steuerleiste in EasyLab Nr. Bedeutung 1 Umschalten auf Simulationsmodus 2 Umschalten auf Codeerzeugungsmodus 3 Start Simulation bzw. Kompilieren 4 Einfrieren der Programmausführung 5 Stop der Programmausführung 6 Anzeigen der Werte der FunktionsblockAnschlüsse 7 Anzeigen der Beschreibung der Funktionsblock-Anschlüsse 8 Umschalter für Anfänger- und Expertenmodus 20 © Festo Didactic GmbH & Co. KG EasyKit 5 Variablen und Schrittketten Lernziele: • Schrittketten • Verzweigungen • Konstanten und Variablen Arbeitsblatt 2 5.1 Variablen und Konstanten Variablen sind Funktionsblöcke, die Daten speichern. Damit können diese Daten an andere Stelle des Programms verwendet werden. Variablen werden definiert, indem im Fenster Funktionsblöcke mit der rechten Maustaste auf die Zeile Variable geklickt wird. Es erscheint ein Pull-Down-Menu, in dem auf Hinzufügen geklickt wird. Im dann erscheinenden Dialogfenster wird der Name der Variablen eingegeben. Die neue Variable erscheint im Fenster Funktionsblöcke, und zwar als Leser- und Schreiber-Block. Diese Funktionsblöcke dienen dazu, entweder etwas in die Variable hineinzuschreiben oder den Inhalt herauszulesen. Die Anschlüsse sind dementsprechend einmal auf der linken oder auf der rechten Seite der Funktionsblöcke. Die entsprechenden Funktionsblöcke werden wie gewohnt auf die Programmfläche gezogen. Konstanten können ähnlich wie Variablen Daten speichern, nur sind diese während des Programmablaufes unveränderlich. 5.2 Schrittketten Neben den kontinuierlich laufenden Prozessen gibt es auch Abläufe, die einen schrittweisen Charakter haben. Solche Abläufe werden in der Technik als Schrittkette bezeichnet. EasyLab macht die Programmierung von Schrittketten sehr einfach. Dies geschieht durch Umschalten auf den Reiter Hauptprogramm. Das Hauptprogramm besteht aus Zuständen oder Schritten, die durch Weiterschaltbedingungen oder Transitionen getrennt sind. In Abb. 4-1 ist ein Hauptprogramm mit drei Schritten abgebildet. Die Schrittkette beginnt mit einem Startschritt Init (1), der keine weitere Funktion hat. Den Schritten Step1 bis Step3 sind jeweils Unterprogramme zugeordnet, welche selbst Datenflussprogramme sind. Ein Schritt ist aktiv, bis die Weiterschaltbedingung erfüllt ist. Diese kann entweder direkt true oder false sein (wie beim Übergang von Init zu Step1) und damit immer erfüllt oder nicht erfüllt sein. Oder die Weiterschaltbedingung wird mit Hilfe von Variablen definiert wie beim Übergang von Step1 zu Step2. Dieser Übergang findet statt, wenn die Variable Taste1 den Wert true annimmt. Dieser Wert wird der Variable im Unterprogramm Step1 zugeweisen. © Festo Didactic GmbH & Co. KG 21 Mikrocontrollerprogrammierung mit EasyKit Nr. Bedeutung 1 Startschritt 2 Zustand oder Programmschritt 3 Weiterschaltbedingung 4 Einfügen Schritte 5 Variablenliste 6 Reiter des Hauptprogramms Abb. 5-1: Schrittkette in EasyLab Den Schritten werden Unterprogramme zugewiesen, indem die Unterprogrammliste innerhalb des Schrittes angeklickt und das gewünschte Unterprogramm ausgewählt wird (vgl.Abb. 4-2). Abb. 5-2: Zuweisen eines Unterprogramms zu einem Abb. 5-3: Verzweigung im Hauptprogramm Schritt Neue Schritte können in die Schrittkette eingefügt werden, indem man einen Schritt anklickt und dann in der Auswahlliste einen neuen Schritt auswählt. In gleicher Weise können auch Verzweigungen eingefügt werden (vgl. Abb. 4-3). In diesem Fall muss jedoch vorher eine Weiterschaltbedingung angeklickt werden. 22 © Festo Didactic GmbH & Co. KG EasyKit 6 Logische Verknüpfungen Lernziele • Logische Verknüpfungen Aufgabenblatt 3 Logische Verknüpfungen sind Funktionblöcke, welche aus binären Eingangswerten gemäß einer Funktionstabelle einen Ausgangswert erzeugen. Diese Funktionsblöcke findet man unter Mathematik -> Logische Operationen: Benennung Funktionstabelle Funktionsblock in EasyLab Nicht Und Oder Exklusiv-Oder Im Hauptprogramm können binäre Variablen ebenfalls mit logischen Operatoren verknüpft werden. Diese werden dann so geschrieben: • Und && Beispiel: Variable1&&Variable2 • Oder || Beispiel: Variable1||Variable2 • Negation ! Beispiel: !Variable1 Einfache mathematische Operatoren wie +, -, *, / dürfen ebenfalls verwendet werden. Das folgende Bild stellt dar, wie z.B. eine Und-Verknüpfung als Weiterschaltbedingung genutzt werden kann: taste1 und taste2 sind integer-Variablen © Festo Didactic GmbH & Co. KG taste1 und taste2 sind boolesche Variablen 23 Mikrocontrollerprogrammierung mit EasyKit 7 Programmieren mit Flip-Flops Lernziele • Flankenerkennung • Flip-Flops mit und ohne Flankenerkennung Arbeitsblatt 4 7.1 Flankenerkennung Manchmal ist es notwendig, nicht das eigentliche Signal, sondern die Änderung eines Signals zu erkennen. Dazu gibt es den Baustein Flankenerkennung (Funktionsbibliothek -> Signalverarbeitung -> Filter): Legt man ein Signal an den Eingang „Eingabesignal“, so wird immer dann der obere Ausgang True liefern, wenn der Eingangswert sich stärker als die eingestellte Toleranz erhöht. Der untere Ausgang reagiert entsprechend, wenn das Eingangssignal sich stärker als die eingestellte Toleranz erniedrigt (fallende Flanke). Durch Anklicken des Funktionsbausteins öffnet ein Dialogfenster, in dem die Signaltoleranz und der Typ des Signals eingestellt werden kann. 7.2 Flip-Flops Flip-Flops dienen als Signalspeicher. Sie verfügen in der Regel über einen Setz- und einen Löscheingang. Ein positives Signal am Setzeingang erzeugt ein positives Signal am Ausgang Q, das solange gahlten wird, bis der Eingang Zurücksetzen ein positives Signal erhalt. Der Ausgang !Q zeigt jeweils das gegenteilige Verhalten. Zu finden ist das sogenannte RS-Flip-Flop oder RS-Kippstufe in der Funktionsbibliothek zu finden unter Signalverarbeitung-> Flip Flops: Im gleichen Verzeichnis findet man die T-Kippstufe oder T-Flip-Flop: Die beiden Ausgänge zeigen jeweils das gegenteilige Signal (true oder false), wobei jeder Signalwechsel mit steigender Flanke am Eingang Takt den logischen Zustand der beiden Ausgänge wechselt. Insofern ähnelt der Baustein dem Baustein Flankenerkennung. Zusätzlich zu diesem speichert er aber das Signal bis zum nächsten Flankenwechsel. 24 © Festo Didactic GmbH & Co. KG EasyKit Die nachstehende Tabelle gibt einen Überblick über die wichtigsten Flip-Flops Abbildung Name Funktion Ordner Flankenerkennung Der Block gibt bei jeder Signalverarbeitung -> Filter Signalveränderung am Eingabesignal, welche oberhalb der Toleranzgrenze ist, einen Impuls aus. Wird der Wert des Signals größer, wird ein Impuls an Steigende Flanke erkannt ausgegeben. Wird der Wert des Signals kleiner, wird ein Impuls an Fallende Flanke ausgegeben. Der Funktionsblock kann auch dazu verwendet werden, Flanken in Booleschen Signalen RS-Kippstufe Liegt am Eingang S der Wert True an, Signalverarbeitung -> Flip-Flops wird der Ausgang Q auf True gesetzt. Durch Setzen des Löscheingangs R wird der Ausgang Q wieder gelöscht. Der Ausgang _Q zeigt jeweils das inverse Signal T-Kippstufe Mit jeder steigenden Flanke am Eingang C wechseln die Ausgänge ihren logischen Zustand. Es ist immer genau einer der beiden Ausgänge wahr, während der andere falsch ist. Initial besteht der Zustand falsch für Q und wahr für _Q Signalverarbeitung -> Flip-Flops Flankengesteuerte RS-Kippstufe Diese Baustein arbeitet wie ein RSKippstufe, jedoch findet ein Umschalten nur statt, wenn am Eingang C eine steigende Flanke anliegt. Signalverarbeitung -> Flip-Flops © Festo Didactic GmbH & Co. KG 25 Mikrocontrollerprogrammierung mit EasyKit 8 Binäre und Gleitkommazahlen Lernziele • Duale Zahlen • Gleitkommazahlen • Arbeiten mit Variablen • Typumwandlung Arbeitsblatt 5 und 6 8.1 Grundlagen: Binäres Zahlensystem und Gleitkommazahlen Neben binären Signalen (ein/Aus) gibt es eine Vielzahl von Größen mit kontinuierlichen Verläufen, z.B. • Temperatur • Geschwindigkeit • Lichtstärke • Füllstände Diese können binär nicht dargestellt werden. Der Mikrocontroller kann aber nur mit binären Signalen arbeiten. Die technische Lösung heißt binäres Zahlensystem. Charakteristisch für das im Allgemeinen benutzte dezimale Zahlensystem ist die Struktur der Stellen und der Wertigkeit dieser Stellen. Die Zahl 4344 zum Beispiel lässt sich darstellen als: 4344 = 4 x 1000 + 3 x 100 + 4 x 10 + 4 x 1 Die Zahl 4 ganz links hat also eine andere Bedeutung als die Zahl 4 ganz rechts. Grundlage des dezimalen Zahlensystems ist das Vorhandensein von 10 verschiedenen Ziffern (dezimal: von decem (lat.) = 10). Mit diesen 10 verschiedenen Ziffern kann von 0 bis 9 gezählt werden. Soll über die Zahl 9 hinausgezählt werden, wird ein Übertrag zur nächsten Stelle gebildet. Diese Stelle hat die Wertigkeit 10, ist die 99 erreicht, erfolgt der nächste Übertrag. Beschränkt man sich auf genau 2 Ziffern pro Stelle einer Zahl, dann wird ein Zahlensystem so aufgebaut: 27 = 128 26 = 64 25 = 32 24 = 16 23 = 8 22 = 4 21 = 2 20 = 1 1 0 1 1 0 0 0 1 Das Prinzip ist genau gleich der Methode, eine Dezimalzahl zu bilden. Allerdings stehen nur zwei Ziffern zur Verfügung, weshalb die Wertigkeit einer Stelle sich nicht als 10x berechnet, sondern als 2x. Also hat die niederwertigste Stelle ganz rechts die Wertigkeit 20 = 1, die nächste Stelle 21 = 2 usw.. Wegen der Benutzung von ausschließlich zwei Ziffern wird dieses Zahlensystem das binäre oder auch das duale Zahlensystem genannt. Mit acht Stellen kann bis maximal 28 – 1 = 256 – 1 = 255 gezählt werden, das wäre die Zahl 11111111 im Dualsystem. Eine Dualzahl mit 8 Stellen nennt man Byte, die einzelne Stelle ein bit. Weil Dualzahlen zunächst nur ganze Zahlen abbilden können, nennt man sie auch integer (kurz int). Dualzahlen werden innerhalb von Mikrocontrollern mit Vorzeichen benutzt. Die erste Stelle steht dann für das Vorzeichen (1 bedeutet minus), daher hat dann ein integer den Wertebereich -127 bis +127. Nutzt man zwei Byte (also 16 Stellen) zur Darstellung, erweitert sich der Wertebereich eines integer16 (oder kurz: int16) auf -32768 bis +32768, für den unsigned integer 16 (kurz: uint16) auf 0 bis 65536. Es ist wichtig zu wissen, was passiert, wenn Rechenoperationen Ergebnisse liefern, die außerhalb des 26 © Festo Didactic GmbH & Co. KG EasyKit Wertebereiches des gewählten Datentypes liegen. In diesem Fall gibt es einen Überlauf und das Ergebnis wird falsch sein! Beispiel: Zwei Zahlenwerte mit dem Wertebereich uint8 sollen addiert werden: Binär: 11111111 + 00000001 = 00000000 Dezimal: 255 + 1 = 0 Das Gleiche geschieht, wenn ein uint8 hochgezählt wird. Die auf 255 folgende Zahl ist nicht 256, sondern 0! Dies muss unbedingt beachtet werden, wenn mit unterschiedlichen Wertebereichen gearbeitet wird. Zur Darstellung von Kommazahlen werden Gleitkommazahlen verwendet. Diese bestehen aus Mantisse und Exponent in der Form: Mantisse mal Basis hoch Exponent. Beispiele für Gleitkommazahlen sind: 3,5 = 3,5*100 3500 = 3,5*103 35,7 = 3,57*101 Je nachdem, wieviele Bits für die Darstellung von Mantisse und Exponent verwendet werden, spricht man von Gleitkommazahlen einfacher oder doppelter Genauigkeit. Das Problem des Überlaufs tritt bei Gleitkommazahlen nicht auf, jedoch kann es zu Rechenungenauigkeiten kommen. Generell sollte der „kleinste“ Datentyp ausgewählt werden, der für die Aufgabe ausreichend ist, weil dadurch der Speicherbedarf sinkt und die Ausführungsgeschwindigkeit des Programms steigt. Unter anderem stehen in EasyLab folgende Datentypen zur Verfügung: Typ Erläuterung Wertebereich bool Logische Werte True , false Int8 Integer mit 8 Bit Genauigkeit Ganze Zahlen zwischen -128 und 127 Int16 Integer mit 16 Bit Genauigkeit Ganze Zahlen zwischen -32768 und 32768 Vorzeichenloser Integer mit 8 Bit Ganze Zahlen zwischen 0 und Genauigkeit 255 Vorzeichenloser Integer mit 16 Bit Ganze Zahlen zwischen 0 und Genauigkeit 65535 float Fließkommazahl (32 bit) -3,14 double Fließkommazahl (64 bit) -3,14 uint8 uint16 8.2 Typumwandlung Manchmal kann es erforderlich sein, Daten von einem Typ in den anderen umzuwandeln. Dazu dient der Baustein Typumwandlung: Der Eingangswert wird in den Datentyp umgewandelt, den der am Ausgangskanal Ziel angeschlossenen Baustein benötigt wird. © Festo Didactic GmbH & Co. KG 27 Mikrocontrollerprogrammierung mit EasyKit 8.3 Signalgenerierung Für viele Anwendungen werden periodische Signale benötigt: • Blinklicht • Zeitmessung EasyLab stellt einige grundlegende Funktionen zur Verfügung. Zum einen gibt es den Funktionsbaustein PWM-Signal. Dieser Baustein liefert ein binäres Ausgangssignal, dessen Periodendauer und Einschaltfrequenz man durch die beiden Eingangsparameter bestimmen kann: Die Periode legt die Periodendauer in Millisekunden fest, das Tastverhältnis das Verhältnis zwischen Einund Ausgeschaltetem Zustand des Ausgangssignals. Der Funktionsbaustein Schrittfunktion erzeugt ein treppenartiges Signal und kann auch als Zähler oder Uhr aufgefasst werden. Wenn das Programm gestartet wird, ist das Signal 0. Der Parameter interval gibt an, nach wie vielen Programmschritten das Ausgabesignal um den Wert step inkrementiert wird. Wenn am Reset-Eingang der Wert true anliegt, so wird das Signal zurückgesetzt. Ein Programmschritt hat normalerweise die die Dauer von 10 ms (dieser Wert kann im Hauptprogramm verändert werden – Zeitscheibe setzen). Der Funktionsbaustein Sägezahnsignal erzeugt, wie der Name schon sagt, ein Sägezahnsignal. Der Parameter Periodendauer gibt die Länge einer Periode an, der Parameter Maximum die Amplitude. Die Parameter können entweder als Eingangswert von außen eingegeben werden (z.B. über andere Funktionen) oder fest eingetragen werden. Dazu muss der jeweilige Funktionsbaustein durch Doppelklick geöffnet werden. Es erscheint ein Dialogfenster, in dem die Parameter eingetragen werden können: 28 © Festo Didactic GmbH & Co. KG EasyKit Die nachfolgende Tabelle gibt einen Überblick über die Signalgenerierungsbausteine: Abbildung Name Funktion Ordner Schrittfunktion Zählt den Ausgangswert in Signalgenerierung vorgegebenen Inkrementen hoch PWM-Signal Erzeugt ein Pulsweitenmoduliertes Signalgenerierung Signal vom Typ Boole Sägezahnsignal Erzeugt einen Sägezahnimpuls von Signalgenerierung Typ integer oder float 8.4 Multiplexer und Demultiplexer Mit dem Funktionsbaustein Multiplexer kann von mehreren Eingängen ein einzelner ausgewählt werden. Die Daten, welche als Ausgabedaten am Multiplexer anliegen sind die Daten, welche am ausgewählten Eingang anliegen Beispiel: Eine Variable soll aus mehreren Quellen beschrieben werden. Mit dem Funktionsblock Demultiplexer kann ein Wert in Abhängigkeit von einer Ausgangsauswahl auf mehrere Ausgänge verteilt werden. Der Wert liegt an höchstens einem Ausgang an, alle anderen Ausgänge haben den Vorgabewert. Abbildung Name Funktion Ordner Multiplexer Auswahl mehrerer Eingänge Verschiedenes Demultiplexer Verteilen eines Wertes auf mehrere Ausgänge Verschiedenes © Festo Didactic GmbH & Co. KG 29 Mikrocontrollerprogrammierung mit EasyKit 9 Analog-Digital-Wandler Lernziele • Analog-Digital-Wandler • Analogwertverarbeitung mit EasyLab und EasyBoard Aufgabenblatt 7 9.1 Grundlagen: Phototransistor Transistoren sind Halbleiterbauelemente zum Schalten und Verstärken elektrischer Signale ohne mechanische Kontakte. Phototransistoren sind Transistoren, bei denen die Verstärkerwirkung durch einen externen Lichteinfall verändert wird. Die Lichtphotonen lösen beim Auftreffen auf den Halbleiter des Transistors Elektronen aus dem Kristallgitter und erzeugen so einen kleinen Photostrom. Dieser wird etwa 100-fach verstärkt. Das Schaltzeichen des Phototransistors ist: 9.2 Grundlagen: Analog-Digital-Wandler Analoge Sensorsignale müssen in einen Digitalwert umgewandelt werden, bevor der Mikrocontroller sie verarbeiten kann. Dies geschieht in sogenannten Analog-Digital-Wandlern (ADC). Dabei muss der Analogwert in einem bestimmten Bereich liegen, z.B. zwischen 0 und 10 V. Ist das nicht der Fall, muss der Spannungswert an die maximalen und minimalen Eingangswerte des ADC angepasst werden, z.B. mit Hilfe eines Spannungsteilers. Der ADC wandelt den Analogwert in eine Digitalzahl um. Dabei bestimmt die Anzahl Bits das Auflösungsvermögen des ADC. Handelt es sich z.B. um einen 8 Bit ADC, wird die Höchstspannung 10 V binär als 1111111 (=255) und die kleinste Spannung als 00000000 (=0) dargestellt. Der Wertebereich beträgt also 0 bis 255. Bei einem 10 Bit ADC liegt der Wertebereich zwischen 0 und 1023. Die binäre Darstellung benötigt dann 10 Nullen und Einsen. In Abb. 9-1 ist ein einfacher ADC nach dem Komparatorprinzip mit 3 Bit Auflösung dargestellt. Dazu werden 8 Komparatoren benötigt, die bei Überschreiten einer Spannungsschwelle eine 1 ausgeben. Im Umcodierer wird daraus ein Binärsignal. Da 8 Komparatoren nur 8 Zustände unterscheiden können, reicht ein 3 Bit Signal zur digitalen Darstellung aus (23 = 8). Ein Signal von 0 bis10 V kann damit nur in Schritten von 1,43 V aufgelöst werden. 30 © Festo Didactic GmbH & Co. KG EasyKit Abb. 9-1: Funktionsprinzip eines einfachen 3 Bit Analog Digital Wandlers (Komparatorprinzip) Input Komparatoren Output B C D K1 K2 K3 K4 K5 K6 K7 22 21 20 Dez 0,0–1,25 V 0 0 0 0 0 0 0 0 0 0 0 1,25–2,5 V 1 0 0 0 0 0 0 0 0 1 1 2,5-3,75 V 0 1 0 0 0 0 0 0 1 0 2 3,75-5,0 V 0 0 1 0 0 0 0 0 1 1 3 5,0-6,25 V 0 0 0 1 0 0 0 1 0 0 4 6,25-7,5 V 0 0 0 0 1 0 0 1 0 1 5 7,5-8,75V 0 0 0 0 0 1 0 1 1 0 6 8,75-10,0V 0 0 0 0 0 0 1 1 1 1 7 UM [V] Tabelle 3: Übersetzung der Eingangsspannung UM in ein Digitalwert 9.3 Analoge Eingangskanäle in EasyKit Abb. 9-2: EasyBoard © Festo Didactic GmbH & Co. KG 31 Mikrocontrollerprogrammierung mit EasyKit Damit ein externes Signal von Mikrocontroller empfangen werden kann, muss ein Analogbaustein auf die dafür vorbereiteten Steckplätze4 und 6 auf dem EasyBoard (Abb. 8-1) aufgesteckt werden. Die entsprechenden Signale können an den Klemmen 5 und 7 abgegriffen werden. Die folgende Tabelle zeigt, mit welchem Baustein welche Signale an welcher Klemme nutzbar sind. Die zugehörigen Funktionsbausteine aus EasyLab sind ebenfalls dargestellt. Bausteincode Klemme an Basisplatine Ordner Digitaler Ausgang DOut1 EasyKit Starter Basisboard -> Stapel 1->Digitale E/A Digitaler Eingang Din1 EasyKit Starter Basisboard -> Funktion Softwarebaustein DIO 1.1 Stapel 1->Digitale E/A Analoger AIO 1.1 AIn1 Ausgangskanal Analoger Eingangskanal EasyKit Starter Basisboard -> Stapel 1->Analoge E/A AOut1 EasyKit Starter Basisboard -> Stapel 1->Analoge E/A Abb. 9-3: Applikationsboard Auf dem Applikationsboard (Abb. 8-2) gibt es zwei Sensoren: • Einen Phototransistor (4) • Eine Lichtschranke zur Drehzahlmessung am Motor (3) Diese können über einen Verstärker als Analogsignal oder über einen Schmitt-Trigger als Digitalsignal eingelesen werden. Die Zuordnung hängt von der Einstellung des Jumpers 2 (6) ab: Kontakt 1-2 geschlossen: Lichtschranke Kontakt 2-3 geschlossen: Phototransistor Das Signal des gerade angeschlossenen Sensors kann an der Klemmleiste 2 als Analogsignal an der Klemme 32 © Festo Didactic GmbH & Co. KG EasyKit Verstärker OUT und als Digitalsignal an der Klemmer Schmitt-Trigger OUT abgegriffen werden (Abb. 8-3) Abb. 9-4: Schaltplan des Applikationsboards © Festo Didactic GmbH & Co. KG 33 Mikrocontrollerprogrammierung mit EasyKit 10 Ansteuerung von Gleichstrommotoren Lernziele • Analoge Ausgangskanäle • Digital-Analog-Wandler • Pulsweitenmodulation • Gleichstrommotore Arbeitsblatt 8 10.1 Grundlagen: Digital-Analog-Wandler Digital-Analog-Wandler (DAC) wandeln eine digitale Zahl in einen analogen Spannungswert um. Abb. 10-1 zeigt das Funktionsprinzip eines einfachen 4 bit DAC. Ein digitales Eingangssignal an den Eingängen A bis D wird über ein Widerstandsnetzwerk in einen Analogwert umgesetzt. Aufgrund der schrittweisen Abarbeitung in einem Mikrocontroller geschieht die Umsetzung von Analog zu Digital bzw. umgekehrt nicht kontinuierlich, sondern getaktet. Zudem besitzen viele Mikrocontroller nur eine begrenzte Anzahl von ADC und DAC. Um trotzdem mehr Kanäle bedienen zu können (also mehr Sensoren auszulesen oder mehr Aktoren anzusteuern) als physikalisch vorhanden sind, wird der DAC oder ADC zwischen mehreren Ein- und Ausgangskanälen umgeschaltet (Multiplexen). Die Abtastrate in Hz gibt dann an, wie oft pro Sekunde der entsprechende Kanal angefragt und in einen Digitalwert umgewandelt wird. Für die Leistungsfähigkeit von DAC und ADC sind demnach die Abtastrate und die Auflösung in Bit entscheidend. Da das Ausgangssignal der analogen Kanäle meist auf einen Spannungsbereich von 0 bis 10 V und eine maximale Stromstärke von wenigen mA beschränkt ist, benötigt man entsprechende Leistungsverstärker, um Aktuatoren wie DC-Motore, Servoventile oder Heizungen anzusteuern. Die analogen Eingangskanäle benötigen ebenso wie die digitalen Schutzbeschaltungen, um sie vor Überspannungen oder Kurzschlüssen zu schützen. Abb. 10-1: Funktionsprinzip eines einfachen 4 Bit Digital Analog Wandlers 34 © Festo Didactic GmbH & Co. KG EasyKit Input D C B A ID [mA] IC [mA] IB [mA] IA [mA] IG [mA] UA [V] 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 2 0 0 1 0 0 0 2 0 2 2 3 0 0 1 1 0 0 2 1 3 3 4 0 1 0 0 0 4 0 0 4 4 5 0 1 0 1 0 4 0 1 5 5 6 0 1 1 0 0 4 2 0 6 6 7 0 1 1 1 0 4 2 1 7 7 8 1 0 0 0 8 0 0 0 8 8 9 1 0 0 1 8 0 0 1 9 9 10 1 0 1 0 8 0 2 0 10 10 11 1 0 1 1 8 0 2 1 11 11 12 1 1 0 0 8 4 0 0 12 12 13 1 1 0 1 8 4 0 1 13 13 14 1 1 1 0 8 4 2 0 14 14 15 1 1 1 1 8 4 2 1 15 15 Tabelle 4: Umrechnungstabelle zu 9-1 10.2 Grundlagen: Gleichstromotore Befindet sich ein Leiterdraht, der von einem Strom I durchflossen wird, in einem Magnetfeld B, so wirkt auf diesen Draht eine Kraft F. Die Richtung dieser Kraft kann man mit der sogenannten „Drei-Finger-Regel“ ermitteln. Dabei geht man davon aus, dass die magnetischen Feldlinien vom Nord- zum Südpol des Magneten gerichtet sind und der Strom im Draht vom Plus- zum Minuspol der Stromquelle fließt. Die drei Finger Daumen, Zeige- und Mittelfinger werden im jeweils rechten Winkel zueinander ausgerichtet, so dass sie ein kartesisches Koordinatensystem bilden. Zeigt dann der Daumen in Richtung des Stromflusses (also von Plus- zum Minuspol), der Zeigefinger in Richtung des Magnetfeldes (Nord/Süd), zeigt der Mittelfinger in Richtung der wirkenden Kraft. In Abb. 10-2 würde der Draht sich also nach vorn aus der Blattebene heraus bewegen. Abb. 10-2: Lorentzkraft © Festo Didactic GmbH & Co. KG 35 Mikrocontrollerprogrammierung mit EasyKit Die Größe der Kraft hängt von der Stärke des Magnetfeldes, der Stromstärke und der Länge des Drahtes im Magnetfeld ab. Der Gleichstrommotor nutzt diese Kraftwirkung aus, um eine Drehbewegung zu erzeugen. Dazu wird eine Leiterschleife drehbar zwischen zwei Magnetpolen (Nord/Süd) angeordnet (Abb. 10-3). Der Strom fließt durch die beiden Hälften der Leiterschleife in entgegengesetzter Richtung. Daher ist auch die Kraftwirkung auf die Hälften der Leiterschleife entgegengesetzt gerichtet. Es bilden sich auch hier ein Nord- und ein Südpol heraus, die von den Polen des Permanentmagneten angezogen (Nord/Süd bzw. Süd/Nord) oder auch abgestoßen (Süd/Süd bzw. Nord/Nord) werden. Beide Kräfte erzeugen ein Drehmoment, das die Leiterschleife weiterdreht. Nach höchstens einer halben Umdrehung der Leiterschleife wird durch den mechanischen Kommutator (Stromwender) der Strom umgepolt und der Vorgang wiederholt sich. Abb. 10-3: Funktionsprinzip des Gleichstromotors Der Kommutator ist hier das wesentliche Bauteil, da erst er aus dem einmaligen Vorgang der Kraftwirkung auf einen Strom durchflossenen Leiter eine Drehbewegung macht. Er besteht aus zwei metallischen, von einander isolierten Halbschalen, auf die durch Kohlebürsten der Strom übertragen wird. Abb. 10-4: Kennlinie eines DC-Motors Ein DC-Motor wandelt elektrische Energie in mechanische Energie um. Elektrische Leistung ist das Produkt aus Strom I und Spannung U, mechanische Leistung ist das Produkt aus Drehmoment M und Drehzahl n. Abb. 10-4 zeigt die Drehzahl-Drehmoment-Kennlinie eines DC-Motors. Es ist eine Gerade. Bei gegebener Spannung U und ohne mechanische Belastung wird der Motor mit der leerlaufdrehzahl n0 drehen. Wird der Motor durch ein äußeres Drehmoment an der Motorwelle belastet, sinkt die Drehzahl ab, bis der Motor zum Stillstand kommt. Dann erzeugt der Motor das Stillstands- oder Haltemoment MH. Dabei steigt die Stromaufnahme des Motors kontinuierlich an. Soll die Drehzahl bei gegebener Belastung steigen, 36 © Festo Didactic GmbH & Co. KG EasyKit muss die Spannung U erhöht werden. 10.3 Grundlagen Pulsweitenmodulierter Ausgängskanale Abb. 10-5: Ansteuerung eines DC-Motors mit einem Transistor (Prinzip) Die Ansteuerung von Verbrauchern wie DC-Motoren oder elektrischen Heizungen kann mit analogen Ausgangssignalen geschehen, wie sie von einem DAC bereitgestellt werden. Da der Mikrocontroller normalerweise zu wenig Strom liefern kann, um die Verbraucher direkt zu versorgen, werden Verstärkerstufen zwischengeschaltet. In Abb. 10-5 ist dies prinzipiell dargestellt. Der Transistor und der Verbraucher (hier ein DC-Motor) sind in Reihe geschaltet. Je nach Steuerspannung US wird der Transistor hoch- oder niederohmig. Also verändert sich die am DC-Motor anliegende Spannung ebenfalls. Da die Drehzahl von der am Motor anliegenden Spannung abhängt, wird sich die Motordrehzahl abhängig von der Steuerspannung US verändern. Nachteil bei diesem Verfahren ist jedoch, dass die elektrische Leistung sich gemäß der Verhältnisse der Widerstände von Motor und Transistor verteilt. Es können daher erhebliche Verlustleistungen am Transistor entstehen. Diese Verlustleistungen heizen den Transistor auf und können ihn zerstören. Verlustleistungen sind generell unerwünscht, weil Energie verschwendet wird. Besser ist dagegen die Ansteuerung mit einem pulsweitenmodulierten Signal (PWM). Dabei wird der Transistor nicht kontinuierlich angesteuert, sondern mit einer hohen Frequenz voll geöffnet bzw. geschlossen. Die Steuerspannung US schaltet also nur zwischen dem Maximalwert und Null. Daher ist der Widerstand des Transistors entweder sehr groß (es fließt (fast) kein Strom) oder sehr klein (es fließt der volle Motorstrom, aber der Leistungsabfall am Transistor ist aufgrund des kleinen Widerstandes auch sehr klein. Die pulsweitenmodulierte Ansteuerung reduziert die Energieverluste ganz erheblich und ist daher die Standardmethode zur Ansteuerung von Verbrauchern mit großen Strömen. Voraussetzung für die Anwendung ist jedoch, dass der Verbraucher viel langsamer reagiert als die PWMSpannung umgeschaltet wird. Bei Heizungen und Motoren ist das in aller Regel der Fall. Daher besitzen viele Mikrocontroller einen oder mehrere PWM-Ausgänge. © Festo Didactic GmbH & Co. KG 37 Mikrocontrollerprogrammierung mit EasyKit 11 Schnelle Zählereingänge Lernziele • Drehzahlmessung • Schnelle Zählereingänge Arbeitsblatt 9 11.1 Grundlagen: Lichtschranken Lichtschranken bestehen aus einer Lichtquelle und einem lichtempfindlichen Sensor, z.B. einem Phototransistor. Wird der Strahlengang abgedeckt, ist das Ausgangssignal False, ansonsten True. Lichtschranken können auch zur Drehzahlmessung an Elektromotoren verwendet werden. Dazu wird mit einer Lichtschranke der Hell-Dunkel-Übergang an einer Strichscheibe erfasst wird. Solche Sensoren nennt man auch Inkrementalencoder. Abb. 11-1: Prinzipieller Aufbau eines Inkrementalencoders 11.2 Schnelle Zählereingänge Liefert ein Encoder z.B. 256 Signale pro Umdrehung des Motors, müssen bei einer Drehzahl von 3.000 U/min bereits 12.800 Signale pro Sekunde erfasst werden. Wenn Signale so schnell erfasst werden müssen, sind spezielle Eingangskanäle notwendig. Sie heißen schnelle Zählereingänge. In EasyLab gibt es auch einen solchen Zählereingang: Der Funktionsblock fragt ebenfalls den digitalen Eingang ab, der durch den Baustein DIO bereitgestellt wird, liefert jedoch als Rückgabewert den Abstand zwischen zwei steigenden Flanken in Mikrosekunden. 38 © Festo Didactic GmbH & Co. KG EasyKit 12 Regelungstechnik mit EasyKit Lernziele • Steuern und Regeln • Zweipunktregler • Dreipunktregler • PID-Regler Arbeitsblatt 10 12.1 Grundlagen: Steuern und Regeln An Maschinen oder Anlagen müssen oft Größen wie Druck, Temperatur oder Durchfluss auf vorgegebene Werte eingestellt werden. Zusätzlich sollen sich diese eingestellten Werte auch bei auftretenden Störungen nicht verändern. Solche Aufgaben werden von einer Regelung übernommen. Die Regelungstechnik beschäftigt sich mit allen Problemen, die im Zusammenhang mit dieser Aufgabe auftreten. Damit eine zu regelnde Größe einem selbsttätig arbeitenden Regler als elektrisches Signal zur Verfügung steht, wird sie zunächst erfasst und entsprechend umgewandelt. Dies übernehmen in der Regel Sensoren. Dann muss diese Größe im Regler mit dem vorgegebenen Wert oder Werteverlauf - der Führungsgröße verglichen werden. Aus dem Vergleich muss abgeleitet werden, wie in die Anlage eingegriffen wird. Schließlich muss in der Anlage eine geeignete Stelle gefunden werden, über welche man die zu regelnde Größe beeinflussen kann (z. B. der Steller einer Heizung). Dazu ist es wichtig zu wissen, wie die Anlage sich verhält. Die Regelungstechnik versucht, allgemeingültige Zusammenhänge zu finden, die für verschiedene Technologien gleichermaßen gelten. Die meisten Lehrbücher erklären dies mit Hilfe höherer Mathematik. Im vorliegenden Kapitel sollen grundlegende Begriffe und Kenntnisse der Regelungstechnik so erläutert werden, dass auf Mathematik weitgehend verzichtet werden kann. Steuern Die deutsche Norm DIN 19226 definiert: Steuern ist ein Vorgang an einem System, bei dem eine Eingangsgröße (oder mehrere Eingangsgrößen) andere Größen als Ausgangsgröße aufgrund der dem System eigentümlichen Gesetzmäßigkeit beeinflussen. Kennzeichen für das Steuern ist der offene Wirkungsablauf, d. h. die Ausgangsgröße wirkt in keiner Weise auf die Eingangsgröße zurück. Regeln Die Norm DIN 19226 definiert: Regeln ist ein Vorgang an einem System, bei dem die zu regelnde Größe (Regelgröße) fortlaufend erfasst und mit dem vorgegebenen Wert (Führungsgröße) verglichen wird. Abhängig vom Ergebnis dieses Vergleichs wird die Eingangsgröße des Systems derart beeinflusst, dass die Ausgangsgröße an den vorgegebenen Wert trotz störender Einflüsse angeglichen wird. Durch diese Rückwirkung erhält man einen geschlossenen Wirkungsablauf. Führungsgröße Die Führungsgröße W wird auch als Sollwert der Regelgröße bezeichnet. Sie gibt den gewünschten Wert der Regelgröße vor. Die Führungsgröße kann über die Zeit konstant sein; sie kann sich aber auch über die Zeit ändern. Der tatsächliche Wert der Regelgröße wird Istwert genannt. © Festo Didactic GmbH & Co. KG 39 Mikrocontrollerprogrammierung mit EasyKit Beim Regeln geht es darum, die zu regelnde Größe auf einem vorgegebenen Wert zu halten oder einem vorgegebenen Werteverlauf nachzufahren. Dieser vorgegebene Wert heißt Führungsgröße. Regelgröße Definition: Ziel einer Regelung ist es, eine Größe auf einem vorgegebenen Wert oder Werteverlauf zu halten. Diese zu regelnde Größe wird als Regelgröße x bezeichnet. Dieses Problem stellt sich in Anlagen und Maschinen der unterschiedlichsten Technologien. Die zu regelnde Größe wird dabei Regelgröße genannt. Beispiel Drehzahl eines DC-Motors Regelgrößen können z. B. sein: • der Druck in einem pneumatischen Druckspeicher • der Druck in einer hydraulischen Presse • die Temperatur in einem Galvanisierbad • der Durchfluss von Kühlmittel in einem Wärmetauscher • die Konzentration einer Chemikalie in einem Rührkesselreaktor • die Geschwindigkeit eines Vorschubes in einer Werkzeugmaschine mit elektrischem Antrieb • Drehzahl eines Motors Stellgröße Eine selbsttätige Regelung kann nur dann erfolgen, wenn an der Maschine oder Anlage eine Eingriffsmöglichkeit besteht, die Regelgröße zu beeinflussen. Die Regelgröße lässt sich in jeder Anlage durch einen Eingriff beeinflussen. Erst mit einem solchen Eingriff kann die Regelgröße derart eingestellt werden, dass sie dem vorgegebenen Wert entspricht. Die Größe, die einen solchen Eingriff bewirkt, wird Stellgröße y genannt. Stellgrößen können z. B. sein: • die Stellung der Abluftdrossel am pneumatischen Druckspeicher • die Stellung des hydraulischen Druckregelventils • die angelegte Spannung an der elektrischen Heizung des Galvanisierbades • die Stellung der Drossel in der Kühlmittelleitung • die Stellung des Ventils in der Chemikalienzuflussleitung • die Spannung am Anker des Gleichstrommotors Störgröße z An jeder Regelstrecke greifen Störungen an. Diese machen die Regelung oft erst notwendig. Diese Störeinwirkungen werden als Störgrößen z bezeichnet. Die Regelstrecke ist der Teil der Maschine oder Anlage, in dem die Regelgröße auf den vorgegebenen Wert gebracht werden soll und an dem die Stellgrößen die Störgrößen ausgleichen. Eine Regelstrecke hat nicht nur die Stellgröße als Eingangsgröße, sondern Störgrößen treten ebenfalls als Eingangsgrößen auf. Regeldifferenz xd Der Vergleich von Führungs- und Regelgröße wird als Regeldifferenz xd bezeichnet. Sie berechnet sich aus der Differenz: 40 © Festo Didactic GmbH & Co. KG EasyKit xd = e = W - x Regelverhalten Das Regelverhalten besagt, wie die Regelstrecke auf Eingangsgrößenänderungen reagiert. Die Ermittlung des Regelverhaltens ist Ziel der Regelungstechnik. Regler Der Regler hat die Aufgabe, die Regelgröße so nahe wie möglich an der Führungsgröße zu halten. Im Regler wird der Wert der Regelgröße ständig mit dem Wert der Führungsgröße verglichen. Aus diesem Vergleich und dem Regelverhalten wird der Wert der Stellgröße ermittelt und ausgegeben. Regeldifferenz xd Regelgröße x (Istwert) Regelverhalten (Algorithmus) + Stellgröße y Führungsgröße W (Sollwert) Stellglied und Stellantrieb Das Stellglied verändert die Regelgröße. Das Stellglied wird meist durch einen besonderen Stellantrieb betätigt. Ein Stellantrieb ist immer dann erforderlich, wenn der Regler nicht in der Lage ist, das Stellglied unmittelbar zu betätigen. Messglied Um dem Regler die Regelgröße zugänglich zu machen, muss sie durch ein Messglied (Sensor, Messumformer) erfasst und in die physikalische Größe umgewandelt werden, die der Regler als Eingang verarbeiten kann. Regelkreis Der Regelkreis beinhaltet alle Komponenten des geschlossenen Wirkungskreises, die zu einer selbsttätigen Regelung notwendig sind. Störgröße Befehlsgeber Sollwert w Führungsgröße Messort mit Sensor Stellglied Vergleichsstelle e w x Regler Regeldifferenz y Regelstrecke Stellgröße x Istwert x Regelgröße Regelstrecken Die Regelstrecke ist der Teil der Maschine oder Anlage, in dem die Regelgröße auf den vorgegebenen Wert gebracht werden soll und an dem die Stellgrößen die Störgrößen ausgleichen. Eine Regelstrecke hat nicht nur die Stellgröße als Eingangsgröße, sondern Störgrößen treten ebenfalls als Eingangsgrößen auf. © Festo Didactic GmbH & Co. KG 41 Mikrocontrollerprogrammierung mit EasyKit Um einen Regler für eine Regelstrecke festzulegen, muss zunächst das Verhalten der Regelstrecke bekannt sein. Der Regelungstechniker interessiert sich nicht für die technologischen Abläufe im Inneren der Regelstrecke, sondern ausschließlich für das Systemverhalten. Zeitverhalten eines Systems Besonders wichtig für die Regelungstechnik ist das Zeitverhalten eines Systems (auch dynamisches Verhalten genannt). Das ist der zeitliche Verlauf der Ausgangsgröße (Regelgröße) bei Änderungen der Eingangsgrößen. Hierbei kommt es vor allem auf das Verhalten bei Stellgrößenänderungen an. Der Regelungstechniker muss sich stets darüber klar werden, dass nahezu jedes System ein ausgeprägtes dynamisches Verhalten hat. Sprungantwort bzw. Übergangsfunktion Das Verhalten eines Systems bei einem Sprung der Eingangsgröße wird als Sprungantwort oder Übergangsfunktion bezeichnet. Mit dieser Sprungantwort wird jedes System charakterisiert. Sie dient auch dazu, Systeme mit mathematischen Gleichungen zu beschreiben. Dynamisches Verhalten Diese Beschreibung eines Systems wird auch dynamisches Verhalten genannt. Die Abbildung verdeutlicht diesen Zusammenhang. Hierbei wurde die Stellgröße y sprungartig vergrößert (siehe unteres Diagramm). Die Sprungantwort der Regelgröße x ist ein Einschwingvorgang mit kurzzeitigen Überschwingern. y x t Stellgröße y t Regelstrecke Regelgröße x Beharrungszustand Eine weitere Kennzeichnung von Systemen ist das Verhalten im Beharrungszustand des Systems, das statische Verhalten. Statisches Verhalten Das statische Verhalten eines Systems ist dann erreicht, wenn alle Größen sich über der Zeit nicht mehr ändern. Der Beharrungszustand wird damit erst nach Abklingen aller Einschwingvorgänge erreicht. Er kann beliebig lang aufrechterhalten werden. Auch im statischen Verhalten ist die Ausgangsgröße von der Eingangsgröße abhängig. Diese Abhängigkeit wird durch die Kennlinie eines Systems aufgezeigt. Regler Der Regler ist die Einrichtung im Regelkreis, die den Vergleich zwischen der gemessenen Größe (dem 42 © Festo Didactic GmbH & Co. KG EasyKit Istwert) und dem vorgegebenen Wert, dem Sollwert, durchführt und daraus die Stellgröße berechnet und ausgibt. Im vorhergehenden Abschnitt wurde deutlich, dass sich Regelstrecken sehr unterschiedlich verhalten. Es gibt schnelle Strecken; es gibt Strecken mit starkem Verzögerungsverhalten; und es gibt Strecken mit Speicherverhalten. Für jede dieser Strecken muss der Eingriff auf die Stellgröße y auf andere Weise erfolgen. Deshalb gibt es unterschiedliche Regler mit unterschiedlichen Regelverhalten. Die Aufgabe des Regelungstechnikers ist es, für eine Strecke das optimale Regelverhalten des Reglers zu bestimmen. Regelverhalten Als Regelverhalten bezeichnet man die Art und Weise, wie der Regler aus der Regeldifferenz die Stellgröße ableiten muss. 12.2 Reglertypen in EasyLab In der Regelungstechnik haben sich verschiedene Reglertypen durchgesetzt, die für unterschiedliche Aufgaben genutzt werden können. Sie unterscheiden sich Ihren Regelalgorithmus. Zweipunktregler Dreipunktregler Proportionalregler Ein Zweipunktregler besitzt nur zwei Ausgangswerte: ein und aus. Wenn der Istwert über dem Sollwert liegt, ist der Ausgangswert aus, liegt der Istwert unter dem Sollwert, ist der Ausgangswert ein. Zweipunktregler sind besonders dann geeignet, wenn die Stellgröße sich nicht stetig verändern, sondern nur zweiWerte annehmen kann (eben an oder aus). Ein Beispiel hierfür ist ein Thermostat, der die Heizung je nach Temperatur ein oder ausschaltet. Der Nachteil des Zweipunktreglers ist, dass er niemals zur Ruhe kommt. Der Dreipunktregler hat drei Ausgangszustände. Liegt das zu verarbeitende Signal oberhalb der oberen Grenze, wird der Ausgang auf den positiven Wert (Output Level) eingestellt. Liegt es hingegen unterhalb der unteren Grenze, wird der Ausgang auf den negativen Wert (Output Level) eingestellt. Falls das Signal zwischen beiden Grenzen, so wird der Ausgang auf 0 gesetzt. Beispiele dafür sind Lageregler, die vorwärts und Rückwärts fahren oder stillstehen können. Es können aber auch Stellgrößen mit zwei Intensitätsstufen angesteuert werden. Der Proportionalregler liefert hingegen ein kontinuierliches Ausgangssignal. Der Ausgabewert ist dabei proportional dem Abweichung zwischen Soll- und Istwert. Der Proportionalitätsfaktor ist der wichtigste Einstellparameter des Proportionalreglers oder P-Reglers. Ist der Faktor groß, führen kleine Regelabweichungen bereits zu starken Reaktionen des Reglers, kleine Faktoren hingegen lassen den Regler weniger stark reagieren. Abb. 10-1 zeigt das Verhalten eines Regelkreises mit P-Regler und kleinem (links) © Festo Didactic GmbH & Co. KG 43 Mikrocontrollerprogrammierung mit EasyKit und großem Proportionalitätsfaktor (rechts). Während im einen Fall der Regelkreis sich nur langsam dem Sollwert W nähert und diesen nicht vollständig erreicht, wird bei zu starken Faktor der Sollwert zwar schenll erreicht, aber überschossen. Daraufhin muss der Regler gegensteuern, überschießt wieder nach unten und so weiter. Es kann sogar vorkommen, dass der gesamte Regelkreis sich aufschwingt und instabil wird. Dies gilt es natürlich unter allem Umständen zu vermeiden. Man muss den Faktor finden, den besten Kompromiss zwischen Regelgeschwindigkeit und Stabilität bietet. Abb. 12-1: Zeitliches Verhalten eines Regelkreises mit P-Regler Der P-Regler kann zum Proportional-Integral- oder PI-Regler erweitert werden. Der Integralanteil des Reglers reagiert nicht auf die aktuelle Regelabweichung, sondern summiert (integriert) die Regelabweichung ständig auf und reagiert auf die Summe der Abweichungen. Ein PI-Regler kann daher auch kleinste Regelabweichungen beseitigen, was bei einem reinen P-Regler nicht möglich ist. Bei einem PID-Regler reagiert der Differential-Anteil auf die Änderungsgeschwindigkeit der Regelabweichung. Diese Regler reagieren daher sehr schnell, führen aber leicht zu Instabilitäten. 44 © Festo Didactic GmbH & Co. KG EasyKit 13 Übersicht über die Funktionsblöcke in EasyKit Wichtige allgemeine Funktionsblöcke Abbildung Name Beschreibung Ordner Konstante Liefert einen konstanten Wert zurück Konstanten (z.B. eine Zahl) Addition, Zählt Zahlen zusammen oder zieht sie Mathematik Subtraktion voneinander ab Arithmetische Operationen Multiplikation, Division Multipliziert zwei Zahlen oder teilt eine Zahl durch eine andere Mathematik Arithmetische Operationen Größer, Kleiner, Gleichheit Vergleicht zwei Zahlen Mathematik Vergleichsoperationen Typ- Wandelt eine Ganzzahl in eine Mathematik umwandlung Kommazahl oder Wahrheitswert um bzw. umgekehrt Intervall- Zeigt einen Zahlenwert als Balken an Anzeige anzeige Minimum, Gibt die kleinere bzw. größere von zwei Mathematik Maximum Zahlen zurück. Funktionen UND-/ODERVerknüpfung, Negation Verknüpft oder invertiert Wahrheitswerte Mathematik Logische Operationen Multiplexer Wählt ein Signal aus einer Menge von Signalen aus Verschiedenes Demultiplexer Verteilt ein Signal auf genau einen Kanal Verschiedenes aus einer Menge von Kanälen PID-Regler Regelt z.B. einen Elektromotor, indem Regler eine Abweichung vom Sollwert ausgeglichen wird Funktionsblöcke des Geräts „EasyKit Starter Basisboard“ Abbildung Name Beschreibung Rote/Gelbe/Grüne LED Steuert die entsprechende LED auf dem Basisboard an Taster 1/2/3 Liefert den Zustand des entsprechenden Tasters auf dem Basisboard zurück © Festo Didactic GmbH & Co. KG Analoger Eingang/ Ausgang auf A-In1 Liefert den Spannungswert am analogen Eingang bzw. definiert den Wert am Ausgang Digitaler Eingang/ Ausgang auf D-In1 Liefert den Zustand des digitalen Eingangs bzw. definiert den Zustand des Ausgangs Digitale Flanken- Liefert die Zeit zwischen zwei steigenden Signalflanken am erkennung auf D-In1 Eingang D-In1 zurück 45 Arbeitsblatt 1 Lernziele Binäre Signale, Blockschaltbilder und Datenflussdiagramme, Bedienung von EasyLab, Taster und LED Aufbau der Bildschirmoberfläche EasyLab Nr. Bedeutung 1 Arbeitsfläche zur der Erstellung der Programme 2 Programmbausteine für die Unterprogramme (Funktionsbibliothek) 3 Hinzufügen neuer Hardware (geschieht normalerweise automatisch) 4 Kontrolltasten zur Ablaufsteuerung (siehe Abb. 3-4) 5 Reiter zum Umschalten zwischen Haupt- und Unterprogrammen Bedienelemente der Steuerleiste Nr. Bedeutung 1 Umschalten auf Simulationsmodus 2 Umschalten auf Codeerzeugungsmodus 3 Start Simulation bzw. Kompilieren 4 Einfrieren der Programmausführung 5 Stop der Programmausführung 6 Anzeigen der Werte der FunktionsblockAnschlüsse 7 Anzeigen der Beschreibung der Funktionsblock-Anschlüsse 8 Umschalter für Anfänger- und Expertenmodus © Festo Didactic GmbH & Co. KG 46 Aufgabe 1 Welche Geräte können mit binären Signalen gesteuert werden bzw. abgefragt werden? Taste Raumtemperatur Lampe Potentiometer Wasserbehälter voll/leer Tür geöffnet/geschlossen Aufgabe 2 Zeichnen Sie ein Blockschaltbild von EasyBoard Aufgabe 3 Erstelle ein Programm, das die rote LED auf dem EasyBoard einschaltet, wenn die Taste 1 gedrückt wird. Teste das Programm im Simulations- und Codeerzeugungsmodus. siehe Beispielprogramm Ex1-1.easy Aufgabe 4 Erweitere das Programm aus Übungsaufgabe 1 so, dass durch Betätigung der Taste 1 die rote und die grüne LED eingeschaltet wird, aber durch Betätigen der Taste 2 die gelbe LED leuchtet. Siehe Beispielprogramm Ex1-2.easy © Festo Didactic GmbH & Co. KG 47 Arbeitsblatt 2 Lernziele Schrittketten, Verzweigungen, Konstanten und Variablen Schrittketten in EasyLab Nr. Bedeutung 1 Startschritt 2 Zustand oder Programmschritt Zuweisen eines Unterprogramms zu einem Schritt 48 3 Weiterschaltbedingung 4 Einfügen Schritte 5 Variablenliste 6 Reiter des Hauptprogramms Verzweigung im Hauptprogramm © Festo Didactic GmbH & Co. KG Aufgabe 1 Erläutern Sie den Unterschied zwischen Variable und Konstante. Eine Variable dient als Speicher für Informationen. Sie hat einen bestimmten Datentyp und kann innerhalb des Programms überschrieben und ausgelesen werden. Eine Konstante dient ebenfalls als Speicher, kann aber während des Programablaufes nicht überschrieben werden. Aufgabe 2 Beschreiben Sie den Vorgang des Kaffeekochens als Schrittkette Aufgabe 3 Erstellen Sie ein Programm in EasyLab mit folgender Funktionalität: Die rote LED soll durch Drücken von Taste 1 eingeschaltet werden und so lange leuchten, bis auf Taste 2 gedrückt wird. Danach ist das Programm beendet. Siehe Beispielprogramm Ex 2-1.easy Aufgabe 4 Erstellen Sie ein Programm in EasyLab mit folgender Funktion: Taste 1 schaltet die rote, Taste 2 die gelbe LED ein. Ein Druck auf Taste 3 löscht die jeweils eingeschaltete LED wieder. Der Zyklus soll sich endlos wiederholen. Siehe Beispielprogramm Ex 2-2.easy © Festo Didactic GmbH & Co. KG 49 Arbeitsblatt 3 Lernziele: Logische Verknüpfungen Übersicht Logische Verknüpfungen als Funktionsbaustein Benennung Funktionstabelle Funktionsblock in EasyLab Nicht Und Oder Exklusiv-Oder Logische Verknüpfungen als Weiterschaltbedingung im Hauptprogramm Bennenung Symbol Und && Oder || Negation ! Beispiel: taste1 und taste2 sind integer-Variablen 50 taste1 und taste2 sind boolesche Variablen © Festo Didactic GmbH & Co. KG Aufgabe 1 Welchen Ausgangswert ergeben die dargestellten logischen Verknüpfungen? Aufgabe 2 In einer Anlage soll ein Lüfter eingeschaltet werden, wenn die Temperatur größer als 33° ist, beide Tore geschlossen sind und das Transportband stillsteht. Formulieren Sie die Übergangsbedingung! Aufgabe 3 Erstellen Sie ein Programm mit EasyLab mit folgenden Eigenschaften: Wenn Taste 1 und Taste 2 gleichzeitig betätigt werden, wird die rote LED eingeschaltet. Wenn danach Taste 2 und Taste 3 gleichzeitig betätigt werden, wird die rote LED ausgeschaltet. Danach beginnt der Zyklus von vorn. a.)Nutze die Funktionsbausteine Logische Operationen innerhalb der Unterprogramme. Siehe Beispielprogramm Ex 3-1.easy b.)Nutze logische Operationen innerhalb des Hauptprogramms als Weiterschaltbedingung. Siehe Beispielprogramm Ex 3-2.easy © Festo Didactic GmbH & Co. KG 51 Arbeitsblatt 4 Lernziele: Flankenerkennung, Flip-Flops mit und ohne Flankenerkennung Übersicht über Flip-Flops Abbildung Name Funktion Ordner Flankenerkennung Der Block gibt bei jeder Signalverarbeitung -> Filter Signalveränderung am Eingabesignal, welche oberhalb der Toleranzgrenze ist, einen Impuls aus. Wird der Wert des Signals größer, wird ein Impuls an Steigende Flanke erkannt ausgegeben. Wird der Wert des Signals kleiner, wird ein Impuls an Fallende Flanke ausgegeben. Der Funktionsblock kann auch dazu verwendet werden, Flanken in Booleschen Signalen RS-Kippstufe Liegt am Eingang S der Wert True an, Signalverarbeitung -> Flip-Flops wird der Ausagng Q auf True gesetzt. Durch Setzen des Löscheingangs R wird der Ausgang Q wieder gelöscht. Der Ausgang _Q zeigt jeweils das inverse Signal T-Kippstufe Mit jeder steigenden Flanke am Signalverarbeitung -> Flip-Flops Eingang C wechseln die Ausgänge ihren logischen Zustand. Es ist immer genau einer der beiden Ausgänge wahr, während der andere falsch ist. Initial besteht der Zustand falsch für Q und wahr für _Q 52 Flankengesteuerte Diese Baustein arbeitet wie ein RS- RS-Kippstufe Kippstufe, jedoch findet ein Umschalten nur statt, wenn am Eingang C eine steigende Flanke anliegt. Signalverarbeitung -> Flip-Flops © Festo Didactic GmbH & Co. KG Aufgabe 1 Erstellen Sie ein Programm in EasyLab mit folgenden Eigenschaften: Immer, wenn die Taste 1 gedrückt wird, wird die rote LED eingeschaltet. Immer, wenn die Taste 2 gedrückt wird, wird die rote LED ausgeschaltet. Es soll nur ein Unterprogramm verwendet werden. Siehe Beispielprogramm Ex4-1.easy. Aufgabe 2 Erstellen Sie ein Programm mit EasyLab mit folgenden Eigenschaften: Immer, wenn die Taste 1 gedrückt wird, wird die rote LED eingeschaltet. Erneutes Betätigen der Taste 1 schaltet die rote LED wieder aus. Es soll nur ein Unterprogramm verwendet werden. Siehe Beispielprogramm Ex4-2.easy. © Festo Didactic GmbH & Co. KG 53 Arbeitsblatt 5 Lerziele Duale Zahlen, Gleitkommazahlen, Arbeiten mit Variablen, Typumwandlung Datentypen in EasyLab Typ Erläuterung Wertebereich bool Logische Werte True , false Int8 Integer mit 8 Bit Genauigkeit Ganze Zahlen zwischen -128 und 127 Int16 Integer mit 16 Bit Genauigkeit Ganze Zahlen zwischen -32768 und 32768 Vorzeichenloser Integer mit 8 Bit Ganze Zahlen zwischen 0 und Genauigkeit 255 uint16 Vorzeichenloser Integer mit 16 Bit Genauigkeit Ganze Zahlen zwischen 0 und 65535 float Fließkommazahl (32 bit) -3,14 double Fließkommazahl (64 bit) -3,14 uint8 Funktionsbausteine zur Signalgenerierung, Multiplexen und Typumwandeln Abbildung Name Funktion Ordner Schrittfunktion Zählt den Ausgangswert in vorgegebenen Inkrementen hoch Signalgenerierung PWM-Signal Erzeugt ein Pulsweitenmoduliertes Signalgenerierung Signal vom Typ Boole Sägezahnsignal Erzeugt einen Sägezahnimpuls von Typ integer oder float Signalgenerierung Multiplexer Auswahl mehrerer Eingänge Verschiedenes Demultiplexer Verteilen eines Wertes auf mehrere Verschiedenes Ausgänge Typumwandlung 54 Umwandlung eines Datentyps in einen anderen Matehmatik © Festo Didactic GmbH & Co. KG Aufgabe 1 Stellen Sie folgende Zahlen in duale Form dar (8 bit unsigned): Dezimal Dual (8 bit unsigned) 3 0 0 0 0 0 0 1 1 128 1 0 0 0 0 0 0 0 64 0 1 0 0 0 0 0 0 25 0 0 0 1 1 0 0 1 Aufgabe 2 Erstellen Sie ein Programm in EasyLab, dass die gelbe LED periodisch blinken lässt. Die Periode soll über Tastendruck eingestellt werden können. Betätigen der Taste 1 soll die Blinkfrequenz erniedrigen, Betätigen der Taste 3 die Blinkfrequenz erhöhen. a.) Mit welchem Funktionsbaustein kann ein periodisches Signal erzeugt werden? Was bedeuten die Eingangsparameter? Informieren Sie sich mit der Hilfefunktion von EasyLab. Der Baustein Pulsweitenmoduliertes Signal liefert gepulste binäre Signale. Der Eingangswert period ext definiert die Dauer eines Signals in Mikrosekunden, der Paramter dutyCycle ext definiert den Anteil der Periode mit Ausgangssignal true (zwischen 0 und 100 %). b.) Schreiben Sie ein Programm, dass die LED mit einer Frequenz von 1 Hz blinken läßt. Siehe Beispielprogramm Ex5-2.easy c.) Wie kann aus dem Ausgangssignal des Funktionsblockes Taster ein berechenbares Signal erzeugt werden? Mit dem Baustein Typumwandlung. Er wandelt ein Signal des Typs bool in einen integer um. d.) Beschreibe den Rechenalgorithmus zur Veränderung der Frequenz per Tastendruck. Ein Tastendruck erzeugt einen Signal true, das mit dem Funktionsblock Typumwandlung in einen integer mit Wert 0 oder 1gewandelt wird. Dieser Wert wird einer Variable Frequenz hinzuaddiert oder subtrahiert, je nachdem, welche Taste gedrückt wird. Dieser Wert wird mit 1000 multipliziert, damit die Verstellung schnell geht. e.) Erstelle das Programm und teste es im Simulationsmodus und auf dem EasyBoard. Siehe Beispielprogramm Ex5-3.easy © Festo Didactic GmbH & Co. KG 55 Arbeitsblatt 6 Lerziele Duale Zahlen, Gleitkommazahlen, Arbeiten mit Variablen, Typumwandlung Datentypen in EasyLab Typ Erläuterung Wertebereich bool Logische Werte True , false Int8 Integer mit 8 Bit Genauigkeit Ganze Zahlen zwischen -128 und 127 Int16 Integer mit 16 Bit Genauigkeit Ganze Zahlen zwischen -32768 und 32768 Vorzeichenloser Integer mit 8 Bit Ganze Zahlen zwischen 0 und Genauigkeit 255 uint16 Vorzeichenloser Integer mit 16 Bit Genauigkeit Ganze Zahlen zwischen 0 und 65535 float Fließkommazahl (32 bit) -3,14 double Fließkommazahl (64 bit) -3,14 uint8 Funktionsbausteine zur Signalgenerierung, Multiplexen und Typumwandeln Abbildung Name Funktion Ordner Schrittfunktion Zählt den Ausgangswert in vorgegebenen Inkrementen hoch Signalgenerierung PWM-Signal Erzeugt ein Pulsweitenmoduliertes Signalgenerierung Signal vom Typ Boole Sägezahnsignal Erzeugt einen Sägezahnimpuls von Typ integer oder float Signalgenerierung Multiplexer Auswahl mehrerer Eingänge Verschiedenes Demultiplexer Verteilen eines Wertes auf mehrere Verschiedenes Ausgänge Typumwandlung 56 Umwandlung eines Datentyps in einen anderen Matehmatik © Festo Didactic GmbH & Co. KG Aufgabe 1 a.)Erstellen Sie ein Programm zur Typumwandlung nach folgendem Muster: b.) Durch Doppelklick auf das Kontextmenue der Funktionsbausteine kann der Datentyp der Bausteine eingestellt werden. Stellen Sie bei der Konstanten den Datentyp Float ein, bei der Variable test den Wert int16 (bzw. boole). Starten Sie das Programm im Simulationsmodus, geben Sie folgende Werte für die Konstante ein und notieren Sie den Wert, den die Variable annimmt: Konstante Variable Test Konstante Variable Test (Typ: Float) (Typ: int 16) (Typ: Float) (Typ: bool) 0 0 0 False 2,6 2 0,1 True 16,1 16 1 True 100.000 32767 16 True -12 -12 -12 True c.)Welche Schlussfolgerungen können Sie ziehen? Variablentyp int16 hat den maximalen Wert 32767. Es wird beider Umwandlung immer abgerundet. Jeder Wert außer Null wird nimmt bei der Umwandlung zum Typ boole True an. Aufgabe 2 Erstellen Sie ein Programm in EasyLab zur Steuerung der LED. Einmaliges Drücken der Taste 1 gefolgt von Drücken der Taste 3 schaltet die rote LED ein, zweimaliges Drücken der Taste 1 die gelbe LED und dreimaliges Drücken der Taste 1 die grüne LED. Drücken der Taste 3 löscht alle LED und beendet das Programm. Siehe Beispielprogramm Ex6-1.easy © Festo Didactic GmbH & Co. KG 57 Arbeitsblatt 7 Lernziele Analog-Digital-Wandler, Analogwertverarbeitung mit EasyLab und EasyBoard Funktionsbausteine für digitale und analoge Signale Bausteincode Funktion Softwarebaustein Klemme an Ordner Basisplatine Digitaler Ausgang DOut1 EasyKit Starter Basisboard -> Stapel 1->Digitale E/A DIO 1.1 Digitaler Eingang Din1 EasyKit Starter Basisboard -> Stapel 1->Digitale E/A Analoger AIO 1.1 AIn1 Ausgangskanal EasyKit Starter Basisboard -> Stapel 1->Analoge E/A Analoger AOut1 EasyKit Starter Basisboard -> Stapel 1->Analoge E/A Eingangskanal Aufbau des Applikationsboards 1 DC-Motor 2 Klemmleiste 3 Lichtschranke 4 Phototransistor 5 Jumper 6 Jumper zum Umschalten von Lichtschranke auf Photodiode Zwischen Phototransistor und Lichtschranke kann durch Einstellung des Jumpers 2 (6) umgeschaltet werden: Kontakt 1-2 geschlossen: Lichtschranke Kontakt 2-3 geschlossen: Phototransistor 58 © Festo Didactic GmbH & Co. KG Aufgabe 1 Zur Belichtungsmessung soll das Signal des Phototransistor eingelesen werden. Welche Bausteine und welche Funktionsbausteine werden benötigt? AIO DIO Aufgabe 2 Damit die Signale des Phototransistor auf den Mikrocontroller übertragen werden können, muss das Applikationsboard angeschlossen werden. Welche Kontakte der Kontaktleiste 2 des Applikationsboards müssen mit welchen Kontakten der Klemmleiste des EasyBoards 5 verbunden werden? Aufgabe 3 Erstellen Sie ein Programm mit EasyLab, dass abhängig von der Beleuchtungsstärke im Raum eine Lampe (=LED) einschaltet. Testen Sie das Programm in der Simulation und mit dem EasyBoard. Ermitteln Sie einen für die Beleuchtungsverhältnisse passenden Schwellwert (evtl. kann es nötig sein, den Phototransistor mit einer Taschenlampe anzuregen). Siehe Beispielprogramm Ex7-3.easy © Festo Didactic GmbH & Co. KG 59 Arbeitsblatt 8 Lernziele Analoge Ausgangskanäle, Digital-Analog-Wandler, Pulsweitenmodulation, Gleichstrommotore Funktionsbausteine für digitale und analoge Signale Bausteincode Funktion Softwarebaustein Klemme an Ordner Basisplatine Digitaler Ausgang DOut1 EasyKit Starter Basisboard -> Stapel 1->Digitale E/A DIO 1.1 Digitaler Eingang Din1 EasyKit Starter Basisboard -> Stapel 1->Digitale E/A Analoger AIO 1.1 AIn1 Ausgangskanal EasyKit Starter Basisboard -> Stapel 1->Analoge E/A Analoger AOut1 EasyKit Starter Basisboard -> Stapel 1->Analoge E/A Eingangskanal Aufbau des Applikationsboards 1 DC-Motor 2 Klemmleiste 3 Lichtschranke 4 Phototransistor 5 Jumper 6 Jumper zum Umschalten von Lichtschranke auf Photodiode Zwischen Phototransistor und Lichtschranke kann durch Einstellung des Jumpers 2 (6) umgeschaltet werden: Kontakt 1-2 geschlossen: Lichtschranke Kontakt 2-3 geschlossen: Phototransistor 60 © Festo Didactic GmbH & Co. KG Aufgabe 1 Der DC-Motor des Applikationsboards soll angesteuert werden. Welche Bausteine und welche Funktionsbausteine werden benötigt? AIO DIO Aufgabe 2 Damit der Motor angesteuert werden kann, muss das Motorboard angeschlossen werden. Welche Kontakte der Kontaktleiste 2 des Applikationsboards müssen mit welchen Kontakten der Klemmleiste des EasyBoards 5 verbunden werden? Aufgabe 3 Erstellen Sie das abgebildete Programm in EasyLab und lassen es mit verschiedenen Werten für die Konstante UM laufen. Welche Beobachtung machen Sie? Der Motor beginnt sich bei einem Wert von ca. 30 zu drehen. Die Drehzahl steigert sich bis zu einem Wert von ca. 50 und bleibt dann konstant. Aufgabe 4 Erstellen Sie ein Programm mit EasyLab, mit dem die Drehzahl des Motors stufenlos durch Betätigen der Tasten 1 und 3 verändert werden kann. Betätigen der Taste 2 soll den Motor starten oder stoppen. Siehe Beispielprogramm Ex8-1.easy © Festo Didactic GmbH & Co. KG 61 Arbeitsblatt 9 Lernziele Drehzahlmessung, Schnelle Zählereingänge Funktionsbausteine zur Ein-und Ausgabe Bausteincode Funktion Softwarebaustein Klemme an Ordner Basisplatine Digitaler Ausgang DOut1 EasyKit Starter Basisboard -> Stapel 1->Digitale E/A DIO 1.1 Digitaler Eingang Din1 EasyKit Starter Basisboard -> Stapel 1->Digitale E/A Zählereingang Din1 EasyKit Starter Basisboard -> Stapel 1->Digitale E/A AIO 1.1 Analoger Ausgangskanal AIn1 EasyKit Starter Basisboard -> Stapel 1->Analoge E/A Analoger AOut1 EasyKit Starter Basisboard -> Eingangskanal 62 Stapel 1->Analoge E/A © Festo Didactic GmbH & Co. KG Aufgabe 1 Der DC-Motor des Applikationsboards soll angesteuert werden und die Drehzahl gemessen werden. Welche Bausteine und welche Funktionsbausteine werden benötigt? AIO DIO Aufgabe 2 Wie muss das Applikationsboard mit dem EasyBoard verbunden werden, wenn der Motor angesteuert und gleichzeitig die Drehzahl erfasst werden soll? Aufgabe 3 Der Funktionsbaustein Digitale Flankenerfassung liefert den zeitlichen Abstand zweier ansteigender Flanken in Mikrosekunden. Wie lautet die Umrechnung in die Einheit Umdrehungen pro Minute,wenn die Codescheibe einen Hell-Dunkel-Übergang hat? Jeder Flankenübergang entspricht einer halben Umdrehung, da die Strichscheibe 4 Felder hat. Zunächst muss der Abstand zwischen zwei Flanken (in Mikrosekunden) durch 1.000.000 dividiert werden, um den zeitlichen Abstand in Sekunden zu erhalten. Teilt man 60 durch diese Zeit, erhält man die Drehzahl in Umdrehungen/Minute. Der Faktor 2 berücksichtigt, dass die Scheibe 4 Felder hat und damit 2 positive Flanken pro Umdrehung liefert. n = (60 * 106)/(2*Δt) Aufgabe 4 a.)Erweitern Sie das Programm aus Arbeitsblatt 8 durch eine Drehzahlanzeige! Verwenden Sie dazu auch den Baustein Intervallanzeige! Siehe Beispielprogramm Ex9-1.easy. b.)Stellen Sie verschiedene Drehzahlen ein und verändern Sie die Lage des Applikationsboards (drehen, kippen usw.) Was stellen Sie fest? Eine andere Lage (besonders bei hängendem Motor) verändert die Drehzahl. Grund sind unterschiedliche Reibungsverhältnisse. © Festo Didactic GmbH & Co. KG 63 Arbeitsblatt 10 Lernziele Regleungstechnik, Zweipunktregler Reglertypen Zweipunktregler 64 Dreipunktregler Proportionalregler © Festo Didactic GmbH & Co. KG Aufgabe 1 Beschreiben Sie den Unterschied zwischen Steuerung und Regelung. Steuern: Beeinflussen im offenen Steuerkreis Regeln: Beeinflussen im geschlossenen Regelkreis Aufgabe 2 Zeichnen Sie in Diagramm, in dem Sie das zeitliche Verhalten eines Regelkreises beschreiben, der mit einem Zweipunktregler geregelt wird. Bezeichnen Sie auch die Hysterese. Wichtig: gerade Kurve mit immer dergleichen Steigung, da Zweipunktregler nur ein/aus kennt. Aufgabe 3 a.)Erstellen Sie auf Basis des Programms aus Aufgabe 8 einen Regelkreis für die Motordrehzahl, mit dem Drehzahl gesteuert und gemessen werden kann. Nutzen Sie zunächst einen Zweipunktregler. Nutzen Sie als Startwerte für die Parameter des Zweipunktreglers folgende Werte. Paramter amplification upper lower Startwert 100 500 0 b.)Versuchen Sie dann die Parameter zu verändern und ein optimales Regelverhalten einzustellen. Was würden Sie als ein gutes Regelverhalten beschreiben? Siehe Beispielprogram Ex 10-1.easy. Der Sollwert wird schnell erreicht und eingehalten. Der Regelkreis schwingt nicht. Welche Werte sind bei Ihnen optimal? Paramter amplification upper lower Optimaler Wert © Festo Didactic GmbH & Co. KG 65 Arbeitsblatt 11 Lernziele Regleungstechnik, PID-Regler Reglertypen Zweipunktregler 66 Dreipunktregler Proportionalregler © Festo Didactic GmbH & Co. KG Aufgabe 1 Erstellen Sie auf Basis des Programms aus Aufgabe 8 einen Regelkreis für die Motordrehzahl, mit dem Drehzahl gesteuert und gemessen werden kann. Nutzen Sie PID-Regler. Nutzen Sie als Startwerte für die Parameter des Zweipunktreglers folgende Werte. Paramter Startwert pcoefficient icoefficient dcoefficient 0,1 0 0 Starten Sie das Programm und verändern Sie die Regelparameter. Was stellen Sie fest? Welche Parameter bringen die besten Ergebnisse? Paramter pcoefficient icoefficient dcoefficient Startwert Siehe Beispielprogramm Ex11-1.easy. P-Anteil allein bringt keine stationäre Genauigkeit. Je kleiner der P-Anteil, desto größer die Abweichung. Kleiner I-Anteil sorgt für Genauigkeit., der Regler reagiert aber langsamer. D-Anteil sorgt für stärkeres Schwingen. Anmerkung: Der I-Anteil kann sich so schnell aufsummieren, dass der Regler in die Sättigung kommt und nicht mehr funktioniert. Dies kann durch den PID-Regler mit Anti-Wind-Up vermieden werden. Bei diesem Reglertyp wird der der Ausgangswert begrenzt. © Festo Didactic GmbH & Co. KG 67