Visualisierung mit Java

M

Michael_K

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
ich soll in meinem Abschlussprojekt zum "Staatlich geprüften Techniker" dieVisualisierung einer S7-300 in Java programmieren. Hört sich ja nicht ganz so schwierig an, ... dachte ich zumindest am Anfang.
Mittlerweile hab ich das Problem, dass ich nicht weiß, wie die Daten der SPS in mein Javaprogramm eingebunden werden. Die Daten sollen über MPI übergeben werden. Im SPS-Programm wollte ich es mit den Bausteinen "xget" und "xput" versuchen. Mein Problem besteht jetzt aber darin, dass ich keine Ahnung hab, wie ich meinem Javaprogramm beibringe, dass da jetzt Daten kommen, die es in Variablen einbinden soll.
Zu erwähnen wäre vielleicht noch, dass das ganze ohne zusätzliche Hardware (CP...) und nach Möglichkeit auch ohne zusätliche Software realisiert werden soll.
Ich hoffe es kann mir jemand helfen.
Bis dann,
Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Visual besteht aus zwei Teilen:

1. HMI-Komponenten, aus denen eine Bedienoberfläche zusammengestellt werden kann. Diese wird durch ein JAVA-Applet (hmiViewer) dargestellt und animiert. Der tatsächliche Aufbau einer bestimmten Seite wird über Parameter-Zeilen des Applets angegeben. Beispiel:
Digitalanzeige.
Code:
<param name="0" value="hmiDigital,10,100,60,22,1,12,15,2,3,4,5,6,7,C1,0,100,Druck ,Bar,2">
Diese Zeile bewirkt, daß eine Digitalanzeige: hmiDigital
bei 10 Pixel von links,100 Pixel von oben
60 Pixel breit, 22Pixel hoch dargestellt wird.
Die Darstellung erfolgt für niedrige Werte mit den Farben 1,12,15,
für normale Werte mit den Farben 2,3,4,
für hohe Werte mit den Farben 5,6,7.
Der Wert kommt aus C1 (Erklärung folgt)
0 und weinger ist "niedrig",100 und mehr hoch,
Der angezeigte Text ist Druck <Wert> Bar mit 2 Nachkommastellen.
Also Druck 23.45 Bar.

2. Einem Server-Teil, der laufend mit einer oder mehreren SPSen (oder Meßgeräten oder anderen Instanzen von VISUAL) kommuniziert. Er erfüllt 2 Hauptaufgaben: Der Server kann beliebig viele Clients bedienen, ohne daß die Belastung der SPS durch Kommunikation ansteigt. Der Server holt auch dann Daten von der SPS, wenn kein Client sie anfordert und zeichnet sie in Dateien oder Datenbanken auf.

Der Server ist nur für Linux verfügbar. Er stellt die Life-Daten intern in einer (oder mehreren) Tabelle(n) dar, die einem Excel-Blatt ähneln. Treiber für verschiedene SPS werden beim Start dynamisch nachgeladen, entsprechend den Angaben in einer Konfigurationsdatei für das Projekt. Ein einzelner Treiber erhält Anweisungen in der Art "lies von DB5 ab Datenwort 12 Daten im Format 'FFFLIWWWB' nach D5", was bedeuten würde: Hole 3 Real-Zahlen, ein DINT, ein INT, 3 WORD, ein Byte ab Adresse DB5.DBB12 und schreibe sie nach D5 und folgende Zeilen.
Dadurch steht in:
D5 REAL aus DBD12
D6 REAL aus DBD16
D7 REAL aus DBD20
D8 DINT aus DBD24
D9 WORD aus DBD28
D10 WORD aus DBD30
D11 WORD aus DBD32
D12 BYTE aus DBD34

Auf diese Zellen-Koordinaten bezieht sich das "C1" in der Angabe, wo der Wert herkommt. Jede Zahl, die in der Definition für Position, Größe, Farbe, usw auftaucht, kann prinzipiell durch eine Koordinate ersetzt werden, wodurch die Eigenschaft dynamisch wird.

Außer Digitalanzeigen gibt es all das Zeug, was auf der Web-Seite zu sehen ist.

Wer nun den Server-Teil garnicht braucht, kann den HMI-Teil (mit Einschränkungen) alleine verwenden: So wie die einzelnen Anzeige-Elemente in die Sweite eingebunden werde, wird auch eine "Plug-In"-Klasse für die Kommunikation über eine Parameter-Zeile eingebunden. Für VISUALs Server:
Code:
<param name="communicator" value="org.visual.hmi.protocol.hmiVisualCI">
Das ist einfach der vollständige Name.
Alternativ könnte ein anderes Ding eingebunden werden:
Code:
<param name="communicator" value="org.visual.hmi.protocol.siemens.ISOTCP_CI">
Das gibt es, aber es ist nicht auf dem neuesten Stand, nicht veröffentlicht und kommuniziert mittels einer JAVA-Version von Libnodave direkt mit der SPS. Damit kann ein JAVA-fähiges Gerät ein Bediengerät wie OPxx ersetzen. Natürlich braucht jetzt jedes Gerät eine Verbindung(sresource) der SPS.

In diesem Fall ist die Angabe einer Zelle wie C1 natürlich sinnlos. Aber die Interpretation der Bezeichnungen liegt alleine bei der als "communicator" eingebundenen JAVA-Klasse(CI). (Und alles, was keine Zahl ist, wird an das CI weitergereicht) ISOTCP_CI nimmt nun Variablenname wie DB5:F6. Das heißt: Der Wert ist ein REAL (F) ab DBB6 (also in DBD6) im DB5.
 
Zurück
Oben