• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

JS-Editor für WebServer

PCD

New member
Hallo Forum,

ich bin auf der Suche nach einem JS-Editor, mit dem ich die Bediener-Oberfläche eines Anlagenreglers umsetzen kann. Der "WebServer" ist eine SAIA PCD ... also eine SPS.

Die zu erstellenden Seiten müßen Diagramme, Schaltuhren oder Slider darstellen und sich aus der SPS die Daten aus den Registern/Flags ziehen ... oder natürlich beschreiben können.

Gibt es hierfür einen fertigen Editor ... oder gibt es jemanden der das in bezahlbarer und akzeptabler Zeit umsetzen kann (Raum FFM) ?

Würde mich über eine Antwort freuen.
 
Hallo jspit,

diese Web-Editoren reichen bei weitem nicht aus. Dieses Programm nennt sich bei SAIA S-Web und kann eine aktuelle Oberfläche, wie man es z.B. vom iPhone, iPad, PC usw. gewohnt ist, nicht umsetzen.

Das scheitert schon bei DropDown-Menüs mit variablem Inhalt, frei definierbare und optisch bedienbare Wochenschaltuhren, ansprechende Trendkurven usw.

Wir müssen hier vollkommen neu aufsetzen. Deswegen suche ich hierfür ein Tool.

Gruß PCD
 
Wird schwierig ein fertiges Tool zu finden, einmal bez. deiner Anforderungen die zum Teil in den Bereich der SCADA-Systeme reinragt und der Spezifik der PLC-Webserver, die oft durch einen reduzierten Funktionsumfang (fehlende serverseitige Sprache wie PHP, keine Datenbanken) gekennzeichnet sind.
 
Hallo jspit,

das ist mein Problem !
Gerade habe ich genau das erfahren was Du schreibst. Der Webserver unterstützt keine Serverseitige Sprache.

Ich brauche dort drauf mehrere Kalender (als Heizungsschaltuhr), dynamische und stellenweise Echtzeit-Trendkurven.

Was würdest Du vorschlagen, wie würdest Du soetwas umsetzen (möglichst ohne Applets) ?

Danke PCD
 
Hallo jspit,
Der Webserver unterstützt keine Serverseitige Sprache.
Ich brauche dort drauf mehrere Kalender (als Heizungsschaltuhr), dynamische und stellenweise Echtzeit-Trendkurven.
Was würdest Du vorschlagen, wie würdest Du soetwas umsetzen (möglichst ohne Applets) ?
Danke PCD
Da du deine Termine/Zeiten und die Loggerdaten (für Trendkurven) irgendwo lassen must, hast nur eine Chance die Daten in deiner SPS vorzuhalten.
Welche Unterstützung dir deine SPS dafür bietet, kann ich nicht einschätzen (kenne diese Teile nicht). Eventuell findest du in einem SPS-Forum dazu Rat.
Was die Darstellung dieser Daten im Browser angeht, da kann bzw. muß vieles mit Javascript realisiert werden, wenn auf Applets verzichtet werden soll.
 
Jetzt habe ich das nächste Problem:
Mit Sencha bin ich mit der Oberfläche ganz gut zurecht gekommen.

Jetzt habe ich das Problem dass die SPS lediglich auf Anfragen aus einer HTM/HTML-Datei reagiert ... jedoch nicht auf Anfragen aus einer *.js-Datei.
Nun muss ich aber ca. 1500 Register/Flags auslesen die ich ja nicht erst alle über eine HTM/HTML-Seite anfragen kann und dann an die *.js "übergeben kann.

Gibt es hier einen "Trick" wie man so eine Anfrage aus den *.js über die *.HTM/HTML schleusen kann, dass die SPS "denkt" dass die *.HTM/HTML angefragt hat ?

Nicht lachen ;-) ... bin kein Programmierer (ach) muss lediglich eine Lösung für dieses Problem finden.

Ich hoffe dass mir hier jemand weiter helfen kann.

Danke PCD
 
? Was meinst du mit einer "Anfrage aus einer HTM/HTML-Datei" im Gegensatz du einer "Anfrage aus einer *.js-Datei"? JS wird auch innerhalb einer HTML-Datei ausgeführt.
 
