Hinweise zur Dokumentation

Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.
Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.
Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem Zeitpunkt veröffentlichte Dokumentation zu verwenden.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt.
Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zu ändern.
Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden.

Marken

Beckhoff®, TwinCAT®, EtherCAT®, EtherCAT G®, EtherCAT G10®, EtherCAT P®, Safety over EtherCAT®, TwinSAFE®, XFC®, XTS® und XPlanar® sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH.
Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP1590927, EP1789857, EP1456722, EP2137893, DE102015105702
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizenziert durch die Beckhoff Automation GmbH, Deutschland.

Copyright

© Beckhoff Automation GmbH & Co. KG, Deutschland.
Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet.
Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster- oder Geschmacksmustereintragung vorbehalten.


Übersicht

Die TwinCAT SPS Bibliothek COMlibBC bietet Funktionsbausteine und Datenstrukturen für die serielle Datenkommunikation mit den Beckhoff Buscontrollern BCxxxx. Die COMlibBC unterstützt die seriellen Beckhoff Busklemmen KL6xxx.

Zusätzlich zu den Grundfunktionen Senden und Empfangen transparenter Daten unterstützt die COMlib3964RBC das Protokoll 3964R. Beide Bibliotheken sind Bestandteil des 3964RBC-Packetes.

Die Bibliothek COMlibBC wird in dem Dokument "COMlibBC SPS-Bibliothek - Serielle Datenkommunikation für Buscontroller" beschrieben. Dieses Dokument ist als Ergänzung dazu zu sehen.


Installation

Zur Installation werden folgende Bibliotheken in das TwinCAT Verzeichnis TwinCAT\PLC\LIB kopiert.

  • COMlibBC.LB6
  • COMlibBC5B.LB6
  • COMlib3964RBC.LIB

Das beiliegende Testprogramm kopieren Sie in ein beliebiges Projektverzeichnis, z. B. nach TwinCAT\PLC.

  • COMlib3964BC5BTest.zip


Datenstruktur P3694buffer

Datenpuffer vom Typ P3964buffer werden in Verbindung mit dem Funktionsbaustein P3964R verwendet. Diese Puffer werden vom Anwender beschrieben und gelesen.

