Ich musste mir diese Frage vor ungefähr zehn Jahren oder länger stellen. Die Arbeit, die erledigt werden musste, bestand darin, dem Kontrollraum ein zweites Leben zu geben. Dies ist so etwas in der gesamten Wand, bestehend aus Glühbirnen und Schaltern mit Schaltern. Ich denke, ich werde mich nicht irren, wenn ich annehme, dass die Schilde seit dem Erscheinen der Glühbirnen funktionieren, da die Schalter zu diesem Zeitpunkt wahrscheinlich bereits bekannt waren. Und das Verlangen nach Schönheit kam im Allgemeinen zu Menschen aus der fernen Antike.
Jetzt werden viele Anzeigetafeln Schildern vorziehen. Ob es jedoch eine Mehrheit der Display-Fans geben wird, hängt von einer Menge ab, die uns unbekannt ist. Aber jetzt geht es nicht darum.
Jeder, der fünf Minuten lang über elektrische Verkabelung sprechen kann, wird mir sofort sagen, dass die Abschirmung aus Flachbildschirmen besteht, auf denen Schalter und Glühbirnen angebracht sind, sowie einer Box mit vielen Kabeln. Schließlich ist eine Glühbirne ohne Kabel nur dazu geeignet, sie entweder dumm zu zerbrechen oder, wenn Sie kreativ auftauchen und Ihre Fantasie anregen, sie am neugierigsten in Ihren Mund zu stecken und schnell herauszufinden, wo sich die Notaufnahme befindet.
Das war alles, ein Bündel Drähte, die die Box den Schaltern und Glühbirnen überließen, nur die Glühbirnen waren klein. Anscheinend die Enkelin der berühmten Glühbirne Iljitsch.
Und jetzt, erinnere ich mich, habe ich aus dem Fenster geschaut, und da ist das 21. Jahrhundert. Daher ist es notwendig, alles neu und anders zu machen. Anstelle von Glühbirnen - sparsame LEDs. Anstelle von Drähten - Verkabelung. Anstelle einer Schublade - viele, viele kleine Schubladen, also Controller.
Es stellte sich heraus, dass, wenn jeder Controller vier LEDs und zwei Schalter bedienen kann, dies optimal aussieht. Ich meine, nicht so schrecklich. Und wenn der Leistungsbus und der Informationsbus alle Steuerungen durchlaufen, gibt es nur vier Drähte, dann erscheint eine gewisse Gnade. Es stellte sich auch heraus, dass die Controller 104 Stück benötigen würden. In gütlicher Weise wäre es hier notwendig, das Problem der reisenden Verkäufer zu stellen und zu lösen. Und dann hätten die Controller vielleicht weniger ausgegeben. Aber es war nicht gut.
Zu diesem Zeitpunkt wusste ich bereits, was CAN ist, und mein Respekt vor Bosch war viel höher als der eines anständigen Restaurantkochs oder einer ordentlichen Hausfrau. Ich bin sicher, die BMW Automobilhersteller haben sogar die Bosch-Ingenieure besucht.
Controller Area Network, wie Ausländer meiner Meinung nach als technische Lösung sagen würden, entstand aus dem Wunsch heraus, endlich etwas gut zu machen. Ich werde mich nicht verstecken, Sie werden nicht alle Reize der Ergebnisse der Arbeit der Ingenieure sofort spüren, wenn Sie zwei Bände des Standards beherrschen, aber viel später. Wenn Sie mit Augenzeugen sprechen, befragen Sie Zeugen. Jetzt gibt es mehr Volumes, aber vielleicht können Sie sofort mit dem dritten beginnen, denn jetzt heißt es CAN_FD. Lassen Sie mich jedoch fortfahren.
Noch vor der Kollision mit dem Schild musste ich mich mit den technischen Entscheidungen anderer Leute über die Verwendung von CAN auseinandersetzen und meine Fehler machen. Fehler treten normalerweise zwischen dem Lesen von Anweisungen und dem Studieren von Beschreibungen auf. Nun, dass sie erst beim zweiten Mal wie ein Rechen aussehen.
Nun ein paar tausend Worte für den Leser, der Nerds toleriert und sie nicht als Feinde betrachtet.
CAN kann dort installiert werden, wo RS485 zuvor an einem Twisted Pair-Kabel gearbeitet hat. Twisted Pair ist keine unverzichtbare Bedingung, es ist einfach bequem zu vergleichen. Mit einem Twisted-Pair-Kabel können Sie sowohl über CAN als auch über RS485 Nachrichten vom Steuercontroller an den Slave senden und eine Antwort empfangen. Die Ähnlichkeit ist auffällig, aber konzentrieren wir uns besser auf die Unterschiede. Einige der Unterschiede können für einige Leser ein Minuszeichen tragen. Aber ich würde ihnen raten, nicht verärgert zu sein, sondern sich an das Gesetz von Lomonossow zu erinnern.
Dank der synchronen Organisation des Protokolls wird die Kollisionsauflösung auf dem Bus sozusagen im laufenden Betrieb in Hardware implementiert. Es wird unten angegeben, wozu dies führt und was den unruhigen Ingenieur gibt.
Sie können eine Nachricht ohne Anfrage erhalten.
Sie müssen nicht warten, bis die Antwort fertig ist. Sie können zu diesem Zeitpunkt eine andere Person fragen.
Der Slave-Controller kann auch fragen und eine Antwort erhalten.
Aufgrund des Synchronbetriebs ist die CAN-Bus-Länge umgekehrt proportional zur Übertragungsgeschwindigkeit oder ähnlichem.
Die Höchstgeschwindigkeit beträgt 1 MBaud (10 - unterwegs).
Der Absender weiß, dass die Nachricht während der Übertragung unmittelbar nach dem letzten Bit nicht verzerrt wurde. Genauer gesagt, das weiß jeder im Bus.
Wenn die Nachricht für eine verzerrt ist, wird der Versuch nicht von allen gezählt.
Wenn die Nachricht an den Bus gesendet wurde, empfängt der Teilnehmer sie nicht nur unter der Bedingung, dass sie fehlerhaft ist.
Die Anzahl der Controller am Bus sollte 127 nicht überschreiten.
Nachrichten sind in der Länge begrenzt. Sie bestehen aus einem Bezeichner, einem Längenindikator in Bytes und einem Datenblock mit genau so vielen Bytes wie angegeben. Es gibt noch ein paar weitere Servicebits, aber lassen Sie uns darüber schweigen, da der Service unauffällig sein sollte. Die Kennung kann 11 oder 29 Bit groß sein. Ein Datenblock kann 0 bis 8 Bytes enthalten (64 - unterwegs).
Für Einzelheiten werde ich einige Zahlen geben. Wenn Sie mit einer Geschwindigkeit von 1 MBaud arbeiten möchten, sollte die Buslänge nicht mehr als 35 Meter betragen (einige bevorzugen 40, dh heißer). Wenn Sie etwas über eine Entfernung von 8 km übertragen müssen, sollte die Geschwindigkeit 5 kBaud nicht überschreiten. Der Leser hat übrigens das Recht zu fragen, warum Kilobod und nicht Kilobit? Weil nicht alle Bauds zu Bits werden. Irgendwie so.
Wie kann ich all diese streng geheimen Zutaten entsorgen? Diejenigen, die das Würfelspiel in allem sehen, werden sich sofort daran erinnern, dass es so etwas Wunderbares wie CANopen und viele weitere schöne Kombinationen und Abkürzungen gibt und es nichts gibt, was das Rad neu erfinden könnte. Deshalb möchte ich oft antworten: „Sieht das Spiegelei aus zwei Eiern, das viele zum Frühstück selbst kochen, nicht wie ein Fahrrad aus? Warum nicht zu einem Food-Service gehen und ein Omelett nehmen? “ Aber ich sollte lieber schweigen und weitermachen, ohne von Schreien des Publikums abgelenkt zu werden.
In jenen Tagen, als 29-Bit-Kennungen noch nicht erfunden worden waren, gab es nur 11-Bit. Einige begannen damit, den Namen (die Nummer) des gewünschten Datentyps dort zu stopfen. Andere werden als Adresse des Controllers verwendet, auf den zugegriffen wird. Beides ergab einen Sinn. Zum Beispiel könnten Sie dies fragen:
- Und gib uns, meine Liebe, ein Schloss des dreizehnten Jahres in einem Liter Papierverpackung.
Oder so:
Wickeln Sie mich bitte ein, was rechts in Ihrem unteren Regal versteckt ist.
Übrigens kann dieses Design in CAN auch funktionieren:
Lüg alle an! Und du hast schnell alles aus den Regalen in meine Tasche gesteckt.
Aber dieses Design wird oft nicht verwendet, weil Sie nach einer Weile warten müssen.
Warten Sie, bis alle Antworten einzeln aufgereiht und dem anfordernden Controller zur Verfügung stehen. Wir haben den Film schon verlassen, wenn das so ist.
In meinem Fall würde ich mich über die Variante der Kennung als Adresse freuen. Von den 11 Bits waren 7 erforderlich, und 4 weitere blieben übrig, um einige Nachrichten dringender als andere zu machen und einige der Controller als die wichtigsten zu markieren.
Einige Unannehmlichkeiten sind von RS485 hierher gewandert, nämlich, dass die Adressen auf jedem Controller manuell eingestellt werden mussten. Überprüfen Sie dann und installieren Sie neu. Und vielleicht zum vorherigen Schritt zurückkehren und wiederholen.
Glücklicherweise gab es zu diesem Zeitpunkt bereits zwei Umstände.
Zunächst wurde bereits eine 29-Bit-Kennung angezeigt. Und das zweite ist, dass viele Hersteller von Mikrocontrollern begannen, die Bedingung, dass jeder Chip seine eigene eindeutige und ziemlich lange Nummer hat, als eine gute Form zu betrachten.
In einer langen Kennung könnten nun 24 Bits sicher einer eindeutigen Adresse zugewiesen werden. Weitere 5 blieben übrig, um sicherzustellen, dass sich die Züge in Dringlichkeit, Richtung (dort, hinten), Vorhandensein eines Restaurantwagens und Wagen mit erhöhtem Komfort unterschieden.
Wenn Sie aufhören, herumzuspielen und ernst werden, untergeordnete Controller-Agenten und die übrigen Chefs anrufen, können Sie eine Tabelle erstellen. Sie wird etwas später gezeigt.
Ein bisschen mehr über das Adressieren. Eine eindeutige Chipnummer nimmt in der Regel eine Anzahl von Bits ein, die weit über 24 liegen, beispielsweise 96 mit STM32FXXX. Daher müssen Sie irgendwie 24 von 96 bekommen. Ich habe die XOR-Operation gewählt. Sie können etwas anderes wählen, aber ein kleines Problem bleibt bestehen. Dies sind Adressübereinstimmungen nach der Reduzierung.
Die Wahrscheinlichkeit dieses Problems ist äußerst gering, aber es ist. Es ist lösbar, fügt aber den Installationsprogrammen Arbeit hinzu. Hierbei ist zu beachten, dass CAN-Nachrichten möglicherweise überhaupt keine Daten enthalten. Dies ist nützlich für uns bei der Entscheidung. Es besteht aus den folgenden Aktionen.
Der steuernde Controller (Boss) sendet eine Broadcast-Anfrage, auf die alle Agenten antworten müssen (dies ist eine Anfrage mit einer Nulladresse). Antwortnachrichten mit einer Datenlänge von Null und übereinstimmenden Adressen verderben sich nicht gegenseitig, sondern erreichen den Chef in Form einer.
Nun bleibt zu berechnen, wie viele Antworten eingegangen sind und wie viele sie sein sollten. Wenn diese beiden Zahlen übereinstimmen, ist alles in Ordnung. Wenn es weniger Antworten als Controller gibt, stimmen die Adressen überein und es gibt Arbeit für die Einsteller. Und wenn es mehr Antworten als Controller gibt, müssen Sie über eine Dissertation nachdenken, da Sie kurz vor der Entdeckung stehen.
Wenn die Änderung der Länge der Nachricht als Variation ihrer Bedeutung angesehen wird, können Sie zusätzliche Funktionen erhalten, über die ich später berichten werde, wenn meine Mutter nicht zum Essen anruft.
Ein weiterer interessanter Punkt ist, dass Sie, wenn Sie gleichzeitig kurze und lange Bezeichner verwenden, beispielsweise Gruppenadressierungen oder teilweise Broadcast-Anforderungen erhalten können. Aber wir werden noch nicht tief gehen.
Kehren wir zur Codierung des Bezeichners zurück.
Zu Adressierungszwecken werden 24 Bit in der erweiterten Kennung und sechs in der Standardkennung zugewiesen. Für die erweiterte Kennung wird eine Adresse mit dem Wert 0x000000 gesendet. Für eine Standardkennung wird auch eine Nulladresse (ihre 6 Bits) als gesendet betrachtet. Die fünf führenden (hohen) Bits in den langen und kurzen Bezeichnern werden als Header bezeichnet, wirken sich auf die Bedeutung der Nachricht aus und werden mit den Buchstaben NVADR bezeichnet:

