Der CAN Treiber ermöglicht es Wertänderungen über den CAN-BUS zu lesen und zu schreiben. Die einzelnen Nachrichten auf dem CAN-Bus bestehen aus einem Identifier gefolgt von maximal 8 Byte mit Daten. Unterstützt werden Identifier mit 11-Bits (0x000 bis 0x7FF). Per Konfiguration kann die Unterstützung für 29-Bit Identifier (CAN 2.0B) aktiviert werden.
Beim Schreiben von Datenpunkten wird immer der gesamte 8 Byte Datenbereich gesendet. Bits die nicht zum Datenpunkt gehören, werden mit 0 vorbelegt bzw. können per nomval vorbelegt werden.
Der Name des CAN Treibers lautet: can
Die Routing-Adresse des ersten CAN Treibers ist die 1450
Die Datenpunktdatei für den ersten CAN Treiber heißt: can1.txt
Die Konfigurationsdatei für globale Einstellungen des ersten CAN Treibers heißt: can1.cfg
Beim CAN Treiber sowie allen weiteren Gateway-Treibern gilt für die Definiton von Datenpunkten in der Datenpunktdatei:
| Typ: | Bedeutung |
|---|---|
| M | Ganzzahliger Wert (Binäre Datenpunkte,Zählwerte) der vom Gateway nur gelesen werden kann/soll. |
| S | Ganzzahliger Wert der vom Gateway gelesen sowie geschrieben werden kann/soll. |
| X | Analogwert (mit Nachkommastellen) der vom Gateway nur gelesen werden kann/soll. |
| Y | Analogwert (mit Nachkommastellen) der vom Gateway gelesen sowie geschrieben werden kann/soll. |
Die Adressen der CAN-Datenpunkte sind wie folgt aufgebaut:
raw Identifier.Start-Byte.Start-Bit.Bitanzahl
Es gilt die folgende Definition:
| Parameter | Wertebereich | Beschreibung |
|---|---|---|
| <Identifier> | 0x000 - 0x7FF | Hexadezimalwert des CAN-Identifiers |
| <Start-Byte> | 0 - 7 | Index des Start-Bytes |
| <Start-Bit> | 0 - 7 | Index des Start-Bits |
| <Bitanzahl> | 1 - 64 | Anzahl der Bits für diesen Datenpunkt 1=Bool 8=Byte 16=Word 32=Doubleword oder Float 64=Double |
Über die Formatangabe in der Datenpunktdatei kann dem Datenpunkt ein Datentyp zugewiesen werden.
| Format | Datentyp | Bereich |
|---|---|---|
| BIT | Boolean | 0 oder 1 |
| UINT8 | Byte | 0 - 255 |
| SINT8 | Byte | -128 - 127 |
| UINT16 | Word | 0 - 65535 |
| SINT16 | Word | -32768 - 32767 |
| UINT32 | Doubleword | 0 - 4294967296 |
| SINT32 | Doubleword | -2147483648 - 2147483647 |
| FLOAT32 | Float | Fliesskomma-Wert mit 32 Bit |
| FLOAT64 | Double | Fliesskomma-Wert mit 64 Bit |
Weitere Datenpunkttypen können mit 't:<Typ>' angegeben werden.
| Format | Datentyp |
|---|---|
| t:s24 | 24-Bit Integer (Mit Vorzeichen) |
| t:u24 | 24-Bit Integer (Vorzeichenlos) |
| t:s40 | 40-Bit Integer (Mit Vorzeichen) |
| t:u40 | 40-Bit Integer (Vorzeichenlos) |
| t:s48 | 48-Bit Integer (Mit Vorzeichen) |
| t:u48 | 48-Bit Integer (Vorzeichenlos) |
| t:s56 | 56-Bit Integer (Mit Vorzeichen) |
| t:u56 | 56-Bit Integer (Vorzeichenlos) |
| t:s64 | 64-Bit Integer (Mit Vorzeichen) |
| t:u64 | 64-Bit Integer (Vorzeichenlos) |
Über die Formatangabe in der Datenpunktdatei kann die Bytereihenfolge eines Datenpunktes festgelegt werden.
| Format | Datentyp | Datenbereich | Ergebnis |
|---|---|---|---|
| S:1 | Word Doubleword | 0x01 0x04 0x01 0x00 0x00 0x00 | 260 16777216 |
| S:0 | Word Doubleword | 0x01 0x04 0x01 0x00 0x00 0x00 | 1025 1 |
Folgende Einschränkungen gelten für die Angabe von Start-Byte, Start-Bit und Bitanzahl bei der Definition von Datenpunkten:
Das Start-Bit darf nur für den Datentyp Boolean ungleich 0 sein, für andere Datentypen muss das Start-Bit 0 sein
Start-Byte + Start-Bit + Bitanzahl darf 64 Bit nicht überschreiten (z.B. Start-Byte 7 kann kein Word Datentyp enthalten)
Typische Datenpunkt-Definitionen können demnach sein:
# failure Datenpunkt
[M failure]
name = Communication failure
query = pe
# Istwerte
[M raw 1ca.0.0.1]
name = Kühlung (0=aus, 1=an) (Byte 0, Bit 0 des Identifiers 0x1ca)
query = pe
format = BIT
[X raw 2ca.0.0.32]
name = Temperatur in °C (Byte 0 bis 3 des Identifiers 0x2ca)
query = pe
format = FLOAT32
[M raw 2ca.4.0.16]
name = Betriebsstunden (Byte 4 bis 5 des Identifiers 0x2ca)
query = pe
format = UINT16
[M raw 2ca.6.0.8]
name = Leistung in % (Byte 6 des Identifiers 0x2ca)
query = pe
format = UINT8
# Sollwerte
[S raw 10c.0.0.1]
name = Kühlung einschalten (Byte 0, Bit 0 des Identifiers 0x10c)
nomval = 0
query = pe
format = BIT
[Y raw 20c.0.0.32]
name = Soll-Temperatur in °C (Byte 0 bis 3 des Identifiers 0x20c)
nomval = 40
query = pe
format = FLOAT32