# Java und Echtzeit-Ethernet-Varianten



## vladimir (26. Okt 2009)

Hallo liebe Leute, ich stehe vor folgendem Problem. In der Firma soll eine Maschine angesteuert werden und zwar über ein echtzeitfähiges Ethernet Protokoll!
Zu den Protokollen gehört 
	- EtherCAT
	- Ethernet-Powerlink
	- SERCOS III
	- PROFINET
	- ETHERNET/IP
	- VARAN
	- SafetyNET p
Ich will versuchen die Maschine kommplet in Java anzusteuern!
Das Problem, ich kenne mich in dieser Tematik nicht aus, welcher der Protokolle währe das Beste für mich?
Gibt es bereits fertige Bibliotheken oder Anbindungen für Java? Ich habe ein Zeitungsartikel gefunden, dort stand das ein Roboter mit Java über EtherCAT angesteuert wurde! Ich währe für jede Art von Information dankbar!

Gruß Vladimir


----------



## tuxedo (26. Okt 2009)

?? du kannst doch nicht einfach so dir ein Protokoll aussuchen....

Das muss die Maschine doch auch können?!

Oder meinst du du kannst diese Protokolle einfach auf deine vorhandene Netzwerkkarte aufsetzen?

EtherCAT (EtherCAT ? Wikipedia) zumindest scheint ein eigenes Netzwerkinterface zu benutzen?

Vergleiche doch mal EtherCAT mit CANBUS... Da brauchst du auch ein extra Interface. Und dann ist gleich die Frage: Wie steuerst du mit Java das Interface an? 

Hab mal für eine CANBUS-Karte sowas gebastelt. Da musste die mitgelieferte .DLL mit JNI an Java gekoppelt werden. Ganz trivial ist das nicht. 

Aber auch wenn du ein Echtzeitprotokoll basierend auf Standard-Ethernet-Hardware findest (was nicht so schwer sein sollte, im Bereich Multimedia gibts ja schon sowas (RTSP)): Deine Maschine muss das auch können. Also erst schauen was die Maschine alles kann, und dann googeln wie man das an Java anflanscht.

- Alex


----------



## Gast2 (26. Okt 2009)

vladimir hat gesagt.:


> ... und zwar über ein echtzeitfähiges Ethernet Protokoll


definiere mal bitte Echtzeit ... bei Schiffsschleuse ist Echtzeit innerhalb von ca. 10 Minuten!


----------



## tuxedo (26. Okt 2009)

Echtzeit in der Automatisierungtechnik ist schon verdammt schnell/kurz:



> Die Schwerpunkte der Entwicklung von EtherCAT lagen auf extrem kurzen Zykluszeiten (≤ 100 µs), niedrigem Jitter für exakte Synchronisierung (≤ 1 µs) und niedrigen Hardwarekosten.



Deshalb ist da meist Spezialhardware im Einsatz (u.a. ist da der Protokoll-Stack in Hardware gegossen) die vom PC nur noch entsprechend getriggert wird und deshalb keine "Echtzeitsoftware" dahinter stehen muss.

- Alex


----------



## Gast2 (26. Okt 2009)

tuxedo hat gesagt.:


> Echtzeit in der Automatisierungtechnik ist schon verdammt schnell/kurz:


eine Steuerung für eine Schiffsschleuse ist ebenfalls Automatisierungstechnik  ... der wesentliche Unterschied besteht in der Laufzeit der Wasserwelle von links nach rechts ... daher gibt es etwas mehr Zeit


----------



## vladimir (27. Okt 2009)

Ich muss Motoren ansteuern! Das Projekt sieht wie folgt aus! Ich habe mehrere Trennschichten:
1) Eine OpenGL 3D Simulation mit Hilfe von JOGL (Maschine in 3D) https://jogl.dev.java.net/
2) Benutzeroberfläche mit Buttons und Eingabemasken (Steuerung mit Swing Komponenten realisiert)
3) Kontrollschicht (Die Logik aufbauen und ablaufen lassen verbindet alle Schichten)
4) Kommunikationsschicht 
Daten übertragen und empfangen über ein Protokoll ursprünglich war CANopen geplant hat sich aber jetzt erledigt! Es soll auf Ethernet Technologie basieren. Einer der ethernetbasierten Protokolle soll zum Einsatz kommen!
Ich stelle eine Untersuchung an, welches Protokoll am leichtesten in Java einzubinden währe! Ob es bereits fertige Bibliotheken gibt! U.s. w.

