×
Siemens Industry Online Support
Siemens AG
Beitragstyp: FAQ Beitrags-ID: 64870017, Beitragsdatum: 09.10.2012
(0)
Bewerten

PAC4200 - Lastgang-Daten über Modbus FC 0x64 auslesen

  • Beitrag
  • Betrifft Produkt(e)

FRAGE:

Wie kann der im PAC4200 gespeicherte Lastgang ausgelesen werden?

 

ANTWORT:



Die Funktionalität zum Auslesen der im PAC4200 gespeicherten Lastgangsdaten ist in der Software powerconfig und powermanger 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 Modubs/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 Lastprofilspeichers

Der Lastprofilspeicher ist in 5 Kanäle aufgeteilt und beinhaltet jeweils die Werte für:

Channel 1:    Wirkleistung Bezug (active power import)
Channel 2:    Wirkleistung Abgabe (active power export)
Channel 3:    Blindleistung Bezug (reactive power import)
Channel 4:    Blindleistung Abgabe (reactive power export)
Channel 5:    Scheinleistung (apparent power)

Über einen "Data identifier" (Tabelle 2) kann der Nutzer zwischen 6 verschiedenen Data-Sets wählen, welche die Daten entsprechend zusammenstellen (average, cumulated, extrema) und bei einer Anfrage über Modbus versenden.

Jeder einzelne Eintrag im Lastgang-Speicher ist mit einer eindeutigen OID (Object 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 0XX00E4 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 folgende Schritte notwendig:

    1. Abfrage auf OID 0x00000000. Als Antwort wird der älteste Eintrag des Lastgangs 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 Abfrage mehrere Einträge gleichzeitig auszulesen. Auf Grund der maximalen Länge von 240 Byte einer Modbus-Antwort wird empfohlen einzeln auszulesen.


Die ausgelesenen Daten sind abschließend entsprechend Tabelle 4 zu interpretieren und im Format zu wandeln.


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
 


Beschreibung
 

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

 

Table 2 - Data identifier (Byte 10)      

Description

Number

channels 1 to 5 (average and cumulated) with extrema

0x00

channel 1 (average and cumulated) with extrema

0x01

channel 2 (average and cumulated) with extrema

0x02

channel 3 (average and cumulated) with extrema

0x03

channel 4 (average and cumulated) with extrema

0x04

channel 5 (average and cumulated) with extrema

0x05

channels 1 to 5 (average and cumulated) with extrema and powerfactors import/export

0x06

channels 1 to 5 (average) with extrema

0x10

channel 1 (average) with extrema

0x11

channel 2 (average) with extrema

0x12

channel 3 (average) with extrema

0x13

channel 4 (average) with extrema

0x14

channel 5 (average) with extrema

0x15

channels 1 to 5 (average) with extrema and powerfactors import/export

0x16

channels 1 to 5 (cumulated) with extrema

0x20

channel 1 (cumulated) with extrema

0x21

channel 2 (cumulated) with extrema

0x22

channel 3 (cumulated) with extrema

0x23

channel 4 (cumulated) with extrema

0x24

channel 5 (cumulated) with extrema

0x25

channels 1 to 5 (cumulated) with extrema and powerfactors import/export

0x26

channels 1 to 5 (average and cumulated) without extrema

0x30

channel 1 (average and cumulated) without extrema

0x31

channel 2 (average and cumulated) without extrema

0x32

channel 3 (average and cumulated) without extrema

0x33

channel 4 (average and cumulated) without extrema

0x34

channel 5 (average and cumulated) without extrema

0x35

channels 1 to 5 (average and cumulated) without extrema and powerfactors import/export

0x36

channels 1 to 5 (average) without extrema

0x40

channel 1 (average) without extrema

0x41

channel 2 (average) without extrema

0x42

channel 3 (average) without extrema

0x43

channel 4 (average) without extrema

0x44

channel 5 (average) without extrema

0x45

channels 1 to 5 (average) without extrema and powerfactors import/export

0x46

channels 1 to 5 (cumulated) without extrema

0x50

channel 1 (cumulated) without extrema

0x51

channel 2 (cumulated) without extrema

0x52

channel 3 (cumulated) without extrema

0x53

channel 4 (cumulated) without extrema

0x54

channel 5 (cumulated) without extrema

0x55

channels 1 to 5 (cumulated) without extrema and powerfactors import/export

0x56


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 übermittelnden 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


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)

4 byte

average active power import act. period

4 byte

average active power export act. period

4 byte

average reactive power import act. period

4 byte

average reactive power export  act. period

4 byte

average apparent power act. period

4 byte

cumulated active power import act. period

4 byte

cumulated active power export act. period

4 byte

cumulated reactive power import act. period

4 byte

cumulated reactive power export  act. period

4 byte

cumulated apparent power act. period

4 byte

Max. value active power  act. period

4 byte

min. value active power  act. period

4 byte

Max. value reactive power act. period

4 byte

min. value reactive power  act. period

4 byte

Max. value apparent power act. period

4 byte

min. value apparent power act. period

4 byte

real load profile period length  act. period

4 byte

real load profile subinterval length  act. period

4 byte

information flag bytes act. period

4 byte

powerfactor import

4 byte

powerfactor export

4 byte

 



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.
 

PAC4200_Modbus_0x64_Read_Load_Data_DE.pdf ( 133 KB )


Securityhinweise
Um technische Infrastruktur, Systeme, Maschinen und Netzwerke gegen Cyber-Bedrohungen zu sichern, ist es erforderlich, ein ganzheitliches IT Security-Konzept zu implementieren (und kontinuierlich aufrechtzuerhalten), das dem aktuellen Stand der Technik entspricht. Die Produkte und Lösungen von Siemens formen nur einen Bestandteil eines solchen Konzepts. Weitergehende Informationen über Cyber Security finden Sie unter
https://www.siemens.com/cybersecurity#Ouraspiration.