Stromkreis enthält Elemente mit eindeutiger ID

Ich möchte ein Netzwerk (elektrische Schaltung) aufbauen, das Hunderte von Elementen (mit eindeutigen IDs) basierend auf einem Mikrocontroller enthält.

Ein gutes Beispiel für diese Art von Netzwerk, aber viel teurer (und fortschrittlicher) ist das Internet. Zum Beispiel habe ich Hauptserver (in meinem Fall Mikrocontroller), Knoten (Computer mit Ethernet-Karten) und Kabel (zB Cat 5e), die Server mit Knoten verbinden. Wir können davon ausgehen, dass das Netzwerk eine Sterntopologie hat.

Schaltkreis

Anforderungen gemäß obiger Grafik:

  • Ich habe x Nummern von C (C könnte Stromkreis, Kabel oder Verbindung sein)
  • Ich habe zahlreiche Elemente mit eindeutigen IDs, die an jedem Ort verbunden werden können (C)
  • Element mit eindeutigen IDs kann mit einem anderen Element ausgetauscht, entfernt oder hinzugefügt werden (falls es C ohne Element gibt)
  • Ich muss die ID des Elements kennen, das mit einem bestimmten C verbunden war.
  • Ich muss die ID selbst festlegen oder kann "Element" kaufen, von dem ich weiß, was seine ID ist.

Was ist der einfachste/billigste Weg, um ein Netzwerk zu erstellen, wie ich es oben erklärt habe?

Was ist los mit Ethernet?
Sie müssen in Ihrer Anwendungsbeschreibung genauer werden
Ethernet ist großartig, aber ich brauche nicht alle seine Fähigkeiten. Ich suche nach dem billigsten Weg und denke, dass es sich um billige elektrische Komponenten handelt, auf denen ich eine ID speichern kann, um sie zu identifizieren, wenn sie sich mit dem Netzwerk verbinden.
Ich stelle mir vor, dass ich ein kleines Element habe und wenn ich es mit dem Netzwerk verbinde, sendet "es" Informationen an Arduino (oder PC), dass das Element mit der ID x verbunden ist, aber wenn ich diese Komponente in eine andere (mit der ID y) ändere, aber es ist in An der gleichen Stelle im Stromkreis sollte Arduino wissen, dass es geändert wurde.
Ich glaube nicht, dass Sie etwas billigeres als Ethernet bekommen werden, da es ein Standard ist und viele gebrauchsfertige Lösungen von der Stange hat. Aber natürlich beschreibst du besser dein Problem als die vermutete Lösung, da es sich nach XY-Problem anhört.

Antworten (4)

Dafür ist Dallas One-Wire da.

Die Basis der 1-Wire®-Technologie ist ein serielles Protokoll, das eine einzelne Datenleitung plus Bezugsmasse für die Kommunikation verwendet. Ein 1-Wire-Master initiiert und steuert die Kommunikation mit einem oder mehreren 1-Wire-Slave-Geräten auf dem 1-Wire-Bus (Abbildung 1). Jedes 1-Wire-Slave-Gerät hat eine eindeutige, unveränderliche, werkseitig programmierte 64-Bit-ID (Identifikationsnummer), die als Geräteadresse auf dem 1-Wire-Bus dient.

Außerdem gibt es auch für diesen Bus E/A-Chips, RAMs, EEPROMs und eine Reihe von selbstgebauten Geräten. Nachteil: Es ist nur Single-Master.
Ja, 1-Wire ist mir in den Sinn gekommen, aber es ist eigentlich nicht das, wofür 1-Wire gedacht ist, obwohl Sie es schaffen könnten, indem Sie zwei 1-Wires betreiben, um bidirektional zu werden. Aber 1-Draht ist langsam und Hardware-Busmaster dafür sind in MCUs nicht üblich, während CAN und I2C üblich, bidirektional und schneller sind. Ich weiß, wir könnten alle möglichen Vorkehrungen treffen, aber es ist einfach, was gemacht wird und funktioniert ... macht aber Spaß, es als Arbeits-/bezahltes Projekt zu haben :-)

Sie könnten nach so etwas suchen: http://www.mouser.com/ds/2/268/21952b-70868.pdf

Unter der Annahme, dass Ihr "Netzwerk", wie Sie es beschrieben haben, nur einen Stromkreis öffnet und schließt, können Sie E / A-Erweiterungs-ICs erhalten, die GPIO-Leitungen mit weniger Pins auf der MCU adressieren können (ähnlich wie bei einem Mux). Erstellen Sie dann auf der Knotenseite einfach eine einfache Schaltung, die eine Leitung anhebt/absenkt, wenn ein Knoten eingesteckt/herausgenommen wird.

Allerdings müssen Sie die IDs auf der MCU programmieren - Sie können die IDs nicht von den Geräten selbst abrufen. (dh Sie wissen, welcher Pin hoch oder niedrig geht, aber Sie müssen ihn selbst einem ID-Wert zuordnen)

