Jump to content

Reaktionszeit der Bricks + Maximal verwaltbare Stacks


tf_archiv
 Share

Recommended Posts

Ich hoffe, dass die Antworten nicht irgendwo steht und ich sie übersehen habe.

 

Wisst ihr was über die Reaktions- /Verzögerungszeit der Bricks? Angenommen, ich habe einer 8er Stack Bricks. Der oberste ist ein DC-Brick, der Vor-Unterste ist ein Master-Brick. Alle Bricks dazwischen haben nur Sensoren(-Bricklets) angeschlossen. Die angeschlossenen DC-Motoren reagieren auf Basis der von den Sensoren gemessenen Werte. Gibt es dann gravierende Verzögerungen? Oder liegen die im kleinen Millisekundenbereich bzw. drunter und sind vernachlässigbar? (Angenommen, dass durch den C-Code keine ernsthafte Verzögerung verursacht wird.)

 

Zusammengefasst: Wo liegt der Flaschenhals in Sachen Reaktionsgeschwindigkeit?

 

Edit: Noch eine Frage: Pro Stack kann man bis zu 8 Bricks zusammenschließen. Ist das auch die maximal verwaltbare Anzahl von Bricks (pro USB-Anschluss)? Oder ist es z.B. möglich, dass eins der 8 Bricks ein W-Lan Modul ist und ich so zwei Stacks je 8 Bricks (Je 7 + 1 W-Lan) an einem USB-Anschluss verwalten kann?

 

Gilt die "Durchsichtigkeit" der Verbindungen auch über USB-Grenzen hinweg? Kann ich also mehrere Stacks per USB an den Rechner anschließen und sie werden genauso verwaltet, als wären sie alle zusammen ein Stack an einem Anschluss?

 

Danke für die Antworten.

Link to comment
Share on other sites

Bezüglich Reaktionszeit ein Kommentar aus dem englischen Forum von Olaf Lüke:

"First of all: The Number of messages you can send to Bricks solely depends on the implementation of the USB stack from the operating system you use. The Bricks themself could handle 100khz and more.

I just made this small test on my PC (linux 3.0.0-13): http://pastebin.com/NrKmWhn6 The output was 9.4246690273. Which means the roundtrip time (a message is send from your program to the Brick Daemon, over USB to the Brick, the Brick answers to the Brick Daemon and it sends the answer back to your program) takes about 1ms.

This means your feedback loop over USB is perhaps possible if you only use one Brick. If you have a Stack of Bricks with many connected Bricklets, they all have to share the same USB connection. Over a wireless connection such a feedback loop is definitely not possible. The latency is just too high.

But, as Bastian already said, we intend to release an Encoder Bricklet that would solve your problem. "

Die Bricks selbst können also mit 100 kHz arbeiten.

Die (Gesamt-)Reaktionszeit beträgt etwa 1 Millisekunde, wenn man die Verbindungen vom PC (Brick daemon) bis zum Brick und zurück betrachtet. Der Flaschenhals hängt von mehreren Faktoren ab:

- Performance des PCs - Qualität der Datensignale - Performance der Schnittstellen

Es kommen bei Verwendung von WLAN und komplexeren Aufbauen eine Menge Probleme bezüglich der Datenübertragung zusammen - ab irgendeinem Punkt der Komplexität funktioniert kein Aufbau mehr.

Thema Durchlässigkeit: Ein Brick von heute kann niemals USB hosten - ein Brick funktioniert nicht als USB-Hub, sondern z. B. wie ein USB-Thermometer.

Die Frage hab ich schon mal im Thema "USB-Relais" gestellt. Ich hätte so einen USB-Hub auch gerne - das würde unzählige weitere Möglichkeiten öffnen. :-)

Alternativ gibt es beispielsweise USB-Ethernet-Server zu kaufen, mit welchen Entfernungen von 50 (oder 100? weiss ich grad nicht) Metern (ohne Ethernet-Range-Extender, z. B. ein Hub) laut Ethernet-RFC möglich sind. Strom muss am Ziel dann aber doch in irgendeiner Weise verfügbar sein.

Du hast interessante Fragen, für die es heute schon Antworten gibt, die aber übermorgen anders sein können...

Olaf, Basti, was meint Ihr? Pascal.

Link to comment
Share on other sites

Danke schonmal für deine sehr ausführliche Antwort. Die Frage mit der Reaktionszeit ist ausreichend beantwortet.

Bzgl. der Durchsichtigkeit bin ich mir aber nicht sicher, ob ich deine Antwort richtig verstehe oder ob ich meine Frage unglücklich ausgedrückt habe: Ich wollte kein Brick zum USB-Hosten verwenden. Dass das (noch??) nicht geht, weiß ich, war da auch schon über deinen Thread gestolpert. Es ging mir dabei darum, ob ich einfach zwei Stacks an meinen Rechner anschließen kann und immer noch alles so erkannt wird, als ob es ein Stack wäre.

Ich vermute, dass das ohne Probleme funktioniert. Ich geh jetzt auch einfach mal davon aus, dass ich zwei Stacks an meinen Rechner anschließen kann und beide unabhängig voneinander mit getrennten Code betreiben kann?

Insgesamt ist also Folgendes möglich:

- Zwei Stacks an einen Rechner und sie mit einem gemeinsamen Code betreiben, genauso wie wenn es ein Stack wäre.

- Zwei Stacks an einem Rechner und sie unabhängig voneinander mit getrenntem Code betreiben

Korrekt?

Danke nochmal für deine Mühe.

Link to comment
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...