DATOTEC GmbH - Software & Service

PASwin

Software
Service
Components
Support
Referenzen
Kontakt
Suche starten
DATOTEC > Support > PASwin > Anleitung > Programming  

Programming

Anleitung


Gerätetreiberkonzept CompasBaseLibrary
Stand 16.08.2005

 

Klasse „Device“

 

Konstruktion

 

Im überladenen „Device“-Konstruktor eines Gerätetreibers werden die Schnittstellen (Interfaces) des Gerätes nur noch dann konstruiert und in die Auflistung Device.Interfaces eingefügt, wenn deren Anzahl und treiber-interne Namen („InterfaceName“) bekannt und nicht abhängig von der Konfiguration des Gerätes sind. Andernfalls erfolgen diese Aktionen in den überladenen Methoden „Device.Configure“ und „Device.Initialize“.

 

Methode „Dispose“

 

Diese Methode stellt sicher, daß erforderliche De-Initialisierungen von Geräten und ggf. deren Schnittstellen durchgeführt werden. Sie wird vom Hauptprogramm aufgerufen und muß bei Bedarf überladen werden.

 

Property „DeviceName“

 

Die Basisklasse „Device“ hat die String-Membervariable „deviceName“ (protected) und eine zugehörige Property „DeviceName“ (ReadOnly). Es handelt sich hierbei um den Geräte-Namen, der im Konfigurationsdialog des Hauptprogramms vom Anwender eingegeben wurde und dient u.a. zur Anzeige in den treiber-spezifischen Dialogen. „deviceName“ muß in den Methoden „Configure“, „Initialize“ und „IOTest“ der von Device abgeleiteten Klasse des Treibers mit dem Wert des Übergabeparameters „DeviceEventArgs.DeviceName“ belegt werden.

 

Typ „DeviceEventArgs“

 

Beim Aufruf der überladenen „Device“-Methoden „Configure“, „Initialize“ und „IOTest“ wird ein Objekt vom Typ „DeviceEventArgs“ übergeben. Es enthält

 

Parameter

Typ

Beschreibung

DeviceName

String

Der Name des Geräts in der Konfiguration.

Code

String

Der nur vom Gerätetreiber interpretierbare Parametercode zur Konfiguration des Geräts.

Summary

String

Eine für den Anwender verständliche Zusammenfassung der Gerätekonfiguration.

Devices

DeviceCollection

Die (bisher) konfigurierten Geräte.

Cancel

Boolean

Wahr, falls die Konfiguration des Geräts abgebrochen wurde.

MdiParent

Form

Das MDI-Container Formular.

 

Methode „Configure (DeviceEventArgs e)“

 

Beim Aufruf der Methode “Configure“ soll ein modaler Dialog zur Konfiguration des Geräts geöffnet werden. Die Konfigurationparameter werden im Parameter „e.Code“ übergeben (bzw. zurückgegeben). Bei erstmaligem Aufruf von „Configure“ ist der Parameter „e.Code“ leer und muß deshalb in der Methode vor Aufruf des Dialogs mit den geräte-typischen Default-Parametern belegt werden. Der Parameter „e.Summary soll“ eine für den Anwender verständliche Zusammenfassung der Konfiguration des Gerätes enthalten. Welche Information vor Beenden von „Configure“ im Parameter „e.Summary“ abzulegen ist, muß vom Kunden definiert werden. Außerdem müssen die Schnittstellen des Geräts vor Beenden von „Configure“ mit ihren treiber-internen Namen („InterfaceName“) konstruiert und der Auflistung „Interfaces“ des Geräts hinzugefügt werden. Im Parameter „e.Configuration“ ist eine Liste der bisherigen Geräte (mit ihrem „DeviceName“) und deren Schnittstellen (mit ihrem „InterfaceName“) der Konfiguration enthalten. Diese Geräte und ihre Schnittstellen sind vor Aufruf von „Configure“ für das aktuelle Gerät bereits vom Hauptprogramm durch Aufruf der entsprechenden „Initialize“-Methoden initialisiert worden. Für die korrekte Bereinigung des „Device“-Objektes und seiner Resourcen bzw. die evntl. erforderliche De-Initialisierung des Gerätes durch Aufruf der überladenen Methode „Dispose“ des Treibers vor erneutem Aufruf von „Configure“ ist das Hauptprogramm zuständig.

 

