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

CAN in V3

ute
2014-01-07
2014-01-23
  • ute - 2014-01-07

    Hallo zusammen,

    ich bin Anfänger in der SPS-Programmierung und möchte einen Teil eines CoDeSYS V2-Programm in ein
    V3 übertragen. In dem V2 -Programm wurden die Bausteine CanOpenWriteMSG_FB und
    MgrFindRecMessage verwendet.
    Wo finde ich in der Version 3 etwas vergleichbares? Ich habe schon im Internet gesucht, aber leider nichts gefunden.
    Vielen Dank und viele Grüße
    Ute

     
  • eschwellinger

    eschwellinger - 2014-01-09

    Hallo Ute,

    generell wurde der V3 CANopen Stack in V3 völlig neu entwickelt, d.h diese von dir beschrieben Funktionen wirdst du nirgends finden
    in V3.

    CanOpenWriteMSG_FB hat man ja meist in CODESYS V2.3 verwendet wenn man selber über die Applikation CANLayer2 Kommunikation gemacht hat. d.h in V3 schaust du dir am besten das Beispiel aus dem Store an wenn du so was in CODESYS V3 machen willst:

    http://store.codesys.com/can-bus-example.html

    Wenn es darum geht ganz normal einen CANopenSlave über ne IO Konfig anzubinden, dann muss man erst mal nichts weiteres tun außer diesen unterhalb der SPS anzuhängen - CANbus- CANOpenManager - CANSlave . ( die PDO's konfigurieren)
    Will man selber in seiner Applikation Status vom Slave oder SDO Kommandoes verschicken, dann benötigt man die CAA 405 library.
    Hier findet man Funktionen wie SDO_READ , NMT , GET_STATE die man verwenden kann.

    ich hoffe das hilft so weiter.

    Edwin Schwellinger
    3S-Smart Software Solutions GmbH

    IMG: CIA405.jpg

     
  • ute - 2014-01-16

    Hallo Edwin,

    vielen Dank. Ein Stückchen bin ich weiter.
    Was ich allerdings nicht verstanden habe ist, wie nun die eigentliche CanLayer2-Kommunikation abläuft.
    Ich möchte Befehle an den Slave schicken. Dazu brauche ich die Struktur bzw. (bei der muss
    xIsTxMessage auf true sein?). Ist das so richtig?
    Wie rufe ich das dann auf?
    Könntest du mir evtl. (bitte) da ein Beispiel schreiben?
    Sorry, ich bin wirklich auf allen Ebenen Anfänger.
    DAnke.
    Viele Grüße
    Ute

     
  • eschwellinger

    eschwellinger - 2014-01-16

    Hallo Ute,

    hast du dir das Beispiel angeschaut?

    "c:\Users\<deinusername>\CODESYS Examples\CAN Bus API\CANbusAPIExample.project" </deinusername>

    oder hast du das nicht gefunden nach Installation des Store Packages?

    Grüße
    Edwin

    IMG: CANBusExample.jpg

     
  • ute - 2014-01-17

    Hallo Edwin,

    ja, ich habe es gefunden. Ich bin zwar zuerst daran gescheitert, dass es im Users-Verzeichnis steht, weil ich nicht die Rechte auf dem PC hatte, das Package zu installieren und es darum im User-Verzeichnis desjenigen lag, der installiert hatte ...

    Und angeschaut hab ich es auch. Aber so richtig blicke ich nicht durch.
    Wenn ich jetzt so eine Message erstmal zum Testen "händisch" schreiben möchte,
    was muss ich jetzt wie in diese Datenstruktur schreiben?

    Vielen Dank und viele Grüße
    Ute Ferlein

     
  • eschwellinger

    eschwellinger - 2014-01-17

    denke in etwa so:

    g_busConfig : CAN.DRIVER_CONFIG := (usiNetwork:= 0, uiBaudrate:= 500, ctMessages:= 10);
    Message : CAN.Message;

    Message.udiCANID := 16#201;
    Message.usiDataLength := 1;
    Message.abyData[0] := 5;

    driver11bit.SendMessage(Message:= Message, eError=> );

    Grüße
    Edwin

     
  • ute - 2014-01-23

    Hallo Edwin,

    danke für deine Hilfe. Es funktioniert soweit. Jetzt muss ich das ganze noch über eine Web-Visu parametrierbar machen ...
    Falls du mir einen Tipp hast, wo ich dazu was finde, wäre ich dir sehr dankbar.

    Viele Grüße
    Ute

     

Log in to post a comment.