MicroSPS
MicroSPS
MicroSPS
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>MicroSPS</strong><br />
Einfachstes Erstellen von Steuerungen durch<br />
grafische Funktionseingabe in EAGLE<br />
Hardware: SPS-Ctrl<br />
Keinerlei Programmierkenntnisse erforderlich!<br />
Handbuch<br />
www<br />
Copyright ©<br />
H.Buß, I.Busker 2006<br />
www.<strong>MicroSPS</strong>.com<br />
www.mikrocontroller.com<br />
Originaldokumentation<br />
© CadSoft Computer GmbH 2005<br />
www.cadsoft.de<br />
Wir bedanken uns für die freundliche Unterstützung bei der Firma CadSoft Computer GmbH,<br />
ohne deren Vorarbeit diese Umsetzung nicht möglich gewesen wäre.<br />
Dokument-Version V3.3 basiert auf Schaltungsinterpreter V0.86
Das <strong>MicroSPS</strong>-Projekt Inhalt<br />
Inhaltsverzeichnis<br />
Das <strong>MicroSPS</strong>-Konzept..................................................... 3<br />
Wo kann man die <strong>MicroSPS</strong> einsetzen?..................... 3<br />
Die SPS-CTRL als <strong>MicroSPS</strong>-Hardware........................... 4<br />
Photo einer voll bestückten SPS-Ctrl...........................5<br />
Die Komponenten der <strong>MicroSPS</strong>-Entwicklung.................. 6<br />
Entwicklungsschritte ......................................................... 6<br />
Rechtliches........................................................................ 6<br />
Installation der <strong>MicroSPS</strong>-Software................................... 7<br />
<strong>MicroSPS</strong>-Downloader.......................................................7<br />
<strong>MicroSPS</strong>-Firmware........................................................... 7<br />
Regeln für die Erstellung eines<br />
<strong>MicroSPS</strong>-Funktionsplans................................................. 8<br />
Fehlermeldungen bei der Funktionslisten-Erzeugung.......9<br />
Wichtige EAGLE-Befehle für die <strong>MicroSPS</strong>-Entwicklung..9<br />
Die <strong>MicroSPS</strong>-Bauteile.................................................... 10<br />
Hinzufügen von Funktionen / Elementen................... 10<br />
MICRO-SPS............................................................... 10<br />
DIGEIN....................................................................... 10<br />
DIGAUS......................................................................10<br />
ALGEIN#0-4............................................................... 10<br />
PWM.......................................................................... 10<br />
EINAUSSCHVZ_FG...................................................10<br />
EINAUSSCHVZ.......................................................... 11<br />
EINSCHALTVZ_SP.................................................... 11<br />
TREPPENL_RT..........................................................11<br />
STROMSTOSSREL................................................... 11<br />
MATH......................................................................... 11<br />
WERT.........................................................................12<br />
WERT_TEMPERATUR.............................................. 12<br />
WERT_UHRZEIT....................................................... 12<br />
WERT_VAR............................................................... 12<br />
UHRZEIT.................................................................... 12<br />
OSZILLATOR............................................................. 12<br />
COUNTER..................................................................12<br />
DECADE_CNT .......................................................... 13<br />
DECADE_CNT_INV .................................................. 13<br />
COMPARATOR..........................................................13<br />
COMP_HYST............................................................. 13<br />
REGLER_PID.............................................................13<br />
FREQU_TEILER........................................................ 13<br />
UND_2/UND_4/UND_8.............................................. 14<br />
ODER_2/ODER_4/ODER_8...................................... 14<br />
NAND_2/NAND_4/NAND_8.......................................14<br />
NOR_2/NOR_4/NOR_8............................................. 14<br />
XOR_2........................................................................14<br />
NICHT........................................................................ 14<br />
SELECT..................................................................... 14<br />
IR_Q........................................................................... 14<br />
ANALOGSCHALTER................................................. 14<br />
DB_ALG_AUS............................................................ 14<br />
DB_ALG_EIN............................................................. 14<br />
DB_DIG_AUS.............................................................14<br />
DB_DIG_EIN.............................................................. 14<br />
PWM.......................................................................... 15<br />
MULTIPLEXER...........................................................15<br />
BUSREDUCT............................................................. 15<br />
BUSEXPAND............................................................. 15<br />
MINMAX..................................................................... 15<br />
SPEICHER................................................................. 15<br />
RANDOM................................................................... 15<br />
ANALOG_CONVERT................................................. 15<br />
LIN_KENNLINE..........................................................16<br />
Digitales I/O-Modul 12/4.................................................. 16<br />
EXT_IO_12/4..............................................................16<br />
Die Funktion LCD-/V24AUSGABE.................................. 16<br />
Was wird ausgegeben?............................................. 16<br />
Wann wird etwas ausgegeben?.................................16<br />
Wie muss der Format-String aussehen?................... 16<br />
Erweiterung für das LCD-Display...............................17<br />
Asynchrone oder Synchrone Verarbeitung......................18<br />
FAQ..................................................................................18<br />
Wichtige Begriffe............................................................. 20<br />
Default........................................................................ 20<br />
Modulo........................................................................20<br />
Retriggerbar............................................................... 20<br />
Schleifendurchlauf, Zyklus......................................... 20<br />
String.......................................................................... 20<br />
Value.......................................................................... 20<br />
Fehlermeldungen und Warnungen.................................. 21<br />
Fehler in Schaltung.................................................... 21<br />
Zu hoher Speicherbedarf........................................... 21<br />
Fehler im User-Language-Programm........................ 21<br />
Fehler in Bibliothek.....................................................21<br />
Warnungen................................................................ 21<br />
Alle <strong>MicroSPS</strong>-Funktionen in der Übersicht.................... 22<br />
2
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Das <strong>MicroSPS</strong>-Konzept<br />
Das Softwarepaket EAGLE der Firma CadSoft ist grundsätzlich<br />
ein Programm zur Erstellung von Schaltplänen<br />
und zum Entwurf von Platinen. Bisher war es fast ausschließlich<br />
auf dem Elektroniksektor bekannt. Im Beipiel<br />
der <strong>MicroSPS</strong> verwenden wir EAGLE zur Eingabe des<br />
Funktionsplans.<br />
Wer heute eine elektrische Anlage steuern oder regeln<br />
will, hat die Wahl zwischen:<br />
– einfachen Funktionselementen (diverse Relaistypen,<br />
Zeitverzögerungen etc.),<br />
– Spezialelementen für bestimmte Aufgaben (etwa zur<br />
Heizungsregelung),<br />
– Speicherprogrammierbaren Steuerungen (SPS).<br />
Erreicht die Aufgabe eine gewisse Komplexität, kommen<br />
praktisch nur noch die beiden letztgenannten Kategorien<br />
in Frage. Sobald man eine gewisse Flexibilität benötigt,<br />
weil man keine Standardaufgabe vor sich hat, bleibt nur<br />
noch die SPS. Leider ist der Umgang mit den auf dem<br />
Markt angebotenen SPS-Produkten nicht immer einfach,<br />
und auch der relativ hohe Preis verbietet oft deren Einsatz.<br />
Das <strong>MicroSPS</strong>-Konzept vermeidet diese Nachteile:<br />
– die <strong>MicroSPS</strong>-Hardware wird günstig angeboten oder<br />
kann selbst gefertigt werden<br />
– die Programmierung der SPS-Funktion beschränkt<br />
sich auf das Zeichnen eines Schaltplans mit Funktionselementen,<br />
die dem Anlagenbauer oder Elektriker<br />
überwiegend bekannt sind;<br />
Wo kann man die <strong>MicroSPS</strong> einsetzen?<br />
Der Phantasie sind hier kaum Grenzen gesetzt. Ein einfacher<br />
Treppenhausautomat, kombiniert mit einer<br />
Abwesenheitsschaltung (zufällige Einschaltzeiten bestimmter<br />
Leuchten), lässt sich ebenso leicht realisieren<br />
wie die komplette Steuerung einer Biogasanlage. Sehen<br />
Sie sich die Hardware-Eigenschaften und die Liste der<br />
Funktionen an, und Sie werden sicher genügend eigene<br />
Anwendungsfälle finden. Um die obere Grenze für den<br />
möglichen Umfang des Schaltplans einschätzen zu können,<br />
haben wir eine Timerschaltung mit drei Ausgängen<br />
entworfen (siehe Anhang), bei der sich pro Ausgang die<br />
Startzeit und die Einschaltdauer digital einstellen lassen.<br />
Eine der leistungsfähigsten <strong>MicroSPS</strong>-Funktionen ist die<br />
Ausgabe von Daten über die serielle Schnittstelle und aus<br />
das Display. Sie ermöglicht es auf einfachste Weise, Werte,<br />
die an den analogen Schnittstellen anliegen, oder<br />
Werte, die intern erzeugt oder bearbeitet wurden, in formatierter<br />
Form anzuzeigen. Damit ist die <strong>MicroSPS</strong> neben<br />
Aufgaben der Steuer-und-Regeltechnik und der Haustechnik<br />
besonders gut für die Protokollierung technischer<br />
Vorgänge geeignet. Eine Überwachungsschaltung, die bei<br />
bestimmten Grenzwerten Alarm auslöst und den Verlauf<br />
bestimmter Größen mit Minimal- und Maximalwerten protokolliert,<br />
ist in wenigen Minuten „programmiert“.<br />
Nicht vergessen sollte man, dass die <strong>MicroSPS</strong>-Hardware<br />
eine Microcontroller-Schaltung mit reichlich Schnittstellen<br />
darstellt, die nicht notwendigerweise in einen Schaltschrank<br />
eingebaut werden muss.<br />
Viele Microcontroller-Anwendungen, bei denen am<br />
Ende ein kleines Gerät entsteht, sind sicher mit den<br />
Mitteln der <strong>MicroSPS</strong>-Programmierung leichter und<br />
schneller zu realisieren als auf herkömmliche Weise<br />
in Assemblersprache.<br />
Auch in der Ausbildung kann die <strong>MicroSPS</strong> gute Dienste<br />
leisten.<br />
Wer kann die <strong>MicroSPS</strong> einsetzen?<br />
Die erste Voraussetzung ist ein klein wenig Erfahrung im<br />
Umgang mit dem PC. Wir werden hier nicht die Grundlagen<br />
von Windows erklären. Sie sollten schon wissen,<br />
wie man sich durch ein Menü hangelt oder wie man Programm<br />
installiert. Aber sehr viel mehr Computerwissen<br />
setzen wir nicht voraus.<br />
Wer eine Ausbildung als Elektriker, Anlagenbauer, Kältetechniker<br />
oder in einem ähnlichen Beruf genossen hat,<br />
dürfte keine Probleme haben, die <strong>MicroSPS</strong> zu programmieren.<br />
Viele der vorhandenen Funktionen sind ihm<br />
bekannt, und die anderen sind nicht schwerer zu verstehen.<br />
Ebenso werden Elektroniker keine grundsätzlichen<br />
Probleme haben, damit zurecht zu kommen. Wenn überhaupt,<br />
dann dürften die Probleme sprachlicher Art sein.<br />
Begriffe wie Wischrelais sind eher in der Elektrik zu Hause.<br />
Ein Elekroniker würde vermutlich lieber von einem<br />
Monoflop sprechen. Deshalb sollte man sich die Beschreibung<br />
der Funktionen genau ansehen, bevor man loslegt.<br />
Dann ist auch klar, was jede Funktion genau leistet.<br />
Bevor Sie aber versuchen, mit dem <strong>MicroSPS</strong>-Projekt zu<br />
experimentieren, sollten Sie unbedingt mit der grundsätzlichen<br />
Bedienung von EAGLE vertraut sein, sonst hören<br />
Sie frustriert auf, bevor Sie überhaupt richtig angefangen<br />
haben, und das wäre doch schade. Am besten gehen Sie<br />
den Online-Kurs schrittweise durch. Eine halbe Stunde,<br />
die sich vielfach auszahlen wird!<br />
3
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Die SPS-CTRL als <strong>MicroSPS</strong>-<br />
Hardware<br />
Die Platine „SPS-Ctrl“ ist speziell für die Anwendung als<br />
<strong>MicroSPS</strong> entwickelt worden. Sie lässt sich mittels Erweiterungsmodulen<br />
mit zusätzlichen Modulen weiter<br />
ausbauen. Wir haben hier besonderen Wert auf viele Ein-<br />
und Ausgänge, Erweiterbarkeit und bessere Einbaumöglichkeit<br />
gelegt. Durch Features wie Echtzeitur und<br />
absetzbares Display und Tastatur ist sie ideal für diese<br />
Anwendung.<br />
Zahlreiche Funktionsblöcke der <strong>MicroSPS</strong> sind speziell<br />
auf diese Hardwareplattform zugeschnitten, sodass auch<br />
aufwendige Projekte mit Fernbedienungen, LCD-Ausgaben,<br />
Menüführung, Zeitsteuerungen, analoger<br />
Datenverarbeitung usw. zum Kinderspiel werden.<br />
Die kompakte Leiterkarte (ca.12*10cm) findet, wie im Bild<br />
zu sehen, hervorragend Platz in einem<br />
Phoenix-Hutschienen-Gehäuse. Die Ein- und Ausgänge,<br />
sowie die vier Tasten sind auch noch von außen zugänglich,<br />
wenn die restliche Elektronik vom Klarsichtdeckel des<br />
Gehäuses verdeckt sind. Sie lässt sich mit 12V, oder 24V<br />
DC versorgen (Achtung: Bestückungsvariante). Die Analogeingänge<br />
sind mit 0...10 V ebenso „SPS-konform“ wie<br />
die Digitaleingänge mit 24 V DC. Sechs Relais bilden die<br />
Schnittstelle zu Lampen, Garagentoren, Markisen und anderen<br />
Verbrauchern, die gesteuert werden sollen.<br />
Eine SPS-CTRL Leiterkarte ist bei: www.mikrocontroller.com<br />
oder www.<strong>MicroSPS</strong>.com erhältlich. Sie kann je nach<br />
Anwendung mit unterschiedlicher Peripherie ausgestattet<br />
werden. Dort findet man auch die Firmware (den Bootloader<br />
und Schaltungsinterpreter) in *.HEX-Form.<br />
Alle Teile sind bedrahtet und leicht und kostengünstig beschaffbar<br />
(z.B. Reichelt).<br />
Inbetriebnahme:<br />
Eine Anleitung zur Inbetriebnahme der SPS-Ctrl (einspielen<br />
des Schaltungsinterpreters, Bedienung des<br />
Downloaders usw. findet man in der Beschreibung „Quickstart_Vx_y.pdf“<br />
Technische Daten der SPS-CTRL:<br />
– 8 Digitaleingänge, geschützt durch Optokoppler<br />
– 4 Tasten<br />
– 6 Relais zum Schalten von Lasten<br />
– 2 Digitalausgänge mit Treiberbaustein (Open-Collector)<br />
zum Ansteuern von Relais, Leuchten, Motoren,..<br />
– 4 Analogeingänge (0..5 V) auf Stecker<br />
– Poti zur schnellen Eingabe von Werten oder zum Simulieren<br />
eines analogen Eingangs<br />
– PWM-Ausgang z.B. zum Generieren einer analogen<br />
Spannung<br />
– LC-Display mit 2*16 Zeichen<br />
– Display und Tastatur per Kabel auch extern im Parallelbetrieb<br />
möglich<br />
– kompakte Grösse (ca.12*10cm)<br />
– Einbau im Hutschienengehäuse mit Klarsichtdeckel<br />
möglich<br />
– LEDs zeigen Zustand der Digitalausgänge und Eingänge<br />
an<br />
– Betriebs-LED zeigt Betriebszustand an<br />
– Eingestellte Digitalwerte werden bei Spannungsausfall<br />
abgespeichert (siehe Funktion WERT_VAR) (in Vorbereitung)<br />
– Echtzeituhr mit Batteriepufferung; läuft auch b ei<br />
Spannungsausfall weiter<br />
– Versorgung 12V oder 24V Gleichspannung<br />
– Serielle Schnittstelle mit V24-Pegeln<br />
– Infrarotempfänger für Infrarot-Fernbedienungen (RC5-<br />
Protokoll, z.B. Phillips)<br />
– Flachbandstecker für Erweiterungsmodule (z.B. Web-<br />
Interface (in Vorbereitung))<br />
– die Leiterkarte ist in Industriequalität gefertigt und geprüft<br />
– Einbau in Phönix Hutschienengehäuse möglich<br />
4
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Photo einer voll bestückten SPS-Ctrl<br />
Bild: Ohne Gehäuse mit einem Erweiterungsmodul 12/4<br />
Bild: Mit Gehäuse und einem Erweiterungsmodul 12/4<br />
Digitales Erweiterungsmodul 12/4<br />
Die Hardware der SPS-Ctrl kann mit dem Modul12/4 um<br />
digitale I/Os erweitert werden.<br />
Technische Daten des 12/4-Moduls:<br />
– 12 Digitaleingänge, geschützt durch Optokoppler<br />
Die gemeinsame Masse ist potenzialfrei zur Hauptmasse<br />
– 4 Relais zum Schalten von Lasten<br />
– Anschluss an die SPS-Ctrl mittels 10-poligem Flachbandkabel<br />
– bis zu vier Module anschließbar (dazu entsprechend<br />
mehrere Stecker auf die Flachbandleitung crimpen)<br />
Bild: Digitales Erweiterungsmodul 12/4<br />
5
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Die Komponenten der <strong>MicroSPS</strong>-<br />
Entwicklung<br />
Folgende Komponenten brauchen Sie zur Entwicklung einer<br />
<strong>MicroSPS</strong>-Anwendung:<br />
– Einen PC mit serieller Schnittstelle oder USB-Seriell-<br />
Adapter.<br />
– Das Softwarepaket EAGLE ab Version 4.16. Sie können<br />
für kleinere bis mittlelgroße Schaltungen und<br />
nicht-kommerzielle Anwendungen die Freeware bzw.<br />
die Light-Version verwenden (Download von www.cadsoft.de).<br />
– Die Dateien des <strong>MicroSPS</strong>-Projekts (siehe www.Micro-<br />
SPS.com).<br />
– Eine <strong>MicroSPS</strong>-Hardware mit Schaltungsinterpreter<br />
z.B. die SPS-CTRL von www.mikrocontroller.com.<br />
Entwicklungsschritte<br />
Die Entwicklung einer <strong>MicroSPS</strong>-Anwendung läuft<br />
prinzipiell so ab:<br />
– Starten von EAGLE am PC<br />
– Öffnen des Projektes microsps und Entwerfen einer<br />
Schaltung, in der ausschließlich Elemente aus der Bibliothek<br />
SPS-Ctrl_Vx_yy.lbr verwendet werden.<br />
– Drücken der Funktionstaste F12, mit der das User-<br />
Language-Programm (ULP) zur Erzeugung der Micro-<br />
SPS-Daten gestartet wird.<br />
– Falls aufgrund von Fehlermeldungen keine Daten erzeugt<br />
wurden, überprüfen Sie die Schaltung.<br />
– Sobald die Daten (in Form einer Funktionsliste schaltungsname.mss)<br />
erzeugt wurden, kann es mit dem<br />
Programm <strong>MicroSPS</strong>-Downloader.exe in den Controller<br />
geladen werden<br />
Rechtliches<br />
EAGLE ist ein kommerzielles Programm, das es in verschiedenen<br />
Ausbaustufen gibt (siehe www.cadsoft.de).<br />
Eine Freeware-Version steht für Testzwecke und für nichtkommerzielle<br />
Anwendungen zur Verfügung. Das heißt,<br />
sobald Sie mit dem Einsatz von EAGLE (direkt oder indirekt)<br />
Geld verdienen, müssen Sie eine Lizenz erwerben.<br />
Für den Entwurf von <strong>MicroSPS</strong>-Schaltungen brauchen Sie<br />
das Schaltplanmodul von EAGLE. Die Freeware bzw. die<br />
Light-Version erlaubt nur eine Schaltplanseite. Wenn Sie<br />
mehr als eine Schaltplanseite benötigen, müssen Sie die<br />
Standard-Version von EAGLE erwerben.<br />
Für private Anwendungen oder schulische Zwecke kann<br />
der Schaltungsinterpreter kostenlos in unserer Hardware<br />
oder in einer eigenen Zielplattform verwendet werden.<br />
Für kommerzielle Zwecke (direkt oder indirekt) darf unser<br />
Schaltungsinterpreter (Software im Mikrocontroller) nur<br />
mit Absprache mit uns: info@<strong>MicroSPS</strong>.com eingesetzt<br />
werden.<br />
Wir übernehmen keinerlei Garantie für eine fehlerfreie<br />
Funktion. Insbesondere nicht für Schäden, die durch den<br />
Einsatz der <strong>MicroSPS</strong>, der Software oder Dokumentationen<br />
direkt oder indirekt entstehen.<br />
Die von CadSoft angebotenen Quellen unterliegen der<br />
GNU General Public License. Das Copyright liegt bei der<br />
Firma CadSoft.<br />
Schnelleinstieg: Was sollten Sie lesen?<br />
Um möglichst schnell einen Eindruck von der <strong>MicroSPS</strong>-<br />
Programmierung zu bekommen, sollte man:<br />
– die vorangegangenen Abschnitte gelesen haben<br />
– das Projekt gemäß der anschließenden Beschreibung<br />
installieren<br />
– Den Abschnitt Regeln für die Erstellung einer Micro-<br />
SPS-Schaltung zumindest überfliegen<br />
– Den <strong>MicroSPS</strong>-Schnellkurs durchexerzieren.<br />
Für unsere Hardware auf www.<strong>MicroSPS</strong>.com<br />
– Bei offenen Fragen in den Abschnitten FAQ, S. 18,<br />
und Wichtige Begriffe, S. 20,nachsehen.<br />
– Die Anleitung „Quickstart_Vx_y.pdf“ lesen<br />
Die restlichen Abschnitte, insbesondere die Beschreibung<br />
der Funktionen, müssen Sie erst dann studieren, wenn<br />
Sie an die Realisierung eigener Schaltungen gehen.<br />
Online-Grundkurs<br />
Einen Online-Grundkurs zu der Verwendung von EAGLE<br />
für die <strong>MicroSPS</strong> findet man unter: www.microsps.com<br />
Wer mit der Bedienung von EAGLE bereits vertraut ist,<br />
liest nur die Abschnitte, die mit dem roten Symbol gekennzeichnet<br />
sind.<br />
6
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Installation der <strong>MicroSPS</strong>-<br />
Software<br />
1. Installation von EAGLE<br />
Zunächst muss EAGLE installiert werden, falls es in der<br />
Version ab V4.16 noch nicht auf dem Rechner vorhanden<br />
ist.<br />
Es ist wichtig, dass EAGLE mindestens einmal gestartet<br />
wird, damit erforderliche Konfigurationsdateien erzeugt<br />
werden.<br />
2. Installation des <strong>MicroSPS</strong>-Paketes<br />
Die Dateien des <strong>MicroSPS</strong>-Projektes werden durch Starten<br />
von: “<strong>MicroSPS</strong>_Setup_Vx_yy.exe“ installiert.<br />
3. Starten von EAGLE<br />
Starten Sie EAGLE, wechseln Sie ins Control-Panel, falls<br />
es nicht ohnehin aktiviert ist.<br />
4. Laden eines <strong>MicroSPS</strong>-Beispiels<br />
Im Control-Panel von EAGLE findet man die vorgefertigten<br />
<strong>MicroSPS</strong>-Beispiele im Ordner:<br />
..projekte/microsps/SPS-Ctrl-Projekte<br />
z.B. die Datei: SPS_MinimalProgramm.sch<br />
Durch Doppelklick auf diese Datei wird sie in den Schaltplaneditor<br />
geladen.<br />
5. Initialisieren von EAGLE<br />
Der folgende Abschnitt 5 kann übersprungen werden,<br />
wenn im <strong>MicroSPS</strong>-Installer die Option „EAGLE-Tastaturbelegung<br />
anpassen“ aktiviert war:<br />
Klicken Sie das ULP-Symbol in der oberen EAGLE-Symbolleiste<br />
an. Klicken Sie sich im Verzeichnisbaum bis<br />
..projects/microsps/programs<br />
durch, und selektieren Sie dort das User-Language-Programm<br />
init-msps.ulp.<br />
Dieses ULP-Programm sorgt für die Belegung der Funktionstasten<br />
F11 und F12 mit zwei wichtigen Funktionen, die<br />
uns das Arbeiten im Folgenden wesentlich erleichtern.<br />
Außerdem wird eine interne Prüfung abgeschaltet, die für<br />
unseren Zweck nur lästige Fehlermeldungen produzieren<br />
würde. Bestätigen Sie die auf dem Bildschirm erscheinende<br />
Meldung mit einem Klick auf OK.<br />
Damit ist die Installation abgeschlossen, und wir können<br />
mit der Entwicklung von <strong>MicroSPS</strong>-Schaltungen loslegen.<br />
6. Übersetzen des ersten Programms<br />
Durch Drücken der F12-Taste im Schaltplaneditor öffnet<br />
sich der Übersetzer. Ein Klicken auf Start (oder Drücken<br />
von Enter) erzeugt die <strong>MicroSPS</strong>-Daten für die geladene<br />
Schaltung (name.mss).<br />
<strong>MicroSPS</strong>-Downloader<br />
Die von EAGLE erzeugten <strong>MicroSPS</strong>-Daten werden von<br />
einem externen Programm zur Hardware übertragen. Unter<br />
Windows verwenden Sie <strong>MicroSPS</strong>_Downloader.exe.<br />
Es ist im Verzeichnis:<br />
../projects/microsps/programs<br />
gespeichert. Eine Verknüpfung darauf liegt nach Installation<br />
auf dem Desktop.<br />
Bitte achten Sie darauf, dass kein anderes Programm dieselbe<br />
serielle Schnittstelle gleichzeitig benutzt.<br />
Die zu sendende Funktionsliste für eine Schaltung befindet<br />
sich in der Datei:<br />
schaltungsname.mss<br />
und zwar im Verzeichnis<br />
../projects/microsps/programs/data<br />
Hinweis:<br />
Die Beispielprogramme für die SPS-Ctrl-Hardware beginnen<br />
mit „SPS_.....“.<br />
Wenn Sie an einer Schaltung xy.sch arbeiten, dann starten<br />
Sie <strong>MicroSPS</strong>_Downloader.exe und wählen über den<br />
Button „LADEN & PROG“ die Datei xy.mss aus. Jedesmal,<br />
wenn Sie die Schaltung verändert und mit F12 neue<br />
Daten erzeugt haben, muss die Funktionsliste erneut in<br />
den Controller geladen werden. Die Funktionen „Reload &<br />
PROG“ oder der Funktion „Automatisch übertragen“ übernehmen<br />
das.<br />
In der unteren Zeile des Download-Programms kann die<br />
COM-Schnittstelle ausgewählt werden.<br />
Der Downloader erfüllt noch eine andere Funktion: Es<br />
stellt die über die serielle Schnittstelle eingehenden Daten<br />
im Fenster dar. Die Baudrate ist fest 57600Bd eingestellt.<br />
Debugging und Ferndisplay<br />
Im Downloader-Programm ist eine Debug-Möglichkeit enthalten,<br />
mit der man sich unter anderem ein Ferndisplay<br />
am PC anzeigen lassen kann und Werte verändern kann.<br />
Damit lassen sich wichtige Funktionen der <strong>MicroSPS</strong> vollständig<br />
über den PC fernbedienen.<br />
Näheres zum Debugger in der Dokumentation: „Debugger_Vx_y.pdf“<br />
<strong>MicroSPS</strong>-Firmware<br />
Die Firmware, also das im Mikrocontroller der Hardware<br />
gespeicherte Programm, besteht aus dem Bootloader und<br />
dem Schaltungsinterpreter im HEX-Format.<br />
Bootloader<br />
7
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Wer die Hardware selbst fertigt und keinen programmierten<br />
<strong>MicroSPS</strong>-Controller hat, muss zunächst den<br />
Bootloader mit einem geeigneten Programmiergerät zur<br />
Hardware übertragen.<br />
Schaltungsinterpreter<br />
Der Schaltungsinterpreter verarbeitet den SPS-Code. Ein<br />
Update des Schaltungsinterpreters wird per serieller<br />
Schnittstelle über den Downloader eingespielt.<br />
Näheres dazu in der Beschreibung „Quickstart_Vx_y.pdf“<br />
Regeln für die Erstellung eines<br />
<strong>MicroSPS</strong>-Funktionsplans<br />
Normalerweise werden mit EAGLE Schaltungen entwickelt,<br />
die dann in eine Platine umgesetzt werden. Den<br />
Schaltzeichen sind dann Gehäuse zugeordnet, und jeder<br />
Anschluss an einem Schaltzeichen entspricht einem Anschluss<br />
am Gehäuse. EAGLE prüft, ob diese Zuordnung<br />
vorhanden ist, und bringt eine Fehlermeldung, wenn das<br />
nicht der Fall ist. Diese Prüfung ist bei der Entwicklung<br />
von <strong>MicroSPS</strong>-Schaltungen nicht erwünscht. Deshalb<br />
sorgt ein Druck auf F11 nach dem ersten Laden eines<br />
Projekts dafür, dass sie abgeschaltet wird. Sollte die Meldung<br />
„Bauteil xy hat kein Package“ doch irgendwann<br />
auftauchen, wenn Sie versuchen, eine Funktion zu platzieren,<br />
dann gehen Sie ins Menü<br />
Optionen/Einstellungen/Verschiedenes und deaktivieren<br />
den Punkt Connects prüfen. Oder führen Sie das ULP<br />
init-msps.ulp aus.<br />
Folgende Regeln gelten für den Entwurf von Micro-<br />
SPS-Schaltungen:<br />
– Wenn im Folgenden von Bauteil die Rede ist, dann ist<br />
eine der <strong>MicroSPS</strong>-Funktionen gemeint, etwa die<br />
Funktion Ein-/Ausschalt-Verzögerung.<br />
– Die Begriffe Signal und Netz sind identisch.<br />
– Wenn die Schaltung fertig ist, startet die Taste F12<br />
ein User-Language-Programm, das die so genannte<br />
Funktionsliste name.mss erzeugt. Die Liste wird nur<br />
erzeugt, wenn die Schaltung keine Fehler enthält. Aufgrund<br />
der Fehlermeldungen sollten Sie in der Lage<br />
sein, die Schaltung zu korrigieren. Siehe entsprechenden<br />
Abschnitt.<br />
– On-Board-Funktionen sind Funktionen bzw. Bauteile,<br />
die sich auf der <strong>MicroSPS</strong>-Platine befinden: Ein-/Ausgänge,<br />
Potentiometer, DIL-Schalter-Eingänge.<br />
– Beginnen Sie eine neue Schaltung, indem Sie die Datei<br />
_SPS_Vorlage.sch laden und unter dem von Ihnen<br />
gewünschten Namen abspeichern. Drücken Sie gleich<br />
F11, um die oben genannte EAGLE-Fehlermeldung zu<br />
vermeiden. Die Schaltung enthält einen Rahmen und<br />
alle On-Board-Funktionen.<br />
– On-Board-Funktionen können mit DELETE gelöscht<br />
und mit INVOKE in die Schaltung geholt werden,<br />
nachdem das Bauteil MICRO-SPS platziert wurde. Die<br />
Taste F11 ist mit dem INVOKE-Befehl vorbelegt.<br />
– Das Bauteil MICRO-SPS darf nur einmal in die Schaltung<br />
geholt werden.<br />
– Unbenutzte Bauteile, das heißt Bauteile, die an kein<br />
Netz angeschlossen sind, haben keinen Einfluss auf<br />
die Funktionsliste. Sie können sie in der Schaltung<br />
lassen oder löschen.<br />
– Normale Bauteile, also solche, die sich nicht auf der<br />
<strong>MicroSPS</strong>-Platine befinden, werden mit dem Bibliotheksbrowser<br />
des ControlPanels in die Schaltung<br />
geholt. Jede Funktion kann beliebig oft verwendet werden<br />
(begrenzt vom Speicherplatz).<br />
– Die Bauteile werden untereinander mit Netzen verbunden.<br />
Verwenden Sie dazu nicht den WIRE-Befehl,<br />
sondern den NET-Befehl.<br />
– Es gibt zwei Arten von Netzen: 1-Bit-Netze und 16-Bit-<br />
Netze. Erstere entsprechen einer digitalen Leitung.<br />
Das Signal kann den Wert 0 oder 1 haben. 16-Bit-Netze<br />
können einen Wert zwischen 0 und 65535 haben.<br />
Das entspricht einer 16-Bit-Zahl. Man kann mit 16-Bit-<br />
Netzen arbeiten wie mit Analogsignalen. Ein Analogeingang<br />
liefert einen Wert zwischen 0 und 1023,<br />
man kann ihn mit anderen Werten vergleichen oder in<br />
anderer Weise weiterverarbeiten (MATH-Funktion).<br />
– Alle Netze haben nach dem Einschalten der <strong>MicroSPS</strong><br />
den Wert 0.<br />
– Die Bauteile haben in der Regel links Eingänge und<br />
rechts Ausgänge. Jeder Ein- oder Ausgang hat eine<br />
bestimmte Bitbreite (1 oder 16). Bitbreite 16 wird mit<br />
einem kleinen Schrägstrich am Anschluss dargestellt.<br />
– Bauteileanschlüsse, die mit keinem Netz verbunden<br />
sind, verhalten sich so, als wären Sie an ein Netz mit<br />
dem Wert 0 angeschlossen (mit wenigen Ausnahmen,<br />
siehe Funktionsbeschreibung).<br />
– Jedes Netz darf nur an einem einzigen Ausgang hängen.<br />
Der Ausgang liefert einen bestimmten Wert an<br />
das Netz. Die Bitbreite des Ausgangs legt fest, ob das<br />
Signal zum 1-Bit-Signal oder zum 16-Bit-Signal wird.<br />
– Es dürfen beliebig viele Eingänge an einem Netz hängen.<br />
Die Eingänge holen sich den gegenwärtigen Wert<br />
des Signals.<br />
– Ein 16-Bit-Eingang darf an einem 1-Bit- oder 16-Bit-Signal<br />
hängen und umgekehrt.<br />
– Netze müssen in der Schaltung nicht unbedingt mit einer<br />
sichtbaren Linie verbunden sein. Wenn sie<br />
denselben Namen haben (NAME-Befehl), dann sind<br />
sie identisch. Überprüfen Sie die Netze mit dem<br />
SHOW-Befehl. Zusammengehörende Netzlinien<br />
leuchten, wenn ein sichtbarer Teil des Netzes angeklickt<br />
wird.<br />
– Die Schaltung kann auf mehrere Seiten (Sheets) verteilt<br />
werden (nicht in der Demo-Version von EAGLE).<br />
– Sie können als optische Hilfe Busse verwenden (BUS-<br />
Befehl). Busse haben keine Auswirkung auf die Erstellung<br />
der Funktionsliste. Siehe Timerschaltung im<br />
Anhang.<br />
– Wenn Sie ein Netz mit MOVE über einen Bauteilanschluss<br />
bewegen, wird der Anschluss nicht mit dem<br />
Netz verbunden. Achtung, das kann dazu führen, dass<br />
ein Netz nur scheinbar angeschlossen ist. Bitte mit<br />
8
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
SHOW überprüfen. Umgekehrt „fängt“ ein Bauteil Netze<br />
ein, wenn es mit MOVE bewegt wird.<br />
– Bestimmte Bauteile erfordern die Eingabe eines Wertes,<br />
bevor sie ordnungsgemäß funktionieren können,<br />
z.B. die MATH-Funktion. Verwenden Sie dazu den VA-<br />
LUE-Befehl.<br />
– Bei manche Bauteilen sind bestimmte Eingänge mit<br />
Defaultwerten vorbesetzt, falls sie nicht angeschlossen<br />
sind (z.B. OSZILLATOR), oder bei<br />
Bauteilen, die einen Value benötigen, ist der Value mit<br />
einem Wert vorbelegt (z.B. 10ms bei diversen Zeitgliedern).<br />
– Zeitglieder (AUSSCHVZ etc.) erwarten die Angabe einer<br />
oder mehrerer Zeitwerte an den Anschlüssen AV,<br />
EV etc. Ein solcher Wert wird als Hundertstelsekunden<br />
interpretiert, wenn der VALUE des Bauteils<br />
10ms ist, als Sekunden, wenn der VALUE sek ist, und<br />
so weiter. Der höchstmögliche Wert ist 65535.<br />
– Die interne Zeitauflösung beträgt 10 ms, also eine<br />
Hundertstelsekunde. Insgesamt lassen sich 2 hoch 32<br />
Hundertstelsekunden darstellen, das sind rund 497<br />
Tage. Bei allen Zeitgliedern ist das theoretisch die<br />
maximale Zeitdauer. Das bedeutet, wenn die Micro-<br />
SPS mehr als 497 Tage ununterbrochen läuft, dann<br />
gibt es einen Zählerüberlauf, der zur Folge hat, dass<br />
die internen Zeitvergleiche nicht mehr stimmen. Die<br />
ordnungsgemäße Funktion der Schaltung ist dann<br />
nicht mehr gewährleistet. Da Signale auf 16 Bit beschränkt<br />
sind, können Ein- und Ausschaltzeiten bei<br />
Zeitgliedern bei 10 ms Auflösung maximal 65535 mal<br />
1/100 Sekunde , also etwa 655 Sekunden betragen.<br />
Bei geringeren Zeitauflösungen (sek, min, std) gelten<br />
entsprechende Maximalzeiten (65535 * min, und so<br />
weiter). Die Obergrenze liegt aber prinzipiell bei 497<br />
Tagen.<br />
– Zeitfehler: Alle <strong>MicroSPS</strong>-Funktionen werden von der<br />
<strong>MicroSPS</strong>-Hardware in einer Endlosschleife abgearbeitet.<br />
Sofern diese Schleife in weniger als 10 ms<br />
durchlaufen wird, arbeiten Zeitglieder auf 10 ms genau.<br />
Dauert der Schleifendurchlauf länger, treten<br />
eventuell größere Ungenauigkeiten auf. Am meisten<br />
Zeit nehmen umfangreiche LCD/V24-Ausgaben in Anspruch.<br />
Dieser systematisch bedingte Zeitfehler<br />
summiert sich aber nicht bei längeren Schaltzeiten.<br />
Die Durchlaufzeit (Zykluszeit) kann man im Debugger<br />
ablesen.<br />
Wird keine Echtzeituhr verwendet, so ist die Abweichung<br />
der Uhrenfunktion ist geringfügig größer als der<br />
Fehler des eingesetzten Quarzes, der mit 30 ppm (2,6<br />
Sekunden pro Tag) spezifiziert ist.<br />
– Bitte berücksichtigen Sie, dass sich ein Signal nicht<br />
beliebig schnell von einem Eingang in Richtung Ausgang<br />
fortpflanzt. Siehe dazu auch: Synchrone<br />
Abarbeitung<br />
– Gleiche Funktionen werden in Alphabetischer Reihenfolge<br />
ihres Namens in der Schaltung (z B. V24-1 vor<br />
V24-2) bearbeitet. Damit lässt sich festlegen, in welcher<br />
Reihenfolge Ausgaben erfolgen sollen (weitere<br />
Möglichkeit, siehe Parameter $P in der Beschreibung<br />
der V24AUSGABE).<br />
Fehlermeldungen bei der<br />
Funktionslisten-Erzeugung<br />
Die Funktionsliste (Taste F12) wird nur dann erzeugt,<br />
wenn keine Fehler aufgetreten sind (siehe Anhang). Fehler<br />
werden im Ausgabefenster rot markiert. Benutzen Sie<br />
den SHOW-Befehl, wenn Sie Netze oder Bauteile mit bestimmten<br />
Namen lokalisieren wollen. Überprüfen Sie, ob<br />
optisch verbundene Netze tatsächlich angeschlossen<br />
sind, mit dem SHOW-Befehl.<br />
Neben Fehlern können auch Warnungen auftreten, zum<br />
Beispiel wenn ein Anschluss nicht an ein Netz angeschlossen<br />
ist. Warnungen treten dann auf, wenn nur der<br />
Benutzer entscheiden kann, ob es sich um einen Fehler<br />
handelt. Warnungen führen nicht dazu, dass keine Liste<br />
erzeugt wird.<br />
Der Download in die Zielhardware kann erst gestartet werden,<br />
wenn eine Liste erzeugt wurde.<br />
Wichtige EAGLE-Befehle für die<br />
<strong>MicroSPS</strong>-Entwicklung<br />
Zur Erstellung von <strong>MicroSPS</strong>-Schaltungen brauchen Sie<br />
nur wenige EAGLE-Befehle. In erster Linie: NET, MOVE,<br />
DELETE, SHOW, NAME, LABEL, VALUE.<br />
Mit COPY können Sie schon vorhandene Bauteile bequem<br />
kopieren.<br />
Mit GROUP können Sie Gruppen von Elementen selektieren<br />
und anschließend mit der rechten Maustaste einen<br />
Befehl auf die ganze Gruppe ausführen (zum Bespiel löschen<br />
oder verschieben).<br />
Bitte vergessen Sie nicht, die in Arbeit befindliche Schaltung<br />
auch zwischendurch immer wieder abzuspeichern.<br />
Wenn der Rechner ausfällt, sollen Sie ja möglichst wenig<br />
an getaner Arbeit verlieren.<br />
Wenn Sie sich schnell über einen Befehl informieren wollen,<br />
tippen Sie in die Kommandozeile help befehl ein<br />
(abgeschlossen mit der Eingabe-Taste).<br />
Also etwa: help group.<br />
Groß- und Kleinschreibung wird nicht unterschieden.<br />
9
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Die <strong>MicroSPS</strong>-Bauteile<br />
Vorweg eine Festlegung: Wenn z. B. beim Bauteilwert<br />
(VALUE) mehrere unterschiedliche Möglichkeiten zugelassen<br />
sind, werden die verschiedenen Alternativen so<br />
dargestellt:<br />
std | min | sek<br />
Das bedeutet, dass der VALUE entweder std oder min<br />
oder sek sein kann, alles andere ist nicht erlaubt.<br />
Begriffe, die im Folgenden verwendet werden, sind zum<br />
Teil im Anhang erklärt.<br />
Im Anhang finden Sie auch alle Funktionen in grafischer<br />
Form dargestellt, die dort angegebenen Namen entsprechen<br />
den Namen, wie sie beim Platzieren erscheinen.<br />
Das Bauteil MICRO-SPS enthält alle On-Board-Funktionen<br />
der SPS-CTRL und den Zeichenrahmen (RAHMEN).<br />
Es darf nur einmal in der Schaltung platziert werden, auch<br />
wenn Sie mehrere Zeichnungsseiten (Sheets) verwenden.<br />
Benötigen Sie einen zusätzlichen Zeichenrahmen (z. B.<br />
auf der zweiten Schaltplanseite), dann können Sie das<br />
Bauteil RAHMEN verwenden.<br />
Hinzufügen von Funktionen / Elementen<br />
On-Board-Elemente werden mit dem INVOKE-Befehl in<br />
die Schaltung geholt. Die Funktionstaste F11 ist mit dieser<br />
Funktion belegt, wenn Sie die Installation wie<br />
beschrieben durchgeführt haben.<br />
Alle anderen Bauteile werden mit dem Bibliotheksbrowser<br />
im ControlPanel in die Schaltung geholt:<br />
Zu vielen Funktionen gibt es fertige Beispielschaltungen,<br />
die die Wirkungsweise verdeutlichen. Diese werden mit<br />
dem <strong>MicroSPS</strong>-Installer-Paket auf ihrem System installiert.<br />
MICRO-SPS<br />
Repräsentiert die <strong>MicroSPS</strong>-Hardware mit allen On-<br />
Board-Funktionen. On-Board-Funktionen sind mit INVO-<br />
KE in die Schaltung zu holen.<br />
Die Taste F11 ist mit dem Befehl invoke msps1 belegt.<br />
Damit öffnet sich der INVOKE-Dialog für das Bauteil mit<br />
dem Namen msps1. Dieser Name wird automatisch der<br />
ersten in der Schaltung platzierten MICRO-SPS-Funktion<br />
zugewiesen. Sie sollten also diesen Namen nicht ändern,<br />
deshalb ist er auch in der Schaltung nicht sichtbar. Andernfalls<br />
würde weder der Aufruf des INVOKE-Dialogs mit<br />
F11 funktionieren, noch die Prüfung, ob die MICRO-SPS-<br />
Funktion mehrfach platziert wurde. Die Namen aller ande-<br />
ren Bauteile dürfen Sie nach Belieben in der Schaltung<br />
ändern. Das „Bauteil“ _MICROSPS ist in der Bibliothek so<br />
definiert, dass alle On-Board-Elemente mit in die Schaltung<br />
geholt werden. Sie können aber mit DELETE alle<br />
nicht verwendeten Eingänge, Ausgänge etc. löschen.<br />
DIGEIN<br />
On-Board-Funktion, wird mit F11 in die Schaltung geholt.<br />
Digitaler Eingang, liefert 0, wenn der Eingang unbeschaltet<br />
ist oder auf 0 V liegt, und 1, wenn der Eingang<br />
auf über 4,5 V liegt. Die von außen zugänglichen Eingänge<br />
sind mit DIGEIN#0 bis DIGEIN#7 bezeichnet. Die<br />
Ziffer nach dem # bezeichnet die Anschlussnummer entsprechend<br />
den <strong>MicroSPS</strong>-Unterlagen.<br />
Die Eingänge DIGEIN#8 bis DIGEIN#11 sind die<br />
Tasten der SPS-Ctrl.<br />
DIGAUS<br />
On-Board-Funktion, wird mit F11 in die Schaltung geholt.<br />
Digitaler Ausgang. Liegt das Signal auf 0, liefert der zugehörige<br />
Ausgang 0 V. (Relais aus) Es stehen die<br />
Ausgänge DIGAUS#0 bis DIGAUS#6 zur Verfügung. Die<br />
Ziffer nach dem # bezeichnet die Anschlussnummer entsprechend<br />
den <strong>MicroSPS</strong>-Unterlagen.<br />
ALGEIN#0-4<br />
On-Board-Funktion, wird mit F11 in die Schaltung geholt.<br />
Analogeingang für Spannungen zwischen 0 und 5 V. Der<br />
Bereich wird in Zahlenwerte von 0 bis 1023 umgesetzt.<br />
Das Poti ist parallel an ANGEIN#4 angeschlossen.<br />
PWM<br />
Ausgabe einer PWM (Puls-Weiten-Modulation).<br />
%: Eingang Pulsbreite (0-100) (begrenzt auf 100)<br />
SEL: Selektionseingang<br />
Liegt an dem SEL Eingang ein High-Signal an, wird die<br />
PWM auf 0% gesetzt. .<br />
Mit Hilfe einer PWM kann einfach eine analoge Spannung<br />
erzeugt werden. Dazu wird das digitale PWM-Signal auf<br />
einen RC-Tiefpass gegeben.<br />
Beispiele siehe www.<strong>MicroSPS</strong>.com<br />
EINAUSSCHVZ_FG<br />
Flankengetriggerte<br />
Einausschaltverzögerung.<br />
Tr: Positive Flanke triggert Vorgang<br />
EV: Wert für Einschaltverzögerung (Default: 0)<br />
AV: Wert für Ausschaltverzögerung(Default: 0)<br />
R: Reseteingang<br />
Q: Ausgang<br />
Value: std | min | sek | 10ms (Default: 10ms)<br />
Funktion: Der Ausgang geht nach der Zeit EV auf 1 und<br />
bleibt für die Zeit AV auf 1. Ist AV 0, dann bleibt der Ausgang<br />
auf 0. Nicht retriggerbar.<br />
R = 1: Ausgang bleibt 0.<br />
10
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Geht R auf 1, während der Ausgang auf 1 ist, dann wird<br />
der Ausgang sofort auf 0 gesetzt. Eine positive Flanke an<br />
R nach der Triggerflanke an Tr verhindert, dass der Ausgang<br />
nach Ablauf von EV auf 1 geht.<br />
Innerhalb der ersten 300 ms nach dem Start der internen<br />
Zeitzählung wird ein Pegelwechsel am Triggereingang<br />
nicht ausgewertet.<br />
Typ. Anwendung: Entprellen von Schaltern.<br />
EINAUSSCHVZ<br />
Einausschaltverzögerung.<br />
Tr: Triggereingang<br />
EV: Wert für Einschaltverzögerung<br />
(Default: 0)<br />
AV: Wert für Ausschaltverzögerung(Default: 0)<br />
Q: Ausgang<br />
Value: std | min | sek | 10ms (Default: 10ms)<br />
Funktion: Wenn Tr für die Zeit EV auf 1 ist, geht Q auf 1.<br />
Q geht erst dann wieder auf 0, wenn Tr für die Zeit AV auf<br />
0 war.<br />
EINSCHALTVZ_SP<br />
Speichernde Einschaltverzögerung.<br />
Wenn der Eingang EV offen ist, wird das<br />
Bauteil zum RS-Flipflop bzw. zum Selbsthalterelais.<br />
Tr: Positive Flanke triggert Vorgang<br />
EV: Wert für Einschaltverzögerung (Default: 0)<br />
R: Setzt den Ausgang auf 0<br />
Q: Ausgang<br />
Value: std | min | sek | 10ms (Default: 10ms)<br />
Funktion: Der Ausgang geht nach der Zeit EV auf 1. Nicht<br />
retriggerbar.<br />
Innerhalb der ersten 300 ms nach dem Start der internen<br />
Zeitzählung wird ein Pegelwechsel am Triggereingang<br />
nicht ausgewertet.<br />
TREPPENL_RT<br />
Treppenlichtschalter, retriggerbar.<br />
Tr: Triggereingang<br />
AV: Wert für Ausschaltverzögerung (Default: 0)<br />
Q: Ausgang<br />
Value: std | min | sek | 10ms (Default: 10ms)<br />
Funktion: Bei der positiven Flanke von Tr geht Q auf 1. Q<br />
geht auf 0, wenn die Zeit AV seit der positiven Flanke von<br />
TR verstrichen ist. Ein erneuter Tr-Impuls, bevor AV abgelaufen<br />
ist, startet den Timer für AV neu.<br />
Innerhalb der ersten 300 ms nach dem Start der internen<br />
Zeitzählung wird ein Pegelwechsel am Triggereingang<br />
nicht ausgewertet.<br />
STROMSTOSSREL<br />
Stromstoßrelais. (RS-Flip-Flop)<br />
Tr: Triggereingang<br />
S: Set-Eingang<br />
R: Reset-Eingang<br />
Q: Ausgang<br />
Value: std | min | sek | 10ms (Default: 10ms)<br />
Funktion: Wenn R und S auf 0 sind, gilt: Die positive Flanke<br />
von Tr setzt Q auf 1, wenn Q bisher auf 0 war, und<br />
umgekehrt. S = 1 setzt Q auf 1. R = 1 setzt Q auf 0 (R hat<br />
Vorrang vor S).<br />
Innerhalb der ersten 300 ms nach dem Start der internen<br />
Zeitzählung wird ein Pegelwechsel am Triggereingang<br />
nicht ausgewertet.<br />
Typ. Anwendung: Tasten als Umschalter<br />
MATH<br />
Mathematische Verknüpfung von A und B.<br />
A: Eingang für Operator<br />
B: Eingang für Operanden<br />
Q: Ausgang für Ergebnis<br />
Value: AB | A*B | A/B | A+B | A-B | A%B | dAB<br />
Die Funktion führt die im VALUE angegebene mathematische<br />
Operation mit den an A und B anliegenden Werten<br />
aus und gibt am Ausgang das Ergebnis aus.<br />
A+B: A und B werden addiert. Es gibt keinen Überlauf. Ist<br />
das Ergebnis größer als 65535, dann wird Q auf 65535<br />
gesetzt.<br />
A-B: Wenn A größer oder gleich B ist, wird Q = A – B. Ist<br />
B größer als A, wird Q auf 0 gesetzt.<br />
A*B: A und B werden multipliziert. Es gibt keinen Überlauf.<br />
Ist das Ergebnis größer als 65535, dann wird Q auf 65535<br />
gesetzt.<br />
A/B: A wird durch B geteilt. Ist B = 0, dann wird der Ausgang<br />
65535.<br />
A B: A wird als Binärwert interpretiert und um<br />
B Stellen nach links bzw. rechts rotiert. Bei einer Linksverschiebung<br />
wandert also das höchstwertige Bit nach Bit0<br />
und bei Rechtsverschiebung verhält es sich umgekehrt.<br />
Für B sind nur Werte von 1 bis 15 sinnvoll. Ist B größer<br />
als 15, wird intern der Wert B modulo 16 verwendet. Verbindet<br />
man den Ausgang mit dem Eingang von<br />
BUSEXPAND, dann kann man an dessen Ausgängen die<br />
entsprechenden Einzelsignale auswerten, z. B. für die Ansteuerung<br />
von Schrittmotoren (siehe<br />
Beispielschaltungen).<br />
A%B: Der Ausgang wird Q = A modulo B. In der Praxis<br />
kann man damit den Eingangswert auf einen bestimmten<br />
Bereich begrenzen. Wenn Sie zum Beispiel der UHR-<br />
ZEIT-Funktion eine MATH-Funktion mit VALUE A%B<br />
nachschalten, deren A-Eingang mit dem Ausgang von<br />
UHRZEIT verbunden ist und deren B-Eingang mit dem<br />
festen Wert 1440 belegt ist, dann liefert der Ausgang von<br />
MATH nur noch Werte von 0 bis 1439. Damit ist der Zeitwert<br />
auf einen Tag begrenzt, weil nach der 1439. Minute<br />
(23:59) die 0. Minute folgt. Die Funktion UHRZEIT ist be-<br />
11
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
reits intern so angelegt, dass Sie mit dem Value TAG genau<br />
diesen Effekt erzielen.<br />
dAB: Q liefert den Absolutwert von A – B. Diese Funktion<br />
kann man z. B. in Schaltungen einsetzen, bei denen die<br />
Abweichung von einem bestimmten Wert ausgewertet<br />
werden soll.<br />
WERT<br />
Liefert einen unveränderlichen Wert von 0 bis 65535.<br />
WERT_TEMPERATUR<br />
Liefert einen unveränderlichen Wert von -30.0°C bis<br />
1000.0°C<br />
WERT_UHRZEIT<br />
Liefert einen unveränderlichen Wert von<br />
00:00 bis SA:23:59<br />
WERT_VAR<br />
Liefert einen veränderlichen Wert von 0 bis<br />
65535, der auch nach einem Spannungsausfall<br />
gespeichert bleibt (in Vorbereitung).<br />
Nach dem Neuprogrammieren der Micro-<br />
SPS wird der Ausgang auf den Defaultwert gesetzt.<br />
UP: Eingang für Wert erhöhen<br />
DWN: Eingang für Wert senken<br />
SEL: Selektionseingang<br />
Q: Ausgang<br />
Value: max | max_min | max_min_default<br />
Wenn SEL auf 1 ist, bleibt Q unverändert.<br />
Wenn SEL auf 0 ist, lässt sich der Ausgangswert mit UP =<br />
1 erhöhen und mit DWN = 1 senken. Je länger UP bzw.<br />
DWN auf 1 liegt, um so schneller verändert sich der Ausgangswert.<br />
In der ersten halben Sekunde ändert sich der<br />
Wert um 1, danach bis zur fünften Sekunde um 10, danach<br />
um 100.<br />
Mit dem Value gibt man den Maximalwert, den Minimalwert<br />
und den Defaultwert des Ausgangs an. Dabei stehen<br />
max, min und default für Zahlen von 0 bis 65535.<br />
Alternativ können die Werte auch als Temperatur (z.B.<br />
-15.2°C) oder als Uhrzeit (z.B. 12:15 oder Mo:14:15) eingegeben<br />
werden.<br />
Konkret bedeutet der Value 1000_500_500, dass der<br />
Ausgang Werte zwischen 500 und 1000 annehmen darf<br />
und dass der voreingestellte Wert nach dem Neuprogramieren<br />
500 ist. Entfällt die Angabe von default, dann<br />
wird als Vorgabewert das Mittel zwischen min und max<br />
verwendet. Der Value 1000_500 hätte also einen Vorgabewert<br />
von 750 zur Folge. Entfällt auch die Angabe von<br />
min, dann wird als Minimalwert 0 verwendet. Um einen<br />
Maximalwert von 500, einen Minimalwert von 0 und einen<br />
Vorgabewert von 250 zu erreichen, kann man für den Value<br />
einfach 500 einsetzen. Bleibt der Value in der<br />
Schaltung leer, entspricht das der Angabe 1000, was<br />
einen Minimalwert von 0 und einen Vorgabewert von 500<br />
zur Folge hat. Dieser Wert wurde deshalb gewählt, weil<br />
die Analogausgänge Werte bis 1000 liefern und Vergleiche<br />
mit Benutzerwerten sinnvollerweise innerhalb dieses<br />
Bereichs stattfinden.<br />
UHRZEIT<br />
Liefert die Uhrzeit als Anzahl von Minuten<br />
ab Sonntag 0 Uhr. Die Funktion darf nur<br />
einmal in der Schaltung verwendet werden.<br />
UP: Uhrzeit vor<br />
DWN: Uhrzeit zurück<br />
SEL: Selektionseingang<br />
Q: Zeitausgang (Minuten ab Sonntag 0 Uhr)<br />
Value: TAG | WOCHE<br />
Das Stellen der Uhr mit UP/DWN ist identisch mit dem<br />
Verändern des Werts mit der Funktion WERT_VAR.<br />
Ist der VALUE auf TAG gesetzt oder leer, dann ist der<br />
höchste Ausgangswert 1439 (modulo 1440) in der nächsten<br />
Minute springt der Ausgangswert auf 0. Das entspricht<br />
einer Uhrzeit von 23:59, nach der es wieder mit 0 beginnt.<br />
In diesem Fall hat man eine Tagesuhr vor sich. Mit einem<br />
Value WOCHE ist der höchste Wert 10079 (modulo<br />
10080), das entspricht einer Zeitangabe von SA:23:59.<br />
Man hat also eine Wochenuhr vor sich.<br />
Damit man das Stellen der Uhr auf der Anzeige beobachten<br />
kann, hat die V24AUSGABE-Funktion einen<br />
speziellen Platzhalter ($Z), der eine Zahl von 0 bis 10079<br />
als Uhrzeit in der Form 14:32 oder MI:14:32 ausgibt. Sinnvollerweise<br />
zeigt man also den Ausgang der Uhr mit Hilfe<br />
dieser Funktion an.<br />
Bei Verwendung der Echtzeituhr wird die Uhrzeit automatisch<br />
einmal pro Minute synchronisiert.<br />
OSZILLATOR<br />
Liefert am Ausgang ein periodisches Signal<br />
mit der Periodendauer TL + TH, wobei TL<br />
die Low-Zeit ist, also die Zeit, für die das Signal<br />
auf 0 liegt, und TH die High-Zeit, also die Zeit, für die<br />
das Signal auf 1 liegt.<br />
SEL: Selektionseingang<br />
TL: Low-Zeit<br />
TH: Hi-Zeit<br />
Q: Ausgang<br />
Value: std | min | sek | 10ms (Default: 10ms)<br />
SEL = 1: Der Ausgang ist 0. SEL = 0: Der Ausgang oszilliert.<br />
Falls TL und TH unbeschaltet oder mit dem Signal<br />
0 belegt sind, verhält sich der Oszillator so, als wären TL<br />
und TH 1. Damit erhält man bei offenen Eingängen und<br />
leerem Value am Ausgang die maximale Frequenz von<br />
1/(TL+TH) = 1/20 ms = 50 Hz.<br />
COUNTER<br />
Auf-/Abwärtszähler mit einstellbarem Überlauf.<br />
CNT: Zähleingang<br />
SEL: Selektionseingang<br />
DIR: Richtungseingang<br />
MAX: Überlaufeingang<br />
R: Reset-Eingang<br />
MAX = 0: Bei jeder positiven Flanke an CNT wird der Ausgangswert<br />
um 1 erhöht (DIR = 0) oder gesenkt (DIR = 1).<br />
12
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Ist der Maximalwert von 65535 erreicht, gibt es keinen<br />
Überlauf. Ebenso, wenn der Minimalwert 0 erreicht ist.<br />
MAX = Zahl von 1 bis 65535: Der Zähler verhält sich wie<br />
oben beschrieben, aber der Ausgang kann nur Werte von<br />
0 bis MAX annehmen. Außerdem gibt es bei 0 bzw. MAX<br />
einen Überlauf, je nach Zählrichtung. Beim Aufwärtszählen<br />
gibt es einen Überlauf nach 0, beim Abwärtszählen<br />
springt der Ausgang nach 0 auf MAX. Damit hat man<br />
einen sogenannten Modulozähler, der zum Beispiel beim<br />
Durchtasten bestimmter Betriebszustände vorteilhaft eingesetzt<br />
werden kann (siehe beisp-counter.sch und<br />
Timerschaltung im Anhang).<br />
R = 1 setzt den Zählerstand auf 0, wenn DIR = 0.<br />
R = 1 setzt den Zählerstand auf MAX, wenn DIR =1.<br />
Innerhalb der ersten 300 ms nach dem Start der internen<br />
Zeitzählung wird ein Pegelwechsel am Triggereingang<br />
nicht ausgewertet.<br />
Bitte beachten Sie, dass die maximale<br />
Zählrate von der Schleifendurchlaufzeit<br />
abhängt. Wenn die Schleifendurchlaufzeit<br />
bei 10 ms liegt, ergibt sich ein Wert von<br />
etwa 100 Impulsen pro Sekunde.<br />
DECADE_CNT<br />
Dekadenzähler<br />
CNT: Triggereingang<br />
SEL: Selektionseingang<br />
DIR: Richtung (0=ab, 1=auf)<br />
MAX: Überlauf, danach 0<br />
R: Reseteingang<br />
Q: Ausgang<br />
Q0-Q9: Ausgang (binärkodiert)<br />
Dieser Zähler ist an den COUNTER angelehnt.<br />
Zusätzlich gibt es hier 10 Ausgänge (0..9), von denen jeweils<br />
nur ein Ausgang aktiv ist. Damit lassen sich z.B.<br />
einfache State-Maschinen (Siehe Beispiel:<br />
Ampelsteuerung) oder Menüstrukturen<br />
realisieren. Liegt der Counterwert über 9,<br />
ist keiner der Ausgänge aktiv.<br />
DECADE_CNT_INV<br />
Genau wie DECADE_CNT, nur mit invertierten<br />
Ausgängen.<br />
COMPARATOR<br />
Vergleicher (Komparator).<br />
A: Signaleingang A<br />
B: Signaleingang B<br />
A=B: Ausgang<br />
A>B: Ausgang<br />
Wenn die Werte an A und B gleich sind, geht der Ausgang<br />
A=B auf 1, sonst ist er 0.<br />
Ist der Wert A größer als der Wert B, geht der Ausgang<br />
A>B auf 1, sonst ist er 0.<br />
Typ. Anwendung: Vergleich von Analogwerten<br />
COMP_HYST<br />
Komparator mit Hysterese, 2-Punkt-Regler.<br />
SIG: Eingangssignal<br />
ES: Einschaltschwelle<br />
AS: Ausschaltschwelle<br />
Q: Ausgang<br />
Sinnvollerweise wird AS kleiner als ES gewählt. Q geht<br />
auf 1, wenn SIG größer wird als ES. Q wird erst dann wieder<br />
0, wenn SIG kleiner wird als AS.<br />
Typ. Anwendung: Einfache Regelschaltungen<br />
REGLER_PID<br />
PID-Regler.<br />
Soll: Sollwerteingang<br />
Ist: Istwerteingang<br />
Kp: Verstärkung des Proportionalanteils<br />
Ki: Verstärkung des Integralanteils<br />
Kd: Verstärkung des Differenzialanteils<br />
Ta: Abtastzeit in 10-ms-Intervallen<br />
Q: Ausgang (0...10000)<br />
Soll und Ist sind auf den Bereich 0...10000 begrenzt..<br />
Die Reglerparameter Kp, Ki und Kd werden intern durch<br />
100 geteilt. Das heißt, eine Angabe von 123 entspricht<br />
1,23.<br />
Der Ausgangwert liegt mittig um 5000.<br />
Ein P-Regler alleine hat eine bleibende Regelabweichung.<br />
Ein I-Anteil soll die bleibende Regelabweichung kompensieren.<br />
Der I-Anteil lässt z.B. so lange den Ausgang des<br />
Reglers ansteigen, solange eine Abweichung vorhanden<br />
ist. Es wird dazu in jedem Reglerintervall die Soll-Ist-Abweichung<br />
multipliziert mit Ki auf den Ausgangswert<br />
aufaddiert.<br />
Das sorgt dafür, dass der Ausgangswert irgendwann an<br />
den Anschlag läuft, solange noch Regelabweichung vorhanden<br />
ist.<br />
Der D-Anteil soll ein Überschwingen des Systems dämpfen,<br />
indem die Steigung als Gegenkopplung verwendet<br />
wird.<br />
Es gibt ein PID-Debug-Beispiel, dass die Funktion des<br />
Regler verdeutlichen soll.<br />
Tipp:<br />
Die analogen Werte lassen sich als Debugwerte im Micro-<br />
SPS Downloader grafisch darstellen. Dadurch kann man<br />
leichter den Regler mit seinem System abgleichen.<br />
FREQU_TEILER<br />
Frequenzteiler.<br />
F: Eingangssignal<br />
X: Teilverhältnis<br />
Q: Frequenzausgang<br />
Der Ausgang ist 0, wenn X 0 oder 1 ist.<br />
Ist der Wert von X eine Zahl von 2 bis 65535, dann wird<br />
die Frequenz des Eingangssignals (F) um diesen Faktor<br />
13
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
verringert. Ein symmetrisches Ausgangssignal erhält man<br />
nur, wenn man gerade Werte für X wählt, oder wenn das<br />
Eingangssignal ein Taktverhältnis von 1:1 hat (1-Zeit und<br />
0-Zeit gleich).<br />
Innerhalb der ersten 300 ms nach dem Start der internen<br />
Zeitzählung wird ein Pegelwechsel am Triggereingang<br />
nicht ausgewertet.<br />
UND_2/UND_4/UND_8<br />
UND-Funktion mit 2, 4 oder 8 Eingängen.<br />
Der Ausgang ist nur dann auf 1, wenn alle Eingänge auf 1<br />
sind.<br />
ODER_2/ODER_4/ODER_8<br />
ODER-Funktion mit 2, 4 oder 8 Eingängen.<br />
Der Ausgang immer dann auf 1, wenn mindestens einer<br />
der Eingänge auf 1 ist.<br />
NAND_2/NAND_4/NAND_8<br />
NAND-Funktion mit 2, 4 oder 8 Eingängen.<br />
Der Ausgang ist nur dann auf 0, wenn alle Eingänge auf 1<br />
sind.<br />
NOR_2/NOR_4/NOR_8<br />
NOR-Funktion mit 2, 4 oder 8 Eingängen.<br />
Der Ausgang immer dann auf 0, wenn mindestens einer<br />
der Eingänge auf 1 ist.<br />
XOR_2<br />
XOR-Funktion mit 2 Eingängen.<br />
Der Ausgang immer dann auf 1, wenn einer der Eingänge<br />
auf 1 ist. Beide Eingänge auf 1 führt wieder zu 0.<br />
NICHT<br />
Invertierer.<br />
Der Ausgang ist auf 1, wenn der Eingang auf 0 ist und<br />
umgekehrt.<br />
Neben ihrer eigentlichen Funktion, 1-Bit-Signale zu invertieren,<br />
eignet sich die NICHT-Funktion auch dazu, einen<br />
1-Bit-Eingang mit dem festen Wert 1 zu belegen. Man<br />
schließt einfach den Ausgang eines NICHT-Bauteils an,<br />
dessen Eingang offen ist.<br />
SELECT<br />
Invertierender 1-aus-8-Decoder.<br />
IN: Dateneingang<br />
SEL: Selektionseingang<br />
SEL0 bis 7: Ausgänge<br />
SEL = 1 oder IN größer als 7: Alle Ausgänge liegen auf 1.<br />
SEL = 0: Liegt am Eingang IN ein Singal mit einem Wert<br />
zwischen 0 und 7 an, dann ist genau ein Ausgang auf 0.<br />
Bei IN = 0 liegt SEL0 auf 0, bei IN = 1 SEL1 und so weiter.<br />
Diese Funktion eignet sich z.B. dazu, mit Hilfe eines vorgeschalteten<br />
Zählers (COUNTER) aus einer Gruppe von<br />
Bedien- oder Anzeigeelementen jeweils eine zu aktivieren<br />
IR_Q<br />
Infrarot-Empfänger (RC5-Format)<br />
SEL: Selektionseingang<br />
Q, ADR, CMD: Ausgänge<br />
Value: optional: Geräteadresse<br />
Mit dieser Funktion können Infrarot-Signale<br />
einer Fernbedienung ausgewertet werden. Dies funktioniert<br />
nur mit dem RC5-Protokoll, dass u.a. von Philips<br />
verwendet wird.<br />
Dieses Protokoll definiert eine Geräteadresse und ein<br />
Kommando. Hier eine kurze Liste (Google kennt weitere):<br />
Gerät = Adresse<br />
TV = 0, TV2 = 1, VCR = 5, VCR2 = 6, SAT = 8<br />
Kommando<br />
1 - 9 = Zahlen, 12 = Power, 16 = Vol+, 17 = Vol- , ....<br />
Wenn kein VALUE angegeben ist, werden alle Adressen<br />
und Kommandos empfangen. Der Ausgangswert ist dann:<br />
Q = (Geräteadresse * 256) + (Kommando)<br />
Beispiel: Q = 1282 entspricht 5 * 256 + 2 --> Gerät 5<br />
(VCR), Kommando 2 (Taste 2)<br />
Ist ein VALUE angegeben, werden nur Kommandos von<br />
dieser Adresse empfangen. Der Ausgangswert Q ist dann<br />
direkt das Kommando.<br />
Anmerkung<br />
Das Ausgangssignal Q steht nur für den Moment an,<br />
wenn eine Taste gedrückt wird. Wenn keine Taste gedrückt<br />
ist, ist der Wert Q = 65535 ( 0xFFFF).<br />
ANALOGSCHALTER<br />
A0, A1: Eingänge<br />
SEL: Selektionseingang<br />
Q: Ausgang<br />
Abhängig vom Wert an SEL (0 oder 1) wird entweder der<br />
Eingang A0 oder A1 zum Ausgang durchgeschaltet.<br />
DB_ALG_AUS<br />
Für Debugzwecke stehen 4 Ausgänge zur Verfügung.<br />
Diese können per PC-Programm angezeigt (Wert der<br />
Graph) werden.<br />
DB_ALG_EIN<br />
Für Debugzwecke stehen 4 analoge Eingänge im Wertebereich<br />
0-65535) zur Verfügung.<br />
Diese können per PC-Programm eingestellt werden.<br />
DB_DIG_AUS<br />
Für Debugzwecke stehen 16 digitale Ausgänge zur Verfügung.<br />
Diese können per PC-Programm als Signalverlauf grafisch<br />
angezeigt werden.<br />
DB_DIG_EIN<br />
Für Debugzwecke stehen 16 digitale Eingänge zur Verfügung.<br />
Diese können per PC-Programm gesteuert werden.<br />
14
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
PWM<br />
Erzeugung eines PWM-Signals<br />
% : Eingangsinformation<br />
Ta: Peridendauer in 100ms<br />
SEL: Selektionseingang<br />
Q: Ausgang<br />
Diese PWM wird softwaremässig erzeugt, im Gegensatz<br />
zur hardwaremässigen PWM-Funktion des Grundmoduls.<br />
Die Auflösung beträgt 10ms.<br />
MULTIPLEXER<br />
Schaltet einen Eingangswert zum Ausgang<br />
durch.<br />
I0 bis I7: Eingänge<br />
SEL: Selektionseingang<br />
Q: Ausgang<br />
Der an SEL anliegende Wert (modulo 8)<br />
bestimmt, welcher Eingang zum Ausgang durchgeschaltet<br />
wird (bei 0 wird I0 durchgeschaltet etc.). Steuert man SEL<br />
mit einem Zählerausgang an, dann lassen sich der Reihe<br />
nach beliebige Werte ausgeben.<br />
Beispiel: Schnittmotoransteuerung.<br />
BUSREDUCT<br />
Zusammenfassung von Einzelsignalen zu<br />
einem 16-Bit-Signal. Beginnend mit I0, I1<br />
usw. werden die Eingangswerte mit den<br />
Faktoren 1, 2, 4, 8 usw. multipliziert. Die<br />
Summe ergibt den Ausgangswert. Das entspricht<br />
der Umwandlung einer Binärzahl in<br />
eine Dezimalzahl.<br />
Beispiel: An den Eingängen I0..I3 liegen<br />
die Werte 1001 an. Der Ausgangswert beträgt<br />
dann<br />
1 x 1 + 0 x 2 + 0 x 4 + 1 x 8 = 9<br />
Damit lässt sich eine Reihe von Einzelsignalen<br />
so zusammenfassen, dass sie mit 16-Bit-Funktionen<br />
weiterverarbeitet werden können. Das Auftreten<br />
bestimmter Signalkombinationen könnte zum Beispiel mit<br />
einem anschießenden Komparator festgestellt werden.<br />
BUSEXPAND<br />
Aufteilen eines 16-Bit-Signals in Einzelsignale.<br />
Diese Funktion ist die Umkehrung der<br />
Funktion BUSREDUCT. Eine 16-Bit-Zahl<br />
wird in eine Binärzahl umgewandelt, wobei<br />
der Ausgang A0 die niedrigste Wertigkeit<br />
hat.<br />
Beispiel: Liegt am Eingang die Zahl 9 an,<br />
dann werden die unteren vier Ausgänge zu<br />
1001, alle weiteren Ausgänge sind 0.<br />
MINMAX<br />
Minimalwert-/Maximalwertanzeige.<br />
IN: Eingang<br />
R: Reset<br />
MIN: Minimalwert<br />
MAX: Maximalwert<br />
Die Ausgänge MIN und MAX zeigen den Minimalwert bzw.<br />
den Maximalwert an, den das Eingangssignal erreicht hat.<br />
Eine 1 am Eingang R setzt die Ausgänge auf den gegenwärtigen<br />
Eingangswert.<br />
Nach dem Einschalten der <strong>MicroSPS</strong> wartet die MINMAX-<br />
Funktion eine Sekunde, bevor sie den Eingangswert erstmals<br />
auswertet.<br />
SPEICHER<br />
Speicher für 16-Bit-Wert.<br />
IN: Eingang<br />
Tr: Triggereingang<br />
R: Reset<br />
Q: Ausgang<br />
Bei der positiven Flanke von Tr übernimmt der Ausgang<br />
den gegenwärtigen Wert des Eingangssignals. Der Ausgang<br />
bleibt auf diesem Wert, bis zur nächsten positiven<br />
Flanke von Tr oder bis er mit R = 1 auf 0 gesetzt wird.<br />
RANDOM<br />
Zufallsfunktion, liefert am Ausgang eine Zufallszahl.<br />
Tr: Eingang<br />
MIN: Minimalwert (Default: 0)<br />
MAX: Maximalwert (Default: 65535)<br />
Q: Ausgang<br />
Bei jeder positiven Flanke von Tr wird am Ausgang eine<br />
neue Zufallszahl bereit gestellt. Die Zahl kann nur Werte<br />
von MIN bis MAX annehmen. Um einen Würfel zu simulieren,<br />
würde man also an MIN den Wert 1 und an MAX<br />
den Wert 6 anlegen.<br />
Typ. Anwendung: Legionellenschaltung, Anwesenheitssimulation<br />
ANALOG_CONVERT<br />
Analogkonverter, als Wandler oder Filter<br />
nutzbar<br />
IN: Eingang<br />
OPT: Optionseingang, Funktion abhängig vom VALUE<br />
Q: Ausgang<br />
Der VALUE bestimmt die Funktion.<br />
Mögliche VALUE-Wert:<br />
NTC220K: am Eingang wird der Analogwert eines NT-<br />
C220k angeschlossen und am Ausgang wird die<br />
Temperatur in 0,1°C mit 30°C Offset bereitgestellt. Also 0<br />
= -30,0° , 550 = 25,0°C<br />
Mit dem OPT-Eingang kann das Signal zusätzlich gefiltert<br />
werden (offen = keine Filterung):<br />
Q = AltQ + (AltQ – IN) / OPT<br />
(Zeitintervall OPT * 10ms,)<br />
15
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
NTC10K: wie oben nur mit NTC10k als Sensor.<br />
FILTER: Der Eingangswert wird gefiltert. Der OPT-Eingang<br />
bestimmt die Filterung:<br />
Q = AltQ + (AltQ – IN) / OPT<br />
(Zeitintervall OPT * 10ms,)<br />
LIN_KENNLINE<br />
Linieare Kennline mit Begrenzung<br />
X: Eingang<br />
X1,Y1: Kennline Punkt1<br />
X2,Y2: Kennline Punkt2<br />
Y: Ausgang<br />
Mit dieser Funktion definiert man eine lineare Funktion in<br />
2-Punktform. Ein Eingangswert X liefert dann den entsprechenden<br />
Funktionswert Y.<br />
Besonderheit: Werte kleiner X1 werden auf Y1, Werte<br />
größer X2 auf Y2 begrenzt.<br />
Anwendung: Heizungssteuerung<br />
Digitales I/O-Modul 12/4<br />
Die SPS-Ctrl zeichnet sich u.a. durch leichte Erweiterbarkeit<br />
aus. So lassen sich bis zu 4 digitale I/O-Module 12/4<br />
anschließen.<br />
Das I/O-Modul 12/4 hat 12 digitale Eingänge (über Optokoppler<br />
getrennte) und 4 (Relais-) Ausgänge.<br />
Es wird über über den Erweiterungsstecker an die SPS-<br />
Ctrl-Platine angeschlossen.<br />
Im Schaltplan lässt es sich genauso leicht verwenden, wie<br />
die OnBoard Ein- und Ausgänge der SPS-Ctrl.<br />
EXT_IO_12/4<br />
Das IO-Modul kann durch 2 DIP-Schalter<br />
adressiert werden. Es können max. 4<br />
Module verwendet werden (Adresse 0 -<br />
3).<br />
Die eingestellte Adresse übergibt man diesem Bauteil als<br />
VALUE.<br />
Die Funktion LCD-/V24AUSGABE<br />
Diese Funktion ist die leistungsfähigste und umfangreichste<br />
aller <strong>MicroSPS</strong>-Funktionen, deshalb widmen wir<br />
ihr ein eigenes Kapitel.<br />
Das LC-Display setzt ebenfalls auf den Funktionsumfang<br />
der V24Ausgabe auf.<br />
Über die serielle Schnittstelle können Textausgaben von<br />
der <strong>MicroSPS</strong> ausgegeben werden, die dann z.B. am PC<br />
in einem Teminalprogramm oder dem Downloader angezeigt<br />
werden können. Sie werden von den in der<br />
Schaltung verteilten LCD-/V24AUSGABE-Blöcken initiiert.<br />
Die Baudrate ist 38400Bd.<br />
Was wird ausgegeben?<br />
Der Value der LCD-/V24AUSGABE-Funktion<br />
bestimmt, was ausgegeben wird. Er<br />
besteht aus einem Format-String, der im<br />
Einzelnen angibt, wie die Ausgabe aussehen<br />
soll.<br />
Wann wird etwas ausgegeben?<br />
SEL = 1: Es wird nichts ausgegeben.<br />
Wenn der Format-String nicht mit $P beginnt, dann startet<br />
die Ausgabe mit der positiven Flanke von SEL.<br />
Wenn der Format-String mit $P beginnt, wird die Ausgabe<br />
periodisch gestartet. $P100 bedeutet, dass jede Sekunde<br />
eine Ausgabe erfolgt (100 Hundertstelsekunden). Die interne<br />
Zeit hat eine Auflösung von 1/100 Sek. (10 ms),<br />
deshalb wird die Zeit in Hundertstelsekunden angegeben.<br />
Beginnt der Format-String mit $P100+5, dann erfolgt die<br />
Ausgabe ebenfalls jede Sekunde, aber um 5 Hundertstelsekunden<br />
später, als bei $P100. Damit lässt sich die<br />
Reihenfolge von Ausgaben bei jedem Schleifendurchlauf<br />
festlegen.<br />
Bitte beachten Sie, dass die Periodenangabe $P unbedingt<br />
am Anfang des Strings stehen muss. Wie jeder<br />
Platzhalter muss auch die Periodenangabe mit dem Zeichen<br />
_ abgeschlossen werden.<br />
Wie muss der Format-String aussehen?<br />
Der Format-String enthält Klartext und Platzhalter. Platzhalter<br />
werden in der Ausgabe durch aktuelle Werte<br />
ersetzt (z. B. durch die aktuelle Uhrzeit).<br />
Im Folgenden gilt:<br />
– dd stellt eine Ziffernfolge (maximal 65535) dar.<br />
– Direkt auszugebender Text kann an beliebiger Stelle<br />
eingefügt werden. Verboten sind $ und Leerzeichen.<br />
– Das Zeichen “_“ wird als Leerzeichen ausgegeben.<br />
– Eckige Klammern umschließen Zeichen, die entfallen<br />
können.<br />
– Jeder Platzhalter (evtl. gefolgt von Parametern) muss<br />
mit dem Zeichen „_“ abgeschlossen werden, es sei<br />
denn, er steht am Ende des Format-Strings.<br />
– Der Platzhalter $P muss am Anfang des Format-<br />
Strings stehen.<br />
16
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
– Alle anderen Platzhalter dürfen nur einmal, aber in beliebiger<br />
Reihenfolge im Format-String auftauchen.<br />
– Der Platzhalter $n hat nur dann einen Einfluss auf die<br />
Ausgabe, wenn er vor $N auftaucht.<br />
Platzhalter:<br />
$Pdd[+dd]<br />
Bestimmt die Zeitspanne zwischen den Ausgaben.<br />
$W<br />
Gibt den Wert als Dezimalzahl aus, der am DATA-Eingang<br />
anliegt. Die minimale Anzahl der ausgebenden<br />
Stellen kann mit dem Parameter:$n angegeben werden.<br />
Führende Nullen werden unterdrückt.<br />
Beispiel: $n3_0$W gibt 3 Stellen aus<br />
$B<br />
Gibt den Wert als Binärzahl aus, der am DATA-Eingang<br />
anliegt. Eignet sich gut zum Testen von Einzelsignalen.<br />
Man fasst eine Reihe von Signalen mit BUSREDUCT zusammen<br />
und gibt den Ausgang mit Hilfe der<br />
V24AUSGABE und dem Platzhalter $B aus.<br />
$C<br />
Gibt den Wert als Temperatur aus.<br />
Mit $n können die Anzahl der Stellen verändert werden.<br />
$c<br />
Gibt den Wert als Temperatur ohne Nachkommastellen<br />
aus.<br />
$T<br />
Gibt die aktuelle Uhrzeit in der Form 14:23:01 aus.<br />
$w<br />
Gibt den aktuellen Wochentag aus (SO, MO, DI etc.).<br />
$Z<br />
Gibt den am DATA-Eingang anliegenden Wert als Zeit-<br />
String der Form MO:12:23 aus, sofern der Wert kleiner<br />
oder gleich 10079. Ist der Wert größer, wird -$Z zu hoch-<br />
ausgegeben. Der Wert repräsentiert die Zahl der Minuten<br />
ab Sonntag 0 Uhr.<br />
Wenn der Wert kleiner oder gleich 1439 ist (23:59), wird<br />
der Zeit-String in der Form 12:23 ausgegeben, also ohne<br />
Wochentag. Wer nur mit der Tageszeit arbeiten will, kann<br />
damit dafür sorgen, dass die Anzeige des Wochentags<br />
unterbleibt.<br />
Bitte beachten Sie, dass $Z normalerweise dazu verwendet<br />
wird, das Stellen der UHRZEIT oder das Stellen von<br />
Schaltzeiten anzuzeigen (siehe Timerschaltung im Anhang).<br />
In der Regel wird also damit nicht die aktuelle Zeit<br />
angezeigt. Wer allerdings die Zeit nur auf Minuten genau<br />
ausgeben will, kann dies auch mit $Z tun. Der DATA-Eingang<br />
der LCD-/V24AUSGABE muss dabei mit dem<br />
Ausgang von UHRZEIT verbunden sein.<br />
$Ndd[.dd][+|-dd[.dd]]<br />
Normierte Ausgabe des Wertes, der am DATA-Eingang<br />
anliegt. Der Wert wird mit der Zahl unmittelbar hinter $N<br />
multipliziert. Falls dahinter ein Plus- oder Minuszeichen<br />
und eine weitere Zahl folgen, wird diese Zahl zum Ergeb-<br />
nis der Multiplikation addiert bzw. davon subtrahiert. Beide<br />
Zahlen können ganze Zahlen sein oder einen Dezimalpunkt<br />
mit anschließenden Nachkommastellen<br />
(maximal 4) enthalten. $N0.005 normiert die Werte 0 bis<br />
1000 auf 0 bis 5.0. Damit kann man sich die Analogeingänge<br />
direkt in Volt ausgeben lassen. Für die Darstellung<br />
von Temperaturen in Grad Celsius wäre eventuell eine<br />
Normierung der Form $N0.088-19.7 erforderlich.<br />
Ist bei der Normierung eine Division erforderlich, muss in<br />
der Normierung der Kehrwert eingegeben werden.<br />
Beispiel: eine Division durch 5 würde in $N0.2 resultieren<br />
$n<br />
Stellt für den nachfolgenden Platzhalter $N und $C die<br />
Anzahl der auszugebenden Vor- und Nachkommastellen<br />
ein (Default: 5 und 1). Beispiel: $n1_2_$N0.0025_Volt...,<br />
damit würde man eine Ausgabe der Form 2.50 Volt erhalten.<br />
Führende Nullen werden unterdrückt. Die Summe der<br />
Stellen darf 9 nicht überschreiten.<br />
$q<br />
Gibt die interne Zykluszeit in ms aus. Das ist die Zeit, die<br />
vergeht, um alle Bauteile des Schaltplans einmal abzuarbeiten.<br />
Optimal ist eine Zykluszeit unter 10ms. Dauert ein<br />
Schleifendurchlauf länger als 10ms, dann ist die genaue<br />
Einhaltung sehr kurzer Zeiten für Oszillatoren usw. nicht<br />
mehr gewährleistet. Dieses Intervall ist dann entsprechend<br />
länger.<br />
$Q<br />
Gibt die Anzahl der Schleifendurchläufe (Zyklen) pro Sekunde<br />
aus.<br />
Erweiterung für das LCD-Display<br />
Das Display setzt auf den Funktionsumfang der V24Ausgabe<br />
auf und benutzt die selben Parameter. Im<br />
Formatstring kann zusätzlich die Position für die Ausgabe<br />
bestimmt werden.<br />
$Lxx_y<br />
Gibt die Position auf dem LCD an. Dabei ist xx die Zeile<br />
(0-15) und y die Spalte (0-1).<br />
17
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Asynchrone oder Synchrone<br />
Verarbeitung<br />
Unter den Einstellungen des Downloaders kann ausgewählt<br />
werden, ob der SPS-Code synchron oder asynchron<br />
verarbeitet wird.<br />
Synchrone Verarbeitung (Voreinstellung)<br />
Bei dieser Einstellung werden intern synchron verarbeitet.<br />
In jedem Zyklus wird jedes Gatter einmal abgearbeitet,<br />
und die Ausgänge der Gatter werden erst dann geschaltet,<br />
wenn das Script vollständig abgearbeitet wurde<br />
(vollständiger Zyklus). Darum ist es irrelevant, in welcher<br />
Reihenfolge das Script erstellt wurde.<br />
Wenn z.B. zwischen Eingang und Ausgang fünf Funktionen<br />
platziert sind, von denen jede mit ihrem Ausgang den<br />
Eingang der nächsten speist, dann gelangt die Eingangsinformation<br />
erst nach fünf Zyklen zum Ausgang. Die<br />
Reihenfolge und Bezeichnungen der Elemente haben darauf<br />
keinen Einfluss.<br />
Hinweis:<br />
Die digitalen Hardware-Ausgänge werden nicht synchron<br />
angelegt.<br />
Asynchrone Verarbeitung<br />
Bei dieser Einstellung werden die Gatter nach Ihrer alphabetischen<br />
Reihenfolge abgearbeitet und ihre Ausgänge<br />
haben sofort Auswirkung auf die Eingänge der nachgeschalteten<br />
Gatter. Sind z.B. zwischen Eingang und<br />
Ausgang fünf Funktionen platziert, von denen jede mit ihrem<br />
Ausgang den Eingang der nächsten speist, dann<br />
gelangt die Eingangsinformation entweder gleich am<br />
Ende des Zyklus oder unter Umständen erst nach fünf Zyklen<br />
zum Ausgang, je nach alphabetischer Reihenfolge.<br />
FAQ<br />
Dieser Abschnitt behandelt häufig gestellte Fragen (Frequently<br />
Asked Questions, FAQ).<br />
In der Beschreibung ist von verschiedenen Befehlen<br />
in EAGLE die Rede, wie kann ich sie eingeben?<br />
Sie können jeden Befehl in EAGLE in die Kommandozeile<br />
eintippen und mit der Enter-Taste aktivieren. Dabei sind<br />
Abkürzungen erlaubt, solange sie eindeutig sind, und<br />
Groß-/Kleinschreibung spielt keine Rolle. Oder Sie können<br />
mit der Maus das entsprechende Symbol (Icon) am<br />
linken und oberen Rand des Schaltplaneditor-Fensters<br />
anklicken. Wenn Sie den Cursor eine Weile über einem<br />
solchen Icon lassen, dann erscheint der Name des Befehls<br />
in einem kleine Fenster. Einige wenige Befehle sind<br />
nicht über ein Icon sondern über die Menüs Datei, Bearbeiten<br />
usw. zugänglich.<br />
Wie kann ich mich schnell über einen EAGLE-Befehl<br />
informieren?<br />
Tippen Sie help befehlsname in die Kommandozeile ein,<br />
Ich sehe keine SPS-Funktionen, wenn die den ADD-<br />
Befehl verwende?<br />
Verwenden Sie bitte den Bibliotheksbrowser im Control-<br />
Panel-Fenster von EAGLE, um SPS-Bauteile<br />
hinzuzufügen.<br />
Wenn ich ein Bauteil platzieren will, erscheint die Meldung<br />
„Bauteil xy hat kein Package“?<br />
Es genügt ein Druck auf 'F11' mit anschließenden ESC,<br />
um diese Meldung von EAGLE abzuschalten.<br />
Sollte F11 nicht funktionieren, starten Sie das ULP:“initmsps.ulp“.<br />
Wie kann ich z. B. beim MOVE- oder DELETE-Befehl<br />
ein Objekt selektieren, das nahe bei anderen Objekten<br />
liegt?<br />
Liegen die Aufhängepunkte mehrerer Objekte nahe beieinander,<br />
dann nimmt der Cursor beim Anklicken die<br />
Form eines Vierfachpfeils an. Betätigen Sie so oft auf die<br />
rechte Maustaste, bis das gewünschte Objekt hell dargestellt<br />
wird, und selektieren Sie es dann mit der linken<br />
Maustaste.<br />
Ich will einen Eingang oder Ausgang in die Schaltung<br />
bringen, aber ich finde diese nicht.<br />
Alle On-Board-Elemente sind in einem Bauteil (MICRO-<br />
SPS) enthalten. Ist dieses Bauteil in der Schaltung vorhanden,<br />
dann kann man mit dem INVOKE-Befehl seine<br />
einzelnen Funktionen in die Schaltung holen. Klicken Sie<br />
das INVOKE-Icon an und dann auf die linke untere Ecke<br />
des Zeichnungsrahmens. Aus dem sich öffnenden Menü<br />
können Sie die On-Board-Funktion auswählen. Schneller<br />
geht es mit der Taste F11, vorausgesetzt, Sie haben das<br />
User-Language-Programm init-msps.ulp ausgeführt.<br />
Die Anschlüsse von Bauteilen werden mit grünen<br />
Kreisen und Texten dargestellt. Wie kann ich sie verschwinden<br />
lassen?<br />
Deaktivieren Sie den Pins-Layer, indem Sie entweder in<br />
die Kommandozeile disp -pins eintippen oder das Icon<br />
des DISPLAY-Befehls anklicken und im sich öffnenden<br />
Menü den Pins-Layer mit der Maus ausschalten.<br />
Wie kann ich verhindern, dass die Beschreibung der<br />
Beispiele und Texte wie „Value bestimmt Zeitbasis“ in<br />
der Schaltung sichbar sind?<br />
Deaktivieren Sie die Layer Description und Info, indem<br />
Sie entweder in die Kommandozeile disp -descr -info eintippen<br />
oder das Icon des DISPLAY-Befehls anklicken und<br />
im sich öffnenden Menü die beiden Layer mit der Maus<br />
ausschalten.<br />
Netz, Signal: Was ist der Unterschied?<br />
Beide Begriffe werden in diesem Dokument identisch verwendet.<br />
Netze bzw. Signale werden mit dem NET-Befehl<br />
gezeichnet, nicht mit dem WIRE-Befehl!<br />
Welche Bedeutung hat ein BUS?<br />
Sie können mit dem BUS-Befehl eine Bus-Linie zeichnen,<br />
die allerdings nur optische Bedeutung hat. Mit einer Bus-<br />
Linie werden keine Signale verbunden. Wenn man den<br />
18
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
NET-Befehl aktiviert und dann zuerst auf einen Bus klickt,<br />
dann kann man aber Netze mit bestimmten Namen erzeugen,<br />
abhängig vom Namen des Busses. Siehe Help-<br />
Funktion. Da in EAGLE Netze dann verbunden sind, wenn<br />
sie denselben Namen haben (auch wenn sie optisch nicht<br />
zusammenhängen), bieten Busse eine elegante Möglichkeit,<br />
Schaltungen übersichtlich zu gestalten (siehe<br />
Timerschaltung im Anhang).<br />
Wie kann ich verhindern, dass ich vor lauter Netzen<br />
den Überblick verliere?<br />
Netze mit gleichem Namen sind per Definition verbunden.<br />
Sie brauchen also die Netzlinien nicht immer optisch zu<br />
verbinden. Bei größeren Schaltungen weisen Sie zusammengehörigen<br />
Abschnitten einfach mit dem NAME-<br />
Befehl denselben Namen zu. Um das auch optisch sichtbar<br />
zu machen, sollten Sie mit dem LABEL-Befehl die<br />
Signalnamen in der Nähe der Netzlinien platzieren. Siehe<br />
auch BUS-Befehl.<br />
Ich will eine Gruppe von Bauteilen löschen oder verschieben<br />
Verwenden Sie zuerst den GROUP-Befehl, um zu definieren,<br />
welche Bauteile der Gruppe angehören sollen.<br />
Nach dem Anklicken des GROUP-Icons können Sie einen<br />
rechteckigen Bereich wählen, indem Sie die linke<br />
Maustaste gedrückt halten und den Cursor bis zum diagonalen<br />
Eckpunkt ziehen, oder Sie können einen beliebigen<br />
Bereich wählen, indem Sie mit der linken Maustaste der<br />
Reihe nach die Eckpunkte eines Polygons bestimmen.<br />
Ein abschließender Klick mit der rechten Maustaste<br />
schließt das Polygon, das die Gruppe definiert. Sobald<br />
eine Gruppe definiert ist, können Sie diverse Befehle auf<br />
die Gruppe mit der rechten Maustaste ausführen. Wenn<br />
Sie zum Beispiel die Elemente der Gruppe löschen wollen,<br />
selektieren Sie den DELETE-Befehl und klicken<br />
anschließend mit der rechten Maustaste einen beliebigen<br />
Punkt in der Schaltung an. Analog dazu können Sie Gruppenelemente<br />
bewegen.<br />
Kann ich nur die Elemente in einem rechteckigen Bereich<br />
komplett verschieben oder löschen?<br />
Nein, Sie können beliebige Bereiche wählen. Siehe vorherige<br />
Frage.<br />
Ich brauche in der Schaltung noch einmal eine Funktion,<br />
die schon vorhanden ist. Wie geht das am<br />
einfachsten?<br />
Sie können eine Funktion auch mit dem COPY-Befehl<br />
platzieren. Aktivieren Sie den COPY-Befehl, klicken Sie<br />
auf das zu kopierende Bauteil und dann an die Stelle, wo<br />
Sie die Kopie platzieren wollen. Für On-Board-Funktionen<br />
(z. B. Ein-/Ausgänge) ist diese Methode nicht geeignet, da<br />
sich diese Elemente im Bauteil MICRO-SPS befinden und<br />
mit dem COPY-Befehl das ganze Bauteil kopiert wird. Dieses<br />
Bauteil darf aber nur ein einziges Mal in der<br />
Schaltung vorkommen.<br />
Ich will einen ganzen Bereich der Schaltung vervielfältigen.<br />
Geht das?<br />
Grundsätzlich ja, und zwar mit den Befehlen GROUP,<br />
CUT und PASTE. Achten Sie aber darauf, dass Sie keine<br />
On-Board-Elemente kopieren, da dann das Bauteil MI-<br />
CRO-SPS verbotenerweise mehrfach in der Schaltung<br />
vorkommt. Definieren Sie zuerst eine Gruppe mit dem<br />
GROUP-Befehl, wie in einer früheren Frage beschrieben.<br />
Selektieren Sie dann den CUT-Befehl, und klicken Sie<br />
dann einen Punkt in der Zeichnung mit der linken Maustaste<br />
an. Dieser Punkt wird zum Referenzpunkt beim<br />
Platzieren der Kopie. Jetzt klicken Sie auf das PASTE-<br />
Icon und platzieren mit der linken Maustaste die am Cursor<br />
hängende Gruppenkopie. Weitere Kopien können Sie<br />
mit PASTE und Klick mit linker Maustaste platzieren.<br />
Welche Bedeutung hat der Name eines Bauteils?<br />
EAGLE-Bauteile können einen Namen und einen Value<br />
haben. Der Name dient dazu, ein bestimmtes Bauteil in<br />
der Schaltung eindeutig zu identifizieren, deshalb darf jeder<br />
Name nur einmal vorkommen. In <strong>MicroSPS</strong>-<br />
Schaltungen haben Namen keine besondere Bedeutung<br />
(Ausnahme: Abarbeitung gleicher Funktionen in alphabetischer<br />
Reihenfolge). Man kann einem Bauteil einen<br />
Namen zuweisen, indem man den NAME-Befehl aktiviert,<br />
das Bauteil mit der Maus anklickt und im sich öffnenden<br />
Eingabefenster den Namen eintippt. Der Name des Bauteils<br />
MICRO-SPS (MSPS1) sollte nicht geändert werden,<br />
da sonst die Prüfung, ob dieses Bauteil mehrfach platziert<br />
ist, nicht mehr funktioniert.<br />
Was ist mit dem Value eines Bauteils gemeint, und<br />
wie weise ich den Value zu?<br />
Der Value eines Bauteils ist in EAGLE üblicherweise der<br />
Wert eines Widerstands oder Kondensators oder der Typ<br />
einer integrierten Schaltung. In <strong>MicroSPS</strong>-Schaltungen<br />
hat der Value bestimmter Bauteile eine spezielle Bedeutung.<br />
Bei zeitabhängigen Funktionen gibt er z. B. an, ob<br />
die Zeiten als Stunden, Minuten, Sekunden oder Hundertstelsekunden<br />
interpretiert werden. Beim Bauteil WERT<br />
gibt der Value den Zahlenwert an, den diese Funktion an<br />
das angeschlossene Signal liefert.<br />
Man weist einem Bauteil einen Value zu, indem man den<br />
VALUE-Befehl aktiviert, das Bauteil anklickt und und im<br />
sich öffnenden Eingabefenster den Value eintippt. Sollen<br />
mehrere Bauteile denselben Value bekommen, etwa sek,<br />
dann tippt man value sek in die Kommandozeile ein und<br />
klickt der Reihe nach jedes Bauteil an, das diesen Value<br />
bekommen soll.<br />
Funktionsliste, Anweisungsliste: Was ist der Unterschied?<br />
Beide Begriffe sind gleichwertig, damit ist die Datei *.mss<br />
gemeint, die nach Drücken von F12 erzeugt wird.<br />
Kann ich zum Testen den Zustand mehrerer 1-Bit-Signale<br />
darstellen?<br />
Verbinden Sie die zu testenden Signale mit den Eingängen<br />
der BUSREDUCT-Funktion und schließen Sie an<br />
den Ausgang den DATA-Eingang der V24AUSGABE-<br />
Funktion an. Belegen Sie den VALUE der V24AUSGABE<br />
mit dem String $P100_$B. Sie erhalten dann jede Sekunden<br />
eine bitweise Ausgabe der zu testenden Signale<br />
in der Form:<br />
0000000000001011<br />
Dabei entspricht die am weitesten rechts stehende Ziffer<br />
dem Eingang I0 usw.<br />
19
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Warum kann ein Netz optisch mit einem Anschluss<br />
verbunden sein, mit dem es elektrisch nicht verbunden<br />
ist?<br />
Wenn Sie ein Bauteil so absetzen, dass ein Anschluss auf<br />
einem Netz liegt, dann entsteht eine „elektrische“ Verbindung.<br />
Wenn Sie ein Netz bewegen und absetzen,<br />
entsteht keine „elektrische“ Verbindung. Deshalb sollten<br />
Sie mit dem SHOW-Befehl kontrollieren, ob Netze tatsächlich<br />
mit den zugehörigen Pins (Anschlüssen)<br />
verbunden sind. Aktivieren Sie den SHOW-Befehl und klicken<br />
Sie der Reihe nach die entsprechenden Netze an.<br />
Ist ein Netz mit einem Pin verbunden, leuchten beide auf.<br />
Wie finde ich das Netz N$4?<br />
Tippen Sie in die Kommandozeile show n$4 (mit Eingabetaste<br />
abgeschlossen) ein, dann wird dieses Netz hell<br />
dargestellt.<br />
Wie kann ich an einem Digitaleingang die Werte 0 und<br />
1 anlegen?<br />
Ist ein Eingang offen, liefert der Digitaleingang den Wert<br />
0; wird er mit Vpp verbunden, liefert er 1. Sinnvollerweise<br />
verbindet man also Vpp über einen Taster, Schalter oder<br />
ein Relais mit dem Eingang. Taster geschlossen liefert 1,<br />
Taster offen liefert 0.<br />
Kann ich meine Projekte mit der EAGLE-Freeware-<br />
Version realisieren?<br />
Die Freeware entspricht technisch der EAGLE-Light-Version.<br />
Sie dürfen die Freeware zum Testen und für nichtkommerzielle<br />
Anwendungen einsetzen. Wenn Sie mit Ihren<br />
Schaltungen (direkt oder indirekt) Geld verdienen,<br />
müssen Sie eine Lizenz erwerben.<br />
Die genauen Unterschiede zwischen EAGLE Light, Standard<br />
und Professional finden Sie auf der CadSoft-<br />
Homepage (www.cadsoft.de). Für die <strong>MicroSPS</strong>-Entwicklung<br />
ist die einzige Einschränkung der Light-Version, dass<br />
sie nur eine einzige Schaltplanseite zulässt.<br />
Darf ich kommerzielle Projekte realisieren?<br />
Wenn Sie mit unserer Mikrocontroller-Software oder<br />
-Hardware (direkt oder indirekt) Geld verdienen, müssen<br />
Sie eine Lizenz bei uns: info@<strong>MicroSPS</strong>.com erwerben.<br />
Wie kann ich eine weitere Schaltplanseite anlegen?<br />
Voraussetzung ist, dass Sie wenigstens mit der Standard-<br />
Version von EAGLE arbeiten. In der Aktionsleiste über<br />
dem Schaltplanfenster sehen Sie ein Auswahlmenü, in<br />
dem 1/1 steht, sofern der Schaltplan aus einer Seite besteht.<br />
Mit Hilfe dieses Menüs können Sie neue Seiten<br />
anlegen und bestehende löschen.<br />
Kann ich meine <strong>MicroSPS</strong>-Schaltungen in einem eigenen<br />
Verzeichnis speichern?<br />
Installieren Sie die <strong>MicroSPS</strong>-Software wie auf Seite 7 beschrieben,<br />
geben Sie dem Projektverzeichnis aber einen<br />
anderen Namen und löschen Sie die Beispielschaltungen.<br />
Wählen Sie im Control Panel dieses Projekt aus.<br />
Es bleiben keine Variablen nach Aus- und Einschalten<br />
gespeichert.<br />
Diese Funktion ist noch nicht implementiert.<br />
Wichtige Begriffe<br />
Default<br />
Bezeichnet den voreingestellten Wert, wenn kein spezieller<br />
Wert angegeben wurde. Wenn ein Eingang<br />
beispielsweise nicht mit einem Netz verbunden ist, dann<br />
ist sein Defaultwert in der Regel 0. Beim Oszillator ist der<br />
Defaultwert für TL und TH zum Beispiel 1.<br />
Modulo<br />
An verschiedenen Stellen wird der Begriff modulo verwendet.<br />
Das ist eine mathematische Operation wie plus oder<br />
minus. A modulo B bedeutet, A wird durch B ganzzahlig<br />
dividiert und der Rest ist das Ergebnis. Beispielsweise ist<br />
103 modulo 10 = 3. Da Computer Zahlen nur bis zu einem<br />
maximalen Wert darstellen können, gibt es einen<br />
Überlauf, wenn z. B. bei einer Addition dieser Wert überschritten<br />
wird. Das konkrete Ergebnis lässt sich in diesem<br />
Fall elegant mit der Operation modulo ausdrücken. Bei<br />
16-Bit-Arithmetik ist die maximal darstellbare Zahl 65535<br />
und das Ergebnis jeder Operation wird: Ergebnis modulo<br />
65536. Solange beispielsweise A+B kleiner als 65536 ist,<br />
erhalten wir das erwartete Ergebnis, weil (A+B) modulo<br />
65536 identisch mit A+B ist. Wird die Maximalzahl um 1<br />
überschritten, ist das Ergebnis der Operation 0, wird sie<br />
um 2 überschritten, ist das Ergebnis 1, und so weiter. Einfacher<br />
ausgedrückt: Nach einem Überlauf beginnt die<br />
Zählung nach der größten Zahl wieder bei 0.<br />
Retriggerbar<br />
Wenn ein Eingang retriggerbar ist, heißt das, der Vorgang<br />
wird erneut gestartet, sobald die Triggerbedingung (z. B.<br />
positive Signalflanke) erneut eintritt. Er ist nicht retriggerbar,<br />
wenn die erste Flanke den Ablauf bestimmt und eine<br />
erneute Flanke keine Auswirkungen auf den Funktionsablauf<br />
hat.<br />
Schleifendurchlauf, Zyklus<br />
Die <strong>MicroSPS</strong> arbeitet alle in der Schaltung vorhandenen<br />
Funktionen in einer Endlosschleife ab. Die Zeitauflösung<br />
beträgt 10 ms. Dauert ein Schleifendurchlauf länger als<br />
10 ms, dann ist die genaue Einhaltung sehr kurzer Zeiten<br />
(im Bereich von 10 ms) nicht mehr gewährleistet. Die Zykluszeit<br />
kann mittels des Debuggers ausgelesen oder mit<br />
den Parametern $Q (Anzahl Zyklen pro Sekunde) oder $q<br />
(Dauer eines Schleifendurchlaufs in ms) im Display angezeigt<br />
werden.<br />
String<br />
Eine Zeichenfolge. Wenn beispielsweise der VALUE eines<br />
Bauteils mit der Zeichenfolge 1000_500_0 belegt ist,<br />
dann sprechen wir vom Value-String. Wenn der Value der<br />
V24AUSGABE mit $P100_$W belegt ist, sprechen wir<br />
vom Format-String, weil er das Format der Ausgabe bestimmt.<br />
Value<br />
20
<strong>MicroSPS</strong> für AVR-Controller www.<strong>MicroSPS</strong>.com<br />
Bei manchen Bauteilen kann oder muss ein Value angegeben<br />
werden, z. B. bei der MATH-Funktion. Klicken Sie<br />
in EAGLE das Symbol für den VALUE-Befehl an oder tippen<br />
Sie value in die Kommandozeile ein (abschließen mit<br />
Eingabetaste) und klicken Sie dann das betreffende Bauteil<br />
an. Im sich öffnenden Eingabefenster können Sie<br />
dann den Value-String eingeben.<br />
Fehlermeldungen und Warnungen<br />
Fehler in Schaltung<br />
FEHLER: mehrere Ausgänge an Signal x<br />
Ein Signal darf nur an einem Ausgang angeschlossen<br />
sein. Suchen Sie das Signal mit SHOW signalname.<br />
FEHLER: Signal x mit keinem Ausgang<br />
verbunden<br />
Ein Signal muss mit mindestens einem Ausgang verbunden<br />
sein. Suchen Sie das Signal mit SHOW<br />
signalname.<br />
FEHLER: Signal x mit keinem Eingang<br />
verbunden<br />
Ein Signal muss mindestens mit einem Eingang verbunden<br />
sein. Suchen Sie das Signal mit SHOW<br />
signalname.<br />
FEHLER: mehr als 254 Signale<br />
Es sind nur maximal 254 Signale erlaubt.<br />
FEHLER: Bauteil Micro-SPS mehrfach<br />
vorhanden (SHOW msps2)<br />
Die Grundeinheit, das Bauteil Micro-SPS, darf nur einmal<br />
platziert werden. Sie haben entweder mit ADD das Bauteil<br />
mehrfach platziert oder mit CUT und PASTE Teile davon<br />
(z. B. einzelne Ein- oder Ausgänge) kopiert. Der Defaultname<br />
von Micro-SPS ist msps1, msps2 etc. Suchen Sie<br />
deshalb mit SHOW msps2 die unerlaubt platzierten „Gates“,<br />
und löschen Sie sie. Kommt die Fehlermeldung<br />
erneut, suchen Sie nach weiteren „Gates“ mit den Namen<br />
msps3, msps4 usw. Sie können auch eine Bauteileliste<br />
mit dem Befehl EXPORT PARTLIST dateiname ausgeben,<br />
um zu sehen, welche Bauteile in der Schaltung sind.<br />
FEHLER: unzulaessiger Funktionsname<br />
(Gate-Name)<br />
Sie haben ein Bauteil in die Schaltung geholt, das nicht<br />
aus der Original-<strong>MicroSPS</strong>-Bibliothek stammt oder die<br />
Versionen von Übersetzer und Bibliothek passen nicht zusammen.<br />
FEHLER: Uhr mehr als einmal vorhanden<br />
Das Bauteil UHRZEIT darf nur einmal platziert werden.<br />
FEHLER: Bauteil x erfordert VALUE im<br />
zulaessigen Zahlenbereich<br />
Sie müssen dem Bauteil mit dem VALUE-Befehl einen<br />
Zahlenwert zuweisen. Suchen Sie das Bauteil mit SHOW<br />
bauteilname.<br />
FEHLER: Bauteil x erfordert gueltigen VALUE<br />
Sie müssen dem Bauteil mit dem VALUE-Befehl einen<br />
gültigen String zuweisen. Suchen Sie das Bauteil mit<br />
SHOW bauteilname.<br />
FEHLER: Konflikt zwischen x und y<br />
Sie haben On-Board-Funktionen in der Schaltung platziert,<br />
die sich gegenseitig ausschließen, z. B. ALGEIN#3<br />
und POT#3 oder ALGEIN#0 und ALGEIN4_20#0. Siehe<br />
Regeln für die Erstellung eines <strong>MicroSPS</strong>-Funktionsplans,<br />
Seite 8.<br />
Zu hoher Speicherbedarf<br />
FEHLER: zu viele Merker ...<br />
FEHLER: zu viele Signale ...<br />
FEHLER: zu viel RAM erforderlich ...<br />
FEHLER: zu viel ROM erforderlich ...<br />
Fehler im User-Language-Programm<br />
Die folgenden Fehlermeldungen sollten nie erscheinen,<br />
Sie weisen auf ein fehlerhaftes Programm hin.<br />
FEHLER in ULP: unzulaessiger EA-Typ: ...<br />
FEHLER in ULP: Bauteil x: Bitangabe nicht numerisch<br />
in FTab<br />
FEHLER in ULP: Bauteil x: falsche Signalzahl in FTab<br />
Fehler in Bibliothek<br />
Die folgenden Fehlermeldungen sollten nie erscheinen,<br />
Sie weisen auf eine fehlerhafte Bibliothek hin.<br />
FEHLER in Bibliothek: Bauteil x: Pin y hat mehr als<br />
ein _-Zeichen im Namen<br />
FEHLER in Bibliothek: Bauteil x: Pin y hat kein _-Zeichen<br />
im Namen<br />
FEHLER in Bibliothek: Bauteil x: Pin y hat unzulässige<br />
Pin-Direction<br />
Warnungen<br />
WARNUNG: Bauteil x erfordert u. U. einen VALUE<br />
Der Value darf in diesem Fall „leer“ sein, weil automatisch<br />
ein Defaultwert eingesetzt wird. Sie sollen aber überprüfen,<br />
ob das gewollt ist.<br />
WARNUNG: x offene Anschluesse an Baustein y<br />
Bauteile dürfen offene Anschlüsse haben. Sie sollen aber<br />
überprüfen, ob das gewollt ist.<br />
21
Das <strong>MicroSPS</strong>-Projekt Anhang<br />
Alle <strong>MicroSPS</strong>-Funktionen in der Übersicht<br />
22