Jump to content

Recommended Posts

Moin Zusammen,

ich hab grade viele Gedanken spiele zu einen neune Projekt und Frag mich ob ich das mit Tinkerforge umsetzten kann.

Ich möchte 96(vielleicht auch 128) Elektromagnet Steuern. Damit das Preislich machbar bleibt kommt nur das IO-16 dazu in Frage.

 

Die Frage ist wie gut lassen sich 6 IO-16 Steuern?

Es kann sein das in einer einen Millisekunde 40 Ports eine Zustand haben und der nächste Millisekunde 55 Ports wieder einen anderen Zustand haben.

Ich hab mir dazu dann mal die Python beispiele angeguckt und dort das gefunden:

 

# Set pin 0 and 7 on port b to output high
io.set_port_configuration('b', (1 << 0) | (1 << 7), 'o', True)

 

Das schaut ja schon mal ganz gut aus. Die Frage ist wie groß io.set_port_configuration werden darf?

 

Zusammengefast: Ich möchte 96 IO Ports in Millisekunden Takt steuern.

Das ganze über: Ethernet Master Extension -> 2 Master Brick -> 6 IO-16 Module. Ist das machbar??

 

 

Bei den ganzen Gedankenspielen ist mir die Idee der Virtualisierung gekommen.

Ich würde gerne aus den 6 IO-16 Modulen 1 Virtuelles machen.

Dann hätte ich ein IO-96. Ich müsste nur ein UID verwenden und mir keine Gedanken machen an welchen Master Port welches IO-16 Hängt.

 

Diese Virtualisierung könnte glaub ich bei vielen bricks nett sein.

Grade bei den Industrial Bricks könnte das ein nettes Kunden Features sein.

Macht die Programmierung sicher einfacher.

 

gruß

Philipp

 

 

 

 

Link zu diesem Kommentar
Share on other sites

Grund ist das max. 1000 Nachrichten pro Sekunde geschickt werden können.

 

genau ist alles noch mal Hier erklärt ===>http://www.tinkerunity.org/forum/index.php/topic,306.msg1750.html#msg1750

 

 

1000 Nachrichten wären ja 1000 Millisekunden und somit 1 Sekunde.

Müsste Klappen. Die Frage ist ob ich mit 1 Nachricht alle Ports steuern kann :D

 

Vielleicht reicht es auch wenn ich alle 5 bis 10 Millisekunden die Ports steuern kann. Das weiß ich allerdings noch nicht. Das muss ich gucken wenn ich den Prototypen gebaut hab.

Link zu diesem Kommentar
Share on other sites

Soweit ich das noch im Kopf habe, kommt das Limit der 1000 Nachrichten pro Sekunde nur auf Grund der USB Schnittstelle zustande, richtig?

 

Es wurde im Forum daher auch schon angesprochen, dass man ja jeden Master an einen eigenen USB Port anschließen kann und somit pro Master 1000 Nachrichten pro Sekunde hat. Oder irre ich mich da?

 

Link zu diesem Kommentar
Share on other sites

Soweit ich das noch im Kopf habe, kommt das Limit der 1000 Nachrichten pro Sekunde nur auf Grund der USB Schnittstelle zustande, richtig?

 

Es wurde im Forum daher auch schon angesprochen, dass man ja jeden Master an einen eigenen USB Port anschließen kann und somit pro Master 1000 Nachrichten pro Sekunde hat. Oder irre ich mich da?

 

Das wäre in der tat eine Notlösung. Allerdings würde ich es gerne direkt über LAN steuern.

Link zu diesem Kommentar
Share on other sites

naja also ich würde nicht sagen das es nicht geht.

 

es sind 6 beziungs weise 9  IO-16 gesteuert werden.

also werden pro umschalten 6(9) nachrichten gesendet.

das ganze jetzt auf geht also nur in 6-9 milisec realisirt.

so weit ist es also möglich.

aber da er es ja im milisec bereich schalten will geht das nicht

das würde nur gehen wen wir 9000 nachrichten pro sec schicken könnten

 

und die lösung mit den masterbrick wäre sehr teuer da man dan 9 stück braucht

an 9 usb schnittstellen

 

Die einzige möglichkeit wäre mit einem redbrick

da hierbei keine usb begränzung vorliegt.

frage ist nur ob die redbrick die möglichen 9000 nachrichten pro sec schaft.

 

gruß masder

 

 

Link zu diesem Kommentar
Share on other sites

Die einzige möglichkeit wäre mit einem redbrick

da hierbei keine usb begränzung vorliegt.

frage ist nur ob die redbrick die möglichen 9000 nachrichten pro sec schaft.

 

Das würde erst mal auch nichts bringen. Auch der Stack selber arbeitet mit 1000 Nachrichten in der Sekunde.

 