Methode „Initialize (DeviceEventArgs e)“

 

Mit der Methode “Initialize“ werden das Gerät und ggf. seine Schnittstellen initialisiert. Dazu muß das Gerät selbst und auch alle evntl. benötigten andere Geräte (bzw. deren Schnittstellen, z.B. zur Kommunikation) angeschlossen und betriebsbereit sein. Die Konfigurationparameter werden im Parameter „e.Code“ übergeben. Die Methode muß zunächst das Gerät selbst initialisieren. Dabei wird - je nach Treiber - bereits auf andere Geräte-Schnittstellen zugegriffen, deren Name im Format "DeviceName.InterfaceName" im Parameter „e.Code“ abgelegt ist und die mit diesem Namen in der Konfiguration (Parameter „e.Configuration“) vorhanden sein müssen. Ist das nicht der Fall, oder ist der Zugriff auf eine verwiesene Schnittstelle nicht möglich (z.B. weil sie nicht initialisiert ist), löst „Initialize“ selbst eine entspr. Exception aus. Konnte das Gerät initialisiert werden, konstruiert „Initialize“ danach alle gemäß Parameter Code möglichen Schnittstellen des Geräts mit ihren treiber-internen Namen („InterfaceName“) und fügt diese der Auflistung „Interfaces“ des Geräts hinzu. Für die korrekte Bereinigung des „Device“-Objektes und seiner Resourcen bzw. die evntl. erforderliche De-Initialisierung des Gerätes durch Aufruf der überladenen Methode „Dispose“ des Treibers vor erneutem Aufruf von „Initialize“ ist das Hauptprogramm zuständig.

 

Methode „IOTest (DeviceEventArgs e)“

 

Beim Aufruf der Methode „IOTest“ soll ein nicht modaler Dialog zum Testen des Geräts geöffnet werden. Der Dialog soll den übergebenen Parameter „e.MdiParent“ verwenden. Als Rückgabewert der Methode wird ein Verweis auf das geöffnete Formular erwartet. Vor dem ersten IO-Test werden alle Geräte und ggf. deren Schnittstellen vom Hauptprogramm durch Aufruf der entspr. „Initialize“-Methoden initialisiert. Mehrere IO-Tests verwenden eine gemeinsame Konfiguration.

 

Methode „OnIOTestCompleted (DeviceEventArgs e)“

 

Wird das IO-Test-Formular vom Anwender geschlossen, soll die Methode „OnIOTestCompleted“ aufgerufen werden. Das von Ihr gefeuerte Ereignis „IOTestCompleted“ informiert das Hauptprogramm über das Ende des IO-Tests.

 

Klasse „DeviceInterface“

 

Properties „InterfaceName“ und „CommandName“

 

Die Basisklasse „DeviceInterface“ hat zwei String-Membervariablen und zugehörige Properties für den Interface- und den Kommando-Namen.

Der Member „interfaceName“ und die zugehörige Property „InterfaceName“ (ReadOnly) stellen den treiber-internen Namen der Geräte-Schnittstelle (Interface). Dieser wird im Konstruktor bzw. den Methoden „Initialize“ und „Configure“ der zugehörigen Device-Klasse vergeben und in die Auflistung „Device.Interfaces“ des Geräts eingetragen. Er wird für den Anwender nur a) auf der Registerkarte „Schnittstellen“ des Dialogs „Konfiguration“ im Hauptprogramm zur Zuordnung zu den anwender-definierten Kommandos und ggf. b) zur Definition erforderlicher Verweise auf andere Geräte (z.B. die zu verwendende Kommunikationsschnittstelle) innerhalb der treiber-spezifischen Konfigurationsdialoge sichtbar.

Der Member „commandName“ und die zugehörige Property „CommandName“ (ReadOnly) hingegen ist der Name des Kommandos, der im Prüfschritt-Dialog Hauptprogramms vom Anwender eingegeben wurde und dient u.a. zur Anzeige in den treiber-spezifischen Dialogen. „commandName“ muß in den Methoden „Preset“, „Program“, „Teach“ und „Execute“ der von DeviceInterface abgeleiteten Klasse des Treibers mit dem Wert des Übergabeparameters „CommandEventArgs.CommandName“ belegt werden.

 

