Benutzerdefinierte Objektmodelle

Es gibt zwei Situationen, in denen Sie DPIs basierend auf einem benutzerdefinierten Objektmodell erstellen möchten:

  1. Wenn Sie das gesamte Modbus-Gerät als Datenpunkt mit Eigenschaften modellieren können, die Register darstellen.
  2. Wenn Sie ein Register als Datenpunkt mit Eigenschaften modellieren können, die Teile der Bytes des Registers darstellen. Unter Wahl benutzerdefinierter Objektmodelle gegenüber Standard-Objektmodellen im Abschnitt Zusätzliche Konfigurationsparameter wird ein Anwendungsfall beschrieben.

In beiden Fällen müssen Sie das Objektmodell definieren, Sie müssen die Importregeln aber unterschiedlich behandeln.

Benutzerdefiniertes Objektmodell entwerfen

Bevor Sie mit dem Erstellen Ihres benutzerdefinierten Objektmodells beginnen, müssen Sie die Eigenschaften und ihre Datentypen identifizieren. Normalerweise erfolgt dies nach der Festlegung der Applikationsmerkmale. Ein Stromzähler liefert beispielsweise Mess- und Konfigurationsparameter. Bestimmen Sie mit Hilfe des Datenblatts oder des Konfigurationshandbuchs des Produkts die Registeradresse, den Datentyp, die Konfigurationseinheiten, den Bereich usw. Das Objektmodell wird zunächst, basierend auf den Parametern des zu integrierenden Gerätes und dessen Datentyp, in einer CSV-Datei formuliert. Die Formulierung (siehe Abschnitt Struktur der benutzerdefinierten Objektmodellvorlage) kann anschliessend in die Managementstation importiert und um Informationen wie Konfigurationseinheiten und Bereich erweitert werden.

Struktur der benutzerdefinierten Objektmodellvorlage

Die Struktur des Gerätes kann in Bezug auf das Objektmodell definiert werden. Schauen Sie sich zum Beispiel das folgende hypothetische Datenblatt eines Messinstruments vom Typ XY an.

Eigenschaftsname

Registeradresse

Datentyp

Richtung

Voltage Phase 1

40001

Float

Ausgang

Voltage Phase 2

40003

Float

Ausgang

Voltage Phase 3

40005

Float

Ausgang

Current Phase 1

40007

Float

Ausgang

Current Phase 2

40009

Float

Ausgang

Current Phase 3

40011

Float

Ausgang

Total Power

40013

Float

Ausgang

Total Power Apparent

40015

Float

Ausgang

Total Power Reactive

40017

Float

Ausgang

Leistungsfaktor

40019

Float

Ausgang

Energie-

40021

Uint

Ausgang

Correction Factor

40023

Float

Eingang

Die folgende Abbildung zeigt eine CSV-Datei für das Objektmodell gemäss dem obigen Datenblatt.

Beispiel einer individuellen CSV-Datei für ein Gerät (in Notepad geöffnet)
Beispiel einer individuellen CSV-Datei für ein Gerät (in Notepad geöffnet)
Beispiel einer individuellen CSV-Datei für ein Gerät (in Excel geöffnet)
Beispiel einer individuellen CSV-Datei für ein Gerät (in Excel geöffnet)

Bei der Definition der CSV-Datei müssen Sie die Datenpunkte, das Datentypelement und den Datentyp für jedes Objektmodell, das Sie erstellen möchten, im folgenden Format angeben:

# DPT-Name;DPE-Name;Typ;(Referenz);[DPE Name Typ (Referenz) .... ]

Beispiel

Modbus_MeterTypeXY,Voltage_Phase1,Float

Datenpunkttyp, Datenpunktelement und Datentyp

Daten

Beschreibung

DPT-Name

Name des Datenpunktes des Objektmodells.
Hinweis: Dieser muss in der Datenbank eindeutig sein.

DPE-Name

Name des DPE (der Eigenschaft), das mit dem Objektmodell verbunden ist.
Hinweis: Der Wert muss im Datenpunkt (oder der internen Struktur) eindeutig sein.

