# JAVA-HMI mit Wago SPS



## Haens123 (12 Juni 2015)

Hallo Leute,

mein erster Beitrag hier in diesem Forum. Kurz zu mir, ich bin ein absoluter SPS-Neuling und hätte eine Frage zum Thema HMI. 
Kurz zu meiner "Problemstellung": Es gilt einen Raum zu automatisieren, dieser Raum hat im Prinzip nicht viel was es zu automatisieren gilt (Türen verriegeln und entriegeln, Licht an und aus schalten und die Fensterläden/Rollos verfahren). Nun werde ich mich für eine WAGO-SPS entscheiden, da ich in besitz eines WAGO-Controllers bin, konkret handelt es sich um den Ethernet-Controller 750-881, dazu habe ich analoge und digitale Eingangs- und Ausgangsmodule/karten. Soweit so gut, die Programmierung in CoDeSys ist sicher auch eine Baustelle, jedoch komme ich da gut voran.

Das eigentliche Problem stellt die Benutzerschnittstelle dar. Ich möchte zentral in der Wand einen Touch-Monitor integrieren der an dieser stelle auch bleibt und über diesen Monitor soll der Nutzer die Möglichkeit haben Licht, Tür und Rollos zu steuern. Die Oberfläche würde ich gerne in Java implementieren, da ich hier bereits erste Erfahrungen gesammelt habe dazu verwende ich die Swing-Bibliothek. 

Nun zu meiner Frage, ist es prinzipiell möglich eine Wago-SPS und dazu eine Java-Benutzeroberfläche zu verwenden und diese ohne weiteres "miteinander sprechen" zu lassen? Ich habe schon recherchiert nur leider finde ich dazu nichts, das einzige zum Thema HMI was ich gefunden habe sind HTML-5 Applikationen die im Webbrowser geöffnet werden. Kann ich auch eine "Java.jar-Applikation" schreiben und diese auf einem PC ausführen der an ein Touchsscreen gekoppelt ist der letztendlich die SPS steuert, oder tappe ich im dunkeln?


Vielen Dank im Voraus für die Antworten und entschuldigt bitte wenn dieser Lösungsansatz unmöglich ist und für euch "Quatsch ist".

Grüße

Häns


----------



## Indi.Systems (16 Juni 2015)

Hallo Häns,
Ein Ansatzpunkt wäre folgender:
Du könntest die  Wago-SPS per Modbus-Protokoll ansprechen. Hierzu könntest Du z.B. unsere  Java-Bibliothek "PLCcom for Modbus" benutzen.
Die zugehörige Website mit Informationen und Code-Beispielen findest Du hier: http://www.plccom.de/produkte/plccom-fuer/modbus.html

Alternativ könntest Du auch unsere HMI-Software QuickHMI benutzen. Hier ist der Modbus-Driver auch integriert, allerdings ist es kein direktes Java-Programm. 
Aber  es ist ein Release für ein Java-Plugin in Arbeit um eine Visualisierung  mit minimalem Aufwand z.B. in ein Java-Programm intergrieren zu können.  Wir rechnen kurzfristig mit Erscheinen des neuen Releases.

Bei Fragen immer bitte melden, gerne auch unter info@indi-systems.de 

Viele Grüße
Jörg Vermehren


----------



## Morymmus (16 Juni 2015)

> Kann ich auch eine "Java.jar-Applikation" schreiben und diese auf einem PC ausführen der an ein Touchsscreen gekoppelt ist der letztendlich die SPS steuert, oder tappe ich im dunkeln?



Also zumindest das ist etwas unüblich - die HMI, von außen betrachtet, ist üblicherweise nur die Schnittstelle Mensch <-> Maschine, die Program-Abarbeitung erfolgt i.d.R. auf einem Automatisierungsgerät.
Heutzutage verschwimmt das etwas, da immer mehr SPSen  z.B. eigene Web-Server anbieten.
So wie Du das schreibst soll der PC die SPS nur noch als dezentrale Peripherie ansprechen - wolltest Du das wirklich so?

Möchtest du auch z.B. per Handy via WLan auf die HMI zugreifen? Oder ausschließlich auf Deinem zentralen Panel?

