Virtuelle Devices statt Programmvariablen

In der ersten Version unseres Revolutionsumbaus haben wir die Magazinfüllstände in unserem Programm als Variablen angelegt. Das hatte natürlich den Nachteil, dass diese Werte beim Programmneustart verloren waren.

Nun wollen wir diese Werte über virtuelle Devices im Prozessabbild speichern!

piCtory Konfiguration

Legen wir uns ein virtuelles Device mit dem Namen „virt01“ in piCtory an:

„Virtuelle Devices statt Programmvariablen“ weiterlesen

Version 0.15.3

Heute veröffentlichen wir ein Update!

  • Es kann nun für alle IOs der Klassen RevPiIO() und RevPiStructIO() eine „byteorder“ konfiguriert werden. Diese ist wichtig für die int() Umrechnung bei Werten, die mehr als ein Byte lang sind, z.B. bei RevPi Gateways (Standard ist „little“)
  • Das Klassenattribut „signed“ wurde für die RevPiIO() Klasse eingefügt. Dieses kann auf True gesetzt werden, wenn die int() Umrechnung der bytes() mit Vorzeichen erwünscht ist.
    Besonders Interessant bei „Countern“ der DI, DO und DIO Module, welche beim Rückwärtszählen sonst 65535 anzeigen.
    rpi.devices["dio"]["Counter_1"].signed = True
    rpi.devices["dio"]["Counter_1"].value
    Welcher nun -1 anzeigen würde.
  • Magic Methode __contains__ an RevPiDevicelist und RevPiDevice angefügt. Damit sind nun Abfragen in Form von "dio02" in rpi.devices und "I_1" in rpi.devices["dio02"] möglich, welche prüfen, ob ein Device-Name vorhanden ist oder ein IO-Name.
  • RevPiDevicelist unterstützt nun auch die Build-In Funktion len(rpi.devices), welche die Anzahl der Devices inkl. Core zurück gibt.
  • RevPiDevicelist hat die neue Funktion writedefaultinputs(self, virtual_device) bekommen.
  • Und weitere wichtige interne Veränderungen, die dieses Update erforderlich machen.

Version 0.15.2

Diese Version hat ein paar kleine Bugfixes, die unter bestimmten Bedingungen auftreten.

  • Sollte ein Fehler auf dem /dev/piControl0 Device auftreten, z.B. wegen einem Reset, wird dieser Fehler normalerweise abgefangen. In der Version ab 0.15.0 löst dieser Anfang jedoch selber einen Fehler aus 🙁
  • Wenn mit auto_refresh gearbeitet wird und innerhalb eines Programms das RevPiModIO neu instanziiert wird ohne .cleanup() Aufruf, beendet sich der auto_refresh-Modus nicht sauber.
  • Monitoringmode repariert RevPiModIO(monitoring=True)
  • Seit Version 0.8.8 können mit reg_event auch Ausgänge in der Eventüberwachung registriert werden. Diese wurden jedoch nicht ausgewertet.

DOWNLOAD

 

Schnell starten mit dem RevolutionPi

Wir stellen euch hier mal einen schnellen ersten Start mit dem RevolutionPi vor, um IOs zu testen, ohne eine einzige Zeile programmieren zu müssen!

Den Aufbau und die Verkabelung des Revolution Pi könnt ihr wunderbar aus der Kunbus Dokumentation entnehmen. Den benötigten SSH Zugang bekommt ihr dort auch erklärt.

Unser Aufbau

RevPi Core / DIO -> Ausgänge direkt auf die Relais geführt

„Schnell starten mit dem RevolutionPi“ weiterlesen

Version 0.15.1 – Schneller, weniger Ressourcen und bessere .wait() Funktion!

HINWEIS: RevPiModio.devices.wait(…) Funktion nicht mehr kompatibel zu Vorgängerversionen!

Wir haben unser RevPiModIO Modul überarbeitet! Damit bekommen wir bessere Leistungen bei .readprocimg() / .writeprocimg() und verbrauchen weniger Ressourcen.

Die RevPiModio.devices.wait(…) Funktion wurde komplett umgeschrieben. Die alte Version hatte als Rückgabewert lediglich True oder False. Damit konnte man jedoch nicht die unterschiedlichen Abbruchbedingungen auswerten, was aber dringend benötigt wird.
Der Rückgabewert ist nun ein int() Wert! Werte kleiner oder gleich 0 sind dabei ein erfolgreiches Warten, Werte größer 0 sind ausgelöste Abbruchbedingungen, wie das exitevent oder der timeout.
Genaueres in unserer Dokumentation.

Außerdem wurden alle RevPiModIO.devices[0].*procimgdev() Funktionen entfernt, da sie als überflüssig bewertet wurden. Alternativ kann die Funktion durch Parameterübergabe des Devices an RevPiModIO.devices.*procimg(device) erledigt werden. Hier könnte auch eine Liste übergeben werden RevPiModIO.devices.*procimg([device1, device2]).
Genaueres in unserer Dokumentation.