CAN


 

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
MGanzzahliger Wert (Binäre Datenpunkte,Zählwerte) der vom Gateway nur gelesen werden kann/soll.
SGanzzahliger Wert der vom Gateway gelesen sowie geschrieben werden kann/soll.
XAnalogwert (mit Nachkommastellen) der vom Gateway nur gelesen werden kann/soll.
YAnalogwert (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:

ParameterWertebereichBeschreibung
<Identifier>0x000 - 0x7FFHexadezimalwert des CAN-Identifiers
<Start-Byte>0 - 7Index des Start-Bytes
<Start-Bit>0 - 7Index des Start-Bits
<Bitanzahl>1 - 64Anzahl 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.

FormatDatentypBereich
BITBoolean0 oder 1
UINT8Byte0 - 255
SINT8Byte-128 - 127
UINT16Word0 - 65535
SINT16Word-32768 - 32767
UINT32Doubleword0 - 4294967296
SINT32Doubleword-2147483648 - 2147483647
FLOAT32FloatFliesskomma-Wert mit 32 Bit
FLOAT64DoubleFliesskomma-Wert mit 64 Bit

Weitere Datenpunkttypen können mit 't:<Typ>' angegeben werden.

FormatDatentyp
t:s2424-Bit Integer (Mit Vorzeichen)
t:u2424-Bit Integer (Vorzeichenlos)
t:s4040-Bit Integer (Mit Vorzeichen)
t:u4040-Bit Integer (Vorzeichenlos)
t:s4848-Bit Integer (Mit Vorzeichen)
t:u4848-Bit Integer (Vorzeichenlos)
t:s5656-Bit Integer (Mit Vorzeichen)
t:u5656-Bit Integer (Vorzeichenlos)
t:s6464-Bit Integer (Mit Vorzeichen)
t:u6464-Bit Integer (Vorzeichenlos)

Über die Formatangabe in der Datenpunktdatei kann die Bytereihenfolge eines Datenpunktes festgelegt werden.

FormatDatentypDatenbereichErgebnis
S:1Word
Doubleword
0x01 0x04
0x01 0x00 0x00 0x00
260
16777216
S:0Word
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