Hier ist der Zeitungsausschnitt über EtherCAT: www.ethercat.org/download/press/etg_032007_de.pdf
Ob die Bibliothek offen gelegt wurde steht nichts weiteres drin nur in Planung (Pressemitteilung 30.2007)! Ist ein Weilchen her, vielleicht hat sich da schon was Getan!


----------



## tuxedo (27. Okt 2009)

Nochmal:

Du musst doch wissen was das für motoren das sind und mit was sie sich ansteuern lassen.

Wenn du total frei bist was die ansteuerung betrifft kannst du dir auch dein eigenes, simples Protokoll schaffen. Sehe da nicht wirklich den Bedarf für ein extra dafür ausgezeichnetes "Echtzeit-Protokoll".

- Alex


----------



## vladimir (27. Okt 2009)

Es werden wohl Servomotoren sein, diese werden an Achsköpfe angeschlossen und mit Funktionen versehen! Ich steuere dann die Achsköpfe über Ethernet an! Unter Umständen kommen noch mehrere Frequenzumrichter dazu die ebenfalls über Ethernet- Technologie laufen! Also muss ich mir einen der Protokolle herauspicken und als Standard definieren!


----------



## tuxedo (27. Okt 2009)

Womit wir wieder beim Thema sind: Welches Protokoll kann deine Hardware ... 

Entweder steh ich auf dem Schlauch oder du... 

Dass die Rechner-Seite ziemlich losgelöst von allem ist leuchtet einigermaßen ein.

Auf der einen Seite also der PC mit Java und einer Standard-Ethernet-Netzwerkkarte.

Auf der anderen Seite unbekannte Servomotoren und Frequenzumrichter die ebenfalls einen Netzwerkanschluss haben. Diese haben aber wohl weder Windows noch Linux drauf, noch ist dort die "Empfägerseite" in eine Software gegossen. 

AFAIK sind diese Hardwarekomponenten in sich geschlossen und bieten nur eine minimale Auswahl an Kommunikationsmöglichkeiten an. Als schlussfolgerung ergibt sich dann: Schau was deine Servos etc. für ein Protokoll sprechen, such dir den/die gemeinsamen Nenner und dann schau nach einer Adaptierung auf Rechnerseite auf Java. 

- Alex


----------



## vladimir (29. Okt 2009)

Wir haben uns noch für kein Protokoll entschieden! Die Technologie ist aber ganz klar Ethernet! Wir wollten uns das Leben leichter machen, in dem wir das Protokoll nehmen was bereits für Java implementiert wurde! Die Motoren und Frequenzumrichter würden dann nach dem Protokoll eingekauft! Beispiel: Achsköpfe die für EtherCAT als Kommunikationsprotokoll ausgelegt wurden!


----------



## Gast2 (29. Okt 2009)

vladimir hat gesagt.:


> Wir haben uns noch für kein Protokoll entschieden!


... Schlauch ...



> Die Technologie ist aber ganz klar Ethernet!


ich mag ersthaft bezweifel das ihr Layer 2 mit Java programmieren wollt



> Wir wollten uns das Leben leichter machen, in dem wir das Protokoll nehmen was bereits für Java implementiert wurde!


tja - Shit happens ... die Motoren und der Frequenzumrichter können das nicht



> Die Motoren und Frequenzumrichter würden dann nach dem Protokoll eingekauft! Beispiel: Achsköpfe die für EtherCAT als Kommunikationsprotokoll ausgelegt wurden!


???:L

hand, mogel


----------



## tuxedo (29. Okt 2009)

Ist nicht das eigentlich tolle an der Software dass die austauschbar ist? Und jetzt wollt ihr eure Hardware anhand der Software einkaufen? :autsch:

Würde nach wie vor erst die (richtig gute) Hardware kaufen und dann anfangen an Java zu adaptieren.

Btw: Viele solcher Steuerungen kann man auch mit RS232 ansteuern. Und das kann Java von Haus aus. 

Oder aber eben den umgekehrten Weg gehen und nen Hardwareherstreller finden der eine Schnittstelle anbietet die einen Treiber in Java-Ausführung hat.

- Alex


----------

