ILC 150 ETH Webserver

Portisch

Level-1
Beiträge
149
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe hier eine ILC 150 ETH die ja einen Webserver hat.
Mit WebVisit habe ich mir auch schon etwas zusammengebaut.

Nun frage ich mich aber, ob es nicht möglich ist eine eigene Homepage mit Java zu erstellen und diese dann auch auf dem Webserver zu betreiben.
Geht das überhaupt, oder ist das nur mit Webvisit möglich? Wie kann man dann auf die Variabeln der SPS (PDD) zugreifen?

Danke!
 
Noch also Info dazu:
Ich habe Sensordaten die ich gerne beim Webserver anzeigen will.
Dazu möchte ich gerne amCharts einsetzen. Ein einfacher Test mit einem Example läuft ohne Probleme auf dem WebServer.

Nun stehe ich aber vor dem nächsten Problem:
Ich kann auf dem FTP keinen Ordner erzeugen!?
Ich gehe auf: ftp://<ip>/WEBS/
Eingeloggt als Anonymous.

Gibt es da ein anderes Login damit ich Ordner erzeugen kann?
Es kommt immer Error 500, Command not supported.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe es rausgefunden! Mann muss ein XML an die Steuerung schicken.
Das Response XML enthält dann den Wert der Variable.

Auch geht das nicht nur vom WebServer sondern von irgendwo im Netzwerk. ;)

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, [URL="http://www.pspad.com"]www.pspad.com[/URL]">
  <title>Read PPO from ILC 150 ETH</title>
  <script type="text/javascript">
        var xmlReqList;
        var xhttp;      
        
        // Function creates from Array of variables an XML file in WebVisit format
        function createGetHTTPlist(list)
        {
         var xhttpsend="<body><version>1.0</version><client>IMasterPhoenix5_14_05</client><client_ver>5.14.0501</client_ver><item_list_size>";
         var item_list=list.length;
         var i;
         xhttpsend = xhttpsend + item_list ;
         xhttpsend = xhttpsend + "</item_list_size><item_list></item_list></body>";
         xmlReq=loadXMLString(xhttpsend);
         for (i in list){
          newel=xmlReq.createElement("i");
          x=xmlReq.getElementsByTagName("item_list");
          x[0].appendChild(newel);
          newel=xmlReq.createElement("n");
          newtext=xmlReq.createTextNode(list[i]);
          newel.appendChild(newtext);
          x=xmlReq.getElementsByTagName("i");
          x[i].appendChild(newel);
         }
         return(xmlDoc);
        }
        
        //Create from String an XML file with browser detection
        function loadXMLString(txt)
        {
        if (window.DOMParser)
          {
          parser=new DOMParser();
          xmlDoc=parser.parseFromString(txt,"text/xml");
          }
        else // Internet Explorer
          {
          xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async="false";
          xmlDoc.loadXML(txt);
          }       
        return xmlDoc;
        }       
      
        function createXMLHttpRequest() {
           if (window.ActiveXObject) { 
                try { 
                   // IE 6 and higher
                   xhttp = new ActiveXObject("MSXML2.XMLHTTP");
                } catch (e) {
                    try {
                        // IE 5
                        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {
                        xhttp=false;
                    }
                }
            }
            else if (window.XMLHttpRequest) {
                try {
                    // Mozilla, Opera, Safari ...
                    xhttp = new XMLHttpRequest();
                } catch (e) {
                    xhttp=false;
                }
            }
        }
        
        function sendRequest() {
            
            if (!xhttp) {
                alert("An Error occured when trying to initialize XMLHttpRequest!");
                return; // exit
            }
            xhttp.open("POST","/cgi-bin/ILRReadValues.exe",true);
            xhttp.onreadystatechange=sendRequest_callback;
            xhttp.send(xmlReqList);
        }            
        
        function sendRequest_callback() {             
            if (xhttp.readyState==4) {
                GetData();
            }
        }
        
        //Is executed if the confirmation from the webserver is recived
        function GetData(){
            var PLC_SYS_TICK_CNT;
            xmlDoc=xhttp.responseXML; //Convert respnse into xml document
            PLC_SYS_TICK_CNT = xmlDoc.getElementsByTagName("v")[0].childNodes[0].nodeValue; //Get first variable value
            document.getElementById("PLC_SYS_TICK_CNT").innerHTML = PLC_SYS_TICK_CNT;
        }         
        
  
        function init() {
            createXMLHttpRequest();
            xmlReqList = createGetHTTPlist(["@GV.PLC_SYS_TICK_CNT"]);
            sendRequest();
        }
        </script> 
  </head>
  <body>
    <input type="button" style="height: 23px; width: 20%;font-size:98%;text-align:center" onclick="init()" value="Get Data" width="50%" align="middle"/></br></br>
    <p id="PLC_SYS_TICK_CNT"></p>
    
  </body>
</html>
 
Hallo Portisch,

da machst du uns ja bald Konkurrenz mit deiner eigenen Lösung ;)

