Die Aktualisierungszeit des AJAX beträgt 500ms ... wie lange der Server braucht um die Daten zu liefern weiß ich noch nicht... sieht aber so aus als hätte ich im worstcase mehr als 1Sek.
Ich versuche demnächst das ganze insichtlich Aktualisierungszeit zu optimieren. Keine Ahnung welche Zeiten da möglich sind!
Sollte es nicht unter 500ms gehen, wird das ganze wohl nur zu Visu-Zwecken wie Statistiken einsetzbar sein und nicht zum Bedienen.
Außerdem muss ich erstmal das PHP-Script von Thomas verstehen (wie kann man da einzelne bits lesen?) Thomas gibt es da evtl. was zum nachlesen?
Hallo,
um einzelne Bits zu lesen musst du aus einem gelesenen Byte das entsprechende Bit ausmaskieren. Am einfachsten machst du dir eine eigene ReadBit Methode welche Readbyte aufruft und das entsprechende Bit ausmaskiert. Es gibt zwar im S7-Protokoll extra Funktionen um einzelne Bits zu lesen, aber das Lesen eines einzelnen Bits "kostet" (im Sinne von Bandbreite und Zeit) genausoviel wie das Lesen eines ganzen Bytes.
Bei der Performance gibt es ein grundsätzliches Problem wenn du das Skript auf einem Webserver laufen lässt, weil es bei jeder neuen Anfrage erst die Verbindung zu SPS aufbauen muss (TCP Connect, S7 Verbindungsaufbau) und dann erst Daten lesen kann.
Eigentlich würde es reichen die Verbindung nur einmalig zu öffnen und dann offen zu halten, dann geht das Lesen wesentlich schneller vonstatten.
Vielleicht ist es ja doch irgendwie möglich im Kontext des Webservers quasi einen Hintergrunddienst laufen zu lassen. Wenn das möglich ist, würde ich nämlich folgendermaßen vorgehen:
Auf dem Webserver liegt eine Konfigurationsdatei für den S7-Server, mit den Daten Name, Datentyp, Adresse, Pollrate.
Z.B.
Messwert_1, REAL, DB1.DBD0, 1s
Der Server baut dann einmalig die Verbindung zur SPS auf und pollt im entsprechenden Zyklus die Daten und legt sie in einem internen Speicher ab.
Wenn dann ein XML Request z:b. für die Variable "Messwert_1" kommt, gibt der Server die Daten aus dem internen Speicher zurück (evtl. noch mit einem Statuswert). So kommen die Daten ohne große Wartezeit zurück.
Vom Prinzip her also wie ein einfacher OPC-XML Server.