# CAN Bus Beispiel mit 750-658 Modul



## tokamak (18 Januar 2021)

Hallo 

Ich bin an der Evaluierung vom PFC200, ob der sich für ein Projekt eignet. Leider habe ich niergendwo ein Funktionierendes Beispielprogramm gefunden mit einem CAN Bus. Ich möchte einfache Grundfunktionen testen. can daten verschicken und empfangen. Ich gehe davon aus, dass sich dies mit den  Bausteinen im Anhang bewerkstelligen lässt. 
kann mir jemand helfen die Variabeln so zu definieren dass, das ding mal senden und empfangen kann? Oder gibt es irgendwo schon ein Beispielprogramm mit einem CAN BUS?


----------



## Tobsucht (18 Januar 2021)

Hallo,

du könntest noch den Funktionsbaustein FbCanL2Open einfügen.

Was ist nun Deine Frage?
Fragst Du was für Variablen an die Ein- und Ausgänge gehören? Dies ergibt sich den Funktionsbausteinen. Diese geben den Datentyp vor.


----------



## tokamak (18 Januar 2021)

hi Tobsucht

danke für die schnelle Rückmeldung. Meine Frage ist wie kann ich CAN Nachrichten senden und empfangen (so das ich auf die daten als variablen zugreifen kann). ich verwende ein PFC 200 und ein 750-658 CAN Modul. 
daran angschlossen habe ich ein CAN PEAK Dongle, mitdem ich testen will. 
IM IO check funktioniert das empfangen so mehr oder weniger.. ich bin noch ein Blutiger Anfänger mit Wago und Codesys ^^ gibt es irgendwo ein passendes Anwenderbeispiel das ich mir Anschauen kann? 

Bei den Bausteinen bin ich auch unschlüssig wie ich die Ansteuern muss. und welche es nun wirklich braucht.

WagoAppCanLayer2.FbCanL2Open --> braucht es.. wozu? 
FbModuleConfigurationAndStatus --> was schreibe ich bei welchem input hin? / lässt sich nicht compilieren (Nicht eindeutige Verwendung des Namens FbModuleConfigurationAndStatus 


FbCanRx11BitFrame --> kann ich davon auch mehrere parallel verbauen?
FbCanTx11BitFrame --> kann ich davon auch mehrere parallel verbauen?

Muss man da wirklich so hardwarenah bleiben, oder gibt es Module/Bausteine wo ich einfach nur ID , Bitrate & datenbytes  auslesen kann?


----------



## djnele (28 Januar 2021)

tokamak schrieb:


> Hallo
> 
> Ich bin an der Evaluierung vom PFC200, ob der sich für ein Projekt eignet. Leider habe ich niergendwo ein Funktionierendes Beispielprogramm gefunden mit einem CAN Bus. Ich möchte einfache Grundfunktionen testen. can daten verschicken und empfangen. Ich gehe davon aus, dass sich dies mit den  Bausteinen im Anhang bewerkstelligen lässt.
> kann mir jemand helfen die Variabeln so zu definieren dass, das ding mal senden und empfangen kann? Oder gibt es irgendwo schon ein Beispielprogramm mit einem CAN BUS?




Ich habe dies mit der WAGO-CANGateway KArte versucht.
NAch einer Woche Forschung, habe ich ein Programm vom WAGO Support erhalten, bei dem das verschiessen und empfangen einzelner Telegrame funktioniert hat.
(Das war sehr frustrierend, 1 Woche für nichts)

Ich würde mich an den Support wenden, der sollte dir ein Programm im State-Machine-Case Form zu Verfügung stellen.


Das Beispiel von unserem Geschäft kann ich hier leider nicht posten.

Ja es eignet sich. Gelöst mit einem 8202 und 3 Can-Klemmen
In einem Gebäude empfangen wir von über 30 Zentralen und 3 CAN-Bus-Strängen Telegramme, welche wir an ein LEitsystem weitersenden.
ca. 400 Datenpunkte.


----------



## tokamak (29 Januar 2021)

Hallo Zusammen mitlerweile läuft es. 

Zuerstmal muss man die CAN Klemme Parametrieren. In der geräteansicht beim 750-658 auf einstellungen, Verbinden zum Parametrieren. dort habe ich sie auf 11Bit ID 500kbit/s, Filter auf overwrite für den gewünschten ID bereich, Bei konfiguration auf 24 Byte, Mail Diag Aus, Länge 5. Dann Speichern und alle Schreiben. 
Hier sollte man auch bereits nachrichten empfangen und senden können. 







Danach müssten die Nachrichten auch vom Controller ausgewertet werden können. Diese kommen intern über den KBus.. aber darum braucht man sich nicht kümmern, wenn man die WagoAppCanLayer2 verwendet. 





ein FbCanL2Open muss zyklisch aufgerufen werden um die Verbindung aufrecht zu erhalten. 
tx blöcke können so viele wie es braucht "parallel dazugeschaltet werden. 

zum Lesen:
Variabeln 

    can_rx_frame: ARRAY [1..30] OF WagoAppCanLayer2.FbCanRx11BitFrame;
    rx_trigger: ARRAY[1..30] OF BOOL;
    i :INT;

Code
FOR i :=1 TO 30 DO    can_rx_frame_(
    //init rx frame constructor
        xEnable:= GVL.open_valid,     // enable when connection is open
        I_Port:= CAN1,                        // on CAN Module 1 (750-652 module must be renamed at device view)
        xBufferMode:= TRUE,             
        xRxTrigger:= rx_trigger);

CASE i OF

        1 : 
            can_rx_frame.wCanId:=TO_WORD(can_msg_id);
            processed_var1 := can_rx_frame.aRxBuffer[2] *256 + can_rx_frame.aRxBuffer[1];
            processed_var2 := can_rx_frame.aRxBuffer[4] *256 + can_rx_frame.aRxBuffer[3];
            processed_var3 := can_rx_frame.aRxBuffer[5]-40;
            processed_var4 := can_rx_frame.aRxBuffer[6]-40;
            processed_var5 := can_rx_frame.aRxBuffer[7]/16 ;
            processed_var6 := can_rx_frame.aRxBuffer[8] ;
                ..._


----------



## CoDeSysUser (10 März 2022)

Hallo tokamak,
danke für den Hinweis mit zyklischen Aufruf FbCanL2Open(), das ist beim Onboard CAN des PFC200 nicht nötig.


----------

