Xero Macro: Unterschied zwischen den Versionen

Aus Amium_Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „ === Grundlegende Macrobefehle === ==== 'this' Operator ==== Der <tt>this</tt> Operator wird bei der Macroabarbeitung durch den Normnamen des aktuellen Modul…“)
 
K (Han verschob die Seite Xero macro nach Xero Macro)
(kein Unterschied)

Version vom 20. Oktober 2014, 14:34 Uhr

Grundlegende Macrobefehle

'this' Operator

Der this Operator wird bei der Macroabarbeitung durch den Normnamen des aktuellen Moduls ersetzt


'parent' Operator

Der parent Operator wird bei der Macroabarbeitung durch den Normnamen des Übergeordneten Moduls ersetzt


Macro - macro / macro_end

  • macro [Macroname]()
Beginn eines Macros
  • endmacro
Ende des Makroblocks
  • hideif
Sichtbarkeit in Abh. des Modulstatus (Status)
  • showif
Sichtbarkeit in Abh. des Modulstatus (Status)
  • Access
Sichtbarkeit in Abh. des Zugriffslevel
  • Process
Process = direct → Macro wird sofort aufgerufen - ohne Rückfrage, falls ein Macro bereits läuft
  • Process
Process = simultaneous → Macro wird parallel zu einem bereits laufenden Macro ausgeführt
  • macroend
Ende des Makroblocks


Beispielmacro: Standby

  macro Standby() 
     ...
     ... 
  macro_end

Es wird dringend empfohlen, dass das Ready()-Macro in jedem Modul inkl. Hauptfenster (Main) zu integrieren.
Das 'Ready()'-Macro des Hauptfenster (Main) wird im Fehlerfall standardmäßig aufgerufen (wenn es nicht implementiert ist, kann es auch nicht aufgerufen werden!).
Es empfiehlt sich auch bei umfangreichen Macroabläufen (Testsequenzen) am Beginn bzw. am Ende dieser Macrosequenz das 'Ready()'-Macro des Hauptfenster (Main)aufzurufen, damit ein definierter Zustand am Beginn der Macroabarbeitung bzw. ein definierter Zustand am Ende der Macroabarbeitung herrscht.
Grundsätzlich sollte das 'Ready()'-Macro des Hauptfenster (Main) einen definierten Zustand des Hauptfensters herstellen bzw. die 'Ready()'-Makros der Untermodule aufrufen (→ hierarchische/rekursive Abarbeitung), die Untermodule rufen wiederum die 'Ready()'-Macros deren Untermodule auf, usw.


Empfohlene Standard Macronormnamen für Prüfstandautomatisierung, allg. Messtechnik, Analysatoren und Messanlagen

  • Ready()</tt> bzw. <Modulnormname>.Ready()
→ Standby, Bereitschaft (erforderlich bei Gasanalysesystemen)
  • ECO_Mode() bzw. <Modulnormname>.ECO_Mode()
→ Pause, Stromsparmodus
  • Sample() bzw. <Modulnormname>.Sample()
→ Messen, (erforderlich bei Gasanalysesystemen)
  • SampleZero() bzw. <Modulnormname>.SampleZero()
→ Messen Nullwert, Nullgas messen
  • SampleSpan() bzw. <Modulnormname>.SampleSpan()
→ Messen Endwert, Endgas messen
  • Clean() bzw. <Modulnormname>.Clean()
→ Spülen, allgemeine Reinigung der Systems (erforderlich bei Gasanalysesystemen)
  • Adjust() bzw. <Modulnormname>.Adjust()
→ Justierung Gerat/Komponente (erforderlich bei Gasanalysesystemen)
  • AdjustZero() bzw. <Modulnormname>.AdjustZero()
→ Justierung Nullwert
  • AdjustSpan() bzw. <Modulnormname>.AdjustSpan()
→ Justierung Endwert


Bedingte Ausführung - if / if_else / if_end

  • if ([Bedingung])
Beginn einer bedingten Ausführung
→ wenn die [Bedingung] in den Klammern wahr (true) ist, dann werden die Macroanweisungen von hier bis zum Ende der bedingten Ausführung bzw. zur if_else-Anweisung ausgeführt, andernfalls übersprungen bzw. wenn ein else Zweig deklariert ist dieser ausgeführt.
  • if_else
Wenn die [Bedingung] in den Klammern unwahr (false) ist, dann werden die Macroanweisungen von hier bis zum Ende der bedingten Ausführung ausgeführt
  • if_end
Ende der bedingten Ausführung


Beispiel für die Bedingung, dass Temperaturen des Sensor 'TI_1' grösser 100 °C

  if (TI_1 > 100)  
     ...
     ...
  if_end


Beispiel für die Bedingung, dass Temperaturen des Sensor 'TI_1' grösser 100 °C (mit if_else)

  if (TI_1 > 100)  
     ...
     ...
  if_else
     ...
  if_end


Wartezeit - delay

  • delay([Verzögerung])
Verzögerung im Macroablauf
→ die angegebene <tt>Verzögerung warten und danach mit der Macroabarbeitung fortfahren.


Beispiele für eine Verzögerung von 1 Stunde

  delay(3600)
  delay(3600s)
  delay(60m)
  delay(1h)


Bedingtes Warten - wait(for)

  • wait(for = ([Bedingung]), timeout = [max. Wartezeit])
Begin bedingtes Warten
→ solange die <tt>Bedingung in den Klammern unwahr (false) ist, wird mit die Macroabarbeitung unterbrochen.
Wird die Bedingung in den Klammern wahr (true), dann wird mit der nächsten/folgenden Macroanweisung fortgefahren.
Nach Ablauf der angegebenen max. Wartezeit wird auch, ohne dass die Bedingung wahr (<tt>true) wird, fortgefahren.

  wait(for = (TI_1 > 100), timeout = 200s))


Schleife - loop / loop_end

  • loop([Durchläufe])
Beginn einer Schleifen-Bedingung
→ die Macroanweisungen innerhalb der Schleife wird <tt>[Durchläufe] mal ausgeführt
  • loop_end
Ende der Schleife


Beispiel für eine Schleife mit 10 maligem Durchlauf

  loop (10)
     ...
     ... 
  loop_end


Default Macroaufrufe

Standardaufruf beim Starten der XERO Software

  macro Main.Ready()
     ...
     ...
  macro_end


Standardaufruf beim Beenden der XERO Software

  macro Main.Exit()
     ...
     ...
  macro_end


Standardaufruf bei Aktivierung eines Modules

  macro Main.Activate()
     ...
     ...
  macro_end


Standardaufruf bei Deaktivierung eines Modules

  macro Main.Deactivate()
     ...
     ...
  macro_end


Zuweisung

  • Id
Id ohne Gruppierung verweist auf Main.Id
→ siehe Abschnitt ??

Beispiel für die Zuweisung der Main.Id [Zielvariable] = Id

  • &[Modulname]
Zugriff auf einen Zahlenwert über eine Textreferenz [Modulname] innerhalb einer Textanweisung
  • Beispiel für die Zuweisung eines Endgaswertes über den Referenznamen;
THC.Spangas = 932ppm

[Zielvariable] = EGAK K0 &THC.Spangas; → wird zu 'EGAK K0 923'


Default Aliasnamen

  • OnEin
OffAus
  • ReadyStandby
ECO_ModePause
IgniteZünden
CleanSpülen
  • SampleMessen
  • SampleZeroMessen Nullwert
  • SampleSpanMessen Endwert
  • AdjustJustierung
  • AdjustZeroJustierung Nullwert
  • AdjustSpanJustierung Endwert
  • AdjustCuvetteJustierung Küvette