Author Topic: SilentStepper Brick steigt immer aus.  (Read 7384 times)

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
SilentStepper Brick steigt immer aus.
« on: February 27, 2019, 02:30:29 »
Moin,

seit ein paar Tagen habe ich einen Silent Stepper 2.0 und der macht Probleme. Wenn ich das USB-Kabel in den Master stecke, erscheint der Stepper Brick, aber jede Änderung im Brick Viewer werden nicht mehr ausgeführt, auch nicht die Änderung der Status-LED. Nach ein paar Sekunden verschwinden alle Bricks aus dem Brick Viewer.

Anfangs funktionierte der Stepper Brick. Die Probleme begannen mit der Programmierung des Bricks.

@ Tinkerforge: In der Doku steht nirgends, was die Tasten „Reset“ und „Erase“ genau machen. Das sollte man vielleicht noch hinzufügen. ;-)

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #1 on: February 27, 2019, 02:48:04 »
Nach studieren der FAQ wollte ich den Silent Stepper 2.0 neu flashen, doch jetzt ist er ganz tot. :-(

Ich habe die Tasten versehentlich falsch gedrückt:
Reset gedrückt und gehalten
Erase gedrückt und gehalten
Reset losgelassen
Erase losgelassen.

Jetzt geht keine LED mehr und ich bekomme immer die Meldung „Could not connect to Brick“.

Und nun?!?

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #2 on: February 27, 2019, 02:53:43 »
Oh, jetzt kann ich ohne wieder flashen. :-)

Ich habe ein paar Mal den Port hin und her geschaltet (was ich vorher aber schon gemacht habe). Aber davor habe ich erst versucht mit „Connect“ eine Verbindung hinzubekommen.

Irgendwie scheint mir der Brick Viewer sehr buggy zu sein, kann das sein?

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #3 on: February 27, 2019, 03:27:14 »
Also, manchmal geht es eine ganze Weile, manchmal nicht. Dann bekomme ich eine Fehlermeldung in meinem Programm, wobei ein Teil wohl aus anderen Modulen kommt:
  • bricklet_rotary_encoder_v2.py
  • ip_connection.py

Code: [Select]
  File "/Users/gerhard/PycharmProjects/RedBrick/tinkerforge/bricklet_rotary_encoder_v2.py", line 124, in get_count
    return self.ipcon.send_request(self, BrickletRotaryEncoderV2.FUNCTION_GET_COUNT, (reset,), '!', 'i')
  File "/Users/gerhard/PycharmProjects/RedBrick/tinkerforge/ip_connection.py", line 1173, in send_request
    raise Error(Error.TIMEOUT, msg)
tinkerforge.ip_connection.Error: Did not receive response for function 1 in time (-1)

Vielleicht hilft das ja bei der Analyse.

jgmischke

  • Full Member
  • ***
  • Posts: 203
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #4 on: February 27, 2019, 09:09:45 »
Hallo,
der Brickviewer ist normalerweise sehr stabil, habe da seit Jahren nie Probleme mit.
Kann es sein, das dein USB Kabel defekt ist?
Die Fehlermeldung sagt ja aus, das da keine Verbindung gefunden wird.

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #5 on: February 27, 2019, 16:00:03 »
Wenn ich Bewegungsanweisungen per set_steps() an den Treiber sende und diese immer wieder mit full_brake() unterbreche um anschließend eine neue Bewegung zu starten, dann hängt er sich immer mal wieder wie beschrieben auf. Das kann man manuell in Brick Viewer provozieren oder mit einem Script über USB-Kabel und auch mit einem Script auf dem Red Brick, also ohne USB-Kabel.

Der läuft also nicht stabil! Zumindest meiner nicht.

Ich werde heute Nacht mal ein hier gekauftes nagelneues USB-Kabel verwenden. Nur um sicher zu sein.

Dann werde ich außerdem ein Script erstellen, welches zufällige Bewegungen in schneller Folge erzeugt. Ich bin mir sicher, dass ich damit den Brick zum Aufhängen bekomme. ;-)

photron

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 2.474
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #6 on: February 27, 2019, 16:19:01 »
Diese "Could not connect to Brick" Meldung beim Flashen ist komisch. Da tritt intern in brickv ein unerwarteter Fehler auf.

Wir haben das jetzt verbessert und brickv meldet unerwarteter Fehler jetzt mit mehr Details. Teste mal bitte diese Version:

