Probleme mit VB-Script auf Panel

Januar

Level-2
Beiträge
238
Reaktionspunkte
52
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag.
Zunächst einmal möcht eich um Entschuldigung bitten, falls dies der falsche Zweig für dieses Problem ist. Ich bin noch nicht lange hier...

Zum Problem:
Ich hab ein VB-Script geschrieben, mit dessen Hilfe eine Variable hochgezählt wird, die die Animation eines Objektes steuert. Als Zusatzfunktion soll eine Hilfsvariable (bool) steuern, ob auf halbem Wege eine Pause eingelegt wird. Die Übersetzung des Scriptes gibt keine Probleme, allerdings kann ich auf meinem Panel (TP900 Comfort) das Programm nicht laufen lassen. Wenn ich das Script starte (Schaltfläche), erhalte ich eine Meldung mit "Object required in Script!"
Beide Variablen sind HMI-Variablen (keine Verbindung mit PLC)

Hier der Text:

Sub VBFunktion_1()
If halt Is 1 Then // halt ist die Hilfsvariable (1= Pause vorgesehen)
Do While fahrt<2500
fahrt = fahrt +1 // fahrt ist die Variable für die Animation
Loop
Do While halt Is 1
fahrt = fahrt // Pause bei der Hälfte, bis Schaltfläche betätigt wird
Loop
Do While fahrt<5000
fahrt = fahrt +1 // Fahrt bis zum Ende
Loop
Else
Do While fahrt<5000
fahrt = fahrt +1 // wenn keine Pause vorgesehen ist, Fahrt bis zum Ende
Loop
End If
End Sub


Die Syntax ist vom Programm erzeugt, die KOmmentare sind im Programm nicht vorhanden und sind nachträglich eingefügt, demnach auch keine Fehlerquelle.

Habt ihr Ideen, warum das Script nicht läuft?

Grüße
Januar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Löst das Problem leider nicht.

Hätte mich ehrlich gesagt auch gewundert, da ich zuvor eine sehr schmale Version des gleichen Scripts hatte, die ohne SmartTags funktioniert hatte.

P.S. Ich arbeite mit Tia Portal V13
 
Zuletzt bearbeitet:
Mal abgesehen davon ist das mit der Do-While Schleife eine zur Animation nicht funktionierende Lösung, weil so lange das Skript läuft nichts anderes gemacht wird.
Also musst du dir eh was komplett anderes überlegen.
 
Ich hab jetzt folgendes Script getestet:

Sub
Do while fahrt <5000
fahrt = fahrt +1
Loop
End Sub

FUnktioniert ohen Probleme, macht genau das, was es soll.
 
Ja wenn du ein objekt hast dann musst du in dem Script das auch ansprechen.So ist es zumindest in WinCC.
Das was du bewegst muss im Bild einen Namen haben.In WinCC kannst du dann ein Objekt erzeugen.Dem musst du dann mit Hochomma den Objektnamen aus dem Bild zuweisen.Das ist eine spezielle Syntax.

Danach kannst du die Objekteigenschaften manipulieren.
Reicht nicht:

Script wird über zyklus aufgerufen(alle Sekunde)

if wert >100;
wert=1;
end_if;

wert= wert +1;
 
Hallo,

der Casus Knacktus ist die Stelle " if halt is 1 then...".

Der Operator "is" verlangt ein Objekt als Argument, und "1" ist keines.

Besser ist eine dem Datentyp angepasste Syntax:
+ Wenn "halt" ein INT ist, dann "if halt = <Wert> then..."
+ Wenn "halt" ein Boolean ist, dann "if halt then...
usw.

Gruß, Fred


PS: Ein Debugger hilft ungemein...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@faust: Ich hatte auch schon vermutet, dass es irgendwo an der if-Bedingung hing. Da ich aber noch keine Erfahrungen mit VB hab, kam mir der Gedanke nicht.
Ich werds Montag gleich mal ausprobieren, dank dir erstmal :)

@freaky: Ich will das Objekt ja nicht direkt mit dem Script bewegen. Das Script soll eine Variable erhöhen, an der die Bewegung des Objektes und potentiell noch andere Sachen hängen.

Grüße,
Januar
 
Ich hab jetzt folgendes Script getestet:

Sub
Do while fahrt <5000
fahrt = fahrt +1
Loop
End Sub

FUnktioniert ohen Probleme, macht genau das, was es soll.

das kann ich mir eigentlich auch nicht vorstellen ...
Wie schon von Thomas geschrieben : während ein Script läuft passiert nicht so schrecklich viel anderes. Es kann allerdings schon sein, dass du den Beginn-Wert und den End-Wert deiner Schleife als Animation siehst. Von dem dazwischen kannst du eigentlich nichts gesehen haben.
Vielleicht bringst du doch mal etwas mehr Informationen rüber ...

Gruß
Larry
 
Vielleicht bringst du doch mal etwas mehr Informationen rüber ...

Das Ganze soll einen Laufbandprozess visualisieren. Ein Bildobjekt "fährt" nach Betätigung einer Schaltfläche von rechts nach links. Das funktioniert über eine Animation des Bildobjektes. Diese ist über die INT-Variable gesteuert, die im Script erhöht wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Ganze soll einen Laufbandprozess visualisieren. Ein Bildobjekt "fährt" nach Betätigung einer Schaltfläche von rechts nach links. Das funktioniert über eine Animation des Bildobjektes. Diese ist über die INT-Variable gesteuert, die im Script erhöht wird.

Und du siehst eine wirklich flüssige Bewegung bei deinem Bildobjekt, oder springt es einfach nur?
Siemens hat mal irgendwo geschrieben, dass solange ein Skript aktiv ist nichts anders passiert, also auch keine Bildaktualisierungen. Demnach dürfte dein Objekt nur springen (von 0 bis 5000).
Und ich weiß nicht wie schnell VBS auf dem Panel so ist, aber bis 5000 zu zählen sollte keine Sekunde dauern.
 
Ja, ich sehe eine wirklich flüssige Bewegung. Diese dauert ca. 3 bis 4 Sekunden.

Das Problem lag scheinbar wirklich an der Bedingung der boolschen Variable. Mit der if-Bedingung " if halt then" statt "if halt is 1 then" funktioniert es einwandfrei.

Danke :)
 
Zurück
Oben