Das ist richtig.

Mit Sencha werden aber in der index.htm lediglich Links angelegt zu den*.js-Dateien. Das komplette Programm ist in den *.js enthalten.

Die Anfragen kommen dann also aus den *.js und nicht aus der *.html. Und mit diesen js-Anfragen kann die SPS nichts anfangen ... warum ist mir schleierhaft ... kenne mich mit Programmierungen leider nicht aus.

PCD
 
Zuletzt bearbeitet:
Die Webserver einer SPS verfügen meist über einen serverseitigen Mechanismus für HTML-Dateien, der es gestattet SPS-Daten einzubinden. Vergleichbar mit SSI (Server Side Includes). Da kann es gut sein, daß .js nicht geparst wird (dh. die spezielle Notation für SPS-Variablen wird dort ignoriert).
 
Inhalt der *.html
mit den Links zu den *.js und ganz am Ende der funktionierende aber natürlich statische Aufruf aus der Seite heraus:

<!DOCTYPE html>
<html>
<head>

<!-- Auto Generated with Ext Designer --><!-- Modifications to this file will be overwritten. -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SAIA_Test.xds</title>

<link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-3.2.1/resources/css/ext-all.css">

<script type="text/javascript" src="http://extjs.cachefly.net/ext-3.2.1/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="http://extjs.cachefly.net/ext-3.2.1/ext-all-debug.js"></script>
<script type="text/javascript" src="MyContainer.ui.js"></script>
<script type="text/javascript" src="MyContainer.js"></script>
<script type="text/javascript" src="xds_index.js"></script>
</head>
<body>
<br>
<input name="Out 16" value="%%PDP,,O16,d%">
</body>
</html>


Inhalt der *.js mit zwei verschiedenen aber leider nicht funktionierenden Versuchen des Aufrufs
/*
* File: MyContainer.ui.js
* Date: Wed Mar 30 2011 10:16:44 GMT+0200 (Mitteleuropäische Sommerzeit)
*
* This file was generated by Ext Designer version 1.1.1.
* http://www.sencha.com/products/designer/
*
* This file will be auto-generated each and everytime you export.
*
* Do NOT hand edit this file.
*/

MyContainerUi = Ext.extend(Ext.Container, {
width: 400,
height: 250,
layout: 'absolute',
initComponent: function() {
this.items = [
{
xtype: 'numberfield',
x: 130,
y: 50,
value: '%%PDP,,O16,B%',
name: 'Out 16',
readOnly: true,
decimalSeparator: ','
},
{
xtype: 'numberfield',
x: 130,
y: 90,
value: 'PDP,,O16,B',
name: 'Out 16',
readOnly: true,
decimalSeparator: ','
}
];
MyContainerUi.superclass.initComponent.call(this);
}
});

Prinzipiell kann die SPS wohl auch auf js reagieren, jedoch nur wenn es in die *.html-Seite integriert wurde.

Wie würde denn eine dynamische js-Programmierung aussehen wenn man dieses Register "PDP,,O16,B" aufrufen möchte ?
 
Zuletzt bearbeitet:
Wenn ich die diversen Notionen mal mit %% und mal ohne für deine Register sehe, hab ich so meine Zweifel. Ein Blick in deine SPS-Doku wäre nicht schlecht. Achte auch auf Gross/Kleinschreibung.
Probier einige dieser Aufrufe erstmal in einer kleinen HTML-Datei, dann lege sie in ein <script> innerhalb der HTML Datei und wenn das funktioniert kannst du es nochmal mit einer externen .js versuchen.
 