Typ:(Referenz)

Zeichenfolge, die die Eigenschaft (Element) kennzeichnet.

  • Wenn das Element ein Verweis ist, müssen Sie auch den referenzierten Datenpunkt angeben.
  • Wenn das Element eine Struktur ist, müssen alle internen Datenpunktelemente definiert werden.

Ausführliche Informationen zu den zulässigen Werten entnehmen Sie bitte der nachfolgenden Tabelle Elementtypen.

[DPE Name Type (Reference)]

Definition der Eigenschaft (Element) anhand des Namens und Typs.

Elementtypen

Typenangabe

Beschreibung

Char

Zeichen

Uint

Vorzeichenlose Ganzzahl

Int

Ganze Zahl

Float

Doppel

Bool

Boolescher Wert

Eine als Vorlage dienende CSV-Beispieldatei mit dem Namen Modbus_template_7.0_CustomObjectModel_1.csv ist im Ordner GmsMainProject\profiles\ModbusDataTemplate. Diese CSV-Datei kann zur Erstellung des benutzerdefinierten Objektmodells verwendet werden.

Wir empfehlen Ihnen, bei der Festlegung Ihrer benutzerdefinierten Objektmodelle die folgenden Situationen zu berücksichtigen. In jedem der Situationen können Sie auch die EinAus-Eigenschaften definieren.

Situation 1

Wenn Sie 20 Instanzen des Messgeräts XY erstellen wollen, von denen jede über ein eigenes Gateway integriert wird, muss die CSV-Datei wie folgt aussehen. Der Name des Objektmodells muss in der Spalte ObjectModel des Geräteeintrags angegeben werden.

Benutzerdefiniertes Gerät, Szenario 1 (CSV-Datei mit Notepad geöffnet)
Benutzerdefiniertes Gerät, Szenario 1 (CSV-Datei mit Notepad geöffnet)
Benutzerdefiniertes Gerät, Szenario 1 (CSV-Datei mit Excel geöffnet)
Benutzerdefiniertes Gerät, Szenario 1 (CSV-Datei mit Excel geöffnet)

Wenn Sie die CSV-Datei öffnen, müssen Sie die folgenden Elementtypen eingeben:

  • Modbus-Schnittstelle
  • Modbus benutzerdefinierte Geräte

Die Daten der CSV-Datei werden so sortiert, dass sie die Hierarchie der Datenpunkte eines Objektmodells darstellen, das in der Managementsicht des System Browsers erstellt werden soll.

Situation 2 für Modbus

Wenn Sie 20 Instanzen des Punkts ABC unter dem Messgerät_ABC (über nur eine Gateway-Schnittstelle 192.168.0.1 integriert) erstellen wollen, muss die CSV-Datei wie folgt aussehen.

Der Name des Objektmodells muss in der Spalte ObjectModel des Punkteintrags angegeben werden.

Benutzerdefinierte Geräte, Szenario 2
Benutzerdefinierte Geräte, Szenario 2
Benutzerdefinierte Geräte, Szenario 2, Excel
Benutzerdefinierte Geräte, Szenario 2, Excel

Wenn Sie die CSV-Datei öffnen, müssen Sie die folgenden Elementtypen eingeben:

  • Modbus-Schnittstelle
  • Modbus-Gerät
  • Modbus benutzerdefinierte Datenpunkte

Situation 3 für Modbus-Brandmeldezentrale

Dieses Szenario ist eine Erweiterung der Situation 2.

Es gibt mehrere Modbus-Geräte, insbesondere Brandmelder, mit begrenztem Speicherplatz. Zu diesen Geräten gehören einige Punkte, die als einzelnes Bit adressierbar sind, da sie aufgrund des begrenzten Speicherplatzes kein volles Byte oder Register (zwei Byte) zugewiesen bekommen können. Sie können über eine Kombination von Offset und Subindexierung auf Bitebene adressiert werden.