Für das Control Panel war es natürlich erforderlich, nur einen Teil dieses Schemas zu implementieren. Im ersten Projekt mit einem Schild (oder auf dem Schild, wie richtig?) Wurden Cortex-Chips von NXP verwendet, und in den nächsten Projekten (es gab einige) wurde bereits M0 von STMicroelectronics verwendet.
Ein paar Worte zur Verwendung von Kurzbezeichnungen. Diese sechs Bits, die für die Adressierung zugewiesen sind, adressieren nicht den Controller, sondern die Gruppe. Zu Beginn hat diese Gruppe für alle Null. Als Nächstes werden Agenten konfiguriert, nach denen einige oder alle Mitglieder ihrer Gruppe werden. Als Anfrage an die Gruppe erhalten wir die Antworten der Agenten, die wir in dieser Gruppe gesammelt haben.
Nun ein wenig darüber, was hinzugefügt wird, wenn Sie Nachrichten mit unterschiedlichen Datenlängen unterschiedlich interpretieren. Zum Beispiel hilft eine Abfrage mit der Länge Null beim Debuggen sehr, wie oben erwähnt. Eine Anforderung mit einer Länge von 3 bedient den variablen Speicherplatz von 16384 Byte. Eine Anforderung mit einer Länge von 4 tut dasselbe, ist jedoch für einen Gateway-Agenten vorgesehen, der einen CAN-Bus der zweiten Ebene bedient. Dieser Bus kann aus einem oder zwei Agenten bestehen, aber ein paar Kilometer entfernt.
Eine Abfrage mit einer Länge von 5 und 6 ist ebenfalls für einen Raum von Zwei-Byte-Variablen der Größe 4194304 vorgesehen. Zwei Bits werden nicht zur Adressierung verwendet. Ein Bit steuert das Schreiben und Lesen. Ein anderer signalisiert einen Fehler.
Als nächstes dienen 7 und 8 vier Byte-Wörter. Es gibt auch 4.194.304.
Diese Leerzeichen sind allen Agenten gemeinsam. Jeder von ihnen verwendet je nach Zweck nur ein Segment des Variablenraums. Der Regler zur Temperaturmessung an zwei Punkten ist auf dem Foto dargestellt. Dies dient zum Debuggen und Testen.

Die Steuerungen sind mit einem Flachkabel für 6 Adern verbunden. Dual werden für Lebensmittel verwendet. Der 20-Fuß-Chip ist der STM32F042.
Auf der Rückseite befindet sich der MAX3051, ein CAN-Treiber im SOT23-8-Paket.
Nun, Mama ruft zum Essen an.