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.
|