DE69921882T2 - Verfahren zur Entdeckung und Lösung von Datenkorruption in einem UART-basierten Kommunikationsnetzwerk - Google Patents

Verfahren zur Entdeckung und Lösung von Datenkorruption in einem UART-basierten Kommunikationsnetzwerk Download PDF

Info

Publication number
DE69921882T2
DE69921882T2 DE69921882T DE69921882T DE69921882T2 DE 69921882 T2 DE69921882 T2 DE 69921882T2 DE 69921882 T DE69921882 T DE 69921882T DE 69921882 T DE69921882 T DE 69921882T DE 69921882 T2 DE69921882 T2 DE 69921882T2
Authority
DE
Germany
Prior art keywords
message
byte
received
bus
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69921882T
Other languages
English (en)
Other versions
DE69921882D1 (de
Inventor
Karl William Brighton Overberg
Clifford Lester Ann Arbor Merz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ford Global Technologies LLC
Original Assignee
Ford Global Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ford Global Technologies LLC filed Critical Ford Global Technologies LLC
Publication of DE69921882D1 publication Critical patent/DE69921882D1/de
Application granted granted Critical
Publication of DE69921882T2 publication Critical patent/DE69921882T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/407Bus networks with decentralised control
    • H04L12/413Bus networks with decentralised control with random access, e.g. carrier-sense multiple-access with collision detection (CSMA-CD)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/24Testing correct operation
    • H04L1/242Testing correct operation by comparing a transmitted test signal with a locally generated replica
    • H04L1/243Testing correct operation by comparing a transmitted test signal with a locally generated replica at the transmitter, using a loop-back
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/407Bus networks with decentralised control
    • H04L12/413Bus networks with decentralised control with random access, e.g. carrier-sense multiple-access with collision detection (CSMA-CD)
    • H04L12/4135Bus networks with decentralised control with random access, e.g. carrier-sense multiple-access with collision detection (CSMA-CD) using bit-wise arbitration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0093Point-to-multipoint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0094Bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40267Bus for use in transportation systems
    • H04L2012/40273Bus for use in transportation systems the transportation system being a vehicle

Description

  • Diese Erfindung betrifft Kommunikationsnetzwerke, und spezieller ein Verfahren um Kollisionen und Rauschverstümmelung in einem Peer-to-Peer-Kommunikationsnetzwerk zu detektieren und beizulegen, das auf einem universellen Asynchronsender/Empfänger basiert. Historisch wurden elektrische und elektronische Funktionen in Fahrzeugen mit einzelnen elektronischen Regeleinheiten (ECU's, Electronic Control Units; elektronischen Regeleinheiten) implementiert, welche getrennte, unabhängige Funktionen verrichten. Zum Beispiel kann ein Fahrzeugsystem eine ECU für Motor-Regelfunktionen einschließen, eine andere ECU um Bremsen-Antiblockierfunktionen zu verrichten, und noch eine andere ECU um die Instrumentengruppe zu regeln. Da sich die elektronische Architektur von Fahrzeugen entwickelt hat, wurde es für ECU's notwendig niteinander zu kommunizieren, um wünschenswerte Fahrzeugsystem-Merkmale wie etwa die folgenden zu realisieren:
    • 1. verteilte Fahrzeugfunktionen über Koordinierung zwischen ECU's
    • 2. Teilen miteinander in Zusammenhang stehender Daten zwischen ECU's; und
    • 3. Zugriff auf Diagnosedaten mehrerer ECU's über eine einzige, gemeinsame Schnittstelle.
  • Ein Beispiel des ersten Merkmals wäre ein Fahrzeugtraktions-Regelsystem, welches Koordinierung zwischen einer Antriebsstrang-Regelung und einem Antiblockiersystem-Regler (ABS, Antilock Brake System; Antiblockiersystem) beinhaltet. Ein Beispiel für das zweite Merkmal wäre eine Kommunikation von Motorkühlmittel-Temperaturdaten von der Antriebsstrang-ECU zu der Instrumentengruppen-ECU zur Anzeige durch die Instrumentengruppe. Das dritte oben erwähnte Merkmal erlaubt es einer einzigen Diagnoseverbindung zu einem Bus oder einem Netzwerk für Diagnoseinformationen – oder um Diagnosefunktionen in einem Fahrzeug auszuüben – auf eine Mehrzahl von Modulen zuzugreifen, ohne sich mit jeder ECU getrennt verbinden zu müssen.
  • Kommunikation zwischen ECU's in Fahrzeugen wurde mit einer Vielfalt von Lösungen verwirklicht. Mehrere CARRIER SENSE MULTIPLE ACCESSS/COLLISION DETECT/ARBITRATE (CSMA/CD/A) – Protokolle wurden entwickelt und werden in Fahrzeugen verwendet, einschließlich des Standards IS011898, sonst als Controller Area Network (CAN) bekannt, und der Standards SAE J1850, einschließlich der Implementierungen J1850 PWM und VPW. Diese Protokolle müssen durch speziell aufgebaute integrierte Schaltungen implementiert werden, welche spezifisch konstruiert sind um sich an das genannte Protokoll zu halten. Als auf Willkür basierende Protokolle erfordern diese Protokolle eine Nachrichtenübertragung, um sich miteinander zu synchronisieren und auf Bit-für-Bit-Basis derart untereinander zu schlichten, daß Nachrichtenkollisionen für die maßgebliche Nachricht nicht zerstörend sind. Die Tatsache daß speziell aufgebaute integrierte Schaltungen benötigt werden um diese Kommunikationsprotokolle zu implementieren, setzt jedoch zugehörige Kosten für den Protokollregler voraus.
  • Eine Alternative zur Verwendung von speziell aufgebauten integrierten Schaltungen ist es einen UART (Universal Asynchronous Reiceiver Transmitter; universeller Asynchronsender/Empfänger) zu verwenden, um ein Peer-to-Peer-Kommunikationsnetzwerk zwischen ECU's zu implementieren, wie in 1 gezeigt. Die in Fahrzeugen verwendeten ECU's sind beinahe ausschließlich auf Mikrocontrollern basierende Konstruktionen. Der UART ist ein Mikrocontroller-Peripheriegerät, welches für eine große Vielfalt von Mikrocontroller-Familien weithin verfügbar ist und welches weniger komplex und weniger kostspielig ist als speziell aufgebaute integrierte Lösungen für CSMA/CD/A-Kommunikationsprotokolle. UARTs werden jedoch am üblichsten als Lösungen für die Kommunikation von Punkt zu Punkt zwischen ECU's in einem gemeinsamen Netzwerk benutzt, wo die Kommunikation durch einen einzigen Bus-„Master" in dem Netzwerk koordiniert wird, wobei die verbleibenden Knoten als „Slaves" wirken.
  • Peer-to-Peer-Kommunikationsnetzwerke werden aus den folgenden Gründen typischerweise nicht unter Verwendung von UARTs implementiert: 1.) UARTs sind nicht in der Lage mit bereits auf dem Bus vorhandenen Signalen zu synchronisieren. Wenn dem UART befohlen wird ein Zeichen zu übertragen, so überträgt er das Zeichen unabhängig davon, welches Signal sich auf dem Bus befindet. 2.) UARTs sind nicht in der Lage bitweise zu schlichten; beginnt der UART einmal die Übertragung eines Zeichens, so wird das Zeichen vollständig übertragen. 3.) Kollisionen zwischen mehreren übertragenden Knoten auf einem UART-basierten Peer-to-Peer-Kommunikationsnetzwerk können in verzerrten Wellenformen resultieren, welche bewirken daß Daten durch verschiedene Knoten auf dem Bus unterschiedlich interpretiert werden.
  • Das mit dem Gebrauch von UARTs in Peer-to-Peer-Kommunikationsnetzwerken in Zusammenhang stehende Kollisionsproblem wird aus der folgenden Besprechung unter Bezug auf 2 offensichtlich sein. In diesem Fall haben zwei Knoten asynchron – mit einer halben Bitperiode Phasenverschiebung zwischen sich – Nachrichtenübermittlungen eingeleitet. Die resultierende Wellenform auf dem Bus, welche ein Gemisch der durch die beiden Einzelknoten auf den Bus getriebenen Signale ist, bringt Datenübergänge dazu genau an den empfangenden UART-Abtastpunkten aufzutreten, welche aus der ersten Flanke des Startbits geplant wurden. Während Datenübergängen aufgenommene Datenproben (eingekreiste Pfeile) sind undefiniert und resultieren in entsprechend unverläßlichen Datennachrichten. Weil UARTs nicht zu einer bitweisen Schlichtung in der Lage sind, ist es nicht möglich ein sie verwendendes CSMA/CD/A-Protokoll zu entwickeln.
  • Zusätzlich zum Problem der Datenkollision ist die Fahrzeugumgebung sowohl bezüglich abgestrahlter wie auch geleiteter Rauschquellen eine extrem verrauschte elektrische Umgebung, was die Verläßlichkeit und Integrität von Datenübertragungen weiter vermindert.
  • US-A-5,414,717 legt einen Multiplex-Kommunikationsregelapparat offen, in dem ein negatives Quittiersignal als ein Reaktionssignal übertragen wird, um das Auftreten eines Empfangsfehlers zu melden. Die offenbarten Signalformate wären für ein asynchrones Netzwerk nicht geeignet. Die vorliegende Erfindung legt ein Verfahren der Peer-to-Peer-Kommunikation zwischen einer Mehrzahl von durch einen Bus gekoppelten Reglern bereit, wobei jeder Regler einen Empfänger und einen Sender einschließt, und wobei dieses Verfahren eine Abfolge der folgenden Schritte durch einen dieser Mehrzahl von Regler umfaßt:
    Empfangen mindestens eines Teils einer Nachricht;
    Detektieren daß die Nachricht eine verstümmelte Version einer original unverstümmelten Nachricht ist;
    Übertragen eines negativen Quittiersignals in Reaktion auf die Detektierung dieser verstümmelten Version;
    dadurch gekennzeichnet daß:
    diese Peer-to-Peer-Kommunikation asynchron ist und jede Nachricht eine Gruppe von Zeichen einschließt, wobei jedes Zeichen einen Rahmen aufweist, der einen Bytewert und ein Stopbit einschließt;
    dieses negative Quittiersignal den Bus dazu bringt für ein vorherbestimmtes Zeitintervall einen vorherrschenden Zustand einzunehmen, um die in Bearbeitung befindliche Nachricht abzubrechen;
    dieses negative Quittiersignal ein besagtes Stopbit eines Zeichenrahmens überschreibt;
    dieses überschriebene Stopbit als ein Zeichenrahmen-Fehler delektiert wird, um den Empfang dieser verstümmelten Version durch einen anderen dieser Mehrzahl von Reglern zu verhindern; und
    daß man den Bus dazu bringt am Ende dieses Zeitintervalls einen rezessiven Zustand einzunehmen.
  • Gemäß der vorliegenden Erfindung wird ein Mehrfach-ECU-Kommunikationsverfahren bereitgestellt, das Mikrocontroller-UARTs verwendet um verläßliche Peer-to-Peer-Kommunikation zu erzielen. Das Kommunikationsverfahren verwendet ein definiertes Nachrichtenformat und eine Mehrzahl von Prüfungen der Integrität einzelner Zeichen und der Integrität der vollständigen Nachricht relativ zum definierten Nachrichtenformat, um zuverlässige Datenübertragung und zuverlässigen Datenempfang zwischen Knoten zu erzielen. Die Knoten verwenden einen Softwaremechanismus um ein negatives Quittiersignal (NACK, Negative Acknowledgement; negative Quittierung) zu erzeugen, welches – für den Fall daß durch irgendeinen Knoten auf dem Netzwerk Nachrichtenverstümmelung detektiert wird – die Nachrichtenverstümmelung markiert und ein Signal erzeugt, welches garantiert die in Bearbeitung befindliche Nachricht zu verstümmeln. Dies bringt alle Empfänger der in Bearbeitung befindlichen Nachricht dazu den Empfang einer verstümmelten Nachricht abzubrechen, und bringt den Sender dazu die Übertragung der Nachricht erneut zu versuchen. Diese Negativ-Quittiertechnik zieht Vorteil aus der UARTs eigenen Rahmenformatprüfung, indem sie das Stopbit des UART-Zeichenrahmens überschreibt.
  • Das hierin beschriebene Verfahren ist gleichermaßen effektiv darin eine Verstümmelung von Nachrichten in einem UART-basierten System zu detektieren und abzulehnen, welche entweder aufgrund von Datenkollisionen durch mehrere Sender in dem Netzwerk verstümmelt wurden, oder aufgrund einer aus geleiteten oder abgestrahlten Rauschquellen resultierenden Rauschverstümmelung. Das zurückgewiesene Rauschen kann entweder globales Rauschen sein (von allen Empfängern im Netzwerk detektiert) oder lokales Rauschen (nur von von einem Sender oder Empfänger im Netzwerk detektiert). Das durch diese Erfindung definierte Verfahren erlegt der Anzahl von Knoten in dem Netzwerk keinerlei Grenzen auf und erfordert keinen speziellen Dateninhalt außer einer einzigartigen Quelladresse, die jedem Knoten in dem Netzwerk zugeschrieben ist.
  • Die Erfindung wird nun, anhand eines Beispiels, unter Bezug auf die beigefügten Zeichnungen beschrieben werden, in welchen:
  • 1 ein Blockdiagramm des auf mehreren ECUs basierenden Kommunikationssystems der vorliegenden Erfindung ist;
  • 2 Wellenformen zeigt, die aus asynchronen Kollisionen in einem UART-basierten Netzwerk resultierende Datenunsicherheiten darstellen;
  • 3 ein detailliertes Blockdiagramm einer der ECU's von 1 ist;
  • 4 das durch die vorliegende Erfindung benutzte Zeichenrahmen-Format zeigt;
  • 5 das durch die vorliegende Erfindung benutzte Nachrichtenformat zeigt;
  • 6 Details des Nachrichtenkopf-Formats zeigt;
  • 7 ein Zustandsdiagramm ist, daß die Zustandsmaschine der Sender/Empfänger-Software zeigt;
  • 8 Nachrichten-Wellenformen und Logikzustände für normale Kommunikation zeigt;
  • 9 Nachrichten-Wellenformen und Logikzustände für Fehlermodus-Betrieb zeigt.
  • Unter Bezug auf die Zeichnungen, und anfänglich auf 3, schließt das Kommunikationssystem der vorliegenden Erfindung eine Mehrzahl von allgemein mit 10 bezeichneten Mikrocontrollern ein, die jeder einen CPU 12 umfassen; einen zugehörigen Speicher 14, der die Software-Zustandsmaschine speichert; ein UART-Peripheriegerät 16; einen Flankendetektor-Eingang 18 und einen Zeitgeber 20. Ein physischer Schichtempfänger 22 verbindet den UART 16 mit einem nulldominanten Bus 24.
  • UART-Implementierungen variieren von Mikrocontroller zu Mikrocontroller. Zum Beispiel schließen manche – aber nicht alle – UARTs Informationen ein ob ein Byteempfang im Gange ist (Bus nicht im Leerlauf). Manche, aber nicht alle UARTs lassen es zu daß Bytes in der „aufgereihten" Art und Weise in einer Warteschlange eingereiht und übertragen werden. Manche, aber nicht alle UARTs erlauben es daß ein „Unterbrechungs"-Signal direkt gesendet wird, was bewirkt daß in empfangenden UARTs ein Rahmenfehler detektiert wird. Das Protokoll der vorliegenden Erfindung wurde entwickelt um mit den einfachst verfügbaren UARTs in üblichen, billigen, kommerziellen Mikrocontrollern zu arbeiten, und keine speziellen UART-Merkmale. Die vorliegende Erfindung arbeitet mit einer Standard-Bitrate von 9600 Bit/Sekunde, und alle UARTs auf dem Bus sind programmiert um – mit einer Toleranz von +/– 2% – mit der gleichen Bitrate zu arbeiten. Diese Prinzipien sind jedoch leicht auf andere Bitraten auzudehnen, solange alle UARTs auf dem Bus mit der gleichen Bitrate arbeiten.
  • Der Zeitgeber 20 wird benutzt um die Leerlaufperiode zwischen empfangenen Bytes zu messen, und um zu bestimmen ob der Bus sich im Leerlauf befindet oder nicht. Der Zeitgeber wird außerdem benutzt um eine Zeitdauer nach Abschluß der Nachrichtenübertragung oder des Nachrichtenempfangs zu reservieren, während der das Auftreten eines NACK auf dem Bus den erfolgreichen Abschluß oder Empfang einer Nachricht negiert.
  • Der Flankendetektions-Eingang 18 ist ein gesonderter Eingang zu dem Mikrocontroller, welcher ein Bit setzt wenn auf dem Bus ein Übergang von einer logischen 1 auf eine logische 0 auftritt. Der Zweck dieses Eingangs ist es die Anzahl von Kollisionsereignissen zu minimieren, welche auf dem Bus auftreten, und dadurch die effektive Bus-Bandbreite zu steigern. Das Protokoll erfüllt seinen Zweck ohne den Flankendetektions-Eingang, aber das Flankendetektions-Merkmal erlaubt es einem Knoten zu bestimmen ob auf dem Bus irgendeine Aktivität herrscht, gerade bevor er ein Zeichen überträgt. Befindet sich der Bus nicht im Leerlauf, so verschiebt ein Knoten, der gerade dabei ist zu übertragen, seine Übertragung bis der Bus sich wieder im Leerlauf befindet. Manche UARTs schließen ein Statusbit ein, welches anzeigt daß eine Byteübertragung im Gange ist. Für solche UARTs kann dieses Statusbit benutzt werden, um zu detektieren ob der Bus beschäftigt ist, und es würde kein Flankendetektions-Eingang gebraucht. Der Bus 24 befindet sich auf einem von zwei logischen Pegeln oder Zuständen; 0 und 1. Der Bus ist dahingehend ein nulldominater Bus, daß der Zustand 0 der maßgebliche Zustand auf dem Bus ist, wenn zwei Sender gleichzeitig versuchen gegensätzliche Zustände auf den Bus zu treiben. Jeder der Prozessoren auf dem Bus kommuniziert in einem Halbduplex-Modus und empfängt zur gleichen Zeit das Mischsignal auf dem Bus, zu der er Signale auf den Bus treibt. Der Zweck der physischen Schichttransceiver-Vorrichtung 22 ist es, den Logikzustand des durch die UART übertragenen Bits in ein Analogsignal mit Impedanzcharakteristika umzuwandeln, die mit der nulldominanten Art des Bus kompatibel sind. Der physische Schichttransceiver treibt aktiv logische 0-Signale auf den Bus (geringe Impedanz), und treibt passiv logische 1-Signale (hohe Impedanz) auf den Bus.
  • Kommunikation in dem UART-basierten Protokoll (UBP; UART Based Protocol; UART-basiertes Protokoll) wird mittels Nachrichten bewirkt. Nachrichten sind Gruppen von Zeichen, welches eines zur Zeit durch den UART übertragen werden. Der in UBP benutzte Zeichenformat ist ein Standardrahmen von 10 Bit, wie in 4 gezeigt. Das erste Bit ist ein Startbit, welches durch einen Übergang von rezessiver 1 auf dominante 0 identifiziert wird. Die nächsten 8 Bits sind Datenbits, welche den Bytewert des übertragenen Zeichens umfassen. Das 10. Bit ist ein Stopbit, welches eine 1-Bit-Periode eines rezessiven Zustands 1 ist. Empfangende UARTs synchronisieren auf die erste Startbit-Flanke und sagen die einzelnen Bit- Abtastpunkte basierend auf der ersten Flanke des Startbits voraus. Wird das Stopbit als eine dominate 0 abgetastet, so identifiziert ein empfangender UART diesen Zustand als einen Zeichenrahmen-Formatfehler. Hiernach wird auf die von dem UART übertragenen Zeichen dahingehend synonym mit Bytes Bezug genommen werden, daß ein Zeichen aus einem Startbit, einem Bytewert und einem Stopbit besteht.
  • Zur gleichen Nachricht gehörende Zeichen weisen eine Trennung zwischen den Zeichen auf, welche eine spezifizierte Leerlaufzeit von 10 Bitdauern nicht überschreiten darf. Übersteigt die Trennung zwischen Zeichen für zwei aufeinander folgend empfangene Zeichen 10 Bitdauern, so wird angenommen daß die Zeichen zu gesonderten Nachrichten gehören. Gemäß UBP übertragene Nachrichten kombinieren Zeichen zu einem Nachrichtenformat, wie es in 5 gezeigt ist. Jede Nachricht schließt einen Pflichtkopf von drei Byte ein, ein Datenfeld von 1 bis 8 Datenbytes, und ein Prüfsummen-Byte. Nachrichten werden durch eine Minimaldauer von 51 Bitdauern getrennt, was gebraucht wird um den Knoten zu erlauben zu bestimmen, ob irgendein anderer Knoten in dem System eine Nachricht als ungültig erklärt hat, indem er ein NACK überträgt. Der Kopf besteht aus drei einzigartigen Bytes, gezeigt in 6. Das erste Byte ist ein Formatbyte, das zweite Byte ist ein Zielbyte, und das dritte Byte ist das Quellbyte. Die ersten zwei Bits des Formatbytes spezifizieren den Nachrichtentyp. Die beiden Nachrichtentyp-Bits lassen vier mögliche Nachrichtentypen zu, obwohl in UBP zwei Nachrichtentypen definiert sind; funktionell adressierte Nachrichten (erste zwei Bits 00 binär) und physisch adressierte Nachrichten (erste zwei Bits 10 binär). Die nächsten 6 Bits des Formatbytes spezifizieren die Anzahl in der Nachricht zu übertragender Datenbytes; die möglichen Werte sind 1 bis 8.
  • Das zweite Byte ist ein Zielbyte. Im Fall von funktionell adressierten Nachrichten muß die Nachricht empfangen werden, wenn das durch einen Knoten empfangene Zielbyte zu einer für diesen Knoten definierten Liste von vordefinierten Zielbytes paßt. Ist die Nachricht eine physisch adressierte Nachricht, so wird die Nachricht empfangen wenn das Zielbyte zur Quelladresse des empfangenden Knotens paßt. Das dritte Byte ist das Quellbyte, welches der einzigartigen Adresse des Knotens entspricht, welcher die Quelle der übertragenen Nachricht ist. Das Datenfeld besteht aus 1 bis 8 Datenbytes. Die Datenbytes werden von dem Prüfsummen-Byte gefolgt. Das Prüfsummen-Byte stellt die arithmetische Summe all der Bytewerte in der Nachricht vom Formatbyte bis zum letzten Datenbyte dar, berechnet Modulo 256 dezimal.
  • Ein anderes Zeichen, welches von einem oder allen Knoten in dem System für den Fall gesendet werden kann, daß ein Fehler detektiert wird, ist ein „Unterbrechungs"-Zeichen. Auf dieses Zeichen wird auch als eine „Negativquittierung" oder „NACK" Bezug genommen. Das NACK- Zeichen ist als mindestens 10 Bitdauern eines dominanten Zustands 0 definiert, übertragen durch einen Knoten im Netzwerk. Die Bedeutung des Zeichens „Unterbrechung" oder „NACK" ist es, daß seine Übertragung garantiert daß die Detektion eines Zeichenrahmen-Formatfehlers durch jeden Empfänger auf dem Bus bewirkt wird. Der Grund hierfür ist es, daß die Übertragung von 10 Bitdauern eines dominanten Zustands einen Empfänger dazu bringen wird ein Stopbit als dominant zu interpretieren, selbst wenn zu dem Zeitpunkt, da das NACK übertracken wird, bereits eine Zeichenübertragung im Gange ist. Das NACK wie in diesem Protokoll definiert und implementiert erlaubt es einem UART-basierten Peer-to-Peer-Kommunikationsprotokoll, ungeachtet von Kollisionen oder Rauschereignissen ein hohes Niveau von Datenintegrität zu erzielen und richtig zu arbeiten.
  • Weil manche UARTs nicht in der Lage sind ein Unterbrechungssignal direkt zu übertragen, kann das NACK-Signal in Software in Verbindung mit dem Zeitgeber des Mikrocontrollers geschaffen werden, welcher der Implementierung dieses Protokolls gewidmet ist. In allen UART-Konstruktionen, welche durch die Anmelder beurteilt wurden, kann die UART-Funktionalität deaktiviert werden, und die TX- und RX-Pins können direkt als Mikrocontroller-Schnittstellenpins geregelt werden. Das Unterbrechungssignal beginnt indem man die Ausgabe des TX-Pins auf jenen Zustand setzt, welcher bewirkt daß ein dominantes Signal auf den Bus getrieben wird, und indem man den Mikrocontroller-Zeitgeber für 10 Bitdaueren vom gegenwärtigen Zeitpunkt setzt. Wenn der Zeitgeber abläuft wird der Ausgangszustand des TX-Pins derart umgeschaltet, das ein rezessiver Zustand auf den Bus gegeben wird.
  • Die hierin beschriebene Protokollimplementierung minimiert das Auftreten von Kollisionen über den Flankendetektions-Eingang 18. Bevor durch irgendeinen Sender im Netzwerk irgendein Byte übertragen wird, wird der Flankendetektions-Eingang geprüft, um zu sehen ob irgendein anderer Knoten im Netzwerk die Übertragung eines Bytes begonnen hat. Dieser Ansatz minimiert die Anzahl von Kollisionen, aber es können nicht alle Kollisionen vorhergesehen werden. Für den Fall daß Nachrichten gleichzeitig von zwei (oder mehr) Knoten im Netzwerk übertragen werden, werden Kollisionen durch Mehrfachprüfungen der Datenintegrität der Nachricht detektiert und sofort durch Übertragung eines NACK geklärt.
  • Jeder Sender empfängt und prüft gleichzeitig jedes Byte, während es auf dem Bus übertragen wird. Das empfangene Byte wird mit dem Byte verglichen welches der übertragende Knoten gerade in seinen UART geladen und übertragen hat. Der übertragende Knoten übermittelt ein NACK, um die Detektion einer Kollision anzuzeigen, für jeden von zwei Fällen: 1) das empfangene Byte hat nicht den gleichen Wert wie das übertragene Byte oder 2) das empfangene Byte weist einen Rahmenformat-Fehler auf (z.B. das rezessive Stopbit 1 wurde zu einer dominanten 0 überschrieben). Der Effekt des NACK ist es zu garantieren daß alle Knoten auf dem Bus einen Rahmenfehler detektieren und die Übertragung und/oder den Empfang jeglicher im Gange befindlichen Nachricht abbrechen. Diese Kollisionsprüfung und das Übertragen eines NACK, wenn ein Fehler detektiert wird, wird mit jedem durch einen Sender übertragenen Byte verrichtet, einschließlich dem Formatbyte, dem Zielbyte, dem Quellbyte, den Datenbytes und dem Prüfsummen-Byte.
  • Die vorliegende Erfindung erlaubt es jedem Knoten auf dem Bus eine Nachricht auf dem Bus unwirksam zu machen, indem er ein NACK übermittelt wann immer er einen Fehler detektiert. Ein möglicher Weg nach Detektion einer Abweichung Kollisionen beizulegen ist es, jenen Sender, welcher die Abweichung detektiert hat, einfach „zurückzuziehen" und die Übertragung einfach anzuhalten. Dieser Ansatz erlaubt es einem Sender, welcher keinen Fehler detektiert, selbst nach einer Kollision mit der Übertragung fortzufahren. Das Problem mit einem derartigen Ansatz ist die Unsicherheit empfangener Daten, die mit dem in 2 in Zusammenhang stehen. Wenn zwei Nachrichtenübertragungen kollidieren und die resultierende Wellenform bewirkt daß Datenübergänge genau am Abtastpunkt eines Empfängers auftreten, so ist es für verschiedene empfangende Knoten auf dem Bus möglich die gleiche Wellenform zu empfangen und unterschiedlich zu interpretieren. Übertragung des NACK durch irgendeinen Knoten, welcher eine Kollision oder irgendeinen Widerspruch in einer empfangenen Wellenform detektiert, garantiert daß es einer Wellenform auf dem Bus – aufgrund einer Kollision möglicherweise verstümmelt – nicht weiter erlaubt wird durch andere Knoten in dem Netzwerk empfangen zu werden, und es wird erzwungen daß sie durch die übertragenden Knoten erneut übertragen wird.
  • Für die Mehrheit der Fälle werden Kollisionen auf dem Bus nach Kollision des ersten Zeichens detektiert. Nachrichten unterschiedlicher Typen, Längen und Ziele resultieren typischerweise in einer detektierbaren Kollision, nachdem die ersten beiden Bytes der Nachricht übertragen wurden. Mit dem dritten Byte der Nachricht sind jedoch fast alle Kollisionen detektiert. Wie erwähnt wird jedem Knoten auf dem Bus eine einzigartige Adresse zugewiesen. Da diese Adresse durch einen einzigen Bytewert dargestellt wird, können Knotenadressen im Bereich von 0 bis 255 liegen, mit bis zu 256 auf dem Bus zugelassenen Knoten. Es bestehen keine anderen Einschränkungen der jedem Knoten zugewiesenen Adresswerte, als das Erfordernis daß jede Knotenadresse auf dem Bus einzigartig sein muß. Die Tatsache daß jede Knotenadresse einzigartig ist, garantiert daß Kollisionen in den meisten Fällen nach Übertragung des Quellbytes beigelegt sind. Für den in 2 gezeigten Fall jedoch, wo Datenübergänge an Abtastpunkten auftreten, garantieren einzigartige Quelladressen nicht immer eine Kollisionsdetektion nach dem Quellbyte. Aufgrund jener der Datenübertragung zuzuschreibenden Unsicherheit ist es möglich daß zwei verschiedene Sender Bytewerte empfangen, die gleich dem Wert sind den sie übertragen haben und selbst nach dem Quellbyte fortfahren zu übertragen.
  • Während Prüfung jedes empfangenen Bytes durch jeden Sender und Übertragung eines NACK zur Beilegung von Kollisionen der primäre Mechanismus ist, um Kollisionen zu detektieren und beizulegen, sind in dem Protokoll zusätzliche Detektions- und Beilegungsmechanismen eingeschlossen. Jeder Knoten auf dem UBP-Bus wird aus jedem der folgenden Gründe ein NACK übertragen und jede in Gang befindliche Nachricht unterbrechen:
    • 1. Detektion einer Unstimmigkeit zwischen einem übertragenen und einem empfangenen Byte durch einen Sender;
    • 2. Detektion eines Rahmenfehlers für jegliches empfangene Byte durch einen Empfänger;
    • 3. Detektion durch einen Empfänger, daß die Anzahl empfangener Bytes höher ist als die durch den Datenlängen-Code spezifizierte Anzahl;
    • 4. Detektion einer Übertragungs-Zeitsperre durch einen Empfänger, d.h. es ist zuviel Zeit mit dem Warten auf Empfang eines Bytes verstrichen, wie es durch den Datenlängen-Code spezifiziert ist; und
    • 5. Detektion einer ungültigen Prüfsumme durch einen Empfänger.
  • Während nicht jeder Knoten in dem UBP-Netzwerk zu jeder gegebenen Zeit ein Sender ist, ist jeder Knoten in dem UBP-Netzwerk ein Empfänger, selbst wenn der Knoten sendet. Jeder Knoten auf dem UBP-Bus empfängt und prüft jede auf dem Bus übertragene Nachricht. Wenn irgendein Knoten einen Rahmenfehler detektiert, d.h. ein dominantes Stopbit, so wird durch diesen Knoten ein NACK gesendet. Das Formatbyte, das erste Byte der Nachricht, spezifiziert die Anzahl von Datenbytes in der Nachricht. Ein empfangender Knoten weiß, basierend auf dem Datenlängen-Teil des empfangenen Formatbytes, welches empfangene Byte als die Prüfsumme zu interpretieren ist. Wird innerhalb der minimalen Leerlaufzeit von 20 Bitdauern nach Empfang des Prüfsummen-Bytes ein zusätzliches Byte empfangen, so detektiert der empfangende Knoten einen Nachrichtenformat-Fehler und sendet ein NACK, um den Empfang der gegenwärtigen Nachricht für alle Knoten in dem Netzwerk zu widerrufen.
  • Ähnlich wird ein Fehler detektiert und ein NACK durch den empfangenden Knoten gesendet, wenn ein empfangender Knoten weniger Datenbytes empfängt als durch den Datenlängen-Code angezeigt. Abschließend wird durch alle empfangenden Knoten eine Prüfsumme berechnet und mit der auf dem Bus empfangenen Prüfsumme verglichen. Jegliche Unstimmigkeit in der Prüfsumme bringt den die Prüfsumme empfangenden Knoten dazu ein KNACK zu senden und die in Bearbeitung befindliche Nachricht zu beenden.
  • Empfang eines NACK innerhalb eines Nachrichten-Rahmenformats durch irgendeinen Empfänger bewirkt, daß die in Bearbeitung befindliche Nachricht abgebrochen und nicht empfangen wird. Empfang eines NACK durch irgendeinen Sender bringt die Nachrichtenübertragung dazu abzubrechen. Übertragene Nachrichten werden 10 mal erneut versucht, bevor der Übertragungsversuch aufgegeben wird. Nachrichten in diesem Protokoll besitzen keine Priorisierung. Der erste Benachrichtigungsversuch wird mit einer minimalen Verzögerung von 51 Bitdauern seit der vorigen Nachricht übertragen. Nachfolgenden Versuchen wird eine zufällige Verzögerung von zwischen 0 bis 15 Bitdauern gegeben, um zu versuchen Kollisionsereignisse zu minimieren, wenn zwei oder mehr Knoten um Zugriff auf das Netzwerk wetteifern.
  • Wenn nur ein Knoten einen Fehler detektiert und ein NACK sendet, so interpretieren andere Knoten das erste NACK als einen Fehler und senden in Reaktion ein NACK. Um zu verhindern das NACKs endlos zwischen Knoten „hin- und hergespielt" werden, ist die Übertragung eines NACK durch jeden Knoten im Netzwerk auf eine KNACK-Übertragung pro Nachrichtenereignis beschränkt. Zusätzlich behält jeder Knoten einen Fehlerzähler bei, welcher jedesmal stufenweise erhöht wird wenn ein NACK gesendet wird, und jedes mal stufenweise verringert wird wenn eine Nachricht erfolgreich empfangen wird. Erreicht der Fehlerzähler eine vorherbestimmte Grenze, so wird der Knoten aus dem Bus genommen und ihm nicht erlaubt zu kommunizieren, bis der Mikrocontroller den Softwaretreiber erneut initialisiert hat. Dies geschieht, um fehlerhafte Knoten auf dem Bus daran zu hindern die Kommunikation auf dem Bus endlos zu unterbrechen.
  • Zusätzlich zu Kollisionsdetektion und -beilegung werden alle hierin beschriebenen Mechanismen außerdem benutzt um die Effekte externen Rauschens zu detektieren, sowohl global auf dem Bus (allen Knoten gemein) und/oder lokal an einem einzelnen Empfänger oder Empfängern. Im gleichen Sinne wie Datenkollisionen auf dem Bus Nachrichtenverstümmelungen verursachen können, können auch geleitete und abgestrahlte Rauschquellen Nachrichten verstümmeln. Alle fünf oben für Sender und Empfänger beschriebenen Nachrichtenverstümmelungs-Detektionsmechanismen finden auch auf Rauschverstümmelung von Nachrichten Answendung. Detektion einer rauschinduzierten Unstimmigkeit zwischen einem übertragenen und empfangenen Byte durch den Sender, und durch Empfänger detektierte Nachrichtenverstümmelungen, einschließlich Rahmenformat-Fehler; Nachrichtenlängen-Fehler und Prüfsummen-Fehler, resultieren alle in der Übertragung eines NACK durch den Knoten oder die Knoten der/die den Fehler detetiert/detektieren, und im Abbruck der in Verarbeitung befindlichen Nachricht für alle Knoten in dem Netzwerk.
  • Die Software-Zustandsmaschine des Senders/Empfängers ist in 7 gezeigt. Die Zustandsmaschine reagiert auf die Hardwarekomponenten des Mokrocontrollers einschließlich des UART, der Flankendetektions-Schnittstelle und des Zeitgebers. Die möglichen Zustände der Zustandsmaschine sind ein Zustand Idle 30; eine Zustand Wait_Format 32; einen Zustand Wait_Checksum 34; einen Zustand Wait_RxNACK 36; einen Zustand Wait_TxNACK 38; einen Zustand Drive_Break 40; und einen Zustand Wait_Break 42. Eine Beschreibung der Zustände folgt.
  • Idle
  • Der Zustand Idle 30 entspricht fehlender Aktivität auf dem Bus für eine minimale Zeitdauer, „Max_Idle". Die Bedeutung dieses Leerlaufzustands ist es, daß der Versuch der Nachrichtenübertragung sofort beginnt, wenn eine Nachrichtenübertragung durch die Anwendung angefordert wird. Zusätzlich werden während des Leerlaufzustands unter Verwendung der maximalen Periode des Zeitgebers 20 wiederholt Zeitgeber-Unterbrechungen terminiert, um zu bestimmen wann eine Dauer von 1 Sekunde ohne jegliche Busaktivität verstrichen ist. Die Bedeutung der Zeitdauer von 1 Sekunde ist es „schlafende" Anwendungen zu informieren, das heißt Anwendungen welche in einem Zustand mit niedrigem Dauerstrom eingeschaltet bleiben, während der Zündschalter ausgeschaltet ist, um in einen Ruhemodus einzutreten. Wenn die Anwendung den UBP-Treibercode aktiviert, wird die UBP-Zustandsmaschine in den Leerlaufzustand versetzt.
  • Wait_Format
  • Der Zustand Wait_Format 32 ist ein Zwischenzustand zwischen dem Abschluß einer Nachricht auf dem Bus und dem Leerlaufzustand. Knoten können versuchen während des Zustands Wait_Format zu senden. Die Zeit, zu welcher ein Knoten seinen Sendeversuch beginnt, während man sich in diesem Zustand befindet, muß relativ zu einer Zeitgeber-Referenz terminiert werden, die zuletzt bei Empfang des Prüfsummen-Bytes der vorigen Nachricht auf dem Bus geschaffen wurde. Die Minimalzeit die ein Knoten warten muß, um von der Zeitgeber-Referenz ausgehend zu übertragen, ist ein Intervall „Min_TWI", welches das minimale Übertragungs-Warteintervall ist. Dieses Intervall ist definiert um zu garantieren daß alle Knoten auf dem Bus in den Zustand Wait_Format fortgeschritten sind und bereit sind das erste Byte einer Nachricht zu empfangen. Dieses Minimalintervall muß die zulässige Ansammlung von Anwendungsunterbrechungs-Latenzzeiten für jeden Knoten auf dem Bus im schlimmsten Fall in Betracht ziehen, ebenso wie mit jedem Knoten auf dem Bus in Zusammenhang stehende Oszillatortoleranzen im schlimmsten Fall.
  • Wait_Checksum
  • Der Zustand Wait_Checksum 34 ist der Zustand, in welchem die verbleibenden Bytes in der Nachricht bis zu und einschließlich des Prüfsummen-Bytes durch einen Knoten empfangen werden. Wenn ein Knoten ein Sender ist, so prüft der Knoten während er sich in diesem Zustand befindet einfach ein empfangenes Byte, um sicherzustellen daß es das gleiche Byte ist wie das zuvor übertragene. Jegliche Unstimmigkeit bewirkt die Erzeugung eines Unterbrechungssignals. Ist ein Knoten ein Empfänger, so schließt das erste Byte der empfangenen Nachricht, das Formatbyte, einen Datenlängen-Code ein, und so ist ein Empfänger in der Lage zu bestimmen wie viele Nachrichtenbytes zu empfangen sind, bevor ein empfangenes Byte als Prüfsummen-Byte zu identifizieren ist. Während jede Nachricht empfangen wird, wird ein Prüfsummen-Byte berechnet. Ist das Prüfsummen-Byte empfangen, so wird es mit der berechneten Prüfsumme verglichen. Jegliche Unstimmigkeit resultiert in der Übertragung eines Unterbrechungs- oder NACK-Signals (Negative ACKnowledgement).
  • Auf jeden Empfang eines Nachrichtenbytes hin terminiert jeder Knoten eine Zeitgeber-Unterbrechung für 20 Bitdauern ab jener Zeit, zu der das Byte empfangen wird. Wenn der Sender und der Empfänger beide richtig funktionieren und wenn die Unterbrechungs-Latenzanforderung sowohl für den Sender wie auch den Empfänger auf dem Bus erfüllt wird, dann sollte das nächste übertragene Byte auf dem Bus innerhalb von 20 Bitdauern empfangen werden. Dieser Etat von 20 Bitdauern schließt ein Maximum von 7 Bitdauern als zulässige Unterbrechungstlatenz ein, einen Etat von 3 Bitdauern um die empfangene Unterbrechung zu verarbeiten, und die Zeichenlänge von 10 Biteinheiten jedes UBP-Zeichens. Wenn eine Zeitgeber-Unterbrechung auftritt bevor ein erwartetes Byte empfangen wird, wird eine Fehlerbedingung interpretiert und ein Unterbrechungssignal gesendet.
  • Wait_RxNACK
  • Der Zustand Wait_RxNACK 36 ist der nächste Zustand, der nach erfolgreichem Empfang des Prüfsummen-Bytes definiert ist. Nachdem das Prüfsummen-Byte empfangen ist wird eine Zeitgeber-Unterbrechung für 20 Bitdauern ab jener Zeit terminiert, zu der das Prüfsummen-Byte empfangen wurde. Der Zweck dieses Zustands ist es die Möglichkeit zu erlauben, daß das Formatbyte, und spezieller der in dem Formatbyte eingeschlossene Datenlängen-Code durch Rauschen oder durch eine Kollision verstümmelt wurde. Erwartet ein Empfänger in einer Nachricht mehr Bytes als der Sender überträgt, so muß der Zeitgeber-Unterbrechung von 20 Bitdauern ausreichend Zeit gelassen werden um aufzutreten, und dem empfangenden Knoten um ein Unterbrechungssignal zu senden und es durch den Sender rechtzeitig erkennen zu lassen, um die Nachricht erneut zu senden. Das Zeitintervall von 20 Bitlängen zieht die Ansammlung maximal zulässiger Unterbrechungs-Latenzzeiten für den schlimmsten Fall ebenso in Betracht wie Oszillatortoleranzen im schlimmsten Fall.
  • Verstümmelung des Datenlängen-Codes durch Rauschen oder durch eine Kollision auf dem Bus kann einen Empfänger auch dazu bringen weniger Bytes zu erwarten als tatsächlich durch einen Sender übertragen werden. Während dieses Zustandes erwartet ein Empfänger keinerlei empfangene Bytes, und so wird ein Unterbrechungssignal versandt und die empfangene Nachricht wird ignoriert, wenn während dieses Zustands ein Byte empfangen wird. Unter normalen Bedingungen wird während dieses Zustands kein Byte empfangen, und die Zeitgeber-Unterbrechung tritt wie terminiert 20 Bitdauern nach Empfang des Prüfsummen-Bytes auf. Wenn alle anderen Nachrichtenprüfungen richtig befriedigt wurden, bewirkt die Zeitgeber-Unterbrechung, welche während dieses Zustandes auftritt, daß die empfangene Nachricht angenommen und an die Wirtsanwendung weitergegeben wird.
  • Wait_TxNACK
  • Der Zustand Wait_TxNACK 38 läßt ausreichend Zeit zu, damit durch empfangende Knoten gesendete Unterbrechungssignale durch den sendenden Knoten empfangen und erkannt werden, bevor er eine Nachricht für erfolgreich übertragen erklärt. Empfangende Knoten können eine Unterbrechung nur bis und einschließlich des Zustands Wait_RxNACK übertragen. Im Zustand Wait_TxNACK haben Empfänger empfangene Nachrichten bereits für gültig erklärt, und so wird der Empfang jeglichen Bytes, ob gültig oder mit einem Rahmenfehler, durch den empfangenden Knoten einfach ignoriert. Empfängt ein übertragender Knoten jedoch während dieses Zustandes ein NACK, was möglicherweise durch einen Empfänger in seinem Zustand Wait_RxNACK eingeleitet wurde, durch den Sender jedoch bis zu seinem Zustand Wait_TxNACK nicht empfangen wird, so nimmt der Sender an daß die Nachricht nicht erfolgreich empfangen wurde und überträgt die Nachricht erneut.
  • Es sollte bemerkt werden daß es im dem Fall von mehreren Empfängern einer gegebenen Nachricht für einige Empfänger möglich ist eine Nachricht als erfolgreich empfangen zu deklarieren, wohingegen andere Empfänger dies nicht tun und eine Unterbrechung senden, was den Sender dazu zwingt die Nachricht erneut zu übertragen.
  • Neuübertragung der Nachricht impliziert, daß einige Empfänger eine gegebene Nachricht mehr als einmal erhalten. Aus diesem Grund können Nachrichten, welche „Relativbefehle" einschließen, wie etwa stufenweise Zunahme oder Abnahme, in unterschiedlichen Empfängern unterschiedliche Ergebnisse erzeugen und sollten vermieden werden, besonders für Nachrichten mit mehreren Empfängern. Eine grundlegende Designvoraussetzung in der Definition von UBP ist es, daß ein Sender niemals annimmt er habe eine Nachricht erfolgreich übertragen, wenn sie tatsächlich nicht erfolgreich durch einen Empfänger empfangen wurde, d.h. daß er keine empfangenen Nachrichten verpaßt. Es ist für den Empfänger jedoch akzeptabel die gleiche Nachricht mehr als einmal zu empfangen.
  • Es gibt in UBP nur zwei Ereignisse, welche Übergänge von einem UBP-Zustand in die anderen verursachen: 1) eine UART-Empfangsunterbrechung und 2) eine Zeitgeber-Unterbrechung. UBP speist die Empfangseingabe des physischen Schichttransceivers 22 zu einem Flakendetektions-Eingang; diese Eingabe wird benutzt um vor Übertragung eines Bytes auf Busaktivität zu prüfen, steht aber nicht mit einer Unterbrechung in Zusammenhang. Damit das Zustandsübergang-Diagramm als umfassend betrachtet wird, muß das Auftreten jedes dieser beiden Ereignisse für jeden und alle Zustände betrachtet werden.
  • Das in 7 gezeigte UBP-Zustandsdiagramm schließt Zustände und Übergänge ein, welche als „normal" betrachtet werden, d.h. die mit erfolgreicher Nachrichtenübertragung und erfolgreichem Nachrichtenempfang in Zusammenhang stehen; ebenso wie „Fehler"-Zustände und Übergänge, welche als ein Ergebnis von Datenkollisionen, Rauschen, oder Unterbrechungslatenzen der Wirtsanwendung auftreten, welche das für erfolgreiche Implementierung von UBP zugelassene Maximum übersteigen. In dem Diagramm von 7 werden die Zustandsübergänge, die mit durchgezogenen Linien gezeigt sind, als Wege betrachtet, welche für normale Kommunikation gekreuzt werden; und die Zustandsübergänge welche als ein Ergebnis von Fehlermodi auftreten sind als gestrichelte Linien gezeigt. Das Folgende ist eine Beschreibung aller möglichen Zustandsübergänge welche auftreten können, und eine Beschreibung des Qualifizierungsereignisses und der -bedingungen der als Ergebnis des speziellen Zustandsübergangs unternommenen Aktionen. Normale Wege A. Initialisierung
    Gegenwärtiger Zustand: Undefiniert
    Ereignis: Initialisierung durch Anwendung (Aufrufen von „nadinit")
    Nächster Zustand: Leerlauf
    Aktionen: Terminiere Zeitgeber-Unterbrechung für Maximalverzögerung
    B. Leerlaufunterbrechung im Leerlaufzustand
    Gegenwärtiger Zustand: Leerlauf
    Ereignis: Zeitgeber-Unterbrechung
    Nächster Zustand: Leerlauf
    Aktionen: Lösche Zeitgeber-Unterbrechung
    WENN (Nachricht wartet auf Übertragung)
    WENN (nicht an Fehlergrenze)
    WENN (Flankendetektion nicht gesetzt)
    WENN (Wiederholungsversuch<Wiederholungsgrenze) Übertrage das Formatbyte Initialisiere die Übertragungs-Prüfsumme Setze Merker „Übertrage gegenwärtige Nachricht"
    SONST
    Berichte erreichte Wiederholungsgrenze an Anwendung
    SONST
    Setze Zeitgeber-Unterbrechung auf gegenwärtige Zeit Setze Zeitgeber-Unterbrechung für 10 Bitdauern ab der gegenwärtigen Zeit
    SONST
    WENN (Leerlauf-Zeitgeber > 1 Sekunde) Setze Merker „Leerlauf für 1 Sekunde"
    SONST
    Setze Zeitgeber für Maximalverzögerung
    C. Gültiges Formatbyte im Leerlaufzustand empfangen
    Gegenwärtiger Zustand: Leerlauf
    Ereignis: gültiges Formatbyte empfangen
    Nächster Zustand: Wait_Checksum
    Aktionen: Setze Zeitgeberreferen auf gegenwärtige Zeit Lösche den Eingangserfassungs-Merker
    WENN (Übertrage gegenwärtige Nachricht)
    WENN (Empfangenes Byte = übertragenes Formatbyte)
    UND Eingangserfassungs-Merker gelöscht Übertrage Zielbyte Erhöhe Zeiger auf nächstes zu übertragendes Byte Addiere Zielbyte zu Übertragungs-Prüfsumme
    SONST
    Speichere empfangenes Formatbyte Initialisiere empfangene Prüfsumme Setze Zeitgeber-Unterbrechung für 20 Bitdauern vom Zeitgeber-Bezug
    D. Gültiges Nachrichtenbyte (nicht die Prüfsumme) im Status Wait_Checksum State empfangen
    Gegenwärtiger Zustand: Wait_Checksum
    Ereignis: gültiges Nachrichtenbyte empfangen
    Nächster Zustand: Wait_Checksum
    Aktionen: Setze Zeitgeber-Referenz auf gegenwärtige Zeit Lösche den Eingangserfassungs-Merker
    WENN (Übertragung gegenwärtiger Nachricht
    WENN (empfangenes Byte = letztes Byte übertragen UND Eingangserfassungs-Merker gelöscht
    WENN (nächstes zu übertragendes Byte ist ein Nachrichtenbyte) Übertrage nächstes Nachrichtenbyte Erhöhe Zeiger stufenweise auf das nächste zu übertragende Byte Addiere Byte zur Übertragungs-Prüfsumme
    SONST
    Übertrage das Prüfsummen-Byte
    SONST
    Speichere empfangenes Byte Frische empfangene Prüfsumme auf Setze Zeitgeber-Unterbrechung auf 20 Bitdauern vom Zeitgeber-Bezug
    E. Gültiges Prüfsummen-Byte in Zustand Wait_Checksum empfangen
    Gegenwärtiger Zustand: Wait_Checksum
    Ereignis: gültiges Nachrichtenbyte empfangen
    Nächster Zustand: Wait_RxNACK
    Aktionen: Setze Zeitgeber-Referenz auf gegenwärtige Zeit Lösche den Eingabe-Erfassungsmerker Setze Zeitgeber-Unterbrechung auf 20 Bitdauern vom Zeitgeber-Bezug Verringere den Fehlerzähler stufenweise um 32
    F. Zeitgeber-Unterbrechung während des Zustands Wait_RxNAKC
    Gegenwärtiger Zustand: Wait_RXNACK
    Ereignis: Zeitgeber-Unterbrechung
    Nächster Zustand: Wait_TxNACK
    Aktionen: Lösche den Eingabe-Erfassungsmerker
    WENN (keine gegenwärtige Nachricht wird übertragen) Übergebe empfangene Nachricht an Anwendung Setze Zeitgeber-Unterbrechung auf 51 Bitdauern von der Zeitgeberreferenz
    G. Zeiteber-Unterbrechung während des Zustands Wait_TxNACK
    Gegenwärtiger Zustand: Wait_TxNACK
    Ereignis: Zeitgeber-Unterbrechung
    Nächster Zustand: Wait_Format
    Aktionen: Lösche den Eingangserfassungs-Merker
    Wenn (Übertragung gegenwärtiger Nachricht) Berichte Nachricht Tx vollständig Setze Zeitgeber-Unterbrechung für Max_Idle von Zeitgeber-Referenz
    SONST
    WENN (Nachricht wartet auf Übertragung)
    WENN (Wiederholungsgrenze nicht erreicht) Terminiere nächsten Übertragungsversuch
    SONST
    Setze Zeitgeber-Unterbrechung für Max_Idle von Zeitgeber-Referenz
    SONST
    Setze Zeitgeber-Unterbrechung für Max_Idle von Zeitgeber-Referenz
    H. Zeitgeber-Unterbrechung während in Zustand Wait_Format UND auf Übertragung wartende Nachricht
    Gegenwärtiger Zustand: Wait_Format
    Ereignis: Zeitgeber-Unterbrechung UND ausstehende Nachrichtenübertragung
    Nächster Zustand: Wait_Format
    Aktionen: WENN (nicht an Fehlergrenze)
    WENN (Flankendetektion nicht gesetzt)
    WENN (Wiederholungsversuch < Wiederholungsgrenze) Übertrage das Formatbyte Initialisiere die Übertragungs-Prüfsumme Setze Merker „Übertrage gegenwärtige Nachricht"
    SONST
    Berichte Wiederholungsgrenze erreicht an Anwendung
    SONST
    Setze Zeitgeber-Referens auf gegenwärtige Zeit Setze Zeitgeber-Unterbrechung für 10 Bitdauern von der gegenwärtigen Zeit
    I. Zeitgeber-Unterbrechung während in zustand Wait_Format UND keine auf Übertragung wartende Nachricht
    Gegenwärtiger Zustand: Wait_Format
    Ereignis: Zeitgeber-Unterbrechung UND keine ausstehende Nachrichtenübertragung
    Nächster Zustand: Leerlauf
    Aktionen: Lösche Schlummer-Zeitgeber Setze nächste Zeitgeber-Unterbrechung für maximale Zeitgeber-Periode
    J. Gültiges Formatbyte empfangen während in Zustand Wait_Format
    Gegenwärtiger Zustand: Wait_Format
    Ereignis: gültiges Formatbyte empfangen
    Nächster Zustand: Wait_Checksum
    Aktionen: Setze Zeitgeber-Referenz auf gegenwärtige Zeit Lösche den Eingangs-Erfassungsmerker
    WENN (übertrage gegenwärtige Nachricht)
    WENN (empfanges Byte = Formatbyte übertragen UND Eingangserfassungs-Merker gelöscht) Übertrage Zielbyte Erhöhe Zeiger auf nächstes zu übertragendes Byte
    stufenweise Addiere Zielbyte zu Übertragungs-Prüfsumme hinzu.
    SONST
    Speichere empfangenes Formatbyte Initialisiere empfangene Prüfsumme Setze Zeitgeber-Unterbrechung auf 20 Bitdauern von Zeitgeber-Referenz
    Fehlerwege K. Byte (ohne Rahmenfehler) empfangen während im Zustand Wait_Tx_NACK
    Gegenwärtiger Zustand: Wait_TxKNACK
    Ereignis: Byte (ohne Rahmenfehler) empfangen, während im Zustand Wait_Tx_NACK
    Nächster Zustand: Wait_TxKNACK
    Aktionen: Lösche Eingangs-Erfassungsmerker
    L. Ungültiges Byte empfangen während im Leerlaufzustand
    Gegenwärtiger Zustand: Leerlauf
    Ereignis: Eine der folgenden Bedingungen schaft ein Ereignis eines ungültig empfangenen Bytes: 1. Das empfangene Byte weist einen Rahmenfehler auf 2. Dieser Knoten überträgt, und das empfangene Byte paßt nicht zu dem übertragenen Byte
    Nächster Zustand: Drive_Break
    Aktionen: Deaktiviere UART Treibe Tx-Pin passiv an Erhöhe den Fehlerzähler stufenweise
    WENN (Fehlerzähler bei 255) Setze Fehlergrenzen-Merker (verhindere Busübertragungen)
    SONST
    Treibe den Tx-Pin aktiv an (beginne Unterbrechungsübertragung) Setze Zeitgeber-Referenz auf gegenwärtige Zeit Setze Zeitgeber-Unterbrechung für 10 Bitdauern von
    der Zeitgeber-Referenz
    WENN (übertrage gegenwärtige Nachricht) Stoppe Übertragung
    M. Fehlerereignis während im Zustand Wait_Checksum
    Gegenwärtiger Zustand: Wait_Checksum
    Ereignis: Jede der folgenden Bedingungen stellt ein Fehlerereignis dar, welches dieses verursacht: Übergang: 1. Ungültiges Byte (mit Rahmenfehler) empfangen; 2. Ungültige Prüfsumme empfangen (berechnete Prüfsumme paßt nicht zur empfangenen Prüfsumme); 3. Zeitgeber-Unterbrechung (deutet abgelaufene Zeit an, während auf ein Byte gewartet wird); 4. Wenn übertragen wird, paßt empfangenes Byte nicht zu übertragenem Byte.
    Nächster Zustand: Drive_Break
    Aktionen: Deaktiviere UART Treibe Tx-Pin passiv an Erhöhe den Fehlerzähler 255 stufenweise
    WENN (Fehlerzähler bei 255) Setze Fehlergrenzen-Merker (hindert Busübertragung)
    SONST
    Treibe Tx-Pin aktiv an (starte Unterbrechungsübertragung Setze Zeitgeber-Referenz auf gegenwärtige Zeit Setze Zeitgeber-Unterbrechung auf 10 Bitdauern von der Zeitgeber-Referenz
    WENN (übertrage gegenwärtige Nachricht) Stoppe Übertragung
    N. Byte empfangen (mit oder ohne Rahmenfehler) während im Zustand Wait_RxNACK
    Gegenwärtiger Zustand: Wait_RxNACK
    Ereignis: Byte empfangen (mit oder ohne Rahmenfehler)
    Nächster Zustand: Drive_Break
    Aktionen: Deaktiviere UART Treibe Tx-Pin passiv an Erhöhe den Fehlerzähler 255 stufenweise
    WENN (Fehlerzähler bei 255) Setze Fehlergrenzen-Merker (hindert Busübertragung)
    SONST
    Treibe Tx-Pin aktiv an (starte Unterbrechungsübertragung Setze Zeitgeber-Referenz auf gegenwärtige Zeit Setze Zeitgeber-Unterbrechung auf 10 Bitdauern von der Zeitgeber-Referenz
    WENN (übertrage gegenwärtige Nachricht) Stoppe Übertragung
    O. Ungültiges Byte empfangen (mit Rahmenfehler) während im Zustand Tx_NACK
    Gegenwärtiger Status: Wait_TxNACK
    Ereignis: Byte empfangen (mit Rahmenfehler)
    Nächster Zustand: Drive_Break
    Aktionen: Deaktiviere UART Treibe Tx-Pin passiv an Erhöhe den Fehlerzähler 255 stufenweise
    WENN (Fehlerzähler bei 255) Setze Fehlergrenzen-Merker (hindert Busübertragung)
    SONST
    Treibe Tx-Pin aktiv an (starte Unterbrechungsübertragung Setze Zeitgeber-Referenz auf gegenwärtige Zeit Setze Zeitgeber-Unterbrechung auf 10 Bitdauern von der Zeitgeber-Referenz
    WENN (übertrage gegenwärtige Nachricht) Stoppe Übertragung
    P. Ungültiges Byte empfangen während im Zustand Wait_Format
    Gegenwärtiger Zustand: Wait_Format
    Ereignis: Eine der folgenden Bedingungen schaft ein Ereignis eines
    ungültig empfangenen Bytes: Das empfangene Byte weist einen Rahmenfehler auf Dieser Knoten überträgt, und das empfangene Byte paßt nicht zu dem übertragenen Byte
    Nächster Zustand: Drive_Break
    Aktionen: Deaktiviere UART Treibe Tx-Pin passiv an Erhöhe den Fehlerzähler stufenweise
    WENN (Fehlerzähler bei 255) Setze Fehlergrenzen-Merker (verhindere Busübertragungen)
    SONST
    Treibe den Tx-Pin aktiv an (beginne Unterbrechungsübertragung) Setze Zeitgeber-Referenz auf gegenwärtige Zeit Setze Zeitgeber-Unterbrechung für 10 Bitdauern von der Zeitgeber-Referenz
    WENN (übertrage gegenwärtige Nachricht) Stoppe Übertragung
    Q. Zeitgeber-Unterbrechung während in Zustand Drive_Break
    Gegenwärtiger Zustand: Drive_Break
    Ereignis: Zeitgeber-Unterbrechung
    Nächster Zustand: Wait_Break
    Aktionen: Lösche Eingangs-Erfassungsmerker Treibe Tx-Pin passiv an (Stoppe Unterbrechungsübertragung) Initialisiere den UART erneut
    Setze Zeitgeber-Unterbrechung für 20 Bitdauern von der Zeitgeber Referenz
    R. Zeitgeber-Unterbrechung während in Zustand Wait_Break
    Gegenwärtiger Zustand: Wait_Break
    Ereignis: Zeitgeber-Unterbrechung
    Nächster Zustand: Wait_Format
    Aktionen: Ziehe 20 Bitdauern von der Zeitgeber-Referenz ab, um die nächsten Übertragungsversuche vorzuziehen
    Lösche den Eingangs-Erfassungsmerker
    WENN (Nachricht wartet auf Übertragung)
    WENN (Wiederholungsgrenze nicht erreicht) Terminiere nächsten Übertragungsversuch
    SONST
    Setze Zeitgeber-Unterbrechung für Max_Idle von Zeitgeber-Referenz
    SONST
    Setze Zeitgeber-Unterbrechung für Max_Idel von Zeigeber-Referenz
    S. Byte empfangfan während in Zustand Drive_Break
    Gegenwärtiger Zustand: Drive_Break
    Ereignis: Byte empfangen
    Nächster Zustand: Drive_Break
    Aktionen: WENN (Byte weist Rahmenfehler auf) Erhöhe Fehlerzähler stufenweise
    T. Byte empfangen während in Zustand Wait_Break
    Gegenwärtiger Zustand: Wait_Break
    Ereignis: Byte empfangen
    Nächster Zustand: Wait_Break
    Aktionen: WENN (Byte weist Rahmenfehler auf) Erhöhe Fehlerzähler stufenweise
  • Beziehung zwischen Nachrichten-Wellenformen und UBP-Zuständen
  • Normale Kommunikation
  • Eine Wellenform einer UBP-Nachricht ist in 8 zusammen mit zusätzlichen diagnostischen Wellenformen gezeigt. In dieser Wellenform überträgt Knoten 1A und Knoten 2A und 2B empfangen die Sendung von Knoten 1A. Ein Puls, der anzeigt wo Knoten 1A seine Nachricht als erfolgreich übertragen erklärt, ist in den UBP-Treibercode eingeschlossen. Dieser Punkt tritt an der ansteigenden Flanke des Signals „TXOK1A" auf und entspricht dem Ende des Intervalls Wait_TxNACK des übertragenden Knotens. Die Zeit vom Ende des übertragenen Prüfsumme-Bytes bis zur ansteigenden Flanke von TXOK1A ist 5,413 ms, was ungefähr 51 Bitperioden bei 104μS pro Bitdauer bedeutet. Der Punkt an welchem Knoten 2A und 2B empfangene Nachrichten als gültig erklären tritt entsprechend an der aufsteigenden Flanke der Signale „RXOK2A" und „RXOK2B" auf. Die Zeit vom Ende der übertragenen Prüfsumme zum Ende des Zustands Wait_RxNACK beträgt 2,199mS, was ungefähr 20 Bitdauern bei 104μS pro Bitdauer bedeutet.
  • Fehlermodus-Betrieb
  • Den Fehler-Betriebsmodus des UBP's veranschaulichende Wellenformen sind in 9 gezeigt, die ein System veranschaulicht für welches es auf dem Bus 4 Knoten gibt; Knoten 1A, 1B, 2A und 2B. 4 zeigt die Wellenform des Bus („Bus") zusammen mit den aus dem Tx-Pin jedes der einzelnen Knoten des Systems herausgetriebenen und in den Übertragungspin der physischen Schicht dieses speziellen Knotens hinein getriebenen Logiksignalen (TXLGxx, wobei xx identifiziert welcher Knoten) zeigt. Für diesen speziellen physischen Schichttransceiver ist das Logikniveau am Eingang zum Transceiver (TXLGxx) invertiert, d.h. ein Zustand logischer Eins am Eingang erzeugt einen Zustand logischer Null am Ausgang. Das Signal BUS ist eine zusammengesetzte Wellenform der einzelnen Übertragungen jedes der Knoten auf dem Bus; derart, daß jedes durch irgendeinen einzelnen Knoten übertragenes, dominantes Signal jeden rezessiven Zustand auf dem Bus überschreibt.
  • In dem Beispiel von 9 versuchen zwei Knoten (1A und 1B) gleichzeitig zu übertragen, was in einer Kollision auf dem Bus resultiert. In diesem Fall übertragen beide Knoten das gleiche Formatbyte, und so ist keiner der Knoten auf dem Bus in der Lage irgendeine Unstimmigkeit zu detektieren; einschließlich der zwei Sender, welche jeder das Gleiche Byte empfangen das sie gesendet haben. Das zweite auf dem Bus übertragene Byte, das Zielbyte, ist für die beiden sendenden Knoten unterschiedlich, und die aufgrund der Kollision resultierende Wellenform auf dem Bus paßt weder zur Übertragung von Knoten 1A noch von 1B. Nach Empfang des zweiten Bytes detektieren beide Sender die Unstimmigkeit und senden ein Unterbrechungssignal (10 Bitdauern von dominatem Zustand). Das zweite Byte scheint den beiden anderen Empfängern auf dem Bus, den Knoten 2A und 2B, eine gültiges Byte zu sein. Als ein Ergebnis senden die beiden Empfänger ein Unterbrechungssignal nur als ein Ergebnis und in Folge der Unterbrechungssignale sendenden Knoten 1A und 1B.
  • Während ein Knoten sein Unterbrechungssignal sendet, befindet er sich im Zustand „Drive_Break". Nach vollständiger Übertragung der Unterbrechung befindet sich der Knoten für 10 zusätzliche Bitdauern im Zustand „Wait_Break". Man bemerke, daß in diesem Fall, wo die Empfänger keinen Fehler detektieren bis das Unterbrechungssignal durch die Sender gesendet wird, Zeitdauern vorhanden sind während welcher Sender und Empfänger auf dem Bus sich nicht in den gleichen Softwarezuständen befinden. Nachdem eine Unterbrechung abgeschlossen ist, „zieht" die UBP-Implementierung „vor" die Zeit, zu welcher der Knoten möglicherweise versuchen wird die nächste Nachricht zu übertragen, indem der Zeitgeber-Referenzwert angepaßt wird. Ein Knoten muß jedoch ausreichend lange warten um es allen anderen Knoten zu erlauben eine Unterbrechungssequenz abzuschließen und in den Zustand „Wait_Format" einzutreten; so daß sie in der Lage sind das erste Byte der nächsten Nachricht richtig zu empfangen. In diesem Fall muß Knoten 1A ausreichend lange warten nachdem er seine Unterbrechungssequenz abgeschlossen hat, um es den Empfängern – den Knoten 2A und 2B – zu erlauben Unterbrechungssequenzen abzuschließen und in den Zustand „Wait_Format" einzutreten.

Claims (10)

  1. Ein Verfahren der Peer-to-Peer-Kommunikation zwischen einer Mehrzahl von durch einen Bus (24) gekoppelten Reglern (10), wobei jeder Regler einen Empfänger und einen Sender (22) einschließt, und wobei dieses Verfahren eine Abfolge der folgenden Schritte durch einen dieser Mehrzahl von Regler umfaßt: Empfangen mindestens eines Teils einer aus mehreren Bytes bestehenden Nachricht, wobei mindestens ein Byte einen Zeichenrahmen umfaßt; Detektieren daß die Nachricht eine verstümmelte Version einer original unverstümmelten Nachricht ist; Übertragen eines negativen Quittiersignals in Reaktion auf die Detektierung dieser verstümmelten Version; dadurch gekennzeichnet daß: diese Peer-to-Peer-Kommunikation asynchron ist und dieses negative Quittiersignal den Bus dazu bringt für ein vorherbestimmtes Zeitintervall einen dominanten Zustand anzunehmen, um die in Gange befindliche Nachricht abzubrechen; dieses negative Quittiersignal ein Stopbit eines Zeichenrahmens überschreibt; dieses überschriebene Stopbit als ein Zeichenrahmen-Fehler detektiert wird, um den Empfang dieser verstümmelten Version durch einen anderen dieser Mehrzahl von Reglern (10) zu verhindern; und daß man den Bus (24) dazu bringt am Ende dieses Zeitintervalls einen rezessiven Zustand einzunehmen.
  2. Ein Verfahren gemäß Anspruch 1, in dem sowohl diese originale, unverstümmelte Nachricht wie auch die verstümmelte Version davon entsprechend von einem dieser Regler übertragen und empfangen wurden; Dieser Detektionsschritt durch Vergleichen der übertragenen und empfangenen Nachrichten auf irgendwelche Unstimmigkeiten verrichtet wird; und in dem die originale, unverstümmelte Nachricht erneut gesendet wird, nachdem der Bus diesen rezessiven Zustand annimmt.
  3. Ein Verfahren gemäß Anspruch 1, in dem diese originale, unverstümmelte Nachricht durch einen ersten Regler übertragen wurde, und diesen negative Quittiersignal durch einen zweiten Regler übertragen wurde.
  4. Ein Verfahren gemäß Anspruch 2, in dem dieser Zeichenrahmen zehn Bits lang ist und durch ein Stopbit in einem rezessiven Zustand abgeschlossen wird, und dieses negative Quittiersignal mindestens zehn Bits lang ist.
  5. Ein Verfahren gemäß Anspruch 3, in dem diese originale, unverstümmelte Nachricht ein Formatbyte einschließt das einen Datenlängen-Code beinhaltet, und dieser Detektionsschritt verrichtet wird indem man detektiert daß die Anzahl empfangener Bytes höher ist als die Datencode-Länge.
  6. Ein Verfahren gemäß Anspruch 3, in dem diese originale, unverstümmelte Nachricht ein Formatbyte einschließt das einen Datenlängen-Code beinhaltet, und dieser Detektionsschritt verrichtet wird indem man detektiert daß die Anzahl empfangener Bytes geringer ist als die Datencode-Länge.
  7. Ein Verfahren gemäß Anspruch 3, in dem diese originale, unverstümmelte Nachricht ein Prüfsummen-Byte einschließt, und dieser Detektionsschritt verrichtet wird in dem man detektiert daß dieses Prüfsummen-Byte ungültig ist.
  8. Ein Verfahren gemäß Anspruch 3, in dem diese originale, unverstümmelte Nachricht einen Kopf einschließt; ein Datenfeld aus einer vorherbestimmten Anzahl von Datenbytes; und ein Prüfsummen-Byte; wobei dieser Kopf ein Formatbyte, ein Zielbyte und ein Quelllbyte umfaßt.
  9. Ein Verfahren gemäß Anspruch 8, in dem bestimmte Bits dieses Formatbytes den Nachrichtentyp als eine funktionell adressierte Nachricht oder eine physisch adressierte Nachricht spezifizieren; und bestimmte andere Bits dieses Formatbytes die Anzahl von in der Nachricht zu übertragenden Datenbytes spezifizieren.
  10. Ein Verfahren gemäß Anspruch 9, in dem eine funktionell adressierte Nachricht zu empfangen ist, wenn das durch einen Knoten empfangen ist, wenn das durch einen Knoten empfangene Zielbyte zu einer vorherbestimmten Liste von für diesen Knoten definierten funktionalen Zielbytes paßt.
DE69921882T 1998-04-17 1999-04-19 Verfahren zur Entdeckung und Lösung von Datenkorruption in einem UART-basierten Kommunikationsnetzwerk Expired - Fee Related DE69921882T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62080 1998-04-17
US09/062,080 US6385210B1 (en) 1998-04-17 1998-04-17 Method for detecting and resolving data corruption in a UART based communication network

Publications (2)

Publication Number Publication Date
DE69921882D1 DE69921882D1 (de) 2004-12-23
DE69921882T2 true DE69921882T2 (de) 2005-11-24

Family

ID=22040098

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69921882T Expired - Fee Related DE69921882T2 (de) 1998-04-17 1999-04-19 Verfahren zur Entdeckung und Lösung von Datenkorruption in einem UART-basierten Kommunikationsnetzwerk

Country Status (3)

Country Link
US (1) US6385210B1 (de)
EP (1) EP0952706B1 (de)
DE (1) DE69921882T2 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19843810A1 (de) * 1998-09-24 2000-03-30 Philips Corp Intellectual Pty Datenbus
US6831925B1 (en) * 1999-04-06 2004-12-14 National Semiconductor Corporation Single wire interface with collision detection
GB2351884B (en) * 1999-04-10 2002-07-31 Peter Strong Data transmission method
US6625163B1 (en) * 1999-04-21 2003-09-23 Nortel Networks Ltd. Collision detection on a differential bus
FR2830956A1 (fr) * 2001-10-15 2003-04-18 St Microelectronics Sa Recepteur de donnees asynchrones comprenant des moyens de basculement en un mode veille
DE10152235B4 (de) * 2001-10-20 2015-01-08 Robert Bosch Gmbh Verfahren zum Erkennen von Fehlern bei der Datenübertragung innerhalb eines CAN-Controllers und ein CAN-Controller zur Durchführung dieses Verfahrens
EP1515237B1 (de) * 2003-09-04 2007-02-21 Siemens Aktiengesellschaft Schnittstelle für ein UART-basiertes Bussystem
US9270976B2 (en) * 2005-11-02 2016-02-23 Exelis Inc. Multi-user stereoscopic 3-D panoramic vision system and method
US8472448B2 (en) 2006-07-21 2013-06-25 Intel Corporation Wireless adaptive packet control message apparatus, systems, and methods
GB2475451B (en) * 2006-09-29 2011-06-22 Intel Corp Method and system to validate a write for a device on a serial bus
US8165160B2 (en) * 2006-09-29 2012-04-24 Intel Corporation Method and system to validate a write for a device on a serial bus
US8312347B2 (en) * 2007-05-04 2012-11-13 Leviton Manufacturing Co., Inc. Lighting control protocol
EP2117144A1 (de) * 2008-05-09 2009-11-11 Inventio Ag Masterloses Zeitmultiplexverfahren zur Übermittlung von Sicherheitszuständen
JP2010278537A (ja) * 2009-05-26 2010-12-09 Denso Corp 通信装置
JP6054735B2 (ja) * 2012-12-19 2016-12-27 株式会社デンソー トランシーバ、通信装置
DE102013218075A1 (de) * 2013-07-04 2015-01-08 Robert Bosch Gmbh Vorrichtung und Messverfahren zur Ermittlung der internen Verzögerungszeit einer CAN-Busanschlusseinheit
US9195341B2 (en) * 2014-02-14 2015-11-24 Texas Instruments Incorporated Touchscreen controller and method for charger noise reduction through noise shaping
US9246534B2 (en) 2014-02-19 2016-01-26 Texas Instruments Incorporated Controling Tx/Rx mode in serial half-duplex UART separately from host
CN111510257B (zh) * 2014-03-17 2023-06-30 交互数字专利控股公司 用于wifi的接收失败识别和修复的方法
FR3029661B1 (fr) * 2014-12-04 2016-12-09 Stmicroelectronics Rousset Procedes de transmission et de reception d'un signal binaire sur un lien serie, en particulier pour la detection de la vitesse de transmission, et dispositifs correspondants
US9843597B2 (en) * 2015-01-05 2017-12-12 International Business Machines Corporation Controller area network bus monitor
US9509445B2 (en) * 2015-01-27 2016-11-29 Infineon Technologies Ag Sensor interface that provides a long package CRC to improve functional safety
US10425268B2 (en) * 2015-06-23 2019-09-24 Microchip Technology Incorporated UART with line activity detector
US11144493B1 (en) 2018-05-02 2021-10-12 Ecosense Lighting Inc. Composite interface circuit
US20210323580A1 (en) * 2018-08-10 2021-10-21 Lg Electronics Inc. Method and terminal for receiving signal in wireless communication system
CN113014359B (zh) * 2021-04-15 2022-06-07 浙江奉天电子有限公司 一种基于uart的ipcl三方通信系统
CN114301732B (zh) * 2022-03-08 2022-06-10 深圳市驰普科达科技有限公司 实现总线通讯的电路、总线通讯系统及电源储能装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4063220A (en) * 1975-03-31 1977-12-13 Xerox Corporation Multipoint data communication system with collision detection
US4656475A (en) * 1979-10-30 1987-04-07 General Electric Company Method and apparatus for controlling distributed electrical loads
US4352103A (en) * 1980-01-24 1982-09-28 Forney Engineering Company Industrial control system
US4560985B1 (en) * 1982-05-07 1994-04-12 Digital Equipment Corp Dual-count, round-robin ditributed arbitration technique for serial buses
CA1251838A (en) * 1984-04-04 1989-03-28 Yukitsuna Furuya Packet transmission system
US4707828A (en) * 1984-09-11 1987-11-17 Ricoh Company, Ltd. Multiaccess communication system
DE3506118A1 (de) * 1985-02-22 1986-08-28 Robert Bosch Gmbh, 7000 Stuttgart Verfahren zum betreiben einer datenverarbeitungsanlage fuer kraftfahrzeuge
US4715031A (en) 1985-09-23 1987-12-22 Ford Motor Company Vehicular data transfer communication system
US4706082A (en) * 1986-02-24 1987-11-10 Chrysler Motors Corporation Serial data bus for intermodule data communications
US5265093A (en) * 1987-08-14 1993-11-23 Ericsson Ge Mobile Communications Inc. Hardware interface and protocol for a mobile radio transceiver
US5230044A (en) * 1990-07-02 1993-07-20 Digital Equipment Corporation Arbitration apparatus for shared bus
JP2700843B2 (ja) * 1991-12-10 1998-01-21 三菱電機株式会社 多重通信制御装置
US5523748A (en) * 1992-10-02 1996-06-04 Nec Corporation Method and apparatus for interrupting communication control units in an exclusive mode
JP3227850B2 (ja) * 1992-12-07 2001-11-12 ヤマハ株式会社 マルチアクセス型lan
US5311512A (en) 1992-12-14 1994-05-10 At&T Bell Laboratories Multiple-master digital communication technique utilizing a dedicated contention bus
EP0754375A4 (de) 1994-04-04 1999-01-20 Motorola Inc Verfahren und vorrichtung zur erkennung und verarbeitung von datenkollisionen in einem funkübertragungssystem
US5805586A (en) * 1995-05-02 1998-09-08 Motorola Inc. Method, device and data communication system for multilink polling
US6111888A (en) * 1997-05-27 2000-08-29 Micro Motion, Inc. Deterministic serial bus communication system

Also Published As

Publication number Publication date
EP0952706A3 (de) 2002-03-06
EP0952706B1 (de) 2004-11-17
US6385210B1 (en) 2002-05-07
DE69921882D1 (de) 2004-12-23
EP0952706A2 (de) 1999-10-27

Similar Documents

Publication Publication Date Title
DE69921882T2 (de) Verfahren zur Entdeckung und Lösung von Datenkorruption in einem UART-basierten Kommunikationsnetzwerk
DE69433866T2 (de) Verfahren zur Übertragung von Daten
DE3546683C3 (de) Verfahren zum Betreiben einer Datenverarbeitungsanlage
EP2283616B1 (de) Kommunikationssystem mit einem can-bus und verfahren zum betreiben eines solchen kommunikationssystems
EP1987642B1 (de) Gateway zum automatischen routen von nachrichten zwischen bussen
DE112008001599T5 (de) Kommunikationssystem für ein Fahrzeug, Kommunikationsvorrichtung für ein Fahrzeug und Kommunikationsverfahren für ein Fahrzeug
EP2090031B1 (de) Verfahren und anordnung zur kommunikation auf einem lin-bus
DE102019130502A1 (de) Fahrzeug und Verfahren für eine fahrzeuginterne Mitteilungsübertragung
DE102011122644B4 (de) Nachrichtenverlustverhinderung unter Verwendung eines Senderpuffers und Verkehrsgestaltung in durch ein Ereignis ausgelösten verteilten eingebetteten Echtzeitsystemen
WO2013045323A1 (de) Verfahren zum betreiben einer kommunikationsanordnung
DE102017123251A1 (de) Betriebsverfahren eines Kommunikationsknotens für selektives Aufwecken im Fahrzeugnetzwerk
DE102019201230A1 (de) Teilnehmerstation für ein serielles Bussystem und Verfahren zum Senden einer Nachricht in einem seriellen Bussystem
DE102021103064A1 (de) Kommunikationssystem
DE10246793B4 (de) Übertragungssteuervorrichtung, welche ein CAN-Protokoll verwendet
DE69737017T2 (de) Verwendung von Energiebursts in schnurlosen Netzwerken
DE69727921T2 (de) Verfahren und schnittsstellenschaltung für multiplex-kommunikation
DE102018203680A1 (de) Teilnehmerstation für ein serielles Bussystem und Verfahren zur Datenübertragung in einem seriellen Bussystem
DE4122084A1 (de) Verfahren zur informationsuebertragung in einem mehrere teilnehmer aufweisenden bussystem
DE60036121T2 (de) Hochgeschwindigkeitsverbindung für eingebettete Systeme in einem Rechnernetzwerk
DE4238488A1 (de)
DE102017222880B4 (de) Verfahren zur Bereitstellung von Informationen für die Lokalisierung von Fehlern in einem Kommunikationsnetzwerk eines Gerätes, entsprechend ausgelegte Busteilnehmerstation sowie Fahrzeug
DE102019205488A1 (de) Teilnehmerstation für ein serielles Bussystem und Verfahren zur Kommunikation in einem seriellen Bussystem
EP1642207B1 (de) Zuordnung von stationsadressen zu kommunikationsteilnehmern in einem bussystem
JP2995348B2 (ja) 多重伝送方法
BE1025127A1 (de) Kommunikationssystem zur seriellen Kommunikation zwischen Kommunikationsgeräten

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: FORD GLOBAL TECHNOLOGIES, LLC (N.D.GES.D. STAATES

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee