Zwei gleiche CAN Nachrichten (telegramm) senden mit CANOPEN EL6751 ohne inhibit Time

dschoni

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich habe hier einen CX1020, einen EL6751 klemme , Ausgänge sowohl digital als auch analog , und Eingänge sowohl digital als auch analog.
Ausgangsituation : ich will mit CANOpen klemme el6751 zwei gleiche CAN Nachrichten senden. Die Klemme arbeitet schon auf allgemeine CAN Modus. Habe bis jetzt beobachtet, Beckhoff sendet nur neue Nachricht wenn es änderungen in der Nachricht gibt (event on change) oder wenn ich inhibit time aktiviere. Mit inhibit time kann ich zwar zwei dieselbe nachricht senden, kann aber nicht mehr beeinflussen, sobald das Program gelaufen ist.
Frage : gibt es möglichkeit zwei gleiche nachrichten zu senden ohne aktivierung von inhibit Time? Ich will z.b. dass man mit GUI kontrolieren kann. Muss man dafür "event on change" modus deaktivieren ? wenn ja wie macht man das

Vielen Dank im voraus fuer eure Hilfe

Mfg
DSCHONI
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Feldbus,
dazu habe ich auch Fragen. was ist der Unterschied zw. Can Interface und CANopen Node (also rechtsklick bei CiA Gerät (el6751) => Box anfügen => runterscrollen bei verschiedenes => CANopen Node) ? gibt es auch möglichkeit mit CAN Interface auf CAN modus zu arbeiten ?

Gruß
Dschoni
 
Natürlich dafür ist es ja da. Du musst halt etwas mehr Programmieren. Bei einem CAN Node musst du fast gar nichts machen das ist mit dem CAN Interface halt anderes. Dafür hast du alle Freiheitsgrade ...
 
verstehe, und wie schaltet man bei CAN Interface den normallen CAN MODUS. Auf diese Seite http://infosys.beckhoff.com/index.p...ysman_el6751_config.htm#CAN_Interface&id=8029 steht ganz am anfang dass CAN Node allgemeines CAN Gerät (Zugriff über CAN Schicht 2) unterstuzt. in dem CAN Interface artikel steht nicht dass man diese möglichkeit hat, bzw nicht wie man es machen kann. Da steht dass man mehr einfluss auf COB ID hat

Gruß
Dschoni
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In wie weit kennst du dich mit CAN aus...? Ich verstehe auch deine Frage nicht "wie stellt man auf CAN Modus um"? Sobald du das CAN Interface drinnen hast kannst du machen was du willst. Du kannst beliebige CAN Telegramme wegschicken oder empfangen. Was brauchst du mehr?
 
ich kenn mich nicht so gut aus. sorry. bin grade am lernen :). ich habe erstmal gedacht, CAN Interface arbeitet mit CANOpen protokol. aber das war echt dumm von mir. Wie der Name schon sagt, CAN Interface , er arbeitet ja mit RAW CAN Protokoll.
 
Ich habe hier noch eine Frage, was ist die Vorausetzung (ausser COB ID, bit RATE und den Filterbereich)damit man über CAN Interface nachrichten senden und empfangen kann. ich will meine Steuerung mit PCCANview komunizieren koennen. Die Daten und die COBID liegen alle schon auf dem Ausgang (also txmessages => cobID und Data). Das Problem ist, die Nachrichten kommen nicht an PCCAN View an. umgekehrt (also von PC CAN view )funktioniert, obwohl ich nur die alle erste nachricht ,was ich gesendet habe, abfangen kann (die werte in RXmessages => cobId und DATA sind nicht automatisch aktualisiert).
Fehler von PCCAN view seite ist ausgeschlossen, da mit CAN NODE es funktionieren kann

vielen Dank im voraus für eure Hilfe
MfG
Dschoni
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

würde gern diesen Beitrag noch mal "aufwärmen". Habe das gleiche Problem wie der Themenstarter jedoch mit CX9020 und EL6751.

Richte ich meine CAN Kommunikation über einen "Allgeneinen CAN-Node" ein, funktioniert alles tadellos. Empfangen und Senden. Da so jedoch eine mögliche Unterbrechung der Verbindung nicht erkannt wird, würde ich gern via "CAN interface" kommunizieren. Hier habe ich jedoch das Problem, dass er zu Beginn nur eine Message empfängt. Nach kurzer Zeit gehts dann in den overflow (CanState=128. Bit 7: CAN-Queue: the internal RxQueue has an overflow). Muss man im TwinCat System Manager noch was entsprechend parametrieren? Komme hier leider nicht weiter.

Danke vorab!!!
 
Sicher muss du was Programmieren, es gibt doch ein RxCounter auf der Input und auf der Output Seite...
Wenn der RxCounter +1 ist auf der Input Seite weißt du das Daten da sind, wenn du die Daten bearbeitet hast setzt du auf der Output Seite deinen RxCounter auch +1. Sind beide Counter gleich sind keine neuen Daten da. Ist die Task 10ms wird alle 10ms in den Buffer geschaut, wenn wein Buffer die Größe 10 hat kannst du also alle Millisec ein Telegramm empfangen. Sind es mehr musst du den Buffer vergrößern oder die Task verkleinern.
 