In einem solchen Szenario werden Offset und Subindex in den Importregeln und in der CSV-Datei separat definiert. Die kumulierten Werte des Offsets und Subindex werden nach den folgenden Formeln ermittelt:

  • Endgültiger Offset = Offset aus Importregeln + Offset aus CSV-Datei
  • Endgültiger Subindex = Subindex aus Importregeln + Subindex aus CSV-Datei

Ein Register besteht aus 2 Byte (oder 16 Bit).

Ein Brandmeldegerät verfügt beispielsweise über vier boolesche Eingangseigenschaften. Der Gesamtspeicherbedarf für jedes Gerät beträgt daher vier Bit. Wenn Sie vier Instanzen desselben Brandmelders haben, beträgt der Gesamtspeicherbedarf also 16 Bit, was einem Register entspricht. Anstatt also jedem Brandmelder ein separates Register zuzuweisen (was insgesamt vier Register benötigen würde), können sich die Geräte ein einziges Register teilen, wodurch Sie Speicherplatz sparen. In den folgenden Abschnitten werden zwei Verfahren beschrieben, um dies zu erreichen.

Situation 3, Fall A

Diese Situation trifft zu, wenn mehrere Eigenschaften aufeinanderfolgende Bits in einem einzigen Register einnehmen.

Gehen wir beispielsweise davon aus, dass die Importregeln ein Datenmodell FD01 enthalten, bei dem alle Eigenschaften aufeinanderfolgende Bits eines einzigen Registers einnehmen, wie in der folgenden Abbildung dargestellt.

info

Hinweis:
Der Datentyp der Eigenschaften kann über den Konfigurator des Datenmodells in GmsBool geändert werden. Beide haben dieselbe Bedeutung. Wenn der Datentyp GmsBool ist, können Sie die Textgruppen jedoch verknüpfen. Die Textgruppen für PvssBool können Sie nicht verknüpfen.

Sie wollen nun vier Instanzen dieses Brandmelders so anlegen, dass sie nur ein Register benötigen und ihre Eigenschaften die Bits des Registers wie folgt belegen:

Brandmelder

Eigenschaft

Bitnummer im Register

FD01_inst01

AlarmStatus

0

FaultStatus

1

TamperStatus

2

MaintenanceStatus

3

FD01_inst02

AlarmStatus

4

FaultStatus

5

TamperStatus

6

MaintenanceStatus

7

FD01_inst03

AlarmStatus

8

FaultStatus

9

TamperStatus

10

MaintenanceStatus

11

FD01_inst04

AlarmStatus

12

FaultStatus

13

TamperStatus

14

MaintenanceStatus

15

Sie müssen die Instanzen des Brandmelders in der CSV-Datei wie folgt definieren.

Beim Import fügt der Importer die in den Importregeln genannten Offset- und Subindex-Werte des Objektmodells dem Offset und Subindex der in der CSV-Datei genannten Instanzen jeweils hinzu. Die Formeln zur Berechnung der endgültigen Adresse jeder Eigenschaft lauten wie folgt:

  • Endgültiger Offset = Offset aus den Importregeln + Offset der Instanz aus der CSV-Datei
  • Endgültiger Subindex = Subindex aus den Importregeln + Subindex der Instanz aus der CSV-Datei
  • Endgültige Adresse = (Endgültiges Offset) + (Endgültiger Subindex)

Brandmelder

Eigenschaft

Offset im Objektmodell

Subindex im Objektmodell

Offset in CSV

Subindex in CSV

Bitnummer im Register

FD01_inst01

AlarmStatus

0

0

0

0

0

FaultStatus

0

1

0

0

1

TamperStatus

0

2

0

0

2

MaintenanceStatus

0

3

0

0

3

FD01_inst02

AlarmStatus

0

0

0

4

4

FaultStatus

0

1

0

4

5

TamperStatus

0

2

0

4

6

MaintenanceStatus

0

3

0

4

7

FD01_inst03

AlarmStatus

0

0

0

8

8

FaultStatus

0

1

0

8

9

