Drehgeber an SPS

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

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...
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

Ok hab es hinbekommen

Danke
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

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.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

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
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast doch eine Instanz `self` von was auch immer, auf der Du Attribute speichern kannst.
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

ja aber hab Probleme damit es zu übergeben! Also auf Deutsch ich weis nicht wie ich den wert speicher bzw. übergegebe.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

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?
Benutzeravatar
__blackjack__
User
Beiträge: 13110
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Die Ausnahmebehandlung gehört da so nicht hin. Es kann nicht sein das *jede* Ausnahme sinnvoll mit der Ausgabe dieses Textes behandelt werden kann!
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten