revpipyload

Revolution Pi Python PLC Loader.

Stellt das RevPiPyLoad Programm bereit. Dieses Programm lauft als Daemon auf dem Revolution Pi. Es stellt Funktionen bereit, die es ermoeglichen ein Python Programm zu starten und fuehrt dessen Ausgaben in eine Logdatei. Die Logdaten koennen am Pi selber oder ueber eine XML-RPC Schnittstelle ausgelesen werden.

Dieser Daemon prueft ob das Python Programm noch lauft und kann es im Fall eines Absturzes neu starten.

Ueber diesen Daemon kann die gesamte piCtory Konfiguration exportiert oder importiert, ein Dump vom Prozessabbild gezogen und das eigene Python Programm hochgeladen werden.

Es kann von dem Python Programm auch eine Archivdatei herunterladen werden, welche optional auch die piCtory Konfiguraiton beinhaltet. Damit kann man sehr schnell auf einem Revolution Pi das Programm inkl. piCtory Konfiguration austauschen.

Die Zugriffsmoeglichkeiten koennen ueber einen Konfigurationsparameter begrenzt werden!

Global Attributes

configrsc
picontrolreset
procimg
pyloadverion
rapcatalog

Classes

LogReader Ermoeglicht den Zugriff auf die Logdateien.
PipeLogwriter File PIPE fuer das Schreiben des APP Log.
RevPiPlc Verwaltet das PLC Python Programm.
RevPiPyLoad Hauptklasse, die alle Funktionen zur Verfuegung stellt.
RevPiSlave
RevPiSlaveDev

Functions

_zeroprocimg Setzt Prozessabbild auf NULL.


LogReader

Ermoeglicht den Zugriff auf die Logdateien.

Beinhaltet Funktionen fuer den Abruf der gesamten Logdatei fuer das RevPiPyLoad-System und die Logdatei der PLC-Anwendung.

Derived from

None

Class Attributes

None

Class Methods

None

Methods

LogReader Instantiiert LogReader-Klasse.
closeall Fuehrt close auf File Handler durch.
load_applog Uebertraegt Logdaten des PLC Programms Binaer.
load_plclog Uebertraegt Logdaten des Loaders Binaer.

Static Methods

None

LogReader (Constructor)

LogReader()

Instantiiert LogReader-Klasse.

LogReader.closeall

closeall()

Fuehrt close auf File Handler durch.

LogReader.load_applog

load_applog(start, count)

Uebertraegt Logdaten des PLC Programms Binaer.

start
Startbyte
count
Max. Byteanzahl zum uebertragen
Returns:
Binary() der Logdatei

LogReader.load_plclog

load_plclog(start, count)

Uebertraegt Logdaten des Loaders Binaer.

start
Startbyte
count
Max. Byteanzahl zum uebertragen
Returns:
Binary() der Logdatei
Up


PipeLogwriter

File PIPE fuer das Schreiben des APP Log.

Spezieller LogFile-Handler fuer die Ausgabe des subprocess fuer das Python PLC Programm. Die Ausgabe kann nicht auf einen neuen FileHandler umgeschrieben werden. Dadurch waere es nicht moeglich nach einem logrotate die neue Datei zu verwenden. Ueber die PIPE wird dies umgangen.

Derived from

Thread

Class Attributes

None

Class Methods

None

Methods

PipeLogwriter Instantiiert PipeLogwriter-Klasse.
__del__ Close file handler.
_configurefh Konfiguriert den FileHandler fuer Ausgaben der PLCAPP.
logline Schreibt eine Zeile in die Logdatei oder stdout.
newlogfile Konfiguriert den FileHandler auf eine neue Logdatei.
run Prueft auf neue Logzeilen und schreibt diese.
stop Beendetden Thread und die FileHandler werden geschlossen.

Static Methods

None

PipeLogwriter (Constructor)

PipeLogwriter(logfilename)

Instantiiert PipeLogwriter-Klasse.

logfilename
Dateiname fuer Logdatei

PipeLogwriter.__del__

__del__()

Close file handler.

PipeLogwriter._configurefh

_configurefh()

Konfiguriert den FileHandler fuer Ausgaben der PLCAPP.

Returns:
FileHandler-Objekt

PipeLogwriter.logline

logline(message)

Schreibt eine Zeile in die Logdatei oder stdout.

message
Logzeile zum Schreiben

PipeLogwriter.newlogfile

newlogfile()

Konfiguriert den FileHandler auf eine neue Logdatei.

PipeLogwriter.run

run()

Prueft auf neue Logzeilen und schreibt diese.

PipeLogwriter.stop

stop()

Beendetden Thread und die FileHandler werden geschlossen.

Up


RevPiPlc

Verwaltet das PLC Python Programm.

