plc slave thread überwachen

This commit is contained in:
2017-09-17 17:10:36 +02:00
parent 524ae2d79d
commit 62f5cc0b45
3 changed files with 33 additions and 19 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-5.1.dtd">
<!-- eric project file for project revpipyload -->
<!-- Saved: 2017-09-12, 16:51:56 -->
<!-- Saved: 2017-09-17, 15:51:38 -->
<!-- Copyright (C) 2017 Sven Sager, akira@narux.de -->
<Project version="5.1">
<Language>en_US</Language>
@@ -9,7 +9,7 @@
<ProgLanguage mixed="0">Python3</ProgLanguage>
<ProjectType>Console</ProjectType>
<Description>Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten.</Description>
<Version>0.4.3</Version>
<Version>0.5.1</Version>
<Author>Sven Sager</Author>
<Email>akira@narux.de</Email>
<Eol index="1"/>

View File

@@ -50,7 +50,7 @@ from time import asctime
from xmlrpc.client import Binary
from xmlrpc.server import SimpleXMLRPCServer
pyloadversion = "0.5.0"
pyloadversion = "0.5.1"
re_ipacl = "(([\\d\\*]{1,3}\\.){3}[\\d\\*]{1,3},[0-1] ?)*"
@@ -187,12 +187,7 @@ class RevPiPyLoad():
# PLC Thread konfigurieren
self.plc = self._plcthread()
if self.plcslave:
self.th_plcslave = picontrolserver.RevPiSlave(
self.plcslaveacl, self.plcslaveport
)
else:
self.th_plcslave = None
self.th_plcslave = self._plcslave()
# XMLRPC-Server Instantiieren und konfigurieren
if self.xmlrpc >= 1:
@@ -306,6 +301,20 @@ class RevPiPyLoad():
proginit.logger.debug("leave RevPiPyLoad._plcthread()")
return th_plc
def _plcslave(self):
"""Erstellt den PlcSlave-Server Thread.
@return PLC-Server-Thread Object or None"""
proginit.logger.debug("enter RevPiPyLoad._plcslave()")
th_plc = None
if self.plcslave:
th_plc = picontrolserver.RevPiSlave(
self.plcslaveacl, self.plcslaveport
)
proginit.logger.debug("leave RevPiPyLoad._plcslave()")
return th_plc
def _sigexit(self, signum, frame):
"""Signal handler to clean and exit program."""
proginit.logger.debug("enter RevPiPyLoad._sigexit()")
@@ -410,7 +419,14 @@ class RevPiPyLoad():
while not self._exit \
and not self.evt_loadconfig.is_set():
# TODO: Soll hier der PLC Server Thread geprüft werden?
# PLC Server Thread prüfen
if self.plcslave and not self.th_plcslave.is_alive():
proginit.logger.warning(
"restart plc slave after thread was not running"
)
self.th_plcslave = self._plcslave()
if self.th_plcslave is not None:
self.th_plcslave.start()
# piCtory auf Veränderung prüfen
if self.pictorymtime != os.path.getmtime(proginit.pargs.configrsc):
@@ -763,17 +779,15 @@ class RevPiPyLoad():
-2: Laeuft bereits
"""
if self.plcslave:
if self.th_plcslave is not None and self.th_plcslave.is_alive():
return -2
if self.th_plcslave is not None and self.th_plcslave.is_alive():
return -2
else:
self.th_plcslave = self._plcslave()
if self.th_plcslave is None:
return -1
else:
self.th_plcslave = picontrolserver.RevPiSlave(
self.plcslaveacl, self.plcslaveport
)
self.th_plcslave.start()
return 0
else:
return -1
def xml_plcslavestop(self):
"""Stoppt den PLC Slave Server.

View File

@@ -27,7 +27,7 @@ setup(
license="LGPLv3",
name="revpipyload",
version="0.5.0",
version="0.5.1",
scripts=["data/revpipyload"],