@rogerb
Danke erstmals für die sehr schnelle und ausführliche Antwort.
Das mit der csv. Datei macht sinn, jedoch müssen wir vom Auftrag aus eine txt. Datei erzeugen.
Ich habe hier nochmals den gesamten Code. Die Werte kommen von einem Client welche die Daten in ein Logger Schreibt und sobald ich den Logger aktiviere, wird von 0 - 100%. geladen und diese aufgezeichneten Werte muss ich eben in einer Boris.txt Datei ausgeben. Wenn Sie mir sagen, dass eine While Schleife weniger Sinn macht, dann kann ich das auch auslassen. Ich habe lange probiert aber auch keine wirklich Sinnvolle Lösung gefunden. Nun wäre noch Interessant zu wissen, ob ich die Round Function auch in meiner for Schleife für die Text Datei anwenden kann, dass mir die Zahlen in der Textdatei IMMER auf 3 Nachkommastellen angezeigt werden.
Code: Alles auswählen
import sys
sys.path.insert(0, "..")
from opcua import Client
import matplotlib.pyplot as plt
if __name__ == "__main__":
client = Client("opc.tcp://192.168.43.151:4840")
try:
client.connect()
root = client.get_root_node()
OpcUA_U_in1 = root.get_child(["0:Objects",
"2:DeviceSet",
"4:CODESYS Control for Raspberry Pi SL",
"3:Resources",
"4:app",
"3:Programs",
"4:MAIN",
"4:OpcUA_U_in1"])
OpcUA_U_in2 = root.get_child(["0:Objects",
"2:DeviceSet",
"4:CODESYS Control for Raspberry Pi SL",
"3:Resources",
"4:app",
"3:Programs",
"4:MAIN",
"4:OpcUA_U_in2"])
OpcUA_U_out1 = root.get_child(["0:Objects",
"2:DeviceSet",
"4:CODESYS Control for Raspberry Pi SL",
"3:Resources",
"4:app",
"3:Programs",
"4:MAIN",
"4:OpcUA_U_out1"])
OpcUA_U_out2 = root.get_child(["0:Objects",
"2:DeviceSet",
"4:CODESYS Control for Raspberry Pi SL",
"3:Resources",
"4:app",
"3:Programs",
"4:MAIN",
"4:OpcUA_U_out2"])
OpcUA_U_out3 = root.get_child(["0:Objects",
"2:DeviceSet",
"4:CODESYS Control for Raspberry Pi SL",
"3:Resources",
"4:app",
"3:Programs",
"4:MAIN",
"4:OpcUA_U_out3"])
In1 = OpcUA_U_in1.get_value()
In2 = OpcUA_U_in2.get_value()
Out1 = OpcUA_U_out1.get_value()
Out2 = OpcUA_U_out2.get_value()
Out3 = OpcUA_U_out3.get_value()
werte = open("data/BORIS.txt", "w+")
time = 0.000
ergebniss = []
for i in range(1000):
werte.write("{:.3f}".format(time)), werte.write("\t")
werte.write("{:.3f}".format(In1[i])), werte.write("\t")
werte.write("{:.3f}".format(In2[i])), werte.write("\t")
werte.write("{:.3f}".format(Out1[i])), werte.write("\t")
werte.write("{:.3f}".format(Out2[i])), werte.write("\t")
werte.write("{:.3f}".format(Out3[i])), werte.write("\r")
time = time + 0.005
ergebniss.append(time)
plt.axis([0.0, 5.0, -4.0, 8.0])
plt.plot(ergebniss, In1, label=r'$In1$', color="green", linestyle="-", linewidth=2.5)
plt.plot(ergebniss, In2, label=r'$In2$', color="purple", linestyle="-", linewidth=2.5)
plt.plot(ergebniss, Out1, label=r'$Out1$', color="cyan", linestyle="-", linewidth=2.5)
plt.plot(ergebniss, Out2, label=r'$Out2$', color="orange",linestyle="-", linewidth=2.5)
plt.plot(ergebniss, Out3, label=r'$Out3$', color="red",linestyle="-", linewidth=2.5)
plt.title('SPS_Signals', fontsize=26, color='blue'), plt.legend(loc='best')
plt.grid(False), plt.savefig('data/SPS_Signal.png'), plt.show()
finally:client.disconnect()
0.000 1.936 3.218 -1.282 5.153 0.527
0.005 2.024 3.192 -1.168 5.216 0.527
0.010 2.024 3.192 -1.168 5.216 0.527
0.015 2.065 3.213 -1.148 5.278 0.527
0.020 2.065 3.213 -1.148 5.278 0.527
0.025 2.101 3.236 -1.135 5.336 0.527
0.030 2.101 3.236 -1.135 5.336 0.527
0.035 2.202 3.201 -0.998 5.403 0.527
0.040 2.202 3.201 -0.998 5.403 0.527
0.045 2.225 3.183 -0.958 5.408 0.527
0.050 2.225 3.183 -0.958 5.408 0.527
0.055 2.350 3.186 -0.836 5.536 0.527
0.060 2.350 3.186 -0.836 5.536 0.527
0.065 2.415 3.199 -0.784 5.614 0.527
0.070 2.415 3.199 -0.784 5.614 0.527
0.075 2.480 3.192 -0.712 5.672 0.527
0.080 2.480 3.192 -0.712 5.672 0.527
0.085 2.521 3.207 -0.686 5.727 0.527
0.090 2.521 3.207 -0.686 5.727 0.527
0.095 2.601 3.206 -0.605 5.806 0.527
0.100 2.601 3.206 -0.605 5.806 0.527
0.105 2.656 3.205 -0.549 5.861 0.527
0.110 2.656 3.205 -0.549 5.861 0.527
0.115 2.699 3.229 -0.530 5.928 0.527
0.120 2.699 3.229 -0.530 5.928 0.527
0.125 2.795 3.207 -0.412 6.001 0.527
0.130 2.795 3.207 -0.412 6.001 0.527
0.135 2.842 3.207 -0.364 6.049 0.527
0.140 2.842 3.207 -0.364 6.049 0.527
0.145 2.912 3.219 -0.306 6.131 0.527
0.150 2.912 3.219 -0.306 6.131 0.527
0.155 2.990 3.202 -0.213 6.192 0.527
0.160 2.990 3.202 -0.213 6.192 0.527
0.165 3.074 3.202 -0.127 6.276 0.527
0.170 3.074 3.202 -0.127 6.276 0.527
0.175 3.104 3.186 -0.082 6.291 0.527
0.180 3.104 3.186 -0.082 6.291 0.527
0.185 3.186 3.213 -0.027 6.399 0.527
0.190 3.186 3.213 -0.027 6.399 0.527
0.195 3.229 3.196 0.033 6.425 0.527
0.200 3.229 3.196 0.033 6.425 0.527
0.205 3.101 3.211 -0.110 6.312 0.527
0.210 3.101 3.211 -0.110 6.312 0.527
So sieht die Textdatei aus und ganz Links werden dann Zeilen von 0 bis 1000 Werte bis nach unten mit eben diesen 6 Werten pro Zeile ausgegeben.
Danke für Ihre Hilfe!!!