Die jetzige Generation unserer Kleinsteuerungen unterstützt FTP bisher leider nur recht eingeschränkt. Die neuen 1xx1 Geräte können jedoch verschiedene FTP Nutzer mit verschiedenen Rechten einrichten.


Ich wünsche dir noch viel Glück mit deinem Vorhaben.


Mit freundlichem Gruß
Mark Schäfermann
 
Hallo Portisch,

ich benutze auch eine Phoenix ILC und finde deine Lösung sehr interessant. Leider kann ich aber nicht nachvollziehen, wie das funktionieren soll. Kannst du mir hierzu evtl. ein Beispiel oder weitere Informationen zukommen lassen?

Vielen Dank für deine Hilfe und Antwort

Grüße
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich kann wenn erlaubt einmal ein Java Beispiel hochladen.
Ich habe ein Java Class für die Abfrage der Variabeln gemacht.
Diese Class kann dann in einem eigenen Java Applet oder einfach per HTML geladen werden.

Ich muss es erst aber noch etwas zusammenräumen...
 
Hallo Portisch,

das wäre echt klasse von dir. Würde mir das gerne mal anschauen, vielleicht kann ich es auch irgendwie nutzen...

Danke und schöne Grüße
Daniel
 
Also hier einmal meine Basteleien!

Es ist der Java Source und ein Beispiel dabei.
Die "HTTPRequest.class" kümmert sich um den Datenaustausch zwischen Java Applet und der SPS.
Derzeit ist nur lesen der Vars eingebaut. Für ein Schreiben der Vars habe ich noch keine Zeit gehabt.
Die "SPS_JInterface.class" ist das eigentliche Java Applet und muss über die "entry.html" geladen werden.

Wenn man auf dem FTP der SPS in den Ordner WEBS den Inhalt des ZIP Files kopiert sollte es schon gehen.
Vielleicht muss in der "entry.html" die IP Adresse der Steuerung eingegeben werden.
Hier im Firmennetzwerk geht wegen Firewall usw. die 127.0.0.1 nicht. Muss man probieren!

Die Java Files können einfach mit dem Java-Editor bearbeitet werden.
Die PPOs sind in der "SPS_JInterface.java" anzupassen und neu zu kompilieren.
Die PPOs Bezeichnung holt man sich aus der Datei "PDD.csv".
Diese ist hier zu finden: "..\ProjektName\ProjektName\C\STD_CNF\R\STD_RES\PDD.csv"
Über die Java Console kann man sich ansehen ob man Erfolg hat.

Auch habe ich meine Sachen zu dem amCharts mit beigelegt.
Das ist eine Aufzeichnung von Temperaturen, Luftdruck, Luftfeuchtigkeit,...

Für das ganze ist kein WebVistit erforderlich!
Es ist halt nicht Drag & Drop sondern man muss selbst etwas Java programieren.
Ist aber nicht so schwierig! Das ganze habe ich in ca. 1 Woche ohne Java Kentnisse zusammengebaut... :cool:

Screenshot.png

Anhang anzeigen ILC_SPS_Java_Interface.zip
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Super. Das kann ich ja glatt für meine selbstgebaute Visu nehmen. Muss man sich nicht noch Visu+ zulegen oder WebVisit.
Wenn ich das schon gewusst hätte, dass das so einfach ist. Woher hast du denn die Info Portisch, das das über XML geht?
 
Hallo Portisch, hallo Mobi,

@ Portisch
schon mal vielen Dank für das Bereitstellen deiner Daten/Beispiele. Werde auch mal versuchen, mir hier eine Visu oder dergleichen selbst zu stricken. Leider muss ich mich hierzu erst einmal in Java einarbeiten...

@Mobi
Hast du dir wohl bereits eine eigene Visu erstellt? Hab dir übrigens eine Mail bezüglich deiner Hausautomatisation mittels Phoenix SPS geschickt, vielleicht hättest du hier noch ein paar Infos für mich. Danke!

Möchte später versuchen, über mein Android Tablet PC die Visualisierung zu machen und nicht immer einen PC als Server laufen zu lassen...

Schöne Grüße
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Möchte später versuchen, über mein Android Tablet PC die Visualisierung zu machen und nicht immer einen PC als Server laufen zu lassen...

Das ist auch mein Plan!
Ich liebäugle mit dem Flytouch 3:
http://www.amazon.de/Flytouch-Super...=sr_1_1?s=ce-de&ie=UTF8&qid=1338528747&sr=1-1
Das hätte auch einen echten LAN Anschluss für Wandmontage.

