# Function mit in VBScript mit WinCC flexible



## PeterGötz (31 März 2007)

Hallo zusammen,

ich sitze schon ein ganz Zeit (6Stunden) vor meiner ersten VB-Funktion . Bislang hab ich nur Sub´s geschrieben. Die Syntax-Prüfung von WinCC flexible (für ein TP270) behauptet das Script liefere keinen Rückgabewert, obwohl es als Function definiert ist.

Function Nutzdaten (Komplettdaten) String
. Dim Nutzdatenlaenge
. Nutzdatenlaenge = InStr(1, Komplettdaten, "^FS", 1) ' Long-Format
. Nutzdaten = Left(Komplettdaten, Nutzdatenlaenge-1)
End Function

Das Script ermittelt innerhalb eines Strings über einen Mustervergleich das
erste ^FS Zeichen und gibt die Stellung an (Nutzdatenlänge).
Dann wird einfach alles hinter dem Suchmuster mit der Left-Function abgeschnitten.
Ich gehe davon aus, das "Nutzdaten" mein Rückgabewert ist und
"Komplettdaten" mein Übergabewert. Scheinbar liege ich falsch.
Sieht jemand meinen Unwissen. Als Sub läuft das ganze auch, aber nicht als Funktion. ich muss die Prüfung an 24 Eingabefeldern durchführen, daher will ich dies als Funktion progammieren.

Folgendes Beispielscript der Siemens-Hilfe weist genau denselben syntaktischen Fehler auf.

Function Celsius(GradF)
     Celsius = (GradF - 32) * 5 / 9
End Function

Liefert keinen Wert zurück, obwohl als Function definiert, behauptet der Interpreter von WinCC.

Gruß Peter Götz


----------



## zotos (31 März 2007)

Ich kenne ja VBS nicht aber mir würden zwei Sachen Einfallen die Du versuchen könntest.

1. Dem Rückgabewert String mal eine Länge zuordnen

oder.

2. Der Funktion keinen Rückgabewert zuordnen das habe ich gerade beim Suchen oft gesehen.


PS: zu 2. das hat mich stark verwundert


----------



## PeterGötz (31 März 2007)

zotos schrieb:


> Ich kenne ja VBS nicht aber mir würden zwei Sachen Einfallen die Du versuchen könntest.
> 
> 1. Dem Rückgabewert String mal eine Länge zuordnen
> 
> ...


 

Danke, beides blieb ohne Erfolg. Gruß Peter Götz


----------



## Grollmus (2 April 2007)

PeterGötz schrieb:


> Folgendes Beispielscript der Siemens-Hilfe weist genau denselben syntaktischen Fehler auf.
> 
> Function Celsius(GradF)
> Celsius = (GradF - 32) * 5 / 9
> ...


 
Hallo Herr Götz,

ich hab das Beispiel mal ausprobiert, es funktioniert.

Vorgehensweise in WinCC flexible 2005:

- neues Skript anlegen
- Name: "Celsius"
- Typ: Function
- Paramter: "GradF" -> Hinzufügen
- In der Funktion: Celsius= (GradF - 32) * 5 / 9

Aufruf der Fuktion:
Schaltfläche -> Ereignis klicken
Benutzerscript "Celsius" auswählen
Rückgabwert: Name eines Textfeldes angeben
GradF: habe ich der einfachheithalber einen festen Wert angegeben

Runtime mit Simulator gestraten -> Beim Klick auf die Schaltfläche wir der Rückgabwert der Funktion im Textfeld angezeigt.


----------

