Siemens AWL mit Javascript / PHP abfragen

  • Hallo Community,


    zu meinem Thema habe ich schon versucht überall zu suchen, aber bisher nichts passendes gefunden.


    Folgende Problematik:


    Ich habe als Haussteuerung eine Siemens S7 1200er mit Webserver. Nun kann dieser Webserver nur wenige Sprachen und ist durch die Speicherkarte sehr begrenzt. Nun habe ich innerhalb meines Netzwerkes einen weiteren WebServer mit Appache und PHP eingerichtet.



    Auf meinem Webserver der Siemens SPS habe nun nur noch ein Dokument, in welche die AWL Variabeln abgefragt werden:



    Nun kann ich auf meinem anderen Webserver diese Variabeln auch triggern / bestätigen:




    Das funktioniert nun auch. Aber ist eher eine unbequeme Art.
    Meine Frage ist, ob ich mithilfe von Javascript diese Variabeln schöner abfragen kann, zwischenspeichern kann und per Funktion betätigen kann. Ich habe auch habe zum Beispiel Temperaturwerte, die ich gerne abfragen möchte.
    Ich hoffe ich habe mich verständlichen ausgedrückt :-).


    Schön wäre, es beuqem per jQuery abzusenden. Muss bestimmt irgendwie funktionieren. PHP- und Javascrip-Fähigkeiten sind vorhanden.


    Würde mich über Ratschläge sehr freuen, denke auch, dass ich mit diesem Problem nicht alleine da stehe.

  • In jedem HTMl-Dokument muss man vorher diese AWL's deklarieren und dann innerhalb auch abfragen ... zum Beispiel innerhalb eines Formulars. Aber nun möchte ich diese ja von einem anderem WebServer anfordern. Der Webserver der Siemens kann leider kein PHP :(

  • Jo die Links und Tuts funktioniren alle für das Arbeiten mit dem Siemen WebServer. Den Server kann man leider kein PHP beibringen. Sry, verschrieben - keine AWL's sondern meine AWP :) quasi die Variabeln, die ich für das Ansteuern verwenden kann, damit kommuniziere ich mit der SPS. Diese sind innerhalb des Step7-Programms meine "Schnitstelle"
    Sieht dann ungefähr so aus... funktioniert auch


    hier eine Beispielseite:



    und die PHP Funktion:


  • joar :)
    aber ich habe zu jedem Schalter noch einen Zustand.


    vielleicht muss ich diese noch


    <!-- AWP_In_Variable Name='"webdata".triangleWave' -->:="webdata".triangleWave:


    so ändern und dann per Ajax abfragen. Werde mal den restlichen Tag das Dokument anpassen und dann per Ajax / jQuery versuchen dieses aufzurufen. Möchte noch sehen, ob ich erfolgreich zum Beispiel eine Lampe angeschaltet haben. Gerade wenn ich mich von außen per VPN-Tunnel einwähle.
    Danke erstmal!

  • Vollständig erschließt sich mir das ganze noch nicht, aber es interessiert mich. Ich glaube, ich habe verstanden, wie Du die Variablen mit einem Formular steuern kannst. Aber wie fragst Du sie ab? Du schreibst: "ob ich mithilfe von Javascript diese Variabeln schöner abfragen kann", d. h. anscheinend funktioniert es ja schon irgendwie. Vielleicht kannst Du versuchen, die Seite mit jQuery-Load in ein HTML-Tag zu laden und dessen Inhalt zu parsen. Mir scheint, in deinem letzten Posting hast Du so etwas schon angedeutet.

  • Das hat mich auch gewundert, aber so wie es mir erscheint muss man eig. die keys wissen und die value kann man nur bestimmen? oder wie zur hölle kommt man an die value?!?!? :D

  • Guten Morgen,


    leider ist mein Versuch fehl geschlagen. Muss einen anderen Weg finden.



    "Vollständig erschließt sich mir das ganze noch nicht, aber es interessiert mich. Ich glaube, ich habe verstanden, wie Du die Variablen mit einem Formular steuern kannst. Aber wie fragst Du sie ab?" <-- genau das ist mein Problem - Steuerung funktioniert, aber keine Anzeige vom jeweiligen Zustand.


    Ich habe gestern versucht, hinter jeder "Zustands"-Variable von dieser Form:

    HTML
    <!-- AWP_In_Variable Name='"webdata".triangleWave' -->


    in diese zu bringen:

    HTML
    <!-- AWP_In_Variable Name='"webdata".triangleWave' -->:="webdata".triangleWave:


    und dann gemäß Beispiel, diese abzufragen, aber hat dies auf meinem externen Web-Server nicht gefunzt.


    Aber vielleicht kann man darüber etwas anfangen:
    Wenn ich nun die HTML-Datei auf dem Siemens-Webserver öffne, welche diese geänderten AWP-Abfragen beinhaltet, erscheint im Browser folgendes:


    "1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0"


    Also visualisiert er mir für jeden Zustand diese im Browser. Vielleicht führt dort ein Weg ran.


    Ich hoffe, ihr versteht mich :)

  • Ne nicht so wirklich verstenden, aber ich glaube das die 0 und die 1 für den jeweiligen zustand sind oder?
    Schaffst du es die html datei etwas nach diesem Muster auszugeben zu lassen (auf deinem Simens Server)

    Code
    "key": value, "key": value


    key steht immer für den variablen namen und value eben für den wert der Variable.. wenn du das packst sollte es gehen.. :)

  • Hallo,


    ja, ich denke, dass ich das hinbekomme. Wie würde ich diese Infos / Daten dann weiter verarbeiten?


    Wäre dann super, diese Werte dann zyklisch abfragen zu können.

  • Naja, im endeffekt wäre folgendes format(JSON) dann brauchbar.. (das darf auch alles in einer Zeile stehen, nur zur übersicht hier mal mit zeilenumbrüchen und einrückung)

    Code
    {
      "steckdose_1": 0,
      "steckdose_2": 1,
      "variable_4": "middle"
    }


    Wenn du soweit bist, erklär ich es dir weiter

  • jo, in der Form habe ich es gebracht. Json habe ich bisher noch nicht benötigt. Bisher direkt per Prozeduren und Abfragen auf Firebird-Datenbanken gearbeitet.

  • Speicher diese Datei mal auf deinen Server (Webserver) und rufe sie mit dem Browser auf (IP im Skript richtig eintragen)

  • "XMLHttpRequest cannot load http://192.168.???.???/awp/Haus/index3.html. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access."


    scheint Probleme mit den Zugriffsrechten zu haben :( ...


    habe mal bei dem Aufruf noch ein "dataType: 'jsonp'," dazugefügt. Arbeite mich voran^^


    so sieht meine Ausgabe derzeit aus, wenn ich "http://192.168.???.???/awp/Haus/index3.html" aufrufe:


    { "Test1": 1, "Test2": 0, "Test3": 0 }
    --> sollte ja passen.
    hab jetzt wohl nur noch ein Syntax-Problem.
    "caught SyntaxError: Unexpected token :"


    { "Test1" : 1, "Test2" : 0, "Test3" : 0 }

  • So gehts... jetzt muss ich mal mich damit beschäftigen, dass für meine Seiten anzupassen:


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!