CODESYS - das IEC 61131-3 Programmiersystem

Willkommen im offiziellen CODESYS - Forum von 3S-Smart Software Solutions | A member of the CODESYS Group
Deutsche Version English version russian version 
Aktuelle Zeit: Do Mai 23, 2019 3:48 am

Alle Zeiten sind UTC




Ein neues Thema erstellen  Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Mär 14, 2019 12:24 pm 
Offline

Registriert: Do Sep 13, 2018 2:08 pm
Beiträge: 20
Hallo,

wir haben in unserem System einen CANopen-Manager laufen, den wir in bestimmten Zuständen gerne deaktivieren möchten. Unser System erfordert es, bestimmte Geräte abzuschalten, um Strom zu sparen. Darunter fallen auch alle CAN-Knoten und selbst die Versorgungsspannung der CAN-Schnittstelle. (Das Schalten der Betriebsspannungen erfolgt über Ausgänge der Steuerung. Die Steuerung selbst läuft immer.) Das hat zur Folge, dass CAN-Nachrichten des CANopen-Managers nicht mehr bestätigt werden und somit in der Transmit-Queue hängen bleiben. Der CAN-Treiber versucht dann die CAN-Nachrichten immer wieder zu versenden. In der Steuerung steigt dann die CPU-Last der CAN-Prozesse. Beim Wiedereinschalten wird dann erstmal die gesamte Transmit-Queue gesendet.

Daher suche ich gerade nach einer Möglichkeit, den CANopen-Manager per Code zu deaktivieren, vor allem mit dem Ziel, dass keine Nachrichten mehr gesendet werden. Wir nutzen Heartbeat und Pollen optionaler Slaves.

Den Heartbeat des Masters kann man vermutlich abschalten, indem man das SDO für die Heartbeat-Time auf 0 setzt.

Aber kann man auch das Pollen optionaler Slaves deaktivieren?

Gibt es sonst noch eine Möglichkeiten, den CANopen-Manager geordnet zu deaktivieren?

Grüße,
Jan


Nach oben
   
BeitragVerfasst: Do Mär 14, 2019 4:09 pm 
Offline
Site Admin

Registriert: Mo Sep 05, 2005 8:42 am
Beiträge: 3285
Hi,
schau mal in folgendes Beispiel:

CAA Device Diagnosis Example:
https://store.codesys.com/caa-device-di ... ample.html


The example use cases demonstrate how to use the CAA Device Diagnosis library for the following:

Starting, stopping, and resetting devices
Activating and deactivating devices
Traversing the device tree
Collecting device and bus information

Grüße
Edwin


Nach oben
   
BeitragVerfasst: Fr Mär 15, 2019 6:40 am 
Offline

Registriert: Do Sep 13, 2018 2:08 pm
Beiträge: 20
Hallo Edwin,

das klingt gut. Ich schaue es mir an.

Danke für den Tipp.

Grüße,
Jan


Nach oben
   
BeitragVerfasst: Mi Mär 20, 2019 8:38 am 
Offline

Registriert: Do Sep 13, 2018 2:08 pm
Beiträge: 20
Ich habe mich nun etwas mit dem Beispiel beschäftig und begonnen daraus etwas eigenes zu bauen. Allerdings lief erstmal gar nichts (das Beispiel klappte aber). Ich habe das dann soweit vereinfacht, dass ich nur den Aufruf von DED.GetRoot() im Projekt hatte. Die Funktion gab immer nur 0 zurück.

Nach einiger Sucherei habe ich dann endlich herausgefunden, dass man in den SPS-Einstellungen "Diagnose für Geräte aktivieren" setzen muss. Ich hatte mir dir Bibliothek "CAA Device Diagnosis" selbst in den Bibliotheksverwalter gezogen. Eigentlich wird diese automatisch angezogen, wenn man diese Funktion aktiviert.

Vielleicht hilf das hier ja mal jemanden mit einem ähnlichen Problem. So etwas dürfte ruhig in dem PDF, was dem Beispiel beiliegt, einmal erwähnt werden.

Zumindest kann ich die gewünschte Funktion nun relativ einfach erreichen. Das Deaktivieren des CANopen-Managers habe ich soweit vereinfacht:
Code:
VAR
   _itfNode : DED.INode;
   _fbReconfig : DED.Reconfigure;
   _xEnable : BOOL;
   _xEnableNode : BOOL;
END_VAR
----------------------------------------------
// hier das Gerät zuweisen
_itfNode := CANopen_Manager;

// _xEnable einmalig setzen, um den Vorgang zu starten
// _xEnableNode setzten / zurücksetzen je nach gewünschter Funktion (aktivieren / deaktivieren)
IF _xEnable = TRUE THEN
   _xEnable := FALSE;
   _itfNode.Enable := _xEnableNode;
   _fbReconfig.xExecute := TRUE;
END_IF

_fbReconfig(itfNode := _itfNode);
IF _fbReconfig.xDone OR _fbReconfig.xError THEN
   _fbReconfig.xExecute := FALSE;
END_IF


Nach oben
   
BeitragVerfasst: Mi Apr 10, 2019 8:53 pm 
Offline

Registriert: So Nov 19, 2017 3:14 pm
Beiträge: 21
Danke ich werde das demnächst benötigen, da ich bei bestimmten Anlagen auch den CAN-Bus abschalten möchte um CPU-Last zu sparen!


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de