Mikroelektronik-Anwendung Kai Kühn Ingenieurbüro. Wir bieten individuelle / kundenspezifische Lösungen, Messdatenerfassung, Hardware und Software.
Das Ingenieurbüro Kai Kühn bietet Standardlösungen für Messdatenerfassung und Mengendatenerfassung, sowie individuelle Lösungen / Entwicklungen für die Bereiche Messtechnik, Steuerungstechnik, Regelungstechnik und Automatisierung.
Die Firma hat ihren Sitz in Bremen.

Mikroelektronik-Anwendung
Kai Kühn | Ingenieurbüro

VISComm

VISComm Control 3.0
ActiveX-Steuerelement zur Kommunikation mit den VIS E/A-Modulen

 

Inhaltsverzeichnis

1. Allgemeines
1.1 Systemvoraussetzungen
1.2
Installation
1.3
Distribution

2. Anwendung
2.1 Serielle Schnittstelle und Baudrate
2.2
Modulregistrierung
2.3
Datenaustausch
2.3.1
Indexbasierter Zugriff auf Ein-/Ausgänge
2.3.2
Modulbasierter Zugriff auf Ein-/Ausgänge
 

3. Referenz
3.1 Eigenschaften
3.1.1
Baudrate
3.1.2
CommPort
3.2
Funktionen
3.2.1
AboutBox
3.2.2
GetAI
3.2.3
GetAICount
3.2.4
GetAICountTotal
3.2.5
GetAIEx
3.2.6
GetAOCount
3.2.7
GetAOCountTotal
3.2.8
GetBI
3.2.9
GetBICount
3.2.10
GetBICountTotaI
3.2.11
GetBIDec
3.2.12
GetBIEx
3.2.13
GetBIHex
3.2.14
GetBIString
3.2.15
GetBOCount
3.2.16
GetBOCountTotaI
3.2.17
GetCounter
3.2.18
GetCounterEx
3.2.19
ModuleReg
3.2.20
ModuleRegBegin
3.2.21
ModuleRegEnd
3.2.22
SetBO
3.2.23
SetBODec
3.2.24
SetBOHex
3.2.25
SetBOString
3.2.26
Start
3.2.27
Stop
 

 

1. Allgemeines

1.1 Systemvoraussetzungen

  • Windows 95/98/ME, Windows NT/2000/XP
  • Pentium Prozessor oder kompatibel
  • Die aktuellsten Service Packs des jeweiligen Betriebssystems, sowie die der verwendeten Entwicklungsumgebungen sollten installiert sein.

 

1.2 Installation
Die Installation des Steuerelements ist ganz einfach:

  • Legen Sie die Installations-CD in das CD-Laufwerk Ihres Rechners und führen Sie die Datei VISComm30_setup.exe aus.
  • Folgen Sie den Anweisungen des Installationsprogramms.

 

1.3 Distribution
Sie dürfen das in Ihre Anwendung integrierte VISComm-Steuerelement ohne irgendwelche Lizenzen weitergeben.

 

1.4 Das Prinzip der Modulkommunikation
Um die Funktionsweise des VISComm-Steuerelements besser zu verstehen, ist es hilfreich etwas über das Prinzip der Modulkommunikation der VIS-E/A-Module zu erfahren.

Die Module senden Ihre Daten niemals selbsttätig. Die einzelnen Module müssen sozusagen dazu aufgefordert werden ihre Daten zu senden. Diese Aufforderung geschieht mit Hilfe eines Anforderungstelegramms. Dieses Telegramm ist eine einfache ASCII-Zeichenkette, die die Modulnummer des entsprechenden Moduls, sowie einige Zusatzinformationen enthält. Erst nachdem das Modul dieses Telegramm erhalten hat, wird es aktiv und sendet seine Daten in Form einer ASCII-Zeichenkette zurück.

 

2. Anwendung
Der folgende Abschnitt gibt eine Übersicht darüber, wie das VISComm-Steuerelement verwendet wird.

Bevor das VISComm-Steuerelement mit den Modulen kommunizieren kann, müssen die folgenden Schritte vorgenommen werden:

  • Einstellung der seriellen Schnittstelle und der Übertragungsrate (2.1)
  • Registrierung der zu verwendenden Module (2.2)

 

2.1 Serielle Schnittstelle und Baudrate
Das Einstellen der verwendeten seriellen Schnittstelle und der von den Modulen unterstützten Übertragungsrate geschieht durch das Setzen der Eigenschaften
CommPort (3.1.2) und Baudrate (3.1.1).

