WinCC WinCC Anfängerfrage zu internen Variablen in VBA Script

maddin

Level-1
Beiträge
116
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo meine Lieben,

ich versuche mich gerade zum ersten Mal an WinCC, genauer gesagt an VBA Aktionen.

Ich bin mit der WinCC-Programmierung noch ganz am Anfang, und ebenfalls mit der VB Programmierung, die ich mir parallel auch versuche beizubringen.

Bei mir scheitert es aber schon an den Basics, ich weiß nicht mehr weiter, daher brauche ich eure Hilfe.

Ich habe WinCC 7.0 / SP3 auf einer virtuellen XP Maschine laufen.

Ich habe einen Screen mit einer Schaltfläche erstellt, über den ich eine VBA Aktion ausführen möchte.

Dafür habe ich zwei interne Variablen deklariert, ein Integer und ein Bool.

Variablen.JPG

Die zwei Variablen habe ich in einer VBA Aktion eines Buttons eingebunden, eine ganz simple Aktion, das Bool auf TRUE setzen und die Integervariable hochzählen.

Ich habe dazu ein Ausgabefeld, welches mir den Integerwert anzeigt, sowie ein Ausgabefeld, welches je nach Wert des Bools die Farbe ändert.

VBA Aktion.JPG

Wenn ich die Runtime starte und die Schaltfläche betätige, passiert...gar nichts. Weder das Bool noch der Integer ändern ihren Wert.

Was mache ich falsch, kann mir jemand unter die Arme greifen ?

Würde mich über eine Antwort sehr freuen, vielen Dank im Voraus.

Gruß Martin
 
Probiere es mal so:
Code:
Sub OnClick(ByVal Item)

SmartTags("intZaehler") = SmartTags("intZaehler") + 1
SmartTags("boOn_Off") = True

End Sub

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da gibt es mehrere Möglichkeiten. Die erste ist ein direktes Schreiben eines Wertes, z.B. für die Variable die du nur beschreiben möchtest:
Code:
HMIRuntime.Tags("boOn_Off").Write 1

Die zweite Möglichkeit ist der Zugriff über eine Objektreferenz, am Beispiel für deine Variable "intZaehler":
Code:
Dim objTag

Set objTag = HMIRuntime.Tags("intZaehler")
objTag.Read
objTag.Value = objTag.Value + 1
objTag.Write
 
Hallo ihr beiden,

@Harald, dein Vorschlag funktioniert, @Thomas, deiner leider nicht.

Der Grund ist mir noch nicht so ganz klar.... laut Doku sind die SmartTags-Anweisungen bei FacePlates anzuwenden. Mein Screen ist aber ein .PDL.

Warum Thomas´Lösungsvorschlag nicht funktioniert, ist mir auch schleierhaft.

Gibt es eigentlich eine Doku, wo das Arbeiten mit internen Variablen näher erläutert wird ?

Schönes WE.

Gruß Maddin
 
Ich kenne das mit den Smarttags auch nur innerhalb Faceplates.

Ich habe so wie ich das beschrieben habe eben mit WinCC 7.3 noch mal getestet, funktioniert. Mein Beispiel steht auch so in der WinCC Hilfe dieser Version. Vielleicht gab es das HMIRuntime Objekt in WinCC 7.0 noch nicht?
 
Zurück
Oben