20.03.2018 Aufrufe

EtherCAT Error Handling

Sporadische Kabelprobleme sind im EtherCAT Feldbus-System oft schwer zu finden. Sowohl der EtherCAT Master Stack, als auch der Ethernet Core bieten mit verschiedenen Bibliotheksfunktionen und Elementen (z.B. Error Counter) dazu Hilfe.

Sporadische Kabelprobleme sind im EtherCAT Feldbus-System oft schwer zu finden. Sowohl der EtherCAT Master
Stack, als auch der Ethernet Core bieten mit verschiedenen Bibliotheksfunktionen und Elementen (z.B. Error
Counter) dazu Hilfe.

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

TechNews: <strong>EtherCAT</strong> <strong>Error</strong> <strong>Handling</strong><br />

Cable Break Detection<br />

Sporadische Kabelprobleme sind im <strong>EtherCAT</strong> Feldbus-System oft schwer zu finden. Sowohl der <strong>EtherCAT</strong> Master<br />

Stack, als auch der Ethernet Core bieten mit verschiedenen Bibliotheksfunktionen und Elementen (z.B. <strong>Error</strong><br />

Counter) dazu Hilfe.<br />

Zyklische Fehlererkennung<br />

Die zyklische Fehlererkennung ist typischerweise der erste Schritt zum Auffinden sporadischer Busfehler. Hierzu<br />

kann das Ereignis-Flag IRQ im RX-Telegramm genutzt werden. Dieses Flag wird vom <strong>EtherCAT</strong>-Core dann<br />

gesetzt, wenn sich der RX und TX Working Count des Telegramms nicht unterscheidet (der Working Count wird<br />

vom Gerät bei erfolgreicher Kommandoverarbeitung in jedem Zyklus inkrementiert). Somit kann auch die Position<br />

innerhalb des Netzwerkes bestimmt werden, wo der Fehler aufgetreten ist.<br />

Der Ethernet-Core liefert mit dem Flag ERR_FLAG zudem Information darüber, ob bei der PHY-Übertragung des<br />

Ethernet Adapters ein Fehler aufgetreten ist.<br />

__inline void __Check<strong>Error</strong>(void)<br />

{<br />

//Check station error<br />

for (int i=0; i


TechNews: <strong>EtherCAT</strong> <strong>Error</strong> <strong>Handling</strong><br />

Cable Break Detection<br />

Azyklische Fehleranalyse<br />

Wurde im zyklischen Betrieb ein Fehler erkannt, kann dieser nun über ein azyklisches Kommando verifiziert<br />

werden. Dazu muss zuerst das Flag ERR_FLAG des Ethernet Cores zurückgesetzt werden, damit anschließend<br />

die <strong>Error</strong> Counter ausgelesen werden können.<br />

__inline void __CheckStation<strong>Error</strong>(PSTATION_INFO pStation)<br />

{<br />

RX_ERR_CNT RxErrCnts = { 0 };<br />

ADD_ERR_CNT AddErrCnts = { 0 };<br />

LOST_LINK_CNT LostLinkCnts = { 0 };<br />

//First try to reset ethernet core error flag<br />

if (__pUserStack->hdr.err_flag)<br />

__pUserStack->hdr.err_flag = FALSE;<br />

//Do some delay<br />

Sleep(100);<br />

//Check flag again<br />

if (__pUserStack->hdr.err_flag == FALSE)<br />

{<br />

//Send ethercat command<br />

if (ERROR_SUCCESS == Ecat64SendCommand(<br />

FPRD_CMD,<br />

pStation->PhysAddr,<br />

0x300,<br />

sizeof(RX_ERR_CNT),<br />

(PUCHAR)&RxErrCnts))<br />

if (ERROR_SUCCESS == Ecat64SendCommand(<br />

FPRD_CMD,<br />

pStation->PhysAddr,<br />

0x308,<br />

sizeof(ADD_ERR_CNT),<br />

(PUCHAR)&AddErrCnts))<br />

}<br />

}<br />

if (ERROR_SUCCESS == Ecat64SendCommand(<br />

FPRD_CMD,<br />

pStation->PhysAddr,<br />

0x310,<br />

sizeof(LOST_LINK_CNT),<br />

(PUCHAR)&LostLinkCnts))<br />

{<br />

…<br />

}<br />

Die Fehleranalyse kann noch weiter verfeinert werden, in dem zusätzlich die <strong>Error</strong>-Counter des Ethernet-Cores mit<br />

der Funktion Sha64EthCheckStatus abgerufen werden.<br />

SYBERA GmbH, Geschäftsführer J.Rall, Hohenzollernstr.2, 71088 Holzgerlingen, Tel: 07031-744-608 (Fax: -609), Email: info@sybera.de

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!