XY-Schreiber Endim 622.01

SeitErstellt: 28.03.2019 vielen Jahren besitze ich ein Modul M029 für den KC85/4. Dieses Modul ist ein Digital-Analog-Umsetzer. Das Modul wurde seinerzeit zur "Dekoration" angeschafft. Irgendwann einmal wurde dann ein Blick in das Handbuch geworfen. Zur damaligen Zeit war ich noch sehr unbedarft, was die Thematik des Anschlusses von Peripheriegeräten an die KC-Module anbelangt. Aber schon damals faszinierten mich Ausgabegeräte, wie Drucker, Schreibmaschinen und Plotter. Im Handbuch zum M029 wird die Ansteuerung eines XY-Schreibers erklärt und damit erwachte zum einen das richtige Interesse an dem Modul und zum anderen entstand der Wunsch, einen solchen X/Y-Schreiber zu erwerben.
Bekannt sind mir solche Geräte als Einkoordinatenschreiber zur Erfassung der Werte der relativen Luftfeuchtigkeit, wie sie zum Beispiel auch in militärischen Bunkeranlagen zum Einsatz kommen.
Genaugenommen ist auch jeder Plotter ein XY-Schreiber, plottet er doch in einem zweidimensionalen Koordinatensystem. Allerdings zeichnet jeden modernen Plotter aus, daß er eine Sprachsyntax beherrscht. Als Standard für diese Plottersprache hat sich schon sehr lange HPGL (Hewlett Packard Graphics Language) durchgesetzt. Die Befehle dieser Sprache sind sehr einfach und werden über eine entsprechende Schnittstelle an den Plotter gesendet. Der Plotter wandelt dabei Fahranweisungen zu einer bestimmten Koordinate in Spannungen um, damit sich der Schreibwagen zur geforderten Stelle bewegt. Und damit arbeitet er intern genauso wie ein XY-Schreiber.
Soll ein Plot erstellt werden, dann gestaltet sich das in der Regel nicht schwer. Es gibt gute Software, die es ermöglicht, Vektorgrafiken zu erstellen und diese in die HPGL-Syntax umzuwandeln. Dabei zu beachten ist im Prinzip nur die Plotterauflösung.

Ein XY-Schreiber hat eine andere Aufgabe. Er zeichnet in der Regel Werteverläufe und keine Grafiken. Daher auch der Name "Schreiber".
In der Regel verarbeitet ein solches auch Koordinatenschreiber genanntes Gerät Eingangsspannungen und wandelt diese in Bewegungen des Schreibwagens um. Dabei werden für die x- und y-Koordinate unabhängig Spannungen dem XY-Schreiber zugeführt.
Der Endim 622.01 ermöglicht die individuelle Einrichtung eines Koordinatensystems durch die Festlegung des Nullpunktes. In aller Regel wird der Nullpunkt (wie in der Schule gelernt) unten, links liegen. Durch Regelelemente kann eingestellt werden, welche Spannung notwendig ist, um den Schreibwagen einen bestimmten Weg fahren zu lassen. So kann zum Beispiel festgelegt werden, daß 10 mV notwendig sind, um eine Bewegung von einem Zentimeter auszuführen. Demzufolge entsprächen 100 mV zehn Zentimeter. Soll nun der Schreibwagen wieder einen Zentimeter zurückfahren, wird einfach eine Spannung von 90 mV angelegt.
Somit ist bekannt, welche Spannungen angelegt werden müssen, damit eine bestimmte Bewegung ausgeführt wird.
Mit diesen Daten kann nun ein Algorithmus entwickelt werden, um gemessene Werte als Werteverläufe, also als Graphen, durch den XY-Schreiber darstellen zu lassen. Für jeden Anwendungsfall gibt es einen anderen Algorithmus. Letztendlich ist das Ergebnis immer das Gleiche: Für jeden darzustellenden Wert müssen zwei Spannungen berechnet werden.