Dieser Thread startet das PLC Python Programm und ueberwacht es. Sollte es abstuerzen kann es automatisch neu gestartet werden. Die Ausgaben des Programms werden in eine Logdatei umgeleitet, damit der Entwickler sein Programm analysieren und debuggen kann.

Derived from

Thread

Class Attributes

None

Class Methods

None

Methods

RevPiPlc Instantiiert RevPiPlc-Klasse.
_configureplw Konfiguriert den PipeLogwriter fuer Ausgaben der PLCAPP.
_setuppopen Setzt UID und GID fuer das PLC Programm.
_spopen Startet das PLC Programm.
newlogfile Konfiguriert die FileHandler auf neue Logdatei.
run Fuehrt PLC-Programm aus und ueberwacht es.
stop Beendet PLC-Programm.

Static Methods

None

RevPiPlc (Constructor)

RevPiPlc(program, arguments, pversion)

Instantiiert RevPiPlc-Klasse.

RevPiPlc._configureplw

_configureplw()

Konfiguriert den PipeLogwriter fuer Ausgaben der PLCAPP.

Returns:
PipeLogwriter()

RevPiPlc._setuppopen

_setuppopen()

Setzt UID und GID fuer das PLC Programm.

RevPiPlc._spopen

_spopen(lst_proc)

Startet das PLC Programm.

lst_proc
Prozessliste
Returns:
subprocess

RevPiPlc.newlogfile

newlogfile()

Konfiguriert die FileHandler auf neue Logdatei.

RevPiPlc.run

run()

Fuehrt PLC-Programm aus und ueberwacht es.

RevPiPlc.stop

stop()

Beendet PLC-Programm.

Up


RevPiPyLoad

Hauptklasse, die alle Funktionen zur Verfuegung stellt.

Hier wird die gesamte Konfiguraiton eingelesen und der ggf. aktivierte XML-RPC-Server gestartet.

Derived from

None

Class Attributes

root

Class Methods

None

Methods

RevPiPyLoad Instantiiert RevPiPyLoad-Klasse.
_loadconfig Load configuration file and setup modul.
_plcthread Konfiguriert den PLC-Thread fuer die Ausfuehrung.
_sigexit Signal handler to clean and exit program.
_sigloadconfig Signal handler to load configuration.
_signewlogfile Signal handler to start new logfile.
packapp Erzeugt aus dem PLC-Programm ein TAR/Zip-File.
start Start revpipyload.
stop Stop revpipyload.
xml_getconfig Uebertraegt die RevPiPyLoad Konfiguration.
xml_getfilelist Uebertraegt die Dateiliste vom plcworkdir.
xml_getpictoryrsc Gibt die config.rsc Datei von piCotry zurueck.
xml_getprocimg Gibt die Rohdaten aus piControl0 zurueck.
xml_plcdownload Uebertraegt ein Archiv vom plcworkdir.
xml_plcexitcode Gibt den aktuellen exitcode vom PLC Programm zurueck.
xml_plcrunning Prueft ob das PLC Programm noch lauft.
xml_plcstart Startet das PLC Programm.
xml_plcstop Stoppt das PLC Programm.
xml_plcupload Empfaengt Dateien fuer das PLC Programm einzeln.
xml_plcuploadclean Loescht das gesamte plcworkdir Verzeichnis.
xml_psstart Startet den Prozessabbildserver.
xml_psstop Stoppt den Prozessabbildserver.
xml_reload Startet RevPiPyLoad neu und verwendet neue Konfiguraiton.
xml_setconfig Empfaengt die RevPiPyLoad Konfiguration.
xml_setpictoryrsc Schreibt die config.rsc Datei von piCotry.

Static Methods

None

RevPiPyLoad (Constructor)

RevPiPyLoad()

Instantiiert RevPiPyLoad-Klasse.

RevPiPyLoad._loadconfig

_loadconfig()

Load configuration file and setup modul.

RevPiPyLoad._plcthread

_plcthread()

Konfiguriert den PLC-Thread fuer die Ausfuehrung.

Returns:
PLC-Thread Object or None

RevPiPyLoad._sigexit

_sigexit(signum, frame)

Signal handler to clean and exit program.

RevPiPyLoad._sigloadconfig

_sigloadconfig(signum, frame)

Signal handler to load configuration.

RevPiPyLoad._signewlogfile

_signewlogfile(signum, frame)

Signal handler to start new logfile.

RevPiPyLoad.packapp

packapp(mode="tar", pictory=False)

Erzeugt aus dem PLC-Programm ein TAR/Zip-File.

mode
Packart 'tar' oder 'zip'
pictory
piCtory Konfiguration mit einpacken
Returns:
Dateinamen des Archivs

RevPiPyLoad.start

start()

Start revpipyload.

RevPiPyLoad.stop

stop()

Stop revpipyload.

RevPiPyLoad.xml_getconfig

