Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Raspberry PI PI-CAN Modul

Raspian
2014-02-12
2018-01-11
  • Raspian - 2014-02-12

    Habe ein PI-Can auf meinem Raspberry Pi installiert, jedoch kann ich es nicht unter Codesys verwenden.
    Meine Frage deshalb: Wie binde ich das PI-Can Modul in Codesys ein?

     
  • eschwellinger

    eschwellinger - 2014-02-12

    Hallo,
    das wird mit der aktuellen Version noch nicht unterstützt und es gibt's ein paar Probleme,
    die es kompliziert machen.
    Unter anderem ist ja in ""wheezy" keine CAN Unterstützung im Kernel vorhanden,
    wir brauchen Socket CAN d.h man müsste auch einen Kernel mit CAN Unterstützung bauen.
    Wir sind noch nicht 100% sicher ob wir das bis zu der April Version schaffen.

    Grüße
    E. Schwellinger

     
  • Raspian - 2014-02-13

    Hallo Herr Schwellinger,
    danke fuer die rasche Antwort.
    Ab wann kann man mit der Unterstuezung des PI-Can rechnen?

    Gruß
    Raspian

     
  • Raspian - 2014-08-31

    Hallo Liebe Forum User,

    gibt es eigentlich Neuigkeiten bezüglich Raspberry und PiCan? Oder wird das von Codesys immer noch nicht Unterstützt? Es hieß damals dass es bis April wahrscheinlich nicht zu schaffen sei... wie sieht es denn jetzt aus?

    Oder hat das jemand der Forumsuser bereits verwirklicht?

    mfg Raspian

     
  • eschwellinger

    eschwellinger - 2014-09-02

    Hallo Raspian,

    wir haben zwar den CAN Support im Laufzeitsystem mit drin, der Linux Kernel aus dem standard Wheezy müsste
    compiliert warden. (siehe weiter unten der Link)

    Im CODESYS Laufzeitsystem muss man folgende Komponenten (2-5) in
    /etc/CODESYSControl.cfg ergänzen

    [ComponentManager]
    Component.1=CmpOpenSSL
    Component.2=CmpCAACanL2
    Component.3=CmpCAASdoServer
    Component.4=CmpCAASdoClient
    Component.5=CmpSocketCanDrv

    Was muss man also tun damit das mit dem PICan funktionieren würde?
    Mann muss einen eigenen Linux Kernel bauen, der SocketCAN und eben dieses PICan modul drin hat.

    Das dieses nicht ganz problemlos funktioniert sieht man an diesem Thread hier:

    http://www.raspberrypi.org/forums/viewt ... =44&t=7027

    Die Probleme die meiner Ansicht nach auf einen zukommen sind, eben bei hohen Bitraten und hoher Buslast
    das einem Daten verloren gehen.
    Gerne lasse ich mich mit dieses Aussage berichtigen.

    Grüße
    Edwin

     
  • Raspian - 2014-09-03

    Dass daten verloren gehen habe ich bereits in der Demo Version festgestellt, aber bei meiner Anwendung mit 250kb/s und paketen alle >30ms hatte ich keine Probleme.

    Ich habe mir ein Kernel zusammengestellt bzw die nötigen Module am Kernel angehängt.
    Über die Konsole kann ich auch senden und empfangen, nur über Codesys habe ich dies noch nicht geschafft. was mache ich falsch? Habe das Gerät eingehängt, wenn ich auf Can Bus klicke bekomme ich einen fehler dass kein Treiber gefunden wurde.

     
  • eschwellinger

    eschwellinger - 2014-09-03

    Hallo,

    und was bekommst du genau wenn du es mit CODESYS versuchst?
    (also eingehängte Componenten im CODESYSControl.cfg)
    Im englischen Forum versucht ein anderer User das selbe, bekommst du auch die selben Meldungen wie er?

    Grüße
    Edwin

     
  • Raspian - 2014-09-03

    Hallo,

    ich habe im codesysconfig genau das eingetragen was in diesem Thread oben beschrieben war.
    Component.2=CmpCAACanL2
    Component.3=CmpCAASdoServer
    Component.4=CmpCAASdoClient
    Component.5=CmpSocketCanDrv

    Habe dann die nötigen Module im Kernel angehängt und es über die Konsole getestet, da läuft es auch.
    im Codesys:
    ich habe unten bei SPI device Rechtsklick und Gerät einfügen
    -->Canbus eingefügt

    -->Vom Store habe ich mir das Can Example runtergeladen und es in meiner Applikation integriert
    -->dann getestet
    -->beim Testen bin ich mit Doppelklick auf Can bus gegangen, unter Status steht dann kein Treiber gefunden.
    -->habe dann gesehen dass man noch weitere Optionen mit Rechtsklick und Gerät anhängen hat, aber da fehlen entweder ständig irgendwelche Bibliotheken beim Kompilieren und ich habe keine Ahnung welches das Richtige ist. Ich würde den Pi gern als Master einsetzen.

     
  • eschwellinger

    eschwellinger - 2014-09-04

    Hallo Raspian,

    das Store Beispiel ist eigentlich dafür gedacht, zu zeigen wie man CAN Layer 2 Kommunikation macht.
    d.h hier wird alles über das Programm konfiguriert Baudrate usw. Im Gerätebaum sind hier ja keine CAN Geräte konfigurert.

    Ich würde ein leeres Raspi Projekt nehmen einfach einen CANbus und nur einen CANopenManager
    einhängen, wenn man dann einen Slave zur Verfügung hat den über das EDS (EDS zuerst ins Geräte Repository installieren) darunter hängen.
    Du must ja wie im englischen Forum beschrieben zuerst noch unter Linux die CAN Module starten - dann auch mal prüfen ob du über
    die Console CAN Kommandos verschicken kannst.

    Dann sollte wenn das alles funktioniert mann das Projekt runterläd und startet, alles links im Baum "Grün" werden
    -> wenn rot liegt ein Fehler vor
    dann im SPS Logger schauen wo das Problem liegt.

    Gruesse
    Edwin

     
  • Raspian - 2014-09-04

    Hallo,
    senden und empfangen ueber die Konsole funktioniert bereits,
    lediglich das einhaengen ins Codesys breitet noch Probleme.
    Nach dem der CanOpenManager eingehaengt wurde gibt es Probleme
    mit den Bibliotheken. und wo muss man das EDS File einhaegen?

    Gruß Raspian

     
  • eschwellinger

    eschwellinger - 2014-09-04

    Hallo,

    ich hänge mal ein project und paar screenshots an.

    Grüße
    Edwin

    IMG: InstallEds.jpg

    IMG: DeviceRepository.jpg

    GPIO_und_CAN.project [233.61 KiB]

     
  • Raspian - 2014-09-05

    Hallo Edwin,

    zunächst musste ich noch Codesys Updaten auf SP5. War nicht in der Lage das Beispiel Projekt ohne Fehler zu Öffnen. Aber Jetzt geht das.

    Was mache ich wenn ich für mein Gerät kein EDS File besitze? Gibt es keine Möglichkeit den Bus so zu konfigurieren wie im Example vom Store? Dass im Prinzip nicht jedes Slave Gerät eingehängt wird sonder nur auf ID´s gelesen bzw. gesendet wird welche ich aufrufe?

    Oder könnte ich mit einem Befehl direkt auf das Candump und Cansend vom Linux zugreifen und mir diesen puffer lesen und schreiben?

    Außerdem bekomme ich noch einen Fehler "update configuration failedfrom driver" Komponente "CmpIoMgr".

    mfg

     
  • eschwellinger

    eschwellinger - 2014-09-05

    Hallo Raspian,

    klar du kannst dann schon mit dem Store Beispiel mit deinem Gerät kommunizieren ohne EDS,
    aber erst mal den CAN ans laufen bekommen mit dem Projekt auch ohne Slave.
    Es muss halt irgendwas am CANbus angeschlossen sein, so das nicht gleich errorframes kommen und er deshalb rot wird.
    Aber du sagst ja du hast ne funktionierende Kommunikation aus der Konsole heraus, also müssen wir nun CODESYS soweit bringen
    das alles "grün" wird.

    Oder könnte ich mit einem Befehl direkt auf das Candump und Cansend vom Linux zugreifen und mir diesen puffer lesen und schreiben?
    nein das geht nicht

    Stell bitte die Baudrate gleich ein wie in der Konsole und versuch es nochmal mit CODESYS und meinem Projekt, dann nochmals im Log schauen.
    Ich kann es frühestens nächte Woche mit meiner Hardware testen.

    Grüße
    Edwin

     
  • Raspian - 2014-09-05

    Baudrate ist auf 250kb eingestellt. Unter Canbus und Canbus Konfiguration.

    Aber wenn ich dann auf Status gehe bekomme ich die Meldung zurück "kein Teiber gefunden".
    Im Sps Log ist dann auch wieder der selbe Fehler zu finden wie ich vorher geschrieben habe.

    Grüße

     
  • eschwellinger

    eschwellinger - 2014-09-10

    Hi Raspian,

    ich habe das nun getestet leider geht mein MCP2515 board nicht das scheint defekt,
    ich habe mit dem Peak USB Dongle getestet.
    Denke du must noch rts_set_baud.sh nach /root/ kopieren und für deinen MCP2515 anpassen.
    Du sagest ja mit cansend kannst du bereits nachrichten verschicken.

    Für andere User die das lesen, die Vorraussetzung das Ihr CAN mit dem Raspi machen könnt ist, das ihr SocketCAN unter Linux ans laufen bekommt.
    Dazu muss man einen eigenen Linux Kernel bauen der CAN enthält.
    Wir haben das nicht mit ins Image getan, da der Testaufwand nicht unerheblich ist und in unserem Fall die Tests gezeigt haben das bei hoher Buslast
    auch "gerne Nachrichten verloren gehen" .

    BR
    Edwin

    IMG: CAN_on_Raspi.jpg

    rts_set_baud.zip [211 Bytes]

     
  • CanBohr - 2018-01-10

    Hallo Herr Schwellinger,

    ich habe ein PiCan modul am Raspi auf dem der Canbus läuft mit 125 baud.
    Ich kann mit einem CanViewer Nachrichten auf dem Bus schicken und per Candump Can0 auf dem Raspi lesen.
    Codesys erkennt den Raspi aber leider nicht den Canbus.
    Ich bekomme im Codesys immer die Meldung "der Bus läuft nicht".

    Ich nutze Codesys version 3.5.12.0 und das Pican 2 Modul für den CanOpenBus.

    Es wäre schön, wenn Sie mir einen Tip geben könnten, wie ich Codesys überreden kann, den Bus zuerkennen.

    Vielen Dank.
    CanBohr

     
  • eschwellinger

    eschwellinger - 2018-01-11

    Hallo,

    das script fehlt vermutlich:
    https://forum.codesys.com/viewtopic.php ... 463#p20132

    #!/bin/sh
    BITRATE=expr $2 \\* 1000
    ifconfig $1 down
    echo ip link set $1 type can bitrate $BITRATE
    ip link set $1 type can bitrate $BITRATE
    ifconfig $1 up

    Grüße
    Edwin

     
  • CanBohr - 2018-01-11

    Hallo Herr Schwellinger,

    vielen Dank für die promtpe Rückmeldung. Das Script war schon eingebunden, ich habe es aber so gemacht wie von Ihnen empfohlen und die /etc/CODESYSControl_User.cfg um den Eintrag

    [CmpSocketCanDrv]
    ScriptPath=/opt/codesys/scripts/
    ScriptName=rts_set_baud.sh
    ergänzt.

    Das Sript

    #!/bin/sh
    BITRATE=expr $2 \\* 1000
    ifconfig $1 down
    echo ip link set $1 type can bitrate $BITRATE
    ip link set $1 type can bitrate $BITRATE
    ifconfig $1 up

    habe ich dann unter /opt/codesys/scripts/rts_set_baud.sh nochmal angelegt.
    Das ging dann immer noch nicht.

    Dann ist mir eingefallen, daß ich das Script noch ausführbar machen muß:
    sudo chmod +x /opt/codesys/scripts/rts_set_baud.sh

    Nun läuft es dank Ihrer schnellen Hilfe.
    Vielen Dank, daß Sie hier Ihr umfangreiches Wissen teilen.

    Nun muß ich mich noch auf die Suche machen, wie ich die Webvisu auf das Touchdisplay vom Raspi bekomme. Wenn Sie dafür auch noch einen Hinweis hätten, wäre das klasse.

    Gruß,
    CanBohr

     

Log in to post a comment.