Ich versuche es einmal mit der einfachsten Seite die ich habe. Hier wird ein String zur Webseite übertragen. Da kann man alle Arten von Daten einfügen.
Seite sieht so aus.
Der Code für den Datenbau in der SPS:
Code:
//-----------------
// WWW Daten senden
//-----------------
REGION WWW_Ausgang
// Umlaufpumpe dynamischer String
IF "DB_Time".Zyklus_Counter = 11 THEN
"DB_Küche_WW".WWW.Senden.strG := CONCAT(IN1 := INT_TO_STRING("DB_Küche_WW".Diff_Temp),
IN2 := '/',
IN3 := INT_TO_STRING(REAL_TO_INT("DB_Sensoren".Temp_Wasser_EG_Küche.RND1 * 10)),
IN4 := '/',
IN5 := INT_TO_STRING(REAL_TO_INT("DB_Sensoren".Temp_Boiler_oben.RND1 * 10)),
IN6 := '/',
IN7 := INT_TO_STRING(BOOL_TO_INT("DB_Küche_WW".Status.Automatik_Aktiv)),
IN8 := '/',
IN9 := INT_TO_STRING(BOOL_TO_INT("DB_Küche_WW".Ausgang.Ein)),
IN10 := '/',
IN11 := "DB_Küche_WW".Zeiten.Startzeit_1_Anzeige,
IN12 := '/',
IN13 := "DB_Küche_WW".Zeiten.Startzeit_2_Anzeige,
IN14 := '/',
IN15 := "DB_Küche_WW".Zeiten.Startzeit_3_Anzeige);
END_IF;
END_REGION
Bei jedem 11 Zyklus wird der String gebaut.
Der String besteht aus verschiedensten Variablen.
In der Übertragungs Seite "Read/Kueche_WW.htm" steht das drinnen: :="DB_Küche_WW".
WWW.Senden.strG: (liegt im Unterordner Read, wegen der Übersicht)
So schaut der String aus, wenn man ihn in direkt mit dem Browser anschaut: '+8/+198/+512/+0/+0/+8:+0/+17:+0/+0:+0' (Beispiel)
Der Code fürs Zerlegen in der Webseite in javascript
Code:
$(document).ready(function(){
$.ajaxSetup({ cache: false });
setInterval(function() {
$.get("Read/Kueche_WW.htm", function(result){
var Word = result.split("/");
$('#Diff_Temp').html(Word[0].replace(/('|+)/g, "")).Diff();
$('#Kueche_Temp_WW').html(Word[1].replace(/('|+)/g, "")/10).WW();
$('#Boiler_T_oben').html(Word[2].replace(/('|+)/g, "")/10).Boiler();
$('#Automatik_Aktiv').html(Word[3].replace(/('|+)/g, "")).Aktiviert();
$('#Ausgang_Ein').html(Word[4].replace(/('|+)/g, "")).Status();
$('#Startzeit1').html(Word[5].replace(/('|+)/g, "")).Startzeit('#Startzeit1');
$('#Startzeit2').html(Word[6].replace(/('|+)/g, "")).Startzeit('#Startzeit2');
$('#Startzeit3').html(Word[7].replace(/('|+)/g, "")).Startzeit('#Startzeit3');
});
},1000);
});
Codebeispiel für den HTML Teil in der Webseite von Startzeit1
Code:
<tr>
<td class="L_SW_rechts" id="Startzeit10">Startzeit 1</td>
<td></td>
<td class="Knopfi" style="width:50px" onclick="Zeit_Eingabe('2','Startzeit 1','#Startzeit1')"><label id="Startzeit1">00:00</td>
</tr>
Um Startzeit1 richtig anzuzeigen ist noch ein zusätzlches Gsetzal javascript erforderlich, welches durch den hinteren Teil ".Startzeit('#Startzeit1')" aufgerufen wird.
Auch für die anderen Anzeigen werden noch zusätzliche javascript Gsetzaln aufgerufen, die jetzt aber nicht dabei sind.
Code:
// Zeit Anzeige
jQuery.fn.Startzeit = function (Wert) {
Zeit_Anzeige = ($(this).html());
Zeit_Anzeige = Zeit_Anzeige.toString();
//Aufspaltung der Zeit
Zeit_Anzeige = Zeit_Anzeige.split(':');
//Entfernung der fuehrenden Nullen
Zeit_Anzeige[0] = parseInt(Zeit_Anzeige[0], 10); //Stunde
Zeit_Anzeige[1] = parseInt(Zeit_Anzeige[1], 10); //Minute
//eventuell fehlende 0er ergänzen
if (Zeit_Anzeige[0] < 10) {Zeit_Anzeige[0] = '0'.concat(Zeit_Anzeige[0]);}
if (Zeit_Anzeige[1] < 10) {Zeit_Anzeige[1] = '0'.concat(Zeit_Anzeige[1]);}
//Anzeige String bauen
Anzeige_Zeit = Zeit_Anzeige[0] + ':' + Zeit_Anzeige[1];
//schauen ob ein - dann Dunkelgrau färben - sonst hellgrau
if (($('#Automatik_Aktiv').html() == 'Aus') || (Anzeige_Zeit == '00:00')) {
var color = "#c0c0c0";// Hellgrau
var color1 = "#c0c0c0";
} else {
var color = "#333333";// Dunkelgrau
var color1 = "#000000";// Schwarz
}
// Schreiben
$(Wert + '0').css({"color": color1});
$(this).html(Anzeige_Zeit).css({"color": color, "font-weight": "bold"});
return ($(this));
}
----------------------------------------------------------------------
Wenn Du Seiten mit reinen Bool Werten hast, gibt es noch eine andere Methode.
Mit Gather lassen sich einfach bis zu 52 Bool Werte zu einem Word, DWord oder LWord für den Transfer zusammenfassen.
Fürs zerlegen muß man halt ein bisschen rechnen.
Das LWord funktioniert beim zerlegen mit JavaScript nur von Bit 0-51.
Der Rest darüber wird als Exponent und bit 63 als Vorzeichen interpretiert. Aber auch die Übertragung von 2 LWords geht perfekt.
Code:
// Lichter Status zusammenfassen
REGION Licht_Status_Bool
"DB_Licht_WWW".Senden.Array[1] := "DB_Licht_EG".Wz_Südfenster.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[2] := "DB_Licht_EG".Wz_Gehbereich.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[3] := "DB_Licht_EG".Wz_Jo.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[4] := "DB_Licht_EG".Wz_Ba.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[5] := "DB_Licht_EG".Wz_TV.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[6] := 0; //"DB_Licht_EG".Wz_Ap.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[7] := "DB_Licht_EG".Wz_Glasscheibe.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[8] := "DB_Licht_EG".Wz_Hauptlicht.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[9] := "DB_Schuko_EG".Wz_TV.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[10] := "DB_Schuko_EG".Wz.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[11] := "DB_Licht_EG".Küche_Spots.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[12] := "DB_Licht_EG".Küche_Arbeitsplatte.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[13] := "DB_Licht_EG".Küche_Tisch.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[14] := "DB_Licht_EG".Küche_Tisch.Ausgang.ein_unten;
"DB_Licht_WWW".Senden.Array[15] := "DB_Licht_EG".Vz.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[16] := "DB_Licht_EG".Oz.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[17] := "DB_Licht_EG".Sr.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[18] := "DB_Licht_EG".Bad_Decke.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[19] := "DB_Licht_EG".Bad_Alibert.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[20] := "DB_Licht_EG".WC.Ausgang.Licht_ein;
"DB_Licht_WWW".Senden.Array[21] := "DB_Licht_EG".Speis.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[22] := "DB_Licht_EG".Sz.Ausgang.ein_HL;
"DB_Licht_WWW".Senden.Array[23] := "DB_Licht_EG".Sz.Ausgang.ein_Sk_Jo;
"DB_Licht_WWW".Senden.Array[24] := "DB_Licht_EG".Sz.Ausgang.ein_Sk_Ba;
"DB_Licht_WWW".Senden.Array[25] := "DB_Schuko_EG".Sz.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[26] := "DB_Licht_Aussen".Nord.Ausgang.Ein_links;
"DB_Licht_WWW".Senden.Array[27] := "DB_Licht_Aussen".Ost.Ausgang.Ein;
"DB_Licht_WWW".Senden.Array[28] := "DB_Licht_Aussen".Süd.Ausgang.Ein;
"DB_Licht_WWW".Senden.Array[29] := "DB_Licht_Aussen".West.Ausgang.Ein;
"DB_Licht_WWW".Senden.Array[30] := "DB_Licht_EG".Wz_Ap.Ausgang.Licht_1;
"DB_Licht_WWW".Senden.Array[31] := "DB_Licht_EG".Wz_Ap.Ausgang.Licht_2;
"DB_Licht_WWW".Senden.Array[32] := "DB_Licht_EG".Wz_Ap.Ausgang.Licht_3;
"DB_Licht_WWW".Senden.Array[33] := "DB_Licht_KG".Ar_Mitte.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[34] := "DB_Licht_KG".Lr.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[35] := "DB_Licht_KG".Bad_Decke.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[36] := "DB_Licht_KG".Bad_Alibert.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[37] := "R063_Licht_KG_Vz";
"DB_Licht_WWW".Senden.Array[38] := "DB_Licht_KG".Ar_Werkbank.Ausgang.ein;
"DB_Licht_WWW".Senden.Array[39] := "DB_Licht_KG".Wz.Ausgang.Licht_1_ein;
"DB_Licht_WWW".Senden.Array[40] := "DB_Licht_KG".Wz.Ausgang.Licht_2_ein;
"DB_Licht_WWW".Senden.Array[41] := "DB_Licht_KG".Wz.Ausgang.Licht_3_ein;
"DB_Licht_WWW".Senden.Array[42] := "DB_Licht_KG".Speis.Ausgang.ein;
//Digitalwerte der Lichter in einer String Variablen zusammenfassen (Auswertung im Browser)
GATHER(IN := "DB_Licht_WWW".Senden.Array,
OUT => "DB_Licht_WWW".Senden.Array_Bool);
END_REGION
Der gesendete Wert schau im Browser so zb aus: 536871775
:="DB_Licht_WWW".Senden.Array_Bool:
In der Übertragungs Seite "Read/Licht.htm" - :="DB_Licht_WWW".Senden.Array_Bool: - steht das drinnen
Da schaut das Zerlegen des einenTeils schaut dann so aus:
Code:
$(document).ready(function(){
$.ajaxSetup({ cache: false });
setInterval(function() { // Abfrage Interval 1000msec
$.get("Read/Licht.htm", function(result){ // 64Bit Wert lesen aus "LichtRead1.htm"
var Word = result.split("|");
var DWord = Word[0];
for (var teiler = 2199023255552, idnr = 42; teiler >= 1; teiler /= 2, idnr--) {
if (DWord / teiler >= 1) {
$(".Lamp" + idnr).css({"visibility": "visible"});
DWord -= teiler;
} else {
$(".Lamp" + idnr).css({"visibility": "hidden"});
}
};
});
},1000);
});
Bitte beachte, ich bin kein Programmierer und versuche einfach so lange bis es lauft. Das heißt es kann
wesentlich einfacher oder anders funktionieren, aber so geht es.
Und leider hat er mich während dem eingeben abgemeldet, deswegen sind die Sonderzeichen jetzt falsch.