Diplomarbeit
Entstehung
Inhalt
Abkürzungen
Einleitung
Recherche
Konzept
Umgebung
Hardware
Software
Funktionsweise
Zusammenfassung
Anhang
Überblick
MUX-Programm
Dienstroutinen
Datalogic
Mitutoyo
Digitrix
Weiterverarbeitung
Software: Mitutoyo Routine

6.7.3 Die Mitutoyo-Digimatic-Routine

6.7.3.1 Mitutoyo: erforderliche Interfacekonfiguration

Für Mitutoyo-Meßmittel muss nur wenig eingestellt werden. Der Massejumper J38 für den Optokoppler auf der Platine muss gesteckt sein, da sonst der Optokoppler die Request-Leitung des Mitutoyo-Meßmittels nicht auf Masse ziehen kann. Weiterhin muss die Triggerschwelle für die Eingangskanäle 1 und 2 mit demnäher am MAX232 (IC1) liegenden T-Jumper J21 auf +1.4V eingestellt werden. Sämtliche anderen Jumper des Interfaces sind für Mitutoyo nicht von Bedeutung und sollten auf die in 7.3 beschriebenen Standard-Werte voreingestellt werden.


6.7.3.2 Mitutoyo: Implementiertes Datenformat

Es werden 13 Digits (Ziffern) zu je 4 Bit als Bit-Serie, beginnend bei 2 vom ersten Digit (d1) bis 2 vom letzten Digit (d13) vom Interface erwartet. Die Bedeutung der einzelnen Digits wird der Vollständigkeit halber hier noch einmal in der untenstehenden Grafik erläutert:

Mitutoyo Datenformat

Abb. 28: Das Mitutoyo-Datenformat

6.7.3.3 Mitutoyo: Algorithmus

Wenn Mitutoyo-Meßmittel-Lese-Routine gestartet wird, so werden als erstes die Speicherbereiche für die Meßdaten (direkt vom Meßmittel empfangen) und Sendedaten (umgewandelte und aufbereitete Meßdaten) gelöscht. Anschliessend wird der Optokoppler auf der Platine eingeschaltet, der dadurch die Request-Leitung auf "Low" zieht und damit die Meßdaten vom Meßmittel anfordert. Nun wird der Timer gestartet, damit nach zwei Sekunden vergeblichen Wartens die Pollingschleife für die Taktleitung abgebrochen wird. In P_ERROR wird eine 1 eingetragen, um anzuzeigen, dass, falls ein Fehler auftreten sollte, dieser beim ersten Digit auftrat. Nun wird eine Schleife 13 mal durchlaufen, in der jeweils ein Digit gelesen und weggespeichert wird, der Schleifenzähler dekrementiert und P_ERROR inkrementiert wird. Ist der Schleifenzähler = 0, so wurde die korrekte Anzahl von Digits gelesen. 

In der Routine, in der die einzelnen Digits eingelesen werden, wird eine Schleife viermal durchlaufen, welche jedesmal ein Bit einliest und abspeichert. Dazu wird zuerst auf einen "High"-Pegel auf der Taktleitung gewartet. Wird dieser festgestellt, so wird auf einen "Low"-Pegel gewartet. Während dieser Warteschleifen wird laufend der Timeout-Zähler COUNT überprüft, ob die voreingestellte Timeout-Zeit schon verstrichen ist und im Fehlerfalle dies wie schon erwähnt angezeigt.

Unmittelbar nach der fallenden Flanke wird der Zustand auf der Datenleitung abgefragt. Ist sie ="1", so wird das Carry-Flag im Statusregister des Prozessors gesetzt, ist sie ="0", so wird es gelöscht. Das vereinfacht die seriell-parallel-Wandlung der Daten, da es mit dem Befehl ROR (Rotiere rechts) einfach möglich ist, serielle Werte nacheinander über das Carry-Flag in eine Speicherzelle zu schreiben. Dabei wandern alle Bits in der betreffenden Speicherstelle um einen Platz nach rechts (zu niedrigeren Wertigkeiten), das LSB wird "herausgeschoben" und geht in das Carry-Flag, während der Inhalt des Carry-Flags als MSB in das rotierende Speicher-Byte eingesetzt wird. Wenn nun das Speicher-Byte vorher gelöscht war, so befindet sich nach dem viermaligen Durchlaufen dieser Schleife in den Bits 0 (LSB) bis Bit 3 einschliesslich Nullen, in Bit 4 ist das erste Datenbit, in Bit 5 das zweite, in Bit 6 das dritte und in Bit 7 (MSB) das vierte und letzte Datenbit. Auf diese Weise werden alle 13 Digits eingelesen und im RAM-Bereich mit dem Namen MESSDTA (Meßmitteldaten) abgelegt.

