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