PDA

View Full Version : Welche Variable ruft Makro auf



and12121
18th June 2014, 07:50
Hallo,

wir arbeiten mit der Version zenon 7.1.
Beim überschreiten eines Grenzwertes soll ein Macro in VB.Net aufgerufen werden. Wie kann ich schließlich in VB.Net auf die jeweilige Variable in der Funktion zugreifen?

Es wäre nett wenn mir hier jemand helfen könnte.
Vielen Dank schonmal im voraus

mit freundlichen Grüßen
aNd12121

markclemens
19th June 2014, 07:54
Hallo aNd12121,

Da gibt es einige Möglichkeiten:

- Online Container mit Variablen, Grenzwertüberwachung wird in VSTA im Variable Change Event überprüft, hier hat man die Information der Variable zur Verfügung

- Die Variable generiert bei Grenzwertverletzung ein Alarm. In VSTA wird das AlarmComes Event ausgewertet, hier hat man die Information der Variable zur Verfügung.

- Die Variable generiert bei Grenzwertverletzung ein CEL Eintrag. In VSTA wird das CelItemAdded Event ausgewertet.

In VBA gäbe es noch die Möglichkeit, Übergabeparameter bei der Funktion zu spezifizieren. Somit kann pro Variable eine eigene Funktion definiert werden zum Ausführen eines universal Makros, wo bei der Funktion die Variable als Parameter mit gegeben wird. Die nun variablenspezifische Funktion kann über die Grenzwertverletzung aufgerufen werden. In VSTA gibt es diese Möglichkeit nicht.

Eventuell gibt s noch andere Möglichkeiten, aber diese sind mir auf Anhieb eingefallen.

Mfg
Mark

and12121
25th June 2014, 07:55
Moin,

Wir haben die gewünschte Funktion über das AlarmGoes Event realisiert.

Wenn man ein normales Makro über die zenon Funktion ausführt, kann ausgewählt werden, wo das Makro ausgeführt werden soll (Aktueller Rechner, Client, Server oder Standby).

Das AlarmGoes Event soll nun auch nur auf dem Server ausgeführt werden. Gibt es irgendwie die Möglichkeit dies zu realisieren?

Vielen Dank schonmal für die Hilfe

mit freundlichen Grüßen
André Werner

markclemens
25th June 2014, 07:59
Hallo André,

Hierzu könnte die Eigenschaft "NetType" vom Project Object im Event Handler ausgewertet warden und die weitere Verarbeitung nur ausführen wenn der Rechner Server für das jeweilige Projekt ist.

Mfg
Mark

herberto
25th June 2014, 08:02
kleine Ergänzung noch zu Marks Post:

Siehe Hilfe Dokumentation unter
Handbuch -> Programmierschnittstellen -> Objectmodel -> Project -> Project-Properties -> NetType

NetType() As tpProjectNetTypes

Handbuch -> Programmierschnittstellen -> Objectmodel -> Constants -> tpProjectNetTypes

tpMainstation - 0
tpServer - 1
tpStandBy - 2
tpClient - 3


... also dann beim Event sowas wie

if thisProject.NetType <> 1 then exit sub

gruß,
herbert

and12121
25th June 2014, 08:39
Super! Vielen Dank.

Jetzt läuft es wie gewünscht.