Bus-Vorhaben gestrichen

Hi allerseits!

Neulich habe ich gäußert, dass ich einen einfachen Bus realisieren möchte und gesagt, dass ich Euch auf dem Laufenden halte.

Seither hat sich einiges geändert: Ein großer Teil der Arduinos, die beteiligt sein sollten, sind überflüssig geworden, seit auch ein RPi mitspielt. Die verbleibenden Arduinos werden jetzt via serieller Schnittstelle kommunizieren.

Die Idee, einen supersimplen Bus zu realisieren, bleibt aber im Hinterkopf. Das ist eine sehr interessante Aufgabe, die reichlich Lernstoff enthält.

Gruß

Gregor

:grin:

Wo gibts nähere Infos zu dem alten Vorhaben?

skorpi08:
Wo gibts nähere Infos zu dem alten Vorhaben?

Es gibt einen verunglückten Thread, den Du lesen kannst.

Außerdem gab es Notizen dazu. Aber die habe ich gelöscht.

Gruß

Gregor

combie:
:grin:

AlteIndianerweisheit:
Wenn du merkst, dass du auf einem toten Pferd sitzt, steig ab.

Dem :grin: kann ich mich nur anschliessen.

Das ist eine sehr interessante Aufgabe, die reichlich Lernstoff enthält

Ist ja nicht so, dass es nichts anderes mit reichlich Lerneffekt gäbe.

Ist ja nicht so, dass es nichts anderes mit reichlich Lerneffekt gäbe.

Doch!
Ich finde, das mit dem Bus, darf man sich ruhig mal erarbeiten!
Da steckt Stoff drin!

combie:
Da steckt Stoff drin!

Auch deshalb finde ich es ja interessant. Aber das weiter zu bearbeiten brächte mich bei meinem Langzeitgebastel nicht mehr so viel weiter, dass es sich lohnen würde. Es gibt so viele schöne Sachen, mit denen man lernen kann ... weit mehr, als ich beackern kann.

Gruß

Gregor

Was genau ist ein einfacher Bus?

Einfach vom Protokoll?

Einfach vom Aufbau?

Eindrähtig Bidirektional?

Ich kenne bereits einige Lösungen aus dem Industrieumfeld, aber die haben halt alle ihre Vor und Nachteile und sind immer nur ein Kompromiss

chefin:
Was genau ist ein einfacher Bus?

Falls Du mit dieser Frage mich meinst: Der Bus, den ich realisieren wollte, sollte in dem Sinne einfach sein, dass er auch von einem Anfänger durch und durch verstanden und ebenso einfach erklärt werden kann. Obendrein sollte er mit max. 2 Leitungen auskommen.

Gruß

Gregor

von einem Anfänger durch und durch verstanden und ebenso einfach erklärt werden kann

Mensch den gibt es doch schon......

.... Modbus :smiley:

Gruß
DerDani

volvodani:
Mensch den gibt es doch schon......

.... Modbus :smiley:

Gruß
DerDani

Also ganz verstanden hab ich den noch nicht aber es ist auf jeden Fall der Universellste :slight_smile:

gregorss:
Falls Du mit dieser Frage mich meinst: Der Bus, den ich realisieren wollte, sollte in dem Sinne einfach sein, dass er auch von einem Anfänger durch und durch verstanden und ebenso einfach erklärt werden kann. Obendrein sollte er mit max. 2 Leitungen auskommen.

Gruß

Gregor

Also was 100% von jedem Anfänger verstanden wird ist der 1 Bit Bus. Umgangssprachlich auch Lichtschalter genannt. Strom da Licht an - Strom weg Licht aus.

Danach könnten wir jetzt den 2 Bit Bus auflisten, die Wechselschaltung. Bereits hier haben 90% der Anfänger keinen Plan mehr.

Denke da muss man Grundlagen voraussetzen. So richtig Anfängertauglich ist kein Bus-system. 2 Draht sind nahezu alle inzwischen. I2C, RS232, RS485, MOD Bus, CAN bus, KNX, Profibus usw. Unterscheiden tun sie sich nur darin, was ein übertragenes Byte bedeutet.

Eigentlich hast du mit RS232 schon den einfachsten aller Möglichkeiten. Es wird IMMER ein Byte gesendet, nicht mehr und nicht weniger. Was die Gegenseite damit macht ist schon Sache des Programmierers.

Was willst du daran noch vereinfachen? Oder was waren deine Gedankengänge dabei

<bissle Brainstorming machen, vieleicht kommt uns ein zündender Funke>

chefin:
Also was 100% von jedem Anfänger verstanden wird ist der 1 Bit Bus…

Nuja … was ein „Anfänger“ ist, ist ziemlich weit interpretierbar. Ich meine jemanden, der an Informatik und Logik interessiert ist und sich mit dem Arduino ins Thema stürzt.

chefin:
Was willst du daran noch vereinfachen? Oder was waren deine Gedankengänge dabei
<bissle Brainstorming machen, vieleicht kommt uns ein zündender Funke>

Meine Überlegungen fingen damit an, dass ich I²C vom Händling her suboptimal finde. Zudem reizt mich der Gedanke, einen „Mealy-Automaten“ zu programmieren – das ist ein Konstrukt, mit dem man „lange“ und „kurze“ Signale in Einsen und Nullen konvertieren kann. Ich denke, dass man so etwas halbwegs verständlich rüberbringen kann. Das DCF77-Signal ist so kodiert.

Allerdings ist mir beim Nachdenken darüber aufgefallen, wie viele Bedingungen/Regeln nötig sind, um einen Bus klar und eindeutig zu beschreiben. Das fängt mit der Adressierung im Allgemeinen an und hört bei der Notwendigkeit einer Broadcast-Adresse noch lange nicht auf. Das ist bzw. sind die Gründe, die mich dazu bewogen haben, jetzt doch entweder auf einen existierenden Bus zurückzugreifen, oder die Dinge, die ich vorhatte bzw. vorhabe, so weit zusammenzustreichen, bis etwas übrig bleibt, was dem von Dir beschriebenen 1-Bit-Bus entspricht (Schalter an - Licht an).

Also wenn jemand Lust auf Brainstorming hat, beteilige ich mich gerne. Zunächst habe ich nur mal meine bislang angefallenen Notizen ins Netz gekippt. Siehe hier.

Gruß

Gregor

Hab mir deinen Text mal durchgelesen

Was nicht geht

Du kannst an einen anderen Teilnehmer keine Nachricht mehr senden, wenn dein Programm feststellt das es zu langsam wird. Den der andere versteht dich dann schon nicht mehr. Somit ist eine Anpassung der Speed zur Laufzeit nicht möglich, jedenfalls nicht in der von dir gewünschten Form.

Alles andere was du aufführst ist realisierbar. Aber das wird ein arschlahmer Bus. Mehr als 1000 Bit sind mit Arduino nicht machbar. Und selbst dafür musst du viel CPU-Last in Kauf nehmen.

Was genau ist dein problem, weswegen du nicht etablierte Busse nutzen willst. RS232 müsste meines erachtens deine Bedürfnisse gut abdecken. Die Mehrpunktstruktur lässt sich über tristatetreiber realisieren. Und eigentlich hat der Arduino das ja schon. Jedes IO kann man als Input oder output schalten. Statt ±12V hat man halt 0-5V. Das reduziert nur die Entfernung und Signalqualität. Auf kurzen Strecken geht das aber locker.

Deine Adressierung und Datenframeverwaltung ist ja schon teil der CPU-leistung, wenn man die Bits wieder zusammen gesetzt hat.

chefin:
Du kannst an einen anderen Teilnehmer keine Nachricht mehr senden, wenn dein Programm feststellt das es zu langsam wird. Den der andere versteht dich dann schon nicht mehr. Somit ist eine Anpassung der Speed zur Laufzeit nicht möglich, jedenfalls nicht in der von dir gewünschten Form.

Hm. Darüber muss ich nochmal nachdenken ...

chefin:
Alles andere was du aufführst ist realisierbar. Aber das wird ein arschlahmer Bus. Mehr als 1000 Bit sind mit Arduino nicht machbar. Und selbst dafür musst du viel CPU-Last in Kauf nehmen.

Die Geschwindigkeit spielt keine Rolle. Ich fand die Idee nur als „Rätsel“ reizvoll (irgendwie sportlich halt).

chefin:
Was genau ist dein problem, weswegen du nicht etablierte Busse nutzen willst.

Das Problem mit I²C ist, dass es mir irgendwie unhandlich erscheint. Nach meinem Eindruck gibt es bei I²C (zu) viele Stolpersteine, die ich vermutlich alle „treffen“ würde.

chefin:
RS232 müsste meines erachtens deine Bedürfnisse gut abdecken. Die Mehrpunktstruktur lässt sich über tristatetreiber realisieren. Und eigentlich hat der Arduino das ja schon. Jedes IO kann man als Input oder output schalten. Statt +-12V hat man halt 0-5V. Das reduziert nur die Entfernung und Signalqualität. Auf kurzen Strecken geht das aber locker.

Das klingt interessant. Falls Du Links hast, die mich in Sachen Tristate-Dingens erleuchten könnten ... immer her damit!

Gruß

Gregor

RS232 mit dem “Tristate-Dingens” ist RS485. es gibt auch recht einfache Strukturen mit denen sich hier aus dem Forum schon ausführlich beschäftigt hat. (Nick Gammon) er hat auch zu Übertragung ein paar Sicherheiten reingepackt. Mein Hausbus-Projket basiert auf diesem Protokoll nur das HMI hat Modbus.
Hier der Link dazu: >Klick<
Gruß
DerDani