Beispiel:
viscomm.CommPort = "COM1"
viscomm.Baudrate = 9600

Da alle unsere VIS-Module zur Zeit auf eine Übertragungsgeschwindigkeit von 9600 Baud eingestellt sind und dies auch der Standardwert der Eigenschaft Baudrate ist, kann diese Einstellung erst einmal vernachlässigt werden. Sie ist jedoch notwendig, falls wir einen Teil oder alle unsere Module eines Tages umstellen sollten.

 

2.2 Modulregistrierung
Die Modulregistrierung funktioniert nach dem folgenden Schema:

  • Registrierung starten: ModuleRegBegin() (3.2.20)
  • Module registrieren: ModuleReg() (3.2.19)
  • Registrierung beenden: ModuleRegEnd() (3.2.21)

Die Reihenfolge, in der Sie Ihre Module beim VISComm-Steuerelement registrieren, bestimmt auch die Nummerierung der Ein- und Ausgänge der VIS-Module für den indexbasierten Datenaustausch (2.3.1). Es werden jeweils alle Eingänge und alle Ausgänge entsprechend der Reihenfolge der Registrierung einfach durchnummeriert.

Beispiel:
viscomm.ModuleRegBegin()
viscomm.ModuleReg("01", "01680")
viscomm.ModuleReg("02", "01680")
viscomm.ModuleRegEnd()

 

2.3 Datenaustausch
Um Daten mit den VIS-Modulen austauschen zu können, muß zuerst die Ein-/Ausgabeverarbeitung des VISComm-Steuerelements gestartet werden (siehe
Start() 3.2.26). Diese Ein-/Ausgabeverarbeitung stellt zuerst eine Verbindung zu den VIS-Modulen her, fragt dann ständig alle Daten der Module ab und stellt diese im Steuerelement zum Abholen bereit, bzw. sendet eventuell veränderte Ausgangszustände an die VIS-Module.

Beispiel:
viscomm.Start()
.
.
[Datenaustausch]
.
.
viscomm.Stop()

Es gibt zwei Arten des Datenaustausches, die in den folgenden beiden Absätzen erläutert werden.

 

2.3.1 Indexbasierter Zugriff auf Ein-/Ausgänge
Die Reihenfolge, nach der die Module bei der Modulregistrierung (
2.2) registriert wurden, bestimmt die Nummerierung der Ein- und Ausgänge.
Achtung! Auf den Modulen sind die einzelnen Ein-/Ausgänge mit 0...7 bzw. 0...15 gekennzeichnet. Die Nummerierung der Ein-/Ausgänge beim indexbasierten Zugriff fängt jedoch bei 1 an.

Folgendes Beispiel fragt jeweils den 1. analogen Eingang beider Module ab:
(Kanal 0 von Modul "01" und Kanal 0 von Modul "02")

viscomm.CommPort = "COM1"
viscomm.ModuleRegBegin()
viscomm.ModuleReg("01", "01600")
viscomm.ModuleReg("02", "01600")
viscomm.ModuleRegEnd()
viscomm.Start()
.
.
nWert1 = viscomm.GetAI(1)
nWert2 = viscomm.GetAI(17)
.
.
viscomm.Stop()

Die folgenden Funktionen können für den indexbasierten Zugriff verwendet werden:

GetAI() (3.2.2)
GetBI() (3.2.8)
GetCounter() (3.2.17)
SetBO() (3.2.22)

 

2.3.2 Modulbasierter Zugriff auf Ein-/Ausgänge
Beim modulbasierten Zugriff, wird gezielt auf den gewünschten Ein-/Ausgang eines bestimmten Moduls zugegriffen. Die Reihenfolge der Modulregistrierung (
2.2) spielt hier keine Rolle.

Folgendes Beispiel fragt jeweils den 1. analogen Eingang beider Module ab:
(Kanal 0 von Modul "01" und Kanal 0 von Modul "02")

viscomm.CommPort = "COM1"
viscomm.ModuleRegBegin()
viscomm.ModuleReg("01", "01600")
viscomm.ModuleReg("02", "01600")
viscomm.ModuleRegEnd()
viscomm.Start()
.
.
nWert1 = viscomm.GetAIEx("01", 0)
nWert2 = viscomm.GetAIEx("02", 0)
.
.
viscomm.Stop()

Die folgenden Funktionen können für den modulbasierten Zugriff verwendet werden:

