Kfz-Messtechnik

Wie Sie einfach und schnell Ihr individuelles Messprogramm entwickeln

04.04.2005 | Autor / Redakteur: Hans-Joachim Goldammer* / Martina Hafner

In einem Kfz muss der Messtechniker neben konventionellen Signalgebern mit analogen Werten verschiedene digitale Signale erfassen – beispielsweise von Drehwinkelgebern oder Impulszählern. Er möchte ferner die erhaltenen Daten mit einer benutzerfreundlichen Software bearbeiten. Im folgenden Beitrag erfahren Sie, wie Sie auf relativ einfache Weise ein individuelles, kostengünstiges Messprogramm selbst entwickeln können und welche Komponenten Sie dafür benötigen.

Der erste Schritt zu einer effizienten, mobilen Kfz-Messlösung sind Werkzeuge, wie sie beispielsweise Goldammer, Soft- und Hardwareentwickler aus Wolfsburg, anbietet. Zum Stichwort Erfassungshardware liefert der Hersteller unter dem Namen Multichoice USB eine Multifunktionsmesskarte mit USB-2.0-Anschluss, die mit einem Signalprozessor für die Onboard-Signalverarbeitung ausgerüstet ist. Der 480 MBit/s schnelle Anschluss sorgt für eine zügige bidirektionale Datenübertragung. Damit lassen sich Messdaten schnell erfassen und parallel ausgaben. Durch die hohen Kanalzahlen von bis zu 32 analogen Eingängen, 24 digitalen I/O-Pins und mehreren Zählern sowie die Möglichkeit, mehrere Karten zu kombinieren und zu synchronisieren, eignet sich diese Messkarte für nahezu alle Einsatzbereiche.

Für die softwareseitige Umsetzung von kundenspezifischer, benutzerfreundlicher Software steht neben kostenlosen Treibern für diverse kommerzielle Messprogramme eine kostenfreie Programmierschnittstelle bereit. Die Implementierung in kundenspezifische Programme lässt sich mit geringem Kosten- und Zeitaufwand einfach bewältigen.

Die Entwicklung für ein individuelles Messprogramm ist relativ einfach. Im vorliegenden Beispiel sollen folgende Signale erfasst werden:

  • 16 analoge Signale von beliebigen Gebern mit einer Abtastrate von 10 kHz pro Kanal;
  • 1 Signal eines Inkrementalgebers für Positions-, Richtungs- und Geschwindigkeitsermittlung eines Rades (z.B. ein angetriebenes Vorderrad);
  • 4 analoge Ausgangssignale zur Steuerung von Simulationsstellkörpern;
  • 16 digitale Eingangssignale zur Zustandsermittlung von Instrumenten und
  • 4 digitale Ausgangssignale zur Zustandssimulation von Instrumenten oder Situationen.

Die Signale sollen in einer Oberfläche grafisch angezeigt und gleichzeitig auf der Festplatte gespeichert werden. Für die Steuerung der analogen Ausgänge sollen Schieberegler, für die digitalen Ausgänge einfache Buttons zum Einsatz kommen. Als Programmiersprache fungiert Borland Delphi (prädestiniert für eine einfachere Oberflächengestaltung). Die Schnittstelle ist universell zwischen PCI- und USB-Karten austauschbar. Setzt der Anwender obige Messkarte ein, lassen sich mit einem Notebook die Messdaten direkt und mobil am Kfz erfassen.

Der erste Schritt: die Oberfläche des Bildschirms

Den Auftakt zur Programmentwicklung bildet die Oberflächengestaltung, d.h. der Anwender platziert die benötigten Elemente für Darstellung und Steuerung (Bild 1). Die Programmiersprache Borland Delphi bietet für die Schieberegler und Buttons entsprechende Klassen; für den X/Y-Graphen wird eine eigene Komponente verwendet. Um die Aktionen zu protokollieren, kapselt eine Routine das Schreiben von Kommentaren in das Memofeld. Die Einträge lassen sich auf diese Weise mit der Uhrzeit versehen (Listing 1).

Anschließend beginnt die eigentliche Initialisierung der Messwerte. Dazu werden zunächst alle Werte aus der Oberfläche in interne Variablen eingelesen und bei Bedarf ein Speicherdialog zur Auswahl der Datendatei geöffnet. Dort sollen die A/D-Werte abgelegt werden.

Nun erfolgt die eigentliche Programmierung der Meßkarten. Sie lässt sich über die Schnittstelle mit sehr einfachen Funktionsaufrufen erledigen. Der Anwender muss lediglich ein Handle zur Messkarte erzeugen, über das die Messkarte angesprochen werden kann. Die Programmierungsschnittstelle erledigt dies für ihn. Sie überprüft die vorhandenen Karten sowie den Typ der gewählten Karte und nimmt eine Grundkonfiguration vor (Listing 2):

