====== Elster AS1440 ====== Der Elster AS1440 kann nach DIN EN 62056-21 über die IR-Schnittstelle ausgelesen werden. Energiezähler werden vom Hersteller auf Wunsch der Messstellenbetreiber kundenspezifisch konfiguriert, daher kann es zu unterschiedlichen Ausgaben kommen. ===== Hardware ===== Über die Frontschnittstelle kann mittels [[hardware:controllers:ir-schreib-lesekopf|IR-Schreib-Lesekopf]] bei [[hardware:controllers:ir-schreib-lesekopf#Grundlagen|300bd, 7E1]] kommuniziert werden.\\ Der Zähler muss erst mittels Initiaslisierungssequenz "/?!" angesprochen werden bevor er sendet. Bei einigen AS1440hat der VNB ein Passwort gesetzt. Häufig ist das die Identifikationsnummer. Dann sieht die Anforderungssequenz so aus: ''/?!''.\\ Die Identifikationsnummer kann am Gerätedisplay im Menü unter 0.0.0 angezeigt werden. Führende Nullen können ignoriert werden. Ein Passwort gibt der VNB in der Regel auf Anfrage heraus. ===== Kommunikation ===== Zu Anfang erwartet der Zähler Kommunikation mit 300 baud, 7 Datenbits, 1 Stopbit, Parität even. Jeder Befehl muss mit CR&LF abgeschlossen werden. Wenn die Kommunikation läuft, kann man auf höhere Datenraten umstellen, s.u.\\ Die Schnittstelle wird aktiviert, indem man den code ''/?!\r\n'' sendet (hex 2F 3F 21 0D 0A). Der Zähler antwortet sofort mit /AAAB\@nnnnnnnnnnnnnn wobei:\\ AAA = "ELS"\\ B gibt die maximale Baudrate an, bei IR-Kommunikation ist der Wert 5, d.h. max. 9600 Baud\\ ''\@'' bedeutet, dass der Zähler R5, W5 und R6-Befehle unterstützt (s.u.)\\ nnnnnnnnnnnnnn bezeichnet die 14-stellige Geräte-ID.\\ Wenn innerhalb von 1,5s keine weiteren Befehle gesendet werden, gibt der Zähler die aktuellen Messwerte aus und meldet sich ab. Weitere Kommunikation ist erst möglich, wenn man wieder die Eröffnungs-Sequenz ''/?!\r\n'' sendet.\\ Um direkt weiter kommunizieren zu können, muss die Antwort des Zählers bestätigt werden mit:\\ 0ZY (hex 06 30 zz yy 0D 0A) wobei Z die gewünschte Datenrate für die weitere Kommunikation bezeichnet (also am Einfachsten denselben Wert wie B oben) und Y die Werte 0 und 1 annehmen kann. Wenn Y den Wert 0 hat, werden die aktuellen Messwerte ausgegeben. Für alle anderen Befehle (z.B. Lastgangspeicher auslesen) verwendet man den Programmiermodus, also Y=1.\\ also z.B. 051 (hex 06 30 35 31 0D 0A) um Daten mit 9600 Baud auszulesen.\\ Wenn der Zähler die Botschaft akzeptiert, antwortet er mit (hex 06 0D 0A) Wenn die Datenrate geändert wurde, muss man das natürlich berücksichtigen, also z.B. bei hterm auf 9600 Baud umstellen.\\ Jetzt kann man mit dem Zähler kommunizieren, s. Befehle. Wenn für ca. 6s keine weiteren Befehle gesendet werden, beendet der Zähler die Kommunikation mit der Sequenz B0 (hex 01 42 30 03 71 0D 0A) Dieselbe Sequenz kann jederzeit auch gesendet werden, um die Kommunikation zu beenden.\\ Alternativ kann die Kommunikation statt mit ''/?!\r\n'' manchmal auch mit ''/2!\r\n'' (hex 2F 32 21 0D 0A) angestoßen werden. Der Zähler antwortet dann direkt, ohne Baudratenumschaltung, mit der Liste der Aktualwerte. ===== Beispielkonfiguration ===== Eine exemplarische vzlogger.conf: { "retry": 0, "verbosity": 15, "log": "/var/log/vzlogger/vzlogger.log", "local": { "enabled": false, "port": 8081, "index": true, "timeout": 0, "buffer": 0 }, "meters": [ { "enabled": true, "allowskip": false, "interval": -1, "aggtime": -1, "aggfixedinterval": false, "channels": [ { "uuid": "6836dd20-00d5-11e0-bab1-856ed5f959ae", "identifier": "1-1:1.7.0", "api": "volkszaehler", "middleware": "http://localhost/middleware.php", "aggmode": "none", "duplicates": 0 } ], "protocol": "d0", "device": "/dev/lesekopf0", "dump_file": "", "pullseq": "2F3F210D0A", "ackseq": "auto", "baudrate": 300, "baudrate_read": 9600, "baudrate_change_delay": 500, "parity": "7e1", "read_timeout": 100 } ] } ===== Befehle ===== ==== BCC ==== Die Befehle benötigen am Ende grundsätzlich ein BCC-Byte zur Fehlererkennung. Dieses wird gebildet, indem man alle Bytes des Befehls **ohne das führende ** bitweise XOR-verknüpft. Beispiel:\\ BCC für B0 (hex 01 42 30 03): ^ ^binär^hex^ASCII^ | |01000010|42|B| |⊻|00110000|30|0| |⊻|00000011|03|| ^=^01110001^71^q^ Gesendet wird also: B0 (hex 01 42 30 03 71 0D 0A) ==== Befehlsliste ==== Kompletten Lastgangspeicher 1 auslesen (enthält standardmäßig 15-Min-Werte der importierten und exportierten Leistung ca. der letzten 3 Wochen): R5P.01(;) (01 52 35 02 50 2E 30 31 28 3B 29 03 23) Man kann auch einen Datumsbereich in der Form syymmddhhmm für Start bzw. Ende des Zeitraums vor bzw. nach dem Semikolon angeben. s=0/1: Winter-/Sommerzeit. \\ Kompletten Lastgangspeicher 2 auslesen (enthält zusätzlich Spannungen und Ströme aller drei Phasen ca. der letzten 10 Stunden): R5P.02(;) (01 52 35 02 50 2E 30 32 28 3B 29 03 20) Logbuch auslesen: R5P.98(;) (01 52 35 02 50 2E 39 38 28 3B 29 03 23) Aktuelle importierte Leistung: R51.7.0() (01 52 35 02 31 2e 37 2e 30 28 29 03 51) Aktuelle exportierte Leistung: R52.7.0() (01 52 35 02 32 2e 37 2e 30 28 29 03 52) ===== Test mittels HTerm ===== Zum Testen unter Windows kann [[http://www.der-hammer.info/terminal/|hterm]] verwendet werden.\\ Einzustellen sind:\\ Port: bei Windows:verwendeter COM-Anschluss des USB-Adapters, bei Linux z.B. /dev/ttyUSB0\\ Baud: 300\\ Data: 7\\ Stop: 1\\ Parity: Even\\ Bei "input control": Send on Enter auf "CR-LF"\\ Auf "Connect" klicken, dann im Eingabefeld ''/?!'' eingeben und Enter drücken. Wenn im Feld "received data" was erscheint, funktioniert die Kommunikation prinzipiell. ===== Quellen ===== [1] [[https://mddownloads.s3.eu-west-1.amazonaws.com/PV-Anlage/AS1440/AS1440_Kurzbedienung_d.pdf|Bedienungsanleitung AS1440]]\\ [2] [[https://mddownloads.s3.eu-west-1.amazonaws.com/PV-Anlage/AS1440/AS1440_Flyer_D.pdf|Kurzübersicht AS1440]]\\ [3] [[http://www.msr.uni-bremen.de/lehre/Stromzaehler/Elster_A1500FW4xx_Communication.pdf|Protokoll-Spezifikation AS1500 mit Beispielen]]\\ [4] [[http://www.emsycon.de/downloads/LH2127B3.pdf|OBIS-Kennzahlen]]