Wie kommen jedoch die berechneten Spannungswerte zum Koordinatenschreiber?
Dazu wird das Modul M029 (DAU) verwendet. Dieser sogenannte Digital-Analog-Umsetzer wandelt digitale Eingangsinformationen in analoge Ausgangsinformationen (Spannungen) um. Das M029 hat eine Auflösung von 10 Bit und einen möglichen Ausgangsspannungsbereich von +-5 Volt. Damit ist eine Schrittweite von 10 mV möglich. Der Endim 622.01 kann so eingestellt werden, daß eine angelegte Spannung von 100 mV einer Fahrstrecke von einem Zentimeter entspricht. 10 mV entsprechen demnach einem Millimeter. Dies ist eine hinreichend genaue und feine Einteilung und ermöglicht zum Beispiel das Darstellen einer Sinuskurve.
Im Handbuch zum DAU-Modul ist beschrieben, wie die Berechnung der Werte zu erfolgen hat. Die Problematik dabei ist, aufgrund der Verwendung des JKCEMU-Basic-Compilers, die Umwandlung der Gleitkommaarithmetik in Ganzzahlarithmetik. Da es sich aber um spezifische Gleichungen handelt, ist dies leicht möglich und die neuen Gleichungen liefern das gleiche Ergebnis, und werden vom KC sehr schnell abgearbeitet.

Um den Koordinatenschreiber einer sinnvollen Anwendung zuzuführen lag es nahe, ihn die gemessenen Werte der I²C-Geräte schreiben zu lassen. Daher wurde das I²C-Steuerprogramm in einer Variante weiterentwickelt, welche den Endim integriert.

Um die Leistungsfähigkeit des Endim 622.01 zu demonstrieren, wurde eigens ein Demonstrationsprogramm entwickelt. Damit wird das Schreiben einer Sinuskurve umgesetzt. Um das Ganze etwas "aufzulockern", erhält der Koordinatenschreiber seine Spannungswerte letztendlich von einer MS-Excel-Anwendung, welche auf einem PC läuft.
Die Berechnung der Sinuskurve wäre mit einem Basic-Programm des JKCEMU-Compilers nicht möglich. Für MS-Excel ist dies natürlich ein Standardanwendungsfall. Der PC und der KC sind über die serielle Schnittstelle RS232 verbunden. Visual-Basic für Anwendungen (VBA) erlaubt den direkten Zugriff auf die serielle Schnittstelle. Auf dem KC läuft ein Programm, welches Spannungswerte vom PC erwartet. Es "horcht" dazu auf dem zweiten Kanal eines M003. Auf dem PC läuft das VBA-Programm. Dieses berechnet zunächst die Sinuskurve und daraus die entsprechenden Spannungswerte für den Endim. Diese Werte werden an das M003 übertragen und vom KC-Programm weiterverarbeitet, welches an das M029 die notwendigen Registerangaben zum Schreiben der Kurve übermittelt.
Während des Programmablaufs wird parallel auf dem PC, dem KC und dem Endim 622.01 die Sinuskurve gezeichnet bzw. geschrieben.

Für mich war die Entwicklung dieser kleinen Demonstration ein beeindruckendes Erlebnis, hatte ich doch vor einigen Wochen nie im Traum daran gedacht, daß ein Produkt aus der DDR auf "Befehle" einer Software aus den USA "hört".
Sehen Sie hier den Endim in Aktion.

FastErstellt: 06.04.2020 genau vor einem Jahr wurde beim 25. Treffen des KC-Clubs der XY-Schreiber Endim präsentiert. Nachdem ich meinen Arbeitsplatz grundlegend umgestaltet hatte, rückte dieser wieder in den Blickpunkt und ich entschloß mich, das für das M051 entwickelte Programm zur Erfassung der Innenraumtemperatur/-luftfeuchtigkeit und des Luftdrucks in seinen drei Varianten (siehe dazu I²C-Programm - Entwicklungsabschluß) wieder zusammenzufassen und gleichzeitig die Integration in meine Bilderschau "SRNSCHAU" zu entfernen. Weiterhin wurde zur textuellen Aufzeichnung der Meßwerte ein Drucker integriert. Prinzipiell kann das ein beliebiger Drucker sein. Es empfiehlt sich aber, einen Drucker zu verwenden, der durch die CAOS-Standardinitialisierung des M003 auf dem Kanal 1 sofort verwendet werden kann.
Das Programm wurde unter strikter Maßgabe der maximalen Größe von 8 KB (weiter-) entwickelt. In der Testphase diente ein M041 zur Verifikation der korrekten Funktionsweise. Nach dem erfolgreichen Abschluß der Tests wurde das Programm auf ein M025 ausgelagert bzw. verlegt. Dieses Modul in gelber Farbe ist auf dem Foto der Gesamtansicht des Endim-Rechnersystems im Schacht 0C des Grundgerätes zu sehen. Um es eindeutig über die Modulsuche identifizieren zu können, wurde dessen Kennbyte auf B7 geändert. Ebenfalls wurden die beiden anderen "Endim"-Module M003 (RS232) und M029 mit farbenfrohen Gehäusen ausgestattet.
Der Aufruf des Programms kann gänzlich ohne Parameter erfolgen. In dem Fall werden die Meßwerte nur auf dem LCD angezeigt. Wird ein optionaler erster Parameter verwendet, kann damit bestimmt werden, ob die Daten vom XY-Schreiber und ggf. zusätzlich vom Drucker aufgezeichnet werden. Bei Angabe des ersten Parameters dient ein zweiter Parameter (ebenfalls optional) zur Festlegung des Aufzeichnungsintervalls, welches standardmäßig 60 Sekunden beträgt.