Gruß

Christian


----------



## faust (16 Juni 2015)

Hallo,

den beschriebenen Anwendungsfall (Java-HMI und SPS, hier Siemens) haben ein ehemaliger Kollege und ich für ein Kuvertiersystem realisiert. Wir haben dazu eine TCP-Kommunikation mit selbstdefinierten Meldungen verwendet: jede Meldung hatte einen Kopf mit Informationen zum Meldungstyp (z.B. Rezept) und einen entsprechend strukturierten Datenteil, der jeweilige Empfänger hat die Meldungen dekodiert und auf interne Variablen gemappt.

Werde nächstes Jahr (hoffentlich) die Gelegenheit haben, dies noch einmal für andere Maschinentypen umzusetzen. Momentan muss ich mich leider mit WinCC Adv. V13 herumschlagen...:-(


Gruß, Fred


----------



## Haens123 (17 Juni 2015)

Zunächst, vielen Dank für die Antworten 

Anbei habe ich ein Schema hochgeladen, welches das Problem darstellen soll. Für die Kommunikation zwischen SPS und PC (java hmi) habe ich "Modbus" angetragen (Glaube ich werde mich als erstes in dieses Thema einarbeiten, war mir bis dato noch unklar wie denn die SPS mit dem UI kommuniziert).



> Möchtest du auch z.B. per Handy via WLan auf die HMI zugreifen? Oder ausschließlich auf Deinem zentralen Panel?



@Christian: Ich möchte nur von diesem einen Panel auf das HMI zugreifen können.


Vielen Dank und Grüße,

Häns


----------



## Haens123 (17 Juni 2015)

*Schematische Darstellung*

Hallo Leute, erst mal danke für die ganzen Antworten 

Zitat Christian:


> So wie Du das schreibst soll der PC die SPS nur noch als dezentrale Peripherie ansprechen - wolltest Du das wirklich so?



Prinzipiell, wenn ich die Frage richtig verstehe ja. Jedoch ist die Grundintention wirklich nur eine Desktop-Applikation (die mein Java User Interface ist) mit dem ich mein Licht dann an und ausschhalten kann. Werde jetzt mal versuchen über eine Modbus Kommunikation das ganze zu realisieren (Wenn das Licht an und aus geht werde ich berichten ). 

*Grobe Überlegung: *
PC - Modbus-Master auf dem auch die Java-App läuft (einbinden von Modbus Bibliotheken - habe da schon eine gefunden mal sehen ob die funktioniert)
Controller - Modbus-Slave der auf die Eingaben am Touchsscreen reagiert. Das Grundschema habe ich als Anhang mit hoch geladen.

Könnte das prinzipiell so funktionieren? Weil ich würde jetzt mal in diese richtung laufen und schauen ob sich etwas ergibt. 



> Möchtest du auch z.B. per Handy via WLan auf die HMI zugreifen? Oder ausschließlich auf Deinem zentralen Panel?



Prinzipiell nein, primär ist die steuerung über das zentrale Panel das Ziel.


Vielen Dank nochmal für die Anworten, danke im Voraus und Grüße,

Häns.


----------



## Morymmus (17 Juni 2015)

Hi,

also wenn ich Dich richtig verstehe reicht dir eigentlich ein Buskoppler, da Du die ganze Steuerung auf dem PC haben möchtest.
Das könntest du auch mit der Soft-SPS von Codesys machen, da ist ja eine Visu-Option schon mit drin - nur so als Denkanstoß, auch wenn dann kein Java zum Einsatz kommt.

Ich hatte deshalb gefragt, weil ein Buskoppler (-> nur dezentrale Peripherie, keine eigene Intelligenz) günstiger ist als eine richtige SPS. Die SPS lässt sich auch zum Buskoppler degradieren, dann stirbt deren CPU aber an Langeweile ;-)
2. Gedanke: Stromverbrauch, da ja vermutlich ein Dauerbetrieb gedacht ist. Auch das ist ja eine Überlegung wert.
3. : Ausfallsicherheit, Verfügbarkeit von Ersatzteilen - was passiert mit Deinem Raum, wenn der PC ausfällt? - auch das spricht u.U. für die Industrie-Lösungen ohne PC
4. : Platzbedarf - mal angenommen Du würdest einen Desktop-PC dafür verwenden, dann ist der doch deutlich größer als die SPS
5. : Geräuschentwicklung - SPS sind i.d.R. Lüfterlos, also auch "Wohnzimmertauglich" ;-)


Ich gebe zu ich bin natürlich geneigt in Wegen zu denken, die ich schon kenne, aber ich würd einfach ne SPS nehmen, eine dazu passendes Touch-Panel und fertig - klar, das kostet x Euro, aber für gratis ist Deine Lösung ja auch nicht. Ich habe so etwas schon mehrfach mit z.B. Eaton SPS und Panels gemacht. Es erspart dir die Abfrage des Touchscreens, sowie die eigene Implementierung der Kommunikation mit dem Buskoppler, da Codesys bzw. die Hardware das alles bereits von Hause aus mitbringt.

Alles nur so Überlegungen, die mir bei Deinem Projekt durch den Kopf gingen.


Was Dein Schema angeht - warum sollte das nicht funktionieren?
Ich sehe eigentlich nichts, was so nicht funktionieren kann.


Gruß

Christian


----------



## Haens123 (28 September 2015)

So nach langer Stille mal ein Lebenszeichen...

Zunächst danke euch für die Beiträge.

Habe jetzt den Ansatz über Java versucht und konnte mit der passenden Bibliothek (easymodbustcp) mit meinem Controller "sprechen". Derzeit verwende ich den Controller eher als Buskoppler und habe kein Codesys Programm darauf laufen. Digitale-/Analoge In-/Outputs schreiben bzw. lesen funktioniert mit diesem Ansatz wunderbar, bei der Gestaltung des HMI kann ich mich voll und ganz austoben und auch alle Java-Vorzüge ausnutzen.

Nun eine sozusagen zusätzliche Anforderung...Das Thema Lichtsteuerung.

Bereits herausgefunden habe ich, dass sich DALI für dieses Thema eignen würde. Konkret geht es um das Schalten von Leuchtstoffmitteln und von RGB-LEDs. Weiterhin um eine Dimmfunktion der Leuchtmittel. 
Derzeit habe ich zwei Ansätze wobei beide nicht funktionieren, noch nicht:

1. DALI Master Karte und letztlich über den WAGO-Dali Konfigurator die Leuchten Konfigurieren und den Weg HMI -> Modbus -> Controller -> Variablenänderung gehen. Eine Variablenänderung bewirkt dann das Ein-/Ausschalten oder Dimmen der entsprechenden Leuchten. (Halbwissen ON) Mit Codesys konnte ich mich noch nicht anfreunden und wollte außerdem fragen ob ich die Variablenänderung via Modbus über den sog. Merkerbereich realisieren kann (Halbwissen OFF)

2. Verwenden eines Dali - Modbus Converters - hat hier schon jemand Erfahrungen gemacht?


Danke vorab für Rückmeldung und Grüße

Haens


----------



## NorbertP (28 September 2015)

Hallo, 
mit der Wago Dali-Klemme 750-647 (+ Dali-Spannungsversorgung 753-620)  sollte das gehen.
Man kann die Klemme in 2 Modi betreiben:
1. Easy-Mode: direktes Beschreiben vom Prozeßabbild (24Byte) für Grundfunktionen wie Schalten/Dimmen von Einzel-EVGs, Gruppen sowie Szenenaufrufe ohne Codesys-Programmierung
2. Full-Mode: erweiterte Funktionalität über Codesys-Programmierung

Die Parametrierung/Zuweisung der Kurzadressen/Gruppen erfolgt über den Wago Dali-Konfigurator

Gruß
Norbert


----------



## mogel (28 September 2015)

Moin,

Für das Raspberry gibt es ja inzwischen ein schönes Touchdisplay. Lies sich leicht montieren und der Touch funktioniert fast auf Anhieb.

Anschließend habe ich ein Java vom Kunden darauf laufen lassen. Funktionierte alles ohne Probleme.


----------

