can2udp Neu: can2lan

Zusammenfassung:

can2udp ist das Linux Äquivalent zu Gbox2Eth. Es vermittelt CAN Botschaften zwischen einem CAN Interface und dem LAN/WLAN.

Der BananaPi mit Aufsteckplatine ist eine leistungsstarke und günstige Basis für can2udp/can2lan im Vergleich zum RPi - incl. galv. getrenntem S88.

Was macht das Programm ?

Hier eine schematische Übersicht:



Dieses Programm dient als Gateway zwischen Ethernet und CAN Bus. Vergleichbar mit Gbox2Eth interpretiert es UDP Pakete und wandelt diese in CAN Pakete um. Umgekehrt leitet es die Pakete vom CAN-Bus nach Ethernet (UDP an Broadcast Adresse). Sozusagen eine CAN-Ethernet Bridge.

Die Funktion ähnelt dem CS2 Gateway, wobei can2udp nicht den vollen Funktionsumfang des CS2 -Gateways besitzt.
Ich habe aber can2udp zusammen mit Rocrail und dem MCS2-Modul erfolgreich getestet.

Was braucht man ?

Natürlich:



Man benötigt ein von Linux unterstützes CAN Bus Interface - genauer gesagt: Eins von SocketCAN unterstüztes Interface. Beispiele:
www.canusb.com
www.8devices.com/product/2/usb2can
www.mhs-elektronik.de/usb_tiny_can
...
Oft unterstützen diese das von LAWICEL (www.canusb.com) definierte ASCII Protokoll auf der seriellen Schnittstelle (SLCAN Protokoll). Dafür gibt es den slcan Treiber. Hiermit lässt sich der CANBuster nutzen.

Andere Möglichkeiten:
Router mit MCP2515 (veraltet)
Carambola (veraltet - neue SRE in Planung)
Raspberry Pi (obsolet - besser BPi)
Sehr preisgünstig: CAN-CAN Interface
BananaPi mit Aufsteckplatine - leistungsstark und günstig

Compilieren

Das Programm läßt sich auf einem Linux-Rechner wie folgt compilieren:
gcc -o can2udp can2udp.c
übersetzen.

Aufruf

Die Online-Hilfe sollte alle notwendigen Parameter erklären:
% ./can2udp -?

Usage: can2udp -l <port> -d <port> -i <can interface>
   Version 0.92

         -l <port>           listening UDP port for the server - default 15731
         -d <port>           destination UDP port for the server - default 15730
         -b <broadcast_addr> broadcast address - 192.168.0.255
         -i <can int>        can interface - default can0
         -f                  running in foreground
         -v                  verbose output (in foreground)
Mit der Option -b gibt man die Brodcast Adresse an. Sehr oft lautet die Broadcastadresse 192.168.x.255. Zum Debuggen sollte man das Programm im Vordergrund (Option -f) laufen lassen. Es gibt dann die zwischen CAN und Ethernet vermittelten Pakete auf der Konsole aus:
root@OpenWrt:~# /bin/can2udp -i can0 -b 192.168.0.255 -f
inet_pton: Success
CAN magic 60113 start write
<-UDP>CAN CANID 0x000300   [5] 00 00 00 00 01
->CAN>UDP CANID 0x019B32 R [5] 00 00 00 00 01
<-UDP>CAN CANID 0x160300   [6] 00 00 30 01 00 01
->CAN>UDP CANID 0x179B32 R [6] 00 00 30 01 00 01
->CAN>UDP CANID 0x170300 R [6] 00 00 30 01 00 00
Im Normalfall läuft can2udp als Daemon im Hintergrund. Die weiteren Parameter sind auf Default gesetzt und bedürfen eher selten der Anpassung.

Weitere Hilfe

Ein hilfreicher Befehl zum Debuggen kann auch 'ip' sein:
root@OpenWrt:~# ip -s -d link show can0
8: can0:  mtu 16 qdisc pfifo_fast state UNKNOWN qlen 10
    link/can 
    can state ERROR-ACTIVE restart-ms 0 
    bitrate 250000 sample-point 0.875 
    tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
    mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
    clock 8000000
    re-started bus-errors arbit-lost error-warn error-pass bus-off
    0          0          0          0          0          0         
    RX: bytes  packets  errors  dropped overrun mcast   
    113        19       0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    69         12       0       0       0       0      

Reduced to the max

Impressum: