Klasse Cycletools

Werkzeugkasten welcher der aufgerufenen Zyklusfunktion bei jedem Aufruf durch .cycleloop() übergeben wird.

revpimodio2.helper.Cycletools()
Klassenattribute

  • .core .device .io
    Über die Objekte .core, .device and .io kann direkt auf die Objekte der RevPiModIO Instanz zugegriffen werden. Dadurch können alle IOs direkt abgerufen und gesetzt werden, auch wenn man mehrere Funktionen oder Module für die Steuerung verwendet. Es müssen lediglich die Cycletools weitergereicht werden.

    def loop(ct):
        # (...)
        ct.io.output.value = True
        ct.var.mrk_counter = ct.io.counter.value
        ct.io.counter.reset()
        # (...)
    

  • .first
    Enthält den Wert True im ersten Zyklus bei Programmstart, sonst immer False. Dient z.B. für das Anlegen von Zyklusvariablen .var.name = 2.

    def loop(ct):
        if ct.first:
            ct.var.my_variable = 0
            ct.core.a1green.value = True
    

  • .flag1c .flag5c .flag10c .flag15c .flag20c
    Wechselt den Status zwischen True und False hält diesen für n Zyklen bei.
    1 = 1 Zyklus False, 1 Zyklus True
    15 = 15 Zyklen False, 15 Zyklen True

  • .flank5c .flank10c .flank15c .flank20c
    Ist im ersten Zyklus True dann False und in jedem n. Zyklus True.
    10 = 9 Zyklen False, im 10. Zyklus True usw.

  • .last
    Dieser Wert ist True, wenn das Programm das Signal zum Beenden erhalten hat. Hier sollten alle IOs bereinigt und die Anlage in einen sicheren Zustand versetzt werden.

    def loop(ct):
        # (...)
        if ct.last:
            ct.core.a1green.value = False
            ct.io.output.value = False

  • .runtime
    Hier kann die aktualle Laufzeit der Funktion abgerufen werden. Der Wert ist die Laufzeit der Funktion an der Stelle des Aufrufs. Zu Beginn der Funktion ist dieser Wert nahe 0 und in der letzten Zeile der Funktion erreicht er den maximalen Wert.

  • .var
    An diese leere Klasse werden alle Zyklusvariablen angehängt. Diese sind in jedem Zyklus verwendbar. Die erste Einrichtung sollte im ersten Zyklus gemacht werden:

    def cycle(ct):
        if ct.first:
            # Variablen im ersten Zyklus anlegen
            ct.var.anzahl = 10
            ct.var.text = "Hallo Welt"
            ct.var.noch_eine = 0
    
        # Variablen sind ab jetzt direkt zugreifbar
        if ct.var.anzahl == 10:
            ct.var.noch_eine += 1
    
        # usw.

Klassenfunktionen

.changed(io_object, edge=BOTH)

Auf Wertänderung zum vorherigen Zyklus prüfen.

  • io_object
    IO Object, welches geprüft werden soll.
  • edge=revpimodio2.BOTH
    Nur auf RISING, FALLING or BOTH Wertänderung von BIT-orientierten IOs prüfen.

.get_tofc(name)

Ruft den Wert der Ausschaltverzögerung ab.

  • name
    Name der Ausschaltverzögerung.

.set_tofc(name, cycles)

Startet die Ausschaltverzögerung, deren Wert über .get_tofc(name) abgerufen werden muss.

  • name
    Name der Ausschaltverzögerung.
  • cycles
    Anzahl der Zyklen, die die Ausschaltverzögerung bei Aufruf von .get_tofc(name) den Wert True zurückgeben soll, nachdem .set_tofc(name, cycles) nicht mehr im Zyklus aufgerufen wurde. Die Standardzykluszeit beträgt 50 Millisekunden.

.get_tonc(name)

Ruft den Wert der Einschaltverzögerung ab.

  • name
    Name der Einschaltverzögerung.

.set_tonc(name, cycles)

Startet die Einschaltverzögerung, deren Wert über .get_tonc(name) abgerufen werden muss.

  • name
    Name der Einschaltverzögerung.
  • cycles
    Anzahl der Zyklen, die die Einschaltverzögerung bei Aufruf von .get_tonc(name) den Wert False zurückgeben soll, wenn in jedem Zyklus .set_tonc(name, cycles) aufgerufen wird. Erst nach Erreichen der Zyklenanzahl gibt .get_tonc(name) den Wert True zurück. Die Standardzykluszeit beträgt 50 Millisekunden.

.get_tpc(name)

Ruft den Wert des Impuls ab.

  • name
    Name des Impuls.

.set_tpc(name, cycles)

Startet einen Impuls, dessen Wert über .get_tpc(name) abgerufen werden muss.

  • name
    Name des Impulses.
  • cycles
    Anzahl der Zyklen, die der Impuls bei Aufruf von .get_tpc(name) den Wert True zurückgeben soll, unabhängig von weiteren .set_tpc(name, cycles) Aufrufen! Nach Erreichen der Zyklenanzahl gibt .get_tpc(name) dann False aus. Die Standardzykluszeit beträgt 50 Millisekunden.