CAN

CX8051

CANopen-Interface

Die CANopen-Kommunikation erfolgt über den D-Sub Port X101.

CAN 1:

Debuggen ausschließlich über die Ethernet Schnittstelle

Der CX8051 unterstützt das ADS über CANopen nicht. Der Programmdownload und das Debuggen kann ausschließlich über die Ethernet Schnittstelle erfolgen.

CANopen Adresse

Die CANopen Adresse kann über den Drehwahlschalter oder fest im System Manager vergeben werden. Wird die Adresse fest vorgegeben wird der Adressschalter ignoriert.

CANopen NodeState

CAN 2:

Über den NodeState können sie sich den Zustand der CANopen Kommunikation anzeigen lassen und wissen damit ob der Slave sind im Datenaustausch befindet (NodeState=0) oder ein Fehler oder Problem vorliegt.

0 = No error
128 = Node is Operational but not all RxPDOs were received
129 = Node is Pre-Operational
130 = Node is Stopped

CANopen-Prozessdaten

Der CX8051 kann bis zu 16 PDOs a 8 Byte Prozessdaten über CANopen in Eingangs- und Ausgangsrichtung mit dem CANopen Master austauschen.

Per Default werden 2 PDOs in Tx- und Rx-Richtung angelegt. Die PDOs kann man mit eigenen Daten füllen. Diese dürfen maximal 8 Byte pro PDO in Summe betragen. Wenn es im Master nicht anders konfiguriert wird, werden die Daten bei Änderung automatisch verschickt. Achten Sie also schon bei der Planung das sich die Daten in einem PDO "nur" bedingt ändern und nicht im ms Takt, wird dies nicht beachtet kann der CAN überlastet werden grade bei kleinen Baudraten ist die Auslastung des CAN schnell erreicht.

Anlegen der Daten im PDO

Unter dem entsprechenden PDO können Sie jetzt maximal 8 Byte Daten anlegen, es ist auch erlaubt verschiedene Variablen Typen zu verwenden, einzig die Grenze von 8 Byte sind einzuhalten.
Bei den TxPDOs gibt es noch ein zusätzliches Control. Dieses kann verwendet werden wenn Daten nicht nur bei Änderung verschickt werden sollen sondern auch wenn sich an den Daten im PDO nichts geändert hat. Das Control Wort muss dann nur verändert werden in den man es zum Beispiel Inkrementiert. Erfolgt die Inkrementierung und eine Änderung der Daten gleichzeitig (also im gleichen Zyklus) wird nur ein Telegramm versendet.
Bei den RxPDOs gibt es zusätzlich ein Status Wort, das wird Inkrementiert wenn das PDO eingetroffen ist, nützlich ist es wenn Daten sind in dem PDO nicht ändern, bekommt man doch mit das es ein neues Telegramm mit alten Daten gab, dies kann man auch zur Überwachung nutzen ob ein Teilnehmer noch regelmäßig seine Daten versendet.

CAN 3:

Weitere PDOs fügen Sie durch Anklicken der "Box CX8xxx CANopenSlave" an. Beachten Sie, dass die COB ID ab den 5ten PDO immer auf Null steht, diese müssen Sie dann manuell eintragen. 

CAN Auslastung

Die CAN Auslastung sollte bei der Planung und Konfiguration des Netzwerkes berücksichtigt werden:  500 kBit ergibt bei 8 Byte Nutzdaten/Frame eine maximale Anzahl von 3707 Frames pro sec. Da bei CAN aus Gründen der Netzwerkstabilität nie mit 100% Netzwerklast gearbeitet werden sollte, empfiehlt sich eine Obergrenze von 60% Buslast festzulegen, was 2221 Frames pro sec entspricht. Beispiel: ein CX8051 mit 8 Rx PDOs und 10 ms Task Zeit, was  100 Zyklen pro sec a 8 PDOs ergibt. Bei ereignisgesteuertem Senden der PDOs werden diese verschickt, sobald sich die Prozessdaten ändern – auf Slave Seite also ggf. auch öfter als alle 10ms. Ändern sich die Werte jetzt nur einmal je 10 ms Zyklus ergibt das 800 Frames pro Sec von Seiten der Slaves, und ggf. nochmals 800 Frames pro sec von Masterseite. Hinzu kommen noch Heartbeat, Sync Telegramme und SDO-Kommunikation. Man sieht also, dass man sich hier schon schnell der gewünschten Obergrenze von 2221 Frames annähert bzw. man diese Grenze überschreitet, wenn schnell ändernde Eingangsdaten zum hochfrequenten Senden der PDOs führen. Dies kann z.B. bei analogen Eingängen vorkommen, da sich deren Werte i.d.R. ständig ändern. Deshalb empfiehlt es sich, das Sendeverhalten durch Setzen der entsprechenden Parameter (Inhibit-Zeit, Filter) zu kontrollieren oder auf zyklisches Senden überzugehen.

Baudrate

1 Byte Daten

