TC3: Daten via CAN-Bus werden nur nach Änderung übertragen und nicht zurückgesetzt

Beiträge
5.750
Reaktionspunkte
1.201
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe hier einen Batteriesimulator der via CAN-Bus an eine EL6751 angeschlossen ist. Die Kommunikation läuft im großen und ganzen auch, nur an zwei Punkten gibt es Probleme.
Ich sende über verschiedene CAN-Objekte (Hoffe das heißt so), die aus einer DBC-Datei stammen, Daten an den Simulator, wenn dieser jetzt aus und wieder eingeschaltet wird sind diese Daten im Simulator nicht mehr gesetzt, aber die SPS sendet die Daten auch nicht mehr, weil sich auf SPS-Seite die Daten nicht geändert haben. Kann man irgendwie erreichen, dass alle Daten, wenn der Slave mal weg war automatisch wieder gesendet werden oder das die Daten zyklisch gesendet werden?
Das nächste Problem ist, dass die Statusmeldungen vom Simulator sich nach dem Ausschalten nicht ändern, z.B. das Bereit-Flag bleibt TRUE.
 
Beim CanBus gibt es verschiedene Übertragungsarten. ich arbeite viel mit CanOpen und da ist es auch wieder etwas anders da es dort verschiedene Statemachines gibt. Da gibt es dann PDOs für zyklische Datenübertragung wo man aber einstellen muß wann eine Übertragung erfolgt. zyklisch alle x ms oder bei Wertänderung.
Es gibt aber noch SDO die alles möglich in einem Slave sein können Stromstärke, etc..
Diese werden dann eigentlich nur gelesen oder geschrieben einmalig beim Initialisieren. Muss ich morgen mal schauen da ich die EL6751 oft verwende
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss mich berichtigen die Einstellung für PDOs ist nur in manchen Slaves nötig/möglich nicht bei der EL6751.
Aber eventuell könnte auch der Sync-Cycle Multiplier da etwas beeinflussen, wobei ich diesen aber noch nie verändert habe.
Die DBC Datei ist dann praktisch eine Hilfe wo die entsprechenden SDOs und PDOs konfiguriert sind.
Ansonsten muss man dies halt selbst händisch machen.
 
2021-11-03 05_10_04-CO-0295_USN_CHEMIXX E 30 - TcXaeShell.png
Dies sind die Parameter wo man an einem CanOpen Slave verändern kann wo denke ich für dich eventuell sinnvoll sein könnten

2021-11-03 05_12_05-CO-0295_USN_CHEMIXX E 30 - TcXaeShell.png

Diese Parameter könnten eventuell auch verantwortlich sein, das war bei mir einmal die Lösung bei einem ähnlichen Fall an der EL6751

Oder du musst wirklich mal das SDO Verzeichnis von deinem Simulator anschauen ob es dort einen Entsprechenden Parameter gibt.
Die SDO des Slaves kann man dann über Twincat beeinflussen
2021-11-03 05_18_42-CO-0295_USN_CHEMIXX E 30 - TcXaeShell.png
 
Die Kommunikation findet über CAN-Open statt. Die vorgeschlagenen Änderungen am CAN-Knoten kann ich nicht machen, da "Allgemeiner CAN-Knoten..." ausgewählt ist und die Einstellmöglichkeiten deaktiviert sind.
Ich musste allerdings auch feststellen, dass ein grundsätzliches Senden der Werte nicht sinnvoll ist, da die Variablen beim Start zunächst unzulässige Werte enthalten. Ich werde es jetzt so machen, dass ich überprüfe, ob die Werte des Slaves die beim Einschalten "verloren gehen" noch stimmen und falls nicht setze ich eine unproblematische Variable kurz auf einen anderen Wert, damit die Werte gesetzt werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau dir mal im CANOpen-Device auf dem TxPDO den Reiter "PDO" an.
Wenn der Transmission Type 255 ist dann bedeutet es dass dein Gerät nur bei Änderungen etwas überträgt.
Wenn es der Slave unterstützt kannst du es aber auf zyklisch setzen. Der Wert 1 bedeutet dann z.B. dass jeden Zyklus der Wert gesendet wird.
Es ist primär eine Frage ob dein Slave das unterstützt und sekundär ob die Buslast das hergibt.

Guga
 
Zurück
Oben