Sonstiges WEB2PLC Seitenteile neu Laden

spikey

Level-1
Beiträge
28
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Schönen guten Morgen,

ich habe folgendes Probleme:

Ich habe mir eine html Seite, in welcher verschiedene divs mit Id und Angaben wo diese sitzen sollen , erstellt.
Das ganze sieht dann quasi so aus:

Pause (Bild) Anfahren (Bild)
Stop (Bild) Abbremsen (Bild)
... .... ..... ....

Links jeweils ein Wortwofür der dazugehörige Button welcher ein Bild ist (welches z.B. Wenn ich auf das Bild/Button drücke , über den Befehl <input type="hidden" name='"NZ".NZ[2].pressed' size="20" value="1"> eine Variable in der SPS für eine Nebenzeit auf 1 setzt.

Nun ist mein Problem das ich in der Hauptseite eine externe iframes zufüge. Diese iframes Aktualisiert sich regelmä8ig hat den Vorteil das ich auch Händisch in der SpS die Variablen umstellen kann und sich nur die Bilder samt Funktion verändert.

Also es ändert sich nur die jeweiligen Bilder neu und nicht die ganze Seite(so wird ein Flackern verhindert).
Sprich der Iframe ist dafür da um eine Variable aus der SPS mit dem Wert 1 zu vergleichen um dann das Bild zu verändern je nach dem ob der Wert der Variable 1 oder 0 ist.

Soll heißen ich drücke auf den Pausebutton der oben mit (Bild) gekennzeichnet ist dieser Sendet mir einen Wert an die Variable "NZ".NZ[2].pressed' . Diese Variable Frage ich in dem iframe welcher sich zyklisch Aktualisiert wieder ab und wenn der Wert 1 ist soll mir das Bild von Pausebutton getauscht werden und ein anderes Bild angezeigt werden.

Jetzt habe ich insgesammt 8 Buttons mit einen Namen davor.
Ich habe auch eine Variable in der SPS um ein ganzes "Feld" auszublenden also den Namen + Button/Bild. Und hier ist das Problem.
Ich kann ein Feld entfernen in dem ich einfach im iframe die Variable "trasparent" nehme und wenn diese 1 ist sollen mir in allen divs die zu dem "Feld" gehören nix angezeigt werden. (vorher hatte ich ein Bild mit der Hintergrundfarbe welches dann einfach drüber gelegt wird)

Nun verhält sich das ganze so, entweder so
Fall 1:
Aufbau: Die divs auf der Hauptseite sind leer also nur die positionen werden hier geregelt und ich sehe nur die Hintergrundfarbe
nachteil:
Wenn ich im iframe das Feld sagen wir 1 anzeige , sodass ich den Namen und den Button sehe kann und diesen Button nun betätige refresht sich die Seite scheinbar so, dass ich einmal die "Hauptseite" also nur die Hintergrundfarbe sehe und dann das Bild mit dem gedrückten Button

Vorteil :
wenn ich einen anderen Button genau so bearbeite das auf der Hauptseite nichts in den divs steht und ich den 2 Button Ausblende also auch leere Felder wenn die Variable dafür 0 ist.
und ich den ersten Button drücke, flackert nichts am zweiten Button.

Fall2:
Aufbau: Die divs auf der Hauptseite sind nicht leer also der Name und die Buttons/Bilder sehen nicht eingedrückt aus sonder stehen 3D artig heraus.

Vorteil :
Wenn ich im iframe das Feld sagen wir 1 anzeige , sodass ich den Namen und den Button sehe kann und diesen Button nun betätige refresht sich die Seite scheinbar auch, aber ich sehe halt die "Hauptseite" also nur die die an der stelle genau so aussieht wie die iframe Seite folglich sieht man kein flackern oder sonst was.

Nachteil:
wenn ich einen anderen Button genau so bearbeite das auf der Hauptseite die selben Sachen in den divs stehen und ich den 2 Button Ausblende also alle Divs leere Felder sind, wenn die Variable dafür 0 ist.
und ich den ersten Button drücke, sehe ich kurz beim 2 Button die Hauptseite also eben das Bild für den Button und den Namen.

Das ganze aber nicht immer.
Es liegt wohl daran, dass sich die iframes regelmäßig aktuallisieren und wenn ich in dem Moment auf einen Button drücke, und sch z.B. der 2 iframe aktuallisiert wird mir halt ds was in der Hauptseite steht angezeigt.


Ich hoffe ihr konntet mir soweit folgen.

wie kann ich das ganze umgehen?!

Nun meinte ein Kollege über Php könnte das wohl klappen. da ist nun meine Frage wie..

Ich habe jetzt schon eine Seite erstellt.
mit jquerry und Php

so das die Seite schon mal vom Design soweit aussieht wie sie soll.
ich kann Werte in der Hauptseite namens puck.html anzeigen lassen .
Wenn ich das Dokument einfach im inetexplorer öffne und in einer der Php Dateien etwas anderes hereinschreibe z.B. hallo wird mir das auf der Hauptseite angezeigt.
Aber wie kann ich nun auf dieser Art und Weise die Werte an die SPS senden wenn ich einen Button drücke.
und refreshen lassen in der PHP datei.
Also es ändert sich danna uf der Hauptseite auch nix wenn ich das auf die SPS geladen habe und dann von da aus öffne

Im anhang habe ich den Ordner 2.0 welche aus dem ersten Versuch ist die mit html und Javascript
und den Ordner php mit dem jquerry versuch und PHP.

Oder hat wer eine andere idee..vielleicht gehe ich ja total falsch daran oder habe im ersten Versuch schon ein Denkfehler und es geht irgendwie mit html und javascript ?
 

Anhänge

  • php.zip
    97,6 KB · Aufrufe: 5
  • 2.0.zip
    25,2 KB · Aufrufe: 3
Zuletzt bearbeitet:
Du könntest deine Variablen per XhtmlHttpRequest (aka Ajax) aktualisieren. Dann benötigst du eigentlich auch keine iframes.
Kleines abgespecktes Beispiel:
http://www.sps-forum.de/simatic/63753-s7-1200-webserver-ajax.html#post446386

Du kannst auch eine Webseite in der SPS angelegen welche dir die Daten in json Struktur zurückgibt, und dann alles im Browser per javascript einlesen und verarbeiten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin danke für die schnelle Antwort,

Ah ok also sagst du lieber ohne PHP das ganze versuchen zu realisieren .
Und dann sollte es funktionieren das man kein Flackern sieht ?
Ich habe mir den Link jetzt noch nicht angeguckt daher vielleicht eine doofe Frage.
Da ich von Xhmtl natürlich auch keine Ahnung habe, kann ich mir das ganze dann so vorstellen das ich alles auf einer "Hauptseite" habe und kann ich dann dort die Variablen der SPS mittels
Javascript nutzen?
Also so wie ich es in meinem ersten Versuch gemacht habe, dass ich dann den Button betätige eine Variable in der SPS auf 1 setze und mittels Javascript dann die Abfrage machen kann wenn eine Variable 1 ist dann mache das ansonsten passiert das ?

Wie meinst du das mit eine Webseite in der SPS machen ?
Momentan benutze ich ja den Webserver der SPS und lade die WEbseiten über das Tool , Web2Plc auf die SPS oder meinst du was anderes ?

Ich werde mich dann am Montag wieder dran setzen und das mal versuchen. Hast du ggf. noch einer eine andere Idee oder Tipps .
Problem ist bei mir halt ich beschäftige mich noch nicht so lange mit SPSen und auch noch nicht solange mit der Webgeschichte.
Also nicht wundern falls ich mal etwas begriffsstutzig bin:-o
 
Ich meine das Web2Plc direkt auf der SPS.

Ich weiß nicht wie du da etwas mit php realisieren willst, denn php läuft im Normalfall serverseitig im Kontext eines Webservers. Beim Web2Plc ist der Webserver in der SPS auf welchen du keinen Einfluss hast (es gibt kein php und du kannst es auch nicht nachrüsten), und dementsprechend dort mit php auch nichts anfangen kannst.

Ajax macht verkürzt gesagt das Folgende: Als erstes wird das Grundgerüst der Webseite mit allen Skripten usw. über einen normalen http-request geladen. Dann lässt sich über einen XhtmlHttpRequest im Hintergrund eine weitere Anfrage an den Webserver stellen. Das läuft alles über Javascript im Client (d.h. dein Webbrowser). Per Javascript kannst du dann mit den empfangenen Daten alles mögliche anstellen, z.B. Elemente im DOM so modifizieren, dass dort Werte die von der SPS empfangen wurden angezeigt werden. Da flackert nichts, und ist im Normalfall auch schneller da weniger Daten übertragen werden müssen.

Bei jquery gibt es für Ajax integrierte komfortable Funktionen, mit diversen Weichen damit es auch in verschiedenen Browsern funktioniert. Das "Problem" bei der jquery Bibliothek in Kombination mit dem Webserver der SPS ist, dass diese relativ groß ist. Man bekommt sie zwar in der komprimierten Version in der SPS unter, aber das Ausliefern dauert recht lange (zumindest bei einer 1200). Wenn du damit leben kannst, dass dein Webserver der SPS nur einwandfrei funktioniert wenn du Internet hast, kannst du jquery auch aus dem Internet (z.B. von google) einbinden. Mein Beispiel kommt auch ohne jquery aus.
 
Zuletzt bearbeitet:
Morgen, also ich werde mich dann heute mal mit deinem Beispiel beschäftigen und gucken ob es so klappt.

Der Kollege hatte das wohl mit einem zusätzlichen raspberry als php Webserver realisiert und den noch mit an der SPS laufen.
Ganz verstanden habe ich es nicht wenn ich ehrlich bin :-|. Aber damit hätte er ruhig eher und nicht erst auf Nachfrage rausrücken können :-?:). So habe ich dafür einen Tag "verschenkt", bzw. nun weiß ich wenigstens etwas über php.

Wenn ich fragen zu deinem Beispiel habe ist es hoffentlich ok wenn ich frage. Aber versuche es erstmal alles selbst zu verstehen und um zu setzen.

Euch erstmal einen guten Start in die Woche
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also die Werte werden mir angezeigt, dass ist ja nicht die "Baustelle" gewese. Problem ist nur das mir die Seite nicht refresht wird.
Also die Werte Aktuallisieren sich nicht wenn ich die Boolischen Werte in der Variablentabelle veränder und übertrage.

Es liegt an dem Inet Explorer 10 welcher genutzt wird . Im Firefox klappt das ganze.
Kann mir einer den Code für den Request im Internet Explorere 10 geben.
Und ggf. diesesn kurz erklären ?
 
Zuletzt bearbeitet:
Und ein weiteres Problem ist das ich nicht weiß wie ich mit ajax nun die Variablen von der Seite aus Steuern kann.
Also wenn ich das Bild drücke was ich im normalen html dokument vorher so realisiert habe :
<input type="hidden" name='"NZ".NZ[1].pressed' size="20" value="1">
wurde mir die Variable "NZ".NZ[1].pressed' auf 1 gesetzt .

wenn das nun mit Ajax mache passiert nichts .
In dem alten Versuch konnte ich auch, wenn ich in der SPS die Variable ':="NZ".NZ[5].Enabled:'; auf 1 gesetzt habe
den "Abschnitt mit den Bildern welche ich klicken kann um die Variablen in der SPS zu verändern" ausblenden lassen.
Nun muss ich erst händisch die Seite neu Laden damit sich etwas tut.
Weiß irgendjemand wie das mit Ajax funktioniert, tue mich da schwer eine "neue Sprache" zu lernen !?

