-
Hintergrund
-
Die
vorliegende Erfindung bezieht sich auf Kommunikationsnetze, beispielsweise
auf die Suche eines Slave-Knoten in einem solchen Kommunikationsnetz.
-
Entsprechend
der verschiedenen Anforderungen an Bandbreite, Komplexität und Kosten,
haben sich verschiedene Kommunikationssysteme herausgebildet, um
diese verschiedenen Anforderungen zu erfüllen.
-
Eindraht-Kommunikationsnetze
mit Eindraht-Schnittstellen (im Englischen als „single wire interface” SWI bezeichnet)
haben sich am Markt für
weniger komplexe Applikationen, bei denen eine geringe Anzahl von Anschlusskontakten
gewünscht
ist etabliert. Eindraht-Kommunikationsnetze unterstützen die
Anbindung einer Vielzahl von Slave-Knoten. Ein wichtiges Anwendungsfeld
bildet dabei die Automobilindustrie. In Automobilen werden beispielsweise
mehrere einfache Aktuatoren oder auch Sensoren als Slave-Knoten
in einem hierarchischen Eindraht-Kommunikationsnetz
durch einen gemeinsamen Master-Knoten gesteuert.
-
Der
Master-Knoten und die Slave-Knoten sind an die Eindraht-Verbindung bzw. an
das Eindraht-Bussystem angebunden. Dabei können neue Slave-Knoten jederzeit
an ein solches Eindraht-Kommunikationsnetz hinzugefügt werden
und angeschlossene Slave-Knoten entfernt werden oder auch zeitweilig
oder endgültig ausfallen
und ggf. ersetzt werden. Jeder dieser Slave-Knoten weist einen Speicher
auf, indem eine Kennung gespeichert ist, mit der der jeweilige Slave-Knoten
identifiziert werden kann.
-
Die
Kennung jedes Knoten bzw. Geräts
ist dabei, z. B. weltweit, einzigartig, und wird daher im Englischen
auch als „unique
ID (IDentifier)” bezeichnet.
Für den
Master-Knoten stellt sich damit die Aufgabe, mit den einzelnen Slawe-Knoten
zu kommunizieren, um festzustellen, welche Slawe-Knoten an das Eindraht-Kommunikationsnetz
angeschlossen sind und welche Kennung diese haben, um dann mit Ihnen
mittels ihrer einzigartigen Kennung beispielsweise gezielt kommunizieren
zu können.
-
Im
Folgenden wird anhand der 6 ein bekannter
Suchalgorithmus mittels binärer
Suche beschrieben, der verwendet wird, um eine Kennung bzw. eine
Adresse eines Slawe-Knotens zu bestimmen. Dabei basiert dieser binäre Suchalgorithmus
auf der im Folgenden kurz erläuterten
Befehlsliste:
- DISS: Starten des Kennungssuchalgorithmus;
- DIS0: Gerätekennungssuche „0”;
- DIS1: Gerätekennungssuche „1”;
- idptr: Zeiger zu interner Kennungsbitposition;
- active: Gerätestatus,
der „True” bzw. „Wahr” sein kann,
d. h. das Gerät
ist aktiv, oder „False” bzw. „Falsch” sein, d.
h. das Gerät
ist deaktiviert und antwortet nicht auf weitere Suchanfragen DIS0
bzw. DSI1;
- uid[x]: Matrix, das den Kennungsbitstrom enthält, wobei „x” die Auswahl
des gewünschten
Bits angibt.
- Assert_IRQ: Slawe-Gerät
antwortet mit einem Bestätigungssignal
IRQ (im Englischen auch als „Interrupt” bezeichnet);
- Sens_IRQ: wenn Master-Knoten, auch als „HOST” bezeichnet, ein Bestätigungssignal
IRQ von einem Slawe-Gerät
empfängt.
-
Der
entsprechende Suchalgorithmus, der von einem Slawe-Knoten bzw. Slawe-Gerät ausgeführt wird, lautet
wie folgt:
-
In
anderen Worten, wenn der Slave-Knoten den Befehl DISS zum Start
der Suche empfängt,
setzt er seinen Zeiger idptr auf den Wert N, wobei N die Anzahl
der Bits der Kennung bezeichnet, z. B. in 6: N = 4,
und geht in den aktiven Status. Wenn der Slave-Knoten den Befehl
DIS0 empfängt
und in einem aktiven Status ist, dekrementiert er den Zeiger idptr
und vergleicht den Wert, der in seinem Matrixfeld an der Stelle
des Zeigers gespeichert ist, mit dem Wert „0” und sendet ein Bestätigungssignal
IRQ, wenn dieser Wert gleich dem Wert „0” ist. Wenn der Wert nicht
gleich ist, geht der Slave-Knoten in den inaktiven Status über. Entsprechend verfährt der
Slave-Knoten, wenn
er den Befehl DIS1 empfängt
und in einem aktiven Status ist. In diesem Fall dekrementiert er
den Zeiger idptr und vergleicht den Wert des Matrixfeldes, das durch
den Zeiger definiert ist, mit dem Wert „1” und gibt ein Bestätigungssignal
IRQ aus, wenn der Wert dem Wert „1” entspricht. Ansonsten, geht
der Slave-Knoten in den inaktiven Zustand über.
-
6 zeigt
beispielhaft die Abfolge von Suchbefehlen DIS0 bzw. DIS1 bis ein
Master-Knoten die Adressen „0010” und „0110” (B = binäre Kennung)
findet. Während
dieser binären
Suche geht der Master-Knoten durch den binären Baum Zweig für Zweig,
um die entsprechende Kennung bzw. Adresse des Slave-Knotens zu finden.
Dabei geht der Master-Knoten beispielsweise so vor, dass er zuerst
nach der Adresse „0000” sucht,
dann nach der Adresse „0001”, dann
nach der Adresse „0010” usw. Dabei
geht der Master-Knoten Stelle für
Stelle vor, prüft
in einer ersten Iteration, ob ein Slave-Knoten mit dem Wert „0” an der
höchsten
Stelle (idptr = 3) aufweist, nur dies ist in 6 der Fall,
das heißt
die zwei Slave-Knoten antworten auf das erste DIS0 mit einem Bestätigungssignal
IRQ. Danach sendet der Master-Knoten ein zweites DIS0, auf das nun
nur der Slave-Knoten mit der Kennung „0010” mit dem Bestätigungssignal
IRQ antwortet. Da der zweite Slave-Knoten mit der Adresse „0110” an dieser
Stelle einen Wert „1” aufweist,
deaktiviert er sich, und wird auf keinen der folgenden Suchbefehle
des Master-Knoten mehr antworten, bis er von dem Master wieder aktiviert
wird. Der Master-Knoten sendet nun sein drittes DIS0. Da der Slave-Knoten
mit der Adresse „0010” jedoch
an der Stelle UID[1] keine „0”, sondern
eine „1” aufweist,
deaktiviert sich auch dieser Slave-Knoten. Der Master-Knoten empfängt somit
kein Bestätigungssignal
IRQ, und weiß somit,
dass kein Slave-Knoten mit der Adresse „000x” vorliegt, wobei x ein Platzhalter
für einen
der beiden binären
Werte „0” und „1” ist.
-
Damit
ist der erste Suchdurchlauf abgeschlossen und der Master-Knoten
beginnt einen neuen Suchdurchlauf, indem er das Suchstartkommando
DISS sendet, so dass sich alle Slave-Knoten wieder initialisieren, das
heißt,
ihren internen Zähler
auf den Wert N = 4 setzen und in den aktiven Status gehen. In diesem
zweiten Suchdurchlauf wiederholt sich für die ersten zwei Stellen UID[3]
und UID[2] der gleiche Befehls- bzw. Signalwechsel wie in dem ersten
Durchlauf. Als dritten Suchbefehl sendet der Master-Knoten nun jedoch
ein DIS1, erhält
von dem Slave-Knoten mit der Adresse „0010” ein Bestätigungssignal, wobei gleichzeitig
dieser Slave-Knoten aktiv für
die Fortführung
der Suche auf diesem Zweig bzw. Pfad bleibt. Als viertes Suchsignal
in diesem Suchdurchlauf sendet der Master-Knoten dann ein DIS0, erhält von dem
Slave-Knoten mit der Adresse „0010” ein Bestätigungssignal
und weiß nun,
da die Kennung nur vier Stellen hat, dass die Suche erfolgreich abge schlossen
ist, und ein Slawe-Knoten mit der Adresse „0010” bzw. Kennung an dem Eindrahtkommunikationsnetz
angeschlossen ist. Entsprechend fährt der Master-Knoten für alle anderen
möglichen
Kennungen fort, bis er alle Slawe-Knoten gefunden hat.
-
Dieses
Vorgehen führt
dazu, dass für
den Fall, dass die Kennungen eine große Zahl an Bits aufweisen, die
binäre
Suche sehr lange dauert. Angenommen N ist die Anzahl der Kennungsbits,
dann benötigt
der Master-Knoten, wenn er jeden Zweig des entsprechenden binären Baums
mit der Länge
N durchläuft,
2N Durchläufe. Wenn beispielsweise N
= 96 Bits ist, geht der Master-Knoten durch bis zu 79.228.162.514.264.337.593.543.950.336
Zweige durch, um alle Slawe-Knoten, die an der Eindrahtleitung angebunden
sind, zu finden. Typischerweise sind jedoch weniger Suchdurchläufe notwendig,
da nur eine geringe Anzahl von Slawe-Knoten an das Eindraht-Kommunikationsnetz
angeschlossen sind und so bei der Suche ganze Teilbäume wegfallen,
in denen sich kein Slave-Knoten
befindet.
-
Ausführungsbeispiele
des Verfahrens zum Suchen einer Kennung eines Slawe-Knoten in einem
Kommunikationsnetz, z. B. einem Eindraht-Kommunikationsnetz, und
des Master-Knoten und des Slawe-Knoten für ein solches Kommunikationsnetz
werden nachfolgend unter Bezugnahme auf beiliegende Zeichnungen
näher erläutert.
-
1A zeigt
ein Blockdiagramm eines ersten und dritten Ausführungsbeispiels eines Master-Knotens und
zumindest eines Slawe-Knotens, die durch ein Eindraht-Kommunikationsnetz
verbunden sind.
-
1B zeigt
ein Blockdiagramm eines zweiten und vierten Ausführungsbeispiels eines Master-Knotens
und zumindest eines Slawe-Knotens, die durch ein Eindraht-Kommunikationsnetz
verbunden sind.
-
2 zeigt
ein Ausführungsbeispiel
eines binären
Suchbaums gemäß einem
ersten und dritten Ausführungsbeispiel.
-
3 zeigt
ein Flussdiagramm eines Verfahren zum Suchen eines Slave-Knotens
mit unbekannter Kennung, das durch einen Master-Knoten eines ersten
Ausführungsbeispiels
durchgeführt
wird.
-
4 zeigt
ein Flussdiagramm eines Verfahrens zum Suchen eines Slave-Knotens
mit bekannter Kennung, das durch erstes Ausführungsbeispiel eines Master-Knotens durchgeführt wird.
-
5 zeigt
ein Flussdiagramm eines Verfahrens zum Suchen eines Slave-Knotens
mit bekannter Kennung, das durch ein zweites Ausführungsbeispiel
eines Master-Knotens
durchgeführt
wird.
-
6 zeigt
einen binären
Suchraum für
einen bekannten Suchalgorithmus, der durch einen Master-Knoten durchgeführt wird.
-
In
der vorliegenden Anmeldung werden für Objekte und Funktionseinheiten,
die gleiche oder ähnliche funktionelle
Eigenschaften aufweisen, gleiche Bezugszeichen verwendet.
-
Ausführungsbeispiele
des Verfahrens, des Master-Knotens und des Slave-Knotens werden
im Folgenden anhand eines Eindraht-Kommunikationsnetzes erläutert, sind
jedoch nicht auf diese beschränkt.
So können
alternative Ausführungsbeispiele
statt des einen Drahtes als Kommunikationsverbindung auch mehrdrahtige
Kommunikationsverbindungen oder andere Kommunikationsmedien als
Drähte,
z. B. Glasfasern oder Funk, aufweisen, um den Master-Knoten und
die Slave-Knoten miteinander zu verbinden.
-
Eindraht-Kommunikationsnetze
bzw. Eindraht-Kommunikationssysteme sind hierarchische Kommunikationssysteme,
bei denen ein Master-Knoten die Kommunikation steuert und einer
oder mehrere Slave-Knoten auf diese Befehle des Master-Knoten antworten,
beispielsweise, indem sie Daten senden oder Befehle bzw. Anfragen
des Master-Knotens bestätigen
oder nicht bestätigen.
Dabei können
die Slave-Knoten ausgebildet sein, um beispielsweise ein bestimmtes
Bestätigungssignal
zu senden, um eine Anfrage bzw. einen Befehl eines Master-Knoten
zu bestätigen,
und dieses bestimmte Bestätigungssignal
nicht zu senden, um dem Master-Knoten zu signalisieren, dass sie
die Anfrage bzw. den Befehl nicht bestätigen. Die Master-Knoten und die
Slave-Knoten sind über einen
einzelnen Draht miteinander verbunden.
-
Dabei
kann die Eindraht-Kommunikation darauf beruhen, dass an den einen
Draht grundsätzlich
ein hoher Spannungspegel (im Englischen auch als „high” bezeichnet)
angelegt wird, z. B. durch einen Strom oder eine Spannungsquelle,
und ein einziger Teilnehmer, Master-Knoten oder Slave-Knoten, durch
Anlegen eines niedrigen Pegels (im Englischen auch als „low” bezeichnet)
den Pegel der gesamten Leitung auf den niedrigen Pegel ziehen kann.
Ein Slave-Knoten kann dann ausgebildet sein, als Bestätigungssignal,
das im Englischen auch als Interrupt IRQ bezeichnet wird, diesen
niedrigen Pegel anzulegen, und zum „Nicht-Bestätigen” den Pegel
auf diesem hohen Pegel zu belassen.
-
In
diesem hierarchischen Kommunikationssystem kann der Master-Knoten
auch als Master-Gerät oder
kurz als Master bezeichnet bzw. als übergeordneter Knoten oder Steuer-Knoten
bezeichnet werden, und der Slave-Knoten auch als Slave-Gerät oder kurz
als Slave bezeichnet bzw. als untergeordneter Knoten bzw. gesteuerter
Knoten bezeichnet werden.
-
In
Bezug auf den Aktivitätsstatus
der Slave-Knoten, der kurz auch als Status oder Zustand bezeichnet wird,
werden auch der Begriffe „aktiv” bzw. „aktivieren” verwendet,
um auszudrü cken,
dass der Slave-Knoten einen aktiven Zustand aufweist bzw. sein Status
in den aktiven Status wechselt, und „inaktiv” bzw. „deaktivieren”, um auszudrücken, dass
der Slave-Knoten
einen inaktiven Zustand aufweist bzw. sein Status in den inaktiven
Status wechselt.
-
1A zeigt
ein Blockdiagramm eines ersten oder dritten Ausführungsbeispiels eines Master-Knotens 110,
und eines ersten oder dritten Ausführungsbeispiels eines Slave-Knotens 130,
die über
einen einzelnen Draht 102 eines Eindraht-Kommunikationsnetzes 100 verbunden
sind.
-
Das
Ausführungsbeispiel
des Masterknotens 110 weist einen Sender 112 und
einen Empfänger 114 auf,
die mit dem Draht 102 gekoppelt bzw. verbunden sind, sowie
eine Prozesseinheit 116 auf, die mit dem Sender 112 und
dem Empfänger 114 gekoppelt
ist, um von dem Empfänger 114 über den
Draht 102 empfangene Kommunikationssignale auszuwerten
bzw. verarbeiten zu können,
und mit dem Sender 112 gekoppelt ist, um diesen derart
zu steuern, dass dieser Befehle bzw. Kommandos über den Draht 102 an
einen oder mehrere Slave-Knoten sendet, die an dem Draht 102 angebunden
sind, um z. B. einen Suchalgorithmus zur Suche einer Kennung eines
Slave-Knotens durchzuführen.
-
Ferner
weist der Master-Knoten 110 einen Speicher 118 auf,
der mit der Prozesseinheit 116 gekoppelt ist, um beispielsweise
Informationen für
die Durchführung
eines Suchalgorithmus zu speichern.
-
Der
Slave-Knoten 130 weist einen Sender 132 und einen
Empfänger 134 auf,
die mit dem Draht 102 gekoppelt bzw. verbunden sind, um
Kommunikationssignale über
den Draht 102 zu senden bzw. zu empfangen, sowie eine Prozesseinheit 136 auf,
die mit dem Sender 132 und dem Empfänger 134 gekoppelt
ist, um von dem Empfänger über den
Draht 102 empfangene Kommunikationssignale auswerten bzw.
verarbeiten zu können
und den Sender derart zu steuern, dass dieser beispielsweise Antwortsignale auf
Befehle des Master-Knotens 110 über den Draht 102 senden
kann.
-
Ferner
weist der Slawe-Knoten 130 einen Speicher 138 auf,
der mit der Prozesseinheit 136 verbunden ist, um dort gespeicherte
Daten auszulesen und ggf. Daten dort abzulegen bzw. zu speichern.
Dabei ist der Speicher 138 ausgebildet, um eine Kennung
zu speichern, die eine eindeutige Identifizierung des Slawe-Knotens
in dem Eindraht-Kommunikationsnetz 100 ermöglicht.
Zum anderen ist der Speicher 138 ausgebildet, Informationen
für die
Durchführung
eines Such-Algorithmus bzw. Durchführung eines Slawe-Anteils des
Suchalgorithmus zu speichern, zum Beispiel einen Index oder Zeiger,
der eine aktuelle Position bzw. Stelle in der Kennung bei der Durchführung eines
Suchalgorithmus bestimmt. Dabei weist der Speicher 138 beispielsweise einen
nicht-flüchtigen
Speicheranteil auf, um die Kennung zu speichern, und einen flüchtigen
Speicheranteil, um beispielsweise den Index oder Zeiger bzw. Zeigerwert
und weitere Informationen wie den eigenen Aktivitätsstatus
zu speichern.
-
2 zeigt
einen beispielhaften binären
Suchbaum für
die Suche einer binären
Kennung mit 4 Stellen bzw. 4 Bits. Die Kennungen können die
Werte „0000” bis „1111” aufweisen,
wobei das linke Bit auch als höchstwertiges
Bit, im Englischen als „most
significant bit” (MSB)
bezeichnet, und das rechte Bit als niedrigstwertiges Bit, im Englischen
auch als „least
significant bit” (LSB)
bezeichnet, bezeichnet werden.
-
Typischerweise
erfolgt die Indexierung der Stellen des Kennworts, beginnend mit
dem Index 0 für
das niedrigstwertige Bit, der dann kontinuierlich ansteigen, typischerweise
um jeweils 1 pro Stelle erhöht,
mit dem höchsten
Index 3 bzw. N – 1,
endet.
-
Die
einzelnen Stellen einer Kennung können dann über den entsprechenden Index
adressiert bzw. bestimmt werden, wobei der Index als Zeiger auf
die entsprechende Stelle bzw. Position in der Kennung dient. Der
Speicher uid, der die Kennung speichert, ist oben in 2 zusammen
mit dem jeweiligen Index in eckigen Klammern eingezeichnet. Die
Pfeile 2 zeigen alle möglichen Zweige eines binären Suchbaums
an, der im Laufe des Suchverfahrens bzw. der Durchführung des
Suchalgorithmus durchlaufen werden kann. Dabei beginnt der Suchbaum
bzw. der Suchalgorithmus bei dem höchstwertigen Bit uid[3] und
prüft sukzessive,
das heißt,
Stelle für
Stelle, ob an dem Eindraht-Kommunikationsnetz 100 ein Slave-Knoten,
z. B. 130, 150, 170 angeschlossen ist,
der an der aktuellen oder nächsten
Stelle einen bestimmten binären
Wert aufweist.
-
Im
Folgenden werden Ausführungsbeispiele
des Verfahrens zum Suchen einer Kennung oder Teilkennung eines Slave-Knoten
in einem Eindraht-Kommunikationsnetz sowie Ausführungsbeispiele eines Master-Knotens
und eines Slave-Knotens in einem solchen Eindraht-Kommunikationsnetz
anhand der vierstelligen binären
Kennwörter
gemäß 2 beispielhaft
beschrieben.
-
Dabei
zeigt 2 einen binären
Suchbaum für
die 4-stellige Kennung, wobei ein erster Slave-Knoten 130 mit
der Kennung „0010” (B steht
für binär), ein
zweiter Slave-Knoten 150 mit der Kennung „0110”, sowie ein
dritter Slave-Knoten 170 mit der Kennung „0111” an dem
Eindraht-Kommunikationsnetz angeschlossen sind. Oben sind in 2 die
Stellen der Kennung, die im Englischen auch als Identifier bzw.
ID bezeichnet wird, mit ihren entsprechenden Indizes von 0 bis 3
eingezeichnet. Dabei wird in 2 der Teilbaum
für alle
Kennungen mit dem höchstwertigen
Bit „0”, wobei
der Teilbaum (siehe Pfeile) ausgehend von dem höchstwertigen Bit mit dem Index
3, siehe UID[3], hin zu den Blättern
des Suchbaums mit dem niedrigstwertigen Bit und dem Index 0, siehe
UID[0], eingezeichnet ist.
-
In
anderen Worten, 2 zeigt einen binären Suchbaum
für eine
Suche, bei der das höchstwertige Bit
als Startstelle bzw. der entsprechende Index als Startindex verwendet
wird, das niedrigstwertige Bit als Endstelle bzw. der entsprechende
Index als Endindex verwendet wird, und der Zeiger bzw. Index in
Suchrichtung von der Startstelle zu den Endstellen bzw. Blättern, um
eine Stelle nach rechts geschoben bzw. reduziert wird, das heißt, dekrementiert
wird. In alternativen Ausführungsbeispielen
kann der Index stattdessen inkrementiert werden.
-
Dabei
weist der Suchbaum Knoten und Pfade (siehe Pfeile) auf, wobei jeder
Pfad von der Startstelle zu einer Endstelle eine mögliche Kennung
eines Slave-Knoten repräsentiert,
wie in 2 dargestellt ist. Ein Knoten des Suchbaums stellt
dabei einen möglichen
binären
Wert an einer bestimmten Stelle der Kennung dar. Gemäß eines
Ausführungsbeispiels
wird während
der Suche der Suchbaum Stelle für
Stelle bzw. Knoten für
Knoten durchlaufen und pro Knoten geprüft, ob Slave-Knoten vorliegen,
die eine Kennung oder Teilkennung aufweisen, die durch den bis dahin
beschrittenen bzw. eingeschlagenen Pfad entsprechen.
-
Dabei
wird im Folgenden von „Einschlagen” im Sinne
von „einen
Pfad einschlagen” gesprochen,
wenn der Index dekrementiert wird und damit in Bezug auf den Suchbaum
gemäß 2 eine
Stelle nach rechts fortgeschritten wird, und von „Prüfen” gesprochen,
wenn ein Wert an einer Stelle der Kennung, die durch den Index definiert
ist, geprüft
wird. Dabei wird beim Prüfen
der Index nicht geändert.
-
Im
folgenden werden mögliche
Befehle eines Ausführungsbeispiels
anhand einer Befehlsliste näher erläutert:
- DISS
(Suchstart-Befehl) – Start
des Kennungssuchalgorithmus,
- DIP0 (Null-Prüf-Befehl) – Vergleichen
des Wertes des aktuellen Knotens bzw. der aktuellen Stelle mit dem
Bitwert ”0”
- DIP1 (Eins-Prüf-Befehl) – Vergleichen
des Wertes des aktuellen Knotens bzw. der aktuellen Stelle mit Bit „1”,
- DIE0 (Null-Einschlag-Befehl) – Einschlagen in den „0”-Knoten
bzw. der nächsten
Stelle mit dem Bit „0”,
- DIE1 (Eins-Einschlag-Befehl) – Einschlagen in den „1”-Knoten
bzw. der nächsten
Stelle mit dem Bit „1”,
- DI00 (kombinierter Null-Einschlag-Null-Prüf-Befehl) – kombiniert die Befehle DIE0
und DIP0,
- DI01 (kombinierter Null-Einschlag-Eins-Prüf-Befehl) – kombiniert die Befehle DIE0
und DIP1,
- DI10 (kombinierter Eins-Einschlag-Null-Prüf-Befehl) – kombiniert die Befehle DIE1
und DIP0,
- DI11 (kombinierter Eins-Einschlag-Eins-Prüf-Befehl) – kombiniert die Befehle DIE1
und DIP1,
- DIMM (Speicherbefehl) – Speichern
der aktuellen Suchposition und des Aktivitätsstatus,
- DIRC (Zurückrufbefehl) – Zurückrufen
bzw. Auslesen der gespeicherten aktuellen Suchposition und des gespeicherten
aktuellen Aktivitätstatus,
- DILC (Längenprüfbefehl) – Slave-Knoten
antwort mit Bestätigungssignal
IRQ, wenn der Suchprozess das letzte Bit erreicht hat.
-
Dabei
werden im Folgenden die folgenden Elemente bzw. Definitionen für einen
Beispielcode eines Ausführungsbeispiels
eines Suchverfahrens bzw. eines Suchalgorithmus verwendet:
- idptr:
Zeiger auf interne Kennungsbitposition, Index idptr_mem – gespeicherter
Zeiger auf interne Kennungsbitposition,
- uid[x]: Speicherfeld, das den Kennungsbitstrom vorhält, mit „x” als Index,
der das gewünschte
Bit auswählt bzw.
definiert,
- active: Gerätestatus
bzw. Aktivitätsstatus
des Slave-Knoten, der „True” sein kann,
wenn der Slave-Knoten aktiv ist, oder ”False” – sein kann, wenn der Slave-Knoten
deaktiviert ist und nicht auf weitere Prüfanfragen antwortet,
- active_mem: gespeicherter Status des Slawe-Knotens bzw. Slawe-Geräts,
- Assert_SWI_IRQ bzw. Assert_SWI_Interrupt: Slawe-Knoten antwortet
mit Bestätigungssignal
IRQ über
eine Drahtkommunikationsschnittstelle,
- Wait_SWI_IRQ bzw. Wait_SWI_IRQ: Warten auf Bestätigungssignal
IRQ auf der Eindrahtkommunikationsschnittstelle,
- device_id_length: Anzahl der Stellen der Kennung, auch als Kennungslänge bezeichnet.
-
Wobei
der Beispielcode wie folgt lautet:
-
Dabei
geht der Bereich des Index bzw. der Werte des Index idptr von „device_id_length-1” bis „0”, wobei
der Parameter device_id_length die Länge bzw. Anzahl der Stellen
der Kennung angibt, und in den folgenden Beispielen gemäß 2 den
Wert 4 aufweist.
-
Dabei
können
Ausführungsbeispiele
des Verfahrens, des Master-Knotens
und/oder des Slave-Knotens in Bezug auf den verwendeten Befehlssatz
in vier generelle Ausführungsbeispiele
unterteilt werden:
- 1. Erstes Ausführungsbeispiel
mit einem Befehlssatz, der die Befehle DISS, DIE0, DIE1, DIP0, DIP1
und optional DILC aufweist,
- 2. Zweites Ausführungsbeispiel,
das zusätzlich
zu dem ersten Ausführungsbeispiel
die Befehle DIMM und DIRC aufweist,
- 3. Drittes Ausführungsbeispiel,
das zusätzlich
zu den Befehlen des ersten Ausführungsbeispiels
zumindest einen der kombinierten Einschlag-Prüf-Befehle DI00, DI01, DI10
und DI11 aufweist, und
- 4. Viertes Ausführungsbeispiel,
das die Befehle der drei ersten Ausführungsbeispiele aufweist.
-
Dabei
kann der Befehl DIE0 auch als „0-Einschlag-Befehl”, der Befehl
DIE1 als „1-Einschlag-Befehl”, der Befehl
DIP0 als „0-Prüf-Befehl”, der Befehl
DIP1 als „1-Prüf-Befehl”, der Befehl
DI00 als – „0-Einschlag-0-Prüf-Befehl”, der Befehl
DI01 als „0-Einschlag-1-Prüf-Befehl”, der Befehl
DI10 als „1-Einschlag-0-Prüf-Befehl”, und der
Befehl DI11 als „1-Einschlag-1-Prüfbefehl” bezeichnet
werden. Ferner kann der Befehl DIEx als Sammelbegriff für die beiden
Einschlagbefehle aus DIE0 und DIE1, der Begriff DIPx als Sammelbegriff
für die
Prüfbefehle
DIP0, DIP1 und der Begriff DIxx als Sammelbegriff für die vier
kombinierten Einschlag-Prüf-Befehle
verwendet werden.
-
Dabei
zeigt 1A, wie zuvor erläutert, einen
Master-Knoten 100 und Slawe-Knoten 130, 150, 170 gemäß einem
ersten oder dritten Ausführungsbeispiel,
und 1B einen Master-Knoten 100' und Slawe-Knoten 130', 150', 170' gemäß einem
zweiten oder vierten Ausführungsbeispiel,
die zusätzlich
zu den Ausführungsbeispielen
gemäß 1A einen
Speicher für
den Index des letzten Abzweig-Knotens bzw. der letzten Zweigstelle
aufweist und bei dem die Slawe-Knoten zusätzlich für das Speichern des eigenen
Zustands bzw. des Status für
den entsprechenden Index bzw. des Status, den der jeweilige Slawe-Knoten
inne hatte, als der Index der aktuelle Index war und bevor der Index
aufgrund eines Einschlagbefehls DIEx dekrementiert wurde.
-
Dabei
sei ferner darauf hingewiesen, dass der Beispielcode ein möglicher
Programmcode eines Ausführungsbeispiels
eines Slawe-Knotens darstellt, das heißt, die Aktionen bzw. Schritte
beschreibt, die der Slawe-Knoten durchläuft bzw. die Prozesseinrichtung 136 durchführt, wenn
der Slawe-Knoten 130, 150, 170 den jeweiligen
Befehl über
den Empfänger 134 empfängt.
-
Die 3 bis 5 zeigen
dagegen Flussdiagramme, die die Steuerung des Master-Knotens betreffen,
nämlich: 3 ein
Flussdiagramm eines ersten Ausführungsbeispiels
für die
Suche einer unbekannten bzw. beliebigen Kennung, 4 ein
Flussdiagramm eines ersten Ausführungsbeispiels
für eine
bekannte Kennung bzw. Referenzkennung, und 5 ein Flussdiagramm
eines dritten Ausführungsbeispiels
für die
Suche einer bekannten Kennung bzw. Referenzkennung.
-
Zunächst soll
anhand des Beispielcodes, der 1A, 2 und
der 3 ein erstes Ausführungsbeispiel des Verfahrens
zum Suchen einer Kennung eines Slave-Knotens eines Eindraht-Kommunikationsnetzes
beschrieben werden. Dabei beschreibt das Flussdiagramm gemäß 3 die
Suche einer unbekannten Kennung, wie sie zum Beispiel von dem Master-Knoten 110 durchgeführt wird,
um festzustellen, ob Slave-Knoten an das Eindrahtkommunikationsnetz
angeschlossen sind, und welche Kennung die angeschlossenen Slave-Knoten 130, 150 und 170 haben.
Diese Suche kann auch als offene Suche bezeichnet werden.
-
In 3 sind
die Schritte, die der Master-Knoten 110 durchläuft, gezeigt
und stichwortartig erläutert, und
durch die entsprechenden Befehle, die der Master-Koten sendet und
die von den Slave-Knoten empfangen werden, neben den Blöcken des
Flussdiagramms ergänzt.
-
Dabei
werden für
die folgenden Erläuterungen,
wo möglich,
dieselben Elemente, z. B. idptr für den Index, sowohl für den Master-Knoten
als auch für
die Slave-Knoten verwendet, und bei der gleichartigen Vorgängen, z.
B. dem Dekrementieren des Index, das sowohl der Master-Knoten als
auch die Slave-Knoten durchführen,
auch zur Erläuterung
des Master-Knoten auf entsprechende Stellen des Codes der Slave-Knoten
Bezug genommen.
-
Vor
dem Start der Suche wird in Schritt 402 der Master-Knoten 110 zurückgesetzt.
-
In
Schritt 410 beginnt der Master-Knoten die Suche, indem
er den Befehl DISS über
das Eindraht-Kommunikationsnetz sendet und in Schritt 412 den
Index analog zu den Slave-Knoten auf einen Startwert setzt bzw.
initialisiert, also idptr = device_id_length_1 = 4 – 1 = 3
setzt, da in dem Beispiel gemäß 2 die
Kennungslänge
bzw. device_length den Wert 4 beträgt. Damit definiert der Index
das höchstwertige
Bit uid[3] der Kennung. Entsprechend setzen die Slave-Knoten 130, 150, 170 nach
Empfang des Befehls DISS (Initialisieren) den Index idptr ebenfalls
auf den Wert 3 und setzen ihren Zustand bzw. ihren Zustandsparameter active
auf den Wert Wahr bzw. True (siehe Programmcode).
-
In
Schritt 414 sendet der Master-Knoten den 0-Prüf-Befehl
DIP0 (siehe hierzu auch Bezugszeichen 212 in 2),
um zu prüfen,
ob ein Slave-Knoten an das Eindrahtkommunikationsnetz angeschlossen
ist, der eine Kennung mit dem Wert „0” als höchstwertiges Bit aufweist.
Entsprechend dem Programmcode für
den Befehl DIP0 prüfen
die Slave-Knoten 130, 150, 170, ob der
Wert an der Stelle, die durch den Index definiert wird (uid[idptr]),
gleich dem durch den Prüfbefehl
DIE0 vorgegeben und zu prüfenden
Wert „0” ist bzw.
mit diesem übereinstimmt,
und ob sie aktiv sind, das heißt,
ob ihr jeweiliger, eigener Aktivitätsstatus den Wert „Wahr” bzw. „True” hat. Aufgrund
des vorhergehenden DISS-Befehls sind alle Slave-Knoten aktiv und
wie in 2 ersichtlich, weisen alle drei Slave-Knoten 130, 150, 170 an
der Stelle uid[3] den Wert „0” auf, so
dass alle drei Slave-Knoten das Bestätigungssignal IRQ (siehe „Assert_SWI_Interrupt”) über das
Eindraht-Kommunikationsnetz senden.
-
In
Schritt 416 prüft
der Master-Knoten, ob eine „0” entdeckt
wurde, das heißt,
ob ein Slave-Knoten den Wert „0” an der
aktuellen Stelle hat und das Bestätigungssignal gesendet hat.
In diesem Fall wurde ein Bestätigungssignal
gesendet (siehe so dass der Master-Knoten den Wert „0” in einem
Kennungsspeicher in Schritt 418 speichert, wobei der Kennungsspeicher
die von dem Master-Knoten durch eine Suche gefundenen Teilkennungen
und/oder Kennungen der Slave-Knoten speichert.
-
In
Schritt 420 sendet der Master-Knoten 100 dann
den Einschlagbefehl DIE0 (siehe Bezugszeichen 214 in 2).
-
Auf
den Empfang des Befehls DIE0 hin prüfen die Slave-Knoten, ob der
Index idptr gleich 0 ist, das heißt, die letzte Stelle gemäß der Suchreihenfolge
bzw. das niedrigstwertige Bit erreicht ist. Dies ist nicht der Fall,
da idptr den Wert 3 hat. Zudem prüfen die Slawe-Knoten, ob die
eigene Kennung an der durch den Index definierten Stelle (uid[idptr])
den Wert „1” aufweist,
das heißt,
nicht den durch den Einschlagbefehl DIE0 definierten Wert „0” aufweisen.
Wie 2 zu entnehmen ist, weisen alle drei Slawe-Knoten
an dieser Stelle UID[3] den Wert „0” auf, so dass keine der zwei
in dem Programmcode genannten Bedingungen erfüllt sind, und somit alle drei
Slave-Knoten aktiv
bleiben. Zudem dekrementieren die Slawe-Knoten den Index von 3 auf
2 (sieh Code).
-
Ähnlich verfährt der
Master-Knoten in Schritt 422, das heißt auch der Master-Knoten reduziert
den Index bzw. dekrementiert seinen eigenen Index.
-
In
Schritt 424 prüft
der Master-Knoten, ob er alle Bits geprüft hat, oder in anderen Worten
ausgedrückt, ob
er alle Stellen geprüft
hat, beispielsweise, indem er prüft,
ob der Index kleiner als 0 ist. Da der Index idptr den Wert 2 hat,
erkennt der Master-Knoten, dass noch nicht alle Bits geprüft wurden,
und geht zurück
zu Schritt 414 und sendet einen Prüfbefehl DIP0 (siehe 222 in 2)
-
Wie
schon für
die erste Bit-Stelle uid[3], verfahren alle Slawe-Knoten gemäß dem Programmcode
für den
Befehl DIP0, und prüfen
nun, ob ihre eigene Kennung an der Stelle uid[2] den Wert 0 hat,
und ob sie aktiv sind. Aktiv sind alle drei Slawe-Knoten, jedoch
hat lediglich der erste Slawe-Knoten 130 an der aktuellen
Stelle idptr = 2 den Wert „0”. Die zwei
anderen Slawe-Knoten 150, 170 haben an dieser
Stelle den Wert „1”, wie in 2 ersichtlich.
Somit sendet lediglich der erste Slawe-Knoten 130 das Bestätigungssignal
IRQ.
-
Der
Master-Knoten 100 erkennt somit, dass zumindest ein Slawe-Knoten
auch an der zweiten Stelle den Wert „0” aufweist und führt nach
Schritt 416 entsprechend (siehe „ja”) Schritt 418 aus,
das heißt,
der Master-Knoten speichert gemäß dem aktuellen
Index an der zweiten Stelle des Kennungsspeichers den Wert „0”.
-
Nach
dem Speichern sendet der Master-Knoten in Schritt 420 den
Einschlagbefehl DIE0 (siehe 224 in 2).
-
Bei
Erhalt des Einschlagbefehls DIE0 prüfen die drei Slave-Knoten, wie in dem
Programm für
den Befehl DIE0 beschrieben, ob die letzte Stelle erreicht ist,
oder ob der Wert der eigenen Kennung an der aktuellen Stelle uid[2]
den Wert „1” aufweist.
Wie aus 2 ersichtlich, ist dies für den ersten
Slawe-Knoten 130 nicht der Fall. Der erste Slawe-Knoten 130 bleibt
somit aktiv und dekrementiert seinen eigenen Index von dem Wert 2
auf den Wert 1. Die zweiten und dritten Slave-Knoten 150, 170 weisen
jedoch an der Stelle uid[2] den Wert „1” auf, so dass sie ihren Zustand
in den inaktiven Zustand ändern
bzw. sich deaktivieren bzw. deaktiviert werden (active = False)
und dann wie der erste Slawe-Knoten ihren Index dekrementieren.
-
Der
Master-Knoten dekrementiert seinen Index in Schritt 422 ebenfalls,
so dass weiterhin der Master-Knoten und die Slave-Knoten, jeder für sich,
den gleichen aktuellen Index gespeichert haben, um einen Zugriff
auf die gleiche Stelle in einer Kennung zu gewährleisten.
-
In
Schritt 424 überprüft der Master-Knoten
wiederum, ob alle Bits geprüft
sind. Dies ist nicht der Fall („nein”), so dass der Master-Knoten
einen dritten DIP0-Befehl, siehe Bezugszeichen 232 in 2,
sendet.
-
Nach
Erhalt des Befehls DIP0 prüfen
alle Slawe-Knoten 130, 150, 170, ob ihr
eigener Wert an der Stelle uid[1] den Wert „0” aufweist und ob sie aktiv
sind. Da der zweite und dritte Slawe-Knoten 150, 170 nicht
mehr aktiv sind, können
diese keine Bestätigung
mehr senden, selbst wenn sie an dieser Stelle den Wert „0” aufweisen
würden.
Der erste Slawe-Knoten 130 ist noch aktiv und weist an
der aktuellen Stelle uid[1] seiner Kennung jedoch eine „1” auf, und
erfüllt
somit die Bedingung für
das Senden eines Bestätigungssignals
nicht. Somit sendet keiner der Slawe-Knoten ein Bestätigungssignal.
-
Nach
Ablauf einer vorgegebenen Antwortzeit, erkennt der Master-Knoten
gemäß Schritt 416,
dass kein Slawe-Knoten ein Bestätigungssignal
geschickt hat bzw. dass keiner der aktiven Slawe-Knoten an der aktuellen
Stelle den zu prüfenden
Wert „0” aufweist
(siehe „nein”).
-
Durch
das vorherige Prüfen
mittels des Prüfbefehls
DIP0, ob ein Slawe-Knoten an dem Netz angeschlossen ist, der eine „0” an der
aktuellen Stelle aufweist, wird vermieden, dass der Master-Knoten,
im Gegensatz zu den herkömmlichen
Verfahren, den Pfad 234 einschlägt, bzw. ohne Prüfung den
Einschlagbefehl DIE0 mit dem Bezugszeichen 234 sendet,
und somit in einer Sackgasse landet, und beispielsweise wieder von vorne
beginnen müsste,
das heißt,
wieder von der Wurzel des Suchbaums einen nächsten Pfad prüfen würde.
-
Zur
Unterscheidung sind die Pfeile, die Prüfbefehlen zugeordnet sind,
in 2 mit gestrichelten Linien gezeichnet, Pfeile,
die Einschlagbefehlen zugeordnet sind, die zu einer validen bzw.
existierenden Kennung führen,
mit durchgezogenen Linien gezeichnet, und Sackgassen bzw. nicht
gesendete Einschlagbefehle punktiert gezeichnet.
-
Der
Master-Knoten bricht daher die weitere Prüfung für den Wert „0” an dieser Stelle ab (siehe
Schritt 426) und sendet in Schritt 428 den Prüfbefehl
DIP1, siehe 236 in 2.
-
Bei
Erhalt des Befehls DIP1 prüfen
alle Slawe-Knoten analog zu dem Prüfbefehl DIP0, ob sie an der aktuellen
Stelle UID[1] den Wert „1” aufweisen
und aktiv sind. in diesem Fall ist nur noch Slawe-Knoten 130 aktiv,
und weist zudem den Wert „1” an der
Stelle auf, so dass dieser in Antwort auf den Befehl DIP1 ein Bestätigungssignal
IRQ sendet.
-
Der
Master-Knoten 110 empfängt
das Bestätigungssignal
IRQ in Schritt 430 und erkennt somit das zumindest ein
aktiver Slave-Knoten mit einer Kennung an das Kommunikationsnetz
angeschlossen ist, der an der aktuellen Stelle den zu prüfenden Wert
aufweist („ja”) und speichert
daraufhin in Schritt 432 für den Index 1 der Kennung den
Wert „1” in dem
Kennungsspeicher.
-
In
Schritt 434 sendet der Master-Knoten den Einschlagbefehl
DIE1, siehe Bezugszeichen 238 in 2.
-
Nach
Erhalt des Befehls DIE1 prüfen
die Slave-Knoten, ob die letzte Stelle erreicht ist und ihre eigene Kennung
an der Stelle uid[1] den Wert „0” aufweist.
Der erste Slave-Knoten 130 erfüllt diese Bedingung nicht, so
dass er aktiv bleibt und lediglich den Index auf den Wert „0” dekrementiert.
Die zwei anderen Slave-Knoten dekrementieren ihren Index ebenfalls.
-
Der
Master-Knoten dekrementiert den eigenen Index in Schritt 422 auch
auf den Wert „0”.
-
Da
noch nicht alle Bits geprüft
sind, siehe Schritt 424 und Pfeil „nein”, sendet der Master-Knoten
in Schritt 414 den Befehl „DIP0”, in 2 Bezugszeichen 242.
Der zweite und dritte Slave-Knoten 150, 170 sind deaktiviert
und können
somit kein Bestätigungssignal
senden, obwohl beispielsweise der zweite Slave-Knoten 150 an
der Stelle uid[0] den zu prüfenden
Wert „0” aufweist
und somit die erste Bedingung gemäß des Programmcodes erfüllt. Der
erste Slave-Knoten 130 ist jedoch aktiv und erfüllt ebenfalls
die erste Bedingung, das heißt,
weist an der Stelle uid[0] den Wert „0” auf und schickt somit ein
Bestätigungssignal
IRQ an den Master-Knoten.
-
Somit
entdeckt der Master-Knoten in Schritt 416, dass ein entsprechender
Slave-Knoten vorhanden ist (siehe „ja”) und speichert in Schritt 418 an
der Stelle uid[0] in seinem Kennungsregister den Wert „0”.
-
Daraufhin
sendet der Master-Knoten 110 den Einschlagbefehl DIE0 in
Schritt 420, siehe 244 in 2.
-
Da
der aktuelle Index den Wert „0” hat, das
heißt
die letzte Stelle der Kennung definiert, deaktiviert sich der erste
Slave-Knoten 130 (siehe Programmcode) und dekrementiert
ebenso wie die zwei anderen Slave-Knoten seinen Index auf den Wert „–1”.
-
Auch
der Master-Knoten reduziert sein Index in Schritt 422 ein
weiteres Mal und erkennt somit in Schritt 424, dass alle
Bits geprüft
sind und beendet den ersten Suchlauf erfolgreich (ja), siehe Schritt 436.
Damit hat der Master-Knoten die Kennung des ersten Slave-Knoten 130,
nämlich „0010” gefunden
und in seinem Kennungsspeicher gespeichert.
-
Dabei
ist der Master-Knoten 110 in dem ersten Ausführungsbeispiel
ausgebildet, um beispielsweise den Index der Stelle, an der der
Master-Knoten das letzte Mal ein Bestätigungssignal auf einen Null-Prüf-Befehl
DIP0 empfangen hat, zu speichern, in 2 der Index „1”, um dann
analog dem ersten Durchlauf nach Einschlagen des Pfads 238 bzw.
Senden des Einschlagbefehls DIE1 238, nicht nochmals den
Wert „0” für den nächsten Index
idptr = 0 zu prüfen,
sondern den Wert „1”, mittels
des Eins-Prüf-Befehls
DIP1 zu prüfen,
siehe Bezugszeichen 246 in 2. Dieser
Index bzw. diese Stelle wird auch als Abzweigungsindex bzw. Abzweigungsstelle
bezeichnet, da sie eine Stelle beschreiben, an der der Pfad auch
in einer anderen Richtung hätte weiterverfolgt
werden können.
-
Da
der der Slave-Knoten 130 an dieser Stelle den Wert „1” nicht
aufweist, und die anderen Slave-Knoten schon deakti viert sind, empfängt der
Master-Knoten kein Bestätigungssignal
und stellt somit fest, dass diese Kennung in dem Netz nicht vorliegt.
-
Das
dritte Ausführungsbeispiel,
das die Befehle DIMM zum Speichern eines aktuellen Index und Status
in einem Slave-Knoten
und dem Befehl DIRC, zum Zurückrufen
des gespeicherten Status und des gespeicherten Index in einem Slave-Knoten
aufweist, ermöglicht
eine wesentlich schnellere Rückkehr
an solche letzten „Abzweigungsstellen” und vermeidet,
dass bei einem nächsten
Suchlauf der komplette Baum noch einmal von vorne durchlaufen werden
muss.
-
Bei
dem zweiten Ausführungsbeispiel
weist der Master-Knoten 110' im
Wesentlichen dieselben Merkmale wie der Master-Knoten 110 auf
(siehe 1B), wobei der Speicher 118 als
Speicher 118' implementiert ist,
der zusätzlich
ausgebildet, um einen aktuellen Indexwert zu speichern, und die
Slave-Knoten 130', 150', 170' im Wesentlichen
dieselben Merkmale wie die Slave-Knoten 130. 150, 170 aufweisen
(siehe 1B), wobei der Speicher 138 als
Speicher 138' implementiert
ist, der zusätzlich
ausgebildet, um einen eigenen aktuellen Index (siehe idptr_mem in
dem Programmcode) und einen eigenen aktuellen Aktivitätsstatus
bzw. Status (siehe active_mem in dem Programmcode) zu speichern.
Dabei entspricht der Durchlauf bzw. das Flussdiagramm in Bezug auf
einen einzelnen Suchlauf zum Ermitteln einer Kennung dem des ersten
Ausführungsbeispiels
gemäß 3,
weist jedoch zusätzlich
die Schritte des Sendens des Speicherbefehls DIMM durch den Master-Knoten
an möglichen
oder tatsächlichen
Abzweigungspunkten innerhalb des Suchalgorithmus auf, und den Schritt
des Zurückrufens
der gespeicherten Indices bzw. eigenen Aktivitätsstati der Slave-Knoten am Ende eines
Suchdurchlaufs, um einen nächsten
Suchdurchlauf an dem letzten Abzweigungspunkt beginnend, durchzuführen.
-
Dabei
sind tatsächliche
Abzweigungsstellen oder -knoten solche Abzweigungsstellen, bei denen
der Master-Knoten zuvor durch das Senden beider Prüfbefehle
DIP0 und DIP1 positiv geprüft
hat, dass beide Pfade eingeschlagen werden können, d. h. Slawe-Knoten mit
Kennungen für
beide Bitwerte an dieser Stelle vorliegen.
-
Demgegenüber sind
mögliche
Abzweigungsstellen oder -knoten solche Abzweigungsstellen, bei denen
der Master-Knoten zuvor auf das Senden lediglich eines Prüfbefehls,
z. B. DIP0, schon ein Bestätigungssignal
IRQ erhalten hat, und keinen zweiten Prüfbefehl DIP1 gesendet hat,
um zu prüfen,
ob ein Slave-Knoten auch
für diesen
Wert eine Bestätigung
schickt.
-
In
Bezug auf das in 3 gezeigte Flussdiagramm, weist
der Schritt 418',
ebenfalls in 3 eingezeichnet, zusätzlich zu
dem Schritt 418 das Senden des Speicherbefehls DIMM durch
den Master-Knoten 110' auf,
bevor der Master-Knoten den Einschlagbefehl DIE0 in Schritt 420 sendet.
-
Wenn
der Master-Knoten den Speicherbefehl DIMM sendet, speichert er gleichzeitig
den aktuellen Index idptr als idptr_mem ab. Bei Empfang des Speichersignals
DIMM speichern die Slave-Knoten 130', 150', 170', unabhängig von
ihrem Aktivitätsstatus,
ihren aktuellen Index idptr als idptr_mem und ihren aktuellen Status
active als active_mem ab (siehe Programmcode zu dem Befehl DIMM).
In Bezug auf 2 schickt der Master-Knoten 110' den Speicherbefehl
DIMM vor dem Senden des Einschlagbefehls 224. Somit speichern sowohl
der Master-Knoten als auch die Slawe-Knoten den Index 3 als Rückkehrindex
idptr_mem, auf den mittels des Zurückrufbefehls DIRC zurückgekehrt
werden könnte.
-
Im
weiteren Verlauf des ersten Suchdurchlaufs wird jedoch auch der
Null-Prüf-Befehl
DIP0 dann 242 von dem ersten Slave-Knoten 130 bestätigt, von
dem Master-Knoten ein weiterer Speicher-Befehl DIMM gesendet und
somit der Index „0” in dem Index-Speicher
idptr_mem der Slawe-Knoten und des Master-Knotens gespeichert, und damit der in
zwischen gespeicherte Index-Wert „2” mit dem Wert „0” zur Kennzeichnung
der letzten möglichen
Abzweigungsstelle überschrieben.
Die Slawe-Knoten speichern zusätzlich
den eigenen Zustand, der dem gespeicherten Index zugeordnet ist,
das heißt
Slawe-Knoten 130 den aktiven Zustand bzw. „True” und die
zwei anderen Slawe-Knoten 150', 170' ihren inaktiven Status, das heißt den Status „False”. In Bezug
auf die Stati der einzelnen Slawe-Knoten wird auf die Ausführungen
in Bezug auf das erste Beispiel gemäß 1A verwiesen.
-
Damit
kann nach Abschluss des ersten Suchdurchlaufs der Schritt 436,
der Master-Knoten 110' einen zweiten
Suchdurchlauf starten, der direkt an dem letzten gespeicherten Suchstatus
fortfährt.
Dies initiiert der Master-Knoten 110' durch Senden des Zurückruf-Befehls
DIRC. Der Master-Knoten lädt
gleichzeitig den Index „0” als aktuellen
Status aus active_mem zurück
in active, und die Slawe-Knoten ihren gespeicherten Index idptr_mem
als aktuellen Index idptr und ihren gespeicherten Status active_mem
als aktuellen Status active in ihre Speicher zurück. Somit ist der erste Slawe-Knoten 130' wieder aktiv
und die zwei anderen Slawe-Knoten jedoch weiterhin inaktiv. In dem
zweiten Suchdurchlauf sendet der Master-Knoten 110' anstelle des Null-Prüf-Befehls
DIP0 (siehe 242 in 2) nun direkt
den Ein-Prüf-Befehl
DIP1 (siehe 246 in 2), um zu prüfen, ob
ggf. Slawe-Knoten an dem Eindraht-Kommunikationsnetzwerk angeschlossen
sind, die die Kennung „0011” aufweisen.
Dies ist in dem in 2 gezeigten Ausführungsbeispiel
nicht der Fall, so dass der Master-Knoten 110' kein Bestätigungssignal
erhält,
und somit nach Ablauf einer vorgegeben Zeitspanne, erkennt, dass
kein aktiver Slawe-Knoten an das Eindraht-Kommunikationsnetzwerk
angeschlossen ist, der an der Stelle uid[0] den Wert „1” aufweist,
und damit kein Slawe-Knoten, der insgesamt die Kennung „0011” aufweist.
-
Eine
Variante des dritten Ausführungsbeispiels
ist ausgebildet, um einen dritten Suchlauf, wieder ausgehend von
der Wurzel des Suchbaums zu beginnen, und beispielsweise nach Einschlagen
des Pfads 214 den Pfad 228 einzuschlagen.
-
Eine
weitere Variante des dritten Ausführungsbeispiels weist mehr
als ein Speicherfeld für
einen gespeicherten Index und einen gespeicherten Status auf, so
dass durch mehrfaches Senden des Befehls DIMM mehrere Indices idptr
und die entsprechenden Stati active in den Slave-Knoten in zeitlicher
Abfolge bzw. in der Reihenfolge gemäß des Durchlaufens des Suchbaums
als idptr_mem[j] und active_mem[j] abgespeichert werden und durch
mehrfaches Senden des Befehls DIRC in entgegengesetzter Richtung
wieder aus dem Speicher zurückgerufen
werden können.
In anderen Worten, der zuletzt gespeicherte Index bzw. Status wird
bei dem ersten Zurückrufbefehl
als aktueller Index bzw. Status ausgelesen, der vorletzte gespeicherte
Index bzw. Status durch den zweiten Zurückruf-Befehl, usw.. In derartigen
Ausführungsbeispielen
arbeiten die Befehle DIMM und DIRC, in anderen Worten, wie Stackspeicher-Befehle
PUSH und POP, und es werden also beispielsweise mehrere DIMM-Befehle hintereinander
und/oder mehrere DIRC-Befehle hintereinander ausgeführt. Bei
derartigen Ausführungsbeispielen
mit mehreren DIMM-Befehlen können
beispielsweise rekursiv alle Abzweigungen abgearbeitet werden.
-
Diesbezüglich bilden
die zuvor beschriebenen Ausführungsbeispiele
mit nur einem Speicher idptr_mem, in anderen Worten, den Sonderfall
mit einer Stackspeichertiefe von „1”.
-
In
dem in 2 gezeigten Beispiel würden der Master-Knoten und
die Slave-Knoten in zeitlicher Reihenfolge, beginnend mit dem Index
j = 1 für
den ersten gespeicherten Abzweigungsindex, die folgenden möglichen
Abzweigungsindizes durch Senden dreier DIMM-Befehle in den Schritten 418' speichern:
idptr_mem[1]
= 3, idptr_mem[2] = 2 und idptr_mem[3] = 0. Durch Senden dreier
Zurückruf-Befehle
würden
die Abzweigungsindizes in umgekehrter Reihenfolge wieder in den
Suchindex idptr und die Stati in die Suchstati active zurück gelesen
werden.
-
Im
Folgenden wird das dritte Ausführungsbeispiel,
bei dem die Kommandos auch die kombinierten Einschlag-Prüf-Befehle
umfassen, ausgehend von 3 beschrieben.
-
Dabei
beginnt ein Verfahren gemäß dem zweiten
Ausführungsbeispiel,
wie ein Verfahren gemäß dem ersten
Ausführungsbeispiel,
beispielsweise mit den Schritten 402 bis 418.
-
Der
Master-Knoten 110' ist
ausgebildet, um nach den Schritten 422 und 424 anstelle
der separaten Befehle DIE0 in Schritt 420 und DIP0 in Schritt 414 den
kombinierten Null-Einschlag-Null-Prüf-Befehl
DI00 senden. Dieser kombinierte Befehl DI00 ist, wie der Begriff „kombiniert” schon
gesagt, eine Kombination der Einzelbefehle Null-Einschlag-Befehl
DIE0 und Null-Prüf-Befehl
DIP0 und beinhaltet ebenso das Dekrementieren des Index durch den
Einschlag-Befehl und das nachfolgende Prüfen (siehe Code).
-
Ferner
weist das Verfahren gemäß des zweiten
Ausführungsbeispiels
anstelle des Einschlagbefehls DIE1 in Schritt 434 und des
Prüfbefehls
DIP0 in Schritt 414 einen kombinierten 1-Einschlag-0-Prüf-Befehl
DI10 auf. Dieser kombinierte Befehl DI10 ist eine Kombination des
Einzelbefehls 1-Einschlag-Befehl
DIE1 mit einem anschließenden
Null-Prüf-Befehl
DIP0 (siehe Code).
-
Die
zwei anderen kombinierten Einschlag-Prüf-Befehle werden bei diesem
Ausführungsbeispiel
nicht eingesetzt.
-
Dabei
kann das Flussdiagramm, abweichend von 3 allgemein
so angepasst sein, dass bei Erreichen der vorletzten Stelle, das
heißt,
z. B. bei Erreichen des Index „1” kein kombinierter
Einschlag-Prüf-Befehl DIxx
gesendet wird, sondern lediglich ein einfacher Einschlagbefehl DIEx,
um dann nach Schritt 424 den Suchdurchlauf ggf. mit Schritt 436 erfolgreich
zu beenden, und ggf. einen neuen Suchdurchlauf zu beginnen.
-
Bezug
nehmend auf 2 sendet der Master-Knoten 110 somit
folgende Befehle: den Prüf-Befehl DIP0 212,
den kombinierten 0-Einschlag-0-Prüf-Befehl 214, 222 anstelle
der Einzelbefehle DIE0 214 und DIP0 222, einen
weiteren kombinierten 0-Einschlag-0-Prüf-Befehl 224, 232 statt
der Einzelbefehle DIE0 224 und DIP0 232, aufgrund
des fehlenden Bestätigungssignals
für UID[1]
= 0 in Antwort auf den kombinierten 0-Einschlag-0-Prüf-Befehl 224, 232,
da kein Slave-Knoten mit einer derartigen Teilkennung vorliegt,
ein kombinierter 1-Einschlag-0-Prüfbefehl 238, 242 anstelle
der Einzelbefehle DIE1 238 und zuletzt der Einschlag-Befehl
DIE0 242.
-
Verfahren
gemäß dem zweiten
Ausführungsbeispiel
benötigen
daher weniger Befehle als Ausführungsbeispiele
gemäß dem ersten
Verfahren, und ermöglichen
somit eine Beschleunigung der Suche von Kennungen einzelner Slave-Knoten.
-
Gemäß einem
vierten Ausführungsbeispiel
können
in dem Verfahren auch die Verwendung der kombinierten Einschlag-Prüf-Befehle DIxx mit
dem Speicherbefehl DIMM (siehe Schritt 418') und dem Zurückruf-Befehl DIRC kombiniert
werden, wie sich dies aus 3 und den
vorhergehenden Erläuterungen
ergibt, um die Suche weiter zu beschleunigen.
-
4 zeigt
ein Flussdiagramm eines Programms für einen Master-Knoten 110 zum
Suchen einer Kennung eines Slave-Knoten, wobei die Kennung als Referenzkennung
bekannt ist. Dies kann auch als geschlossene Suche bezeichnet werden.
-
Ähnlich wie
in 3 beginnt das Verfahren mit den Schritten 402 bis 412,
das heißt,
der Master-Knoten sendet einen Start-Befehl DISS, die Indizes werden initialisiert
und die Slave-Knoten
aktiviert.
-
Da
die Kennung bekannt ist, holt der Master-Knoten in dem Schritt 513 den
Wert der entsprechenden Stelle, die durch den Index definiert ist,
aus dem Kennungsspeicher, der zum Beispiel zuvor mit einem Verfahren
gemäß 3 erstellt
wurde.
-
Ähnlich wie
in 3, beginnt das Verfahren die Suche selbst mit
dem höchstwertigen
Bit und führt
die Suche dann gemäß des Suchbaums
vom höchstwertigen
Bit zum niedrigstwertigen Bit durch. Ausgehend davon, dass die Referenzkennung
beispielsweise die Kennung des ersten Slawe-Knotens 130 ist,
holt der Master-Knoten als erstes Referenzbit eine „0” (uid[3]
in 2), stellt in Schritt 514 fest, ob die
Referenz den Wert „0” aufweist.
Dies ist der Fall („ja”), so dass
der Master-Knoten in Schritt 414 den Prüfbefehl DIP0 sendet, und, sofern
der Slawe-Knoten 130 antwortet, in Schritt 416 die
Prüfung
bestätigt
bekommt (siehe „ja”), und
in Schritt 420 den Einschlagbefehl DIE0 sendet.
-
In
Schritt 422, wie zuvor schon dargelegt, reduzieren sowohl
der Master-Knoten wie auch die Slawe-Knoten ihren Index. In Schritt 424 prüft der Master-Knoten,
wie schon in 3 erläutert, ob alle Bits geprüft sind
und kehrt zurück
zu Schritt 513, da lediglich das höchstwertige Bit bis jetzt geprüft wurde.
-
Diese
Schritte werden für
den nächsten
Index 2 entsprechend wieder durchlaufen (siehe uid[2] in 2).
-
Das
dritte Bit bzw. die Stelle uid[1] weist jedoch den Wert „1” auf, so
dass der Master-Knoten den Schritt 514 auf Schritt 428 verzweigt
und einen Prüfbefehl
DIP1 sendet. Sofern der Slawe-Knoten 130 weiterhin antwortet,
wird auch die dritte Stelle in Schritt 430 bestätigt (siehe „ja”) und der
Master-Knoten sendet das Einschlagsignal DIE1 in Schritt 434.
-
In
Schritt 422 reduzieren sowohl der Master-Knoten als auch
die Slawe-Knoten wieder den Index. Da noch nicht alle Bits geprüft sind,
wird von Schritt 424 in Schritt 513 zurück verzweigt
und wieder der Pfad für die
Prüfung
des Wertes „0” an der
letzten Bitstelle (uid[0] siehe 2) durchlaufen.
Bei erfolgreichem Durchlauf, das heißt, bei Bestätigung durch
den Slawe-Knoten 130, sind alle Bits geprüft (siehe
Schritt 424) und die Suche wird in Schritt 436 erfolgreich
abgeschlossen. Die Suche ergibt somit, dass ein Knoten mit der Referenzkennung „0010” weiterhin
am Eindrahtnetz angeschlossen ist, und bleibt damit weiter in dem
Kennungsspeicher des Master-Knoten gespeichert.
-
Sollte
der Slawe-Knoten 130 beispielsweise während dieser Prüfung ausfallen,
so erhält
der Master-Knoten entweder keine Bestätigung für den Wert „0” (siehe Schritt 416 und „nein”) oder
keine Bestätigung für den Wert „1” (siehe
Schritt 430 und „nein”) und bricht
in Schritt 538 die Prüfung
ab bzw. beendet diese erfolglos in Schritt 440. In diesem
Fall kann der Master-Knoten ausgebildet sein, die erfolglos gesuchte
Referenzkennung wieder aus dem Kennungsspeicher zu löschen, um
so nur positiv validierte Kennungen zu speichern.
-
5 zeigt
ein Flussdiagramm eines Ausführungsbeispiels
zum Suchen einer Kennung eines Slawe-Knotens eines Eindraht-Kommunikationsnetzes
bei dem die Kennung bekannt ist und mittels der zuvor schon erläuterten
kombinierten Einschlag-Prüf-Befehle DIxx gesucht
wird.
-
Wie
in den zuvor erläuterten
Verfahren, beginnt das Verfahren mit den Schritten 402 bis 412,
das heißt, der
Master-Knoten sendet ein Suchstart-Befehl DISS, die Indizes werden
initialisiert und die Slawe-Knoten aktiviert.
-
In
Schritt 613 holt der Master-Knoten dann das Referenzbit
und das nächste
Referenzbit, oder in anderen Worten, die nächsten zwei Referenzbits.
-
Ähnlich wie
in Bezug auf 4 wird im Folgenden ein Durchlauf
anhand der Suche der Kennung des Slawe-Knotens 130 gemäß 2 beschrieben.
In diesem Fall holt sich der Master-Knoten die zwei höchstwertigen Referenzbits aus
dem Kennungsspeicher, nämlich
uid[3] und uid[2] bzw. die entsprechenden Werte „0” und „0”, um zu bestimmen, welcher
der vier kombinierten Einschlag-Prüf-Befehle als nächstes gesendet
wird.
-
In
Schritt 514 prüft
der Master-Knoten, ob die Stelle, die durch den aktuellen Index
definiert ist, in diesem Fall uid[3] den Wert „0” hat. Dies ist der Fall („ja”), so dass
der Master-Knoten in dem Schritt 614 prüft, ob auch die nächste Stelle
uid[2] den Wert „0” aufweist.
Dies ist der Fall („ja”), so dass
der Master-Knoten in dem Schritt 616 den kombinierten Einschlag-Prüf-Befehl
DI00 sendet.
-
In
Antwort auf den kombinierten Einschlag-Prüf-Befehl DI00 prüft jeder
der Slawe-Knoten 130, 150, 170 gemäß dem Code
für den
DIE0-Anteil des Befehls DI00, ob der Wert an der durch den Index
definierten Stelle uid[3] den Wert „0” aufweist. Dies ist für alle 3
Slawe-Knoten der Fall, so dass alle 3 Slawe-Knoten aktiv bleiben.
Ferner dekrementieren alle drei Slawe-Knoten, wie auch der Master-Knoten
in Schritt 424, ihren Index um eins auf den Wert 2. Danach
prüfen
die Slave-Knoten,
ohne dass der Master-Knoten einen weiteren Befehl sendet, den DIP0-Anteil
des Befehls DI00 (siehe Code), und der Slawe-Knoten 130 sendet
das Bestätigungssignal
IRQ an den Master.
-
In
Schritt 424 wird, da noch nicht alle Bits geprüft sind,
zu Schritt 613 zurückgekehrt.
Dabei werden jetzt der Wert „0”, der durch
den aktuellen Index 2 definiert ist, aus dem Kennungsspeicher uid[2]
ausgelesen und zudem der Wert „1”, der der
durch den in Bezug auf die Suchrichtung nächsten Index 1 definiert ist,
aus dem Kennungsspeicher uid[1] ausgelesen.
-
Entsprechend
ergibt die Prüfung
in Schritt 514, ob das aktuelle Bit den Wert „0” hat, das
Ergebnis „ja”, und in
Schritt 614, ob das nächste
Bit den Wert „0” hat, das
Ergebnis „nein”, so dass
der Master-Knoten in Schritt 618 den kombinierten Befehl
DI01 sendet.
-
In
Antwort auf den kombinierten Einschlag-Prüf-Befehl DI01 prüft jeder
der Slawe-Knoten 130, 150, 170 gemäß dem Code
für den
DIE0-Anteil des Befehls DI01, ob der Wert an der durch den Index
definierten Stelle uid[2] den Wert „0” aufweist. Dies ist nur Slawe-Knoten 130 der
Fall, so dass nur der Slawe-Knoten 130 aktiv bleibt. Ferner
dekrementieren alle drei Slawe-Knoten, wie auch der Master-Knoten
in Schritt 424, ihren Index um eins auf den Wert 1. Danach
prüfen
die Slave-Knoten,
ohne dass der Master-Knoten einen weiteren Befehl sendet, den DIP1-Anteil
des Befehls DI01 (siehe Code), und der Slawe-Knoten 130 sendet
das Bestätigungssignal
IRQ an den Master-Knoten.
-
In
Schritt 424 wird, da noch nicht alle Bits geprüft sind,
zu Schritt 613 zurückgekehrt.
Dabei werden jetzt der Wert „1”, der durch
den aktuellen Index 1 definiert ist, aus dem Kennungsspeicher uid[1]
ausgelesen und zudem der Wert „0”, der der
durch den in Bezug auf die Suchrichtung nächsten Index 0 definiert ist,
aus dem Kennungsspeicher uid[0] ausgelesen.
-
Entsprechend
ergibt die Prüfung
in Schritt 514, ob das aktuelle Bit den Wert „0” hat, das
Ergebnis „nein”, und in
Schritt 620, ob das nächste
Bit den Wert „0” hat, das
Ergebnis „ja”, so dass
der Master-Knoten in Schritt 622 den kombinierten Befehl
DI10 sendet.
-
In
Antwort auf den kombinierten Einschlag-Prüf-Befehl DI10 prüft jeder
der Slawe-Knoten 130, 150, 170 gemäß dem Code
für den
DIE0-Anteil des Befehls DI10, ob der Wert an der durch den Index
definierten Stelle uid[1] den Wert „0” aufweist und der Index gleich
0 ist. Da der Index erst nach dem Vergleich dekrementiert wird,
ist der Index noch größer als
0 und, da der Slave-Knoten den Wert „1” an der Indexstelle 1 aufweist, bleibt
der Slave-Knoten 130 aktiv. Ferner dekrementieren alle
drei Slave-Knoten, wie auch der Master-Knoten in Schritt 424,
ihren Index um eins auf den Wert 0. Danach prüfen die Slave-Knoten, ohne dass
der Master-Knoten einen weiteren Befehl sendet, den DIP0-Anteil
des Befehls DI10 (siehe Code), und der Slave-Knoten 130 sendet
das Bestätigungssignal
IRQ an den Master-Knoten.
-
Dabei
kann in Ausführungsbeispielen
der Suchlauf schon an dieser Stelle erfolgreich abgeschlossen werden,
da ein Einschlagen des letzten Pfades aufgrund der Prüfung der
letzten Stelle für
die Suche bzw. Verifizierung der Referenzkennung nicht notwendig
ist (siehe 5). In diesem Fall kann der
Schritt 424 darin bestehen, den Index mit dem Wert 0 zu
vergleichen, und die Suche in Schritt 436 erfolgreich abzuschließen, wenn
der Index den Wert 0 aufweist, wie dies hier der Fall ist.
-
In
einem alternativen Ausführungsbeispiel,
kann der Einschlag-Befehl durchgeführt werden, und Schritt 424 in
einem darauf folgenden Durchlauf darin bestehen, zu prüfen, ob
der Index kleiner als der Wert 0 ist, und die Suche in Schritt 436 erfolgreich
abzuschließen,
wenn der Index kleiner als der Wert 0 ist.
-
Obwohl
zuvor Ausführungsbeispiele
mit Kennungen beschrieben wurden, die 4 Stellen aufweisen, können Ausführungsbeispiele
für Kennungen
beliebiger Länge
N bzw. device_id_length eingesetzt werden, wobei jede der Stellen
eine Vielzahl M von verschiedenen Werten aufweisen kann. Bei einem
binären
Kennwort mit M = 2, kann jede der Stellen bzw. Positionen den Wert „0” oder „1” aufweisen.
-
Obwohl
zuvor Ausführungsbeispiele
mit Kennungen beschrieben wurden, deren Stellen binäre Werte aufweisen,
können
Ausfüh rungsbeispiele
beliebige andere Werte, z. B. dezimale oder hexadezimale Werte aufweisen.
Dabei weisen Ausführungsbeispiele,
die zum Beispiel dezimale Werte aufweisen, einen Programmcode auf,
der zwischen diesen 10 Werten unterscheidet, d. h. z. B. zehn verschiedene
Prüfbefehle
und Einschlagbefehle aufweisen, für jeden Wert jeweils einen,
und entsprechend angepasst ist.
-
Dabei
sind die Slave-Knoten beispielsweise ausgebildet, wie bei dem Programmcode
für das
binäre Ausführungsbeispiel,
bei dem entsprechenden DIPx-Befehl zu prüfen, ob der eigene Wert an
der durch den Index definierten Stelle der eigenen Kennung mit dem
zu prüfenden
Wert, der durch den DIPx als „x” definiert ist, übereinstimmt.
-
Dabei
sind die Slave-Knoten beispielsweise ausgebildet, im Gegensatz zu
dem Programmcode für das
binäre
Ausführungsbeispiel,
bei dem entsprechenden DIEx-Befehl zu prüfen, ob der eigene Wert an
der durch den Index definierten Stelle der eigenen Kennung mit dem
einzuschlagenden Wert, der durch den DIEx als „x” definiert ist, übereinstimmt,
wobei analog zu dem binären
Ausführungsbeispiel
die Slave-Knoten aktiv bleiben, für die dies zutrifft, während die
anderen Slave-Knoten deaktiviert werden.
-
Bei
Ausführungsbeispielen,
die mehr als zwei Werte pro Stelle aufweisen können, ergibt sich entsprechend
beispielsweise ein dezimaler oder hexadezimaler Suchbaum, mit entsprechend
zehn oder 16 Pfaden pro Knoten, die für die Suche geprüft werden
können.
Entsprechend kann sich auch analog zu den Ausführungen über die binären Beispiele eine Mehrzahl
an tatsächlichen
oder möglichen
Abzweigungsknoten und -Pfaden pro Abzweigungsknoten ergeben, die
dann gemäß des zweiten
oder vierten Ausführungsbeispiels
gespeichert werden.
-
Ferner,
können,
obwohl zuvor Ausführungsbeispiele
beschrieben wurden, in denen die Indexierung von der niedrigstwertigen Stelle
bzw. Bit mit dem Index 0 beginnt, andere Ausführungsbeispiele auch andere Indexierungen
aufweisen, beispielsweise beginnend mit dem Index 0 für die höchstwertige
Stelle bzw. Bit, oder eine Suchreihenfolge aufweisen, die von der
niedrigstwertigen Stelle zu der höchstwertigen Stelle verläuft.
-
Im
Folgenden werden weitere Ausführungsformen
beispielhaft für
binäre
Kennungen beschrieben, ohne diese jedoch auf diese einzuschränken bzw.
auf diesen konkreten Beispiele der Befehle einzuschränken.
-
In
Anbetracht der vorhergehenden Erläuterungen können Ausführungsbeispiele des Verfahrens
ein Verfahren zum Suchen einer Kennung uid oder Teilkennung eines
Slave-Knotens 130, 150, 170; 130', 150', 170' in einem Eindraht-Kommunikations-Netz 100 schaffen,
wobei das Eindraht-Kommunikations-Netz einen Master-Knoten 110 und
einen oder mehrere Slave-Knoten 130, 150, 170 aufweist,
die über
eine Eindrahtverbindung 102 miteinander verbunden sind,
wobei jeder Slave-Knoten einen Speicher aufweist, indem eine mehrstellige
Kennung uid gespeichert ist, die eine eindeutige Identifizierung
des Slave-Knotens
in dem Eindraht-Kommunikationsnetz ermöglicht, wobei jede Stelle einen
vorbestimmten Wert aufweist; wobei das Verfahren folgende Schritte
aufweist:
Definieren 412,422 einer Stelle
der Kennung uid oder Teilkennung mittels eines Index idptr in dem
Master-Knoten und in dem Slave-Knoten oder in einem der mehrere
Slave-Knoten;
Senden 414 eines ersten Prüfbefehls
DIP0 von dem Master-Knoten
an den Slave-Knoten oder an die mehreren Slave-Knoten, wobei der
erste Prüfbefehl
an der durch den Index idptr definierten Stelle der Kennung uid oder
Teilkennung einen ersten zu prüfenden
Wert „0” definiert;
Vergleichen
des ersten zu prüfenden
Werts „0” mit einem
Wert uid[idptr] an der durch den Index idptr definierten Stelle
einer eigenen Kennung uid oder Teilkennung in dem Slave-Knoten oder in den
mehreren Slave-Knoten;
Senden eines Bestätigungssignals IRQ von dem
Slave-Knoten oder einem 130, 130' der mehreren Slave-Knoten, wenn
der Vergleich ergibt, dass der erste zu prüfende Wert „0” gleich dem Wert uid[idptr]
an der durch den Index definierten Stelle der eigenen Kennung oder
Teilkennung ist, und der Slave-Knoten oder der eine 130, 130' der mehreren
Slave-Knoten einen aktiven Status (active = True) aufweist;
Senden 420 eines
Einschlagbefehls DIE0 von dem Master-Knoten an den Slave-Knoten
oder die mehreren Slave-Knoten, wenn der Master-Knoten das Bestätigungssignal
IRQ empfängt
(416 in Verbindung mit „ja”), wobei der Einschlagbefehl
an der durch den Index idptr definierten Stelle der Kennung uid
oder Teilkennung einen einzuschlagenden Wert „0” definiert;
Vergleichen
des einzuschlagenden Werts „0” mit einem
Wert uid[idptr] an der durch den Index idptr definierten Stelle
der eigenen Kennung uid oder Teilkennung in dem Slave-Knoten oder
in den mehreren Slave-Knoten;
Ändern eines eigenen Status
des Slave-Knoten oder eines eigenen Status eines 130, 130' der mehreren
Slave-Koten von einem aktiven Status in einen inaktiven Status (active=False),
wenn der Vergleich ergibt, dass der einzuschlagende Wert „0” nicht
gleich dem Wert uid[idptr] an der durch den Index definierten Stelle
der eigenen Kennung oder Teilkennung ist; und
Ändern 422 des
Index idptr, um eine Stelle in einer Suchrichtung in dem Master-Knoten
und dem Slave-Knoten oder den mehreren Slave-Knoten, wenn der Einschlagbefehl
DIE0 gesendet oder empfangen wird.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass das Verfahren mit folgenden Schritten
beginnt:
Senden eines Suchstartbefehls DISS durch den Master-Knoten
an den Slawe-Knoten oder die mehreren Slawe-Knoten;
Setzen
des Slawe-Knoten oder der mehreren Slawe-Knoten in den aktiven Status
(active = True); und
Initialisieren 412 des Index
in dem Master-Knoten und dem Slawe-Knoten oder den mehreren Slawe-Knoten, um
mittels des Index eine Startstelle der Kennung oder Teilkennung
zu definieren, von der die Suche startet.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, folgende Schritte aufzuweisen:
Senden
eines zweiten Prüfbefehls
DIP1 von dem Master-Knoten bei gleichem bzw. unverändertem
Index, wobei der zweite Prüfbefehl
einen von dem ersten zu prüfenden
Wert unterschiedlichen zu prüfenden
zweiten Wert „1” definiert,
und wobei der zweite Prüfbefehl
nach dem ersten Prüfbefehl
DIP0 und vor dem Einschlagbefehl DIE0 gesendet wird; und
Senden
des Bestätigungssignals
IRQ durch den Slawe-Knoten oder einen der mehreren Slawe-Knoten,
wenn der Vergleich ergibt, dass der zweite zu prüfende Wert „1” gleich dem Wert uid[idptr]
an der durch den Index definierten Stelle der eigenen Kennung oder
Teilkennung ist, und der Slawe-Knoten oder der eine 130, 130' der mehreren
Slawe-Knoten einen aktiven Status (active = True) aufweist.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass ein zweiter Prüfbefehl DIP1 von dem Master-Knoten
nur gesendet wird, wenn der Master-Knoten auf den zuvor gesendeten
ersten Prüfbefehl DIP0
kein Bestätigungssignal
IRQ empfangen hat.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass der Einschlagbefehl DIE0 einen ersten
einzuschlagenden Wert „0” definiert,
der mit dem ersten zu prüfenden
Wert „0” des zuvor
gesendeten ersten Prüfbefehls
DIP0 übereinstimmt,
wenn der Master-Knoten das Bestätigungssignal
IRQ auf den zuvor gesendeten ersten Prüfbefehl DIP0 hin empfangen
hat.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass ein zweiter Prüfbefehl DIP1 von dem Master-Knoten
immer gesendet wird.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass der Einschlagbefehl DIE0 einen ersten
einzuschlagenden Wert „0” definiert,
der mit dem ersten zu prüfenden
Wert „0” eines
vorab gesendeten ersten Prüfbefehls
DIP0 übereinstimmt,
wenn der Master-Knoten das Bestätigungssignal
IRQ auf den ersten Prüfbefehl
DIP0 hin empfangen hat, und wobei der Einschlagbefehl DIE1 einen
zweiten zu prüfenden
Wert „1” definiert,
der mit einem zweiten zu prüfenden
Wert „1” des vorab
gesendeten zweiten Prüfbefehls
DIP1 übereinstimmt,
wenn der Master-Knoten kein Bestätigungssignal
auf den zuvor gesendeten ersten Prüfbefehl DIP0 hin empfangen
hat und ein Bestätigungssignal
IRQ auf den zuvor gesendeten zweiten Prüfbefehl DIP1 hin empfangen
hat.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass anstelle des Einschlagbefehls DIE0, DIE1
ein kombinierter Einschlag-Prüf-Befehl
DIxx von dem Master-Knoten an den Slawe-Knoten oder an die mehreren
Slawe-Knoten gesendet wird, wenn der Master-Knoten das Bestätigungssignal
IRQ auf einen zuvor gesendeten ersten oder zweiten Prüfbefehl
empfängt,
wobei der kombinierte Einschlag-Prüf-Befehl die Wirkung des Einschlagbefehls
DIE0, DIE1 und eines anschließenden
ersten oder zweiten Prüfbefehls
DIP0, DIP1 hat.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass ein erster kombinierter Einschlag-Prüf-Befehl
DI00 oder ein zweiter kombinierter Einschlag-Prüf-Befehl DI01 gesendet wird,
wenn der Master-Knoten das Bestätigungssignal
IRQ auf den zuvor gesendeten ersten Prüfbefehl DIP0 empfängt, wobei der
erste kombinierte Einschlag-Prüf-Befehl
DI00 die Wirkung des Einschlagbefehls DIE0, der einen ersten einzuschlagenden
Wert „0” definiert,
und eines anschließenden
ersten Prüfbefehls
DIP0, DIP1 hat, und wobei der zweite kombinierte Einschlag-Prüf-Befehl
DI01 die Wirkung des Einschlagbefehls DIE0, der einen ersten einzuschlagenden
Wert „0” definiert,
und eines anschließenden
zweiten Prüfbefehls
DIP1 hat.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass ein dritter kombinierter Einschlag-Prüf-Befehl
DI10 oder ein vierter kombinierter Einschlag-Prüf-Befehl DI11 gesendet wird,
wenn der Master-Knoten das Bestätigungssignal
IRQ auf den zuvor gesendeten zweiten Prüfbefehl DIP1 empfängt, wobei
der dritte kombinierte Einschlag-Prüf-Befehl DI10 die Wirkung des
Einschlagbefehls DIE1, der einen zweiten einzuschlagenden Wert „1” definiert,
und eines anschließenden
ersten Prüfbefehls
DIP0, DIP1 hat, und wobei der vierte kombinierte Einschlag-Prüf-Befehl
DI11 die Wirkung des Einschlagbefehls DIE1, der einen zweiten einzuschlagenden
Wert „1” definiert,
und eines anschließenden
zweiten Prüfbefehls
DIP1 hat.
-
Dabei
können
Ausführungsbeispiele
ferner folgende Schritte aufweisen:
Senden eines Speicherbefehls
DIMM durch den Master-Knoten an den Slave-Knoten oder die mehreren
Slave-Knoten, wenn der Master-Knoten ein Bestätigungssignal IRQ auf den ersten
Prüfbefehl
DIP0 empfangen hat und keinen zweiten Prüfbefehl DIP1 bei gleichem Index
gesendet hat und der Index somit eine mögliche Abzweigungsstelle definiert,
oder wenn der Master-Knoten
ein Bestätigungssignal
IRQ auf den ersten Prüfbefehl
DIP0 und den zweiten Prüfbefehl
DIP1 empfangen hat, und der Index somit eine tatsächliche
Abzweigungsstelle definiert, um nach Beendigung der Suche eine weitere
Suche von der möglichen
oder der tatsächlichen
Abzweigungsstelle durchführen
zu können;
Speichern
idptr_mem des Index idptr durch den Master-Knoten und den Slave-Knoten
oder die mehreren Slave-Knoten, wenn der Speicherbefehl gesendet
oder empfangen wird; und
Speichern active_mem des eigenen Status
active durch den Slave-Knoten oder die mehreren Slave-Knoten, wenn
der Speicherbefehl empfangen wird.
-
Dabei
können
Ausführungsbeispiele
ferner folgende Schritte aufweisen:
Senden eines Zurückrufbefehls
DIRC durch den Master-Knoten an den Slave-Knoten oder die mehreren
Slave-Knoten, wenn die Suche bzw. ein Suchdurchlauf beendet ist,
z. B. wenn die letzte Stelle der Kennung gemäß der Suchreihenfolge erreicht
ist (idptr < 0);
Setzen
des Index idptr auf den gespeicherten Index idptr_mem durch den
Master-Knoten und den Slave-Knoten oder die mehreren Slave-Knoten;
und
Setzen des Status active auf den gespeicherten Status active_mem
durch den Slave-Knoten oder die mehreren Slave-Knoten.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass der Index und der entsprechende Status
einer in Bezug auf die Suchrichtung letzten möglichen oder tatsächlichen
Abzweigungsstelle durch den Speicherbefehl DIMM gespeichert und
durch den Zurückrufbefehl
DIRC zurückgerufen
werden.
-
Dabei
können
Ausführungsbeispiele
ferner ausgebildet sein, dass mehrere Indizes und entsprechende
eigene Stati möglicher oder
tatsächlicher
Abzweigungsstellen in Reihenfolge der Suchrichtung durch mehrere
Speicherbefehle DIMM gespeichert werden, und entgegen der Suchrichtung
durch mehrere Zurückrufbefehle
(DIRC) zurückgerufen
werden.
-
Dabei
kann in alternativen Ausführungsbeispielen
der erste Prüf-Befehl
auch der Befehl DIP1 und der erste zu prüfenden Wert der wert „1” sein,
und entsprechend der zweite Prüfbefehl
der Befehl DIP0 sein und der zweite zu prüfenden Wert der Wert „0” sein.
Entsprechendes gilt für
den Einschlagbefehl DIEx bzw. den zu prüfenden Wert sowie die kombinierten
Einschlag-Prüf-Befehle
DIxx.
-
Zusammenfassend
kann ferner gesagt werden, dass Ausführungsbeispiele es ermöglichen,
dass der Master-Knoten die Slave-Knoten
mit der Prüfunterstützung bzw.
mittels der Prüfbefehle
DIPx finden kann, was es wiederum dem Master-Knoten ermöglicht,
durch den binären
Suchbaum in einem Durchlauf mit oder ohne Wissen der gesuchten Slawe-Kennung
durchzulaufen.
-
Der
Master-Knoten kann den Index zu jeder Zeit während des Suchdurchlaufs speichern
und während der
Suche zu den gespeicherten Knoten bzw. Abzweigungsstellen des Suchbaums
zurückkehren.
Des Weiteren kann der Master-Knoten die Index-Speicher-Funktion verwenden, um eine
Gruppe verschiedener Slawe-Knoten zu gruppieren, das heißt, die
Slawe-Knoten mit derselben Produktkennung zu gruppieren. Die Bitlänge der
Kennung kann einfach auf die gewünschten
Anforderungen angepasst werden, da ein Verlängern der Bitlänge die
Suchzeit nicht exponential, sondern lediglich linear anwachsen lässt. Ferner
kann mittels des Befehls DILC gemischte Kennungslängen unterstützt werden.
-
Ferner
wird mittels der kombinierten Einschlag-Prüf-Befehle DIxx die Suche mit
einer Minimalanzahl von Befehlen ermöglicht.
-
Ferner
zeichnen sich Ausführungsbeispiele
dadurch aus, dass sie durch die Prüfmethode bzw. den Suchalgorithmus
den nächsten
Knoten des Suchbaums vorab anschauen, um eine maximale Effizienz
zu erreichen.
-
Ferner
zeichnen sich das dritte und das vierte Ausführungsbeispiel dadurch aus,
dass eine Indexkennung und ein Aktivitätsstatus zu jeder Zeit während der
Suche gespeichert werden kann und der gespeicherte Ort bzw. Knoten
mit der entsprechenden gespeicherten Aktivitätsstatus zu gewünschten
Zeiten wieder aufgerufen bzw. wieder hergestellt werden kann.
-
Dabei
sind Ausführungsbeispiele
nicht auf die binäre
Suche beschränkt,
sondern können
pro Stelle eine beliebige Anzahl von Werten aufweisen, beispielsweise
Werte gemäß dem Dezimal- oder Hexadezimalsystem.
-
Alternative
Ausführungsbeispiele
ermöglichen
die Suche einer, mehrerer oder aller Kennungen der Slave-Knoten,
die an dem Kommunikationsnetz angeschlossen sind.
-
Weitere
alternative Ausführungsbeispiele
des Verfahrens, des Master-Knotens und/oder des Slave-Knotens führen die
verschiedenen Schritte gemäß der zuvor
beschriebenen Reihenfolgen oder in beliebiger anderer Reihenfolge
durch, z. B. können
mehrere DIEx Befehle hintereinander gesendet werden, wenn Teile der
Kennung oder die gesamte Kennung bekannt sind.
-
Alternative
Ausführungsbeispiele
können
zur Suche einer Teilkennung ausgebildet sein, die Suche nicht erst
nach dem zuvor beschriebenen Ende-Kriterium, z. B. idptr < 0 für eine Vollkennung,
zu beenden, sondern beispielsweise gemäß einem anderen Ende-Kriterium,
z. B. idptr < 2,
wenn eine Suche in dem zuvor beschriebenen Beispiel mit einer Kennungslänge von
N = 4 nach den ersten zwei Stellen beendet werden soll, also die
zu suchende Teilkennung oder der Suchzweig die ersten 2 Stellen
umfasst.
-
Ferner
können
Ausführungsbeispiele
ausgebildet sein, in einem Kommunikationsnetz mit Slawe-Knoten unterschiedlicher
Kennungslänge,
also einer unterschiedlichen Anzahl von Stellen N oder device_id_length
verwendet zu werden, und um zu prüfen, ob ein Slawe-Knoten mit
einer geringeren Kennungslänge
als einer durch den Master-Knoten suchbaren Kennungslänge an dem
Kommunikationsnetz angeschlossen ist, oder, ob dessen kürzere Kennung
gefunden ist.
-
Weist
das Kommunikationsnetz beispielsweise einen Slave-Knoten mit N1 = 4
Stellen und einen zweiten Slawe-Knoten mit N2 = 6 Stellen auf, so
setzt der erste Slawe-Knoten mit der ersten Kennung uid1 seinen Index
idptr1 zu Beginn der Suche auf idptr1 = 3 und sowohl der zweite
Slawe-Knoten mit der zweiten Kennung uid2 als auch der Master-Knoten
ihren Index idptr2 auf idptr2 = 5. Unabhängig von den unterschiedlichen
Indizes definieren gemäß der zuvor
erläuterten
Ausführungsbeispiele,
die die Suche mit der höchstwertigen
Stelle der Kennung beginnen und mit der niedrigstwertigen Stelle
beenden, idptr1 = 3 und idptr2 = 5 beide die höchstwertige zulässige Stelle
der jeweiligen Kennung, idptr1 = 2 und idptr2 = 4 beide die zweithöchste zulässige Stelle
der jeweiligen Kennung, idptr1 = 1 und idptr2 = 3 beide die dritthöchste zulässige Stelle
der jeweiligen Kennung, und idptr1 = 0 und idptr2 = 2 beide die
vierthöchste
zulässige
Stelle der jeweiligen Kennung, wobei die vierthöchste Stelle für den ersten
Slawe-Knoten gleichzeitig auch die niedrigstwertige zulässige und kleinste
zulässige
Stelle ist. Eine weitere Reduzierung der Indizes aufgrund eines
weiteren Einschlagbefehls DIEx führt
dazu, dass idptr1 = ”–1” ist, also
kleiner als der kleinste für
den ersten Slawe-Knoten zulässige
Index, nämlich „0”, ist.
Hat der erste Slawe-Knoten beispielsweise die Kennung „0010” (siehe
Slave-Knoten 130 in 2),
der zweite Slawe-Knoten die Kennung „011100”, und hat der Master-Knoten
den Suchpfad „0010” beschritten,
so ist der zweite Slawe-Knoten seit dem zweiten Einschlagbefehl
DIE0 224 (siehe 2) inaktiv, und der ers te Slave-Knoten
nach dem Empfang des vierten Einschlagbefehls DIE0 244 (siehe 2)
auch inaktiv. Der Master-Knoten ist dann beispielsweise ausgebildet,
um bei unverändertem
Index idptr2 = 1 den ersten Prüfbefehl
DIP0 und den zweiten Prüfbefehl
zu senden, um zu prüfen,
ob ein Slave-Knoten mit der Kennung bzw. Teilkennung „0010x” vorhanden
ist. In diesem Fall, ist ein Slave-Knoten mit dieser Teilkennung
jedoch nicht vorhanden, und der Master-Knoten erhält für keinen
der beiden Prüfbefehle
ein Bestätigungssignal
IRQ. Der Master-Knoten
ist dann beispielsweise ausgebildet, um einen Längenprüfbefehl DILC zu senden, und
so zu prüfen,
ob ein Slave-Knoten
mit einer Kennungslänge
N = 4 vorliegt. Der erste Slave-Knoten
prüft nach
Erhalt des Längenprüfbefehls,
ob der Index kleiner als der kleinste zulässige Index „0” ist (siehe
Beispielscode für
Slave-Knoten für
Befehl DILC: idptr(0). Dies ist der Fall. Der erste Slave-Knoten
sendet das Bestätigungssignal
IRQ. Der Master-Knoten erkennt somit, dass eine Kennung „0010” des Slave-Knoten 130, 130' mit der kürzeren Kennung,
also der Kennungslänge
N = 4, gefunden worden ist.
-
Ausführungsbeispiele
des Master-Knoten können
daher ausgebildet sein, zu erkennen, dass ein Slave-Knoten mit kürzerer Kennungslänge gefunden
wurde, und beispielsweise einen Suchdurchlauf zu beenden und die
Kennung zu speichern, wenn der Master-Knoten auf alle möglichen
Prüfbefehle
DIPx hin kein Bestätigungssignal
erhalten hat und auf einen Längensuchbefehl
jedoch ein Bestätigungssignal
erhält.
Bei der binären
Suche sind zwei Werte und damit zwei unterschiedliche Prüfbefehle
DIP0, DIP1 möglich,
bei der hexadezimalen Suche sind 16 unterschiedliche Werte möglich, und
damit 16 unterschiedliche Prüfbefehle
DIP”0” bis DIP”15” möglich.
-
In
anderen Worten können
Ausführungsbeispiele
des Verfahrens oder des Master-Knotens ferner ausgebildet sein,
um eine Kennung mit einer ersten Anzahl N1 = 6 von Stellen zu suchen,
wobei der Slave-Knoten oder einer der mehreren Slave-Knoten eine
Kennung mit einer zweiten Anzahl N2 = 4 von Stellen auf weist, die geringer
ist als die erste Anzahl von Stellen, wobei ein größter zulässiger Index „3” eine höchstwertige
Stelle uid[3] und ein kleinster zulässiger Index „0” eine niedrigstwertige
Stelle uid[0] der Kennung uid des Slave-Knoten oder des einen der mehreren Slave-Knoten
definiert, und der Master-Knoten erkennt, dass die Kennung des Slave-Knoten oder des einen
der mehreren Slave-Knoten gefunden wurde, wenn der Master-Knoten
alle möglichen
Prüfbefehle
DIPx, bei gleichem Index gesendet hat und auf keinen der Prüfbefehle
das Bestätigungssignal
IRQ empfangen hat, und nach einem Senden eines Längenprüfbefehls DILC das Bestätigungssignal
IRQ von dem Slave-Knoten oder dem einen der Slave-Knoten empfängt. Dabei
können
Ausführungsbeispiele
des Slave-Knoten ausgebildet sein, um das Bestätigungssignal IRQ zu senden,
wenn eine durch den Empfang des Längenprüfbefehls DILC initiierte Prüfung, z.
B. idptr1 < 0,
des Index idptr1 ergibt, dass der Index größer als der höchstwertige
zulässige
Index „3” oder kleiner
als der niedrigstwertige zulässige
Index „0” der Kennung
des Slave-Knotens ist. In dem oben beschriebenen Fall ist der Index „–1” kleiner
als der kleinste zulässige
Index „0”. In anderen
Worten, der Index „–1” ist kein
zulässiger
Index. Der erste Slave-Knoten sendet also das Bestätigungssignal.
-
Ausführungsbeispiele
des Verfahrens, des Master-Knotens und des Slave-Knotens führen die
Suche nach der Kennung oder Teilkennung eines Slave-Knotens Stelle
für Stelle
zeitlich nacheinander, also seriell, durch, und sind so insbesondere
für Einzeldraht-Kommunikationsnetze
geeignet, die nur einen Draht 102 für die Übermittlung sowohl der Befehle,
z. B. DIPx, DIEx, als auch für
die Bestätigungssignale
IRQ oder andere Daten aufweisen, und beispielsweise nicht mehrere
Drähte
für eine
parallele Übermittlung
mehrerer Stellen der Kennung oder Teilkennung aufweisen.
-
Ferner
können
Ausführungsbeispiele
sowohl für
Software als auch für
Hardware angewendet werden.
-
Abhängig von
den Gegebenheiten können
die Ausführungsbeispiele
der erfindungsgemäßen Verfahren
in Hardware oder in Software implementiert werden. Die Implementierung
kann auf einem digitalen Speichermedium, insbesondere einer Diskette,
CD oder einer DVD mit elektronisch auslesbaren Steuersignalen erfolgen,
die so mit einem programmierbaren Computersystem zusammenwirken,
dass eines der Ausführungsbeispiele
der erfindungsgemäßen Verfahren
ausgeführt
wird. Allgemein bestehen die Ausführungsbeispiele der vorliegenden
Erfindung somit in Software-Programm-Produkten, bzw. Computer-Programm-Produkten
bzw. Programm-Produkten mit einem auf einem maschinenlesbaren Träger gespeicherten
Programmcode zur Durchführung
eines der Ausführungsbeispiele
der erfindungsgemäßen Verfahren,
in eines der Software-Programmprodukte auf einem Rechner oder einem
Prozessor abläuft.
In anderen Worten ausgedrückt, kann
ein Ausführungsbeispiel
der vorliegenden Erfindung somit also ein Computer-Programm bzw.
Software-Programm bzw. Programm mit einem Programmcode zur Durchführung eines
Ausführungsbeispiels
eines erfindungsgemäßen Verfahrens
realisiert werden, wenn das Programm auf einem Prozessor abläuft.