"DLE-Schnittstellensteuerung_DLEFormat" wird gedruckt

HRDT99/ADI99
Spezifikation der DLE-Softwareschnittstelle
und
Programmdokumentation
Einführung
Die DLE-Softwareschnittstelle gibt dem Benutzer die Möglichkeit, die am
häufigsten benötigten Parameter der HDRT99/ADI99 direkt über einen PC
steuerbar zu machen. Dabei können bis zu 15 HRDT99/ADI99-Karten durch
einen PC kontrolliert werden. Durch die folgende Beschreibung des
Protokolls ist es dem Anwender zusätzlich möglich, diese Steuerfunktion in
eigene Programme einzubetten. Alles was dazu benötigt wird, ist eine freie
RS232-Schnittstelle an einem PC.
Das Protokoll
Das Protokoll basiert auf einer Blockstruktur mit Rahmen und den nach ASCII
normierten Zeichen DLE, STX und ETX. Mittels dieser drei Zeichen werden die
einzelnen Datenblöcke eingerahmt und damit gegeneinander abgegrenzt.
Zeichen
Wertigkeit
DLE (Data Link Escape) 16
STX (Start of Text)
ETX (End of Text)
2
3
Bedeutung
Gibt dem folgenden Zeichen eine
Sonderfunktion
Zeigt den Beginn eines Datenblocks an
Zeigt das Ende eines Datenblocks an
Aufbau eines Rahmens
Um zu verhindern, daß eine dieser beiden speziellen Datenkombinationen
innerhalb des Datenblocks auftreten und damit das Protokoll verletzen, ist
folgende Maßnahme erforderlich:
Soll das Datenbyte DLE innerhalb eines Datenblocks übertragen werden,
muß es doppelt gesendet werden. Zusammenfassung:
Datenkombination
<DLE> <STX>
<DLE> <ETX>
<DLE> <DLE>
Bedeutung
Rahmenbeginn
Rahmenende
Datenbyte 16 übertragen
Aufbau eines Datenblocks
Der übertragene Datenblock selbst hat wiederum eine Struktur. Die Elemente
dieser Struktur sind
die Datenrichtung (Schreiben oder Lesen),
eine Kartenadresse,
ein Kommandozeichen,
ggf. Parameter,
und eine Prüfsumme, die über alle Bytes des Datenblocks gebildet und
am Ende des Datenblocks (aber noch vor der Rahmenenderkennung)
übertragen wird.
6 6 6
Die folgende Abbildung zeigt schematisch den Aufbau des Datenblocks,
den ein PC an die HRDT99/ADI99 überträgt. Das Antwortformat der
HRDT99/ADI99 unterscheidet sich davon leicht und wird später erläutert.
Jeder Datenblock beginnt mit einem Byte aus der Kombination
Kartennummer und Datenrichtung.
Die Kartennummer kann durch die vier Bits die Werte 0...15 annehmen und
damit bis zu 16 HRDT99/ADI99-Karten adressieren.
Die Bits 4 bis 6 legen die Datenrichtung fest. Zu beachten ist, daß immer nur
eines dieser drei Bits gesetzt sein darf. Andere Kombinationen führen zu einer
Fehlermeldung seitens der HRDT99/ADI99. Bit 7 ist reserviert und muß immer
den Wert 0 besitzen.
Das zweite Zeichen jedes Blocks ist das Kommando. Dazu folgt im späteren
Verlauf eine Tabelle mit der Gesamtübersicht aller Kommandos.
Erfordert das Kommando Parameter, folgt ihm ein Anzahl-Zeichen, welches
die Größe des Parameters gerechnet in Bytes wiedergibt. Die dem
Parameter folgende Prüfsumme ist nicht Bestandteil des Parameters.
Ein Beispiel: Das Kommando 4 erfordert eine 16 Bit-Zahl als Parameter. Es wird
absolut geschrieben und an die HRDT99/ADI99-Kartennummer 1 übertragen.
Als Parameter wird 1024 übertragen.
Relatives Ändern einer Einstellung
Während beim absoluten Schreiben der Wert oder die Einstellung in der
HRDT99/ADI99 gezielt verändert werden kann, wird beim relativen Schreiben
nur eine Änderung vorgenommen. In diesem Fall entscheidet die Firmware in
der HDRT99/ADI99 was bei jedem eingehenden Kommando geschieht. Das
Format der relativen Änderung ist fest und wie folgt definiert. Im Beispiel wird
eine HRDT99/ADI99 mit der Kartennumer 1 angesprochen.
Berechnung der Prüfsumme
Die Prüfsumme wird über alle übertragenen Zeichen des Datenblocks
gebildet und an den Datenblock angehängt. Sie wird über eine einfache
8Bit Summenbildung errechnet, bei der keine Überträge berücksichtigt
werden. Wird innerhalb des Datenblocks das Zeichen 16 (DLE) übertragen,
wird es, um das Protokoll nicht zu verletzen, zweimal gesendet. In der
Prüfsumme wird es aber nur einmal berücksichtigt! Ist das Ergebnis der
Prüfsummenbildung 16 (DLE), wird auch die Prüfsumme zweimal übertragen,
um das Protokoll zu erfüllen!
Um das Protokoll nicht unnötig lang zu machen, ist es möglich den
Parameter abzukürzen. Auch wenn das Kommando eine 32 Bit-Zahl
verarbeiten kann, der zu übertragene Wert jedoch in ein Zeichen paßt
(beispielsweise 132), genügt es, ausschließlich dieses eine Zeichen zu
übertragen. Die HRDT99/ADI99 erkennt anhand der „Anzahl Parameterbytes"
die tatsächliche Länge des Parameters und erzeugt durch Auffüllen mit 0-Bits
intern für die benötigte Parameterlänge. Im hier geschilderten Fall eine 32
Bit-Zahl mit dem Wert 132.
Achtung: Alle Zahlenwerte müssen in der sog. Motorola-Notation übertragen
werden. D.h. das höchstwertige Byte muß als erstes, das niederwertigste als
letztes übertragen werden.
Antworten der HRDT99/ADI99
Die Antworten der HDRT99/ADI99 haben den gleichen Aufbau wie die
Kommandos. Um einen Datenblock befindet sich ein Rahmen, über den die
einzelnen Antworten abgegrenzt werden können. Der Datenblock einer
Antwort hat zwei Formate:
-> reine Bestätigung
-> Datenantwort
Beiden Formaten gemein ist das erste Zeichen im Datenblock, welches eine
Zuordnung zu der antwortenden Karte ermöglicht, da es sich um deren
Kartenadresse handelt.
Eine reine Bestätigung erfolgt bei allen schreibenden Kommandos. Wobei es
auch möglich ist, daß eine Bestätigung eine Fehlermeldung darstellt,
beispielsweise weil das Kommando nicht unterstützt wird oder der Parameter
seine erlaubten Grenzen verlassen hat.
Zwei nach ASCII definierte Zeichen werden für die Bestätigung verwendet
Zeichen
ACK (Acknowledge)
NAK (No Acknowledge)
Wertigkeit
6
21
Die übertragenen Zeichen:
Bedeutung
Zeigt eine positive Antwort an
Zeigt eine negative Antwort an
War das zuvor übertragene Kommando eine Leseanfrage, so antwortet die
Karte mit einer Datenantwort. Auch hier ist das erste Zeichen des
Datenblocks die Kartenadresse der antwortenden HRDT99/ADI99. Das zweite
Zeichen gibt die Anzahl der nun folgenden Parameterbytes an. Es folgen die
abgefragten Parameter, abschließend die Prüfsumme.
Beispiel: Es wurde ein Parameter mit dem Wert 1025 von der HRDT99/ADI99
Nummer 1 abgefragt. Die Antwort dieser Karte hat dann folgenden Inhalt:
Achtung: Werden Zahlenwerte als Antwort übertragen, wird auch hier das
höchstwertige Datenbyte zuerst übertragen (Motorola-Notation).