GetAIEx() (3.2.5)
GetBIEx() (3.2.12)
GetBIDec() (3.2.11)
GetBIHex() (3.2.13)
GetBIString() (3.2.14)
GetCounterEx() (3.2.18)
SetBODec()
(3.2.23)
SetBOHex() (3.2.24)
SetBOString() (3.2.25)

 

3. Referenz
Im folgenden Abschnitt werden die verschiedenen Eigenschaften, Funktionen und Ereignisse des Steuerelements beschrieben.

3.1 Eigenschaften

3.1.1 Baudrate

Syntax: [container.]viscomm.Baudrate [= long nWert]
Datentyp: Numerisch (long)
Beschreibung: Die Übertragungsgeschwindigkeit, mit der die VIS-Module arbeiten.
Der Standardwert ist 9600.

3.1.2 CommPort

Syntax: [container.]viscomm.CommPort [= BSTR strWert]
Datentyp: String (BSTR)
Beschreibung: Bezeichnung der Schnittstelle, an der die VIS-Module angeschlossen sind, z.B. "COM1".
Der Standardwert ist "COM1".

Zum Inhaltsverzeichnis

 

3.2 Funktionen

3.2.1 AboutBox

Syntax: [container.]viscomm.AboutBox()
Parameter: -
Rückgabewert: -
Beschreibung: Zeigt Informationen über VISComm in einem seperaten Fenster an.

3.2.2 GetAI

Syntax: long [container.]viscomm.GetAI(long nKanalIndex)
Parameter: Numerisch (long)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt den Meßwert eines analogen Eingangs zurück (indexbasierter Zugriff (2.3.1)).
Voraussetzung zum Einlesen von Meßdaten ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Im Falle eines Fehlers wird -1 zurückgegeben.

3.2.3 GetAICount

Syntax: long [container.]viscomm.GetAICount(BSTR strModulnummer)
Parameter: String (BSTR)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Anzahl der analogen Eingänge eines Moduls zurück.
Im Falle eines Fehlers wird 0 zurückgegeben.

3.2.4 GetAICountTotal

Syntax: long [container.]viscomm.GetAICountTotal()
Parameter: -
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Gesamtanzahl der analogen Eingänge aller beim Steuerelement registrierten Module zurück.
Im Falle eines Fehlers wird 0 zurückgegeben.

3.2.5 GetAIEx