Wenn ich js programmieren könnte würde ich es tun :( Ich weiss aber nicht "wo oben und unten ist"

Deswegen meine Frage:
Wie würde denn eine dynamische js-Programmierung aussehen wenn man dieses Register "PDP,,O16,B" aufrufen möchte ?

Auszug aus dem Handbuch:
Zugriff auf PCD Daten von HTML Seiten
Wenn Sie auf Prozessdatenpunkte von HTML-Seiten zugreifen möchten, müssen diese Prozessdatenpunkte mit einem speziellem Prozessdatenpunktschlüssel (PDP key) in den HTML-Seiten definiert sein. PDP-Schlüssel können in HTML-Seiten oder in Kontrollfunktionen definiert sein.Ein PDP-Schlüssel sieht gleich aus, wie im vorigen Kapitel beschrieben, jedoch ist der TAG nun mit dem “%”-Zeichen umschlossen. Zwei Zeichen (%%) am Anfang des TAG und eines (%) am Ende.
● In HTML Seiten müssen PDP-Schlüssel durch das Zeichen % abgegrenzt sein. In Kontrollfunktionen werden keine Abgrenzungen (%) benötigt.
● Ιst der PDP-Schlüssel inkorrekt definiert, wird als Lese-Anweisung anstelle der Daten eine Fehlermeldung angezeigt. Bei einer Schreib-Anweisung, wird der Wert nicht zur PCD geschrieben.
● Der PDP-Schlüssel ist nur für Dateien mit der Endung *.html oder *.htm. Ist ein PDP Schlüssel in einem anderen Dateityp platziert, wird er ignoriert und kein Wert angegeben.
● Die Elementinformation im PDP Schlüssel ist nicht von der Schreibweise abhän- gig, der PDP selbst muss jedoch in Grossbuchstaben geschrieben sein.
Beispiele:
● %%PDP,,I16,B%, gleich adressiert Eingang “I16” und
wie %%PDP,,I16,Y% ist im Format binär
● %%PDP,,R300,F% adressiert Register 300, Format ist Fliesskomma
● %%PDP,,DB10.20,d% adressiert DB10, Element 20, Format ist dezimal

Zugriffssymbole in Tags
Es ist möglich in den Tags PG5 Symbole zu verwenden, jedoch nur für HTML Seiten, für die Funktionen der Variablen Liste ist dies nicht möglich.
Mit dem Web-Builder und dem PG5-Compiler ist es möglich, die Symbole durch die absolute Adresse der Elemente zu ersetzen. Die einzige Bedingung ist, dass die Symbole im PG5 als Global deklariert sind. Dazu kann in den Tags der Element-Bereich und die Adresse durch Symbole ersetzt werden. Um ein Symbol als solches zu identifizieren, muss ein “&” Zeichen vorangestellt werden.
Beispiele:
Register 1000 R1000 Motor_1_temperature
Eingang 0 I0 Motor_1_alarm
Timer 50 T50 Motor_1_time_on
Wird dies nun auf einer HTML Seite angewandt, sieht der Tag folgendermassen aus:
Element Normaler Tag Tag mit Symbol
Register 1000 %%PDP,,R1000,D% %%PDP,,&Motor_1_temperature,D%
Eingang 0 %%PDP,,I0,Y% %%PDP,,&Motor_1_alarm,B%
Timer 50 %%PDP,,T50,T% %%PDP,,&Motor_1_time_on,T%
Es ist auch möglich eine Reihe von Eingängen zu bestimmen, z.B. Lesen der Eingänge 0 bis 7:
Eingang 0 bis 7 %%PDP,,I0/8,Y% %%PDP,,&Motor_1_alarm/8,Y%
 
Zuletzt bearbeitet:
Ich kann dir jetzt schlecht aus deinem Handbuch vorlesen, da musst du schon allein durch ;)
So etwas Einfaches würde ich testen, bevor ich mich an Größeres ranmache.
(Ich weiss nicht I16 bei dir verfügbar ist)
Code:
<html>
<head>
<script type="text/javascript">
  var i1= %%PDP,,I16,Y%;
  alert(i1);
</script>
</head>
</html>
 
Mit var i1= "%%PDP,,I16,Y%"; solltest du das gleiche Ergebis bekommen. Wenn du die 2 Zeilen in ein .js packst und per script src=.. aufrufst kann du sehen, ob .js auch geparst wird. Wenn nicht, zeigt alert dir %%PDP,,I16,Y%.
 
Beim Programmieren kommt es darauf an genau hizusehen! Beim #18 hab ich %%PDP,,O16,B% dafür in "" gesetzt. Ohne dürfte es einen Fehler geben, schau mal in die Fehlerkonsole.
 
Zurück
Oben