revpimodio

Stellt alle Klassen fuer den RevolutionPi zur Verfuegung.

Stellt Klassen fuer die einfache Verwendung des Revolution Pis der Kunbus GmbH (https://revolution.kunbus.de/) zur Verfuegung. Alle I/Os werden aus der piCtory Konfiguration eingelesen und mit deren Namen direkt zugreifbar gemacht. Fuer Gateways sind eigene IOs ueber mehrere Bytes konfigurierbar Mit den definierten Namen greift man direkt auf die gewuenschten Daten zu. Auf alle IOs kann der Benutzer Funktionen als Events registrieren. Diese fuehrt das Modul bei Datenaenderung aus.

Global Attributes

BOTH
FALLING
GREEN
OFF
RED
RISING

Classes

RevPiApp Bildet die App Sektion der config.rsc ab.
RevPiCallback Thread fuer das interne Aufrufen von Event-Funktionen.
RevPiCore Klasse fuer den RevPi Core.
RevPiCycletools Werkzeugkasten fuer Cycleloop-Funktion.
RevPiDevice Basisklasse fuer alle Device-Objekte der RevPiDevicelist()-Klasse.
RevPiDevicelist Enthaelt alle Devices des RevolutionPi Buses.
RevPiGateway Klasse fuer die RevPi Gateway-Devices.
RevPiIO Klasse fuer den Zugriff auf die Daten mit Konvertierung in int().
RevPiIOBase Basisklasse fuer alle IO-Objekte der RevPiDevice()-Klasse.
RevPiModIO Klasse fuer die Verwaltung aller piCtory Informationen.
RevPiModIODriver Klasse um eigene Treiber fuer die virtuellen Devices zu erstellen.
RevPiModIOSelected Klasse fuer die Verwaltung einzelner Devices aus piCtory.
RevPiProcimgWriter Klasse fuer Synchroniseriungs-Thread.
RevPiStructIO Klasse fuer den Zugriff auf Daten ueber ein definierten struct().
RevPiSummary Bildet die Summary Sektion der config.rsc ab.
RevPiVirtual Klasse fuer die RevPi Virtual-Devices.

Functions

None


RevPiApp

Bildet die App Sektion der config.rsc ab.

Derived from

object

Class Attributes

None

Class Methods

None

Methods

RevPiApp Instantiiert die RevPiApp-Klasse.

Static Methods

None

RevPiApp (Constructor)

RevPiApp(app)

Instantiiert die RevPiApp-Klasse.

app
piCtory Appinformationen
Up


RevPiCallback

Thread fuer das interne Aufrufen von Event-Funktionen.

Der Eventfunktion, welche dieser Thread aufruft, wird der Thread selber als Parameter uebergeben. Darauf muss bei der definition der Funktion geachtet werden z.B. "def event(th):". Bei umfangreichen Funktionen kann dieser ausgewertet werden um z.B. doppeltes Starten zu verhindern. Ueber RevPiCallback.ioname kann der Name des IO-Objekts abgerufen werden, welches das Event ausgeloest hast. RevPiCallback.iovalue gibt den Wert des IO-Objekts zum Ausloesezeitpunkt zurueck. Der Thread stellt das RevPiCallback.exit Event als Abbruchbedingung fuer die aufgerufene Funktion zur Verfuegung. Durch Aufruf der Funktion RevPiCallback.stop() wird das exit-Event gesetzt und kann bei Schleifen zum Abbrechen verwendet werden. Mit dem .exit() Event auch eine Wartefunktion realisiert werden: "th.exit.wait(0.5)" - Wartet 500ms oder bricht sofort ab, wenn fuer den Thread .stop() aufgerufen wird.

while not th.exit.is_set(): # IO-Arbeiten th.exit.wait(0.5)

Derived from

Thread

Class Attributes

None

Class Methods

None

Methods

RevPiCallback Init RevPiCallback class.
run Ruft die registrierte Funktion auf.
stop Setzt das exit-Event mit dem die Funktion beendet werden kann.

Static Methods

None

RevPiCallback (Constructor)

RevPiCallback(func, name, value)

Init RevPiCallback class.

func
Funktion die beim Start aufgerufen werden soll
name
IO-Name
value
IO-Value zum Zeitpunkt des Events

RevPiCallback.run

run()

Ruft die registrierte Funktion auf.

RevPiCallback.stop

stop()

Setzt das exit-Event mit dem die Funktion beendet werden kann.

Up


RevPiCore

Klasse fuer den RevPi Core.

Stellt Funktionen fuer die LEDs und den Status zur Verfuegung.

Derived from

RevPiDevice

Class Attributes

A1
A2
status

Class Methods

None

Methods

_devconfigure Core-Klasse vorbereiten.
_errorlimit Verwaltet das Lesen und Schreiben der ErrorLimits.
errorlimit1 Setzt RS485 ErrorLimit1 auf neuen Wert.
errorlimit2 Setzt RS485 ErrorLimit2 auf neuen Wert.
frequency Gibt CPU Taktfrequenz zurueck.
get_leda1 Gibt den Zustand der LED A1 vom core zurueck.
get_leda2 Gibt den Zustand der LED A2 vom core zurueck.
get_status Gibt den RevPi Core Status zurueck.
iocycle Gibt Zykluszeit der Prozessabbildsynchronisierung zurueck.
ioerrorcount Gibt Fehleranzahl auf RS485 piBridge Bus zurueck.
leftgate Statusbit links vom RevPi ist ein piGate Modul angeschlossen.
missingdeviceorgate Statusbit fuer ein IO-Modul fehlt oder piGate konfiguriert.
overunderflow Statusbit Modul belegt mehr oder weniger Speicher als konfiguriert.
picontrolrunning Statusbit fuer piControl-Treiber laeuft.
rightgate Statusbit rechts vom RevPi ist ein piGate Modul angeschlossen.
set_leda1 Setzt den Zustand der LED A1 vom core.
set_leda2 Setzt den Zustand der LED A2 vom core.
temperature Gibt CPU-Temperatur zurueck.
unconfdevice Statusbit fuer ein IO-Modul nicht mit PiCtory konfiguriert.

Static Methods

None

RevPiCore._devconfigure

_devconfigure()

Core-Klasse vorbereiten.

RevPiCore._errorlimit

_errorlimit(io_id, errorlimit)

Verwaltet das Lesen und Schreiben der ErrorLimits.

io_id
Index des IOs fuer ErrorLimit
Returns:
Aktuellen ErrorLimit oder None wenn nicht verfuegbar

RevPiCore.errorlimit1

errorlimit1(value)

Setzt RS485 ErrorLimit1 auf neuen Wert.

value
Neuer ErrorLimit1 Wert

RevPiCore.errorlimit2

errorlimit2(value)

Setzt RS485 ErrorLimit2 auf neuen Wert.

value
Neuer ErrorLimit2 Wert

RevPiCore.frequency

frequency()

Gibt CPU Taktfrequenz zurueck.

Returns:
CPU Taktfrequenz in MHz

RevPiCore.get_leda1

get_leda1()

Gibt den Zustand der LED A1 vom core zurueck.

Returns:
0=aus, 1=gruen, 2=rot

RevPiCore.get_leda2

get_leda2()

Gibt den Zustand der LED A2 vom core zurueck.

Returns:
0=aus, 1=gruen, 2=rot

RevPiCore.get_status

get_status()

Gibt den RevPi Core Status zurueck.

Returns:
Status als int()

RevPiCore.iocycle

iocycle()

Gibt Zykluszeit der Prozessabbildsynchronisierung zurueck.

Returns:
Zykluszeit in ms

RevPiCore.ioerrorcount

ioerrorcount()

Gibt Fehleranzahl auf RS485 piBridge Bus zurueck.

Returns:
Fehleranzahl der piBridge

RevPiCore.leftgate

leftgate()

Statusbit links vom RevPi ist ein piGate Modul angeschlossen.

Returns:
True, wenn piGate links existiert

RevPiCore.missingdeviceorgate

missingdeviceorgate()

Statusbit fuer ein IO-Modul fehlt oder piGate konfiguriert.

Returns:
True, wenn IO-Modul fehlt oder piGate konfiguriert

RevPiCore.overunderflow

overunderflow()

Statusbit Modul belegt mehr oder weniger Speicher als konfiguriert.

Returns:
True, wenn falscher Speicher belegt ist

RevPiCore.picontrolrunning

picontrolrunning()

Statusbit fuer piControl-Treiber laeuft.

Returns:
True, wenn Treiber laeuft

RevPiCore.rightgate

rightgate()

Statusbit rechts vom RevPi ist ein piGate Modul angeschlossen.

Returns:
True, wenn piGate rechts existiert

RevPiCore.set_leda1

set_leda1(value)

Setzt den Zustand der LED A1 vom core.

value
0=aus, 1=gruen, 2=rot

RevPiCore.set_leda2

set_leda2(value)

Setzt den Zustand der LED A2 vom core.

value
0=aus, 1=gruen, 2=rot

RevPiCore.temperature

temperature()

Gibt CPU-Temperatur zurueck.

Returns:
CPU-Temperatur in Celsius

RevPiCore.unconfdevice

unconfdevice()

Statusbit fuer ein IO-Modul nicht mit PiCtory konfiguriert.

Returns:
True, wenn IO Modul nicht konfiguriert
Up


RevPiCycletools

Werkzeugkasten fuer Cycleloop-Funktion.

Diese Klasse enthaelt Werkzeuge fuer Zyklusfunktionen, wie Taktmerker und Flankenmerker. Zu beachten ist, dass die Flankenmerker beim ersten Zyklus alle den Wert True haben! Ueber den Merker RevPiCycletools.first kann ermittelt werden, ob es sich um den ersten Zyklus handelt.

Taktmerker flag1c, flag5c, flag10c, usw. haben den als Zahl angegebenen Wert an Zyklen jeweils False und True. Beispiel: flag5c hat 5 Zyklen den Wert False und in den naechsten 5 Zyklen den Wert True.

Flankenmerker flank5c, flank10c, usw. haben immer im, als Zahl angebenen Zyklus fuer einen Zyklusdurchlauf den Wert True, sonst False. Beispiel: flank5c hat immer alle 5 Zyklen den Wert True.

Diese Merker koennen z.B. verwendet werden um, an Outputs angeschlossene, Lampen synchron blinken zu lassen.

Derived from

None

Class Attributes

None

Class Methods

None

Methods

RevPiCycletools Init RevPiCycletools class.
_docycle Zyklusarbeiten.
get_tofc Wert der Ausschaltverzoegerung.
get_tonc Einschaltverzoegerung.
get_tpc Impulstimer.
set_tofc Startet bei Aufruf einen ausschaltverzoegerten Timer.
set_tonc Startet einen einschaltverzoegerten Timer.
set_tpc Startet einen Impuls Timer.

Static Methods

None

RevPiCycletools (Constructor)

RevPiCycletools()

Init RevPiCycletools class.

RevPiCycletools._docycle

_docycle()

Zyklusarbeiten.

RevPiCycletools.get_tofc

get_tofc(name)

Wert der Ausschaltverzoegerung.

name
Eindeutiger Name des Timers
Returns:
Wert der Ausschaltverzoegerung

RevPiCycletools.get_tonc

get_tonc(name)

Einschaltverzoegerung.

name
Eindeutiger Name des Timers
Returns:
Wert der Einschaltverzoegerung

RevPiCycletools.get_tpc

get_tpc(name)

Impulstimer.

name
Eindeutiger Name des Timers
Returns:
Wert der des Impulses

RevPiCycletools.set_tofc

set_tofc(name, cycles)

Startet bei Aufruf einen ausschaltverzoegerten Timer.

name
Eindeutiger Name fuer Zugriff auf Timer
cycles
Zyklusanzahl, der Verzoegerung wenn nicht neu gestartet

RevPiCycletools.set_tonc

set_tonc(name, cycles)

Startet einen einschaltverzoegerten Timer.

name
Eindeutiger Name fuer Zugriff auf Timer
cycles
Zyklusanzahl, der Verzoegerung wenn neu gestartet

RevPiCycletools.set_tpc

set_tpc(name, cycles)

Startet einen Impuls Timer.

name
Eindeutiger Name fuer Zugriff auf Timer
cycles
Zyklusanzahl, die der Impuls anstehen soll
Up


RevPiDevice

Basisklasse fuer alle Device-Objekte der RevPiDevicelist()-Klasse.

Die Basisfunktionalitaet generiert bei Instantiierung alle IOs und erweitert den Prozessabbildpuffer um die benoetigten Bytes. Ueber diese Klasse oder von dieser abgeleiteten Klassen, werden alle IOs angesprochen. Sie verwaltet ihren Prozessabbildpuffer und sorgt fuer die Aktualisierung der IO-Werte.

Derived from

object

Class Attributes

None

Class Methods

None

Methods

RevPiDevice Instantiierung der RevPiDevice()-Klasse.
__bytes__ Gibt alle Daten des Devices als bytes() zurueck.
__contains__ Prueft ob IO existiert.
__getitem__ Gibt angegebenes IO-Objekt zurueck.
__int__ Gibt die Positon im RevPi Bus zurueck.
__iter__ Gibt Iterator aller IOs zurueck.
__setitem__ Setzt den Wert des angegebenen Inputs.
__str__ Gibt den Namen des Devices zurueck.
_buildio Erstellt aus der piCtory-Liste die IOs fuer dieses Device.
_devconfigure Funktion zum ueberschreiben von abgeleiteten Klassen.
get_inps Gibt eine Liste aller Inputs zurueck.
get_iobyabsaddress Gibt das IO-Objekt an angegebenen Byte im Prozessabbild zurueck.
get_iobyaddress Gibt das IO-Objekt an angegebenen Byte zurueck.
get_iobyname Gibt das IO-Objekt mit angegebenen Namen zurueck.
get_mems Gibt eine Liste aller mems zurueck.
get_outs Gibt eine Liste aller Outputs zurueck.
reg_event Registriert ein Event bei der Eventueberwachung.
unreg_event Entfernt ein Event aus der Eventueberwachung.

Static Methods

None

RevPiDevice (Constructor)

RevPiDevice(dict_device, **kwargs)

Instantiierung der RevPiDevice()-Klasse.

dict_device
dict() fuer dieses Device aus piCotry Konfiguration
kwargs
Weitere Parameter: - autoupdate: Wenn True fuehrt dieses Device Arbeiten am Prozessabbild bei Aufruf der RevPiDevicelist-Funktionen aus - simulator: Laed das Modul als Simulator und vertauscht IOs

RevPiDevice.__bytes__

__bytes__()

Gibt alle Daten des Devices als bytes() zurueck.

Returns:
Devicedaten als bytes()

RevPiDevice.__contains__

__contains__(key)

Prueft ob IO existiert.

key
IO-Name str() / Positionsnummer int()
Returns:
True, wenn device vorhanden

RevPiDevice.__getitem__

__getitem__(key)

Gibt angegebenes IO-Objekt zurueck.

key
Name order Byteadresse des IOs
Returns:
IO-Objekt wenn Name, sonst list() mit IO-Objekt

RevPiDevice.__int__

__int__()

Gibt die Positon im RevPi Bus zurueck.

Returns:
Positionsnummer

RevPiDevice.__iter__

__iter__()

Gibt Iterator aller IOs zurueck.

Returns:
iter() alle IOs

RevPiDevice.__setitem__

__setitem__(key, value)

Setzt den Wert des angegebenen Inputs.

key
Name oder Byte des Inputs
value
Wert der gesetzt werden soll

RevPiDevice.__str__

__str__()

Gibt den Namen des Devices zurueck.

Returns:
Devicename

RevPiDevice._buildio

_buildio(dict_io, readonly)

Erstellt aus der piCtory-Liste die IOs fuer dieses Device.

dict_io
dict()-Objekt aus piCtory Konfiguration
readonly
True bei inp und mem, False bei out
Returns:
slice()-Objekt mit Start und Stop Position dieser IOs

RevPiDevice._devconfigure

_devconfigure()

Funktion zum ueberschreiben von abgeleiteten Klassen.

RevPiDevice.get_inps

get_inps()

Gibt eine Liste aller Inputs zurueck.

Returns:
list() Inputs

RevPiDevice.get_iobyabsaddress

get_iobyabsaddress(address)

Gibt das IO-Objekt an angegebenen Byte im Prozessabbild zurueck.

address
Byteadresse im Prozessabbild
Returns:
list() mit IO-Objekt/en

RevPiDevice.get_iobyaddress

get_iobyaddress(address)

Gibt das IO-Objekt an angegebenen Byte zurueck.

address
Byteadresse im Deviceabbild
Returns:
list() mit IO-Objekt/en

RevPiDevice.get_iobyname

get_iobyname(name)

Gibt das IO-Objekt mit angegebenen Namen zurueck.

name
Name des IO-Objekts
Returns:
IO-Objekt

RevPiDevice.get_mems

get_mems()

Gibt eine Liste aller mems zurueck.

Returns:
list() Mems

RevPiDevice.get_outs

get_outs()

Gibt eine Liste aller Outputs zurueck.

Returns:
list() Outputs

RevPiDevice.reg_event

reg_event(io_name, func, **kwargs)

Registriert ein Event bei der Eventueberwachung.

io_name
Name des Inputs oder Outputs der ueberwacht wird
func
Funktion die bei Aenderung aufgerufen werden soll
kwargs
Weitere Parameter: - as_thread: Bei True, Funktion als RevPiCallback-Thread ausfuehren - edge: Ausfuehren bei RISING, FALLING or BOTH Wertaenderung

RevPiDevice.unreg_event

unreg_event(io_name, func=None, edge=None)

Entfernt ein Event aus der Eventueberwachung.

io_name
Name des Inputs, dessen Events entfert werden sollen
func
Nur Events mit angegebener Funktion
edge
Nur Events mit angegebener Funktion und angegebener Edge
Up


RevPiDevicelist

Enthaelt alle Devices des RevolutionPi Buses.

Derived from

None

Class Attributes

None

Class Methods

None

Methods

RevPiDevicelist Instantiiert die einzelnen Bus-Devices.
__contains__ Prueft ob Device existiert.
__del__ FileHandler und RevPiProcimgWriter beenden.
__getitem__ Gibt angegebenes Device zurueck.
__iter__ Gibt alle Devices zurueck.
__len__ Gibt Anzahl der Devices zurueck.
_create_myfh Erstellt FileObject.
auto_refresh Registriert ein Device fuer die automatische Synchronisierung.
auto_refresh_maxioerrors Maximale IO Fehler fuer auto_refresh.
auto_refresh_resetioerrors Setzt aktuellen IOError-Zaehler auf 0 zurueck.
cycleloop Startet den Cycleloop.
exit Beendet mainloop() und optional auto_refresh.
get_devbyname Gibt durch Namen angegebenes Device zurueck.
get_devbyposition Gibt durch Position angegebenes Device zurueck.
get_refreshtime Gibt Aktualisierungsrate in ms der Prozessabbildsynchronisierung aus.
mainloop Startet den Mainloop mit Eventueberwachung.
readprocimg Einlesen aller Inputs aller Devices vom Prozessabbild.
set_refreshtime Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.
setdefaultvalues Alle Outputbuffer werden auf die piCtory default Werte gesetzt.
syncoutputs Lesen aller aktuell gesetzten Outputs im Prozessabbild.
updateprocimg Schreiben/Lesen aller Outputs/Inputs aller Devices im Prozessab.
wait Wartet auf Wertaenderung eines IOs.
writedefaultinputs Schreibt fuer ein virtuelles Device piCtory Defaultinputwerte.
writeprocimg Schreiben aller Outputs aller Devices ins Prozessabbild.

Static Methods

None

RevPiDevicelist (Constructor)

RevPiDevicelist(procimg, list_devices, **kwargs)

Instantiiert die einzelnen Bus-Devices.

procimg
Dateiname des piControl Devices
list_devices
piCtory Devicesinformationen
kwargs
Weitere Parameter: - auto_refresh: Wenn True, alle Devices zu auto_refresh hinzufuegen - monitoring: In- und Outputs werden gelesen, niemals geschrieben - simulator: Laed das Modul als Simulator und vertauscht IOs - syncoutputs: Aktuell gesetzte Outputs vom Prozessabbild einlesen

RevPiDevicelist.__contains__

__contains__(key)

Prueft ob Device existiert.

key
DeviceName str() / Positionsnummer int()
Returns:
True, wenn device vorhanden

RevPiDevicelist.__del__

__del__()

FileHandler und RevPiProcimgWriter beenden.

RevPiDevicelist.__getitem__

__getitem__(key)

Gibt angegebenes Device zurueck.

key
DeviceName str() / Positionsnummer int()
Returns:
Gefundenes RevPiDevice()-Objekt

RevPiDevicelist.__iter__

__iter__()

Gibt alle Devices zurueck.

Returns:
Iterator alle Devices

RevPiDevicelist.__len__

__len__()

Gibt Anzahl der Devices zurueck.

Returns:
int() Anzalh der Devices

RevPiDevicelist._create_myfh

_create_myfh(path)

Erstellt FileObject. param path Pfad zur Datei return FileObject

RevPiDevicelist.auto_refresh

auto_refresh(device, remove=False)

Registriert ein Device fuer die automatische Synchronisierung.

device
Device fuer Synchronisierung
remove
bool() True entfernt Device aus Synchronisierung

RevPiDevicelist.auto_refresh_maxioerrors

auto_refresh_maxioerrors(value=None)

Maximale IO Fehler fuer auto_refresh.

value
Setzt maximale Anzahl bis exception ausgeloest wird
Returns:
Maximale Anzahl bis exception ausgeloest wird

RevPiDevicelist.auto_refresh_resetioerrors

auto_refresh_resetioerrors()

Setzt aktuellen IOError-Zaehler auf 0 zurueck.

RevPiDevicelist.cycleloop

cycleloop(func, cycletime=None)

Startet den Cycleloop.

Der aktuelle Programmthread wird hier bis Aufruf von RevPiDevicelist.exit() "gefangen". Er fuehrt nach jeder Aktualisierung des Prozessabbilds die uebergebene Funktion "func" aus und arbeitet sie ab. Waehrend der Ausfuehrung der Funktion wird das Prozessabbild nicht weiter aktualisiert. Die Inputs behalten bis zum Ende den aktuellen Wert. Gesetzte Outputs werden nach Ende des Funktionsdurchlaufs in das Prozessabbild geschrieben.

Verlassen wird der Cycleloop, wenn die aufgerufene Funktion einen Rueckgabewert nicht gleich None liefert, oder durch Aufruf von revpimodio.exit().

HINWEIS: Die Aktualisierungszeit und die Laufzeit der Funktion duerfen die eingestellte auto_refresh Zeit, bzw. uebergebene cycletime nicht ueberschreiten!

Ueber den Parameter cycletime kann die Aktualisierungsrate fuer das Prozessabbild gesetzt werden (selbe Funktion wie set_refreshtime(milliseconds)).

func
Funktion, die ausgefuehrt werden soll
cycletime
Zykluszeit in Millisekunden, bei Nichtangabe wird aktuelle auto_refresh Zeit verwendet - Standardwert 50 ms
Returns:
None

RevPiDevicelist.exit

exit(full=True)

Beendet mainloop() und optional auto_refresh.

Wenn sich das Programm im mainloop() befindet, wird durch Aufruf von exit() die Kontrolle wieder an das Hauptprogramm zurueckgegeben.

Der Parameter full ist mit True vorbelegt und entfernt alle Devices aus dem auto_refresh. Der Thread fuer die Prozessabbildsynchronisierung wird dann gestoppt und das Programm kann sauber beendet werden.

full
Entfernt auch alle Devices aus auto_refresh

RevPiDevicelist.get_devbyname

get_devbyname(name)

Gibt durch Namen angegebenes Device zurueck.

name
Devicename aus piCtory
Returns:
Gefundenes RevPiDevice()

RevPiDevicelist.get_devbyposition

get_devbyposition(position)

Gibt durch Position angegebenes Device zurueck.

position
Deviceposition aus piCtory
Returns:
Gefundenes RevPiDevice()

RevPiDevicelist.get_refreshtime

get_refreshtime()

Gibt Aktualisierungsrate in ms der Prozessabbildsynchronisierung aus.

Returns:
Millisekunden

RevPiDevicelist.mainloop

mainloop(freeze=False, blocking=True)

Startet den Mainloop mit Eventueberwachung.

Der aktuelle Programmthread wird hier bis Aufruf von RevPiDevicelist.exit() "gefangen" (es sei denn blocking=False). Er durchlaeuft die Eventueberwachung und prueft Aenderungen der, mit einem Event registrierten, IOs. Wird eine Veraenderung erkannt, fuert das Programm die dazugehoerigen Funktionen der Reihe nach aus.

Wenn der Parameter "freeze" mit True angegeben ist, wird die Prozessabbildsynchronisierung angehalten bis alle Eventfunktionen ausgefuehrt wurden. Inputs behalten fuer die gesamte Dauer ihren aktuellen Wert und Outputs werden erst nach Durchlauf aller Funktionen in das Prozessabbild geschrieben.

Wenn der Parameter "blocking" mit False angegeben wird, aktiviert dies die Eventueberwachung und blockiert das Programm NICHT an der Stelle des Aufrufs. Eignet sich gut fuer die GUI Programmierung, wenn Events vom RevPi benoetigt werden, aber das Programm weiter ausgefuehrt werden soll.

freeze
Wenn True, Prozessabbildsynchronisierung anhalten
blocking
Wenn False, blockiert das Programm NICHT
Returns:
None

RevPiDevicelist.readprocimg

readprocimg(force=False, device=None)

Einlesen aller Inputs aller Devices vom Prozessabbild.

force
auch Devices mit autoupdate=False
device
nur auf einzelnes Device anwenden
Returns:
True, wenn Arbeiten an allen Devices erfolgreich waren

RevPiDevicelist.set_refreshtime

set_refreshtime(milliseconds)

Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.

milliseconds
int() in Millisekunden

RevPiDevicelist.setdefaultvalues

setdefaultvalues(force=False, device=None)

Alle Outputbuffer werden auf die piCtory default Werte gesetzt.

force
auch Devices mit autoupdate=False
device
nur auf einzelnes Device anwenden

RevPiDevicelist.syncoutputs

syncoutputs(force=False, device=None)

Lesen aller aktuell gesetzten Outputs im Prozessabbild.

force
auch Devices mit autoupdate=False
device
nur auf einzelnes Device anwenden
Returns:
True, wenn Arbeiten an allen Devices erfolgreich waren

RevPiDevicelist.updateprocimg

updateprocimg(force=False, device=None)

Schreiben/Lesen aller Outputs/Inputs aller Devices im Prozessab.

force
auch Devices mit autoupdate=False
device
nur auf einzelnes Device anwenden
Returns:
True, wenn Arbeiten an allen Devices erfolgreich waren

RevPiDevicelist.wait

wait(device, io, **kwargs)

Wartet auf Wertaenderung eines IOs.

Die Wertaenderung wird immer uerberprueft, wenn fuer Devices in RevPiDevicelist.auto_refresh() neue Daten gelesen wurden.

Bei Wertaenderung, wird das Warten mit 0 als Rueckgabewert beendet.

HINWEIS: Wenn RevPiProcimgWriter() keine neuen Daten liefert, wird bis in die Ewigkeit gewartet (nicht bei Angabe von "timeout").

Wenn edge mit RISING oder FALLING angegeben wird muss diese Flanke ausgeloest werden. Sollte der Wert 1 sein beim Eintritt mit Flanke RISING, wird das Warten erst bei Aenderung von 0 auf 1 beendet.

Als exitevent kann ein threading.Event()-Objekt uebergeben werden, welches das Warten bei is_set() sofort mit 1 als Rueckgabewert beendet.

Wenn der Wert okvalue an dem IO fuer das Warten anliegt, wird das Warten sofort mit -1 als Rueckgabewert beendet.

Der Timeoutwert bricht beim Erreichen das Warten sofort mit Wert 2 Rueckgabewert ab. (Das Timeout wird ueber die Zykluszeit der auto_refresh Funktion berechnet, entspricht also nicht exact den angegeben Millisekunden! Es wird immer nach oben gerundet!)

device
Device auf dem sich der IO befindet
io
Name des IOs auf dessen Aenderung gewartet wird
kwargs
Weitere Parameter: - edge: Flanke RISING, FALLING, BOTH bei der mit True beendet wird - exitevent: thrading.Event() fuer vorzeitiges Beenden mit False - okvalue: IO-Wert, bei dem das Warten sofort mit True beendet wird - timeout: Zeit in ms nach der mit False abgebrochen wird
Returns:
int() erfolgreich Werte <= 0 - Erfolgreich gewartet Wert 0: IO hat den Wert gewechselt Wert -1: okvalue stimmte mit IO ueberein - Fehlerhaft gewartet Wert 1: exitevent wurde gesetzt Wert 2: timeout abgelaufen Wert 100: RevPiDevicelist.exit() wurde aufgerufen

RevPiDevicelist.writedefaultinputs

writedefaultinputs(virtual_device)

Schreibt fuer ein virtuelles Device piCtory Defaultinputwerte.

Sollten in piCtory Defaultwerte fuer Inputs eines virtuellen Devices angegeben sein, werden diese nur beim Systemstart oder einem piControl Reset gesetzt. Sollte danach das Prozessabbild mit NULL ueberschrieben, gehen diese Werte verloren. Diese Funktion kann nur auf virtuelle Devices angewendet werden!

virtual_device
Virtuelles Device fuer Wiederherstellung
Returns:
True, wenn Arbeiten am virtuellen Device erfolgreich waren

RevPiDevicelist.writeprocimg

writeprocimg(force=False, device=None)

Schreiben aller Outputs aller Devices ins Prozessabbild.

force
auch Devices mit autoupdate=False
device
nur auf einzelnes Device anwenden
Returns:
True, wenn Arbeiten an allen Devices erfolgreich waren
Up


RevPiGateway

Klasse fuer die RevPi Gateway-Devices.

Stellt neben den Funktionen von RevPiDevice weitere Funktionen fuer die Gateways bereit. Es koennen ueber die reg_*-Funktionen eigene IOs definiert werden, die ein RevPiStructIO-Objekt abbilden. Dieser IO-Typ kann Werte ueber mehrere Bytes verarbeiten und zurueckgeben.

Derived from

RevPiDevice

Class Attributes

None

Class Methods

None

Methods

RevPiGateway Erweitert RevPiDevice um reg_*-Funktionen.
_create_io Erstellt einen neuen IO und ersetzt den/die Bestehenden.
_getbytename Ermittelt den Namen eines IOs auf der Byteadresse.
_replace_io Ersetzt bestehende IOs durch den neu Registrierten.
get_rawbytes Gibt die Bytes aus, die dieses Device verwendet.
reg_inp Registriert einen neuen Input.
reg_mem Registriert einen neuen Memory.
reg_out Registriert einen neuen Output.

Static Methods

None

RevPiGateway (Constructor)

RevPiGateway(dict_device, **kwargs)

Erweitert RevPiDevice um reg_*-Funktionen.

See Also:
RevPiDevice.__init__(...)

RevPiGateway._create_io

_create_io(name, startio, frm, io_type, **kwargs)

Erstellt einen neuen IO und ersetzt den/die Bestehenden.

name
Name des neuen IO
startio
IO ab dem eingefuegt wird
frm
struct() formatierung (1 Zeichen)
io_type
IO-Type "inp", "out", "mem"
kwargs
Weitere Parameter: - bmk: Bezeichnung fuer IO - bit: Registriert IO als bool() am angegebenen Bit im Byte - byteorder: Byteorder fuer diesen IO, Standardwert=little - defaultvalue: Standardwert fuer IO, Standard ist 0

RevPiGateway._getbytename

_getbytename(iobyte)

Ermittelt den Namen eines IOs auf der Byteadresse.

iobyte
Bytenummer
Returns:
IO-Namen

RevPiGateway._replace_io

_replace_io(io)

Ersetzt bestehende IOs durch den neu Registrierten.

io
IO ab dem der Neue eingefuegt werden soll

RevPiGateway.get_rawbytes

get_rawbytes()

Gibt die Bytes aus, die dieses Device verwendet.

Returns:
bytes() des Devices

RevPiGateway.reg_inp

reg_inp(name, startinp, frm, **kwargs)

Registriert einen neuen Input.

name
Name des neuen Inputs
startinp
Inputname ab dem eingefuegt wird
frm
struct() formatierung (1 Zeichen)
kwargs
Weitere Parameter: - bmk: Bezeichnung fuer Input - bit: Registriert Input als bool() am angegebenen Bit im Byte - byteorder: Byteorder fuer den Input, Standardwert=little - defaultvalue: Standardwert fuer Input, Standard ist 0 - event: Funktion fuer Eventhandling registrieren - as_thread: Fuehrt die event-Funktion als RevPiCallback-Thread aus - edge: event-Ausfuehren bei RISING, FALLING or BOTH Wertaenderung
See Also:
Python3 struct()

RevPiGateway.reg_mem

reg_mem(name, startmem, frm, **kwargs)

Registriert einen neuen Memory.

name
Name des neuen Memory
startinp
Memname ab dem eingefuegt wird
frm
struct() formatierung (1 Zeichen)
kwargs
Weitere Parameter: - bmk: Bezeichnung fuer Memory - bit: Registriert Memory als bool() am angegebenen Bit im Byte - byteorder: Byteorder fuer den Memory, Standardwert=little - defaultvalue: Standardwert fuer Memory, Standard ist 0
See Also:
Python3 struct()

RevPiGateway.reg_out

reg_out(name, startout, frm, **kwargs)

Registriert einen neuen Output.

name
Name des neuen Outputs
startout
Outputname ab dem eingefuegt wird
frm
struct() formatierung (1 Zeichen)
kwargs
Weitere Parameter: - bmk: Bezeichnung fuer Output - bit: Registriert Outputs als bool() am angegebenen Bit im Byte - byteorder: Byteorder fuer den Output, Standardwert=little - defaultvalue: Standardwert fuer Output, Standard ist 0 - event: Funktion fuer Eventhandling registrieren - as_thread: Fuehrt die event-Funktion als RevPiCallback-Thread aus - edge: event-Ausfuehren bei RISING, FALLING or BOTH Wertaenderung
See Also:
Python3 struct()
Up


RevPiIO

Klasse fuer den Zugriff auf die Daten mit Konvertierung in int().

Diese Klasse erweitert die Funktion von RevPiIOBase() um Funktionen, ueber die mit int() Werten gearbeitet werden kann. Fuer die Umwandlung koennen 'Byteorder' (Default 'little') und 'signed' (Default False) als Parameter gesetzt werden.

See Also:
RevPiIOBase

Derived from

RevPiIOBase

Class Attributes

byteorder
signed
value

Class Methods

None

Methods

__int__ Gibt IO als int() Wert zurueck mit Beachtung byteorder/signed.
_get_signed Ruft ab, ob der Wert Vorzeichenbehaftet behandelt werden soll.
_set_byteorder Setzt Byteorder fuer int() Umwandlung.
_set_signed Left fest, ob der Wert Vorzeichenbehaftet behandelt werden soll.
get_int Gibt IO als int() Wert zurueck mit Beachtung byteorder/signed.
set_int Setzt IO mit Beachtung byteorder/signed.

Static Methods

None

RevPiIO.__int__

__int__()

Gibt IO als int() Wert zurueck mit Beachtung byteorder/signed.

Returns:
int() Wert

RevPiIO._get_signed

_get_signed()

Ruft ab, ob der Wert Vorzeichenbehaftet behandelt werden soll.

Returns:
True, wenn Vorzeichenbehaftet

RevPiIO._set_byteorder

_set_byteorder(value)

Setzt Byteorder fuer int() Umwandlung.

value
str() 'little' or 'big'

RevPiIO._set_signed

_set_signed(value)

Left fest, ob der Wert Vorzeichenbehaftet behandelt werden soll.

value
True, wenn mit Vorzeichen behandel

RevPiIO.get_int

get_int()

Gibt IO als int() Wert zurueck mit Beachtung byteorder/signed.

Returns:
int() Wert

RevPiIO.set_int

set_int(value)

Setzt IO mit Beachtung byteorder/signed.

value
int()
Up


RevPiIOBase

Basisklasse fuer alle IO-Objekte der RevPiDevice()-Klasse.

Die Basisfunktionalitaet ermoeglicht das Lesen und Schreiben der Werte als bytes() oder bool(). Dies entscheidet sich bei der Instantiierung. Wenn eine Bittadresse angegeben wird, werden bool()-Werte erwartet und zurueckgegeben, ansonsten bytes().

Diese Klasse dient als Basis fuer andere IO-Klassen mit denen die Werte auch als int() verwendet werden koennen.

Derived from

object

Class Attributes

name
value

Class Methods

None

Methods

RevPiIOBase Instantiierung der RevPiIOBase()-Klasse.
__bool__ bool()-wert der Klasse.
__bytes__ bytes()-wert der Klasse.
__str__ str()-wert der Klasse.
_get_byteorder Gibt konfigurierte Byteorder zurueck.
get_absaddress Gibt die absolute Byteadresse im Prozessabbild zurueck.
get_address Gibt die Byteadresse auf dem Device zurueck.
get_name Gibt den Namen des IOs zurueck.
get_value Gibt den Wert des IOs als bytes() oder bool() zurueck.
set_value Setzt den Wert des IOs mit bytes() oder bool().

Static Methods

None

RevPiIOBase (Constructor)

RevPiIOBase(offset, valuelist, readonly, byteproc, byteorder, signed=False)

Instantiierung der RevPiIOBase()-Klasse.

offset
Deviceoffset
valuelist
Datenliste fuer Instantiierung
readonly
True bei Inp und mem, False bei out
byteproc
bytearray() Daten des Devices
byteorder
Byteorder 'little' / 'big' fuer int() Berechnung
signed
Vorzeichen bei int() Berechnung beruecksichtigen

RevPiIOBase.__bool__

__bool__()

bool()-wert der Klasse.

Returns:
IO-Wert als bool(). Nur False wenn False oder 0 sonst True

RevPiIOBase.__bytes__

__bytes__()

bytes()-wert der Klasse.

Returns:
IO-Wert als bytes()

RevPiIOBase.__str__

__str__()

str()-wert der Klasse.

Returns:
Namen des IOs

RevPiIOBase._get_byteorder

_get_byteorder()

Gibt konfigurierte Byteorder zurueck.

Returns:
str() Byteorder

RevPiIOBase.get_absaddress

get_absaddress()

Gibt die absolute Byteadresse im Prozessabbild zurueck.

Returns:
Absolute Byteadresse

RevPiIOBase.get_address

get_address()

Gibt die Byteadresse auf dem Device zurueck.

Returns:
Byteadresse auf dem Device

RevPiIOBase.get_name

get_name()

Gibt den Namen des IOs zurueck.

Returns:
IO Name

RevPiIOBase.get_value

get_value()

Gibt den Wert des IOs als bytes() oder bool() zurueck.

Returns:
IO-Wert

RevPiIOBase.set_value

set_value(value)

Setzt den Wert des IOs mit bytes() oder bool().

value
IO-Wert als bytes() oder bool()
Up


RevPiModIO

Klasse fuer die Verwaltung aller piCtory Informationen.

Diese Klasse uebernimmt die gesamte Konfiguration aus piCtory und bilded die Devices und IOs ab. Sie uebernimmt die exklusive Verwaltung des Prozessabbilds und stellt sicher, dass die Daten synchron sind. Sollten nur einzelne Devices gesteuert werden, verwendet man RevPiModIOSelected() und uebergibt bei Instantiierung eine Liste mit Device Positionen oder Device Namen.

Derived from

None

Class Attributes

None

Class Methods

None

Methods

RevPiModIO Instantiiert die Grundfunktionen.
__del__ Zerstoert alle Klassen um auzuraeumen.
_evt_exit Eventhandler fuer Programmende.
cleanup Beendet auto_refresh und alle Threads.
configure Verarbeitet die piCtory Konfigurationsdatei.
exit Beendet mainloop() und optional auto_refresh.
get_jconfigrsc Laed die piCotry Konfiguration und erstellt ein dict().
handlesignalend Signalhandler fuer Programmende verwalten.
mainloop Startet den Mainloop mit Eventueberwachung.

Static Methods

None

RevPiModIO (Constructor)

RevPiModIO(**kwargs)

Instantiiert die Grundfunktionen.

kwargs
Weitere Parameter: - auto_refresh: Wenn True, alle Devices zu auto_refresh hinzufuegen - configrsc: Pfad zur piCtory Konfigurationsdatei - procimg: Pfad zum Prozessabbild - monitoring: In- und Outputs werden gelesen, niemals geschrieben - simulator: Laed das Modul als Simulator und vertauscht IOs - syncoutputs: Aktuell gesetzte Outputs vom Prozessabbild einlesen

RevPiModIO.__del__

__del__()

Zerstoert alle Klassen um auzuraeumen.

RevPiModIO._evt_exit

_evt_exit(signum, sigframe)

Eventhandler fuer Programmende.

signum
Signalnummer
sigframe
Signalframe

RevPiModIO.cleanup

cleanup()

Beendet auto_refresh und alle Threads.

RevPiModIO.configure

configure()

Verarbeitet die piCtory Konfigurationsdatei.

RevPiModIO.exit

exit(full=True)

Beendet mainloop() und optional auto_refresh.

See Also:
RevPiDevicelist.exit(...)

RevPiModIO.get_jconfigrsc

get_jconfigrsc()

Laed die piCotry Konfiguration und erstellt ein dict().

Returns:
dict() der piCtory Konfiguration

RevPiModIO.handlesignalend

handlesignalend(cleanupfunc=None)

Signalhandler fuer Programmende verwalten.

Wird diese Funktion aufgerufen, uebernimmt RevPiModIO die SignalHandler fuer SIGINT und SIGTERM. Diese werden Empfangen, wenn das Betriebssystem oder der Benutzer das Steuerungsprogramm sauber beenden will.

Die optionale Funktion "cleanupfunc" wird als letztes nach dem letzten Einlesen der Inputs ausgefuehrt. Dort gesetzte Outputs werden nach Ablauf der Funktion ein letztes Mal geschrieben. Gedacht ist dies fuer Aufraeumarbeiten, wie z.B. das abschalten der LEDs am RevPi-Core.

Nach einmaligem Empfangen eines der Signale und dem Beenden der RevPiModIO Thrads / Funktionen werden die SignalHandler wieder freigegeben.

cleanupfunc
Funktion wird nach dem letzten Lesen der Inputs ausgefuehrt, gefolgt vom letzten Schreiben der Outputs

RevPiModIO.mainloop

mainloop(freeze=False, blocking=True)

Startet den Mainloop mit Eventueberwachung.

See Also:
RevPiDevicelist.mainloop(...)
Up


RevPiModIODriver

Klasse um eigene Treiber fuer die virtuellen Devices zu erstellen.

Mit dieser Klasse werden nur angegebene Virtuelle Devices mit RevPiModIO verwaltet. Bei Instantiierung werden automatisch die Inputs und Outputs verdreht, um das Schreiben der Inputs zu ermoeglichen. Die Daten koennen dann ueber logiCAD an den Devices abgerufen werden.

Derived from

RevPiModIOSelected

Class Attributes

None

Class Methods

None

Methods

RevPiModIODriver Instantiiert die Grundfunktionen.

Static Methods

None

RevPiModIODriver (Constructor)

RevPiModIODriver(vdev, **kwargs)

Instantiiert die Grundfunktionen.

vdev
Virtuelles Device fuer die Verwendung / oder list()
kwargs
Weitere Parameter (nicht monitoring und simulator)
See Also:
RevPiModIO.__init__(...)
Up


RevPiModIOSelected

Klasse fuer die Verwaltung einzelner Devices aus piCtory.

Diese Klasse uebernimmt nur angegebene Devices der piCtory Konfiguration und bilded sie inkl. IOs ab. Sie uebernimmt die exklusive Verwaltung des Adressbereichs im Prozessabbild an dem sich die angegebenen Devices befinden und stellt sicher, dass die Daten synchron sind.

Derived from

RevPiModIO

Class Attributes

None

Class Methods

None

Methods

RevPiModIOSelected Instantiiert nur fuer angegebene Devices die Grundfunktionen.

Static Methods

None

RevPiModIOSelected (Constructor)

RevPiModIOSelected(deviceselection, **kwargs)

Instantiiert nur fuer angegebene Devices die Grundfunktionen.

Der Parameter deviceselection kann eine einzelne Device Position / einzelner Device Name sein oder eine Liste mit mehreren Positionen / Namen

deviceselection
Positionsnummer oder Devicename
kwargs
Weitere Parameter
See Also:
RevPiModIO.__init__(...)
Up


RevPiProcimgWriter

Klasse fuer Synchroniseriungs-Thread.

Diese Klasse wird als Thread gestartet, wenn das Prozessabbild zyklisch synchronisiert werden soll. Diese Funktion wird hauptsaechlich fuer das Event-Handling verwendet.

Derived from

Thread

Class Attributes

refresh

Class Methods

None

Methods

RevPiProcimgWriter Init RevPiProcimgWriter class.
_create_myfh Erstellt FileObject.
_gotioerror IOError Verwaltung fuer auto_refresh.
get_refresh Gibt Zykluszeit zurueck.
run Startet die automatische Prozessabbildsynchronisierung.
set_refresh Setzt die Zykluszeit in Millisekunden.
stop Beendet die automatische Prozessabbildsynchronisierung.

Static Methods

None

RevPiProcimgWriter (Constructor)

RevPiProcimgWriter(procimg, length, refreshlist, monitoring)

Init RevPiProcimgWriter class.

procimg
Dateiname des piControl Devices
length
Laenge des benutzen Speicherbereichs
refreshlist
list() mit devices fuer Aktualisierung
monitoring
In- und Outputs werden gelesen, niemals geschrieben

RevPiProcimgWriter._create_myfh

_create_myfh(path)

Erstellt FileObject. param path Pfad zur Datei return FileObject

RevPiProcimgWriter._gotioerror

_gotioerror()

IOError Verwaltung fuer auto_refresh.

RevPiProcimgWriter.get_refresh

get_refresh()

Gibt Zykluszeit zurueck.

Returns:
int() Zykluszeit in Millisekunden

RevPiProcimgWriter.run

run()

Startet die automatische Prozessabbildsynchronisierung.

RevPiProcimgWriter.set_refresh

set_refresh(value)

Setzt die Zykluszeit in Millisekunden.

value
int() Millisekunden

RevPiProcimgWriter.stop

stop()

Beendet die automatische Prozessabbildsynchronisierung.

Up


RevPiStructIO

Klasse fuer den Zugriff auf Daten ueber ein definierten struct().

Diese Klasse ueberschreibt get_value() und set_value() der RevPiIOBase() Klasse. Sie stellt ueber struct die Werte in der gewuenschten Formatierung bereit. Der struct-Formatwert wird bei der Instantiierung festgelegt.

See Also:
RevPiIOBase

Derived from

RevPiIOBase

Class Attributes

byteorder
value

Class Methods

None

Methods

RevPiStructIO Erweitert RevPiIOBase um struct-Formatierung.
get_structvalue Gibt den Wert mit struct Formatierung zurueck.
set_structvalue Setzt den Wert mit struct Formatierung.

Static Methods

None

RevPiStructIO (Constructor)

RevPiStructIO(offset, valuelist, readonly, byteproc, byteorder, frm)

Erweitert RevPiIOBase um struct-Formatierung.

See Also:
RevPiIOBase.__init__(...)

RevPiStructIO.get_structvalue

get_structvalue()

Gibt den Wert mit struct Formatierung zurueck.

Returns:
Wert vom Typ der struct-Formatierung

RevPiStructIO.set_structvalue

set_structvalue(value)

Setzt den Wert mit struct Formatierung.

value
Wert vom Typ der struct-Formatierung
Up


RevPiSummary

Bildet die Summary Sektion der config.rsc ab.

Derived from

object

Class Attributes

None

Class Methods

None

Methods

RevPiSummary Instantiiert die RevPiSummary-Klasse.

Static Methods

None

RevPiSummary (Constructor)

RevPiSummary(summary)

Instantiiert die RevPiSummary-Klasse.

summary
piCtory Summaryinformationen
Up


RevPiVirtual

Klasse fuer die RevPi Virtual-Devices.

Stellt die selben Funktionen wie RevPiGateway zur Verfuegung. Es koennen ueber die reg_*-Funktionen eigene IOs definiert werden, die ein RevPiStructIO-Objekt abbilden. Dieser IO-Typ kann Werte ueber mehrere Bytes verarbeiten und zurueckgeben.

See Also:
RevPiGateway

Derived from

RevPiGateway

Class Attributes

None

Class Methods

None

Methods

None

Static Methods

None
Up