Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 2 von 2

Thema: S7-1200 Webserver - AJAX

  1. #1
    Registriert seit
    21.11.2012
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forum!
    Kann mir jemand AJAX mit S7-1200 zeigen?
    Ich hab darüber nicht wirklich viel gefunden.

    Eine einfache Datenabfrage (z.B. eine Variable) würde mir weiterhelfen ums an der S7 zu testen.
    Ich würde gerne z.B. Ein- und Ausgänge abfragen wollen. Zur Zeit mach ich nur einen Refresh der Seite. Hab diese schon in iFrames unterteilt - was auch ganz gut funktioniert - mit AJAX solls ja noch besser gehen?
    Kann mir hier jemand den Code posten?
    Vielen Dank im vorhinein!
    Grüße
    Zitieren Zitieren S7-1200 Webserver - AJAX  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.793
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ob das besser funktioniert hängt davon ab wie du deine Webseite zusammenbaust. Der Webserver der 1200 ist einfach schnarchlangsam, vor allem wenn viele AWP Variablen gelesen werden sollen. Man kann die Performance ein ganzes Stück erhöhen, wenn man im SPS Programm die zu lesenden Variablen in einen String schreibt (z.B. Komma getrennt) und dann nur per AWP diese eine (oder ggf. mehrere) Stringvariable einliest. Per Javascript zerlegt man diesen String wieder in die Einzelwerte. Das bringt richtig was.

    Und nun das Beispiel:
    Es gibt dazu zwei Seiten: ajax-basis.html und ajax-daten.html
    In ajax-basis wird per XML-HTTP Request die Seite ajax-daten geladen, und in das div-Element geschrieben.
    ajax-daten.html enthält in diesem Beispiel eine HTML-Tabelle mit den Werten aus der SPS.
    Wie ich oben geschrieben habe, kann man sich theoretisch das HTML komplett sparen und nur die Werte übertragen, evtl. sogar passend in JSON Notation, oder eben einfach Komma getrennt. In JS ist sowas ja fix zerlegt.

    ajax-basis.html
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
    	<head>
    		<title>Testseite zur Datenaktualisierung mittels XML-HTTP Request</title>	
    		
    <script type="text/javascript">
    function showDataTable()
    {
    	if (window.XMLHttpRequest) {
    		// code fuer IE7+, Firefox, Chrome, Opera, Safari
    		xmlhttp = new XMLHttpRequest();
    	} else {
    		// code fuer IE6, IE5
    		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    
    	xmlhttp.open("GET", "ajax-daten.html", true);
    
    	xmlhttp.onreadystatechange = function()
    	{
    		if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    		{
    			document.getElementById("OutputArea").innerHTML = xmlhttp.responseText;
    			// Refresh Timeout zum Neuladen der Daten setzen
    			setTimeout("refreshOutputArea()", 3000);
    		}
    	}
    	xmlhttp.send(null);
    }
    
    function refreshOutputArea()
    {
    	showDataTable();
    }
    
    window.onload = function()
    {
    	refreshOutputArea();
    }
    
    </script>	
    	</head>
    <body>
    
    <h2>Testseite zur Datenaktualisierung mittels XML-HTTP Request</h2>
    <p>Aktualisierung der Seitendaten alls 3 s.</p>
    <div id="OutputArea"></div>
    </body>
    </html>
    ajax-daten.html
    Code:
    <!-- AWP_In_Variable Name='"DB_HMI"' -->
    
    <!-- AWP_In_Variable Name='"DB_HMI".boolVar1' -->
    <!-- AWP_In_Variable Name='"DB_HMI".boolVar2' -->
    <!-- AWP_In_Variable Name='"DB_HMI".intVar1' -->
    <!-- AWP_In_Variable Name='"DB_HMI".intVar2' -->
    
    <!-- AWP_Enum_Def Name="EnumEinAus" Values='0:"Aus",1:"Ein"' -->
    
    <!-- AWP_Enum_Ref Name='"DB_HMI".boolVar1' Enum="EnumEinAus" -->
    <!-- AWP_Enum_Ref Name='"DB_HMI".boolVar2' Enum="EnumEinAus" -->
    
    <table>
     <tr>
      <td>Variable intVar1: :="DB_HMI".intVar1:</td>
     </tr>
     <tr>
      <td>Variable intVar2: :="DB_HMI".intVar2:</td>
     </tr>
     <tr>
      <td>Variable boolVar1: :="DB_HMI".boolVar1:</td>
     </tr>
     <tr>
      <td>Variable boolVar2: :="DB_HMI".boolVar2:</td>
     </tr>
    </table>

    Auf meiner SPS benötigt der Webserver für die 4 Variablen fast 3 Sekunden zum laden. Darum lassen sich nicht wesentlich schnellere Aktualisierungszeiten realisieren.
    Die Ladezeiten lassen sich z.B. im Firefox mit den Entwicklertools beobachten.

    Man sollte noch prüfen ob kein Request mehr läuft bevor man einen neuen absendet, das habe ich hier der Einfachheit halber weggelassen.

Ähnliche Themen

  1. S7 1200 - Webserver
    Von hank12 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 06.06.2013, 18:45
  2. TIA Webserver S7 1200
    Von golfsiew im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.05.2013, 11:23
  3. Webserver S7 1200
    Von emilio20 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 06.01.2013, 12:05
  4. S7 1200 Webserver
    Von magus111 im Forum Simatic
    Antworten: 34
    Letzter Beitrag: 07.11.2012, 18:36
  5. S7 1200 Webserver
    Von settelma im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 31.03.2012, 10:27

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •