ich bin relativ neu bei der Programmierung von CoDeSys. Ich benutze eine Moeller XC100 und versuche verzweifelt über CANopen verschiedene Teilnehmer einzubinden (Bosch-Ventilträgersystem, Balluff-Messsystem, SEW-Bus,...). Wie schon erwähnt verzweifele ich daran.
Bei jedem Teilnehmer blinkt die Busfehler-LED.
Als erstes würde es mir helfen wenn ich ein Beispiel zum senden eines SDO-Befehles hätte. Das Mappen von PDO-Daten funktioniert, jedoch bleiben die Eingänge auf Null stehen und die Ausgänge werden nicht geschalten.
Was mache ich falsch? Gibt es eine grundsätzliche Herangehensweise für CANopen Teilnehmer?
gruß bonatus
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
die SDO musst du nicht verschicken, wenn du in den Service Data Objects(SDO) die Einstellungen eingibst werden sie bei jeder Initialisierung des Teilnehmers geschrieben. Schwieriger ist natürlich das senden der SDO´s aus dem Programm heraus, wenn du die Einstellungen permanent ändern möchtest. Da musst du zunächst den Teilnehmer in den Pre-Op Zustand versetzen um SDO´s Daten senden zu könnnen und anschließend nach erfolgreichen senden, den Teilnehmer wieder in OP versetzen.
Für solche permanenten Einstellungen sollten aber eigentlich die PDO Daten vom Hersteller vorgesehen sein, mit diesen muss der Teilnehmer nicht in den Pre-OP Zustand versetzt werden. Diese können zyklisch gesendet werden.
gruß bonatus
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2009-03-26
Originally created by: mno*
Hallo,
ist es möglich die Werte der SDO's über Variablen festzulegen?
Ich Möchte nicht, wenn ich im laufenden Betrieb die Werte über den Baustein CanOpenSendSDO verändert habe,
das nach einem Neustart (Stromausfall) die Anfangswerte wieder geladen werden.
Gruss Matthias
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
ich bin relativ neu bei der Programmierung von CoDeSys. Ich benutze eine Moeller XC100 und versuche verzweifelt über CANopen verschiedene Teilnehmer einzubinden (Bosch-Ventilträgersystem, Balluff-Messsystem, SEW-Bus,...). Wie schon erwähnt verzweifele ich daran.
Bei jedem Teilnehmer blinkt die Busfehler-LED.
Als erstes würde es mir helfen wenn ich ein Beispiel zum senden eines SDO-Befehles hätte. Das Mappen von PDO-Daten funktioniert, jedoch bleiben die Eingänge auf Null stehen und die Ausgänge werden nicht geschalten.
Was mache ich falsch? Gibt es eine grundsätzliche Herangehensweise für CANopen Teilnehmer?
gruß bonatus
Moin
Ich würde das so angehen:
Gibts einen CanOpen Master von Möller ? Ich vermute mal ja.
Diesen in die Steuerungskonfig einhängen und Baudrate konfigurieren.
Die zugehörigen CanOpenMaster.lib , CanOpenManager.lib und 3sCanDrv.lib einbinden. Beispiel: siehe Screenshot.
Von den anzusteuernden Geräten die *.eds Files besorgen (vom Hersteller erhältlich) und diese als Unterelement anhängen.
Schwupp -> alle Kommunikationsprobleme sind gelöst.
(Zumindest in der Theorie )
Gruss
Erik
Hallo,
so weit zur Theorie, ich bin jetzt an einem Punkt wo die automatische Initialisierung beim Status 3 anhält.
Die Einbindung in die Konfiguration habe ich schon hinbekommen aber jetzt gehts halt nichts los?
Ich habe jetzt auch nur noch einen Teilnehmer im Bus.
gruß bonatus
Hi
Das heisst, du machst das bereits über den CanOpenMaster wie beschrieben, oder 'von Hand' ?
Ein Beispiel zum senden eines SDO-Befehls hab ich.
Das geht über den CanOpenSendSDO FB aus der CanOpenManager.lib.
Aber wenn du ein korrektes *.eds File hast, dann musst du kein einziges SDO selbst verschicken.
Du kannst mir auch ne Mail schicken, dann kriegst meine Tel. Nr.
Gruss
Erik
Hi nochmal
Hab den Screenshot erst nach der Anmeldung gesehen...
Schick mir doch mal ne Mail, dann kriegst du meine Tel. Nr.
Ein Wort sagt mehr als tausend Bilder... oder so.
Gruss
Erik
Originally created by: mno*
Hallo,
ich beschäfftige mich gerade mit dem versenden von SDO.
Habe dies auch mithilfe der Beiträge hier über den Baustein "CanOpenSendSDO" hinbekommen.
Würde aber gerne noch wissen wie die Aussage:
"Aber wenn du ein korrektes *.eds File hast, dann musst du kein einziges SDO selbst verschicken. " zu verstehen ist.
Gibt es noch andere Möglichkeiten SDO zu versenden?
Denn ich muss sehr viele SDO versenden.
Gruss Matthias
Naja, wenn Du ein korrektes eds File einbindest brauchst DU dich um das versenden von SDO`s zur Parametrierung des Gerätes nicht zu kümmern.
Jedoch sind mir so einige Geräte insbesondere Frequenzumrichter untergekommen bei denen Sollwerte über SDO's versendet werden.
Originally created by: mno*
Hallo,
Das ist richtig. Ich habe eines sehr komplexen Regler bei den jede menge Einstellungen möglich sind die ich aber über SDO's versenden muss.
Dachte es gibt vielleicht eine eleganter Methode um diese zu versenden.
Vielleicht hat ja auch jemand eine idee wie man das Programmtechnisch gut lösen kann.
Gruss Matthias
Hallo,
die SDO musst du nicht verschicken, wenn du in den Service Data Objects(SDO) die Einstellungen eingibst werden sie bei jeder Initialisierung des Teilnehmers geschrieben. Schwieriger ist natürlich das senden der SDO´s aus dem Programm heraus, wenn du die Einstellungen permanent ändern möchtest. Da musst du zunächst den Teilnehmer in den Pre-Op Zustand versetzen um SDO´s Daten senden zu könnnen und anschließend nach erfolgreichen senden, den Teilnehmer wieder in OP versetzen.
Für solche permanenten Einstellungen sollten aber eigentlich die PDO Daten vom Hersteller vorgesehen sein, mit diesen muss der Teilnehmer nicht in den Pre-OP Zustand versetzt werden. Diese können zyklisch gesendet werden.
gruß bonatus
Originally created by: mno*
Hallo,
ist es möglich die Werte der SDO's über Variablen festzulegen?
Ich Möchte nicht, wenn ich im laufenden Betrieb die Werte über den Baustein CanOpenSendSDO verändert habe,
das nach einem Neustart (Stromausfall) die Anfangswerte wieder geladen werden.
Gruss Matthias
Originally created by: Stephanie Kreutz
@bonatus:
Der SDO-Transfer von/zu CAN-Teilnehmern ist auch im NMT-Operational-Zustand möglich (siehe CiA DS301).
Jedenfalls benutze ich den Baustein CanOpenSendSDO innerhalb des Programms während der Teilnehmer NMT-Operational ist.
Die Benutzung ist zwar nicht so richtig komfortabel oder intuitiv, aber doch immerhin möglich
Gruß Steffi
Hallo
@ Stephanie
Ich konnte das senden von SDO´s nur im Pre-OP machen.
gruß bonatus
Originally created by: Stephanie Kreutz
Gibt der Baustein eine Fehlermeldung aus?
Ich benutze jedenfalls den FB CanOpenSendSDO aus der 3S-CANOpenManager.lib
Sonst poste doch mal einen Screenshot von deinem Baustein.. vielleicht ist ja an den Eingängen etwas krumm
Gruß Steffi
Hallo,
das Problem mit dem Senden von SDO´s ist bei mir nicht mehr aktuell.
gruß bonatus