xml_getconfig()

Uebertraegt die RevPiPyLoad Konfiguration.

Returns:
dict() der Konfiguration

RevPiPyLoad.xml_getfilelist

xml_getfilelist()

Uebertraegt die Dateiliste vom plcworkdir.

Returns:
list() mit Dateinamen

RevPiPyLoad.xml_getpictoryrsc

xml_getpictoryrsc()

Gibt die config.rsc Datei von piCotry zurueck.

Returns:
xmlrpc.client.Binary()

RevPiPyLoad.xml_getprocimg

xml_getprocimg()

Gibt die Rohdaten aus piControl0 zurueck.

Returns:
xmlrpc.client.Binary()

RevPiPyLoad.xml_plcdownload

xml_plcdownload(mode="tar", pictory=False)

Uebertraegt ein Archiv vom plcworkdir.

mode
Archivart 'tar' 'zip'
pictory
piCtory Konfiguraiton mit einpacken
Returns:
Binary() mit Archivdatei

RevPiPyLoad.xml_plcexitcode

xml_plcexitcode()

Gibt den aktuellen exitcode vom PLC Programm zurueck.

Returns:
int() exitcode oder: -1 laeuft noch -2 Datei nicht gefunden -3 Lief nie

RevPiPyLoad.xml_plcrunning

xml_plcrunning()

Prueft ob das PLC Programm noch lauft.

Returns:
True, wenn das PLC Programm noch lauft

RevPiPyLoad.xml_plcstart

xml_plcstart()

Startet das PLC Programm.

Returns:
int() Status: -0 Erfolgreich -1 Programm lauft noch -2 Datei nicht gefunden

RevPiPyLoad.xml_plcstop

xml_plcstop()

Stoppt das PLC Programm.

Returns:
int() Exitcode vom PLC Programm -0 Erfolgreich -1 PLC Programm lief nicht

RevPiPyLoad.xml_plcupload

xml_plcupload(filedata, filename)

Empfaengt Dateien fuer das PLC Programm einzeln.

filedata
GZIP Binary data der datei
filename
Name inkl. Unterverzeichnis der Datei
Returns:
Ture, wenn Datei erfolgreich gespeichert wurde

RevPiPyLoad.xml_plcuploadclean

xml_plcuploadclean()

Loescht das gesamte plcworkdir Verzeichnis.

Returns:
True, wenn erfolgreich

RevPiPyLoad.xml_psstart

xml_psstart()

Startet den Prozessabbildserver.

Returns:
True, wenn start erfolgreich

RevPiPyLoad.xml_psstop

xml_psstop()

Stoppt den Prozessabbildserver.

Returns:
True, wenn stop erfolgreich

RevPiPyLoad.xml_reload

xml_reload()

Startet RevPiPyLoad neu und verwendet neue Konfiguraiton.

RevPiPyLoad.xml_setconfig

xml_setconfig(dc, loadnow=False)

Empfaengt die RevPiPyLoad Konfiguration.

Returns:
True, wenn erfolgreich angewendet

RevPiPyLoad.xml_setpictoryrsc

xml_setpictoryrsc(filebytes, reset=False)

Schreibt die config.rsc Datei von piCotry.

filebytes
xmlrpc.client.Binary()-Objekt
reset
Reset piControl Device
Returns:
Statuscode: -0 Alles erfolgreich -1 Kann JSON-Datei nicht laden -2 piCtory Elemente in JSON-Datei nicht gefunden -3 Konnte Konfiguraiton nicht schreiben -4 Module in Konfiguration enthalten, die es nicht gibt -5 Kein RAP Katalog zur Ueberpruefung gefunden Positive Zahl ist exitcode von piControlReset
Up


RevPiSlave

Derived from

Thread

Class Attributes

None

Class Methods

None

Methods

RevPiSlave Instantiiert RevPiSlave-Klasse.
newlogfile Konfiguriert die FileHandler auf neue Logdatei.
run
stop Beendet Slaveausfuehrung.

Static Methods

None

RevPiSlave (Constructor)

RevPiSlave()

Instantiiert RevPiSlave-Klasse.

RevPiSlave.newlogfile

newlogfile()

Konfiguriert die FileHandler auf neue Logdatei.

RevPiSlave.run

run()

RevPiSlave.stop

stop()

Beendet Slaveausfuehrung.

Up


RevPiSlaveDev

Derived from

Thread

Class Attributes

None

Class Methods

None

Methods

RevPiSlaveDev
run
stop

Static Methods

None

RevPiSlaveDev (Constructor)

RevPiSlaveDev(devcon, deadtime)

RevPiSlaveDev.run

run()

RevPiSlaveDev.stop

stop()
Up


_zeroprocimg

_zeroprocimg()

Setzt Prozessabbild auf NULL.

Up