Wago steuerung per HTML und JavaScript?

Hallo Leute,
ich habe mir auch eine Wago 750-841 und eine 750-342. Von den Anschlüssen her passt alles. Nur jetzt bin ich dabei mir zu überlegen wie ich das mit dem UI realisiere, jedoch ohne einen extra Rechner. Bis jetzt habe ich nur Steuermöglichkeiten gefunden wenn noch ein Rechner im Spiel ist.

Meine Überlegung ist, dass ich statische HTML Seiten baue und dann über Ajax Daten von der Wago lese oder sende. Wenn also jemand auf einen Button klickt würde ich einen HTTP Request an die Wago senden. Die Wago soll dann anhand der empfangenen Daten eine bestimmte Aktion ausführen.
Um die angezeigten Elemente aktuell zu halten würde ich entsprechend einen Request an die Wago senden und diese soll mir dann den Staus der Elemente zurück geben.

Ich habe mir entsprechend das Java Applet angeschaut und dort wird es genau so gemacht, nur eben mit Java. Ich denke ich würde es auch hin bekommen die Daten, die das Applet sendet zu simulieren, aber dazu müsste ich immer erst ein UI für das Applet bauen und schauen was gesendet wird (im Moment machen nicht alle Details der Daten Sinn). Dann könnte ich die Requests per JavaScript nachbauen.

Meine Fragen sind:

[ul]
[li]Weiß jemand nach welchem Prinzip das Applet Daten aufbaut und an die Wago sendet? Die Daten sehen ungefähr so |1|1|563|0| (das ist an was ich mich gerade erinnere).
[/li][li]Fällt jemand von euch noch eine Möglichkeit ein, wie ich die Wago noch ohne einen extra Rechner steuern könnte?
[/li][li]Kann ich ein eigenes/anderes Wago Programm schreiben, dass auf Requests reagiert? In diesem könnte ich selbst definieren welche Daten ich senden muss und welche nicht. Dabei habe ich schon die Bibliothek WagoLibEthernet_01.lib gefunden, aber ich glaube nicht, dass mir diese wirklich helfen kann.
[/li][/ul]

Ich bin für alle Vorschläge dankbar.

Viele Grüße,

zambot

Hi zambot,

ich hab mir dazu auch schon mal Gedanken gemacht. das ist aber bis dato nur theoretischer Natur, da ich noch nicht dazugekommen bin.

Du musst nicht das Applet nachbauen. Es gibt f.d. Wago sog SSI (Server Side Includes). Such mal bei Wago danach. Damit kannst Du Ein- und Ausgaben per normaler Website machen - und besonders Ajax-freundlich dir auch die Daten per XML hin und herschieben.

Gruss
Chris

Das wäre ja mal geil :rolleyes:

Hallo Zambot,

da bin ich sofort dabei. Dieser Link dürfte Dir weiter helfen: CoDeSys :: Thema anzeigen - NORMALE Webseite als Visu

Wie können wir das gemeinsam angehen? Ich werde heute abend mal versuchen per SSI die Wago anzusprechen.

Grüße
Cali

Mein kleiner Beitrag dazu. (siehe Anhang).
wäre durchaus an einem „echten“ Beispiel interessiert.
V.a. einem mit schickem Design :wink:

WAGO SSI Samples.zip (32.5 KB)

Hier ein Ajax-Link Galileo Computing :: JavaScript und AJAX – 18 AJAX .

Im Anhang noch ein „Hello World“-Ajax Beispiel.

Bilder für die Visu sollten wir auf einem Webspace ablegen, da der Speicherplatz der Wago begrenzt ist und damit die Seite auch von außerhalb darstellbar bleibt. Webspace hätte ich.

Ich habe zwar eine Visu, will aber nicht den Rechner dafür ständig laufen haben. Das bringt mich dann wieder dazu das ich die Werte irgendwo speichern muß. Dann wären wir auch wieder bei to-pass oder dem Speichern in einer DB. Soll das auch Teil dieses Projektes werden? Ein Webservice könnte ja die Werte zyklisch auslesen und in eine DB schreiben.

Cali

ajax.zip (1.12 KB)