Vielen Dank für Ihre Antwort. Es löst teilweise mein Problem, weil ich immer noch nicht weiß, welches (ID-) Element mit einem bestimmten Stromkreis verbunden war. Ich kann Schaltungselementen ID zuordnen, aber die Elemente können in bestimmten Schaltungen geändert werden. Zum Beispiel weiß ich im Internet-Netzwerk, dass ich mit Kabel x PC1 mit der MAC-Adresse z verbinde, und wenn ich PC1 mit PC2 tausche, weiß ich, dass sich die MAC-Adresse von z zu c geändert hat, aber der physische Ort (Kabel) ist immer noch derselbe.
@trojek sind Sie überhaupt durch die Art der Geräte eingeschränkt, die Sie verbinden? Was ist mit Kostenbeschränkungen? Wenn Sie die "Knoten" selbst erstellen, können Sie ihnen eine MCU hinzufügen, jede so programmieren, dass sie eine ID hat, und ein beliebiges Kommunikationsprotokoll (I2C, SPI usw.) verwenden, um die ID zu erhalten. Wenn es sich um bereits vorhandene Geräte handelt, wäre es hilfreich zu wissen, wie Sie sie identifizieren möchten
Ich werde selbst Knoten machen. Welche MCU könnt ihr empfehlen?
Es hängt wirklich davon ab, was die Knoten sonst noch tun sollen und welche Entfernungs- und Geschwindigkeitsanforderungen Sie haben. Die kurze Antwort: So ziemlich jede MCU reicht an den Knoten für eine einfache Kommunikation aus. Wenn Ihr Haupt-MCU/PC in Bezug auf Peripheriegeräte irgendwie eingeschränkt ist, stellen Sie sicher, dass er mit Ihren Knoten kompatibel ist
Der Abstand zwischen MCU/PC darf 10 m nicht überschreiten. Von den Knoten möchte ich das Ein- / Ausschalten der LED steuern, aber ich dachte, dass ich zu jedem Knoten einen anderen Stromkreis (an Stromversorgung und Relais angeschlossen) herstellen werde. Alle Informationen über das Netzwerk muss ich in der DB auf dem PC aufbewahren.

Angenommen, ich habe Ihre Anforderungen klar (Netzwerk von Mikrocontrollern, die mit einem einzelnen Mikrocontroller verbunden sind, proprietäres Netzwerkdesign erlaubt, klein, einfach, billig) ...

Könnten Sie ein CANbus-Netzwerk mit mehreren Multidrop-CAN-Bussen in Betracht ziehen, die durch CAN-Switches (z. B. ONSemi AMIS-42770 Dual High Speed ​​CAN Transceiver) miteinander verbunden sind? Dies passt nicht zu Ihrer Sterntopologie, es sei denn, Sie entscheiden sich dafür mit den CAN-Schaltern. Aber CANbus ist billig und auf vielen Mikrocontrollern verfügbar. Geräte können ihre Anwesenheit beim Einschalten mit einer einzigen Nachrichten-ID an den Server-Mikrocontroller melden. Jeder kann einen 1-Draht- oder I2C-IC mit eindeutiger Seriennummer haben.

Ich könnte mir auch ein Meer von I2C-verbundenen Mikrocontrollern mit einem FPGA in der Mitte vorstellen, das als Router fungiert. Das gibt Ihnen viele Punkt-zu-Punkt-I2C-Verbindungen in einem billigen IC, aber es ist ein ziemlich großer Haufen Arbeit, den Sie in VHDL/Verilog entwerfen und beweisen müssen.

Können Sie vor diesem Hintergrund noch mehr zu Ihren spezifischen Anforderungen sagen?

Sie können einen Seriennummer-IC verwenden.

Wenn Sie Leiterplatten in Massenproduktion herstellen müssen, die alle eine eindeutige ID haben, ohne dass Sie sie einzeln programmieren müssen, sollten Sie eine Komponente mit einer eindeutigen Seriennummer hinzufügen, die manchmal als Silizium-Seriennummer bezeichnet wird.

Wenn Ihnen 64-Bit ausreichen, dann würde so etwas wie dieser IC die Arbeit für Sie erledigen. Sie können diese ID direkt oder als Möglichkeit zum Generieren Ihres spezifischen Formats einer eindeutigen ID verwenden.

Ich glaube wirklich nicht, dass es irgendetwas beantwortet, was der OP gefragt hat ...
@EugenSch. Es scheint, dass sie nach einer Möglichkeit suchen, jedem Element eine eindeutige ID zu geben. Das ist meine Meinung zu der Frage, wie der Titel andeuten scheint. Sie nehmen an, sie suchen eher nach einem Protokoll als nach Hardware?
Eine Hardware, die ein Protokoll implementiert, denke ich ...
@EugenSch. Nun, ich schätze, wir können die Klärung abwarten. Wenn es endet, bin ich daneben, ich werde diese Antwort entfernen.