var spsNZ51 = ':="NZ".NZ[5].Enabled:';
var sppNZ51 = '1';

if (spsNZ51 == sppNZ51 )
{
document.getElementById("Text5").innerHTML = document.getElementById('Text5.2').innerHTML;
document.getElementById("box5").innerHTML='';
document.getElementById("Text5Bild").innerHTML='<img src="up3.png" width="73" height="78">';
document.getElementById("Icon5").innerHTML='<img src="Wartend.png" width="73" height="78">';
document.getElementById("Text5Transparent").innerHTML='<input type=image src="transpixel.png" width="73" height="78" value="Start">';
}
else
{
document.getElementById("Text5").innerHTML='';
document.getElementById("box5").innerHTML='';
document.getElementById("Text5Bild").innerHTML='';
document.getElementById("Icon5").innerHTML='';
document.getElementById("Text5Transparent").innerHTML='';
}
 
ajax-basis.html sieht so aus:


<!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>
<link href="CSS_Hintergrund.css" type="text/css" rel="stylesheet"> <!--Verlinkung auf eine CSS Datei in diesem Fall für das Design der Seite -->
<meta http-equiv="Content-Language" content="en" > <!--Sprache des Dokumentes-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--Textform und Sprachtyp-->

<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()", 1000);


var spsNZ11 = ':="NZ".NZ[1].Enabled:'; // Nebenzeit ist ausgeblendet

if (spsNZ11 == '1' ) //vergleicht einen Variablenwert der SPS var sps mit dem Wert var spp = 1 um dann ein Bild zu wechseln oder nicht
{
document.getElementById("box1").innerHTML= '';
document.getElementById("Text1").innerHTML='Anfahren1';
document.getElementById("Text1Bild").innerHTML='<img src="up3.png" width="73" height="78">';
document.getElementById("Icon1").innerHTML='<img src="Wartend.png" width="73" height="78">';
document.getElementById("Text1Transparent").innerHTML='<input type=image src="transpixel.png" width="73" height="78" value="Start">';

}

