CAN-Interface

Fast alle CANopen-Master von Beckhoff bieten das sogenannte CAN-Interface als Schnittstelle an. Das CAN-Interface ist eine Layer-2-Implementierung der CAN-Schnittstelle. Das ermöglicht beliebige CAN-Telegramme zu empfangen wie auch zu senden. Hierbei spielt das verwendete überlagerte Protokoll keine Rolle, d.h. es können damit alle CAN-basierenden Protokolle verwendet werden, wobei der Protokoll-Teil dann in der SPS realisiert werden muss.

Eine detaillierte Beschreibung zum CAN-Interface finde Sie unter:
https://download.beckhoff.com/download/document/io/infrastructure-components/can-interface_en.pdf

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

Daten senden: 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