next up previous contents
Nächste Seite: Universal Serial Bus Aufwärts: report Vorherige Seite: Zusammenfassung und Ausblick   Inhalt

Unterabschnitte


Laserscanner


Für die Mitarbeit an dem vorliegenden Kapitel danken wir Adriana Arghir.

Im folgenden werden weitere Details des dieser Arbeit zugrunde liegenden Schmersal Laserscanners wie technische Daten, interne verwendete Algorithmen sowie eine Beschreibung der Protokolle und relevanten Funktions-Schnittstellen.

Elektrische Schnittstelle

Unter [ URLScp] ist eine Beschreibung der Telegrammprotokolle zu finden.

Die elektrische Schnittstelle ist wahlweise implementiert nach EIA RS-422A oder EIA RS-232.

Übertragungs- und Datenformat

Die Kommunikation erfolgt über die asynchrone serielle Schnittstelle des Sensors. Einstellbar sind folgende Übertragungsraten:


        9600 Baud        (Auslieferungszustand)
        19200 Baud         
        38400 Baud         
        57600 Baud         
        125000 Baud         
        208333 Baud         
        312500 Baud         


Ein Datenbyte wird in folgendem Rahmen übertragen:

Tabelle: Datenbyte-Übertragung
Start D0 D1 D2 D3 D4 D5 D6 D7 Stop  
Bit (LSB)               Bit  



Tabelle A.2: Telegrammaufbau
STX ADDR LENL LENH CMD DATA1 1/4 DATAn CRCL CRCH


Der Telegrammaufbau benötigt folgende Erläuterungen, die in Tabelle A.3 zusammengefaßt werden.

Bedingungen

Für die Kommunikation gelten folgende grundsätzliche Bedingungen:


Tabelle: Telegrammaufbau - Erläuterungen
Bezeichnung Datenbreite [Byte] Erläuterungen
STX 1 Startbyte (02h)
ADDR 1 Host $ \to$ Sensor:
    Sensoradresse:
    0:Universaladresse
    1...255: sensorspezifische Adresse
    Sensor $ \to$ Host:
    Sensoradresse + 80h
LEN 2 Länge der Nutzdaten [Byte], d.h CMD und DATAx; Lower Byte zuerst
CMD 1 Kommandobyte (Telegrammnummer)
DATA1-DATAn n optionale Datenbytes ($ \to$ CMD)
CRC 2 CRC-16 über das gesamte Telegramm; Lower Byte zuerst


Berechnung der CRC-16

Zur Datensicherung findet eine geschwindigkeitsoptimierte Variante der CRC-16 Verwendung, mit dem Generatorpolynom

$\displaystyle x^{16} + x^{15} + x^{2} + 1.$ (8.1)

Expansionsalgorithmus

Das Telegramm zur Konfiguration des Schutzfeldes enthält u.a. einen Parameter, der ,,XOR-Checksumme über die expandierten Schutzfelddaten`` genannt wird. Dabei handelt es sich um einen Zusatzparameter zur Datensicherung der nach einem bestimmten Algorithmus errechnet wird.

Bei der Eingabe als Rechteck werden zwei Grenzwinkel $ \alpha$ und $ \beta$ berechnet, wie in der folgenden Abbildung dargestellt.

Abbildung A.1: Rechteckige Interpolation
\scalebox {.5}{\includegraphics{interpolation}}

Bei der segmentierten Eingabe wird aus zwei benachbarten Radien zu Segmenteckpunkten die Differenz D berechnet. Durch Division von D durch die Anzahl der im Segment befindlichen Strahlen des expandierten Rasters wird ein Mittelwert des Radiuszuwachses pro Strahl ermittelt. Das Resultat ist eine kreisbogenähnliche Interpolation anstelle einer linearen.

Eine genaue Beschreibung des Algorithmus befindet sich unter [ URLScp].

Beschreibung der Telegramme

Eine genaue Beschreibung der Telegramme befindet sich unter [ URLScp].

Von den über 50 zur Verfügung stehenden Telegrammpaare (Frage, Antwort) wurden die im folgenden beschriebenen Telegramme für die Implementierung benötigt.


Tabelle: Anforderung Meßwerte
Telegrammnummer   30h (TGM_REQ_MSRMNT)
Funktionsbezeichner   SndReqMsrmnt(), SndReqMsrmntSeg()
Parameter    
Übertragungsmodus unsigned char 00h Minimalen Meßwert pro Segment senden ($ \to$ Anzahl der Segmente)
  01h Alle 501 Meßwerte eines Scans senden
  02h Minimalen senkrechten Abstand senden. Nur bei rechteckigem Schutzfeld
  03h Eingelernte daten senden, 501 Meßwerte
  04h Verifikationsdaten senden, 501 Meßwerte
