PEAKCAN

Funktion:

Der PEAKCAN-Treiber unterstützt verschiedene CAN-Adapter der Firma PEAK. Beim CAN-Bus handelt es sich um einen seriellen Zwei-Draht-Bus, über den verschiedene Busteilnehmer, in der Regel kleine Steuer- und Regelmodule, mit bis zu 1 MBit/sec Messages austauschen. Der CAN-Bus wird vor allem im automobilen Bereich eingesetzt (mehr Info z.B. unter www.can-cia.de/can/).

Grundkonzept für die Funktionsweise des PEAKCAN-Treibers ist die Überlegung, daß sich Windows-Applikationen auf einem CAN-vernetzten PC genau wie echte Busteilnehmer unabhängig von einander an den Bus anschliessen lassen müssen. Daher implementiert der Treiber das neuartige Konzept des “Netzes” (Net): ein Net ist sozusagen ein virtueller CAN-Bus im PC, der über eine CAN-Adapterhardware mit einem physisch vorhandenen, externen CAN-Bus verbunden wird. PC-Applikationen schließen sich nicht direkt an die Adapter-Hardware, sondern nur an das Net an. Es können auch “interne” Netze ohne CAN-Hardware definiert werden; und es können mehrere Netze parallel und unabhängig voneinander betrieben werden.

Der Treiber stellt über eine API-Schnittstelle den Anwendungsprogrammierern folgende Objekte bereit:

Objekt

Verwendung

Driver

Grundfunktionen des gesamten Treibers

Hardware

Ansteuerung und Eigenschaften eines CAN-Adapters

Net

Ansteuerung und Eigenschaften eines virtuellen CAN-Busses.

Client

Interface eines Anwendungsprogrammes zum Anschluß an ein Net

Message

Empfangene oder zu sendende CAN-Message, auch Fehler- oder Status-Ereignis

Auf Basis des PEAKCAN-Treibers wurden in der Firma PEAK und von deren Kunden viele Anwenderprogramme geschrieben (eine Auswahl findet sich unter www.peak-system.com, -> Produkte -> PC Software).

Das Tool “PCANStat” ist ein Beispiel für ein mit der API entwickeltes PC-Programm, es visualisiert die Zuordnung der aktuell im Treiber definierten Objekte. Hier beobachten ein Message-Viewer-Programm und ein Message-Recorder den Datenfluß auf einem externen CAN-Bus:

Die grundlegenden Konzepte und Techniken des PEAKCAN-Treibers sind übrigens von einer Anwendung auf den CAN-Bus unabhängig, auch für andere Feldbusse können nach diesem Schema Windows-Treiber erstellt werden.

Der Treiber ist unter den Plattformen Windows 9x, Windows NT und als WDM-Treiber mit identischer Funktion einsetzbar.

Umsetzung:

PEAKCAN ist ein monolithischer Treiber, der in C++ mit Compuware “Driver::Works” bzw. “VtoolsD” erstellt wurde. Pufferung und Handhabung der Objekttypen “Hardware”, “Client” und “Net” finden vollständig im Treiberkern statt. Das API-Interface wird durch DeviceIoControl -Aufrufe angesprochen, Anwendungsprogrammierern wird aber eine Interface-DLL bereitgestellt , die diesen Mechanismus kapselt. Es bestehen hohe Anforderungen an den Datenfluß, da über CAN sehr kurze und daher hochfrequente Messages ausgetauscht werden (max 8000 Msgs/sec pro Bus) . Daher werden verschiedene interne Puffer bzw. Queues eingesetzt, Interruptanforderungen werden eingesetzt. Die Ansteuerungen der verschiedenen Hardwaretypen (ISA, PCI, USB, FireWire, kundenspezifische Hardware) erfolgt durch Implementationen eines abstrakten Interfaces, das aus verschiedenen C++-Klassen besteht. Der Treiber wird unter eine eigens entwickelten Konfigurationsoberfläche (basierend auf Scriptor) übersetzt, da aus einem einheiltichen Satz von Quellcodes zur Zeit 26  verschiedene Spezialtreiber kompiliert werden müssen, deren Verhalten durch knapp 40 Parameter konfiguriert wird. Die Treibervarianten unterscheiden sich in Bezug auf das Feature “checked”/”release”, die unterstützte Hardware und das unterstützte Betriebssystem.

[Devicetreiber] [PEAKCAN] [SimIO]