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

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 42

Thema: WEB2PLC Seitenteile neu Laden

  1. #11
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mit "Standard-Formular" meine ich das <form ..> element, ohne Javascript Erweiterungen wie onchange-Events.

    Was fertiges habe ich auch nicht parat, aber du kannst dir ja mal das Projekt vom Jannes ansehen, wo das aber mit jquery gemacht wird:
    http://www.sps-forum.de/simatic/6291...s7-1200-a.html

    Glaub er hat eine etwas aktuellere Version im Siemens Forum geposted.

  2. #12
    spikey ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.01.2015
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    Danke für den Link werde ich mir bzw. habe ich mir schon etwas angeguckt.
    Kannst du mir vielleicht auf Meine Frage eine Antwort geben.

    Wie kann ich mit Ajax oder jquery ein Bild nehmen so wie ich es in der html Seite immer gemacht habe und via Post dann die Variable in der SPS setzen.
    Kannst du mir da vielleicht sagen wie der Code auszusehen hat, zu der genauen Fragestellung habe ich im Inet nichts gefunden.

    Bzw. ich tue mich da echt schwer das zu verstehen .
    Geändert von spikey (14.01.2015 um 13:13 Uhr)

  3. #13
    spikey ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.01.2015
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Problem2
    Das die reinen Werte sich aktualisiren auf der Seite wenn ich sie in der SPS verändere das klappt auch schonmal.
    Nur dann die javascript Funktion die mir dann an stelle der divs, die Bilder anzeigen soll, wird nicht automatisch aufgerufen dazu muss ich einmal händisch die Seite reloaden

    Problem3
    die WebSeite im HMI muss ich generell neu laden damit was passiert (also händisch) . im firefox werde wenigstens automatisch die reinen Variablen angezeigt wenn ich diese in der SPS verändere.

    Das halt einmal zum aktuellen Stand.

  4. #14
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Ich habe mein Beispiel mal um eine Eingabemöglichkeit erweitert.
    Die Aktualisierung der Werte und auch die Eingabe erfolgt über einen XMLHttpRequest, sodass nichts blinkt wenn Variablenwerte geschrieben oder gelesen werden. Es kommt ohne die jquery Bibliothek aus.
    Um Werte eingeben zu können, muss man sich vorher am Webserver der SPS angemeldet haben.

    In meinem Beispiel habe ich in der SPS drei Integervariablen (TestInt1, TestInt2, TestInt3) im Merkerbereich angelegt. Auf diese Daten soll per Ajax schreibend und auch lesend zugegriffen werden können.

    Es wird eine Datei data.json mit folgendem Inhalt angelegt:
    Code:
    <!-- AWP_In_Variable Name='TestInt1' -->
    <!-- AWP_In_Variable Name='TestInt2' -->
    <!-- AWP_In_Variable Name='TestInt3' -->
    
    [
        {
            "name": "TestInt1",
            "value": :=TestInt1:
        },
        {
            "name": "TestInt2",
            "value": :=TestInt2:
        },
        {
            "name": "TestInt3",
            "value": :=TestInt3:
        }
    ]
    Die AWP Anweisungen sind notwendig damit diese Variablen auch beschrieben werden können. Der restliche Teil ist ein Array aus Javascript Objekten, in Json-Notation.
    In den Eigenschaften des Webservers in der Gerätekonfiguration muss unter "Erweitert" bei "Dateien mit dynamischem Inhalt" die Liste um ".json" ergänzt werden. Es hätte die Die Endung .json ist nicht zwingend notwendig, nur sieht man dann an der Endung dass es sich hier nicht um HTML handelt.

    Dann kommt die eigentliche Anzeigeseite (z.B. index.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", "data.json", true);
    
        xmlhttp.onreadystatechange = function()
        {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
                var data = JSON.parse(xmlhttp.responseText);
                var results = document.getElementById("OutputArea");
                
                // Bei erstem Aufruf Seitentabelle zusammenstellen
                if (results.innerHTML.length < 10) {
                    var html = "<table border=1>";
                    html += "<tr><th>Name<\/th><th>Ausgabe<\/th><th>Eingabe<\/th><\/tr>";
                    for (var i = 0; i < data.length; i++) {
                        html += "<tr>";
                        html += "<td>" + data[i].name + "<\/td>";
                        html += "<td><input name='" + data[i].name + "' id='AUSGABE_" + data[i].name + "' type='text' /><\/td>";
                        html += "<td><input name='" + data[i].name + "' id='" + data[i].name + "' type='text' />";
                        html += "<input type='button' value='Wert setzen' onclick=setPlcValue('" + data[i].name + "') /><\/td>";
                        html += "<\/tr>";
                    }
                    html += "<\/table>";
                    results.innerHTML = html;
                }
                // Ausgabefelder mit den eigentlichen Werten befüllen
                for (var i = 0; i < data.length; i++) {
                    var elem = document.getElementById("AUSGABE_" + data[i].name);
                    elem.value = data[i].value;
                }
                // Refresh Timeout zum Neuladen der Daten setzen
                setTimeout("refreshOutputArea()", 2000);
            }
        }
        xmlhttp.send(null);
    }
    
    function setPlcValue(varname)
    {
        var elem = document.getElementById(varname);
        if (elem.value == "") {
            alert("Es fehlt die Eingabe!");
            return;
        }
        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("POST", "data.json", true);
        var postData = varname + "=" + elem.value;
        xmlhttp.send(postData);
        refreshOutputArea();
    }
    
    function refreshOutputArea()
    {
        showDataTable();
    }
    
    window.onload = function()
    {
        refreshOutputArea();
    }
    
    </script>
    </head>
    <body>
    <h2>Testseite zur Datenaktualisierung mittels XML-HTTP Request</h2>
    <div id="OutputArea"></div>
    </body>
    </html>
    Beim Ersten Aufruf der Seite wird die Ein-/Ausgabetabelle aus den json Daten erstellt. Bei allen folgenden Aktualisierungen wird dann nur noch der Wert des Ausgabeelements geändert.
    Wenn andere oder mehr Variablenwerte angezeigt werden sollen, muss also nur die data.json entsprechend angepasst oder erweitert werden.

  5. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    spikey (18.01.2015)

  6. #15
    spikey ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.01.2015
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Anmelden geht ja über das Everybody war das glaube ich und dann halt alle Rechte an diesen vergeben?!
    Diese Seite Lädt sich dann einfach alle , in deinem falle 2 sec. neu.

    Aber dann bleibt noch die Sache das ich nicht verstehe wie ich eine Post Methode auf ein Bild legen kann um so eine Variable in der SPS zu setzen.
    Ein Kollege meinte das ginge hier mit :

    $(document).ready(function() {


    //
    $("#driver").click(function(event){


    $.post(
    "/jquery/result.php",
    // parameter an post
    { name: "Zara" },
    function(data) {
    $('#stage').html(data);
    }


    );


    });


    });

    Aber da er immer sehr hibbelig und gestresst ist, konnte er mir nicht sagen wie ich das auf ein Bild legen bzw. das ganze einbinden kann/soll.
    Weißt du das ggf. ? / wenn es nicht so viel Arbeit macht.

  7. #16
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Ohne selber zu verstehen wie das funktioniert bekommst du auch mit Beispielcode nichts hin.

    Wenn du jquery verwenden willst, dann versuche das Beispiel von Jannes nachzuvollziehen. Nicht nur per Copy&Paste zusammenkopieren, sondern auch verstehen was da passiert.
    Wenn ohne jquery, dann kannst du versuchen meines zu verstehen.

    Um eine Variable in der SPS zu schreiben muss folgendes gegeben sein:
    - Der Benutzer muss angemeldet sein
    - Der Schreibbefehl muss mittels HTTP-POST und den Parametern in der Syntax: variablenname=wert übergeben werden
    - Die Variablen auf die geschrieben werden sollen, müssen auf der Zielseite mit der AWP-Syntax bekanntgegeben werden

  8. #17
    spikey ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.01.2015
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also verstehen tue ich dein Beispiel schon so halb, hab mir dazu auch einiges schon vorher durch gelesen. Und ich will das ganze auch lieber ohne jquery machen.
    verstehen tue ich auch :
    das man angemeldet sein muss,
    die AWP Einbettung weiß ich auch .. .

    Aber was ich nicht verstehe , ist wie der befehl auszusehen hat für das Post ohne die ganze Seite neu zu laden.
    Also quasi xmlhttp.open("POST",...) und da dann die Bilder (wie) mit rein um das ganze als einzelnen postbefehl zu nehmen.!?



    Ich habe es ja so gemachtetwas abgespeckt)

    Code:
    		<form method="post" action="">						
    				<div id="Icon1" style="position:absolute; left: 388px ; top: 17px " > 
    					<img src="Wartend.png" width="73" height="78">
    				</div> 
    
    
    				<input type="hidden" name='"NZ".NZ[1].pressed' size="20" value="1">
    So lädt sich aber beim drauf drücken die ganze Seite neu. ich will ja nur das sich quasi das "Segment" neu lädt.
    Da happert es eigentlich bei mir.

    Und was ich nicht verstehe ist , warum das ganze am HMI nicht läuft und am PC selbst mit dem Inet explorer 10 auch nicht. Obwohl ich so wie du auch in deinem Bespiel das ganze einmal für die alten Inet explorere als auch für die anderen mit reingepackt habe. Oder gibt es da noch mehr Befehle für andere ?!


    PS: wenn ich das alles endlich geschnallt habe und es läuft schick ich dir ne Dankespostkarte mit Pralinen

  9. #18
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Ich weiß ehrlich gesagt nicht was du mit deinen Bildern meinst.
    Ich würde ja erstmal ein einfachstes Beispiel machen: Wie kann ich einen Wert von der SPS auslesen und anzeigen? Wie kann ich einen Wert in die SPS schreiben?
    Irgendwelche Bilder anhand von Variablenwerten auszutauschen ist dann der nächste Schritt. Da führen viele Wege zum Ziel, Javascript ist einer davon.

    Nochmal ein ganz einfaches Beispiel mit deinem Werten:
    Code:
    <input id='"NZ".NZ[1].pressed' type='text' />
    <input type='button' value='Wert setzen' onclick=setPlcValue('"NZ".NZ[1].pressed') />
    Das erzeugt ein Eingabefeld für den Wert, und einen Button. Wenn der Button angeklickt wird, soll die Javascript Funktion "setPlcValue" aufgerufen werden.
    Das Eingabefeld bekommt eine id, damit bei der Funktion anhand der id der Wert im Eingabefeld ausgelesen werden kann.

    Nun die Funktion:
    Code:
    function setPlcValue(varname)
    {
        var elem = document.getElementById(varname);
        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("POST", "data.json", true);
        var postData = varname + "=" + elem.value;
        xmlhttp.send(postData);
    }
    Die Zielseite (im Beispiel data.json) musst du an deine Gegebenheiten anpassen. Auf der Zielseite muss auf jeden Fall per AWP die Variable bekanntgegeben sein.

    Mein Beispiel oben funktioniert zumindest mit dem Firefox und auch mit dem IE11, die Spezialitäten sind soweit ich weiß nur für die genannten alten Browser notwendig. Das Hauptproblem das ich z.B. unter Android habe ist der Zertifikatsfehler beim Anmelden.

  10. #19
    spikey ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.01.2015
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Werte aus der SPS auslesen geht.

    Also ich meine das so:

    Ich habe ein Bild was ein Knopf darstellt wenn ich da drauf drücke, wird mir ein Variable in der SPS auf 1 gesetzt. Diese Variable Frage ich dann wieder ab . Also ob sie 1 oder irgendwas anderes ist.
    Wenn sie 1 ist dann soll mir der Knopf getauscht werden und eingedrückt aussehen.( im Anhang mal Bilder dazu)
    Angehängte Grafiken Angehängte Grafiken

  11. #20
    spikey ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.01.2015
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So noch mal zum Verständniss:
    Mit Bilder meinte ich halt die Buttons wo man drauf klickt, wobei es ja keine Buttons im Sinne des programmierens sind daher schrieb ich Bilder ^^.

Ähnliche Themen

  1. DB neu laden mit veränderten Anfangswerten
    Von Fl0Bru im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.11.2011, 23:39
  2. DB über Programmbefehl neu laden
    Von Dav im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.07.2011, 12:12
  3. Datenbaustein bei der S7-200 neu laden
    Von hubert im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 24.05.2005, 21:56
  4. C7 626 DP nach Urlöschen neu laden Teil2
    Von JensPipka im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 23.03.2004, 11:15
  5. C7-626 nach Urlöschen neu laden
    Von JensPipka im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.03.2004, 12:45

Lesezeichen

Berechtigungen

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