http://download.tinkerforge.com/tools/brickv_pyqt5/beta2/macos/brickv_macos_2_4_0_uhlhorn.dmg

Flash damit bitte den Brick nochmal. Ich würde gerne sehen welchen Fehler du da erzeugen kannst denn ich hier nicht reproduziert bekomme.

Bezüglich instabiler Silent Stepper Brick: Da gibt es aktuell keine bekannten Problem. Die Theorie mit dem defekten/wackeligen USB Kabel ist aber eine gute. Wenn du in allen Testes das selbe USB Kabel verwendest dann spielt es natürlich keine Rolle, ob du das einen Master oder RED Brick zwischen hast.

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #7 on: February 27, 2019, 16:26:36 »
Quote
Wenn du in allen Testes das selbe USB Kabel verwendest dann spielt es natürlich keine Rolle, ob du das einen Master oder RED Brick zwischen hast.
Das Problem tritt auch ganz ohne USB-Kabel auf, wenn ich das Programm auf dem Red Brick ausführe. Und es ist (bei mir) reproduzierbar.

Quote
Wir haben das jetzt verbessert und brickv meldet unerwarteter Fehler jetzt mit mehr Details. Teste mal bitte diese Version: …
Flash damit bitte den Brick nochmal. Ich würde gerne sehen welchen Fehler du da erzeugen kannst denn ich hier nicht reproduziert bekomme.
Das werde ich gerne machen.

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #8 on: February 27, 2019, 21:37:57 »
So, ich habe jetzt ein Programm, das den Motor mit zufälligen Werten dreht. Und das hängt sich manchmal nach ein paar Minuten auf, manchmal läuft es auch ’ne viertel Stunde oder so.

Hier habe ich mal ein nicht gelistetes Video dazu gemacht. Der Stack besteht (von unten nach oben) aus einer Stromversorgung, einem Red Brick, einem Master, einem DC und dem Silent Stepper. Das Rotary Bricklet ist an den Stepper angeschlossen. Die Stromversorgung hängt an dem untersten Modul.

Die Versionen der Module sind im Screenshot zu sehen.

Hier das Video:
2019 02 27 Tinkerforge Silent Stepper Issue

Danach habe ich dasselbe nur mit der Stromversorgung, dem Master und dem Stepper gemacht. Auch das hängt sich auf.

Hier das Programm dazu, was allerdings noch etwas unaufgeräumt ist. Ich habe halt damit experimentiert.

Code: [Select]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# python 3

HOST = "localhost"
PORT = 4223
UID_r = "Ehv" # Change XYZ to the UID of your Rotary Encoder Bricklet 2.0
UID_s = "5VH7xb" # Change XXYYZZ to the UID of your Silent Stepper Brick


from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_silent_stepper import BrickSilentStepper

from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_rotary_encoder_v2 import BrickletRotaryEncoderV2

from random import *
import time

alt = 0
Zeitpunkt = time.time() + 10.1
ZeitDiff = time.time() - Zeitpunkt

if __name__ == "__main__":
    ipcon = IPConnection() # Create IP connection
    re = BrickletRotaryEncoderV2(UID_r, ipcon) # Create device object
    ss = BrickSilentStepper(UID_s, ipcon) # Create device object

    ipcon.connect(HOST, PORT) # Connect to brickd
    # Don't use device before ipcon is connected

    ss.set_motor_current(800)  # 800mA
    ss.set_step_configuration(ss.STEP_RESOLUTION_64, True)  # 1/8 steps (interpolated)
    ss.set_max_velocity(4000)  # Velocity 2000 steps/s

    # Slow acceleration (500 steps/s^2),
    # Fast deacceleration (5000 steps/s^2)
    ss.set_speed_ramping(1000, 1000)

    ss.set_basic_configuration(1, 800, 0, 1000, 500, 500, 1000, 1)

    while 1:
        # Get current count without reset
        count = re.get_count(False)

        Schritte = round(random()*100000)+10000
        Richtung = round(random())
        Zeit = round(random()*30+1,1)
        Geschwindigkeit = round(random()*40000)+15000
        Beschleunigung = round(random()*40000)+10000

        if ZeitDiff <= 0:
            if Richtung == 1: # Rechts drehen
                ss.full_brake()
                ss.enable()  # Enable motor power

                print("Schritte: " + str(Schritte))
                if Richtung == 1:
                    print("Richtung: rechts")
                else:
                    print("Richtung: links")
                print("Zeit:     " + str(Zeit))
                print("Geschwindigkeit: " + str(Geschwindigkeit))
                print("Beschleunigung: " + str(Beschleunigung) + "\n")

                ss.set_speed_ramping(Beschleunigung, Beschleunigung)
                ss.set_max_velocity(Geschwindigkeit)
                ss.set_steps(Schritte)  # Drive „Schritte“ steps forward
                Zeitpunkt = time.time()+Zeit

            if Richtung == 0: # Links drehen
                ss.full_brake()
                ss.enable()  # Enable motor power

                print("Schritte: " + str(Schritte))
                if Richtung == 1:
                    print("Richtung: rechts")
                else:
                    print("Richtung: links")
                print("Zeit:     " + str(Zeit))
                print("Geschwindigkeit: " + str(Geschwindigkeit))
                print("Beschleunigung: " + str(Beschleunigung) + "\n")

                ss.set_speed_ramping(Beschleunigung, Beschleunigung)
                ss.set_max_velocity(Geschwindigkeit)
                ss.set_steps(-Schritte)  # Drive „Schritte“ steps backward
                Zeitpunkt = time.time()+Zeit

        ZeitDiff = Zeitpunkt-time.time()
        #print("ZeitDiff: "+str(ZeitDiff))
        #print(" ")

        if ss.get_current_velocity() == 0:
                ss.disable()
                ZeitDiff = -1


    input("Press key to exit\n") # Use input() in Python 3
    ss.disable()
    ipcon.disconnect()

