# Problem mit EtherCAT / CoDeSys v3 / Beckhoff Bauteile



## karlo (25 Januar 2012)

Hallo alle zusammen.

Ich muss mich momentan mit einem Schulprojekt auseinander setzen und habe ein Problem mit EtherCAT.

Ich verwende CoDeSys (3.4 SP4 Patch 1) als Soft-SPS und EtherCAT Master.  Als Hardware verwende ich einen EK1100 von Beckhoff sowie mehrere  EL1008 und EL2008 Klemmen.
Als Betriebssystem kommt ein Windows XP innerhalb einer VM zum Einsatz.

Die  Einrichtung, also WinPcAp Treiber, XML Dateien für die Klemmen,  Netzwerkverbindung usw. hat soweit alles reibungslos geklappt. Die  Kommunikation mit dem EK1100 funktioniert und die Klemmen werden auch  automatisch gefunden und dem Projekt hinzugefügt. Die LEDs am EK1100  signalisieren Bereitschaft und die Traffic LEDs flackern auch prima  sobald die SPS läuft. Wenn ich 24V auf eine Eingangsklemme gebe dann  leuchtet die LED an der Klemme auf, daher denke ich das die Klemmen  ordnungsgemäß mit Spannung versorgt werden. Soweit ist also alles  bestens.

Mein  Problem besteht nun darin, dass ich die Ein- und Ausgänge in CoDeSys  (EtherCAT I/O Abbild) zwar verändern kann, diese Änderungen aber nicht  an der Hardware übernommen werden. Wenn ich ein Signal an eine  Eingangsklemme anlege leuchtet die LED an der Klemme, aber im I/O Abbild  in CoDeSys tut sich nichts.
Die Klemmen und der Buskoppler zeigen 'Operational' an.

Muss ich den Buskoppler bzw. die Klemmen noch irgendwie 'freischalten' oder hat jemand eine Idee woran das liegen könnte ?

Vielen Dank und schöne Grüße 

PS: Wenn ich WinXP auf richtiger HW laufen lasse dann besteht das Problem weiterhin => Die VM kann es also nicht sein.


----------



## thomas.nienstaedt (26 Januar 2012)

Hallo karlo,
ich gehe mal davon aus das du das I/O richtig gemappt hast...!
Früher gab es bei V3 den Bug das man die gemappten Variablen einmal im Code aufrufen und zuweisen mußte,
damit das refreshen funktioniert....

VG
Thomas


----------



## karlo (26 Januar 2012)

Hallo Thomas.

Vielen Dank für deine Antwort. 

Die I/Os habe ich auf bestehende Variablen gemappt, habe aber auch schon versucht mittels Adresse z.B. %QX0.0 direkt zuzugreifen.
Ich muss dazu sagen das ich absoluter Neuling bin mit CoDeSys bzw. SPS im Allgemeinen.

Hier ist mein Programm:

PROGRAM PLC_PRG
VAR
    iUptime : INT;
    Master_Operational : BOOL;
    ErrorCounter : INT;
    StatusBuskoppler : INT;
    in_1_1 : BOOL := FALSE; //gemappt auf Eingang %IX0.0
    out_1_1 : BOOL := FALSE; //gemappt auf Ausgang %QX0.0
END_VAR


iUptime := iUptime + 1;
Master_Operational := EtherCAT_Master.xConfigFinished; //zeigt immer true
StatusBuskoppler := EK1100.wState; //hier zeigt er übrigens immer 0 (boot) an, sollte aber laut LEDs auf 8 (Operational) stehen ??

//Ausgang zum testen regelmäßig ein- und ausschalten => LED soll Blinken
IF (ABS(iUptime) MOD 300) > 150
    THEN out_1_1 := TRUE;
    ELSE out_1_1 := FALSE;
END_IF


Wäre schön wenn mir jemand weiterhelfen könnte, bin mittlerweile am verzweifeln


----------



## thomas.nienstaedt (27 Januar 2012)

Hallo Karlo,
du versuchst das ganze mit der WIN ans laufen zu bringen, richtig?

Das habe ich bisher nur soweit getrieben das ich das Projekt fehlerfrei
kompilieren konnte. Richtiges I/O habe ich an der WIN noch nicht betrieben!

Mit dem WinPcap stellst du dem Master ja Funktionen zu Verfügung die eigentlich
im Treiber für die NW-Karte sind. Ob diese Funktionen aber ausreichen um tatsächlich zu
kommunizieren weiß ich nicht!
Du könntest ja mal mit dem WireShark auf deine verbindung schauen was wirklich geht!

Was mit Sicherheit funktionert wenn du statt der WIN die RTE benutzt und das
ganze auf echter Hardware laufen lässt. Eine Beschreibung hierzu:

http://forum.3s-software.com/viewtopic.php?f=10&t=2044

Mittlerweile werden auch OnBoard Karten unterstützt.

Lg
Thomas


----------



## karlo (30 Januar 2012)

Ja, ich versuche es mit der WIN.

Ich versuche es jetzt mit der RTE, muss mir lediglich noch die richtige Hardware besorgen, da mein Laptop keine der unterstützten Karten eingebaut hat :?


----------