Hallo Leute,
ihr seid ja klasse :), so viel Resonanz habe ich nicht erwartet. Danke auch für die Dateien. Ich bin dabei mir diese Anzuschauen.
Auf jeden Fall freut es mich, dass es die Includes gibt. Damit kann man fast alles realisieren. Man muss sich nur mit der Syntax vertraut machen. Da ich noch ein Wago Neuling bin, werde ich etwas Zeit dafür brauchen.

Eine Idee wie man das UI aufbauen kann ist:

  1. [li]Man muss die SSI Dateien mit HTML entwerfen (Der Prototyp kann man aus den Beispielen bauen)
    [/li][li]Einen Ajax Wrapper
    [/li]Dieser Wrapper würde nur dafür da sein, Ajax Anfragen zu verarbeiten und die entsprechenden Informationen an den Client zurück zusenden.

Ich würde mich sehr gerne gleich an die Arbeit machen, aber leider komme ich diese Woche nicht mehr dazu.

@Cali: Für Ajax brauchst du nicht auf der grünen Wiese anfangen. Benutze am Besten die JS Bibliothek jquery (jQuery: The Write Less, Do More, JavaScript Library). Damit ersparst du dir wirklich viel Arbeit :smiley:

Ich versuche mich mal nächste Woche dran.

Viele Grüße,

zambot

Nachdem ich mit SSI ein bisschen gespielt habe, weiss ich wieder warum ich meine Visu mit ModbusTCP realisiert habe. Die Aufrufe sind echt langsam. Hoffe das es für meine mobile Anwendung schnell genug ist, da pro Seite immer nur ein paar I/Os ausgelesen werden müssen.
Was sind Eure Erfahrungen?
Kann mir noch jemand etwas vorgekautes zu Ajax liefern?

Was SSI-mäßig auch geht ist z.B.
http://WAGOIP/READPI?ADR=IX0.0&FORMAT1=%x
das liefert den Zustand des ersten digitalen Eingangs. Cool kannte ich gar nicht.

Grüße
Cali

So, damit der Thread nicht einschläft mal ein bisschen Code. Klar im Code passiert noch nicht viel, aber ich dachte mir das hier nun jeder seine Verbesserungen einbringen kann. Einer kann sich ja am Design (CSS) und ein anderer am Ajax versuchen.
Im rot markierten Bereich einfach den auszulesenden Ausgang eintragen, fertig. Schon sieht man ob z.B. das Licht eingeschaltet ist (benötigt noch reload).

Achso, die Datei muss mit Änderung .ssi auf der Wago gespeichert werden!

Eure mitarbeit wäre toll.

<html>
<body>
<body bgcolor="#000000" text="#C0C0C0">
  <H2>
     Licht
  </H2>
  

<br><br>

    
  <script language="JavaScript">
	document.write("<table> <tr>");
	document.write('<td><a href="">Licht rechts</a></td>');
	document.write("<td>");
	  if (<!--#READPI ADR=QX4.5&FORMAT=%X-->==1){
		document.write('<td style="background-color:#008000"> ein');
		}else{
		document.write('<td style="background-color:#800000"> aus');
		}
	document.write("</td>");
	document.write("</tr>");
	document.write('<td style="background-color:#313131">Licht links:</td>');
	document.write("<td>");
	  if (<!--#READPI ADR=QX4.6&FORMAT=%X-->==1){
		document.write('<td style="background-color:#008000"> ein');
		}else{
		document.write('<td style="background-color:#800000"> aus');
		}
	document.write("</tr></table>");
	
		
  </script>

</body>
</html>

Was mir noch Probleme bereitet, ist das setzten der Modbusvariablen. Da ich diese auf mit auf eine Schalterfunktion gelegt habe, benötige ich einen Impuls. D.h. auf 1 setzten ,300 ms warten und wieder auf 0 setzten. Doch wenn ich das mittels writepi mache verliere ich die Verbindung zur Wago.

Grüße
Cali

Hallo,

ich hoffe ich verstoße nicht gleich in meinem ersten Beitrag gegen alle Regeln.
Ich werde folgend auf ein anderes Forum verlinken, ist dies nicht erwünscht bitte den Link entfernen und mir dies mitteilen.

