PAC 42000 Load data Modbus TCP FC 0x64 Application Die Funktionalität zum Auslesen der im PAC4200 gespeicherten Lastgangdaten ist in der Software powerconfig und powermanager bereits enthalten. Wenn dies nun aber auch in einer eigenen Anwendung genutzt werden soll, müssen die Lastgang-Daten manuell über den benutzerdefinierten Modbus-Funktionscode 0x64 direkt aus dem Gerät gelesen werden. In dem gezeigten Beispiel wird das Programm SMTN Modbus/TCP Master Control verwendet welches eine programmierbare Kommunikationsplattform in Microsoft Visual Basic bietet. Weitere Informationen und Downloadmöglichkeiten hierzu finden Sie online unter: http://www.sapia-inc.com/ http://www.microsoft.com/germany/express/ Auslesen des Lastprofil Speichers Der Lastprofilspeicher ist in 5 Kanäle aufgeteilt und beinhalten jeweils die Werte für: Channel 1: Channel 2: Channel 3: Channel 4: Channel 5: Wirkleistung Bezug (active power import) Wirkleistung Abgabe (active power export) Blindleistung Bezug (reactive power import) Blindleistung Abgabe (reactive power export) Scheinleistung (apparent power) Über einen Data identifier (Tabelle 2) kann der Nutzer zwischen 6 verschiedene Data Sets wählen, welche die Daten entsprechend zusammenstellen (average, cumulated, extrema) und bei einer Anfrage über Modbus versenden. Jeder einzelne Eintrag im Lastgangspeicher ist mit einer eindeutigen OID (Objekt ID) versehen, worüber dieser direkt adressiert werden kann. Die höchste (jüngste) existierende OID ist immer im Load profile counter unter Modbus Register 0x00E4 hinterlegt. Eine Abfrage auf die OID 0x00000000 liefert immer den Lastgang Eintrag mit der niedrigsten (ältesten) OID zurück. Eine Abfrage auf eine nicht existierende OID liefert einen Fehler. Für ein vollständiges Auslesen des Lastgang-Speichers sind also folgende Schritte notwendig: 1. Abfrage auf OID 0x00000000. Als Antwort wird der älteste Eintrag des Lastganges mit der niedrigsten OID gesendet. 2. Die in dem gesendeten Eintrag enthaltene OID separieren 3. Die höchste OID aus Register 0x00E4 auslesen. 4. In einer Schleife, welche von der niedrigsten bis zur höchsten OID zählt, den jeweils zugehörigen Eintrag auslesen. Anmerkung: Prinzipiell ist es möglich, mit einer Anfrage mehrere Einträge gleichzeitig auszulesen. Auf Grund der maximalen Länge von 240 Byte einer Modbus Antwort wird empfohlen jeden Eintrag einzeln auszulesen. Die ausgelesenen Daten sind abschließend entsprechend Tabelle 4 zu interpretieren und im Format zu wandeln. Page 1 / 6
Beispiel zum Aufbau einer Abfrage: 00 08 00 00 00 09 01 64 00 06 00 00 30 45 01 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Table 1 Byte Bytes in Hex Description 1-7 Header 8 64 Modbus Function Code 9 00 Constant 0x00 10 06 Data Identifier (all channels with extrema) 11-14 00 00 30 45 OID 15 01 Number of records Beschreibung Table 2 - Data identifier (Byte 10) Description channels 1 to 5 (average and cumulated) with extrema channel 1 (average and cumulated) with extrema channel 2 (average and cumulated) with extrema channel 3 (average and cumulated) with extrema channel 4 (average and cumulated) with extrema channel 5 (average and cumulated) with extrema channels 1 to 5 (average and cumulated) with extrema and channels 1 to 5 (average) with extrema channel 1 (average) with extrema channel 2 (average) with extrema channel 3 (average) with extrema channel 4 (average) with extrema channel 5 (average) with extrema channels 1 to 5 (average) with extrema and channels 1 to 5 (cumulated) with extrema channel 1 (cumulated) with extrema channel 2 (cumulated) with extrema channel 3 (cumulated) with extrema channel 4 (cumulated) with extrema channel 5 (cumulated) with extrema channels 1 to 5 (cumulated) with extrema and channels 1 to 5 (average and cumulated) without extrema channel 1 (average and cumulated) without extrema channel 2 (average and cumulated) without extrema channel 3 (average and cumulated) without extrema channel 4 (average and cumulated) without extrema channel 5 (average and cumulated) without extrema channels 1 to 5 (average and cumulated) without extrema and channels 1 to 5 (average) without extrema channel 1 (average) without extrema Number 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x40 0x41 Page 2 / 6
Table 2 - Data identifier (Byte 10) Description channel 2 (average) without extrema channel 3 (average) without extrema channel 4 (average) without extrema channel 5 (average) without extrema channels 1 to 5 (average) without extrema and channels 1 to 5 (cumulated) without extrema channel 1 (cumulated) without extrema channel 2 (cumulated) without extrema channel 3 (cumulated) without extrema channel 4 (cumulated) without extrema channel 5 (cumulated) without extrema channels 1 to 5 (cumulated) without extrema and Number 0x42 0x43 0x44 0x45 0x46 0x50 0x51 0x52 0x53 0x54 0x55 0x56 Page 3 / 6
Beispiel zum auslesen mit SMTN Modbus/TCP Master Control : Die ersten 8 Bytes (Header + FC) müssen im Data-Feld nicht manuell mit angegeben werden sondern werden über die vorgegebenen Eingabefelder definiert. Angabe einer UnitID (= 1), des zu verwendenden Funktionscodes 0x64 (= 100 Dez) und der Anzahl der zu übermittelten Bytes (= 7). Auslesen des Eintrages mit der kleinsten OID Request: Table 3 Byte Bytes in Hex Description 1-8 Werden durch die SMTN Eingabemaske definiert 9 00 Konstante 10 06 Data Identifier (all channels with extrema) 11-14 00 00 00 00 Liefert den Eintrag mit der kleinsten (ältesten) vorhandenen OID 15 01 Anzahl an Einträgen die ausgelesen werden sollen Page 4 / 6
Response: Table 4 Bytes in hex Description 01 Modbus address 64 Modbus user defined function code 68 payload length in bytes (starting with the following byte to the end, excluding CRC) 00 Constant 0x00 06 Data identifier 00 00 30 45 OID of the load profile entry 01 Number of records inserted in this telegram (may be smaller than requested) 61 Length of record in bytes (including this byte).. 0x61 data bytes of record with OID 0x0003045 timestamp act.period 8 byte OID act. period (unique period entry identification index) average active power import act. period average active power export act. period average reactive power import act. period average reactive power export act. period average apparent power act. period cumulated active power import act. period cumulated active power export act. period cumulated reactive power import act. period cumulated reactive power export act. period cumulated apparent power act. period Max. value active power act. period min. value active power act. period Max. value reactive power act. period min. value reactive power act. period Max. value apparent power act. period min. value apparent power act. period real load profile period length act. period real load profile subinterval length act. period information flag bytes act. period powerfactor import powerfactor export Page 5 / 6
Auslesen der größten OID Die höchste OID ist wie beschrieben im Load profile counter unter Modbus Register 0x00E4 hinterlegt und kann mit Modbus FC 0x03 ausgelesen werden. Abhängig vom verwendeten Modbustool muss die Registeradresse eventuell um -1 oder +1 korrigiert werden. In diesem Beispiel um -1. Die Abfrage geht also an Registeradresse 0x00E3. Request: Response: Höchste OID Auslesen aller Einträge Nun kann jeder Eintrag zwischen der kleinsten (0x003045) und der größten (0x00349D) OID adressiert und in einer Schleife ausgelesen werden. Page 6 / 6