Table of Contents
SocketCAN
Einführung
Die Pi01CAN MCP251x Schnittstellen-Baugruppe benötigt einen Raspberry Pi 2/3/4 mit PiOS 32bit oder 64bit. 1)
SocketCAN ist nur verfügbar, wenn der Rocrail-Server auf demselben Raspberry Pi mit dem PiCAN läuft.
Die Kommunication mit RCAN2) ist direkt und binär; Keine bidirektionale Konvertierung im "MERG-Gridconnect-ASCII-Framing"3).
Die 12VDC-Stromversorgung für angeschlossene CANGC*-Baugruppen kann mit einem GCA-08 erfolgen. Siehe Anschluss-Kabel für mehr Information.
Documentation
- https://en.wikipedia.org/wiki/SocketCAN (EN; etwas detaillierter als die DE-Seite)
Pi01CAN-Schnittstelle

Die I2C-Bauteile können entfallen, falls der RocNet-Anschluss nicht benötigt wird. (Einfach eine Bemerkung schreiben, wenn bei GCA bestellt wird.)
Raspi Einstellung
config.txt
Folgende Datei als Super-User - sudo - mit einem Text-Editor eigener Wahl editieren:
/boot/config.txt
Die Kommentierung '#' von dieser Zeile entfernen:\\ //vor Änderung// <code> #dtparam=spi=on
nach Änderung
dtparam=spi=on
dtparam=spi=on ; add dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25 dtoverlay=spi-bcm2835-overlay
Neustart
sudo shutdown -r now
Schnittstellen
Folgende Datei als Super-User - sudo - mit einem Text-Editor eigener Wahl editieren:
/etc/network/interfaces
Die folgenden Zeilen am Ende der Datei hinzufügen: (Die Kommentar-Zeilen '#' sind optional.)
# CAN Interface
auto can0
iface can0 inet manual
pre-up /sbin/ip link set $IFACE type can bitrate 125000 restart-ms 100
up /sbin/ifconfig $IFACE up
down /sbin/ifconfig $IFACE down
Hinweis: Bei neueren PiOS-Versionen eine Datei mit dem Namen
/etc/network/interfaces.d/can0 mit dem Inhalt von oben hinzufügen.
Prüfen
dmesg | egrep -i "can|spi" [ 3.998382] CAN device driver interface [ 4.051102] mcp251x spi0.0 can0: MCP2515 successfully initialized.
Rocrail Einstellung
- Sub-Bibliothek SocketCAN auswählen
- Hostname(Gerätename) auf can0 (Wenn nicht gesetzt: "can0" wird verwendet.)
Gerätenamen prüfen
Gerätenamen mit dem Befehl ifconfig auf dem Raspberry Pi prüfen:
pi@keltenbahn:~ $ ifconfig
can0: flags=193<UP,RUNNING,NOARP> mtu 16
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
CANService
Alternativ zum Betrieb von Rocrail auf dem Raspberry Pi ist es auch möglich, den CANService zu verwenden.
Er verhält sich wie ein GC1e.
Alternative CAN-Platine
Dieses kostengünstige AZDelivery MCP2515 CAN Bus Shield kann als Alternative verwendet werden, wenn nur CAN benötigt wird:

Das Raspberry Software Setup ist gleich, wie beim Pi01-CAN, außer für den Oszillator:
oscillator=8000000
Auf der Platine überprüfen, welche Frequenz auf dem Quarz aufgedruckt ist:

Dieses Beispiel zeigt 8000 kHz → 8000000 Hz
Für CAN-Geschwindigkeiten über 125 kHz wird empfohlen, diesen Quarz durch einen 16MHz-Typ zu ersetzen. (oscillator=16000000)
| Verdrahtung | |||
| Shield | Rpi | Rpi Stif-Nummer(n) | Bemerkung |
|---|---|---|---|
| VCC | 5V | 2, 4 | mit 3,3 V kann es empgange, kann aber keine CAN-Pakete senden. |
| GND | Masse (Ground) | 6, 9, 20, 25, 30, 34, 39 | |
| CS | GPIO 8 (CE0) | 24 | |
| SO | GPIO 9 (MISO) | 21 | |
| SI | GPIO 10 (MOSI) | 19 | |
| SCK | GPIO 11 (SCLK) | 23 | |
| INT | GPIO 25 | 22 | |
Hinweis:
- Diese Platine ist nicht isoliert. (ISO1050)
- Am Schraubanschluss fehlt eine Masseanschluss und es wird dringend empfohlen, die Masse des CAN-Kabels mit dem GND-Stift dieser Platine zu verbinden, um statische Spannungen zu vermeiden, die die Elektronik zerstören können.