Syntax: long [container.]viscomm.GetAIEx(BSTR strModulnummer, long nKanalnummer)
Parameter: 1. String (BSTR)
2. Numerisch (long)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt den Meßwert eines analogen Eingangs zurück (modulbasierter Zugriff (2.3.2).
Der analoge Eingang wird über die Modulnummer (z.B. "01") und der entsprechenden Kanalnummer (0...n) angesprochen.
Voraussetzung zum Einlesen von Meßdaten ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Im Falle eines Fehlers wird -1 zurückgegeben.

3.2.6 GetAOCount

Syntax: long [container.]viscomm.GetAOCount(BSTR strModulnummer)
Parameter: String (BSTR)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Anzahl der analogen Ausgänge eines Moduls zurück.
Im Falle eines Fehlers wird 0 zurückgegeben.

3.2.7 GetAOCountTotal

Syntax: long [container.]viscomm.GetAOCountTotal()
Parameter: -
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Gesamtanzahl der analogen Ausgänge aller beim Steuerelement registrierten Module zurück.
Im Falle eines Fehlers wird 0 zurückgegeben.

3.2.8 GetBI

Syntax: long [container.]viscomm.GetBI(long nKanalIndex)
Parameter: Numerisch (long)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt den Wert eines binären Eingangs zurück (indexbasierter Zugriff (2.3.1)).
Voraussetzung zum Einlesen von Meßdaten ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Im Falle eines Fehlers wird -1 zurückgegeben.

3.2.9 GetBICount

Syntax: long [container.]viscomm.GetBICount(BSTR strModulnummer)
Parameter: String (BSTR)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Anzahl der binären Eingänge eines Moduls zurück.
Im Falle eines Fehlers wird 0 zurückgegeben.

3.2.10 GetBICountTotal

Syntax: long [container.]viscomm.GetBICountTotal()
Parameter: -
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Gesamtanzahl der binären Eingänge aller beim Steuerelement registrierten Module zurück.
Im Falle eines Fehlers wird 0 zurückgegeben.

 

3.2.11 GetBIDec

Syntax: long [container.]viscomm.GetBIDec(BSTR strModulnummer)
Parameter: String (BSTR)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Zustände der binären Eingänge zurück (modulbasierter Zugriff (2.3.2).
Der zurückgegebene Dezimalwert entspricht dem Wert des Bitmusters, das die Zustände der einzelnen binären Ausgänge repräsentiert (siehe Beschreibung von
3.2.14)
Voraussetzung zum Abfragen von Eingängen ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Im Falle eines Fehlers wird -1 zurückgegeben.

3.2.12 GetBIEx

Syntax: long [container.]viscomm.GetBIEx(BSTR strModulnummer, long nKanalnummer)
Parameter: 1. String (BSTR)
2. Numerisch (long)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt den Wert eines binären Eingangs zurück (modulbasierter Zugriff (2.3.2).
Der binäre Eingang wird über die Modulnummer (z.B. "01") und der entsprechenden Kanalnummer (0...n) angesprochen.
Voraussetzung zum Einlesen von Meßdaten ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Im Falle eines Fehlers wird -1 zurückgegeben.

3.2.13 GetBIHex

Syntax: BSTR [container.]viscomm.GetBIHex(BSTR strModulnummer)
Parameter: String (BSTR)
Rückgabewert: String (BSTR)
Beschreibung: Gibt die Zustände der binären Eingänge zurück (modulbasierter Zugriff (2.3.2).
Der zurückgegebene Hexadezimalwert entspricht dem Wert des Bitmusters, das die Zustände der einzelnen binären Ausgänge repräsentiert (siehe Beschreibung von
3.2.14)
Voraussetzung zum Abfragen von Eingängen ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Im Falle eines Fehlers wird eine leere Zeichenkette zurückgegeben.

3.2.14 GetBIString

Syntax: BSTR [container.]viscomm.GetBIString(BSTR strModulnummer)
Parameter: String (BSTR)
Rückgabewert: String (BSTR)
Beschreibung: Gibt die Zustände der binären Eingänge als Bitmuster zurück (modulbasierter Zugriff (2.3.2).
Das Bitmuster besteht aus einer Anzahl von "0" und "1", die den jeweiligen Zustand des binären Eingangs repräsentieren, wobei das niederwertigste Bit (ganz rechts) den ersten binären Eingang darstellt.

Beispiel:
VISComm.SetBOString("03", "00001111") setzt die ersten 4 binären Eingänge des Moduls 03 auf 1.

Voraussetzung zum Abfragen von Eingängen ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion Start() (3.2.26).
Im Falle eines Fehlers wird eine leere Zeichenkette zurückgegeben.

3.2.15 GetBOCount

Syntax: long [container.]viscomm.GetBOCount(BSTR strModulnummer)
Parameter: String (BSTR)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Anzahl der binären Ausgänge eines Moduls zurück.
Im Falle eines Fehlers wird 0 zurückgegeben.

3.2.16 GetBOCountTotal

Syntax: long [container.]viscomm.GetBOCountTotal()
Parameter: -
Rückgabewert: Numerisch (long)
Beschreibung: Gibt die Gesamtanzahl der binären Ausgänge aller beim Steuerelement registrierten Module zurück.
Im Falle eines Fehlers wird 0 zurückgegeben.

3.2.17 GetCounter

Syntax: long [container.]viscomm.GetCounter(long nKanalIndex)
Parameter: Numerisch (long)
Rückgabewert: Numerisch (long)
Beschreibung: Gibt den Zählerwert eines binären Eingangs zurück (indexbasierter Zugriff (2.3.1)).
Voraussetzung zum Einlesen von Meßdaten ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Im Falle eines Fehlers wird -1 zurückgegeben.

3.2.18 GetCounterEx

Syntax: long [container.]viscomm.GetCounterEx(BSTR strModulnummer, long nKanalnummer)
Parameter: 1. String (BSTR)
2. Numerisch (long);
Rückgabewert: Numerisch (long)
Beschreibung: Gibt den Zählerwert eines binären Eingangs zurück (modulbasierter Zugriff (2.3.2).
Der Zähler des binären Eingangs wird über die Modulnummer (z.B. "01") und der entsprechenden Kanalnummer (0...n) angesprochen.
Voraussetzung zum Einlesen von Meßdaten ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Im Falle eines Fehlers wird -1 zurückgegeben.

3.2.19 ModuleReg

Syntax: boolean [container.]viscomm.ModuleReg(BSTR strModulnummer, BSTR strModultyp)
Parameter: 1. String (BSTR)
2. String (BSTR)
Rückgabewert: Logisch (boolean)
Beschreibung: Fügt ein Modul der Modulregistrierung hinzu.
Voraussetzung dafür ist, das vorher der Vorgang der Modulregistrierung mit
ModuleRegBegin() (3.2.20) gestartet wurde.
Nähere Hinweise zur Modulregistrierung im Allgemeinen finden Sie unter
2.2 Modulregistrierung.

Gültige Modultypen:

0800
0808
0844
0880
8880
01600
01608
01680
16000
16080

Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

3.2.20 ModuleRegBegin

Syntax: boolean [container.]viscomm.ModuleRegBegin()
Parameter: -
Rückgabewert: Logisch (boolean)
Beschreibung: Startet den Vorgang der Modulregistrierung.
Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

3.2.21 ModuleRegEnd

Syntax: boolean [container.]viscomm.ModuleRegEnd()
Parameter: -
Rückgabewert: Logisch (boolean)
Beschreibung: Beendet den Vorgang der Modulregistrierung.
Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

3.2.22 SetBO

Syntax: boolean [container.]viscomm.SetBO(long nKanalIndex, long nWert)
Parameter: 1. Numerisch (long)
2. Numerisch (long)
Rückgabewert: Logisch (boolean)
Beschreibung: Setzt einen binären Ausgang auf den übergebenen Wert (indexbasierter Zugriff (2.3.1)).
Voraussetzung zum Setzen von Ausgängen ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

3.2.23 SetBODec

Syntax: boolean [container.]viscomm.SetBODec(BSTR strModulnummer, long nDezimalWert)
Parameter: 1. String (BSTR)
2. Numerisch (long)
Rückgabewert: Logisch (boolean)
Beschreibung: Setzt alle binären Ausgänge eines Moduls entsprechend dem übergebenen Wert (modulbasierter Zugriff (2.3.2).
Der übergebene Dezimalwert entspricht dem Wert des gewünschten Bitmusters, daß die Zustände der einzelnen binären Ausgänge repräsentiert (siehe Beschreibung von
3.2.25)
Voraussetzung zum Setzen von Ausgängen ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

3.2.24 SetBOHex

Syntax: boolean [container.]viscomm.SetBOHex(BSTR strModulnummer, BSTR strHexadezimalWert)
Parameter: 1. String (BSTR)
2. String (BSTR)
Rückgabewert: Logisch (boolean)
Beschreibung: Setzt alle binären Ausgänge eines Moduls entsprechend dem übergebenen Wert (modulbasierter Zugriff (2.3.2).
Der übergebene Hexadezimalwert entspricht dem Wert des gewünschten Bitmusters, daß die Zustände der einzelnen binären Ausgänge repräsentiert (siehe Beschreibung von
3.2.25)
Voraussetzung zum Setzen von Ausgängen ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion
Start() (3.2.26).
Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

3.2.25 SetBOString

Syntax: boolean [container.]viscomm.SetBOString(BSTR strModulnummer, BSTR strBitMuster)
Parameter: 1. String (BSTR)
2. String (BSTR)
Rückgabewert: Logisch (boolean)
Beschreibung: Setzt alle binären Ausgänge eines Moduls entsprechend dem übergebenen Bitmuster (modulbasierter Zugriff (2.3.2).
Das Bitmuster besteht aus einer Anzahl von "0" und "1", die den jeweiligen Zustand des binären Ausgangs repräsentieren, wobei das niederwertigste Bit (ganz rechts) den ersten binären Ausgang darstellt.

Beispiel:
VISComm.SetBOString("03", "00001111") setzt die ersten 4 binären Ausgänge des Moduls 03 auf 1.

Voraussetzung zum Setzen von Ausgängen ist, das die Ein-/Ausgabeverarbeitung des Steuerelements gestartet worden ist. Sehen Sie dazu bitte die Funktion Start() (3.2.26).
Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

3.2.26 Start

Syntax: boolean [container.]viscomm.Start()
Parameter: -
Rückgabewert: Logisch (boolean)
Beschreibung: Startet die Ein-/Ausgabeverarbeitung des Steuerelements.
Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

3.2.27 Stop

Syntax: boolean [container.]viscomm.Stop()
Parameter: -
Rückgabewert: Logisch (boolean)
Beschreibung: Beendet die Ein-/Ausgabeverarbeitung des Steuerelements.
Der Rückgabewert gibt an, ob die Funktion erfolgreich ausgeführt wurde.

Zum Inhaltsverzeichnis

Zum Inhaltsverzeichnis