Nur zur Info: das Java Applet kann auf irgendeinen PC ausgeführt werden. Es muss nicht auf dem Webserver der ILC laufen. Einfach die IP Adresse anpassen. Man kann mit jeder beliebiger Programmiersprache (C++, Delphi, C#,...) einfach per HTTP Post Request sich die Daten von der SPS holen.

Ich habe es halt als Java umgesetzt damit es mit jedem Beliebigen Browser geöffnet werden kann. Wenn man ein extra Delphi Programm schreibt geht es zwar auch, aber man braucht halt wieder Windows...
 
Der HTTP Request kommt mir momentan ganz recht, weil bisher mache ich das über ein Array, welches ich einfach per TCP hin und her schicke.
Mit einem HTTP Request in Form von XML hatte ich schon Bekanntschaft gehabt mit Steuerungen von Reis-Robotern. Das ist bequem zu handhaben.

Android steht bei mir auch auf der ToDo-Liste. Hab mir auch schon Basic4Android runtergeladen und schon "Hello World" gemacht :)
Als nächstes werde ich mir dann die Vollversion kaufen, damit ich dann auch Bibliotheken einbinden kann, wegen Netzwerk und so.
 
Hallo Portisch, hallo Mobi,

da bin ich ja mal gespannt, ob es uns gelingt, eine Visualisierung für das Android System und Phoenix zusammen zu basteln. Ich muss mich hierzu leider erst noch ein wenig in die Materie einlesen und -arbeiten. Klingt auf jeden Fall schon mal sehr interessant.

Soweit ich weiß, sind JavaApplets auf dem Android System nicht möglich, oder? Das Programm Basic4Android werde ich mir auch mal anschauen, interessiert mich auch schon länger...

Falls bei euch neue Erkenntnisse auftauchen, nur her damit :)

Gibt ja nicht so viele hier im Forum, die Phoenix ILC Controller verwenden... Bei weiteren Fragen, und die tauchen sicherlich auf, werde ich mich wohl wieder an euch wenden müssen.

Schöne Grüße
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Soweit ich weiß, sind JavaApplets auf dem Android System nicht möglich, oder? Das Programm Basic4Android werde ich mir auch mal anschauen, interessiert mich auch schon länger...

Ich habe noch ein Android Gerät und kann es nicht testen. Aber das Java Applet läuft dann ja auf dem Webserver der SPS und nicht auf dem Android Gerät.
Damit es dann aber Angezeigt werden kann muss aber dann ein Browser benutzt werden (ich teste im Moment mit dem IE9) der Java unterstützt.
 
@ Mobi:
Eine direkte App wäre das Nonplusultra, das übersteigt aber meine bisherigen Fähigkeiten bei weitem... Wie hast du dir das gedacht? Habe zumindest mal das Hello World Programm mit Basic4Android gemacht, das hat einigermaßen geklappt.

@ Portisch:
Habe übrigens heute einmal probiert, die entry.html von dir auf meinem Android Tablet (Asus EEPad) zu starten, leider ohne Erfolg. Ich habe hierzu den Ordner WEBS auf meinen ILC 150 Controller kopiert und dann mittels Firefox auf die Datei zugegriffen. Im Browser taucht dann die Fehlermeldung auf, dass ein Plugin benötigt wird, damit der Inhalt angezeigt werden kann. Hier werden wohl die Probleme mit JavaApplets ihren Teil dazu leisten...

Schöne Grüße
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, Firefox braucht ein Java Plugin!
http://support.mozilla.org/de/kb/Das%20Java-Plugin%20mit%20Firefox%20nutzen

Mein Blackberry aber z.b. unterstützt auch Java im Webbrowser.
Am liebsten würde ich mir auch eine eigene App mit Delphi machen.

Das Programm braucht dann aber wieder Windows. Da kann ich dann nicht von einem Handy drauf zugreifen. Auch bräuchte man dann wieder einen extra Server wo die App (wegen Windows) drauf läuft.
Die SPS läuft ja eh immer und darum wäre es eigentlich Blödsinn einen extra Server laufen zu haben der auch wieder Strom braucht...
 
Also die App läuft doch dann auf dem Android. Wieso sollte es auf einem Server laufen?

@Daniel: Willst du dir auch die Vollversion kaufen? Ich will sie mir noch in diesem Monat zulegen. Wie die App aussehen soll, weiß ich noch nicht. Ich wollts erstmal zum laufen bringen, sodass ich Werte erhalte und dann mache ich mich ans Aussehen.


Die Visu für den PC ist eine Exe. Da werde ich mich kommende Woche wieder dransetzen.
 
Also die App läuft doch dann auf dem Android. Wieso sollte es auf einem Server laufen?
Naja, ich habe im Moment kein Android Handy sondern ein Blackberry. Deswegen ein Java-Applet das auf dem Webserver der SPS läuft, damit ich Client unabhängig bin.
 
Zurück
Oben