Deusch/German  Deutsch

English/Englisch  English

YADRO-Logo

Home

Was ist neu?

Was ist das?

YADRO benutzen

Im Detail

Downloads

Wo kaufen?

Newsletter

Links

Impressum

Software DRO:ddisp zur Digitalanzeige im Detail

Normalerweise muss man diesen Teil nicht lesen. Er existiert mehr oder weniger nur als Referenz oder für diejenigen, die sich für die Funktion interessieren oder sich eigene Macros schreiben wollen.

DRO:ddisp ist mehr ein Automat als ein klassiches "festverdrahtetes" Programm das nur eine Aufgabe erfüllen kann. Bei der Planung der Digitalanzeige wurde schnell klar, dass sich nicht alle Anforderungen vorhersehen lassen können. Der offensichtliche und sehr interessante (für mich) Lösungsansatz war, einen Anzeige-Automaten und eine eigene Programmiersprache zu schreiben die das Bindeglied zwischen den Messleisten-Werten und der Anzeige bzw. dem Verhalten der Anzeige ist.

Die DOS-Seite (oder "client-side") der Digitalanzeige besteht hauptsächlich aus folgenden Teilen:

Die Lösung verfolgt (nicht strikt) das MVC-Konzept (Model View Container).

Übersicht:

Wie gesagt, hat DRO:ddisp eine eigene Programmiersprache. Diese Sprache ist etwas an C angelehnt. Ich nenne sie YPL (für YADRO Programming Language oder Yet Another Digital Readout Programming Language). Der Code der die Anzeige treibt, besteht aus einigen Codeteilen oder Macros die zusammenarbeiten. Es gibt einen großen Variablen "Haufen" auf den jedes Codestück zugreifen kann. Es gibt einige spezielle Funktionen die mit der Anzeige zusammenarbeiten. Die Anzeige selbst ist reichlich dumm und hat keine Ahnung von Achsenverschiebungen, Skalierungen o.ä.

Hier ist eine Skizze:

Zusammenarbeit der Teile in ddisp

Die Wolke die "var-pool" bezeichnet ist, ist ein Speicher der alle Variablen hält. Jeder Programmteil kann darauf zugreifen und sie modifizieren.
Der Kasten "digital interface" links ist die Digitale Schnittstelle die mit den Meßleisten verbunden ist.
Der Kasten "display" ist das Kernprogramm (YADRO.EXE) das alle Teile zusammenfügt und hauptsächlich alles was mit der Anzeige zusammenhängt erledigt.
Die 3 grauen Kästen MaxX, MacY, MacZ sind spezielle Macros (in Wirklichkeit expressions die keinen Namen haben). Sie verarbeiten die Rohdaten die vom Digitalen Interface kommen.
Der gestrichelte Kasten rechts mit MacA, MacB usw. enthält für den Benutzer direkt zugängliche Makros. Es gibt prinzipielle keine Obergrenze an möglichen Macros. Die Macros Mac1, Mac2, Mac2 usw. sind interne Macros. Sie arbeiten ähnlich Unterprogrammen oder Funktionen. Macros können zusammenarbeiten und steuern hauptsächlich die Anzeige.

In der aktuellen Version ist noch eine Erweiterung, die nicht in der Zeichnung erscheint.
Die Macros MacX, MacY und MacZ können zur Leufzeit erweitert werden. Das geschieht durch Macros die stackartig sich vor und hinter die Anzeige des Anzeigeautomaten hängen können. Diese Macros können so die Anzeigewerte abfangen und modifizieren.

YADRO macht folgendes:

  1. Es stößt das Auslesen aller (angeschlossenen) Meßleisten an. Die gelesenen Daten werden in die Variablen Dev0 … Dev3 gestellt.
  2. Es ruft dann die speziellen Macros MacX … MacZ auf Nochmals: sie haben keinen Namen und sind Ausdrücke (expressions). Sie werden an Achsen gebunden und übernehmen die Skalierung, Transformation etc.
  3. Es stellt dann die umgerechneten Werte (so wie sie am Bildschirm erscheinen) in die Variablen Disp1 … Disp3. Das klingt etwas unnötig, jedoch wird praktisch der Wert von Dev0 immer ungleich dem von Disp1 sein, auch wenn sie mit der gleichen Achse zu tun haben. DvX ist der Rohwert, DispX der Anzeigenwert.
  4. Danach sieht YADRO nach, ob eine Benutzereingabe vorhanden ist. Wenn ja, wird das Macro (oder was angewählt wurde) aus.
  5. Dann geht es wieder mit Schritt 1 weiter.

I

Kommunikation mit DRO:int4

Der Kommunikationsteil von DRO:ddisp übernimmt das Lesen von und Schreiben an DRO:int4. Er liest einfach die Werte vom Interface und wandelt die hexadezimale Darstellung in einen ganzzahligen Wert um. Er wandelt nicht in tatsächliche Werte um. Nachdem es zwei verschiedene Protokolle der Messleisten gibt, muss der Kommunikationsteil diese erkennen (was er auch tut) und sie entsprechend konvertieren. Der Kommunikationsteil behandelt auch Zeitüberschreitungen.

Anzeige-Automat

Oder auch "Display-Engine". Die Display-Engine ist die "glue-logic" oder Schnittstellenlogik die die beiden Teile verbindet. Sie weiß wo Achsen dargestellt werden müssen, weiß wie sie Werte von der Schnittstelle bekommt, weiß wie Tastendrücke zu behandeln sind, weiß wie Benutzeraufgerufene Makros ausgeführt werden und weiß welche Makros ausgeführt werden müssen, um konvertierte und skalierte Werte für die Achsen zu bekommen. Sie weiß aber nicht was eine Fräsmaschine oder Drehbank ist und wie die Werte umgewandelt werden müssen. Das übernehmen die Makros.

Interpreter

Der Interpreter ist der Teil der Macros ausführt die entweder von der "display-engine" oder durch Benutzeranforderung angefordert wurden. Die Sprache ist etwas C-ähnlich. Ich habe versucht die Sprache einfach zu halten und sie enthält nur, was man braucht um damit eine Digitalanzeige zu betrieben. Sollte etwas fahlen, lässt sie sich durchaus erweitern. Das Wort "Interpreter" ruft möglicherweise ein Bild langsamer Programme hervor, was aber falsch ist. Die Macros die häufig aufgerufen werden, lassen sich einfach halten und die Teile die rechenintensiv sind, werden von der "display-engine" übernommen.

Der DRO:ddisp Interpreter führt ca. 100000 Instrukionen pro Sekunde auf einem 3GHz AMD64 aus.