ProfiNet Gateway schaltet wert alleine wenn Programm läuft
Posted: 21 May 2019, 11:34
Hallo zusammen,
wir haben einen kleinen Testaufbau gemacht. Auf der einen Seite ist ein normaler Pi mit zwei Tastern. Über Netzwerk verbunden hängt der Revolution Pi mit ProfiNET Gateway dran. Ich schicke den Tasten druck als ein Byte via TCP/IP socket. Das Byte kann 0 (keine Taste), 1 (Taster 1 gedrückt) und 2 (Taster 2 gedrückt) sein. Ich schreibe dieses Byte bei empfangen mit dem RevPiModIO auf Output_1. Wenn ich mir nun mit dem Befehl piTest -r 512,1 das Byte in der Konsole ausgeben lasse. Wechselt es bei Tastendruck 2 auf den Wert 2 und bei loslassen wieder auf 0. Soweit so gut. Nun springt dieses Byte aber weiter von 0 auf 2 auf 0. Es ist keine Taste gedrückt. Debuggen hat gezeigt das ich den Wert auch nicht mehr beschreibe.
Das ProfiNet Gateway ist im Moment noch nicht an eine Netz angeschlossen. Sobald ich das Programm beende, hört das springen auf des Wertes auf, und der Wert bleibt auf dem, den es beim Abschalten des Programmes hatte.
Muss ich irgendwo etwas "quitieren" oder "setzen"?
Das Programm:
consolen output piTest -r 512,1
wir haben einen kleinen Testaufbau gemacht. Auf der einen Seite ist ein normaler Pi mit zwei Tastern. Über Netzwerk verbunden hängt der Revolution Pi mit ProfiNET Gateway dran. Ich schicke den Tasten druck als ein Byte via TCP/IP socket. Das Byte kann 0 (keine Taste), 1 (Taster 1 gedrückt) und 2 (Taster 2 gedrückt) sein. Ich schreibe dieses Byte bei empfangen mit dem RevPiModIO auf Output_1. Wenn ich mir nun mit dem Befehl piTest -r 512,1 das Byte in der Konsole ausgeben lasse. Wechselt es bei Tastendruck 2 auf den Wert 2 und bei loslassen wieder auf 0. Soweit so gut. Nun springt dieses Byte aber weiter von 0 auf 2 auf 0. Es ist keine Taste gedrückt. Debuggen hat gezeigt das ich den Wert auch nicht mehr beschreibe.
Das ProfiNet Gateway ist im Moment noch nicht an eine Netz angeschlossen. Sobald ich das Programm beende, hört das springen auf des Wertes auf, und der Wert bleibt auf dem, den es beim Abschalten des Programmes hatte.
Muss ich irgendwo etwas "quitieren" oder "setzen"?
Das Programm:
Code: Select all
#!/usr/bin/env python3.5
import socket
import revpimodio2
TCP_IP = '172.31.1.155'
TCP_PORT = 5005
BUFFER_SIZE = 1 # Normally 1024, but we want fast response
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
while 1:
s.listen(1)
conn, addr = s.accept()
print('Connection address:', addr)
while 1:
data = conn.recv(BUFFER_SIZE)
if not data: break
rpi = revpimodio2.RevPiModIO(autorefresh=True)
rpi.io.Output_1.set_intvalue(int(data))
print("received data:", rpi.io.Output_1.value)
print("ioerrors: ", rpi.ioerrors)
conn.close()
Ausgabe Python-Konsolepi@RevPi13243:~ $ piTest -r 512,1
0
0
2
2
0
0
0
2
0
0
0
2
0
2
2
2
2
2
0
0
2
2
2
0
2
2
2
0
2
0
2
2
0
0
2
2
0
0
2
2
2
0
Wenn Ihr noch etwas braucht, lasst es mich wissen. Danke schon mal für die Antwort.sudo+ssh://pi@172.31.1.155:22/usr/bin/python3.5 -u /home/pi/tmp/pycharm_project_38/TCPServer.py
Connection address: ('172.31.1.69', 42332)
received data: 2
ioerrors: 0
Connection address: ('172.31.1.69', 42334)
received data: 0
ioerrors: 0
Connection address: ('172.31.1.69', 42336)
received data: 2
ioerrors: 0
Connection address: ('172.31.1.69', 42338)
received data: 0
ioerrors: 0
Connection address: ('172.31.1.69', 42340)
received data: 2
ioerrors: 0
Connection address: ('172.31.1.69', 42342)
received data: 0
ioerrors: 0