Q-108.141

Änderung der Value-Wert-Darstellung im Archive »State«

Frage
Problem Von einem an der analogen Beckhoff Eingangsklemme (Bezeichnung »KL3204«) angeschlossenen Temperaturfühler (Bezeichnung »PT100«) wird der Temperatur-Wert in das Archive »State« beispielsweise wie folgt ausgegeben: »W287«.
Produkt Automation
Priorität keine
Effekt harmlos
Datum 2.06.2006

Antwort
Es besteht die Möglichkeit, die von Beckhoff an das Archive »State« übergebenen analogen Werte in der Darstellung zu optimieren. Bei Nutzung des folgenden JavaScript wird der im Beispiel genannte Wert bzw. die Anzeige »W287« mit »28.70« überschrieben. Öffnen Sie im David InfoCenter das Archive »Scripte« über »Archive -> System -> DvISE -> Automation« und erstellen Sie ein neues Script mit dem folgenden Inhalt:

var value = m_rxsr.value;
value = parseFloat(value.substr(1,value.length));
value *= 1;
value /= 10;
m_rxsr.value = value;

Alternativ kann auch die nachfolgende Befehlsfolge verwendet werden:

m_rxsr.value = parseFloat(m_rxsr.value.substr(1,m_rxsr.value.length))*1/10;

Speichern Sie das JavaScript unter einem beliebigen Namen ab, klicken mit der rechten Maustaste auf das Archive »State« und wählen aus dem Kontextmenü »Regeln...«. Erstellen Sie eine neue Regel unter Berücksichtigung des entsprechend zu ändernden State-Eintrags - die Bus-Adresse des Temperaturfühlers - und wählen Sie auf der Registerkarte »Aktion« unter »Ausführen eines Scripts« das soeben erstellte JavaScript aus. Schließen Sie dann die Erstellung der Regel ab.

Befehl Erläuterung
var value = m_rxsr.value;Der Variablen »value« wird der Wert der über die Regel aufgerufenen Adresse zugewiesen. In diesem Fall der Wert des Temperaturfühlers, z.B. »W287«.
value = parseFloat(value.substr(1,value.length));Der Befehl »parseFloat« wandelt eine zu übergebende Zeichenkette in eine Zahl um und gibt diese als numerischen Wert zurück. Aus der Zeichenkette »value« wird dann mit dem Befehl »substr« eine Teilzeichenkette ab einer bestimmten Zeichenposition (ab der ersten Position, hier: »2«) und mit einer bestimmten Länge (hier: bis zum Ende) extrahiert.
value *= 1;Der Wert »value« wird mit »1« multipliziert...
value /= 10;...und anschließend durch »10« dividiert.
m_rxsr.value = value;Der ursprüngliche Wert im Archive »State« wird mit dem soeben errechneten Wert »value« überschrieben.

Hinweis:
Ausführliche Informationen zum Thema »Automation Regeln unter Verwendung von JavaScript« erhalten Sie im
KnowledgeBase Artikel Q-107.941.