Wenn ich
kommt das hier:Code:console.log('#word ' + JSON.stringify(Word));
Code:#word ["\r\n\r\n\r\n +0","TestText","+0\r\n"]
So sieht es in der SPS aus:
aktuell der Code auf page-js.js:Code:"Plc2Web".testString := CONCAT(IN1 := INT_TO_STRING("Plc2Web".age), IN2 := '/', IN3 := 'TestText', IN4 := '/', IN5 := DINT_TO_STRING("Plc2Web".position));
read.htm:Code:$(document).ready(function(){ $.ajaxSetup({ cache: false }); setInterval(function() { $.get('./read.htm', function(result){ var Word = result.split("/"); $('#age').html(Word[1]); //$('#age').text(Word[0].replace(/('|+)/g, '')); console.log('#age ' + Word[0]); console.log('#age2 ' + Word[1]); console.log('#age text ' + $("#age").html()); }); },1000); });
index.htmlCode::="Plc2Web".testString:
In der console:Code::="Plc2Web".testString: <td id="age">k</td> <td id="ligthBarrier"></td>
Wie schon mal erwähnt, habe ich den testString nur nochmal eingefügt, um nachzuverfolgen, dass dieser auch gelesen werden kann.Code:#age +0 #age2 TestText #age text undefined
Wenn ich
kommt das hier:Code:console.log('#word ' + JSON.stringify(Word));
Code:#word ["\r\n\r\n\r\n +0","TestText","+0\r\n"]
Ja die ist momentan 0. Wenn ich sie verändere, wird es auch sofort in der Console angezeigt.
Ja ich verwende eine eigene Seite für JavaScript. Ist einfach übersichtlicher.
Hast du eine Idee, woran es hapert?
EDIT
Hier zeigt er mir auch nichts an. - undefindedCode:$('#age').html('hallohallo');
Kann das sein, dass es nicht weiß wo age ist? Also es meint, age wäre auf der read.htm?
Last edited by Malaus; 23.02.2021 at 14:02.
Als erstes würde ich jetzt einmal den String und das Zerlegen wirklich gleich machen, damit nicht irgendein Teil nicht richtig funktioniert.
Also 3 Daten senden und drei Daten aufteilen.
AnzeigeSeiteCode:$(document).ready(function(){ $.ajaxSetup({ cache: false }); setInterval(function() { $.get('./read.htm', function(result){ var Word = result.split("/"); $('#age').html(Word[0]); $('#age1').html(Word[1]); $('#age_text').html(Word[2]); }); },1000); });
Hast Du es schon auf einer Seite versucht?Code:<td id="age">k</td> <td id="age1">xy</td> <td id="age_text">age_text</td>
Ich verwende zwar auch eigene javascript Seiten für mehrfach verwendete Gsetzaln, aber die Abfrage der Daten ist immer auf der Anzeigeseite.
Mir ist momentan nicht klar, wie Du die Daten von der js Seite auf die Anzeigeseite übergibst.
mit dem hier:Mir ist momentan nicht klar, wie Du die Daten von der js Seite auf die Anzeigeseite übergibst.
Code:<scripttype="text/javascript"src="page-js.js"></script>
Ich habe inzwischen den Fehler gefunden. Der hat irgendein Problem mit den
Daher habe ich das mal entfernt und eine vorhandene Id benutzt:Code:<td id="age">k</td> <td id="ligthBarrier"></td>
Und siehe da, bei alarmONOFF, wird der Wert von Word[0] angezeigt.Code:... <div class="container1"> <table class="table table-dark table-hover table-sm"> <thead> <tr> <th scope="col">Alarm</th> <th scope="col"></th> <th scope="col"></th> </tr> </thead> <tbody> <tr> <th scope="row">Alarm Status</th> <td id="alarmONOFF"></td> <td> <form method="post" action=""> ...
Keine Ahnung, wieso es die von oben nicht annimmt bzw was da falsch ist. Aber es funktioniert nun.
DANKE!
Vieles vereinfachen würde es wenn du in der SPS einen String mit einem kompletten Javascript Objekt schreibst, dann musst du überhaupt nichts mehr zerlegen und kannst direkt mit dem Namen auf den Wert zugreifen.
Beispielsweise schreibst du in der SPS:
dann kannst du wenn du das als Json Objekt abfragst und das Ergebnis in eine Variable "daten" schreibst, mit daten["TempUnten"] auf den Wert zugreifen.Code:{ "TempOben":"12.3", "TempUnten":"13.3", "Durchfluss":"76", "phWert":"7.2", "TestText":"Hallo" }
Das hat den Nachteil, dass in der SPS einen relativ langer String zusammengebaut werden muss.
Hier könnte man aber Komfort und Geschwindigkeit kombinieren, in dem man in der SPS nur das Datenarray schreibt, aber als Javascript Array ["12.3", "45.6"] und das dann mit einem anderen Array mit den Namen was man z.B. fest hinterlegen kann kombiniert, und daraus dann ein Objekt macht.
Beispiel:
Da kann man vieles vereinfachen was die ganze Sache wartbarer und nachvollziehbarer macht. Denkbar wären auch fertige GUI Elemente die automatisch über Events mit den Variablenwerten aktualisiert werden. dat.gui ist z.B. so eine einfache Bibliothek mit dem sich einfache Elemente wie Eingabefelder, Schieberegler usw. einfach mit Variablen verbinden lassen. Das Design ist dort aber sehr festgelegt, weil das nur für kurze Tests gedacht war.Code:var values = ["12.3", "13.4", "76", "7.2", "Hallo"]; var names = ["TempOben", "TempUnten", "Durchfluss", "pHWert", "TestText"]; var daten = {}; for (let i = 0; i < values.length; i++) { daten[names[i]] = values[i]; } console.log(daten["TempOben"]);
Das als Json Datei anlegen? Weil direkt als Baustein kann ich das doch nicht anlegen.Beispielsweise schreibst du in der SPS:
Code:
{
"TempOben":"12.3",
"TempUnten":"13.3",
"Durchfluss":"76",
"phWert":"7.2",
"TestText":"Hallo" }
Bookmarks