Hallo ihr alle,

ich möchte gern diesen Beitrag wieder aktualisieren. Ich habe aber ein anderes Problem mit der Klemme EL6751-0010.
Ich habe zurerst mit CANopen Node über einen "Allgeneinen CAN-Node" erfolgreich versucht, um CAN-Signal über PDOs mit einem CAN_Analyze auszutauschen. Dabei funktionierte die Klemme mit normalen CAN Node und verwendet kein NMT.
Dann habe ich mit EL6751-0010 Slave verwendet. Ich kann nicht die Box EL6751_0010 (CANopen Slave) über einen "Allgeneinen CAN-Node" einstellen, da EL6751-0010 ein Slave_Klemme ist und immer kein NMT verwendet(siehe Links).

http://infosys.beckhoff.com/index.p...ysman_el6751_config.htm#CAN_Interface&id=8029

Ich habe dabei versucht, Daten über PDO_1 an den CAN-Bus zu senden und über CAN_Analyze zu beobachten, aber ohne Erfolg. Ich weiß nicht warum und vermute den Fehler, da ich kein Master auf dem Bus hatte. Der CAN_Analyze hat keine Datenvon PDO_1 empfangen. Ich glaube, dass ich noch was parametrieren muss, aber keine Ahnung.

Hat jemand von Euch schon mal die Klemme EL6751_0010 verwendet? Es ist sehr dankbar, wenn jemand mir Tipps geben könnte

Freundliche Grüße,

Phuong
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die EL6751-0010 ist eine CANopen Slave Klemme und auch genau für diesen Zweck gemacht worden. Wenn du keinen CANopen Master hast warum dann die Klemme? Du willst aber CAN Layer 2 Daten verschicken. Das sind Feature die nur in der EL6751 vorhanden sind, also solltest du die Klemme wechseln. Mit der EL6751 kannst du fast alles machen was man über CAN machen kann - sogar CANopen :)
Schau dir mal den NodeState im SystemManger an (unter deinem allgemeinen CAN Node), der ist bei dir sicher 129, oder?

Gruß
 
Hallo Feldbus,

danke Dir zuerst für die schnelle Antwort.

ich werde morgen mal im im Büro gucken und schreibe Dir dann Bescheid.

Dir einen schönen restlichen Abend.

Gruß Phuong
 
Guten Morgen Feldbus,

Du hast Recht. Ich habe gerade geguckt und der NodeState lautet 129. Aber der sagt mir was? Könntest Du mir bitte etwas erklären.

In meiner Arbeit habe ich später einen Master aber kein CANopen-Master. Ich will ja CAN Layer 2 Daten verschicken. Kann ich den Test für reine CAN-Nachrichten ohne Master mit einem CAN_Analyser machen oder nicht? Oder soll ich zusätzlich die Klemme EL6751 einsetzen, dann die Datentransfer zwischen zwei CAN_Node testen?

Ein offener Punkt steht noch, dass ich nicht sicher bin, ob in der EL6751-0010 die CAN Layer 2 Schnittstelle intergiert ist oder nicht? Es kann sein, dass die nur CANopen-Nachrichten übertragen kann. Mein CAN-Analyser kann vielleicht nur normale CAN-Nachrichten übertragen, von daher konnte er keine Nachricht empfangen.

Mit deiner Hilfe wird mein Verständnis ja klarer sein.

Danke dir und viele Grüße,

Phuong
 

Anhänge

  • EL6751-0010.PNG
    EL6751-0010.PNG
    30,8 KB · Aufrufe: 29
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst die CAN Klemmen in den OP Modus bringen, dafür gibt es zwei Möglichkeiten...
1. du schickst von deinen anderen Knoten, dafür musst du im Slave aber eine Layer 2 Node angelegt haben mit einer Adresse - das rote ist für dich wichtig!
[h=2]Statusübergänge[/h]Die Netzwerkmanagement-Nachrichten haben einen sehr einfachen Aufbau: CAN-Identifier 0 mit zwei Byte Dateninhalt. Das erste Datenbyte enthält den sogenannten Command-Specifier (cs), das zweite Datenbyte die Knotenadresse, wobei die Knotenadresse 0 alle Knoten anspricht (Broadcast).
11-bit Identifier2 Byte Nutzdaten
0x00csNode-ID

