Code: Alles auswählen
Zur Erklärung :
Ich habe eine siemens logo zur poolsteuerung, wo ich auch 2 Temperatursensoren einlese. Jetzt steuere ich eine LED Anzeige mit Raspery pi an, wo mir im 10 Sekunden Zeitraster 3 Werte angezeigt werden
schleife 0 : endlos 1-3 wiederholen
Schleife 1: Systemzeit (Quelle raspberry)
Schleife 2: temp1 (Quelle Logo)
Schleife 3: temp 2 (Quelle Logo)
Die 3 Schleifen laufen sequentiell und endlos.
Wenn ich ein Verbindungs Abbruch (Logo zu Raspberry) zur Logo habe, wird das komplette Programm mit einer entsprechenden Fehlermeldung beendet.
Mein Wunsch wäre, das in so einen Fall, die gesamtschleife weiterläuft,
Die Uhrzeit weiterhin angezeigt wird im gesetzten Zeitraster, jedoch im Hintergrund versucht wird die Logo Verbindung wieder zu starten.
In der Zwischenzeit, wird nur die Uhrzeit und bei der Temperatur jeweils nur minus Striche angezeigt.
Ist das in mein pythonprogramm zu realisieren?,
Danke Euch für einen Rat
Gruß
Steffen
hier mal mein bisheriger Programm Aufbau dazu:
#!/usr/bin/env pythoimport osn3
import RPi.GPIO as GPIO
import time, datetime
import string
import snap7
import sys
import os
import subprocess
....
# Temp aus Logo lesen
plc = snap7.logo.Logo()
plc.connect(".....,1118,1245)
plc.get_connected()
AdrLogo_Temp_pool = "VW1118"
AdrLogo_Temp_aussen = "VW1120"
.....
Code: Alles auswählen
try:
run = time.perf_counter()
while (round((time.perf_counter()-run),1) != (30.9)):
#Uhrzeit anzeigen
start = time.perf_counter()
while (round((time.perf_counter()-start),1) != (10.3)):
print_Zeit()
#Pooltemperatur anzeigen
werth = str(plc.read(AdrLogo_Temp_pool))
if werth == "":
print("Something went wrong TP")
start = time.perf_counter()
while (round((time.perf_counter()-start),1) != (10.3)):
print_Temperatur(werth,"Temp. Pool")
print("Temp.Pool",werth)
#Außentemperatur anzeigen
werte = str(plc.read(AdrLogo_Temp_aussen))
start = time.perf_counter()
while (round((time.perf_counter()-start),1) != (10.3)):
print_Temperatur(werte,"Temp. Außen")
print("Temp.Außen",werte)
if werte == "":
print("Something went wrong TA")
#call_python('/home/pi/Desktop/finale/masterpool.py')
run = time.perf_counter()
#os.execl(sys.executable, sys.executable, * sys.argv) # Nothing hapens
except:
print ("Nach der Schleife")
digit_aus()
plc.connect("192.168.178.6",1118,1245)
plc.get_connected()
print("Program terminated manually!")
#else:
print ("Nach Error")
digit_aus()
finally:
print ("LED zurückgesetzt")
digit_aus()
print("Tschau")
digit_aus()
plc.disconnect()
plc.destroy()