borg

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 3.142
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #9 on: February 28, 2019, 10:49:03 »
Läuft das Programm auf dem RED Brick denn noch weiter oder gibt es da eine Exception o.ä.?

Eine andere Frage: Ist das RED Brick in dem Aufbau notwendig um den Fehler zu erzeugen? Wenn du einmal testweise den Silent Stepper Brick direkt am PC/Laptop anschließt und das Python Programm dort startest, tritt das Problem dann auch auf?

Du könntest auch einmal testweise den RED Brick am PC anschließen und das Python Programm vom PC starten.
Wir sind die Borg, Widerstand ist Spannung durch Stromstärke!

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #10 on: February 28, 2019, 12:54:17 »
Der Fehler tritt in jeder Kombination auf. Und wenn das Programm auf dem PC läuft, bekomme ich die obige Fehlermeldung. Die Fehlermeldung vom Red Brick muss ich nachliefern.

borg

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 3.142
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #11 on: February 28, 2019, 13:05:15 »
OK, ich werde versuchen das hier zu reproduzieren.

D.h. der Minimalaufbau mit dem ich das nachstellen kann wäre ein Silent Stepper Brick mit Schrittmotor und externer Stromversorgung per USB am PC und dazu dein Python-Programm ausführen, richtig?
Wir sind die Borg, Widerstand ist Spannung durch Stromstärke!

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #12 on: February 28, 2019, 13:26:31 »
Ja, das sollte gehen. Bei meinen Versuchen lief es so etwas länger, was aber auch Zufall sein kann.

Ich bin mir noch nicht sicher, ob der Rotary Encoder einen Einfluss hat. Ich habe noch nicht alle Kombis durch.

borg

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 3.142
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #13 on: February 28, 2019, 16:11:12 »
Hab das jetzt (inklusive Rotary Encoder) hier aufgebaut und gestartet.

Bisher läuft es durch. Das erste was mir bei dem Script auffällt: Du rufst get_count() des Rotary Encoders und get_current_velocity() des Stepper Bricks mehr oder weniger in einer "While-True-Schleife" auf.

Du könntest an der Stelle entweder ein sleep von 50ms oder so einbauen um das ganze ein bisschen zu entlasten oder sogar den Count per Callback holen und in der Schleife nur drauf reagieren wenn der Count sich ändert.

So wie es gebaut ist lastet das den Stepper Brick und Rotary Encoder voll aus. Deswegen sollte das natürlich nicht abstürzen, nur als Hinweis.
Wir sind die Borg, Widerstand ist Spannung durch Stromstärke!

Uhlhorn

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: SilentStepper Brick steigt immer aus.
« Reply #14 on: February 28, 2019, 16:54:35 »
Habe gerade mein Netzteil bekommen. Nun teste ich es mal in der Minimalkonfiguration. Dafür muss die Zeile 44 für den Rotary Encoder auskommentiert werden, damit das Script läuft.

Ich teste es gerade und im Moment läuft er gerade störungsfrei. :-/
Ich lasse ihn mal länger laufen.