Ich hab gestern noch mal einen Prototypen der Elektromagnete gebaut und konnte feststellen das Sie doch nicht ganz so Träge sind wie befürchtet.

Von daher werde ich erst mal mit einer Takt von 10 Millisekunden arbeiten.

Da reichen dann die 1000 Nachrichten in der Sekunde erstmal.

 

Was einer der Admins aber noch Beantworten muss wie groß :

io.set_port_configuration('b', (1 << 0) | (1 << 7), 'o', True)

werden darf. Kann ich mit io.set_port_configuration alle 16 Ports setzten? Und wird das dann als eine Nachricht oder als 16 Nachrichten abgearbeitet?

Link zu diesem Kommentar
Share on other sites

Jeder Setter-Aufruf in der API sendet exakt eine Nachricht. Bei jedem Getter kommt dann auch noch exakt eine Nachricht zurück. set_port_configuration() sendet also eine Nachricht.

 

Die IO-16 ist in Port A und Port B unterteilt und an jedem Port sind 8 Pins. Mit set_port_configuration() kannst du die 8 Pins an einem Port setzen. Du brauchst also zwei set_port_configuration() Aufrufe um alle Pins einer IO-16 einmal zu setzen.

 

Wenn du nur zwischen Output-High und Output-Low umschalten willst kannst du auch einmal mit set_port_configuration() alle Pins auf Output stellen und dann mit set_port() zwischen High und Low wechseln.

Link zu diesem Kommentar
Share on other sites

Wenn du nur zwischen Output-High und Output-Low umschalten willst kannst du auch einmal mit set_port_configuration() alle Pins auf Output stellen und dann mit  zwischen High und Low wechseln.

 

Ahh mit set_port() kann ich also alle 8 setzten! Cool!

Frage dazu: 0b00001111 steht das b für die Seite? Also A oder B?

Link zu diesem Kommentar
Share on other sites

Du kannst auch mit set_port_configuration() alle 8 Pins eines Port setzen.

 

io.set_port_configuration('b', (1 << 0) | (1 << 7), 'o', True)

 

Hier wählt das erste Parameter den Port, in diesem Falle 'b'.

 

io.set_port('b', 0b00001111)

 

Hier wählt das erste Parameter wieder den Port, in diesem Falle 'b'. Das b in 0b00001111 steht für Binär. 0b00001111 ist also 15 in Binär. In Hex wäre das 0x0F. 0b00001111 (Binär) ist 15 (Dezimal) ist 0x0F (Hex). Einige Programmiersprachen, wie z.B. Python erlauben es Binärzahlen direkt hinzuschreiben.

 

(1 << 0) | (1 << 7) z.B. erzeugt durch Shift- und Or-Operationen die Binärzahl 0b10000001. Die das IO-16 Bricklet dann als Bitmaske interpretiert und den ersten und achten Pin an Port B auf High und alle anderen auf Low setzt, weil das erste und das achte Bit 1 sind und der Rest 0.

Link zu diesem Kommentar
Share on other sites

Hier wählt das erste Parameter wieder den Port, in diesem Falle 'b'. Das b in 0b00001111 steht für Binär. 0b00001111 ist also 15 in Binär. In Hex wäre das 0x0F. Einige Programmiersprachen, wie z.B. Python erlauben es Binärzahlen direkt hinzuschreiben.

 

Eine Doofe Nachfrage noch dann müsste ich es verstanden habe (hoffe ich).

Ich hab mir nun mal Fix diese http://www.elektronik-kompendium.de/sites/dig/0710081.htm Binär Tabelle zur Hand genommen.

Wenn ich mir nun den Wert 100 in Binär angucke ist das dieser: 01100100.

Würde das nun dieses heißen:

 

Pin1=0

Pin2=1

Pin3=1

Pin4=0

Pin5=0

Pin6=1

Pin7=0

Pin8=0

 

??

 

Danke!

 

Gruß

Philipp

 

 

 

 

 

Link zu diesem Kommentar
Share on other sites

Hallo zusammen,

 

Tippefehler von photron.

 

Hier wählt das erste Parameter wieder den Port, in diesem Falle 'b'. Das b in 0b00001111 steht für Binär. 0b00001111 ist also 15 in Dezimal. In Hex wäre das 0x0F. Einige Programmiersprachen, wie z.B. Python erlauben es Binärzahlen direkt hinzuschreiben.

 

@luxor:

Das muesste umgekehrt sein:

Wenn ich mir nun den Wert 100 (dezimal) in Binär angucke ist das dieser: 01100100.

 

So sollte es richtig sein:

Pin1=0
Pin2=0
Pin3=1
Pin4=0
Pin5=0
Pin6=1
Pin7=1
Pin8=0

 

Bitte zaehle aber von 0-7 und nicht von 1-8.

Also:

Pin  7 6 5 4 3 2 1 0
Wert 0 1 1 0 0 1 0 0

 

Der Loetkolben

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...