Anzahl der Segmente unsigned int   Gültige Werte: 10, 20, 25, 50, 100, 125, 250, 500
Beschreibung   Es wird festgelegt, in welcher Form der Sensor die Meßwerte an den Host übermittelt



Tabelle A.5: Software Reset
Telegrammnummer   10h (TGM_RST)
Funktionsbezeichner   SndRst()
Parameter   keine
Beschreibung   Software Reset des Sensors. Der Sensor durchläuft eine Initialisierungsroutine wie nach einem Hardwarereset, die konfigurierten Warn- und Schutzfelder bleiben jedoch erhalten. Der Fehlerspeicher wird gelöscht



Tabelle: Betriebsmodus wählen
Telegrammnummer   20h (TGM_SEL_OP_MODE)
Funktionsbezeichner   SndSelOpMode(), SndSelOpModePass()
Parameter    
Modus unsigned char 00h Konfiguration der Überwachungsbereiche und Parametrierung (nur mit Einrichter-Paßwort)
  01h Abgleich (nur mit Superuser-Paßwort)
  02h Rücksetzen auf das Auslieferungspaßwort (benötigt Init-Paßwort). Nur im Diagnosemodus
  10h Diagnose
  20h Überwachen. Minimale Meßwerte pro Segment werden kontinuierlich ausgegeben



Tabelle: Antwort Betriebsmodus wählen
Telegrammnummer   A0h (TGM_RPLY_SEL_OP_MODE)
Funktionsbezeichner   RcvRplySelOpMode()
Parameter    
Status 00h Moduswechsel erfolgreich durchgeführt
unsigned char 10h Verarbeitung nicht möglich, da falscher Betriebsmodus ($ \to$ Modus 02h)
  12h Moduswechsel nicht möglich, da falsches Paßwort
  13h Moduswechsel nicht möglich, da aktives Schutzfeld nicht rechteckig ($ \to$ Modi 22h u. 23h)
  80h Moduswechsel nicht möglich, da Fehler im Sensor
Beschreibung   Der Status gibt an, ob der Betriebsmoduswechsel durchgeführt werden konnte



Tabelle A.8: Definition Baudrate
Telegrammnummer   66h (TGM_DEF_BR)
Funktionsbezeichner   SndDefBr()
Parameter    
Baudrate 00h 9600 Baud
unsigned char 01h 19200 Baud
  02h 38400 Baud
  03h 57600 Baud
  04h 125000 Baud
  05h 208333 Baud
  06h 312500 Baud
Beschreibung   Sensoreinstellung der Übertragungsrate für die Hostkommunikation (temporär)



Tabelle A.9: Antwort Definition Baudrate
Telegrammnummer   E6h (TGM_RPLY_BR)
Funktionsbezeichner   RcvRplyBr()
Parameter    
Status 00h Einstellung akzeptiert
unsigned char 81h Interner Fehler (Verarbeitung)
Beschreibung   Der Status gibt an, ob die gewählte Einstellung übernommen wurde



Tabelle: Antwort Anforderung Meßwerte
Telegrammnummer   B0h (TGM_SPLY_MSRMNT)
Funktionsbezeichner   RcvSplyMsrmnt()
Parameter    
Status 00h Meßwerte werden geliefert
unsigned char 13h Meßwerte können nicht geliefert werden, da kein rechteckiges Schutzfeld ($ \to$ Übertragungsmodus 02h)
Aktiver Überwachungsbereich unsigned char 00h Überwachungsbereich 0 aktiv
  01h Überwachungsbereich 1 aktiv
Anzahl der Meßwerte unsigned int   $ \to$ Anforderung Meßwerte $ \to$ Übertragungsmodus
Meßwerte unsigned int[]   Scan:
    Bits 0...12:Gemessener Entfernungswert [cm]
    Bit 13:Gültigkeit (z.B. Blendung)
    Bit 14:Gesetzt, wenn im aktuellen Scan in diesem Meßpunkt das aktive Warnfeld verletzt wurde
    Bit 15:Gesetzt, wenn im aktuellen Scan in diesem Meßpunkt das aktive Schutzfeld verletzt wurde
    Verifikation:
    Bit 14:Gesetzt, wenn das Schutzfeld in diesem Punkt verifiziert (=verletzt) ist.
Beschreibung   Die Meßwerte eines Scans werden an den Host übergeben. Jedem Meßwert sind außerdem Statusflags zugeordnet, die ggf. Blendung und Schutz- bzw. Warnfeldverletzungen anzeigen



Tabelle: Bestätigung Software Reset
Telegrammnummer   90h (TGM_RST_ACK)
Funktionsbezeichner   RcvRstAck()
Parameter   keine
Beschreibung   Der Sensor bestätigt das Kommando für den Software Reset und führt ihn durch



next up previous contents
Nächste Seite: Universal Serial Bus Aufwärts: report Vorherige Seite: Zusammenfassung und Ausblick   Inhalt