TwinCAT PLC CANOpen Schnittstelle programmieren

Sale

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Programmierung der Kommunikation für den CAN-Bus.
Protokoll: CANOpen.
Hardware: Beckhoff CX1010 und CANopen Master Klemme EL6751.

Hallo Gemeinde,

muss mit den obigen HW-Komponenten über CANopen eine Verbindung zu einem Regler aufbauen.
Im TwinCATSysMng ist die HW konfiguriert und läuft auch einwandfrei. Nur SW-technisch habe ich leider überhaupt keine Ahnung,
wie die Kommunikation ausprogrammiert werden kann. soll heißen: keine Ahnung wie ich Messages empfangen und versenden kann?
Praktisch wären Programmbeispiele oder vorgefertigte FB's aus einer .lib.

Bitte helft mir!
Daberer
 
Zuletzt bearbeitet:
Bei CanOpen werden die Prozessdaten in sogenannten Prozessdatenobjekten (PDO) ausgetauscht, in den meisten Fällen ereignisgesteuert, d. h. nur bei Änderung der Daten. Das erledigt die EL6751 allein, im PLC-Programm brauchst Du dafür nichts weiter tun. Dort stehen die Daten wie andere I/O's zur Verfügung.

Ich nehme an, dass Du den Regler mit Hilfe einer zugehörigen EDS-Datei im Systemmanager eingebunden hast. Wieviel Du jetzt noch von Hand nachtragen musst, hängt von der Auskunftsfreudigkeit dieser Datei ab. Evtl. musst Du selbst RxPDO's (Ausgänge aus PLC-Sicht) und TxPDO's (Eingänge aus PLC-Sicht) und danach in den PDO's Variablen anlegen. Die kannst Du dann wie gewohnt mit PLC-Variablen verknüpfen.

Für detailliertere Tips müsstest Du schon die EDS-Datei des Reglers hochladen. Auch ein Systemmanager-Screenshot wäre hilfreich, um zu sehen, welche Strukturen für den Regler im Projektbaum schon vorhanden sind.
 
Hallo,

anbei screenshots vom TcSysMngCnfFile und die ESD-Datei.
mit der HW-Konfig des SystemManagers bin ich - glaube ich zumindest - auf dem richtigen Weg.
Hab nur nicht gewuss wie ich die Kommunikation im PLC-Projekt selbst ausprogrammieren soll.
 

Anhänge

  • TcSysMngCnfFilePart1.JPG
    TcSysMngCnfFilePart1.JPG
    48,4 KB · Aufrufe: 129
  • TcSysMngCnfFilePart2.JPG
    TcSysMngCnfFilePart2.JPG
    68,5 KB · Aufrufe: 134
  • EDS-Datei V1.2 für Can bzw. CanOpen.zip
    10,6 KB · Aufrufe: 81
Zuviel Werbung?
-> Hier kostenlos registrieren
hab ich gemacht. kann nun auch senden.
Problem: "CAN-Controller warning limit reached" bekomme ich von der Box
zurückgesendet.

Zur Info: Habe den CANopenFrame im FreeRun-Mode übertragen.

Benötige ich einen Sende-/Empfangsmechanismus auch bei ereignisgesteuertem Datenaustausch?

Dachte das erkennt das SlaveDevice automatisch, wenn sich die SendeDaten ändern ... ???

Vielen Dank im Voraus!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

werde mich jetzt ausloggen. Gibt schließlich noch mehr als nur Arbeit.

Vielen Dank Leute. Es rennt zwar noch nicht, aber ihr habt mir einen Stoß in die richtige Richtung gegeben und mir gezeigt, dass ich nicht total auf dem Holzweg war.


Danke!
Sale
 
Benötige ich einen Sende-/Empfangsmechanismus auch bei ereignisgesteuertem Datenaustausch?
Du gibts zu jedem PDO auf einem Karteireiter den "Transport Type" an. Der bestimmt, ob der Datenaustausch asynchron (ereignisgesteuert) oder synchron (zyklisch) erfolgt:
http://infosys.beckhoff.com/index.p...031/el6751/html/co_comprocessdata.htm&id=6532 (Mitte)
http://infosys.beckhoff.com/index.p.../1031/el6751/html/co_pdoparameter.htm&id=6533

Möglicherweise erwartet der Slave eine zyklische Kommunikation, vielleicht sogar mit geringerer Zykluszeit als die Free-Run-Zykluszeit.
 
Danke Leute,

hat mittlerweile alles funktioniert.
Es wäre fast an einem HW-Prob gescheitert.
War durch die fehlenden Monitoring-Möglichkeiten nicht leicht herauszubekommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Forum Mitglieder.
Ich habe noch eine Frage zu dem Thema.

Ich würde gerne eine CAN Nachricht mit 8 Byte versenden und das zyklisch mit 100ms Takt. Über die Zuweisung Data[0..7] klappt das auch.
Meine Frage ist nur wie kann ich die COB-ID so konfigurieren, dass die Nachricht zyklisch mit 100ms versendet wird?

Habe hier PCAN Explorer und kann dort eine Nachricht z.B. zyklisch mit 50,100 oder 1000ms (frei wählbar) versenden.
Von der SPS werden die Daten auch korrekt empfangen.

Nur senden klappt noch nicht.
 
Zurück
Oben