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.
Unter [ URLScp]
ist eine Beschreibung der Telegrammprotokolle zu finden.
Die elektrische
Schnittstelle ist wahlweise implementiert nach EIA RS-422A oder EIA
RS-232.
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.
Für die Kommunikation gelten folgende grundsätzliche Bedingungen:
- Der Host ist Master der Kommunikation.
- Eine Anforderung des Hosts unterbricht jede Übertragung des Sensors.
- Ein Kommunikationsabschnitt beginnt immer mit einem Kommando des Hosts
an den Sensor. Der Sensor beginnt nie von sich aus eine Übertragung.
- Ein Software-Handshake erfolgt dadurch, daß der Sensor bei Empfang
einer übertragungstechnisch (bzgl. Checksumme) korrekten Anforderung
mit ACK (06h) antwortet, bei Detektion eines Fehlers hingegen mit NAK
(15h).
Tabelle:
Telegrammaufbau - Erläuterungen
Bezeichnung |
Datenbreite [Byte] |
Erläuterungen |
STX |
1 |
Startbyte (02h) |
ADDR |
1 |
Host Sensor: |
|
|
Sensoradresse: |
|
|
0:Universaladresse |
|
|
1...255: sensorspezifische Adresse |
|
|
Sensor 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 ( CMD) |
CRC |
2 |
CRC-16 über das gesamte Telegramm; Lower Byte zuerst |
|
Zur Datensicherung findet eine geschwindigkeitsoptimierte Variante der
CRC-16 Verwendung, mit dem Generatorpolynom
|
(8.1) |
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 und
berechnet, wie in der folgenden Abbildung dargestellt.
Abbildung A.1:
Rechteckige 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].
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 ( 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 ( Modus 02h) |
|
12h |
Moduswechsel nicht möglich, da falsches Paßwort |
|
13h |
Moduswechsel nicht möglich, da aktives Schutzfeld nicht
rechteckig ( 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 ( Übertragungsmodus 02h) |
Aktiver Überwachungsbereich unsigned char |
00h |
Überwachungsbereich 0 aktiv |
|
01h |
Überwachungsbereich 1 aktiv |
Anzahl der Meßwerte unsigned int |
|
Anforderung Meßwerte
Ü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 |
|
Nächste Seite: Universal Serial Bus
Aufwärts: report
Vorherige Seite: Zusammenfassung und Ausblick
  Inhalt