Nachdem die Daten vollständig empfangen wurden, wird der Timer gestoppt und der Optokoppler ausgeschaltet, so dass die Datenanforderung zurückgenommen wird. Anschliessend werden die 6 Datendigits und das Digit, welches die Lage des Dezimalpunktes angibt, um jeweils vier Bit nach rechts geschoben, damit das LSB der Daten auch wirklich in Bit 0 des Speicherbytes, in dem es abgelegt wurde, steht. Diese Speicheroperationen spielten sich nur im Meßmittel-daten-RAM ab. Nun werden die Sendedaten vorbereitet.

Zuerst kommt die Zeichenkette "00A" an den Anfang des Sende-RAMs, welche als Brankamp-interne Kennung für Meßmitteldaten verwandt wird. Nun wird die Vorzeichenstelle im Meßdaten-RAM geprüft und, wenn dort eine 0 steht, ein ASCII-Zeichen "+", sonst ein "-" in den Sendedatenspeicher an die Kennung angehängt. Dann werden alle 6 Datendigits aus dem Meßdaten-RAM in das Sendedaten-RAM kopiert und zu deren Wert dezimal 32 dazuaddiert, um die BCD-Daten in ASCII-Zeichen zu wandeln (BCD 0 = ASCII 32).

Jetzt wird das die Anzahl der Nachkommastellen beschreibende Digit als Schleifenzähler für eine Schleife verwendet, welche nacheinander die ASCII-Digits vom Ende der Meßdaten im Sende-RAM beginnend um eine Stelle nach rechts byteweise weiterschiebt. Wenn diese Schleife so oft durchlaufen wurde, wie das Digit vorgab, so ist genau an der Stelle zwischen den Meßdaten-Digits (Im Sende-RAM), wo der Dezimalpunkt richtig eingesetzt werden muss, eine Lücke entstanden, welche nur noch mit eine Dezimalpunkt-Zeichen (ASCII $2E) gefüllt werden muss.

Zum Abschluss der Meßdaten im Sende-RAM wird am Ende der Daten ein CR (ASCII $0D) angehängt, um für nachfolgende Programmteile das Ende der Daten anzuzeigen.

6.7.3.4 Mitutoyo: Fehlerbehandlung, Fehlercodes

Als Fehlercode ist nur ein Timeout-Fehler mit zwei Sekunden nach Anforderung der Daten implementiert. Es wird geprüft, ob innerhalb von zwei Sekunden alle 52 Taktimpulse (13 Digits mit je 4 Bits) auflaufen. Der Fehlercode entspricht dem Digit, bei dem der Fehler auftrat. Wurde z.B. die Verbindung zwischen dem Meßmittel und dem Interface bei der Übertragung des 5. Digits aufgetrennt, so wird nach zwei Sekunden ab Datenanforderung der Fehlercode 5 erzeugt und über ERRBLNK angezeigt (sofern die LED-Monitorplatine gesteckt ist).

Übersicht schafft das Ablaufdiagramm:

Ablauf Mitutoyo

Abb. 29: Ablaufdiagramm der Mitutoyo-Lese-Routine

6.7.3.5 Mitutoyo: Erforderliches Kabel, Pinbelegungen:

Es wird das Kabel vom alten Multiplexer 1080 weiterverwendet und ein neues, hier beschriebenes Kabel zusätzlich angesteckt. Am Meßmittel wird ein 8-poliger DIN-Stecker verwendet, am Meßmittelinterface kommt ein 25-poliger Sub-D-Stecker zum Einsatz.

Mitutoyo Stecker

Kabel

25pol. Sub-D Stecker Interface

Pin 1 GND

weiss

GND Pin 13

Pin 6 Daten

grün

Daten Pin 21 Input 1 am Interface

Pin 7 Clock

rot

Clock Pin 20 Input 2 am Interface

Pin 8 Request

blau

Request Pin 3 Opto open Collector


© 2001 Marcel Sieling, http://www.powerslider.de
   Ich freue mich immer über nette EMails, die ich gerne beantworte.