Dokumentation TP3-Protokoll für Zähleranwendungen Version: 1120201WBI Art.-Nr. 2 723 115 Seite 1/14
Dokumentation TP3-Protokoll für Zähleranwendungen by HENGSTLER GmbH Für diese Dokumentation beansprucht die Firma HENGSTLER Urheberrechtschutz. Diese Dokumentation darf ohne vorherige schriftliche Zustimmung der Firma HENGSTLER, weder abgeändert, erweitert oder vervielfältigt, oder an Dritte weitergegeben werden. HENGSTLER GmbH Postfach 11 51 78 550 Aldingen Telefon: 0 74 24-89 462 Telefax: 0 74 24-89 275 Ausgabedatum: Sept. 1997 Technische Änderungen und Verbesserungen, die dem Fortschritt unserer Geräte dienen, behalten wir uns vor. Version: 1120201WBI Art.-Nr. 2 723 115 Seite 2/14
Inhaltsverzeichnis: 1 Allgemein... 4 2 Schichten-Festlegung bei TP3... 4 3 Nettodaten... 5 4 Header Schicht 7 (H7)... 6 4.1 Control-Byte...6 4.1.1 Control-Byte im Auftragsdatensatz (Master Zähler)...6 4.1.2 Control-Byte im Antwortdatensatz (Zähler Master)...6 4.2 Quittungsbyte...7 5 Header Schicht 2 (H2)... 7 6 Trailer Schicht 2 (T2)... 8 7 Telegrammformate... 9 8 Buszugriffsverfahren...10 9 Protokollabläufe...10 9.1 Pollzyklus... 10 9.2 Lesen eines Registers... 10 9.3 Schreiben eines Registers... 10 9.4 Beispiele... 11 10 Übersicht der Steuerzeichen...13 11 Fehlerdiagnose...14 Version: 1120201WBI Art.-Nr. 2 723 115 Seite 3/14
1 Allgemein Das Hengstler Terminal-Protokoll 3 (TP3) ist ein ASCII-Protokoll für Master-Slave-Systeme, das speziell für Hengstler Terminalnetzwerke entwickelt wurde. Das Protokoll ist bustauglich. Als physikalisches Medium wird normalerweise RS-485 als durchgeschleifter Bus verwendet, es ist aber auch für Punkt-zu-Punkt-Verbindungen RS-232 geeignet. Das Bussystem besteht aus einem Master (PC oder SPS) und mehreren Slaves (Zähler), wobei für die Konvertierung von RS232 (PC / SPS) zu RS-485 (Zähler) ein geeigneter Konverter (z.b. Remote Terminal Converter RTC) erforderlich ist. In dieser Beschreibung wird nur der Teil des TP3-Protokolls erläutert, der für den Betrieb von Zählern mit TP3 erforderlich ist. 2 Schichten-Festlegung bei TP3 TP3 ist an das ISO/OSI-Basisreferenzmodell angelehnt, das einen 7-schichtigen Aufbau des Funktionsumfanges empfiehlt. Für TP3 erfolgt die Zusammenfassung der Schichten 5..7 zur Anwendungschicht 7 und Schicht 2..4 zur Kommunikationsschicht 2. ND: Nettodaten H7: Header Schicht 7 H2: Header Schicht 2 T2: Trail Version: 1120201WBI Art.-Nr. 2 723 115 Seite 4/14
3 Nettodaten Das Nettodatenfeld hat folgenden Aufbau: Device-Typ: immer I (großes i, 49 hex ) und bedeutet. Register des Zählers Register-Nummer (3-stellig) 0 0 0 Zählerstand 0 0 1 Vorwahl 1 0 0 2 Vorwahl 2 0 0 3 Chain (nur bei signo 727) 0 0 4 Setzwert 0 0 5 Prescaler 0 0 6 Dezimalpunkt-Position 0 0 7 Release (nur read möglich) Anwendungsdaten (AD), max. 8 Zeichen Dv-Typ Rg-Nr[3] Rg-Nr[2] Rg-Nr[1] Sämtliche Datenbytes, sowie Device-Typ und die 3-stellige Register-Nummer werden im ASCII-Format übertragen. Gültige Werte für den Anwendungsdatenbereich (AD) sind: Zahlen: 1... 9 (30 hex... 39 hex ) Vorzeichen: - (2d hex ) Dezimalpunkt:. oder, (2e hex oder 2c hex ) Leerstelle: (20 hex ) Alle übrigen Zeichen führen bei der Übertragung zu einem Abbruch mit Fehlermeldung. Der zu übertragende Wert ist im AD-Feld linksbündig, evtl. mit führendem Vorzeichen und Dezimalpunkt oder Komma einzutragen. Die maximale Länge beträgt 8 Zeichen. Nicht benötigte Datenbytes müssen weggelassen oder mit Leerzeichen (20 hex ) aufgefüllt werden. Beispiel für das Übertragen des Setzwertes -23.5 : I 0 0 4-2 3. 5 ASCII-Zeichen 49 hex 30 hex 30 hex 34 hex 2d hex 32 hex 33 hex 2e hex 35 hex Hex-Wert Das AD-Feld ist in diesem Beispiel nur 5 Byte lang. Im Falle eines negativen Antwortdatensatzes vom Zähler besteht das Nettodatenfeld nur aus einem Byte, dem Quittungsbyte (siehe dazu Abschnitt 4.2). Version: 1120201WBI Art.-Nr. 2 723 115 Seite 5/14
4 Header Schicht 7 (H7) STX (02 hex ): Einleitung Header Schicht 7 Dienst : 7 (37 hex ): Register schreiben (write) 8 (38 hex ): Register lesen (read) > (3e hex ): Register lesen und löschen (read and clear) Auftragszähler : immer? (3f hex ) Blockzähler : immer 0 (30 hex ) Control-Byte : Dient zur Steuerung der Datenübertragung. Die Einzelbits sind im folgenden Abschnitt beschrieben. STX DIE 3f hex 30 hex CON 4.1 Control-Byte Das Control-Byte setzt sich folgendermaßen zusammen: 4.1.1 Control-Byte im Auftragsdatensatz (Master fi Zähler) Confirm-Bit: 0 : Auftrag erwartet keinen Antwortdatensatz 1 : Auftrag erwartet Anwortdatensatz Immer 1, wegen ASCII-Übertragung Quittungs-Bit : bei Auftrag immer 0 0 Bit 6 1 1 0 0 0 0 Control-Byte 4.1.2 Control-Byte im Antwortdatensatz (Zähler fi Master) Confirm-Bit: bei Antwort immer 1 Immer 1, wegen ASCII-Übertragung Quittungs-Bit : bei Antwort immer 1 Quittungskennzeichnung : 000: pos. Quittung ohne Daten 001: pos. Quittung mit Daten 010: neg. Quittung mit Quittungsbyte 0 1 1 1 1 Bit 2 Bit 1 Bit 0 Control-Byte Version: 1120201WBI Art.-Nr. 2 723 115 Seite 6/14
4.2 Quittungsbyte Bei negativen Antwortsätzen wird zusätzlich zum Controlbyte ein Quittungsbyte übertragen, in dem die Fehlerursache genauer spezifiziert ist. Die Nettodaten bestehen in diesem Fall genau aus diesem einen Quittungsbyte. Das Quittungsbyte kann folgende Werte annehmen: Hex-Wert ASCII Bedeutung 32 hex 2 Device-Typ unbekannt 35 hex 5 Register-Nummer unbekannt 3F hex? Unterschiedliche Checksumme 4C hex L Die Zahl enthält nicht-numerische Zeichen 64 hex d Datensatz ist nicht komplett (zu wenig Datenbytes) 65 hex e Nettodaten sind falsch 68 hex h Gerät ist "lokal belegt" (z.b. Tastatureingabe) 69 hex i Dienst unbekannt (TP3) 6A hex j NVRAM-Fehler 5 Header Schicht 2 (H2) Der Header der Schicht 2 beinhaltet Quell- und Zieladresse des Datentelegrammes. Auch hier wird wegen der ASCII-Übertragung mit einem Offset von 30 hex gearbeitet. SOH ZTA QTA SOH (01 hex ) : Einleitung Header Schicht 2 Ziel-Terminaladresse gültige Adressen : 30 hex... 7f hex (entspricht 0... 79) Quell-Terminaladresse gültige Adressen : 30 hex... 7f hex (entspricht 0... 79) Reservierte Adressen: 0 ( 30 hex ) = Master (PC oder SPS) 77 ( 7d hex ) = Test 78 ( 7e hex ) = Multicast 79 ( 7f hex ) = Broadcast Hinweis: Broadcast-Aufträge werden von allen Zählern empfangen. Es wird jedoch keine Schicht 2 Quittung erzeugt ( ACK oder NAK). Version: 1120201WBI Art.-Nr. 2 723 115 Seite 7/14
6 Trailer Schicht 2 (T2) Der Trailer setzt sich folgendermaßen zusammen: ETX (03 hex ): Abschluß der mit SOH bzw. STX eingeleiteten Zeichenfolge BCC: Blockprüfzeichen oder Längsparität Dabei werden sämtliche Zeichen der Zeichenkette (Auch Steuerzeichen STX,SOH,ETX) exklusiv-oder verknüpft. Dadurch kann der Empfänger eines Datensatzes Übertragungsfehler erkennen. ETX BCC Version: 1120201WBI Art.-Nr. 2 723 115 Seite 8/14
7 Telegrammformate Die TP3-Telegramme setzen sich aus den oben beschriebenen Bausteinen, sowie verschiedenen Steuerzeichen zusammen. Zur Datenübertragung kommen für die Zähler folgende Telegrammformate zur Anwendung. Auftragsdatensatz (z.b. Read-/Write-Auftrag) H2 H7 Nettodaten T2 positiver Antwortdatensatz ohne Daten H2 H7 T2 positiver Antwortdatensatz mit Daten H2 H7 Nettodaten T2 negativer Antwortdatensatz mit Quittungsbyte H2 H7 Quittungsbyte T2 Pollsatz (Sendeberechtigung von der Zentraleinheit ZE an einzelne Zähler) ENQ ZTA 30 hex ENQ (05 hex ): Aufforderung zur Datenübertragung Adresse des angesprochenen Zählers Schicht 2 Quittung Diese Quittung wird auf jeden Auftrtags- oder Antwortdatensatz vom jeweiligen Empfänger generiert. positive Quittung ACK negative Quittung (nach Übertragungsfehler) NAK Version: 1120201WBI Art.-Nr. 2 723 115 Seite 9/14
8 Buszugriffsverfahren Beim TP3-Protokoll handelt es sich um ein Buszugriffsverfahren nach dem Master-Slave- Prinzip. Dabei kontrolliert eine Station, der Master (hier: Zentraleinheit ZE) den Buszugriff durch explizites Zuteilen der Sendeberechtigung an die einzelnen Slaves (hier: Zähler). Dies berechtigt den Slave zum Senden eines Datensatzes. Liegt bei einer Buszuteilung kein Sendeauftrag vor, sendet der Zähler ACK. Wenn die Zentraleinheit ZE von einem Zähler einen Datensatz angefordert hat, so muß sie den Zähler solange pollen (siehe Pollsatz), bis der Zähler den erwarteten Datensatz gesendet hat. 9 Protokollabläufe Um die verschiedenen Parameter der Zähler lesen, schreiben oder löschen zu können, sind verschiedene Protokollabläufe notwendig, die im folgenden beschrieben werden. 9.1 Pollzyklus Mit dem Pollsatz erteilt die ZE genau einem Zähler die Sendeberechtigung. Dies dient dazu, Kollisionen beim Buszugriff zu vermeiden. Desweiteren lässt sich so feststellen, ob sich der jeweils angesprochene Zähler am Bus befindet und funktionsfähig ist. Der gesamte Pollzyklus hat folgenden Aufbau: Pollsatz ZE: ENQ ZTA CON Antwort Zähler: ACK Ein Pollzyklus steht immer an Anfang einer Datenübertraung um festzustellen, ob der Zähler ansprechbar ist, bzw. ob noch ein Auftrag im Zähler ansteht. Hat der Zähler keine oder noch keine Daten zu senden (Auftrag ist noch in Bearbeitung), antwortet er mit ACK. 9.2 Lesen eines Registers Anfrage an einen Zähler um z.b. den Zählerstand oder die Vorwahl auszulesen. Der Zähler quittiert den Datensatz bei fehlerfreiem Empfang mit ACK. Auf einen anschließenden Pollsatz antwortet der Zähler mit einem Datensatz, der den gewünschten Registerwert enthält. Die ZE bestätigt diesen Datensatz bei fehlerfreiem Empfang mit ACK. Der einleitende Pollsatz zur Synchronisation wird hier nicht dargestellt. Anfrage der ZE: Antwort Zähler: Pollsatz ZE: Antwort Zähler: Antwort ZE: Auftragsdatensatz ACK Pollsatz Antwortdatensatz mit Daten ACK Wird der Pollsatz der ZE nicht sofort mit einem Antwortdatensatz beantwortet, sondern nur mit ACK, so ist die zählerinterne Aufbereitung der Daten noch nicht abgeschlossen. Die ZE muß dann solange weitere Pollsätze senden, bis der erwartete Antwortdatensatz bereitsteht. 9.3 Schreiben eines Registers Version: 1120201WBI Art.-Nr. 2 723 115 Seite 10/14
Auftrag an einen Zähler um z.b. den Zählerstand oder die Vorwahl zu verändern. Der Zähler quittiert den Datensatz bei fehlerfreiem Empfang mit ACK. Auf einen anschließenden Pollsatz antwortet der Zähler mit einem Datensatz, der die Ausführung des Auftrages bestätigt. Die ZE bestätigt diesen Datensatz bei fehlerfreiem Empfang mit ACK. Der einleitende Pollsatz zur Synchronisation wird hier nicht dargestellt. Anfrage der ZE: Antwort Zähler: Pollsatz ZE: Antwort Zähler: Antwort ZE: Auftragsdatensatz ACK Pollsatz Antwortdatensatz ohne Daten ACK Wird der Pollsatz der ZE nicht sofort mit einem Antwortdatensatz beantwortet, sondern nur mit ACK, so ist die zählerinterne Bearbeitung des Auftrages noch nicht abgeschlossen. Die ZE muß dann solange weitere Pollsätze senden, bis der erwartete Antwortdatensatz bereitsteht. 9.4 Beispiele Im folgenden sollen einige Beispiele mit konkreten Daten den Ablauf eines Datenaustausches veranschaulichen. Die Beispieldatensätze sind 2-zeilig dargestellt. In der oberen Zeile ist jeweils der Name des Datenbytes dargestellt, in der unteren Zeile der absolute Wert in hexadezimaler Darstellung. Die Kennzeichnung der einzelnen Hex-Werte wurde der Übersichlichkeit wegen weggelassen. Zeichnerklärung: Datensatz von der ZE an Zähler Datensatz vom Zähler an die ZE Zählerstand lesen vom Zähler mit der Adresse 1. Der Zählerstand ist -14.6 H2 H7 ND T2 SOH ZTA QTA STX DIE? 0 CON I 0 0 R-Nr ETX BCC Auftrag von ZE: Zählerstand lesen 01 31 30 02 38 3f 30 70 49 30 30 30 03 3f ACK Quittung vom Zähler ENQ ZTA 0 Pollsatz von ZE 05 31 30 Antwortsatz vom Zähler mit Daten H2 H7 ND T2 SOH ZTA QTA STX DIE ATZ BLZ CON Typ Nr.3 Nr.2 Nr.1-1 4, 6 ETX BCC 01 30 31 02 38 3f 30 79 49 30 30 30 2d 31 34 2c 36 20 20 20 03 24 ACK Quittung von ZE Vorwahl 2 schreiben an Zähler mit der Adresse 1. Der Vorwahlwert ist 987.65 H2 H7 ND T2 Version: 1120201WBI Art.-Nr. 2 723 115 Seite 11/14
SOH ZTA QTA STX DIE? 0 CON I 0 0 R-Nr 9 8 7. 6 5 ETX BCC 01 31 30 02 37 3f 30 70 49 30 30 32 39 38 37 2e 36 35 03 29 ACK Quittung vom Zähler Auftrag von ZE: Vorwahl 2 setzen ENQ ZTA 0 Pollsatz von ZE 05 31 30 ACK Quittung vom Zähler, Auftrag ist noch nicht ausgeführt ENQ ZTA 0 Pollsatz von ZE 05 31 30 H2 H7 T2 SOH ZTA QTA STX DIE? 0 CON ETX BCC Antwortsatz vom Zähler ohne Daten 01 30 31 02 37 3f 30 78 03 41 ACK Quittung von ZE Zählerstand löschen beim Zähler mit der Adresse 1. H2 H7 ND T2 SOH ZTA QTA STX DIE? 0 CON I 0 0 R-Nr ETX BCC Auftrag von ZE: Zählerstand löschen 01 31 30 02 3e 3f 30 70 49 30 30 30 03 39 ACK Quittung vom Zähler ENQ ZTA 0 Pollsatz von ZE 05 31 30 Antwortsatz vom Zähler mit Zählerstand vor dem Löschen H2 H7 ND T2 SOH ZTA QTA STX DIE? 0 CON I 0 0 R-Nr 1 2 3 4, 5 ETX BCC 01 30 31 02 3e 3f 30 79 49 30 30 30 31 32 33 34 2c 35 20 20 03 2d ACK Quittung von ZE Version: 1120201WBI Art.-Nr. 2 723 115 Seite 12/14
Auftrag an den Zähler, während dieser über die Tastatur bedient wird H2 H7 ND T2 SOH ZTA QTA STX DIE? 0 CON I 0 0 R-Nr ETX BCC Auftrag von ZE: Zählerstand lesen 01 31 30 02 38 3f 30 70 49 30 30 30 03 3f ACK Quittung vom Zähler ENQ ZTA 0 Pollsatz von ZE 05 31 30 H2 H7 ND T2 SOH ZTA QTA STX DIE? 0 CON Quit ETX BCC Antwortsatz des Zählers: neg. Quittung mit Quittungsbyte 01 30 31 02 38 3f 30 7a 68 03 24 ACK Quittung von ZE Fehlermeldung im Quittungsbyte: Gerät lokal belegt 10 Übersicht der Steuerzeichen Folgende Steuerzeichen werden für die Datenübertragung verwendet: ASCII HEX Name Bedeutung SOH 01 hex start of heading Einleitung des Header Schicht 2 STX 02 hex start of text Einleitung des Header Schicht 7 ETX 03 hex end of text Abschluß der mit SOH bzw. STX eingeleiteten Zeichenfolge ACK hex acknowledge positive Quittung einer Zeichenübertragung NAK 15 hex neg. acknowledge negative Quittung (Aufforderung zur Wiederholung) ENQ 05 hex enquiry Aufforderung zur Datenübertragung Version: 1120201WBI Art.-Nr. 2 723 115 Seite 13/14
11 Fehlerdiagnose Problem Zähler antwortet nicht Diagnose Busleitungen A/B vertauscht falsche Baudrate eingestelllt an Zähler / ZE falsche Übertragungsparameter an ZE eingestellt falsche Adresse eingestellt Zähler antwortet mit NAK Datensatz wurde nicht korrekt empfangen und muß wiederholt werden. Zähler sendet ACK anstelle eines erwarteten Antwortdatensatzes Zähler sendet Antwortdatensatz anstelle eines erwarteten ACK Zähler sendet im Antwortdatensatz eine neg. Quittung Der Auftrag ist im Zähler noch nicht komplett abgearbeitet. Weitere Pollsätze senden, bis Antwortdatensatz bereitsteht Der Zähler hat den zuvor gesendeten Auftrag nicht verstanden. Auftrag wiederholen. Die Daten eines zuvor gesendeten Auftrages wurden noch nicht abgeholt. Der letzte Antwortdatensatz des Zählers wurde nicht mit ACK quittiert Der zuvor gesendete Auftrag kann vom Zähler nicht beareitet werden. Der Fehler ist im Quittungsbyte genauer spezifiziert. Erläuterungen dazu siehe Abschnitt 4.1.2 Version: 1120201WBI Art.-Nr. 2 723 115 Seite 14/14