Warum ich dies tue? Ich werde nur in diesem Forum den Beitrag bis zur „Vollendung“ pflegen und dann in allen Foren in denen ich auf diesen hingewiesen habe anschließend das Ergebnis präsentieren.
Ich bin nicht in der Lage, und hege auch nicht die Lust 5 gleiche Beiträge zu erstellen und alle auf dem gleichen Stand halten zu müssen.

Ich habe zusammen mit einem Freund ein Beispiel erstellt in dem mittels Javascript Variablen von der SPS gelesen, und auch geschrieben werden können. Wir sind noch in der Beta-Phase. Mal schauen, vielleicht kann ich während des Urlaubs weitere Ergebnisse präsentieren.

Hier ist der Link:

SPS@home :: Thema anzeigen - Visualisierung HTML Java für die Wago 750 841

Zum Thema zurücksetzen nach Writepi:

ich schreibe durch das senden einmal einen Merker, z.B. Merker 200.0 und setze ihn in der letzten Zeile des PLC_PRG auf False. Somit ist dieser merker nur einen Zyklus aktiv, und steht allen aufgerufenen Instanzen und PRGs des PLC_PRG zur verfügung. Werden mehrere Tasks verwendet muss das Rücksetzen an geeigneter Stelle passieren, nicht das das PLC_PRG schneller ist und das Programm das Signal nicht mitbekommt.

MfG

Marcel

Hallo Marcel,

finde ich wirklich Klasse - vielen Dank dass Du uns deinen Code zur Verfügung stellst! Habe leider im Moment keine Zeit es auszuprobieren, freue mich aber drauf wenn ich die Zeit habe. :slight_smile:

Schöne Grüße
Daniel

Aus irgendeinem Grund wird mein neuer Account in dem anderen Forum nicht freigeschaltet. Deshalb schreibe ich nochmal hier.

Beim entwickeln und testen ist mir nun schon zum wiederholten mal die Wago neu gestartet. Habt Ihr auch dieses Problem. Mit diesem Problem ist das SSI für mich nicht zu gebrauchen.
Meine Firmware ist die: 02.06.04 (11)

Grüße
Cali

Hallo,

ich habe FW14, mir ist es noch nie passiert das sie neugestartet ist.

Wäre schön wenn du mal genauer beschreiben könntest wann das passiert,
die Wago macht das eigtl. nur wenn sie auf nicht vorhandene Variablen schreibt, wenn du z.B. im Programm WRITEPI M200.0 schreibst, aber in der Wago nicht verwendest, dann schmiert se ab… oder bei READPI vllt. auch.

Guck bitte ob das bei dir der Fall ist.

MfG

Marcel

hatte am anfang auch die 11er firmware drauf, zickte teilweise etwas rum, schreib an den wago support das du eine neue brauchst, hab dann die 17er bekommen, seit dem funktionierts super (lass dir auch gleich ein neues target für codesys mitschicken, das wurde ab firmware 12 geändert so viel ich weis)

Christian

Hi, ist jetzt zwar etwas off-topic: Kann man die neue FW selber flashen oder muss man die Wago dazu einschicken? Gibts evtl. ein ChangeLog was neu ist in den Versionen?

Gruss
Chris

Hallo,

du kannst selber flashen.

die Neuste ist die FW17! Du kannst den wago support anmailen, dann bekommst du die neue FW und das Tool mit dem du sie installierst.

Denk aber daran das du nur mit dem Programmierkabel flashen kannst, nicht aber mit den Netzwerkkabel.

MfG

Marcel

Das hatte ich schon befürchtet.

Das letzte Abenteuer in der heutigen Zeit! Firmwareupdate. :eek:

Wenn das schief geht:

  • kein Licht
  • keine Heizung
  • nichts mehr zu lachen (Frau)…

Vielleicht sollte ich bis zum Frühjahr warten, dann sind die Auswirkungen nicht ganz so schlimm. :smiley:

Grüße
Cali

Das Firmwareupdate sollte kein Problem darstellen, wenn du es mit dem seriellen bzw. USB- Progamierkabel machst.
Die neue Firmware kannst dir auch hier herunterladen. Ebenso eine Anleitung und die neuen Targets.

Gruß ColdIce

Stimmt ich brauche ja auch ein neues Target. Ist dabei ein Problem mit meinem Programm und den Bibliotheken (Wago & Oscat) zu erwarten?

Grüße
Cali

soweit mir bekannt ist nicht …