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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 42

Thema: WEB2PLC Seitenteile neu Laden

  1. #1
    Registriert seit
    09.01.2015
    Beiträge
    28
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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 ?
    Angehängte Dateien Angehängte Dateien
    Geändert von spikey (09.01.2015 um 11:45 Uhr)
    Zitieren Zitieren WEB2PLC Seitenteile neu Laden  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Du könntest deine Variablen per XhtmlHttpRequest (aka Ajax) aktualisieren. Dann benötigst du eigentlich auch keine iframes.
    Kleines abgespecktes Beispiel:
    S7-1200 Webserver - AJAX

    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.

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

    spikey (12.01.2015)

  4. #3
    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

    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

  5. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    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.
    Geändert von Thomas_v2.1 (10.01.2015 um 22:54 Uhr)

  6. #5
    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

    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

  7. #6
    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 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 ?
    Geändert von spikey (12.01.2015 um 10:51 Uhr)

  8. #7
    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

    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='';
    }

  9. #8
    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

    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;
    cursorointer;
    }
    </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>

  10. #9
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    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.

  11. #10
    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
    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 ?

Ä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
  •