Jetzt ist die Messkarte bereit, geöffnet und wurde eventuell bereits geladen, sodass im Anschluss jene Programmierung erfolgen kann, mit der später die analogen Meßwerte automatisch erfasst werden können (Listing 3).

Den Löwenanteil an diesem Code übernehmen Fehlerhandling und Meldungen, denn die eigentliche Programmierung lässt sich mit ganzen vier Befehlen ausführen. Vorhandene Kanallisten werden gelöscht, danach wird neue Kanalliste gesetzt, um neue Daten zu erfassen. Die Parameter „Oversampling“, „Verstärkung“ und „Bipolar/Unipolar“ kann der Anwender für jeden Kanal individuell einstellen.

Abtastrate und Abschlussinitialisierung nicht vergessen

Nun werden noch die zu verwendende Abtastrate für den A/D-Teil an die Karte übertragen und eine Abschlussinitialisierung (Final Init) aufgerufen. Zuletzt legt man bei der Abschlussinitialisierung die Buffer auf dem Signalprozessor der Messkarte dynamisch an. Die Karte ist nun für die Messung vorbereitet.

Um das Anforderungsprofil mit analogen Ausgängen, digitalen Ein- und Ausgängen sowie Zählern abzudecken, werden diese ebenfalls initialisiert. Auch hierfür genügen einfache Funktionsaufrufe (Listing 4). Dieser Abschnitt konfiguriert einen Zählereingang als Inkrementalzähler mit Parametern wie „Interpolation“, „Softwarelöschung“ oder „externem Hardware-Reset“. Unmittelbar danach ist der Inkrementalgebereingang verfügbar.

Die digitale Ein-/Ausgabe wird durch das Programmieren der Pins als Ein- oder Ausgang vorbereitet. Die analogen Aus-gaben müssen nicht konfiguriert werden. Das war’s. Damit ist die Initialisierung der Messung abgeschlossen. Alle definierten Signalarten sind nun vorbereitet, initialisiert und können abgefragt werden.

Für die eigentliche Messung hat der Anwender in diesem Beispiel einen Systemzeitgeber (Timer) gewählt, der im 10-ms-Raster wiederholt aufgerufen wird, sobald die Messung gestartet wird. Der Timer arbeitet bei jedem Aufruf sequenziell ab: zuerst A/D-Wandler, danach D/A-Wandler, dann die Digital-I/Os und zuletzt den Inkrementalzähler.

Abholen, speichern und anzeigen via Zeitgeberroutine

Für das Abholen, Speichern und Anzeigen der analogen Daten genügt eine kurze Funktion in der Zeitgeberroutine (Listing 5). Zu Beginn der Routine wird ein temporärer Speicher allokiert und anschließend als Buffer an die Routine übergeben, die die Messwerte abholt. Die erfassten Messwerte stehen bereits als skalierte Werte im Double-Format zur Verfügung und lassen sich somit direkt verarbeiten, speichern und anzeigen. Das gesamte komplexe Prozedere zur automatischen Erfassung mit Statusabfragen, Datentransfer und Skalierung wird vollständig innerhalb der Programmierschnittstelle abgearbeitet.

Ebenso einfach gestaltet sich das Ausgeben und Einlesen der analogen Ausgänge, der digitalen I/O-Pins sowie des Zählers. Durch Kapselung mit der Programmierschnittstelle kann der Anwender ein komplettes Messprogramm mit grafischer Anzei-ge, Speicherung der Messwerte in einer Datei, Ausgabe und Digital-I/Os in einem 700-Zeilen-Programm-Code erstellen. Das Programm steht unter der Homepage des Herstellers als kompilierte Version mit Quelltexten zum Download bereit. Es kann dort als Referenz verwendet werden, um ein eigenes Programm zu verfassen.

Genauso einfach wie das Erstellen eines Messprogramms kann der Anwender die Messkar-te über die Programmierschnittstelle in kommerzielle Messprogramme einbinden. Voraussetzung: Die Messprogramme unterstützen DLL-Laderoutinen, für die es keine fertige Treiberunterstützung gibt, wie beispielsweise MatLab oder LabWindows CVI. Die Messung wird konfiguriert, gestartet und ausgeführt, indem die DLL-Routinen einfach eingebunden werden. Wie das fertige Messprogramm aussieht, veranschaulicht Bild 2. In der Grafik ist das Programm mit Signalen beaufschlagt.

*Hans-Joachim Goldammer ist Geschäftsführer der Goldammer GmbH in Wolfsburg.

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Spamschutz 

Bitte geben Sie das Ergebnis der Rechenaufgabe (Addition) ein:
Kommentar abschicken

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 206044) | Archiv: Vogel Business Media