Jump to content

Temperaturabfrage timeout nach 10s normal?


Recommended Posts

Hallo Zusammen, ich habe vermehrt folgendes Problem und möchte dem mal endlich auf die schliche kommen. Vorallem, weil es mir gestern Abend den Kompressor meines Gefrierfaches nicht abgeschaltet hat und durch die Nacht hindurch gekühlt wurde......

 

folgende Probleme sehe ich öfters wenn ich über längere Zeit meine Sensoren abfrage:

 

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/Users/gabejackson/Documents/pycharm/bcs/bcs/brewery/management/commands/kegerator.py", line 47, in handle
    t_top = ptc_top.get_temperature()/100.0
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/tinkerforge/bricklet_ptc.py", line 118, in get_temperature
    return self.ipcon.send_request(self, BrickletPTC.FUNCTION_GET_TEMPERATURE, (), '', 'i')
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/tinkerforge/ip_connection.py", line 878, in send_request
    raise Error(Error.TIMEOUT, msg)
tinkerforge.ip_connection.Error: -1: Did not receive response for function 1 in time

 

Ist das Verhalten normal? Ich habe bereits das Timeout auf 10s erhöht...

 

Hier ist mein Code:

class Command(BaseCommand):
    args = ''
    help = 'Starts controlling the fridge'

    def handle(self, *args, **options):
        def signal_handler(signal, frame):
            print 'Disconnecting...'
            ipcon.disconnect()
            sys.exit(0)

        signal.signal(signal.SIGINT, signal_handler)
        print 'Press Ctrl+C to exit'

        ipcon = IPConnection() # Create IP connection
        ipcon.set_timeout(10)

        #master = Master(settings.TINKERFORGE_CONFIG['kegcontrol']['MASTER'], ipcon) # Create device object
        ptc_top = PTC(settings.TINKERFORGE_CONFIG['kegcontrol']['PTC_AIR_TOP'], ipcon)
        ptc_bottom = PTC(settings.TINKERFORGE_CONFIG['kegcontrol']['PTC_AIR_BOTTOM'], ipcon)
        ptc_water = PTC(settings.TINKERFORGE_CONFIG['kegcontrol']['PTC_WATER'], ipcon)

        ido4 = IndustrialDigitalOut4(settings.TINKERFORGE_CONFIG['kegcontrol']['IDO_COMPRESSOR'], ipcon)

        ipcon.connect(settings.TINKERFORGE_CONFIG['kegcontrol']['HOST'], settings.TINKERFORGE_CONFIG['kegcontrol']['PORT'])

        ptc_top.set_wire_mode(PTC.WIRE_MODE_4)
        ptc_bottom.set_wire_mode(PTC.WIRE_MODE_4)
        ptc_water.set_wire_mode(PTC.WIRE_MODE_4)

        # Get initial compressor state
        state = ido4.get_value()

        while True:
            # Temperatures
            t_top = ptc_top.get_temperature()/100.0
            t_bottom = ptc_bottom.get_temperature()/100.0
            t_water = ptc_water.get_temperature()/100.0

            avg_air = (t_top+t_bottom)/2

            print t_top, t_bottom, avg_air, t_water, ido4.get_value()

            if not state and (avg_air > 3.0):
                state = 1
                ido4.set_value(1 << 0)
                print "Turning on freezer"

            if state and (avg_air < 2.5):
                state = 0
                ido4.set_value(0 << 0)
                print "Turning off freezer"

            sleep(1)

 

müsste der code anders sein damit ich mich ruhig schlafen legen kann ohne dass der Kompressor nicht geschaltet wird?

 

Was ist der Grund dass die Sensoren manchmal über 10s haben zum Antworten?

 

Angehängt ist mein Setup als Bild.

Im Stack zu unterst: Industry Digital I/O, dann Stepdown, Master, Wifi Extension. Bricklets hats sonst noch 3 PTC Bricklets.

 

Beste Grüsse,

 

Gabe

photo.JPG.4157f5442693cedeaf2a8e35fdb1f1bb.JPG

Link zu diesem Kommentar
Share on other sites

Interessant finde ich das hier:

 

-1.17 7.17 3.0 9.89 0
-1.16 7.18 3.01 9.9 0
Turning on freezer
Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/Users/gabejackson/Documents/pycharm/bcs/bcs/brewery/management/commands/kegerator.py", line 47, in handle
    t_top = ptc_top.get_temperature()/100.0
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/tinkerforge/bricklet_ptc.py", line 118, in get_temperature
    return self.ipcon.send_request(self, BrickletPTC.FUNCTION_GET_TEMPERATURE, (), '', 'i')
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/tinkerforge/ip_connection.py", line 878, in send_request
    raise Error(Error.TIMEOUT, msg)
tinkerforge.ip_connection.Error: -1: Did not receive response for function 1 in time
(brewery)gabejackson@jax: bcs# ping kegcontrol
PING kegcontrol (192.168.5.136): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- kegcontrol ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss

 

Anscheinend hängt er sich auch auf nachdem ich den Kühlschrank schalte... erreichbar ist er nun auch nicht mehr.. woran kann das liegen?

Link zu diesem Kommentar
Share on other sites

weiter muss ich auch sagen, dass der stack nicht immer stirbt wenn ich den kompressor schalte. das passiert nur ab und zu. Ausserdem leuchtet das grüne LED der Wifi Extension noch, ist einfach nicht mehr ansprechbar.

 

Das Bild ist nicht genau das was im Keller läuft, im Keller habe ich ein identisches Setup aber mit einem 10A Relais und einem RC Snubber Parallel mit dem Kompressor. Eventuell ist hier was falsch?

Link zu diesem Kommentar
Share on other sites

Ja klar, watchdog wäre sicherlich sinnvoll. aber keep it simple ist auch nicht schlecht ;)

 

OK, ich habe eventuell das Problem gefunden. Gerade gesehen, dass der Industry Digital Out 4 lediglich 25mA pro Ausgang liefern kann.

Wenn ich mein Relais anschaue: http://www.turck-usa.com/illustrations/B1201_51.pdf dann sehe ich, dass die Stromaufnahme dieses Relais 700mW bei DC ist, d.h doch 700mW/24V ~= 30mA? Könnte das ein Problem sein? Weiter ist der EMV-Aspekt vielleicht gar nicht so daneben, der Master Brick ist direkt neben dem Step Power Supply 24VDC, 0.75A. Kann es sein, dass dieser Probleme verursacht. Kann ich mir zwar nicht so vorstellen, denn dann würde der Master doch immer aufhängen und nicht nur beim anlassen des Relais?

 

Any ideas?

Link zu diesem Kommentar
Share on other sites

noch eine Feststellung.... Ich habe das ganze in ein Cubo S Gehäuse auf Hutschiene montiert.. http://img.directindustry.com/images_di/photo-g/polycarbonate-abs-enclosures-13777-2469927.jpg

 

Wenn ich den transparenten Deckel entferne, bekomme ich keine Timeouts. Wenn ich den Deckel drauf mache, bekomme ich relativ schnell mal automatisch resets des stapels (alles blinkt und resettet).. kann es sein, dass die Komponenten überhitzen wenn man diese in ein Gehäuse baut?? oder wieso resettet der Master dann alle 60s oder so

Link zu diesem Kommentar
Share on other sites

Ja, das geht. Schau mal hier: http://www.tinkerforge.com/de/doc/Software/Bricks/Master_Brick_Python.html#Master.get_chip_temperature. Grundsätzlich ist der Sensor aber sehr ungenau und sein Nutzen beschränkt sich nur auf das Detektieren von Temperaturänderungen. Da gab es hier im Forum auch schon einen Thread zu. Finde ihn nur grade nicht...

 

Das einzige, was da meiner Erfahrung wirklich warm wird, ist die Ethernet Extension. Da gehe ich mal davon aus, dass das bei Wifi auch nicht anders sein wird. Die wird aber nicht wirklich heiß aber deutlich Spürbar. Da sollte es eigentlich bei der Gehäusegröße nicht so heiß werden, dass da was abstürzt...

 

Du könntest aber einfach mal fühlen wie warm die Komponenten werden und das mal vergleichen: Vor und nach Absturz.

Link zu diesem Kommentar
Share on other sites

Also hab mal gemessen.. ohne gehäuse ist er so 45°C warm (ich nehme an 451 ist 45°C) da läuft er super... hab den deckel mal drauf getan und 20min später ist er bei 51 grad und dann kommt plötzlich der moment:

 

511
23.74 24.06 23.33
507
23.74 24.06 23.33
511
23.74 24.06 23.33
^@Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/Users/gabejackson/Documents/pycharm/bcs/bcs/brewery/management/commands/log_sensors.py", line 46, in handle
    temperature_hlt = ptc_hlt.get_temperature()/100.0
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/tinkerforge/bricklet_ptc.py", line 118, in get_temperature
    return self.ipcon.send_request(self, BrickletPTC.FUNCTION_GET_TEMPERATURE, (), '', 'i')
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/tinkerforge/ip_connection.py", line 878, in send_request
    raise Error(Error.TIMEOUT, msg)
tinkerforge.ip_connection.Error: -1: Did not receive response for function 1 in time

 

ab dann beginnt er immer wieder zu resetten.. kurze zeit erreichbar, dann wieder reset...

Link zu diesem Kommentar
Share on other sites

die obigen versuche sind alle ohne relais schalten. einfach alle 0.1s die temp von 3 sensoren abfragen. Alle läuft über einen 24VDC 0.75A Power supply von Phoenix Contact (Industrie dinger...), das ist aus meiner sicht absolut genug power um alles zu betreiben. Ohne deckel läufts prima... (es wird übrigens auch nicht heiss wenn ich den deckel dann abhebe)

Link zu diesem Kommentar
Share on other sites

ist wirklich interessant ;) ich habs extra nochmal versucht, ganzer tag war schön am laufen... vorhin als du geschrieben hast, hab ich deckel drauf gemacht (am 17:42) und jetzt ist er abgekratzt als er wieder genau diese Temperatur erreicht hat ~52°C (chip_temp vom master).

 

3.81 24.0 23.81
511
23.81 24.0 23.81
507
23.81 24.0 23.81
511
23.81 24.0 23.81
Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/Users/gabejackson/Documents/pycharm/bcs/bcs/brewery/management/commands/log_sensors.py", line 46, in handle
    temperature_hlt = ptc_hlt.get_temperature()/100.0
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/tinkerforge/bricklet_ptc.py", line 118, in get_temperature
    return self.ipcon.send_request(self, BrickletPTC.FUNCTION_GET_TEMPERATURE, (), '', 'i')
  File "/Users/gabejackson/venv/brewery/lib/python2.7/site-packages/tinkerforge/ip_connection.py", line 878, in send_request
    raise Error(Error.TIMEOUT, msg)
tinkerforge.ip_connection.Error: -1: Did not receive response for function 1 in time

 

probiere mal über USB.. standby

Link zu diesem Kommentar
Share on other sites

Also hab ein wenig mit dem Haarfön nachgeholfen und so die Temperatur auf etwa 55°C erhöht.. läuft immer noch stabil. Ich habe nun also den Stecker vom Netzteil entfernt und auch den Stecker vom Industrial Bricklet zur externen Stromversorgung... rätsel rätsel... hier noch die Spezifikation der Stromversorgung: http://catalog.phoenixcontact.net/phoenix/treeViewClick.do?action=assets&UID=2868635&cat=techdata

 

da gibts erst ein derating ab 55°C...

Link zu diesem Kommentar
Share on other sites

es liegt definitiv an der Temperatur. Ich hab die ganze Anlage mal auf den Balkon gestellt, hier ist momentan so 3°C... da ist die core temp des ATMEL nur noch 40°C in der box drin und läuft nun schon eine stunde ohne probleme...

Step down von 24V zu 5V generiert wohl zu viel wärme und so stürzt der Master einfach ab? hab probiert die WiFi extension auf den step down zu klemmen und dann der Master zuoberst, das geht aber nicht. was kann ich tun? Ich möchte die 24V beibehalten, da das so ein Industrie standard ist um relais und andere steuerungen anzusprechen... Das Step-Down Brick wird spezifiziert mit Eingangsspannungen bis 27V.. vielleicht doch ein bisschen viel?

Link zu diesem Kommentar
Share on other sites

Jax, mich würden die wirklichen Temperaturen interessieren. Die Chip Temperatur kann beliebig falsch liegen. Ich kann immer noch nicht glauben, dass die Bricks/Bricklets Probleme mit 55°C haben. Kannst du mit einem externen Thermometer nachmessen?

 

Der Chip auf der Step-Down Power Supply wird bei zu hoher Temperatur abschalten ("Überlast"). Allerdings sollte dein Aufbau die Step-Down Power Supply nicht sonderlich auslasten. Ich würde nur eine minimale Erwärmung erwarten. Was sagt die interne Strommessung?

 

24V Eingangsspannung sollten kein Problem machen.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...