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.