TamperStatus

0

2

0

8

10

MaintenanceStatus

0

3

0

8

11

FD01_inst04

AlarmStatus

0

0

0

12

12

FaultStatus

0

1

0

12

13

TamperStatus

0

2

0

12

14

MaintenanceStatus

0

3

0

12

15

Das folgende Beispiel für FD01_inst04.AlarmStatus soll Ihnen helfen, die Adressberechnung besser zu verstehen.

  • Endgültiger Offset = Offset aus den Importregeln (0) + Offset der Instanz aus der CSV-Datei (0) = 0
  • Endgültiger Subindex (oder Bitzahl für Offset 0) = Subindex aus den Importregeln (0) + Subindex aus der CSV-Datei (12) = 12
  • Endgültige Adresse = (0) + (12) = 12

Situation 3, Fall B

Dieser Fall leitet sich von Fall A, Situation 3 ab.

In Fall A sind alle Eigenschaften aufeinander folgend platziert. In Fall B liegen jedoch einige der Eigenschaften im niedrigeren Byte, während die übrigen im höheren Byte liegen.

Sie können die Einträge in der CSV-Datei wie folgt ändern:

Unter Verwendung der bereits genannten Formeln zur Adressermittlung lautet die endgültige Adresse wie folgt:

Brandmelder

Eigenschaft

Offset im Objektmodell

Subindex im Objektmodell

Offset in CSV

Subindex in CSV

Bitnummer im Register

FD01_inst01

AlarmStatus

0

0

0

0

0

FaultStatus

0

1

0

0

1

TamperStatus

0

8

0

0

8

MaintenanceStatus

0

9

0

0

9

FD01_inst02

AlarmStatus

0

0

0

2

2

FaultStatus

0

1

0

2

3

TamperStatus

0

8

0

2

10

MaintenanceStatus

0

9

0

2

11

FD01_inst03

AlarmStatus

0

0

0

4

4

FaultStatus

0

1

0

4

5

TamperStatus

0

8

0

4

12

MaintenanceStatus

0

9

0

4

13

FD01_inst04

AlarmStatus

0

0

0

6

6

FaultStatus

0

1

0

6

7

TamperStatus

0

8

0

6

14

MaintenanceStatus

0

9

0

6

15

Wie in Fall A, wird anstelle von vier separaten Registern nur ein Register zur Speicherung des gesamten Objektmodells verwendet. Das Adressiermuster ist jedoch ein anderes.

Situation 3, Fall C

Das Datenmodell benötigt für die Eigenschaften zwei Byte in einem Register. Die erste Eigenschaft liegt im niedrigeren Byte und die zweite im höheren Byte.

info

Hinweis:
PvssChar wird benutzt, um ein Byte darzustellen.

In der CSV-Datei werden zwei Instanzen erstellt.

Brandmelder

Eigenschaft

Offset im Objektmodell

Offset in CSV

Endgültiges Offset

Subindex im Objektmodell

Subindex in CSV

Endgültiger Subindex

FD03_inst01

CommandStatus

0

0

0

0

0

0

ExtendedStatus

0

0

0

1

0

1

FD03_inst02

CommandStatus

0

1

1

0

0

0

ExtendedStatus

0

1

1

1

0

1

Die Instanzen FD03_inst01 und FD03_inst02 belegen jeweils separate einzelne Register. Offset 0 bedeutet das erste Byte des Registers ab der Basisadresse, während Offset 1 das zweite Byte des Registers ab der Basis bedeutet.

Objektmodell re-importieren

Bei einem Re-Import des Objektmodells per CSV-Datei werden die vorhandenen Objektmodelle aktualisiert.

Ein Re-Import ermöglicht Ihnen, die folgenden Aufgaben auszuführen:

info

Hinweis:
Beim Re-Import können keine vorhandenen Objektmodelle aus dem System gelöscht werden. Wenn Sie ein vorhandenes Objektmodell löschen möchten, wählen Sie das Objektmodell im System Browser und klicken Sie Löschen.