Eigenschaft „Autonomous“

 

Schnittstellen mit der Eigenschaft Autonomous = Wahr sind autonom. D.h. sie können ohne Gerät verwendet werden.

 

Methode „AllowWiring(Wiring wiring)“

 

Mit der Methode AllowWiring kann die Schnittstelle einzelne Anschlussarten auschließen. In der Regel sollen alle 3 Anschlussarten (specific = spezifisch, common = allgemein, multiplexed = gebündelt) unterstützt werden. Ist dies nicht möglich oder nicht sinnvoll, muss die Methode AllowWiring bei der nicht unterstützten Anschlussart false zurückgeben.

 

Typ „InterfaceEventArgs“

 

Beim Aufruf der überladenen „DeviceInterface“-Methode „Initialize“ wird ein Objekt vom Typ „InterfaceEventArgs“ übergeben. Es enthält:

 

Parameter

Typ

Beschreibung

InterfaceName

String

Der projektspezifische Name des Kommando-Schnittstelle.

Wiring

Wiring

Die Anschlussart der Schnittstelle: Specific = Die Prüflinge sind an einzelnen Sockeln angeschlossen. Common = Für alle Prüflinge gilt der gleiche Anschluss. Multiplexed = Ein gemeinsamer Anschluss wird mit einem Sockelumschalter mehrfach verwendet.

SymbolData

Object

Enthält bei speziellen Schnittstellenklassen (z.B. Bus-Systemen) Daten zur symbolischen Kommando-Struktur

 

Typ „CommandEventArgs“

 

Beim Aufruf der überladenen „DeviceInterface“-Methoden „Preset“, „Program“, „Teach“ und „Execute“ wird ein Objekt vom Typ „CommandEventArgs“ übergeben. Es enthält:

 

Parameter

Typ

Beschreibung

CommandName

String

Der Name des Kommandos in der Prüfschritt-Definition.

Parameter

Object

Der/Die zur Definition des Kommandos dienende Parameter

Code

String

Der zur Definition des Kommandos dienende Parameter-Text (veraltet, wird durch Parameter ersetzt)

Summary

String

Eine für den Anwender verständliche Zusammenfassung des Kommandos.

TimeOut

Int

Zeit in Millisekunden zur Ausführung des Kommandos bevor eine Zeitüberschreitung eintritt (Standardwert: System.Threading.TimeOut.Infinite).

DeviceInterface

DeviceInterface

Die Geräteschnittstelle, mit der das Kommando ausgeführt wird.

Quantities

QuantityCollection

Auflistung aller möglichen Messgrößen.

Units

UnitCollection

Auflistung aller möglichen Einheiten.

Messages

MessageCollection

Auflistung aller definierten Meldungen

Measure

Boolean

Wahr, falls das Kommando einen Messwert liefert.

Quantity

Quantity

Messgröße des Messwerts.

Unit

Unit

Einheit des Messwerts.

 

 

 

Sample

Int

Nummer des aktuellen Prüflings.

Socket

Int

Nummer des aktuellen Sockels.

Value

Object

Der Messwert.

Cancel

Boolean

Wahr, falls die Programmierung des Kommandos abgebrochen wurde.

MdiParent

Form

Das MDI-Container Formular.

 

Methode „Initialize (InterfaceEventArgs e)“

 

Mit der Methode “Initialize“ wird die Schnittstellen initialisiert. Sie wird vor der Kommando-Programmierung, vor einem IO-Test oder zu Beginn einer Prüfung bei den beteiligten Schnittstellen aufgerufen.

 

Methode „Preset (CommandEventArgs e)“

 

Nimmt der Anwender ein neues Kommando in der Kommandoliste eines Prüfschritts auf, dann wird die Methode „Preset“ des betreffenden „DeviceInterface“ aufgerufen. „Preset“ setzt die Standardwerte der Parameter „e.Code“, „e.Summary“, „e.Measure“, „e.Quantity“, „e.Unit“ und „e.DataType“. Dabei soll kein Dialog erscheinen. Welche Default-Werte von „Preset“ zu setzen sind, muss vom Kunden definiert werden.

 

Methode „Adjust ()“

 

