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).
© Copyright 2024 ExpyDoc