Die folgende Tabelle gibt einen Überblick über alle CANopen Statusübergänge und die dazugehörigen Kommandos (Command Specifier im NMT Master-Telegramm):
StatusübergangCommand Specifier csErläuterung
(1)-Der Initialisierungs-Status wird beim Einschalten selbsttätig erreicht
(2)-Nach der Initialisierung wird der Status Pre-Operational automatisch erreicht - dabei wird die Boot-Up-Nachricht abgeschickt.
(3), (6)cs = 1 = 0x01Start_Remote_Node.
Startet Modul, gibt Ausgänge frei, Startet Übertragung von PDOs.
(4), (7)cs = 128 = 0x80Enter_Pre-Operational. Stoppt PDO-Übertragung, SDO weiter aktiv.
(5), (8)cs = 2 = 0x02Stop_Remote_Node.
Ausgänge gehen in den Fehlerzustand, SDO und PDO abgeschaltet.
(9), (10), (11)cs = 129 = 0x81Reset_Node. Führt Reset durch. Alle Objekte werden auf Power-On Defaults zurückgesetzt.
(12), (13), (14)cs = 130 = 0x82Reset_Communication. Führt Reset der Kommunikationsfunktionen durch. Objekte 0x1000 - 0x1FFF werden auf Power-On Defaults zurückgesetzt
2 Oder aus der SPS Heraus per ADS:
(* Set manual in OP if Data > 0 if Data = 0 then PreOp *)
Data:=1; (* 1=OP; 0=PREOP *)
ADSWRITE(
NETID:='172.16.6.36.2.1' , (* Net Id from the EL6751-0010 *)
PORT:=100 ,
IDXGRP:=16#1F880 ,
IDXOFFS:=0 ,
LEN:=1 ,
SRCADDR:=ADR(Data) , (* Set in OP if Data > 0 if Data = 0 then PreOp *)
WRITE:= ,
TMOUT:= ,
BUSY=> ,
ERR=> ,
ERRID=> );

An deiner stelle würde ich aber die EL6751 einsetzen, du kommst schnell an Grenzen mit der EL6751-0010 und deiner Layer 2 Kommunikation.
Aber vielleicht reicht das schon...
 
Hallo Feldbus,

danke Dir für deine stetige Infos. Ich habe bereits erfolgreich geschafft, Daten mit dem CAN_Analyser über erste Variante auszutauschen.

Ich versuche jetzt anhand deiner Tipps die 2. Möglichkeit zu schaffen.


Eine Sache habe ich Dich nicht verstanden, was Du an Grenze mit der EL6751-0010 gedacht hast?

''An deiner stelle würde ich aber die EL6751 einsetzen, du kommst schnell an Grenzen mit der EL6751-0010 und deiner Layer 2 Kommunikation. ''


Viele Grüße,

Phuong
 
Wie gesagt ich weiß ja nicht was du vor hast, vielleicht reicht dir das ja auch aus was die Slave Klemme kann. Nur noch mal der Hinweis die Slave Klemme ist ein CANopen Slave und nicht für die Art der Kommunikation die du jetzt machst, geeignet - aber wenn es dir so reicht dann soll es gut sein. Mal sehen mit welchen Forderungen du noch kommst .... irgendwann wird es dann einen Punkt geben wo ich dir mit der HW nicht mehr helfen kann ;)

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich projektiere gerade ein Projekt mit einer Beckhoff CX5020 und einer EL6751-0010 CanOpen Slave im TwinCat2.
Die Funktion später sieht so aus: 1 Master kommuniziert mit 2 Slave Teilnehmer. Die Slave Teilnehmer haben die Knoten ID 12 und 13.
Aktuell habe ich eine EL6751-0010 Slave Karte vorgesehen. Im System Manager kann ich aber dieser Karte nur eine Knoten ID (z.B. 12) vergeben. Nun meine Frage gibt es eine Möglichkeit das der Master (z.B. über MNT) dem Slave Teilnehmer eine Knoten ID zuweist und ich dann über die CPU auswerten kann für welchen Knoten die Informationen in den PDOs sind bestimmt sind?
 
Wenn du die B510 Schnittstelle des CX5020 verwenden würdest könntest du gleich zwei oder mehr Slaves anlegen, dann brauchst du kein MNT mehr. Die Node ID muss bei TC start schon bekannt sein daher geht das mit MNT nicht da die Steuerung ja bereits läuft. Du kannst aber auch die EL6751 nehmen und hier das CAN Interface aktivieren, Vorteil du kannst damit alles machen, Nachteil du empfängst alle Daten und musst auch den kompletten CANopen Teil "nachprogrammieren". Ich denke der Aufwand steht in keinem Verhältnis zu deinem nutzen. Aber vielleicht wisst du ja einfach nur CAN machen dann hast du es ja selber im Griff was du machen willst und kannst...
 
Hallo Feldbus,
danke für deine Antwort. Wenn ich dich richtig verstehe gibt es eine CX5020 mit der Schnittstellenoption B510. Diese CanOpen Slave Schnittstelle ist in der Lage mehrere Slaves mit unterschiedlicher Knoten ID zu verwalten.
MNT benötige ich auf jeden Fall da mein Can Master über MNT von pre-operational in operational wechseln muss. Die Schnittstelle B510 kann dann aber auch MNT wenn es mehrere Slaves gibt, Richtig?
Wenn ich mein Vorhaben mit der CanSlave Karte EL6751-0010 umsetzen möchte führt kein Weg an einer zweiten Karte vorbei.
 
Zurück
Oben