revpimodio2 package¶
Submodules¶
revpimodio2.app module¶
Bildet die App Sektion von piCtory ab.
revpimodio2.device module¶
Modul fuer die Verwaltung der Devices.
- class revpimodio2.device.Base(parentmodio, dict_device, simulator=False)[source]¶
Bases:
DeviceKlasse fuer alle Base-Devices wie Core / Connect usw.
- class revpimodio2.device.Compact(parentmodio, dict_device, simulator=False)[source]¶
Bases:
BaseKlasse fuer den RevPi Compact.
Stellt Funktionen fuer die LEDs zur Verfuegung. Auf IOs wird ueber das .io Objekt zugegriffen.
- property A1: int¶
Gibt den Zustand der LED A1 vom Compact zurueck.
- Returns:
0=aus, 1=gruen, 2=rot
- property A2: int¶
Gibt den Zustand der LED A2 vom Compact zurueck.
- Returns:
0=aus, 1=gruen, 2=rot
- a1green¶
- a1red¶
- a2green¶
- a2red¶
- property frequency: int¶
Gibt CPU Taktfrequenz zurueck.
- Returns:
CPU Taktfrequenz in MHz (-1 wenn nicht verfuegbar)
- property temperature: int¶
Gibt CPU-Temperatur zurueck.
- Returns:
CPU-Temperatur in Celsius (-273 wenn nich verfuegbar)
- wd¶
- class revpimodio2.device.Connect(parentmodio, dict_device, simulator=False)[source]¶
Bases:
CoreKlasse fuer den RevPi Connect.
Stellt Funktionen fuer die LEDs, Watchdog und den Status zur Verfuegung.
- property A3: int¶
Gibt den Zustand der LED A3 vom Connect zurueck.
- Returns:
0=aus, 1=gruen, 2=rot
- a3green¶
- a3red¶
- property wdautotoggle: bool¶
Ruft den Wert fuer Autowatchdog ab.
- Returns:
True, wenn Autowatchdog aktiv ist
- x2in¶
- x2out¶
- class revpimodio2.device.Connect4(parentmodio, dict_device, simulator=False)[source]¶
Bases:
ModularBaseConnect_4_5Klasse fuer den RevPi Connect 4.
Stellt Funktionen fuer die LEDs und den Status zur Verfuegung.
- x2in¶
- x2out¶
- class revpimodio2.device.Connect5(parentmodio, dict_device, simulator=False)[source]¶
Bases:
ModularBaseConnect_4_5,GatewayMixinKlasse fuer den RevPi Connect 5.
Stellt Funktionen fuer die LEDs und den Status zur Verfuegung.
- a1blue¶
- a1green¶
- a1red¶
- a2blue¶
- a2green¶
- a2red¶
- a3blue¶
- a3green¶
- a3red¶
- a4blue¶
- a4green¶
- a4red¶
- a5blue¶
- a5green¶
- a5red¶
- class revpimodio2.device.Core(parentmodio, dict_device, simulator=False)[source]¶
Bases:
ModularBase,GatewayMixinKlasse fuer den RevPi Core.
Stellt Funktionen fuer die LEDs und den Status zur Verfuegung.
- property A1: int¶
Gibt den Zustand der LED A1 vom Core zurueck.
- Returns:
0=aus, 1=gruen, 2=rot
- property A2: int¶
Gibt den Zustand der LED A2 vom Core zurueck.
- Returns:
0=aus, 1=gruen, 2=rot
- a1green¶
- a1red¶
- a2green¶
- a2red¶
- wd¶
- class revpimodio2.device.Device(parentmodio, dict_device, simulator=False)[source]¶
Bases:
objectBasisklasse fuer alle Device-Objekte.
Die Basisfunktionalitaet generiert bei Instantiierung alle IOs und erweitert den Prozessabbildpuffer um die benoetigten Bytes. Sie verwaltet ihren Prozessabbildpuffer und sorgt fuer die Aktualisierung der IO-Werte.
- autorefresh(activate=True) None[source]¶
Registriert dieses Device fuer die automatische Synchronisierung.
- Parameters:
activate – Default True fuegt Device zur Synchronisierung hinzu
- bmk¶
- catalognr¶
- comment¶
- extend¶
- get_allios(export=None) list[source]¶
Gibt eine Liste aller Inputs und Outputs zurueck, keine MEMs.
Bleibt Parameter ‘export’ auf None werden alle Inputs und Outputs zurueckgegeben. Wird ‘export’ auf True/False gesetzt, werden nur Inputs und Outputs zurueckgegeben, bei denen der Wert ‘Export’ in piCtory uebereinstimmt.
- Parameters:
export – Nur In-/Outputs mit angegebenen ‘Export’ Wert in piCtory
- Returns:
<class ‘list’> Input und Output, keine MEMs
- get_inputs(export=None) list[source]¶
Gibt eine Liste aller Inputs zurueck.
Bleibt Parameter ‘export’ auf None werden alle Inputs zurueckgegeben. Wird ‘export’ auf True/False gesetzt, werden nur Inputs zurueckgegeben, bei denen der Wert ‘Export’ in piCtory uebereinstimmt.
- Parameters:
export – Nur Inputs mit angegebenen ‘Export’ Wert in piCtory
- Returns:
<class ‘list’> Inputs
- get_memories(export=None) list[source]¶
Gibt eine Liste aller Memoryobjekte zurueck.
Bleibt Parameter ‘export’ auf None werden alle Mems zurueckgegeben. Wird ‘export’ auf True/False gesetzt, werden nur Mems zurueckgegeben, bei denen der Wert ‘Export’ in piCtory uebereinstimmt.
- Parameters:
export – Nur Mems mit angegebenen ‘Export’ Wert in piCtory
- Returns:
<class ‘list’> Mems
- get_outputs(export=None) list[source]¶
Gibt eine Liste aller Outputs zurueck.
Bleibt Parameter ‘export’ auf None werden alle Outputs zurueckgegeben. Wird ‘export’ auf True/False gesetzt, werden nur Outputs zurueckgegeben, bei denen der Wert ‘Export’ in piCtory uebereinstimmt.
- Parameters:
export – Nur Outputs mit angegebenen ‘Export’ Wert in piCtory
- Returns:
<class ‘list’> Outputs
- guid¶
- id¶
- inpvariant¶
- property length¶
Gibt Anzahl der Bytes zurueck, die dieses Device belegt.
- Returns:
<class ‘int’>
- property name¶
Gibt den Namen des Devices zurueck.
- Returns:
Devicename
- property offset: int¶
Gibt den Deviceoffset im Prozessabbild zurueck.
- Returns:
Deviceoffset
- outvariant¶
- property position¶
Gibt die Positon im RevPi Bus zurueck.
- Returns:
Positionsnummer
- property producttype: int¶
Gibt den Produkttypen des device zurueck.
- Returns:
Deviceprodukttyp
- readprocimg() bool[source]¶
Alle Inputs fuer dieses Device vom Prozessabbild einlesen.
Same see
- Returns:
True, wenn erfolgreich ausgefuehrt
- Ref:
- setdefaultvalues() None[source]¶
Alle Outputbuffer fuer dieses Device auf default Werte setzen.
- Returns:
True, wenn erfolgreich ausgefuehrt
- Ref:
Activate sharing of process image just for this device.
- Parameters:
activate – Set True to activate process image sharing
- syncoutputs() bool[source]¶
Lesen aller Outputs im Prozessabbild fuer dieses Device.
- Returns:
True, wenn erfolgreich ausgefuehrt
- Ref:
- type¶
- class revpimodio2.device.DeviceList[source]¶
Bases:
objectBasisklasse fuer direkten Zugriff auf Device Objekte.
- class revpimodio2.device.DioModule(parentmodio, dict_device, simulator=False)[source]¶
Bases:
DeviceStellt ein DIO / DI / DO Modul dar.
- class revpimodio2.device.Flat(parentmodio, dict_device, simulator=False)[source]¶
Bases:
BaseKlasse fuer den RevPi Flat.
Stellt Funktionen fuer die LEDs zur Verfuegung. Auf IOs wird ueber das .io Objekt zugegriffen.
- property A1: int¶
Get value of LED A1 from RevPi Flat device.
- Returns:
0=off, 1=green, 2=red
- property A2: int¶
Get value of LED A2 from RevPi Flat device.
- Returns:
0=off, 1=green, 2=red
- property A3: int¶
Get value of LED A3 from RevPi Flat device.
- Returns:
0=off, 1=green, 2=red
- property A4: int¶
Get value of LED A4 from RevPi Flat device.
- Returns:
0=off, 1=green, 2=red
- property A5: int¶
Get value of LED A5 from RevPi Flat device.
- Returns:
0=off, 1=green, 2=red
- a1green¶
- a1red¶
- a2green¶
- a2red¶
- a3green¶
- a3red¶
- a4green¶
- a4red¶
- a5green¶
- a5red¶
- property frequency: int¶
Gibt CPU Taktfrequenz zurueck.
- Returns:
CPU Taktfrequenz in MHz (-1 wenn nicht verfuegbar)
- relais¶
- switch¶
- property temperature: int¶
Gibt CPU-Temperatur zurueck.
- Returns:
CPU-Temperatur in Celsius (-273 wenn nich verfuegbar)
- wd¶
- class revpimodio2.device.Gateway(parent, dict_device, simulator=False)[source]¶
Bases:
DeviceKlasse fuer die RevPi Gateway-Devices.
Stellt neben den Funktionen von RevPiDevice weitere Funktionen fuer die Gateways bereit. IOs auf diesem Device stellen die replace_io Funktion zur verfuegung, ueber die eigene IOs definiert werden, die ein RevPiStructIO-Objekt abbilden. Dieser IO-Typ kann Werte ueber mehrere Bytes verarbeiten und zurueckgeben.
- class revpimodio2.device.GatewayMixin[source]¶
Bases:
object- property leftgate: bool¶
Statusbit links vom RevPi ist ein piGate Modul angeschlossen.
- Returns:
True, wenn piGate links existiert
- property rightgate: bool¶
Statusbit rechts vom RevPi ist ein piGate Modul angeschlossen.
- Returns:
True, wenn piGate rechts existiert
- class revpimodio2.device.ModularBase(parentmodio, dict_device, simulator=False)[source]¶
Bases:
BaseKlasse fuer alle modularen Base-Devices wie Core / Connect usw..
Stellt Funktionen fuer den Status zur Verfuegung.
- property errorlimit1: int¶
Gibt RS485 ErrorLimit1 Wert zurueck.
- Returns:
Aktueller Wert fuer ErrorLimit1 (-1 wenn nicht verfuegbar)
- property errorlimit2: int¶
Gibt RS485 ErrorLimit2 Wert zurueck.
- Returns:
Aktueller Wert fuer ErrorLimit2 (-1 wenn nicht verfuegbar)
- property frequency: int¶
Gibt CPU Taktfrequenz zurueck.
- Returns:
CPU Taktfrequenz in MHz (-1 wenn nicht verfuegbar)
- property iocycle: int¶
Gibt Zykluszeit der Prozessabbildsynchronisierung zurueck.
- Returns:
Zykluszeit in ms ( -1 wenn nicht verfuegbar)
- property ioerrorcount: int¶
Gibt Fehleranzahl auf RS485 piBridge Bus zurueck.
- Returns:
Fehleranzahl der piBridge (-1 wenn nicht verfuegbar)
- property missingdeviceorgate: bool¶
Statusbit fuer ein IO-Modul fehlt oder piGate konfiguriert.
- Returns:
True, wenn IO-Modul fehlt oder piGate konfiguriert
- property overunderflow: bool¶
Statusbit Modul belegt mehr oder weniger Speicher als konfiguriert.
- Returns:
True, wenn falscher Speicher belegt ist
- property picontrolrunning: bool¶
Statusbit fuer piControl-Treiber laeuft.
- Returns:
True, wenn Treiber laeuft
- property status: int¶
Gibt den RevPi Core Status zurueck.
- Returns:
Status als <class ‘int’>
- property temperature: int¶
Gibt CPU-Temperatur zurueck.
- Returns:
CPU-Temperatur in Celsius (-273 wenn nich verfuegbar)
- property unconfdevice: bool¶
Statusbit fuer ein IO-Modul nicht mit PiCtory konfiguriert.
- Returns:
True, wenn IO Modul nicht konfiguriert
- class revpimodio2.device.ModularBaseConnect_4_5(parentmodio, dict_device, simulator=False)[source]¶
Bases:
ModularBaseClass for overlapping functions of Connect 4/5.
- property A1: int¶
Gibt den Zustand der LED A1 vom Connect zurueck.
- Returns:
0=aus, 1=gruen, 2=root, 4=blau, mixed RGB colors
- property A2: int¶
Gibt den Zustand der LED A2 vom Core zurueck.
- Returns:
0=aus, 1=gruen, 2=root, 4=blau, mixed RGB colors
- property A3: int¶
Gibt den Zustand der LED A3 vom Core zurueck.
- Returns:
0=aus, 1=gruen, 2=root, 4=blau, mixed RGB colors
- property A4: int¶
Gibt den Zustand der LED A4 vom Core zurueck.
- Returns:
0=aus, 1=gruen, 2=root, 4=blau, mixed RGB colors
- property A5: int¶
Gibt den Zustand der LED A5 vom Core zurueck.
- Returns:
0=aus, 1=gruen, 2=root, 4=blau, mixed RGB colors
- a1blue¶
- a1green¶
- a1red¶
- a2blue¶
- a2green¶
- a2red¶
- a3blue¶
- a3green¶
- a3red¶
- a4blue¶
- a4green¶
- a4red¶
- a5blue¶
- a5green¶
- a5red¶
- class revpimodio2.device.RoModule(parentmodio, dict_device, simulator=False)[source]¶
Bases:
DeviceRelais output (RO) module with
- bmk¶
- catalognr¶
- comment¶
- extend¶
- guid¶
- id¶
- inpvariant¶
- outvariant¶
- type¶
- class revpimodio2.device.Virtual(parent, dict_device, simulator=False)[source]¶
Bases:
GatewayKlasse fuer die RevPi Virtual-Devices.
Stellt die selben Funktionen wie Gateway 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.
- Ref:
- writeinputdefaults()[source]¶
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!
- Returns:
True, wenn Arbeiten am virtuellen Device erfolgreich waren
revpimodio2.errors module¶
Error classes of RevPiModIO.
- exception revpimodio2.errors.DeviceNotFoundError[source]¶
Bases:
RevPiModIOError
revpimodio2.helper module¶
RevPiModIO Helperklassen und Tools.
- class revpimodio2.helper.Cycletools(cycletime, revpi_object)[source]¶
Bases:
objectWerkzeugkasten 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 Cycletools.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.
- changed(io: IOBase, edge=33)[source]¶
Check change of IO value from last to this cycle.
It will always be False on the first use of this function with an IO object.
- Parameters:
io – IO to check for changes to last cycle
edge – Check for rising or falling on bit io objects
- Returns:
True, if IO value changed
- core¶
- device¶
- first¶
- flag10c¶
- flag15c¶
- flag1c¶
- flag20c¶
- flag5c¶
- flank10c¶
- flank15c¶
- flank20c¶
- flank5c¶
- get_tof(name: str) bool[source]¶
Wert der Ausschaltverzoegerung.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> der Ausschaltverzoegerung
- get_tofc(name: str) bool[source]¶
Wert der Ausschaltverzoegerung.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> der Ausschaltverzoegerung
- get_ton(name: str) bool[source]¶
Einschaltverzoegerung.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> der Einschaltverzoegerung
- get_tonc(name: str) bool[source]¶
Einschaltverzoegerung.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> der Einschaltverzoegerung
- get_tp(name: str) bool[source]¶
Impulstimer.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> des Impulses
- get_tpc(name: str) bool[source]¶
Impulstimer.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> des Impulses
- io¶
- last¶
- property runtime: float¶
Runtime im milliseconds of cycle function till now.
This property will return the actual runtime of the function. So on the beginning of your function it will be about 0 and will rise during the runtime to the max in the last line of your function.
- set_tof(name: str, milliseconds: int) None[source]¶
Startet bei Aufruf einen ausschaltverzoegerten Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
milliseconds – Verzoegerung in Millisekunden
- set_tofc(name: str, cycles: int) None[source]¶
Startet bei Aufruf einen ausschaltverzoegerten Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
cycles – Zyklusanzahl, der Verzoegerung wenn nicht neu gestartet
- set_ton(name: str, milliseconds: int) None[source]¶
Startet einen einschaltverzoegerten Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
milliseconds – Millisekunden, der Verzoegerung wenn neu gestartet
- set_tonc(name: str, cycles: int) None[source]¶
Startet einen einschaltverzoegerten Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
cycles – Zyklusanzahl, der Verzoegerung wenn neu gestartet
- set_tp(name: str, milliseconds: int) None[source]¶
Startet einen Impuls Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
milliseconds – Millisekunden, die der Impuls anstehen soll
- set_tpc(name: str, cycles: int) None[source]¶
Startet einen Impuls Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
cycles – Zyklusanzahl, die der Impuls anstehen soll
- var¶
- class revpimodio2.helper.EventCallback(func, name: str, value)[source]¶
Bases:
ThreadThread 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 EventCallback.ioname kann der Name des IO-Objekts abgerufen werden, welches das Event ausgeloest hast. EventCallback.iovalue gibt den Wert des IO-Objekts zum Ausloesezeitpunkt zurueck. Der Thread stellt das EventCallback.exit Event als Abbruchbedingung fuer die aufgerufene Funktion zur Verfuegung. Durch Aufruf der Funktion EventCallback.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)
- daemon¶
- exit¶
- func¶
- ioname¶
- iovalue¶
- class revpimodio2.helper.ProcimgWriter(parentmodio)[source]¶
Bases:
ThreadKlasse 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.
- daemon¶
- get_refresh() int[source]¶
Gibt Zykluszeit zurueck.
- Returns:
<class ‘int’> Zykluszeit in Millisekunden
- lck_refresh¶
- newdata¶
- property refresh: int¶
Gibt Zykluszeit zurueck.
- Returns:
<class ‘int’> Zykluszeit in Millisekunden
revpimodio2.io module¶
RevPiModIO Modul fuer die Verwaltung der IOs.
- class revpimodio2.io.DeadIO(deadio)[source]¶
Bases:
objectKlasse, mit der ersetzte IOs verwaltet werden.
- class revpimodio2.io.IOBase(parentdevice, valuelist: list, iotype: int, byteorder: str, signed: bool)[source]¶
Bases:
objectBasisklasse fuer alle IO-Objekte.
Die Basisfunktionalitaet ermoeglicht das Lesen und Schreiben der Werte als <class bytes’> oder <class ‘bool’>. Dies entscheidet sich bei der Instantiierung. Wenn eine Bittadresse angegeben wird, werden <class ‘bool’>-Werte erwartet und zurueckgegeben, ansonsten <class bytes’>.
Diese Klasse dient als Basis fuer andere IO-Klassen mit denen die Werte auch als <class ‘int’> verwendet werden koennen.
- property address: int¶
Gibt die absolute Byteadresse im Prozessabbild zurueck.
- Returns:
Absolute Byteadresse
- bmk¶
- property byteorder: str¶
Gibt konfigurierte Byteorder zurueck.
- Returns:
<class ‘str’> Byteorder
- property defaultvalue¶
Gibt die Defaultvalue von piCtory zurueck.
- Returns:
Defaultvalue als <class ‘byte’> oder <class ‘bool’>
- property export: bool¶
Return value of export flag.
- get_defaultvalue()[source]¶
Gibt die Defaultvalue von piCtory zurueck.
- Returns:
Defaultvalue als <class ‘byte’> oder <class ‘bool’>
- get_value()[source]¶
Gibt den Wert des IOs zurueck.
- Returns:
IO-Wert als <class ‘bytes’> oder <class ‘bool’>
- property length¶
Gibt die Bytelaenge des IO zurueck.
- Returns:
Bytelaenge des IO - 0 bei BITs
- property name¶
<class ‘str’>-Wert der Klasse.
- Returns:
Namen des IOs
- reg_event(func, delay=0, edge=33, as_thread=False, prefire=False)[source]¶
Registriert fuer IO ein Event bei der Eventueberwachung.
Die uebergebene Funktion wird ausgefuehrt, wenn sich der IO Wert aendert. Mit Angabe von optionalen Parametern kann das Ausloeseverhalten gesteuert werden.
HINWEIS: Die delay-Zeit muss in die .cycletime passen, ist dies nicht der Fall, wird IMMER aufgerundet!
- Parameters:
func – Funktion die bei Aenderung aufgerufen werden soll
delay – Verzoegerung in ms zum Ausloesen wenn Wert gleich bleibt
edge – Ausfuehren bei RISING, FALLING or BOTH Wertaenderung
as_thread – Bei True, Funktion als EventCallback-Thread ausfuehren
prefire – Ausloesen mit aktuellem Wert, wenn mainloop startet
- reg_timerevent(func, delay, edge=33, as_thread=False, prefire=False)[source]¶
Registriert fuer IO einen Timer, welcher nach delay func ausfuehrt.
Der Timer wird gestartet, wenn sich der IO Wert aendert und fuehrt die uebergebene Funktion aus - auch wenn sich der IO Wert in der zwischenzeit geaendert hat. Sollte der Timer nicht abelaufen sein und die Bedingugn erneut zutreffen, wird der Timer NICHT auf den delay Wert zurueckgesetzt oder ein zweites Mal gestartet. Fuer dieses Verhalten kann .reg_event(…, delay=wert) verwendet werden.
HINWEIS: Die delay-Zeit muss in die .cycletime passen, ist dies nicht der Fall, wird IMMER aufgerundet!
- Parameters:
func – Funktion die bei Aenderung aufgerufen werden soll
delay – Verzoegerung in ms zum Ausloesen - auch bei Wertaenderung
edge – Ausfuehren bei RISING, FALLING or BOTH Wertaenderung
as_thread – Bei True, Funktion als EventCallback-Thread ausfuehren
prefire – Ausloesen mit aktuellem Wert, wenn mainloop startet
- set_value(value) None[source]¶
Setzt den Wert des IOs.
- Parameters:
value – IO-Wert als <class bytes’> oder <class ‘bool’>
- property type: int¶
Gibt io type zurueck.
- Returns:
<class ‘int’> io type
- unreg_event(func=None, edge=None) None[source]¶
Entfernt ein Event aus der Eventueberwachung.
- Parameters:
func – Nur Events mit angegebener Funktion
edge – Nur Events mit angegebener Funktion und angegebener Edge
- property value¶
Gibt den Wert des IOs zurueck.
- Returns:
IO-Wert als <class ‘bytes’> oder <class ‘bool’>
- wait(edge=33, exitevent=None, okvalue=None, timeout=0) int[source]¶
Wartet auf Wertaenderung eines IOs.
Die Wertaenderung wird immer uerberprueft, wenn fuer Devices mit aktiviertem autorefresh neue Daten gelesen wurden.
Bei Wertaenderung, wird das Warten mit 0 als Rueckgabewert beendet.
HINWEIS: Wenn <class ‘ProcimgWriter’> 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 <class ‘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 autorefresh Funktion berechnet, entspricht also nicht exakt den angegeben Millisekunden! Es wird immer nach oben gerundet!)
- Parameters:
edge – Flanke RISING, FALLING, BOTH die eintreten muss
exitevent – <class ‘thrading.Event’> fuer vorzeitiges Beenden
okvalue – IO-Wert, bei dem das Warten sofort beendet wird
timeout – Zeit in ms nach der abgebrochen wird
- Returns:
<class ‘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: Devicelist.exit() wurde aufgerufen
- class revpimodio2.io.IOEvent(func, edge, as_thread, delay, overwrite, prefire)[source]¶
Bases:
objectBasisklasse fuer IO-Events.
- as_thread¶
- delay¶
- edge¶
- func¶
- overwrite¶
- prefire¶
- class revpimodio2.io.IOList(modio)[source]¶
Bases:
objectBasisklasse fuer direkten Zugriff auf IO Objekte.
- class revpimodio2.io.IntIO(parentdevice, valuelist: list, iotype: int, byteorder: str, signed: bool)[source]¶
Bases:
IOBaseKlasse fuer den Zugriff auf die Daten mit Konvertierung in int.
Diese Klasse erweitert die Funktion von <class ‘IOBase’> um Funktionen, ueber die mit <class ‘int’> Werten gearbeitet werden kann. Fuer die Umwandlung koennen ‘Byteorder’ (Default ‘little’) und ‘signed’ (Default False) als Parameter gesetzt werden.
- Ref:
- property byteorder: str¶
Gibt konfigurierte Byteorder zurueck.
- Returns:
<class ‘str’> Byteorder
- property defaultvalue: int¶
Gibt die Defaultvalue als <class ‘int’> zurueck.
- Returns:
<class ‘int’> Defaultvalue
- get_intdefaultvalue() int[source]¶
Gibt die Defaultvalue als <class ‘int’> zurueck.
- Returns:
<class ‘int’> Defaultvalue
- get_intvalue() int[source]¶
Gibt IO-Wert zurueck mit Beachtung byteorder/signed.
- Returns:
IO-Wert als <class ‘int’>
- set_intvalue(value: int) None[source]¶
Setzt IO mit Beachtung byteorder/signed.
- Parameters:
value – <class ‘int’> Wert
- property signed: bool¶
Ruft ab, ob der Wert Vorzeichenbehaftet behandelt werden soll.
- Returns:
True, wenn Vorzeichenbehaftet
- property value: int¶
Gibt IO-Wert zurueck mit Beachtung byteorder/signed.
- Returns:
IO-Wert als <class ‘int’>
- class revpimodio2.io.IntIOCounter(counter_id, parentdevice, valuelist, iotype, byteorder, signed)[source]¶
Bases:
IntIOErweitert die IntIO-Klasse um die .reset() Funktion fuer Counter.
- class revpimodio2.io.IntIOReplaceable(parentdevice, valuelist: list, iotype: int, byteorder: str, signed: bool)[source]¶
Bases:
IntIOErweitert die IntIO-Klasse um die .replace_io Funktion.
- replace_io(name: str, frm: str, **kwargs) None[source]¶
Ersetzt bestehenden IO mit Neuem.
Wenn die kwargs fuer byteorder und defaultvalue nicht angegeben werden, uebernimmt das System die Daten aus dem ersetzten IO.
Es darf nur ein einzelnes Formatzeichen ‘frm’ uebergeben werden. Daraus wird dann die benoetigte Laenge an Bytes berechnet und der Datentyp festgelegt. Moeglich sind: - Bits / Bytes: ?, c, s - Integer : bB, hH, iI, lL, qQ - Float : e, f, d
Eine Ausnahme ist die Formatierung ‘s’. Hier koennen mehrere Bytes zu einem langen IO zusammengefasst werden. Die Formatierung muss ‘8s’ fuer z.B. 8 Bytes sein - NICHT ‘ssssssss’!
Wenn durch die Formatierung mehr Bytes benoetigt werden, als der urspruenglige IO hat, werden die nachfolgenden IOs ebenfalls verwendet und entfernt.
- Parameters:
name – Name des neuen Inputs
frm – struct formatierung (1 Zeichen) oder ‘ANZAHLs’ z.B. ‘8s’
kwargs – Weitere Parameter
bmk: interne Bezeichnung fuer IO
bit: Registriert IO als <class ‘bool’> am angegebenen Bit im Byte
byteorder: Byteorder fuer den IO, Standardwert=little
wordorder: Wordorder wird vor byteorder angewendet
defaultvalue: Standardwert fuer IO
event: Funktion fuer Eventhandling registrieren
delay: Verzoegerung in ms zum Ausloesen wenn Wert gleich bleibt
edge: Event ausfuehren bei RISING, FALLING or BOTH Wertaenderung
as_thread: Fuehrt die event-Funktion als RevPiCallback-Thread aus
prefire: Ausloesen mit aktuellem Wert, wenn mainloop startet
https://docs.python.org/3/library/struct.html#format-characters
- class revpimodio2.io.IntRelaisOutput(parentdevice, valuelist, iotype, byteorder, signed)[source]¶
Bases:
IntIO,RelaisOutputClass for relais outputs to access the cycle counters.
This class combines the function of <class ‘IntIO’> and <class ‘RelaisOutput’> to add the function ‘get_cycles’ and the property ‘cycles’ to retrieve the relay cycle counters.
Since both classes inherit from BaseIO, both __init__ functions are called and the logic is combined. In this case, there is only one ‘self’ object of IOBase, which of both classes in inheritance is extended with this.
- Ref:
- class revpimodio2.io.MemIO(parentdevice, valuelist: list, iotype: int, byteorder: str, signed: bool)[source]¶
Bases:
IOBaseErstellt einen IO für die Memory Werte in piCtory.
Dieser Typ ist nur für lesenden Zugriff vorgesehen und kann verschiedene Datentypen über .value zurückgeben. Damit hat man nun auch Zugriff auf Strings, welche in piCtory vergeben werden.
- bmk¶
- property defaultvalue¶
Gibt die Defaultvalue von piCtory zurueck.
- Returns:
Defaultvalue als <class ‘byte’> oder <class ‘bool’>
- property value¶
Gibt den Wert des IOs zurueck.
- Returns:
IO-Wert als <class ‘bytes’> oder <class ‘bool’>
- class revpimodio2.io.RelaisOutput(parentdevice, valuelist, iotype, byteorder, signed)[source]¶
Bases:
IOBaseClass for relais outputs to access the cycle counters.
This class extends the function of <class ‘IOBase’> to the function ‘get_cycles’ and the property ‘cycles’ to retrieve the relay cycle counters.
- Ref:
- bmk¶
- get_switching_cycles()[source]¶
Get the number of switching cycles from this relay.
If each relay output is represented as BOOL, this function returns a single integer value. If all relays are displayed as a BYTE, this function returns a tuple that contains the values of all relay outputs. The setting is determined by PiCtory and the selected output variant by the RO device.
This function is only available locally on a Revolution Pi. This function cannot be used via RevPiNetIO.
- Returns:
Integer of switching cycles as single value or tuple of all
- property switching_cycles¶
Get the number of switching cycles from this relay.
If each relay output is represented as BOOL, this function returns a single integer value. If all relays are displayed as a BYTE, this function returns a tuple that contains the values of all relay outputs. The setting is determined by PiCtory and the selected output variant by the RO device.
This function is only available locally on a Revolution Pi. This function cannot be used via RevPiNetIO.
- Returns:
Integer of switching cycles as single value or tuple of all
- class revpimodio2.io.StructIO(parentio, name: str, frm: str, **kwargs)[source]¶
Bases:
IOBaseKlasse fuer den Zugriff auf Daten ueber ein definierten struct.
Sie stellt ueber struct die Werte in der gewuenschten Formatierung bereit. Der struct-Formatwert wird bei der Instantiierung festgelegt.
- property defaultvalue¶
Gibt die Defaultvalue mit struct Formatierung zurueck.
- Returns:
Defaultvalue vom Typ der struct-Formatierung
- property frm: str¶
Ruft die struct Formatierung ab.
- Returns:
struct Formatierung
- get_structdefaultvalue()[source]¶
Gibt die Defaultvalue mit struct Formatierung zurueck.
- Returns:
Defaultvalue vom Typ der struct-Formatierung
- get_structvalue()[source]¶
Gibt den Wert mit struct Formatierung zurueck.
- Returns:
Wert vom Typ der struct-Formatierung
- get_wordorder() str[source]¶
Gibt die wordorder für diesen IO zurück.
- Returns:
“little”, “big” or “ignored”
- set_structvalue(value)[source]¶
Setzt den Wert mit struct Formatierung.
- Parameters:
value – Wert vom Typ der struct-Formatierung
- property signed: bool¶
Ruft ab, ob der Wert Vorzeichenbehaftet behandelt werden soll.
- Returns:
True, wenn Vorzeichenbehaftet
- property value¶
Gibt den Wert mit struct Formatierung zurueck.
- Returns:
Wert vom Typ der struct-Formatierung
- property wordorder: str¶
Gibt die wordorder für diesen IO zurück.
- Returns:
“little”, “big” or “ignored”
revpimodio2.modio module¶
RevPiModIO Hauptklasse fuer piControl0 Zugriff.
- class revpimodio2.modio.DevSelect(device_type='', search_key: str = None, search_values=())[source]¶
Bases:
object- other_device_key¶
- type¶
- values¶
- class revpimodio2.modio.RevPiModIO(autorefresh=False, monitoring=False, syncoutputs=True, procimg=None, configrsc=None, simulator=False, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
objectKlasse fuer die Verwaltung der piCtory Konfiguration.
Diese Klasse uebernimmt die gesamte Konfiguration aus piCtory und laedt die Devices und IOs. 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.
- app¶
- property configrsc: str¶
Getter function.
- Returns:
Pfad der verwendeten piCtory Konfiguration
- core¶
- cycleloop(func, cycletime=50, blocking=True)[source]¶
Startet den Cycleloop.
Der aktuelle Programmthread wird hier bis Aufruf von .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 (z.B. return True), oder durch Aufruf von .exit().
HINWEIS: Die Aktualisierungszeit und die Laufzeit der Funktion duerfen die eingestellte autorefresh Zeit, bzw. uebergebene cycletime nicht ueberschreiten!
Ueber den Parameter cycletime wird die gewuenschte Zukluszeit der uebergebenen Funktion gesetzt. Der Standardwert betraegt 50 Millisekunden, in denen das Prozessabild eingelesen, die uebergebene Funktion ausgefuert und das Prozessabbild geschrieben wird.
- Parameters:
func – Funktion, die ausgefuehrt werden soll
cycletime – Zykluszeit in Millisekunden - Standardwert 50 ms
blocking – Wenn False, blockiert das Programm hier NICHT
- Returns:
None or the return value of the cycle function
- property cycletime: int¶
Gibt Aktualisierungsrate in ms der Prozessabbildsynchronisierung aus.
- Returns:
Millisekunden
- property debug: bool¶
Gibt Status des Debugflags zurueck.
- Returns:
Status des Debugflags
- device¶
- exit(full=True) None[source]¶
Beendet mainloop() und optional autorefresh.
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 autorefresh. Der Thread fuer die Prozessabbildsynchronisierung wird dann gestoppt und das Programm kann sauber beendet werden.
- Parameters:
full – Entfernt auch alle Devices aus autorefresh
- exitsignal¶
- export_replaced_ios(filename='replace_ios.conf') None[source]¶
Exportiert ersetzte IOs dieser Instanz.
Exportiert alle ersetzten IOs, welche mit .replace_io(…) angelegt wurden. Die Datei kann z.B. fuer RevPiPyLoad verwendet werden um Daten in den neuen Formaten per MQTT zu uebertragen oder mit RevPiPyControl anzusehen.
@param filename Dateiname fuer Exportdatei
- get_jconfigrsc() dict[source]¶
Laedt die piCtory Konfiguration und erstellt ein <class ‘dict’>.
- Returns:
<class ‘dict’> der piCtory Konfiguration
- handlesignalend(cleanupfunc=None) None[source]¶
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.
- Parameters:
cleanupfunc – Funktion wird nach dem Beenden ausgefuehrt
- io¶
- property ioerrors: int¶
Getter function.
- Returns:
Aktuelle Anzahl gezaehlter Fehler
- property length: int¶
Getter function.
- Returns:
Laenge in Bytes der Devices
- mainloop(blocking=True) None[source]¶
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 “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.
- Parameters:
blocking – Wenn False, blockiert das Programm hier NICHT
- property maxioerrors: int¶
Getter function.
- Returns:
Anzahl erlaubte Fehler
- property monitoring: bool¶
Getter function.
- Returns:
True, wenn als Monitoring gestartet
- property procimg: str¶
Getter function.
- Returns:
Pfad des verwendeten Prozessabbilds
- readprocimg(device=None) bool[source]¶
Einlesen aller Inputs aller/eines Devices vom Prozessabbild.
Devices mit aktiverem autorefresh werden ausgenommen!
- Parameters:
device – nur auf einzelnes Device anwenden
- Returns:
True, wenn Arbeiten an allen Devices erfolgreich waren
- property replace_io_file: str¶
Gibt Pfad zur verwendeten replace IO Datei aus.
- Returns:
Pfad zur replace IO Datei
- setdefaultvalues(device=None) None[source]¶
Alle Outputbuffer werden auf die piCtory default Werte gesetzt.
- Parameters:
device – nur auf einzelnes Device anwenden
- property simulator: bool¶
Getter function.
- Returns:
True, wenn als Simulator gestartet
- summary¶
- class revpimodio2.modio.RevPiModIODriver(virtdev, autorefresh=False, syncoutputs=True, procimg=None, configrsc=None, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiModIOSelectedKlasse 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.
- class revpimodio2.modio.RevPiModIOSelected(deviceselection, autorefresh=False, monitoring=False, syncoutputs=True, procimg=None, configrsc=None, simulator=False, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiModIOKlasse fuer die Verwaltung einzelner Devices aus piCtory.
Diese Klasse uebernimmt nur angegebene Devices der piCtory Konfiguration und bildet 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.
- revpimodio2.modio.run_plc(func, cycletime=50, replace_io_file=None, debug=True, procimg=None, configrsc=None)[source]¶
Run Revoluton Pi as real plc with cycle loop and exclusive IO access.
This function is just a shortcut to run the module in cycle loop mode and handle the program exit signal. You will access the .io, .core, .device via the cycletools in your cycle function.
- Shortcut for this source code:
rpi = RevPiModIO(autorefresh=True, replace_io_file=…, debug=…) rpi.handlesignalend() return rpi.cycleloop(func, cycletime)
- Parameters:
func – Function to run every set milliseconds
cycletime – Cycle time in milliseconds
replace_io_file – Load replace IO configuration from file
debug – Print all warnings and detailed error messages
procimg – Use different process image
configrsc – Use different piCtory configuration
- Returns:
None or the return value of the cycle function
revpimodio2.netio module¶
RevPiModIO Hauptklasse fuer Netzwerkzugriff.
- exception revpimodio2.netio.ConfigChanged[source]¶
Bases:
ExceptionAenderung der piCtory oder replace_ios Datei.
- class revpimodio2.netio.NetFH(address: tuple, check_replace_ios: bool, timeout=500)[source]¶
Bases:
ThreadNetzwerk File Handler fuer das Prozessabbild.
Dieses FileObject-like Object verwaltet das Lesen und Schriben des Prozessabbilds ueber das Netzwerk. Ein entfernter Revolution Pi kann so gesteuert werden.
- clear_dirtybytes(position=None) None[source]¶
Entfernt die konfigurierten Dirtybytes vom RevPi Server.
Diese Funktion wirft keine Exception bei einem uebertragungsfehler, veranlasst aber eine Neuverbindung.
- Parameters:
position – Startposition der Dirtybytes
- property closed: bool¶
Pruefen ob Verbindung geschlossen ist.
- Returns:
True, wenn Verbindung geschlossen ist
- property config_changed: bool¶
Pruefen ob RevPi Konfiguration geaendert wurde.
- Returns:
True, wenn RevPi Konfiguration geaendert ist
- daemon¶
- get_closed() bool[source]¶
Pruefen ob Verbindung geschlossen ist.
- Returns:
True, wenn Verbindung geschlossen ist
- get_config_changed() bool[source]¶
Pruefen ob RevPi Konfiguration geaendert wurde.
- Returns:
True, wenn RevPi Konfiguration geaendert ist
- get_reconnecting() bool[source]¶
Interner reconnect aktiv wegen Netzwerkfehlern.
- Returns:
True, wenn reconnect aktiv
- ioctl(request: int, arg=b'') None[source]¶
IOCTL Befehle ueber das Netzwerk senden.
- Parameters:
request – Request as <class ‘int’>
arg – Argument as <class ‘byte’>
- property name: str¶
Verbindugnsnamen zurueckgeben.
- Returns:
<class ‘str’> IP:PORT
- read(length: int) bytes[source]¶
Daten ueber das Netzwerk lesen.
- Parameters:
length – Anzahl der Bytes
- Returns:
Gelesene <class ‘bytes’>
- readinto(buffer: bytearray) int[source]¶
Read data from network into a buffer.
- Parameters:
buffer – Use Buffer to write bytes into
- Returns:
Amount of read bytes
- readpictory() bytes[source]¶
Ruft die piCtory Konfiguration ab.
- Returns:
<class ‘bytes’> piCtory Datei
- readreplaceio() bytes[source]¶
Ruft die replace_io Konfiguration ab.
- Returns:
<class ‘bytes’> replace_io_file
- property reconnecting: bool¶
Interner reconnect aktiv wegen Netzwerkfehlern.
- Returns:
True, wenn reconnect aktiv
- seek(position: int) None[source]¶
Springt an angegebene Position. @param position An diese Position springen
- set_dirtybytes(position: int, dirtybytes: bytes) None[source]¶
Konfiguriert Dirtybytes fuer Prozessabbild bei Verbindungsfehler.
Diese Funktion wirft keine Exception bei einem uebertragungsfehler, veranlasst aber eine Neuverbindung.
- Parameters:
position – Startposition zum Schreiben
dirtybytes – <class ‘bytes’> die geschrieben werden sollen
- set_timeout(value: int) None[source]¶
Setzt Timeoutwert fuer Verbindung.
- Parameters:
value – Timeout in Millisekunden
- property timeout: int¶
Gibt aktuellen Timeout zurueck.
- Returns:
<class ‘int’> in Millisekunden
- class revpimodio2.netio.RevPiNetIO(address, autorefresh=False, monitoring=False, syncoutputs=True, simulator=False, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiModIOKlasse fuer die Verwaltung der piCtory Konfiguration ueber das Netzwerk.
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.
- property config_changed: bool¶
Pruefen ob RevPi Konfiguration geaendert wurde.
In diesem Fall ist die Verbindung geschlossen und RevPiNetIO muss neu instanziert werden.
- Returns:
True, wenn RevPi Konfiguration geaendert ist
- get_config_changed() bool[source]¶
Pruefen ob RevPi Konfiguration geaendert wurde.
In diesem Fall ist die Verbindung geschlossen und RevPiNetIO muss neu instanziert werden.
- Returns:
True, wenn RevPi Konfiguration geaendert ist
- get_jconfigrsc() dict[source]¶
Laedt die piCotry Konfiguration und erstellt ein <class ‘dict’>.
- Returns:
<class ‘dict’> der piCtory Konfiguration
- get_reconnecting() bool[source]¶
Interner reconnect aktiv wegen Netzwerkfehlern.
Das Modul versucht intern die Verbindung neu herzustellen. Es ist kein weiteres Zutun noetig.
- Returns:
True, wenn reconnect aktiv
- net_cleardefaultvalues(device=None) None[source]¶
Loescht Defaultwerte vom PLC Server.
- Parameters:
device – nur auf einzelnes Device anwenden, sonst auf Alle
- net_setdefaultvalues(device=None) None[source]¶
Konfiguriert den PLC Server mit den piCtory Defaultwerten.
Diese Werte werden auf dem RevPi gesetzt, wenn die Verbindung unerwartet (Netzwerkfehler) unterbrochen wird.
- Parameters:
device – nur auf einzelnes Device anwenden, sonst auf Alle
- property reconnecting: bool¶
Interner reconnect aktiv wegen Netzwerkfehlern.
Das Modul versucht intern die Verbindung neu herzustellen. Es ist kein weiteres Zutun noetig.
- Returns:
True, wenn reconnect aktiv
- class revpimodio2.netio.RevPiNetIODriver(address, virtdev, autorefresh=False, syncoutputs=True, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiNetIOSelectedKlasse 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.
- class revpimodio2.netio.RevPiNetIOSelected(address, deviceselection, autorefresh=False, monitoring=False, syncoutputs=True, simulator=False, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiNetIOKlasse fuer die Verwaltung einzelner Devices aus piCtory.
Diese Klasse uebernimmt nur angegebene Devices der piCtory Konfiguration und bildet 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.
- revpimodio2.netio.run_net_plc(address, func, cycletime=50, replace_io_file=None, debug=True)[source]¶
Run Revoluton Pi as real plc with cycle loop and exclusive IO access.
This function is just a shortcut to run the module in cycle loop mode and handle the program exit signal. You will access the .io, .core, .device via the cycletools in your cycle function.
- Shortcut for this source code:
rpi = RevPiModIO(autorefresh=True, replace_io_file=…, debug=…) rpi.handlesignalend() return rpi.cycleloop(func, cycletime)
- Parameters:
address – IP-Adresse <class ‘str’> / (IP, Port) <class ‘tuple’>
func – Function to run every set milliseconds
cycletime – Cycle time in milliseconds
replace_io_file – Load replace IO configuration from file
debug – Print all warnings and detailed error messages
- Returns:
None or the return value of the cycle function
revpimodio2.pictory module¶
Pictory aliases for IO values.
- class revpimodio2.pictory.AIO[source]¶
Bases:
objectMemory value mappings for RevPi AIO 1.0 (RevPiAIO_20170301_1_0.rap).
- ADC_DATARATE_10HZ = 1¶
- ADC_DATARATE_160HZ = 5¶
- ADC_DATARATE_20HZ = 2¶
- ADC_DATARATE_320HZ = 6¶
- ADC_DATARATE_40HZ = 3¶
- ADC_DATARATE_5HZ = 0¶
- ADC_DATARATE_640HZ = 7¶
- ADC_DATARATE_80HZ = 4¶
- IN_RANGE_0_10V = 2¶
- IN_RANGE_0_20MA = 5¶
- IN_RANGE_0_24MA = 6¶
- IN_RANGE_0_5V = 3¶
- IN_RANGE_4_20MA = 7¶
- IN_RANGE_N10V_10V = 1¶
- IN_RANGE_N25_25MA = 8¶
- IN_RANGE_N5_5V = 4¶
- OUT_RANGE_0_10V = 2¶
- OUT_RANGE_0_11V = 6¶
- OUT_RANGE_0_20MA = 10¶
- OUT_RANGE_0_24MA = 11¶
- OUT_RANGE_0_5P5V = 5¶
- OUT_RANGE_0_5V = 1¶
- OUT_RANGE_4_20MA = 9¶
- OUT_RANGE_N10_10V = 4¶
- OUT_RANGE_N11_11V = 8¶
- OUT_RANGE_N5P5_5P5V = 7¶
- OUT_RANGE_N5_5V = 3¶
- OUT_RANGE_OFF = 0¶
- OUT_SLEW_CLOCK_10_KZH = 10¶
- OUT_SLEW_CLOCK_116_KZH = 4¶
- OUT_SLEW_CLOCK_131_KZH = 3¶
- OUT_SLEW_CLOCK_154_KZH = 2¶
- OUT_SLEW_CLOCK_16_KZH = 9¶
- OUT_SLEW_CLOCK_200_KZH = 1¶
- OUT_SLEW_CLOCK_20_KZH = 8¶
- OUT_SLEW_CLOCK_258_KZH = 0¶
- OUT_SLEW_CLOCK_26_KZH = 7¶
- OUT_SLEW_CLOCK_38_KZH = 6¶
- OUT_SLEW_CLOCK_3P3_KZH = 15¶
- OUT_SLEW_CLOCK_4P2_KZH = 14¶
- OUT_SLEW_CLOCK_5P5_KZH = 13¶
- OUT_SLEW_CLOCK_6P9_KZH = 12¶
- OUT_SLEW_CLOCK_70_KZH = 5¶
- OUT_SLEW_CLOCK_8P3_KZH = 11¶
- OUT_SLEW_OFF = 0¶
- OUT_SLEW_ON = 1¶
- OUT_SLEW_STEP_SIZE_128LSB = 7¶
- OUT_SLEW_STEP_SIZE_16LSB = 4¶
- OUT_SLEW_STEP_SIZE_1LSB = 0¶
- OUT_SLEW_STEP_SIZE_2LSB = 1¶
- OUT_SLEW_STEP_SIZE_32LSB = 5¶
- OUT_SLEW_STEP_SIZE_4LSB = 2¶
- OUT_SLEW_STEP_SIZE_64LSB = 6¶
- OUT_SLEW_STEP_SIZE_8LSB = 3¶
- RTD_2_WIRE = 2¶
- RTD_3_WIRE = 0¶
- RTD_4_WIRE = 1¶
- RTD_TYPE_PT100 = 0¶
- RTD_TYPE_PT1000 = 1¶
- class revpimodio2.pictory.COMPACT[source]¶
Bases:
objectMemory value mappings for RevPi Compact 1.0 (RevPiCompact_20171023_1_0.rap).
- AIN_MODE_0_10V = 1¶
- AIN_MODE_OFF = 0¶
- AIN_MODE_PT100 = 3¶
- AIN_MODE_PT1000 = 7¶
- DIN_DEBOUNCE_25US = 1¶
- DIN_DEBOUNCE_3MS = 3¶
- DIN_DEBOUNCE_750US = 2¶
- DIN_DEBOUNCE_OFF = 0¶
- class revpimodio2.pictory.DI[source]¶
Bases:
objectMemory value mappings for RevPi DI 1.0 (RevPiDI_20160818_1_0.rap).
- IN_DEBOUNCE_25US = 1¶
- IN_DEBOUNCE_3MS = 3¶
- IN_DEBOUNCE_750US = 2¶
- IN_DEBOUNCE_OFF = 0¶
- IN_MODE_COUNT_FALLING = 2¶
- IN_MODE_COUNT_RISING = 1¶
- IN_MODE_DIRECT = 0¶
- IN_MODE_ENCODER = 3¶
- class revpimodio2.pictory.DIO[source]¶
-
Memory value mappings for RevPi DIO 1.0 (RevPiDIO_20160818_1_0.rap).
- class revpimodio2.pictory.DO[source]¶
Bases:
objectMemory value mappings for RevPi DO 1.0 (RevPiDO_20160818_1_0.rap).
- OUT_PWM_FREQ_160HZ = 4¶
- OUT_PWM_FREQ_200HZ = 5¶
- OUT_PWM_FREQ_400HZ = 10¶
- OUT_PWM_FREQ_40HZ = 1¶
- OUT_PWM_FREQ_80HZ = 2¶
- class revpimodio2.pictory.DeviceType[source]¶
Bases:
objectModule key “type” in piCtory file.
- BASE = 'BASE'¶
- EDGE = 'EDGE'¶
- IGNORED = ''¶
- LEFT_RIGHT = 'LEFT_RIGHT'¶
- RIGHT = 'RIGHT'¶
- VIRTUAL = 'VIRTUAL'¶
- class revpimodio2.pictory.FLAT[source]¶
Bases:
objectMemory value mappings for RevPi Flat 1.0 (RevPiFlat_20200921_1_0.rap).
- IN_RANGE_0_10V = 0¶
- IN_RANGE_4_20MA = 1¶
- class revpimodio2.pictory.MIO[source]¶
Bases:
objectMemory value mappings for RevPi MIO 1.0 (RevPiMIO_20200901_1_0.rap).
- AI_MODE_ANALOG_INPUT = 0¶
- AI_MODE_LOGIC_LEVEL_INPUT = 1¶
- AO_MODE_ANALOG_OUTPUT = 0¶
- AO_MODE_LOGIC_LEVEL_OUTPUT = 1¶
- ENCODER_MODE_DISABLED = 0¶
- ENCODER_MODE_ENABLED = 1¶
- IO_MODE_DIGITAL_IN = 0¶
- IO_MODE_DIGITAL_OUT = 3¶
- IO_MODE_PULSE_IN = 1¶
- IO_MODE_PULSE_OUT = 4¶
- IO_MODE_PWM_IN = 2¶
- IO_MODE_PWM_OUT = 5¶
- class revpimodio2.pictory.ProductType[source]¶
Bases:
object- AIO = 103¶
- CON_BT = 111¶
- CON_CAN = 109¶
- CON_MBUS = 110¶
- DI = 97¶
- DIO = 96¶
- DO = 98¶
- GATEWAY_CAN_OPEN = 71¶
- GATEWAY_CAN_OPEN_MASTER = 80¶
- GATEWAY_CCLINK = 72¶
- GATEWAY_DEV_NET = 73¶
- GATEWAY_DMX = 199¶
- GATEWAY_ETHERCAT = 74¶
- GATEWAY_ETHERCAT_MASTER = 85¶
- GATEWAY_ETHERNET_IP = 75¶
- GATEWAY_MODBUS_RTU = 92¶
- GATEWAY_MODBUS_TCP = 83¶
- GATEWAY_POWERLINK = 76¶
- GATEWAY_PROFIBUS = 77¶
- GATEWAY_PROFINET_IRT = 79¶
- GATEWAY_PROFINET_IRT_MASTER = 84¶
- GATEWAY_PROFINET_RT = 78¶
- GATEWAY_PROFINET_SITARA = 83¶
- GATEWAY_SERCOS3 = 81¶
- GATEWAY_SERIAL = 82¶
- MIO = 118¶
- REVPI_COMPACT = 104¶
- REVPI_CONNECT = 105¶
- REVPI_CONNECT_4 = 136¶
- REVPI_CONNECT_5 = 138¶
- REVPI_CORE = 95¶
- REVPI_FLAT = 135¶
- RO = 137¶
- VIRTUAL_CLOUD = 24584¶
- VIRTUAL_MODBUS_RTU_CLIENT = 24580¶
- VIRTUAL_MODBUS_RTU_SERVER = 24578¶
- VIRTUAL_MODBUS_TCP_CLIENT = 24579¶
- VIRTUAL_MODBUS_TCP_SERVER = 24577¶
- VIRTUAL_OPCUA_SERVER = 23001¶
- VIRTUAL_PN_CONTROLLER = 24581¶
- VIRTUAL_PN_DEVICE = 24582¶
- VIRTUAL_RAW = 32768¶
- VIRTUAL_REVPI_SEVEN = 24583¶
- VIRTUAL_TIMER = 28673¶
revpimodio2.summary module¶
Bildet die Summary-Sektion von piCtory ab.
Module contents¶
Stellt alle Klassen fuer den RevolutionPi zur Verfuegung.
Webpage: https://revpimodio.org/
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.
- class revpimodio2.AIO[source]¶
Bases:
objectMemory value mappings for RevPi AIO 1.0 (RevPiAIO_20170301_1_0.rap).
- ADC_DATARATE_10HZ = 1¶
- ADC_DATARATE_160HZ = 5¶
- ADC_DATARATE_20HZ = 2¶
- ADC_DATARATE_320HZ = 6¶
- ADC_DATARATE_40HZ = 3¶
- ADC_DATARATE_5HZ = 0¶
- ADC_DATARATE_640HZ = 7¶
- ADC_DATARATE_80HZ = 4¶
- IN_RANGE_0_10V = 2¶
- IN_RANGE_0_20MA = 5¶
- IN_RANGE_0_24MA = 6¶
- IN_RANGE_0_5V = 3¶
- IN_RANGE_4_20MA = 7¶
- IN_RANGE_N10V_10V = 1¶
- IN_RANGE_N25_25MA = 8¶
- IN_RANGE_N5_5V = 4¶
- OUT_RANGE_0_10V = 2¶
- OUT_RANGE_0_11V = 6¶
- OUT_RANGE_0_20MA = 10¶
- OUT_RANGE_0_24MA = 11¶
- OUT_RANGE_0_5P5V = 5¶
- OUT_RANGE_0_5V = 1¶
- OUT_RANGE_4_20MA = 9¶
- OUT_RANGE_N10_10V = 4¶
- OUT_RANGE_N11_11V = 8¶
- OUT_RANGE_N5P5_5P5V = 7¶
- OUT_RANGE_N5_5V = 3¶
- OUT_RANGE_OFF = 0¶
- OUT_SLEW_CLOCK_10_KZH = 10¶
- OUT_SLEW_CLOCK_116_KZH = 4¶
- OUT_SLEW_CLOCK_131_KZH = 3¶
- OUT_SLEW_CLOCK_154_KZH = 2¶
- OUT_SLEW_CLOCK_16_KZH = 9¶
- OUT_SLEW_CLOCK_200_KZH = 1¶
- OUT_SLEW_CLOCK_20_KZH = 8¶
- OUT_SLEW_CLOCK_258_KZH = 0¶
- OUT_SLEW_CLOCK_26_KZH = 7¶
- OUT_SLEW_CLOCK_38_KZH = 6¶
- OUT_SLEW_CLOCK_3P3_KZH = 15¶
- OUT_SLEW_CLOCK_4P2_KZH = 14¶
- OUT_SLEW_CLOCK_5P5_KZH = 13¶
- OUT_SLEW_CLOCK_6P9_KZH = 12¶
- OUT_SLEW_CLOCK_70_KZH = 5¶
- OUT_SLEW_CLOCK_8P3_KZH = 11¶
- OUT_SLEW_OFF = 0¶
- OUT_SLEW_ON = 1¶
- OUT_SLEW_STEP_SIZE_128LSB = 7¶
- OUT_SLEW_STEP_SIZE_16LSB = 4¶
- OUT_SLEW_STEP_SIZE_1LSB = 0¶
- OUT_SLEW_STEP_SIZE_2LSB = 1¶
- OUT_SLEW_STEP_SIZE_32LSB = 5¶
- OUT_SLEW_STEP_SIZE_4LSB = 2¶
- OUT_SLEW_STEP_SIZE_64LSB = 6¶
- OUT_SLEW_STEP_SIZE_8LSB = 3¶
- RTD_2_WIRE = 2¶
- RTD_3_WIRE = 0¶
- RTD_4_WIRE = 1¶
- RTD_TYPE_PT100 = 0¶
- RTD_TYPE_PT1000 = 1¶
- class revpimodio2.COMPACT[source]¶
Bases:
objectMemory value mappings for RevPi Compact 1.0 (RevPiCompact_20171023_1_0.rap).
- AIN_MODE_0_10V = 1¶
- AIN_MODE_OFF = 0¶
- AIN_MODE_PT100 = 3¶
- AIN_MODE_PT1000 = 7¶
- DIN_DEBOUNCE_25US = 1¶
- DIN_DEBOUNCE_3MS = 3¶
- DIN_DEBOUNCE_750US = 2¶
- DIN_DEBOUNCE_OFF = 0¶
- class revpimodio2.Cycletools(cycletime, revpi_object)[source]¶
Bases:
objectWerkzeugkasten 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 Cycletools.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.
- changed(io: IOBase, edge=33)[source]¶
Check change of IO value from last to this cycle.
It will always be False on the first use of this function with an IO object.
- Parameters:
io – IO to check for changes to last cycle
edge – Check for rising or falling on bit io objects
- Returns:
True, if IO value changed
- core¶
- device¶
- first¶
- flag10c¶
- flag15c¶
- flag1c¶
- flag20c¶
- flag5c¶
- flank10c¶
- flank15c¶
- flank20c¶
- flank5c¶
- get_tof(name: str) bool[source]¶
Wert der Ausschaltverzoegerung.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> der Ausschaltverzoegerung
- get_tofc(name: str) bool[source]¶
Wert der Ausschaltverzoegerung.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> der Ausschaltverzoegerung
- get_ton(name: str) bool[source]¶
Einschaltverzoegerung.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> der Einschaltverzoegerung
- get_tonc(name: str) bool[source]¶
Einschaltverzoegerung.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> der Einschaltverzoegerung
- get_tp(name: str) bool[source]¶
Impulstimer.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> des Impulses
- get_tpc(name: str) bool[source]¶
Impulstimer.
- Parameters:
name – Eindeutiger Name des Timers
- Returns:
Wert <class ‘bool’> des Impulses
- io¶
- last¶
- property runtime: float¶
Runtime im milliseconds of cycle function till now.
This property will return the actual runtime of the function. So on the beginning of your function it will be about 0 and will rise during the runtime to the max in the last line of your function.
- set_tof(name: str, milliseconds: int) None[source]¶
Startet bei Aufruf einen ausschaltverzoegerten Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
milliseconds – Verzoegerung in Millisekunden
- set_tofc(name: str, cycles: int) None[source]¶
Startet bei Aufruf einen ausschaltverzoegerten Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
cycles – Zyklusanzahl, der Verzoegerung wenn nicht neu gestartet
- set_ton(name: str, milliseconds: int) None[source]¶
Startet einen einschaltverzoegerten Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
milliseconds – Millisekunden, der Verzoegerung wenn neu gestartet
- set_tonc(name: str, cycles: int) None[source]¶
Startet einen einschaltverzoegerten Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
cycles – Zyklusanzahl, der Verzoegerung wenn neu gestartet
- set_tp(name: str, milliseconds: int) None[source]¶
Startet einen Impuls Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
milliseconds – Millisekunden, die der Impuls anstehen soll
- set_tpc(name: str, cycles: int) None[source]¶
Startet einen Impuls Timer.
- Parameters:
name – Eindeutiger Name fuer Zugriff auf Timer
cycles – Zyklusanzahl, die der Impuls anstehen soll
- var¶
- class revpimodio2.DI[source]¶
Bases:
objectMemory value mappings for RevPi DI 1.0 (RevPiDI_20160818_1_0.rap).
- IN_DEBOUNCE_25US = 1¶
- IN_DEBOUNCE_3MS = 3¶
- IN_DEBOUNCE_750US = 2¶
- IN_DEBOUNCE_OFF = 0¶
- IN_MODE_COUNT_FALLING = 2¶
- IN_MODE_COUNT_RISING = 1¶
- IN_MODE_DIRECT = 0¶
- IN_MODE_ENCODER = 3¶
- class revpimodio2.DO[source]¶
Bases:
objectMemory value mappings for RevPi DO 1.0 (RevPiDO_20160818_1_0.rap).
- OUT_PWM_FREQ_160HZ = 4¶
- OUT_PWM_FREQ_200HZ = 5¶
- OUT_PWM_FREQ_400HZ = 10¶
- OUT_PWM_FREQ_40HZ = 1¶
- OUT_PWM_FREQ_80HZ = 2¶
- class revpimodio2.DeviceType[source]¶
Bases:
objectModule key “type” in piCtory file.
- BASE = 'BASE'¶
- EDGE = 'EDGE'¶
- IGNORED = ''¶
- LEFT_RIGHT = 'LEFT_RIGHT'¶
- RIGHT = 'RIGHT'¶
- VIRTUAL = 'VIRTUAL'¶
- class revpimodio2.EventCallback(func, name: str, value)[source]¶
Bases:
ThreadThread 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 EventCallback.ioname kann der Name des IO-Objekts abgerufen werden, welches das Event ausgeloest hast. EventCallback.iovalue gibt den Wert des IO-Objekts zum Ausloesezeitpunkt zurueck. Der Thread stellt das EventCallback.exit Event als Abbruchbedingung fuer die aufgerufene Funktion zur Verfuegung. Durch Aufruf der Funktion EventCallback.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)
- daemon¶
- exit¶
- func¶
- ioname¶
- iovalue¶
- class revpimodio2.FLAT[source]¶
Bases:
objectMemory value mappings for RevPi Flat 1.0 (RevPiFlat_20200921_1_0.rap).
- IN_RANGE_0_10V = 0¶
- IN_RANGE_4_20MA = 1¶
- class revpimodio2.IOEvent(func, edge, as_thread, delay, overwrite, prefire)[source]¶
Bases:
objectBasisklasse fuer IO-Events.
- as_thread¶
- delay¶
- edge¶
- func¶
- overwrite¶
- prefire¶
- class revpimodio2.MIO[source]¶
Bases:
objectMemory value mappings for RevPi MIO 1.0 (RevPiMIO_20200901_1_0.rap).
- AI_MODE_ANALOG_INPUT = 0¶
- AI_MODE_LOGIC_LEVEL_INPUT = 1¶
- AO_MODE_ANALOG_OUTPUT = 0¶
- AO_MODE_LOGIC_LEVEL_OUTPUT = 1¶
- ENCODER_MODE_DISABLED = 0¶
- ENCODER_MODE_ENABLED = 1¶
- IO_MODE_DIGITAL_IN = 0¶
- IO_MODE_DIGITAL_OUT = 3¶
- IO_MODE_PULSE_IN = 1¶
- IO_MODE_PULSE_OUT = 4¶
- IO_MODE_PWM_IN = 2¶
- IO_MODE_PWM_OUT = 5¶
- class revpimodio2.ProductType[source]¶
Bases:
object- AIO = 103¶
- CON_BT = 111¶
- CON_CAN = 109¶
- CON_MBUS = 110¶
- DI = 97¶
- DIO = 96¶
- DO = 98¶
- GATEWAY_CAN_OPEN = 71¶
- GATEWAY_CAN_OPEN_MASTER = 80¶
- GATEWAY_CCLINK = 72¶
- GATEWAY_DEV_NET = 73¶
- GATEWAY_DMX = 199¶
- GATEWAY_ETHERCAT = 74¶
- GATEWAY_ETHERCAT_MASTER = 85¶
- GATEWAY_ETHERNET_IP = 75¶
- GATEWAY_MODBUS_RTU = 92¶
- GATEWAY_MODBUS_TCP = 83¶
- GATEWAY_POWERLINK = 76¶
- GATEWAY_PROFIBUS = 77¶
- GATEWAY_PROFINET_IRT = 79¶
- GATEWAY_PROFINET_IRT_MASTER = 84¶
- GATEWAY_PROFINET_RT = 78¶
- GATEWAY_PROFINET_SITARA = 83¶
- GATEWAY_SERCOS3 = 81¶
- GATEWAY_SERIAL = 82¶
- MIO = 118¶
- REVPI_COMPACT = 104¶
- REVPI_CONNECT = 105¶
- REVPI_CONNECT_4 = 136¶
- REVPI_CONNECT_5 = 138¶
- REVPI_CORE = 95¶
- REVPI_FLAT = 135¶
- RO = 137¶
- VIRTUAL_CLOUD = 24584¶
- VIRTUAL_MODBUS_RTU_CLIENT = 24580¶
- VIRTUAL_MODBUS_RTU_SERVER = 24578¶
- VIRTUAL_MODBUS_TCP_CLIENT = 24579¶
- VIRTUAL_MODBUS_TCP_SERVER = 24577¶
- VIRTUAL_OPCUA_SERVER = 23001¶
- VIRTUAL_PN_CONTROLLER = 24581¶
- VIRTUAL_PN_DEVICE = 24582¶
- VIRTUAL_RAW = 32768¶
- VIRTUAL_REVPI_SEVEN = 24583¶
- VIRTUAL_TIMER = 28673¶
- class revpimodio2.RevPiModIO(autorefresh=False, monitoring=False, syncoutputs=True, procimg=None, configrsc=None, simulator=False, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
objectKlasse fuer die Verwaltung der piCtory Konfiguration.
Diese Klasse uebernimmt die gesamte Konfiguration aus piCtory und laedt die Devices und IOs. 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.
- app¶
- property configrsc: str¶
Getter function.
- Returns:
Pfad der verwendeten piCtory Konfiguration
- core¶
- cycleloop(func, cycletime=50, blocking=True)[source]¶
Startet den Cycleloop.
Der aktuelle Programmthread wird hier bis Aufruf von .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 (z.B. return True), oder durch Aufruf von .exit().
HINWEIS: Die Aktualisierungszeit und die Laufzeit der Funktion duerfen die eingestellte autorefresh Zeit, bzw. uebergebene cycletime nicht ueberschreiten!
Ueber den Parameter cycletime wird die gewuenschte Zukluszeit der uebergebenen Funktion gesetzt. Der Standardwert betraegt 50 Millisekunden, in denen das Prozessabild eingelesen, die uebergebene Funktion ausgefuert und das Prozessabbild geschrieben wird.
- Parameters:
func – Funktion, die ausgefuehrt werden soll
cycletime – Zykluszeit in Millisekunden - Standardwert 50 ms
blocking – Wenn False, blockiert das Programm hier NICHT
- Returns:
None or the return value of the cycle function
- property cycletime: int¶
Gibt Aktualisierungsrate in ms der Prozessabbildsynchronisierung aus.
- Returns:
Millisekunden
- property debug: bool¶
Gibt Status des Debugflags zurueck.
- Returns:
Status des Debugflags
- device¶
- exit(full=True) None[source]¶
Beendet mainloop() und optional autorefresh.
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 autorefresh. Der Thread fuer die Prozessabbildsynchronisierung wird dann gestoppt und das Programm kann sauber beendet werden.
- Parameters:
full – Entfernt auch alle Devices aus autorefresh
- exitsignal¶
- export_replaced_ios(filename='replace_ios.conf') None[source]¶
Exportiert ersetzte IOs dieser Instanz.
Exportiert alle ersetzten IOs, welche mit .replace_io(…) angelegt wurden. Die Datei kann z.B. fuer RevPiPyLoad verwendet werden um Daten in den neuen Formaten per MQTT zu uebertragen oder mit RevPiPyControl anzusehen.
@param filename Dateiname fuer Exportdatei
- get_jconfigrsc() dict[source]¶
Laedt die piCtory Konfiguration und erstellt ein <class ‘dict’>.
- Returns:
<class ‘dict’> der piCtory Konfiguration
- handlesignalend(cleanupfunc=None) None[source]¶
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.
- Parameters:
cleanupfunc – Funktion wird nach dem Beenden ausgefuehrt
- io¶
- property ioerrors: int¶
Getter function.
- Returns:
Aktuelle Anzahl gezaehlter Fehler
- property length: int¶
Getter function.
- Returns:
Laenge in Bytes der Devices
- mainloop(blocking=True) None[source]¶
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 “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.
- Parameters:
blocking – Wenn False, blockiert das Programm hier NICHT
- property maxioerrors: int¶
Getter function.
- Returns:
Anzahl erlaubte Fehler
- property monitoring: bool¶
Getter function.
- Returns:
True, wenn als Monitoring gestartet
- property procimg: str¶
Getter function.
- Returns:
Pfad des verwendeten Prozessabbilds
- readprocimg(device=None) bool[source]¶
Einlesen aller Inputs aller/eines Devices vom Prozessabbild.
Devices mit aktiverem autorefresh werden ausgenommen!
- Parameters:
device – nur auf einzelnes Device anwenden
- Returns:
True, wenn Arbeiten an allen Devices erfolgreich waren
- property replace_io_file: str¶
Gibt Pfad zur verwendeten replace IO Datei aus.
- Returns:
Pfad zur replace IO Datei
- setdefaultvalues(device=None) None[source]¶
Alle Outputbuffer werden auf die piCtory default Werte gesetzt.
- Parameters:
device – nur auf einzelnes Device anwenden
- property simulator: bool¶
Getter function.
- Returns:
True, wenn als Simulator gestartet
- summary¶
- class revpimodio2.RevPiModIODriver(virtdev, autorefresh=False, syncoutputs=True, procimg=None, configrsc=None, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiModIOSelectedKlasse 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.
- class revpimodio2.RevPiModIOSelected(deviceselection, autorefresh=False, monitoring=False, syncoutputs=True, procimg=None, configrsc=None, simulator=False, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiModIOKlasse fuer die Verwaltung einzelner Devices aus piCtory.
Diese Klasse uebernimmt nur angegebene Devices der piCtory Konfiguration und bildet 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.
- class revpimodio2.RevPiNetIO(address, autorefresh=False, monitoring=False, syncoutputs=True, simulator=False, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiModIOKlasse fuer die Verwaltung der piCtory Konfiguration ueber das Netzwerk.
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.
- property config_changed: bool¶
Pruefen ob RevPi Konfiguration geaendert wurde.
In diesem Fall ist die Verbindung geschlossen und RevPiNetIO muss neu instanziert werden.
- Returns:
True, wenn RevPi Konfiguration geaendert ist
- get_config_changed() bool[source]¶
Pruefen ob RevPi Konfiguration geaendert wurde.
In diesem Fall ist die Verbindung geschlossen und RevPiNetIO muss neu instanziert werden.
- Returns:
True, wenn RevPi Konfiguration geaendert ist
- get_jconfigrsc() dict[source]¶
Laedt die piCotry Konfiguration und erstellt ein <class ‘dict’>.
- Returns:
<class ‘dict’> der piCtory Konfiguration
- get_reconnecting() bool[source]¶
Interner reconnect aktiv wegen Netzwerkfehlern.
Das Modul versucht intern die Verbindung neu herzustellen. Es ist kein weiteres Zutun noetig.
- Returns:
True, wenn reconnect aktiv
- net_cleardefaultvalues(device=None) None[source]¶
Loescht Defaultwerte vom PLC Server.
- Parameters:
device – nur auf einzelnes Device anwenden, sonst auf Alle
- net_setdefaultvalues(device=None) None[source]¶
Konfiguriert den PLC Server mit den piCtory Defaultwerten.
Diese Werte werden auf dem RevPi gesetzt, wenn die Verbindung unerwartet (Netzwerkfehler) unterbrochen wird.
- Parameters:
device – nur auf einzelnes Device anwenden, sonst auf Alle
- property reconnecting: bool¶
Interner reconnect aktiv wegen Netzwerkfehlern.
Das Modul versucht intern die Verbindung neu herzustellen. Es ist kein weiteres Zutun noetig.
- Returns:
True, wenn reconnect aktiv
- class revpimodio2.RevPiNetIODriver(address, virtdev, autorefresh=False, syncoutputs=True, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiNetIOSelectedKlasse 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.
- class revpimodio2.RevPiNetIOSelected(address, deviceselection, autorefresh=False, monitoring=False, syncoutputs=True, simulator=False, debug=True, replace_io_file=None, shared_procimg=False)[source]¶
Bases:
RevPiNetIOKlasse fuer die Verwaltung einzelner Devices aus piCtory.
Diese Klasse uebernimmt nur angegebene Devices der piCtory Konfiguration und bildet 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.
- revpimodio2.run_net_plc(address, func, cycletime=50, replace_io_file=None, debug=True)[source]¶
Run Revoluton Pi as real plc with cycle loop and exclusive IO access.
This function is just a shortcut to run the module in cycle loop mode and handle the program exit signal. You will access the .io, .core, .device via the cycletools in your cycle function.
- Shortcut for this source code:
rpi = RevPiModIO(autorefresh=True, replace_io_file=…, debug=…) rpi.handlesignalend() return rpi.cycleloop(func, cycletime)
- Parameters:
address – IP-Adresse <class ‘str’> / (IP, Port) <class ‘tuple’>
func – Function to run every set milliseconds
cycletime – Cycle time in milliseconds
replace_io_file – Load replace IO configuration from file
debug – Print all warnings and detailed error messages
- Returns:
None or the return value of the cycle function
- revpimodio2.run_plc(func, cycletime=50, replace_io_file=None, debug=True, procimg=None, configrsc=None)[source]¶
Run Revoluton Pi as real plc with cycle loop and exclusive IO access.
This function is just a shortcut to run the module in cycle loop mode and handle the program exit signal. You will access the .io, .core, .device via the cycletools in your cycle function.
- Shortcut for this source code:
rpi = RevPiModIO(autorefresh=True, replace_io_file=…, debug=…) rpi.handlesignalend() return rpi.cycleloop(func, cycletime)
- Parameters:
func – Function to run every set milliseconds
cycletime – Cycle time in milliseconds
replace_io_file – Load replace IO configuration from file
debug – Print all warnings and detailed error messages
procimg – Use different process image
configrsc – Use different piCtory configuration
- Returns:
None or the return value of the cycle function