Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Pro tokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Pro tokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Pro tokoll Protokoll Pro tokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Pro tokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Pro tokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Pro tokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protkoll Protokoll Protokoll Protok oll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Pro tokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Protokoll Ethernet Binär PSG Plastic Service GmbH Pirnaer Str. 12-16 68309 Mannheim Deutschland Tel. +49 621 7162 0 Fax +49 621 7162 162 www.psg-online.de info@psg-online.de 08/2013
PSG Plastic Service GmbH 1 Protokoll Ethernet Binär profitemp Inhaltsverzeichnis 1 Darstellungskonventionen... 2 1.1 Verwendete Datentypen... 2 2 Allgemeine Spezifikation... 3 2.1 Adressberechnung... 3 2.1.1 Für Zonen... 3 2.1.2 Für Systemparameter... 3 2.2 Dateninhalt des TCP/IP Telegramms... 4 2.2.1 Telegrammstruktur bei den Befehlen 0x0000, 0x0001, 0x0003, 0x0004, 0x000D, 0x000E... 4 2.2.2 Telegrammstruktur bei den Befehlen 0x000A... 5 2.3 Berechnung der Prüfsumme... 6 2.4 Befehl 0x0000 Verbindung herstellen... 7 2.5 Befehl 0x0001 Softwareversion auslesen... 8 2.6 Befehl 0x0003 Lese Bytes... 9 2.7 Befehl 0x0004 Schreibe Bytes... 10 2.8 Befehl 0x000D Lese Bytes von mehreren Zonen... 11 2.9 Befehl 0x000E Schreibe Bytes von mehreren Zonen... 12 2.10 Befehl 0x000A CAN-Befehl senden... 13 3 Anhang... 14 3.1 Versionshistorie... 14
2 Kapitel 1 Darstellungskonventionen 1 Darstellungskonventionen In diesem Handbuch finden sich Symbole und Konventionen, die Ihnen zur schnelleren Orientierung dienen. Achtung Hinweis Beispiel Verweis FAQ Gleichungen Mit diesem Symbol werden Hinweise und Informationen angezeigt, die entscheidend für den Betrieb des Gerätes sind. Bei Nichtbefolgen oder ungenauem Befolgen kann es zu Schäden am Gerät oder zu Personenschäden kommen. Das Symbol weist auf zusätzliche Informationen und Erklärungen hin, die zum besseren Verständnis dienen. Bei dem Symbol wird eine Funktion anhand eines Beispiels erläutert. Bei diesem Symbol wird auf Informationen in einem anderen Dokument verwiesen. Hier werden FAQ (frequently asked questions) beantwortet. Berechnungsvorschriften und Berechnungsbeispiele werden so dargestellt. 1.1 Verwendete Datentypen Größe (Bit) Bezeichnung 8 Byte 16 Word 16 Unsigned int 32 Long
PSG Plastic Service GmbH 3 Protokoll Ethernet Binär profitemp 2 Allgemeine Spezifikation Das Ethernet Binär Protokoll basiert auf einer TCP/IP Verbindung. Zunächst wird eine Socketverbindung zur IP-Adresse des profitemp (Abkürzung pt) auf den Port 5000 hergestellt. Danach muss über den Befehl CMD_CONNECT (siehe Kapitel 2.4) die Verbindung aktiviert werden. Anschließend können alle beschriebenen Befehle ausgeführt werden. 2.1 Adressberechnung Die in den Befehlen anzugebenden Adressen sind grundsätzlich Absolutadressen. Der Offset innerhalb der Regelzonen kann der Dokumentation zu Regler spezifischen Parameter- und Objektlisten für Protokoll PSGII entnommen werden. 2.1.1 Für Zonen Sollen Daten von Regelzonen gelesen werden, so berechnen sich die Absolutadressen folgendermaßen: Absolutadresse = 0xC0000 + Regelzone (0...249) * 0x400 + Offset; 2.1.2 Für Systemparameter Sollen Daten von Systemparametern gelesen werden, so berechnen sich die Absolutadressen folgendermaßen: Absolutadresse = 0xA0000 + Offset;
4 Kapitel 2 Allgemeine Spezifikation 2.2 Dateninhalt des TCP/IP Telegramms 2.2.1 Telegrammstruktur bei den Befehlen 0x0000, 0x0001, 0x0003, 0x0004, 0x000D, 0x000E typedef struct { word HEAD // Telegrammkennung // Bei Anfrage an profitemp: 0xA5EF byte RESERVE // Immer auf 0 setzen word BEFEHL // Befehl byte RESERVE // Immer auf 0 setzen long ADDRESS // Zugriffsadresse byte RESERVE // Immer auf 0 setzen unsigned int uilen // Befehlslänge // Anzahl Datenbytes in BUFF + 15 + 1 Byte Prüfsumme unsigned int uianz // Anzahl zu lesender / schreibender Daten // (pro Zone bei Zonenbefehlen) byte BUFF[1020] // Datenbytes + 1 Byte Prüfsumme nach letzten Daten } tx; Im TCP/IP Telegramm wird folgende Datenstruktur von der profitemp gesendet (Antwort): typedef struct { word HEAD // Telegrammkennung // Antwort von profitemp: 0x4143 byte RESERVE // Immer auf 0 setzen word STATUS // Status der Antwort byte RESERVE // Immer auf 0 setzen long ADDRESS // Zugriffsadresse byte RESERVE // Immer auf 0 setzen unsigned int uilen // Befehlslänge // Anzahl Datenbytes in BUFF + 15 + 1 Byte Prüfsumme unsigned int uianz // Anzahl Nutzdaten gesamt byte BUFF[1020] // Datenbytes + 2 Byte Prüfsumme nach letzten Daten } rx;
PSG Plastic Service GmbH 5 Protokoll Ethernet Binär profitemp 2.2.2 Telegrammstruktur bei den Befehlen 0x000A typedef struct { word whead // Telegrammkennung // Bei Anfrage an profitemp: 0xA5FE byte byreserve // Immer auf 0 setzen word wbefehl // Befehl byte bylen // Befehlslänge // Anzahl Datenbytes in BUFF + 11 + 1 Byte Prüfsumme word wtxnode // Sende-ID word wrxnode // Empfangs-ID byte byanzahl // Anzahl Datenbytes byte bybuff[1024] // CAN-Telegramm + BCC } tx_can; Im TCP/IP Telegramm wird folgende Datenstruktur von der profitemp gesendet (Antwort): typedef struct { word whead // Telegrammkennung // Antwort von profitemp: 0x4142 byte byreserve // Immer auf 0 setzen word wstatus // Status der Antwort byte bylen // Befehlslänge // Anzahl Datenbytes in BUFF + 11 + 1 Byte Prüfsumme word wtxnode // Sende-Node-ID word wrxnode // Empfangs-Node-ID byte byanzahl // Anzahl Datenbytes byte bybuff[1024] // CAN-Telegramm + BCC } rx_can;
6 Kapitel 2 Allgemeine Spezifikation 2.3 Berechnung der Prüfsumme Die Prüfsumme wird folgendermaßen berechnet: // Pruefsumme berechnen byte ps=0; byte* byptr; // Pointer auf Send-/Empfangsstruktur setzen byptr = &tx; for (cnt=0; cnt< tx.uilen; cnt++) { ps += byptr[cnt]; } // Pruefsumme in Sendestring eintragen tx->buff[tx.uilen] = 0-ps;
PSG Plastic Service GmbH 7 Protokoll Ethernet Binär profitemp 2.4 Befehl 0x0000 Verbindung herstellen Anfrage an profitemp tx.head = 0xA5EF; Telegrammkennung tx.befehl = 0x0000; Befehl tx.address = 0x5555AAAA; Zugriffsadresse tx.uilen = 0x0010; Befehlslänge tx.uianz = 0x0000; Anzahl zu lesender / schreibender Daten tx.buff[0] = 0x5B; Datenbytes + 1 Byte Prüfsumme nach letzten Daten Antwort von profitemp rx.head = 0x4143; rx.status = 0x0000; rx.address = 0; rx.uilen = 19; rx.uianz = 3; rx.buff[0] = OK ; rx.buff[3] = Prüfsumme;
8 Kapitel 2 Allgemeine Spezifikation 2.5 Befehl 0x0001 Softwareversion auslesen Anfrage an profitemp tx.head = 0xA5EF; Telegrammkennung tx.befehl = 0x0001; Befehl tx.address = 0x00000000; Zugriffsadresse tx.uilen = 0x0010; Befehlslänge tx.uianz = 0x0000; Anzahl zu lesender / schreibender Daten tx.buff[0] = 0x5A; Datenbytes + 1 Byte Prüfsumme nach letzten Daten Antwort von profitemp rx.head = 0x4143; rx.status = 0x0000; rx.uilen = 29; rx.uianz = 13; rx.buff[0] = Versionsnummer; rx.buff[13] = Prüfsumme;
PSG Plastic Service GmbH 9 Protokoll Ethernet Binär profitemp 2.6 Befehl 0x0003 Lese Bytes Anfrage an profitemp tx.head = 0xA5EF; tx.befehl = 0x0003; tx.address = Adresse von der gelesen wird; tx.uilen = 16; tx.uianz = Anzahl zu lesender Bytes; tx.buff[0] = Prüfsumme; Antwort von profitemp rx.head = 0x4143; rx.status = 0x0000; rx.address = 0; rx.uilen = 16 + Anzahl gelesener Bytes; rx.uianz = Anzahl gelesener Bytes; rx.buff[0] = Daten; rx.buff[anzahl gelesener Bytes] = Prüfsumme;
10 Kapitel 2 Allgemeine Spezifikation 2.7 Befehl 0x0004 Schreibe Bytes Anfrage an profitemp tx.head = 0xA5EF; tx.befehl = 0x0004; tx.address = Adresse, auf die geschrieben wird; tx.uilen = 16 + Anzahl zu schreibender Bytes; tx.uianz = Anzahl zu schreibender Bytes; tx.buff[0] = Daten; tx.buff[anzah l zu schreibender Bytes] = Prüfsumme; Antwort von profitemp rx.head = 0x4143; rx.status = 0x0000; rx.address = 0; rx.uilen = 19; rx.uianz = 3; rx.buff[0] = OK ; rx.buff[3] = Prüfsumme;
PSG Plastic Service GmbH 11 Protokoll Ethernet Binär profitemp 2.8 Befehl 0x000D Lese Bytes von mehreren Zonen Anfrage an profitemp Beispiel Zonenparameter Sollwerte und Istwerte lesen (für 80 Zonen ab erster Zone) tx.head = 0xA5EF; Telegrammkennung tx.befehl = 0x000D; Befehl tx.address = 0x000C0000; Adresse von der gelesen wird (Adresse ergibt sich aus der ersten zu lesenden Zone); tx.uilen = 0x0011; Befehlslänge; tx.uianz = 0x0004 Anzahl zu lesender Bytes pro Zone; tx.buff[0] = 0x50; Anzahl Zonen; tx.buff[1] = 0xEC; Prüfsumme; Antwort von profitemp rx.head = 0x4143; rx.status = 0x0000; rx.address = 0; rx.uilen = 17 + Anzahl gelesener Bytes gesamt; rx.uianz = Anzahl gelesener Bytes gesamt; rx.buff[0] = Anzahl Zonen; rx.buff[1] = Daten (Daten Zone 1, Daten Zone 2, ) rx.buff[anzahl gelesener Bytes gesamt + 1] = Prüfsumme;
12 Kapitel 2 Allgemeine Spezifikation 2.9 Befehl 0x000E Schreibe Bytes von mehreren Zonen Anfrage an profitemp tx.head = 0xA5EF; tx.befehl = 0x000E; tx.address = Adresse auf die geschrieben wird (Adresse ergibt sich aus der ersten zu schreibenden Zone); tx.uilen = 17 + Anzahl zu schreibender Bytes gesamt; tx.uianz = Anzahl zu schreibender Bytes gesamt; tx.buff[0] = Anzahl Zonen; tx.buff[1] = Daten (Daten Zone 1, Daten Zone 2, ); rx.buff[anzahl gelesener Bytes gesamt + 1] Prüfsumme; Antwort von profitemp rx.head = 0x4143; rx.status = 0x0000; rx.address = 0; rx.uilen = 19; rx.uianz = 3; rx.buff[0] = OK ; rx.buff[3] = Prüfsumme;
PSG Plastic Service GmbH 13 Protokoll Ethernet Binär profitemp 2.10 Befehl 0x000A CAN-Befehl senden Anfrage an profitemp (Telegrammstruktur siehe 2.2.2) tx_can.whead = 0xA5FE; tx_can.wbefehl = 0x000A; tx_can.wtxnode = Sende-ID; tx_can.wrxnode = Empfangs-ID; tx_can.bylen = 12 + Anzahl Datenbytes; tx_can.byanzahl = Anzahl Datenbytes; tx_can.buff[0] = Datenbytes (Datenbyte [0], Datenbyte [1],..) ; tx_can.buff[anzahl Datenbytes] = Prüfsumme; Antwort von profitemp (Telegrammstruktur siehe 2.2.2) rx_can.whead = 0x4142; rx_can.wstatus = 0x0000; rx_can.wtxnode = Sende-ID; rx_can.wrxnode = Empfangs-ID; rx_can.bylen = 20; rx_can.byanzahl = 8; rx_can.buff[0] = Datenbytes [0] ; rx_can.buff[1] = Datenbytes [1] ; rx_can.buff[2] = Datenbytes [2] ; rx_can.buff[3] = Datenbytes [3] ; rx_can.buff[4] = Datenbytes [4] ; rx_can.buff[5] = Datenbytes [5] ; rx_can.buff[6] = Datenbytes [6] ; rx_can.buff[7] = Datenbytes [7] ; rx_can.buff[8] = Prüfsumme;
14 Kapitel 3 Anhang 3 Anhang 3.1 Versionshistorie Version Datum Änderung 1.00.01 12.08.2013 Verwendete Datentypen ergänzt; Befehl 0x0000, 0x0001 Prüfsumme ergänzt; Befehl 0x000D Beispiel; 1.00.00 05.07.2013 Erstveröffentlichung PSG Plastic Service GmbH Pirnaer Straße 12-16 68309 Mannheim Deutschland Tel. +49 621 7162 0 Fax +49 621 7162 162 ww.psg-online.de info@psg-online.de