Damit ist die Entwicklung grundsätzlich abgeschlossen, was jedoch nicht bedeutet, daß es nicht zu einer späteren Fortführung kommt.

M001 - Digital IN/OUT

Ein weiteres Modul, welches nun nicht mehr nur zur Zierde vorhanden ist, ist das M001 (Digital IN/OUT). Die Hauptmerkmale dieses Moduls sind ein CTC- und ein PIO-Schaltkreis und des weiteren die nach außen geführten Anschlüsse des PIO auf einen Direktsteckverbinder. Damit ist es ideal geeignet, interrupt-gesteuert Daten zu verarbeiten und an eine Peripherie weiterzugeben.
Das M001 wird jedoch schon länger genutzt und zwar im Zusammenspiel mit dem M051 und der Ansteuerung der I²C-Geräte (siehe dazu auch das Kapitel "I²C-Geräte am M051").

Nun hat ein zweites M001 seine Arbeit aufgenommen und dient der Ansteuerung einer neuen Spielerei: Einer 4-stelligen 7-Segmentanzeige. Diese kann universell eingesetzt werden. Zum Beispiel zur Darstellung der Uhrzeit oder einer 4-stelligen Zahl. Letzteres findet seine Verwendung beim Einsatz des hier beschriebenen x/y-Schreibers.
Das Anzeigemodul und dessen Steuerlogik wurden in der "Fädeldrahttechnologie" aufgebaut (zwei Fotos zeigen diesen Aufbau). Das kleine Modul besteht aus vier Anzeigen, vier CMOS-IC 4511, einigen SMD-Widerständen und einem sogenannten Edge-Connector, mit dem es in den nach außen geführten Anschluß des M001 gesteckt wird.

Da es mittlerweile zur Tradition gehört, praktisch genutzte Module zu individualisieren, wurden für das Anzeigemodul und das M001 Gehäuse in 3D-Druck angefertigt. Die Blende wurde wieder einmal freundlicherweise von Maik Trompter gefertigt, wofür ich ihm nicht genug danken kann. Die Farbe ist dieses Mal olivgrün.
Das 3D-Modell für das Gehäuse des Anzeigemoduls wurde mit größter Sorgfalt und Genauigkeit entwickelt. Es paßt exakt.

Für die Verwendung als Uhrzeitanzeige wird die RTC der D008 herangezogen. Dazu ist zunächst der Start des Betriebssystems ML-DOS (ein CP/M-Klon) notwendig. Wird dieses System mit dem Programm "DEP" verlassen, dann wird die Uhrzeit in den Koppel-RAM gelinkt und kann unter CAOS ausgelesen werden. Noch komfortabler wird das Ganze, wenn "DEP" mit einem Parameter aufgerufen wird, welcher den Namen einer ausführbaren KCC-Datei beinhaltet. Durch die KCC-Datei wird die Initialisierung der Anzeigeroutine gestartet. Diese wiederum installiert im System die ISR (Interrupt-Service-Routine) unter Verwendung des M001. Die ISR letztendlich ermittelt zyklisch die Uhrzeit und gibt sie nach entsprechender Wertekodierung über den PIO des M001 an das Anzeigemodul aus.
In diesem Video können Sie den Start der Anzeigeroutine beobachten.

M366-MP3/WAV
M366 - MP3/WAV
M004-Weather
M004 - Weather
SRNSCHAU
Kein schöner Land
M066-KLANG
M066 - KLANG
M041-2x16 KB EEPROM
M041 - EEPROM
ENDIM622
XY-Schreiber Endim
K 6304
Drucker K 6304
M030-Eprommer
M030 - Eprommer
CF-Kartenleser
CF-Kartenleser
M051-Scanner
M051 - Scanner