TYPE P3964buffer
STRUCT
    D : ARRAY [0..16#03FF] OF BYTE;
END_STRUCT
END_TYPE


Funktionsbaustein P3964RBC

VAR_INPUT
      TXstart: BOOL;     (* Startsignal, Flankengetriggert *)
      RXstart: BOOL;     (* Startsignal, Flankengetriggert *)
      Priority : BOOL;   (* 3964-Priorität *)
      TXcount: INT;      (* Anzahl Datenbytes in TxData *)
END_VAR
VAR_OUTPUT
      Busy: BOOL;        (* Baustein aktiv *)
      TXbusy : BOOL;     (* Sendezustand *)
      TXready: BOOL;     (* Senden beendet *)
      RXbusy : BOOL;     (* Empfangszustand *)
      RXready: BOOL;     (* Empfang beendet *)
      RXcount: INT;      (* Anzahl Datenbytes in RxData *)
      Error : BOOL;      (* Fehler *)
      ErrorID: INT;      (* Fehlernummer *)
      ErrorState : STRING(80); (* interner Fehlerzustand *)
END_VAR
VAR_IN_OUT
      TXbuffer: COMbuffer;  (* Zwischenpuffer zur Hardware *)
      RXbuffer: COMbuffer;  (* Zwischenpuffer zur Hardware *)
      TXdata : P3964bufferBC; (* Anwendungsdaten (zu senden) *)
      RXdata : P3964bufferBC; (* Anwendungsdaten (empfangen)*)
END_VAR

Hardwareanbindung

Der Funktionsbaustein P3964RBC wickelt das 3964R-Protokoll ab. Über die verwendete Hardwareschnittstelle entscheidet die Hintergrundkommunikation, die durch einen separaten Baustein (KL6ControlBC, KL6Control5B) abgewickelt wird. Die zugehörigen Datenpuffer Txbuffer und Rxbuffer werden an den Baustein P3964RBC übergeben.

Senden

Sendedaten werden von der SPS in den Sendedatenpuffer Txdata eingetragen. Die eingetragene Anzahl der Datenbytes wird in Txcount übergeben und anschließend Txstart auf TRUE gesetzt. Txstart ist flankengetriggert, das heißt, vor einem neuen Sendeversuch muß der Baustein mit Txstart=FALSE aufgerufen werden. Im Sendezustand ist Txbusy=TRUE. Nachdem die Daten erfolgreich übertragen wurden, wird Txready=TRUE.

Empfangen

Zum Empfang von Daten wird RxStart auf TRUE gesetzt. Nachdem ein vollständiger Datensatz empfangen wurde, geht der Ausgang Rxready auf TRUE und Rxcount Datenbytes liegen im Empfangsdatenpuffer Rxdata bereit. Rxstart ist ebenfalls flankengetriggert. Im Empfangszustand ist Rxbusy=TRUE.

Empfang abbrechen

Der Baustein P3964RBC kann entweder im Sende- oder im Empfangsmodus betrieben werden. Es ist empfehlenswert, den Baustein in der Zeit, in der nicht gesendet wird auf Empfang zu schalten. Solange der Baustein im Empfangsmodus ist, jedoch noch kein Startzeichen der Gegenstelle empfangen wurde kann durch eine steigende Flanke an Txstart der Empfang unterbrochen und das Senden von Daten eingeleitet werden. Nach der Übertragung geht der Baustein in den Grundzustand (Busy=FALSE) und wird erst durch eine neue Flanke an Rxstart auf Empfang geschaltet.

Priorität

Bei einer 3964R-Datenverbindung darf jede Gegenstelle zu einem beliebigen Zeitpunkt senden. Versuchen beide Seiten gleichzeitig zu senden, kommt es zu einer Kollision. In diesem Fall geht die Seite mit niedriger Priorität in den Empfangszustand und die Seite mit hoher Priorität sendet erneut. Aus diesem Grund kann bei niedriger Priorität der Ausgang RxReady TRUE werden, obwohl Daten gesendet werden sollten. Die Daten in RxData sind dann gegebenenfalls auszuwerten. Die Einstellung der Priorität auf beiden Seiten ist Vereinbarungssache.

Fehler

Im Fehlerfall geht der Baustein in den Grundzustand (Busy=FALSE) und der Ausgang Error wird TRUE. Die ErrorId gibt den Fehlercode zurück. ErrorState gibt bei Kenntnis der internen Protokollstruktur Aufschluss über den Zustand, in dem der Fehler aufgetreten ist.


Fehlercodes

Nr. | Fehlerkonstante | Beschreibung
4 P3964ERR_ZVZ Die Zeichenverzugszeit wurde überschritten. ZVZ = 220 ms.

Die Zeichenverzugszeit ist der maximale Zeitabstand zwischen der Übertragung zweier aufeinanderfolgendender Zeichen.

5 P3964ERR_QVZ Die Quittungsverzugszeit wurde überschritten.

Die Gegenstelle sendet während der Telegrammabwicklung zweimal ein Quittungszeichen (DLE = 10H). QVZ = 2 s.

Die erste Quittung wird am Anfang der Übertragung erwartet. Der Ausgang ErrorState ist im Fehlerfall "Wait_DLE_TXstart". Ursache können z. B. eine fehlerhafte physikalische Verbindung oder eine falsche Schnittstellenparameter sein.

Die zweite Quittung wird nach der Übertragung der Nutzdaten erwartet. Im Fehlerfall ist der ErrorState "Wait_DLE_TXend". Ursache können in diesem Fall z. B. Datenverlust, Datenverfälschung oder vertauschte Datenbytes eines Datenwortes (vergleiche Eingang SwapWords) sein.

6 P3964ERR_WVZ Die Wiederholungsverzugszeit wurde überschritten. WVZ = 4 s.

Im Fehlerfall wird ein Telegramm wiederholt. Bleibt im Wiederholungsfall das Telegramm von der Gegenstelle aus, meldet der Funktionsbaustein 3964R diesen Fehler.

7 P3964ERR_WRONGBCC Prüfsummenfehler beim Datenempfang.

Jedes Telegramm wird mit einer Prüfsumme versehen. Beim Datenempfang wird die berechnete Prüfsumme mit der empfangenen Prüfsumme verglichen.

9 | P3964ERR_COMERRTX | Schnittstellenfehler beim Senden
10 | P3964ERR_COMERRRX | Schnittstellenfehler beim Empfang
11 | P3964ERR_NOTXDATA | Parametrierungsfehler. Die Anzahl der zu sendenden Datenbytes TxCount ist Null.
20 P3964ERR_NAK Ein Telegramm wurde von der Gegenstelle mit einer Negativquittung (NAK) zurückgewiesen.

Der Fehler kann u. a. in folgenden Übertragungszuständen (ErrorState) auftreten:

Wait_DLE_TXstart: Die lokale SPS leitet ein Telegramm mit einem Startzeichen ein. Die Gegenstelle weist das Telegramm mit NAK ab.

Wait_DLE_TXend: Die Gegenstelle weist das Telegramm nach Nutzdatenübertragung mit NAK ab. Ursache kann in diesem Fall z. B. ein Prüfsummenfehler in der Gegenstelle sein.


Bilbiotheken einbinden

Legen Sie ein neues SPS-Projekt mit dem TwinCAT PLC Control an, um die Einbindung der Bibliothek nachzuvollziehen.

Wechseln Sie in die Bibliotheksverwaltung und fügen Sie die Bibliotheken ComLibBC.LB6 und ComLib3964RBC.LB6 ein.


Globale Variable

Um eine serielle Schnittstelle anzusprechen, sind vier globale Datenstrukturen notwendig. Zwei stellen die Verbindung zur Hardware in Sende- und Empfangsrichtung her. Zusätzlich werden zwei Datenpuffer als Zwischenspeicher benötigt.


Hintergrundkommunikation

Die Kommunikation zwischen der seriellen Hardware und den Datenpuffern vom Typ ComBuffer wird neben dem 3964R-Protokoll in einem separaten Baustein abgewickelt.


3964R Protokoll

Das Beispielprogramm sendet zur Demonstration alle 10 Sekunden Daten an eine Maschine 1 und empfängt permanent Daten von einer Maschine 2.


Beispielkonfiguration

Das Beispielprogramm verwendet zwei serielle Busklemmen zur Kommunikation. Zum Test werden die Signale RXD/TXD und RTS/CTS der beiden Klemmen über Kreuz verbunden. Damit werden die Sendedaten der einen Schnittstelle an der anderen empfangen.