29.01.2013 Aufrufe

MicroSPS

MicroSPS

MicroSPS

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!