else

{
document.getElementById("Text1").innerHTML='';
document.getElementById("box1").innerHTML='';
document.getElementById("Text1Bild").innerHTML='';
document.getElementById("Icon1").innerHTML='';
document.getElementById("Text1Transparent").innerHTML='';

}
}
}

xmlhttp.send(null);
}

function refreshOutputArea()
{
showDataTable();
}

window.onload = function()
{
refreshOutputArea();
}


</script>


</head>
<body style="overflow:hidden;">

<div id="OutputArea"></div>


<form method="post" action=""> <!-- methode post dient zum Senden von Werten bzw. Arbeiten mit anderen Programmen, Datenbanken etc.-->



<div id="box1"> <!--ist ein Container/ Abschnitt mit einer id Namens box1 -->
</div>

<div class="Text1" id="Text1"> <!--dem Bereich/Container wird eine Klasse und eine id zugewiesen-->
Anfahren2
</div>

<div id="Transparent1" style="position:absolute; left: 10x ; top: 315px " > <!--ein durchsichtiges Bild mit einer absoluten Position mit der größe width: und height: um die Schrift abzudecken-->

</div>

<div id="Text1Bild" style="position:absolute; left: 388px ; top: 317px " > <!--ein div ist ein Container hier mit einer absoluten Position und einem Bild -->

</div>

<div id="Icon1" style="position:absolute; left: 388px ; top: 317px " >

</div>

<div id="Text1Transparent" style="position:absolute; left: 406px; top: 317px " > <!--eine absolute Position und einem transparenten Bild welches über den Text aus dem vorigen div gelegt wird-->

</div>

<input type="hidden" name='"NZ".NZ[1].pressed' size="20" value="1"> <!--besagt welche Variable SPS seitig gesetzt wird mit/auf den Wert 1 -->

</form>
<style type="text/css">
div.Text1
{
position: absolute;
top: 342px;
left: 20px;
text-align:center;
cursor:pointer;
}
</style>



</body>
</html>


Das Ajax-daten.html so:

<!-- AWP_In_Variable Name='"NZ".NZ[1].Enabled' -->
<!-- AWP_In_Variable Name='"NZ".NZ[1].Aktiv' -->
<!-- AWP_In_Variable Name='"NZ".NZ[1].Aktiv_Display' -->
<!-- AWP_In_Variable Name='"NZ".NZ[1].pressed' -->





<table>
<tr>
<td>Variable intVar1: :="NZ".NZ[1].Enabled:</td>
</tr>

<tr>
<td>Variable boolVar1: :="NZ".NZ[1].Aktiv_Display:</td>
</tr>

<tr>
<td>Variable intVar2: :="NZ".NZ[2].Aktiv_Display: </td>
</tr>

<tr>
<td>Variable7 : :="NZ".test:</td>
</tr>

</table>
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Um Daten schreiben zu können musst du angemeldet sein.

Das Problem ist bei dir aber wohl, dass wenn du dein Formular abschickst der POST-Befehl nicht an die Seite ajax-daten.html sondern an ajax-basis.html geschickt wird. Auf der sind die Variablen aber nicht per AWP-Syntax dem Webserver in der SPS bekannt gegeben. Da musst du dir was anderes überlegen.
Wenn du die Standard-Formulare verwendest, bekommst du beim Absenden auch ein flackern (neuladen) der Seite. Mit etwas Javascript lässt sich das ebenfalls umgehen.
 
wüsstet du da einen Tipp. Ich bin erst seit ein Paar Wochen intensiver mit Javascript und Html am Arbeiten.
Da hatte ich schon mal eine Seite erstellt wobei nur die reinen Werte aus der SPS angezeigt werden mussten. Das hatte ich nach langem hin und her auch hin bekommen.
Nun was und wie ich das neuladen/Flackern mit dem reinen Javascript umgehen soll/kann weiß ich ehrlich gesagt momentan nicht wirklich.

Aber bist du der Meinung das es auch ohne Ajax etc. realisierbar ist ?
(was meinst du mit Standart-Formulare ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 . :-|
 
Zuletzt bearbeitet:
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.
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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
 
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 gemacht:(etwas 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 :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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)
 

Anhänge

  • pressed.png
    pressed.png
    4,4 KB · Aufrufe: 22
  • up3.png
    up3.png
    4,2 KB · Aufrufe: 21
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 ^^.
 
Zurück
Oben