2 Byte Daten

4 Byte Daten

8 Byte Daten

1 MBaud

15384

13333

10526

7407

500 kBaud

7692

6666

5263

3703

100 kBaud

1538

1333

1052

740

Tabelle Anzahl der theoretischen CAN-Frames bei 100 % Auslastung und verschiedenen CAN Datengrößen.

Virtuelles CANopen Device-interface

Das virtuelle Slave Interface ermöglicht das Anlegen von bis zu drei virtuellen Slave auf der gleichen Hardware Schnittstelle. Das ermöglicht dem Anwender mehr Daten mit einem CANopen Master auszutauschen.

Es können für jeden Slave maximal 16 PDOs Daten konfiguriert werden, d.h. in Summe kann man viermal 16 PDOs Daten in jede Richtung austauschen.

Fügen Sie an dem CAN Gerät maximal vier CX8051 Geräte an (Abb. 1.0). Jedes der Geräte bekommt über den System Manager eine CAN Adresse, die auch mit dem Adresswählschalter verknüpft sein kann (siehe Adressschalter). Die Prozessdaten PDOs fügen Sie unter der Box an. Für den CANopen Master konfigurieren Sie jeden der 4 Slaves wie ein eigenständiges Gerät.

CAN 4:
Anlegen der 4 CANopen Slave Geräte
CAN 5:
Anfügen der CAN Module


CX8050

CANopen-Interface / CAN-Interface

Die CANopen-Kommunikation erfolgt über den D-Sub Port X101. Der CX8050 erlaubt die Verwendung eines CANopen Master aber auch eine "einfache" CAN Kommunikation.

CANopen Adresse

Der Drehwahlschalter (S101/102) hat beim CAN Master keine Bedeutung. Der Adresswählschalter kann über die SPS eingelesen werden (siehe Adresse) und damit für die Applikationen genutzt werden.

CANopen NodeState

CAN 6:

Über den NodeState (rot) können sie sich den Zustand der CANopen Kommunikation anzeigen lassen und wissen damit ob der Slave sind im Datenaustausch befindet (NodeState=0) oder ein Fehler oder Problem vorliegt.

0 = No error
1 = Node deactivated
2 = Node not found
4 = SDO syntax error at StartUp
5 = SDO data mismatch at StartUp
8 = Node StartUp in progress
11 = FC510x Bus-OFF
12 = Pre-Operational
13 = Severe bus fault
14 = Guarding: toggle error
20 = TxPDO too short
22 = Expected TxPDO is missing
23 = Node is Operational but not all TxPDOs were received

Das DiagFlag zeigt an ob ein Emergency Telegramm vom Slave eingetroffen ist. Dies kann dann im System Manager oder in der SPS per ADS ausgelesen werden (siehe ADS Interface). Die Interpretation der Daten entnehmen Sie dem Slave Hersteller. Das Flag wird zurückgesetzt wenn der Diag Buffer ausgelesen worden ist.

Der EmergencyCounter wird bei jedem Emergency Telegramm inkrementiert.

CAN Layer 2 Kommunikation

Wenn diese Checkbox angewählt ist, so ist das gesamte CANopen Netzwerkmanagement für diesen Teilnehmer deaktiviert: er wird nicht gestartet, überwacht etc.. Die PDO-Einträge werden als reine CAN (Schicht 2) Telegramme aufgefasst und ereignisgesteuert der Steuerung zur Verfügung gestellt.

CAN Interface

Das CAN Interface erlaubt beliebige CAN Daten zu verschicken. Es kann zwischen 11 Bit Identifier (CAN 2.0A) und dem 29 Bit Identifier (CAN 2.0B) ausgewählt werden.

Message-Struktur mit 29-Bit Unterstützung

Senden von Daten: Tragen Sie in "NoOfTxMessabes die Anzahl der Daten ein die Sie aus dem Tx Buffer senden wollen. Ist der Buffer 10 Einträge groß können Sie maximal 10 Telegramme hintereinander verschicken. Mit "Length" wir die Anzahl der Datenbytes des PDOs definiert (maximal 8 Byte). Füllen Sie die Daten und tragen die den Identifire des CAN Message in "codId" ein. Nun inkrementieren Sie den Wert TxCounter. 

Beispielcode: Senden von Messages von der SPS

if Outputs.TxCounter = Inputs.TxCounter then
     for i=0 to NumberOfMessagesToSend do
          Outputs.TxMessage[i] = MessageToSend[i];
     End_for
     Outputs.NoOfTxMessages = NumberOfMessagesToSend;
     Outputs.TxCounter := Outputs.TxCounter + 1;
end_if

Beispielcode: Empfangen von Messages von der SPS

if Outputs.RxCounter <> Inputs.RxCounter then
     for i := 0 to (Inputs.NoOfRxMessages-1) do
          MessageReceived[i] := Inputs.RxMessage [i];
     End_for
     Outputs.RxCounter := Outputs.RxCounter+1;
end_if