ich bin gerade dabei ein Programm zu schreiben, welches einen Frequenzumrichter ansteuert. Nun suche den ganzen Tag schon einen Weg zwei for-Schleifen zu parallelisieren. Also das sie gleichzeitig starten. Bei meinen Recherchen bin ich über Threading und Multiprocessing gestolpert. Ich habe mich jetzt fürs Threading entschieden, aber ich bekomme es, wie gesagt, nicht hin.
Das Problem ist, dass mein Programm die zwei for-Schleifen nicht parallel ausführt. Unter "#PARALLELIZATION OF 'STEPWISE INCREASING VOLTAGE OUTPUT' AND '#MEASUREMENT VOLTAGE & CURRENT'" findet ihr mein Versuch die for-Schleife "#STEPWISE INCREASING VOLTAGE OUTPUT" und "#MEASUREMENT VOLTAGE & CURRENT" zu threaden.
Das ist mein erster in Python bzw. generell geschriebener Code. Also seht es mir nach, falls es Laienhaft geworden ist


Code: Alles auswählen
import matplotlib.pyplot as plt
import serial
import time
import pandas as pd
import threading
#DEFINITION:
a = 2000 #Spannungssteigerung in V pro Sekunde
wertetabelle = []
#CONNECTION UND BASIC SETTINGS
ser=serial.Serial(port="COM9", baudrate=9600, bytesize=8, stopbits=1) #Port öffnen
ser.write(b"*OUTP OFF\r") #Ausgang aus
ser.write(b"*SYST:REM\r") #Remotesteuerung ein
ser.write(b"*OUTP SER\r") #Bereich seriell
ser.write(b"*FREQ 50.0\r") #Frequenz auf x stellen
ser.write(b"*VOLT 0.6\r") #Spannung auf den niedrigsten einzustellenden Wert gestellt
ser.write(b"*OUTP ON\r")
print("basic settings done\n\r") #Ausgang ein
time.sleep(5) #Einschwingvorgang
#STEPWISE INCREASING VOLTAGE OUTPUT
def Spannungssteigerung():
for j in range(30):
time.sleep(1)
x=(round(float((a+a*j)/127),1))
print(x)
output="*VOLT %s\r" %(x)
ser.write(output.encode())
return x
return output
if x > 250:
ser.write(b"*OUTP OFF\r")
break
#MEASUREMENT VOLTAGE & CURRENT
def Messwerte():
for i in range(300):
time.sleep(0.1)
ser.write(b"*READ?\r\n")
messwerte = ser.read(46)
Spannung = float(messwerte[0:6])
Strom = float(messwerte[8:14])
Spannung = Spannung*127/1000
wertetabelle.append([Spannung, Strom])
return i
return messwerte
return Spannung
return Strom
wertetabelle1= pd.DataFrame(wertetabelle, columns = ["Spannung [kV]", "Strom[A]"])
#PARALLELIZATION OF 'STEPWISE INCREASING VOLTAGE OUTPUT' AND '#MEASUREMENT VOLTAGE & CURRENT'
if __name__ == '__main__':
x1 = threading.Thread(target=Spannungssteigerung)
x1.start()
x2 = threading.Thread(target=Messwerte)
x2.start()
x1.join()
x2.join()
#CLOSE CONNECTION AND OUTPUT
ser.write(b"*OUTP OFF\r") #close output
ser.close() #close port
#EVALUATION OF MEASUREDATA
wertetabelle1.to_csv(r'D:\Durchschlagsversuch\Spannungs-undStromverlauf.csv')
df = pd.read_csv('D:\Durchschlagsversuch\Spannungs-undStromverlauf.csv')
y1=df["Spannung [kV]"].values
y2=df["Strom[A]"].values
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title("Spannungs- und Stromverlauf")
ax.set_xlabel("Zeit [cs]")
ax.set_ylabel("Spannung [kV]",color="blue")
ax.plot(y1,color="blue")
ax2=ax.twinx()
ax2.plot(y2, color = "red")
ax2.set_ylabel("Strom [A]",color="red")
ax.plot(y1)
fig.savefig("D:\Durchschlagsversuch\Spannungs-und Stromverlauf_.png", format='png', dpi=600)
print("ENDE")