User Tools

Site Tools


cbus:socketcan-de

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

Pi01CAN-Schnittstelle

pi01can.jpg
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:
mcp2515_can_bus_modul_pinout.jpg
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:
azdelivery-canshield.jpg
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.
cbus/socketcan-de.txt · Last modified: 2024/04/10 00:40 by rainerk