Seite 1 von 1
Drehgeber an SPS
Verfasst: Donnerstag 11. April 2019, 11:41
von Streifenhase1
ich hab einen Windows Rechner an der eine Siemens S7 hängt, an dieser hängt ein drehgeber 5000 Impulse.
ich habe mich mit Python Snap 7 mit der S7 verbunden und lese die Bits aus.
ich möchte nun die Impulse des drehgeber auswerten.
so das es mir quasie anzeigt wie schnell in m/min etwas läuft.
könnt ihr mir helfen bzw gibt es dazu schon was...
Re: Drehgeber an SPS
Verfasst: Donnerstag 11. April 2019, 14:41
von Streifenhase1
Ok hab es hinbekommen
Danke
Re: Drehgeber an SPS
Verfasst: Sonntag 14. April 2019, 17:10
von Streifenhase1
So hier mal den Code so wie ich es gemacht habe, Bezeichnungen werden noch angepasst
Code: Alles auswählen
def wheel_speed(self):
speed2 = "0"
try:
plc = snap7.client.Client()
plc.connect("192.168.150.3",0,1)
con = plc.get_connected()
print ("Connect", con)
byte = plc.db_read(1,1,55)
speedbyte = get_int(byte,0,43)
x = int(impulse) #entspricht 25000
t = int(gesamtzeit) #entspricht 60
speed = speedbyte/x*t
speed2 = str(speed)
print(speed)
except Exception as ex:
print("Verbindungsfehler")
self.restart = self.after(1000, self.wheel_speed)
Allerding bräucht ich jetzt eine Stupser wie ich nun
die länge Zähle.
aller 1. Sekunde wird die Funktion aufgerufen. nun Rechne ich ja "speedbyte" / x das entspricht dann eine länge z.B. 1m nach dem nächsten Aufruf der Funktion ist es wieder 1m der dazu kommt also das Ergebniss währe ja dann 2m usw. solage bis ein Signal kommt und dann wir es wieder bei 0 bzw 1 los.
Re: Drehgeber an SPS
Verfasst: Sonntag 14. April 2019, 18:05
von Sirius3
Ich verstehe die Frage nicht, weil Kontext fehlt. `impulse` ist nirgends definiert, ebensowenig `gesamtzeit`. Warum sind das nicht schon Zahlen, oder vielleicht doch? `speed2` wird dagegen definiert, aber nirgends benutzt.
Re: Drehgeber an SPS
Verfasst: Sonntag 14. April 2019, 20:10
von Streifenhase1
also speed2 wir verwendet um den Wert auf ein Kabel zu setzen.... hab ich hier weggelassen.
Also "speedbyte" gibt die Aktuellen Impulse des drehgeber in 1 Sek aus. wird quasi aus der SPS ausgelesen. einfachhalber würde ich für meine Frage den Wert auf 22500 festlegen.
"x" ist der Wert der Impulse die ich für 1m brauche der liegt bei 25000 Impulse des Drehgebers für einen Meter.
wenn ich jetzt "speedbyte" / "x" rechne komme ich auf 0,9m nach 1000ms wird wieder "speedbyte" und "x" abgefagt. (speedbyte kann sich ändern).
Das Ergebnis möchte ich dann auf die 0,9m des ersten durchlaufen addieren. und genauso mit dem 3, 4 usw. Durchlauf der Funktion.
so das nach 10 Sekunden quasi bei gleichbleibenden Impuldsen.
9m ausgegeben wird....
hoffe man versteht jetzt die Erklärung.
könnte jetzt nach jedem Durchlauf den Wert in eine Datei schreiben und beim nächsten wieder auslesen, glaub aber das ist nicht die beste Lösung
Re: Drehgeber an SPS
Verfasst: Sonntag 14. April 2019, 20:16
von Sirius3
Du hast doch eine Instanz `self` von was auch immer, auf der Du Attribute speichern kannst.
Re: Drehgeber an SPS
Verfasst: Montag 15. April 2019, 07:03
von Streifenhase1
ja aber hab Probleme damit es zu übergeben! Also auf Deutsch ich weis nicht wie ich den wert speicher bzw. übergegebe.
Re: Drehgeber an SPS
Verfasst: Montag 15. April 2019, 08:01
von sparrow
Da deine Variablen magisch auftauchen und die Funktion aussieht, als würde sie in eine Klasse gehören, sich aber so nicht verhält, kann dir das keiner sagen.
Du musst schon mehr Code zeigen.
Was ist denn "self" auf das Sirius3 bereits hingewiesen hat?
Re: Drehgeber an SPS
Verfasst: Montag 15. April 2019, 10:10
von __blackjack__
Die Ausnahmebehandlung gehört da so nicht hin. Es kann nicht sein das *jede* Ausnahme sinnvoll mit der Ausgabe dieses Textes behandelt werden kann!