Die Methode Adjust wird von der Laufzeitumgebung vor jedem Phasen-Zyklus aufgerufen. Hier können Schnittstellen etwaige Aktionen zur Justierung o.Ä. durchzuführen. Beispielsweise kann ein Antrieb die Achse den Ausgangspunkt mittels Pendelbewegungen neu einstellen.

 

Methode „Program (CommandEventArgs e)“

 

Beim Aufruf der Methode „Program“ soll ein modaler Dialog zur Programmierung eines Kommandos für das betreffende „DeviceInterface“ geöffnet werden. Die Kommandoparameter werden im Parameter „e.Code“ zurückgegeben. „e.Summary“ soll eine für den Anwender verständliche Zusammenfassung des Kommandos enthalten. Welche Information von „Program“ in „e.Summary“ abzulegen ist, muß vom Kunden definiert werden. Liefert das Kommando einen Messwert muss der Parameter „e.Measure“ auf True gesetzt und mit den Parametern „e.Quantity“, „e.Unit“ und „e.DataType“ der Messwert spezifiziert werden. Welche Daten in diesen Parametern gesetzt werden, ergibt sich aus den technischen Möglichkeiten der jeweiligen „DeviceInterface“-Klasse.

 

Methode „Execute (CommandEventArgs e)“

 

Die Methode „Execute“ führt ein Kommando aus. Die Kommandoparameter werden im Parameter „e.Code“ übergeben. Sofern „e.Measure“ den Wert True hat, wird der Messwert im Parameter „e.Value“ in seiner physikalischen Grund-Einheit zurückgegeben. Die evntl. erforderliche Aufbereitung des Messwerts in die durch „Preset“ / „Program“ / „Teach“ vorgegebene Einheit erfolgt durch das Hauptprogramm.

 

Methode „Teach (CommandEventArgs e)“

 

Beim Aufruf der Methode „Teach“ soll ein nicht modaler Dialog zum Einrichten (Teachen) eines Kommandos geöffnet werden. Der Dialog soll den übergebenen Parameter „e.MdiParent“ verwenden. Die ursprünglichen Kommandoparameter werden im Parameter „e.Code“ übergeben. Beim bzw. nach Schließen des Teach-Dialogs muß „Teach“ auf jeden Fall das definierte Kommando inklusive der evntl definierten Messung durch Aufruf der Methode „Execute“ ausführen.

 

Methode „OnTeachCompleted (CommandEventArgs e)“

 

Wird der Teach-Dialog vom Anwender geschlossen, soll die Methode „OnTeachCompleted“ aufgerufen werden. Das von Ihr gefeuerte Ereignis „TeachCompleted“ informiert das Hauptprogramm über das Ende des Einricht-Vorgangs. Mit dem Ereignis werden die neuen Kommandoparameter (zur Speicherung) und ggf. der gemessene Messwert in seiner physikalischen Grund-Einheit übergeben. Die evntl. erforderliche Aufbereitung des Messwerts in die durch „Preset“ / „Program“ / „Teach“ vorgegebene Einheit erfolgt durch das Hauptprogramm.

 

Typ „Quantity“

 

Der Typ Quantity beschreibt eine Messgröße.

 

Parameter

Typ

Beschreibung

Id

String

Das eindeutige Kennzeichen der Messgröße (z.B. U für Spannung).

Name

String

Der Name der Messgröße.

DataType

Type

Der Datentyp der Messwerte dieser Größe

Units

Unit

Die für diese Messgröße möglichen Messeinheiten.

 

Typ „Unit“

 

Der Typ Unit beschreibt eine Messeinheit.

 

Parameter

Typ

Beschreibung

Id

String

Das eindeutige Kennzeichen der Messeinheit (z.B. V für Volt).

Name

String

Der Name der Messeinheit.

Factor

double

Der Faktor zur Umrechnung in die entsprechende Basiseinheit (z.B. 0.001 für Millivolt).

 

Typ „Message“

 

Der Typ Message beschreibt eine Meldung.

 

Parameter

Typ

Beschreibung

Id

String

Das eindeutige Kennzeichen der Meldung.

Text

String

Der Meldungstext.

 

Zuletzt geändert am 14.10.2009 09:38  von Andreas Bär