CH705315A1 - Tabellengesteuertes System. - Google Patents

Tabellengesteuertes System. Download PDF

Info

Publication number
CH705315A1
CH705315A1 CH01267/11A CH12672011A CH705315A1 CH 705315 A1 CH705315 A1 CH 705315A1 CH 01267/11 A CH01267/11 A CH 01267/11A CH 12672011 A CH12672011 A CH 12672011A CH 705315 A1 CH705315 A1 CH 705315A1
Authority
CH
Switzerland
Prior art keywords
value
output
check
input
check value
Prior art date
Application number
CH01267/11A
Other languages
English (en)
Inventor
David Peter Mueller
Original Assignee
Supercomputing Systems Ag
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 Supercomputing Systems Ag filed Critical Supercomputing Systems Ag
Priority to CH01267/11A priority Critical patent/CH705315A1/de
Priority to PCT/CH2012/000162 priority patent/WO2013016831A1/de
Publication of CH705315A1 publication Critical patent/CH705315A1/de

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/045Programme control other than numerical control, i.e. in sequence controllers or logic controllers using logic state machines, consisting only of a memory or a programmable logic device containing the logic for the controlled machine and in which the state of its outputs is dependent on the state of its inputs or part of its own output states, e.g. binary decision controllers, finite state controllers

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Die Erfindung zeichnet sich im Wesentlichen dadurch aus, dass ein Steuerungssystem eine Lookup-Tabelle aufweist, d.h. einen Datenspeicher, bei dem einem Eingangswert (einer Adresse) ein Tabellenwert zugeordnet wird. Der Tabellenwert entspricht dem Ausgangswert, oder aus dem Tabellenwert wird der Ausgangswert durch weitere Schritte (bspw. Verknüpfung mit anderen Resultaten von Lookup-Prozessen) generiert. Gemäss dem Ansatz der Erfindung enthalten die in der Tabelle gespeicherten Daten nebst dem durch den Eingangswert adressierbaren Tabellenwert auch einen Tabellenwert-Prüfwert. Dieser Tabellenwert-Prüfwert schützt sowohl den Eingangswert wie auch den Ausgangswert; wird der Ausgangswert-Prüfwert direkt aus dem Eingangswert-Prüfwert und diesem Tabellen-Prüfwert berechnet, so deckt dieser die gesamte Signalverarbeitungskette ab und garantiert die Richtigkeit und Sicherheit des gesamten Systems.

Description

[0001] Die Erfindung betrifft Steuerungssysteme, bei welchen ein Steuersignal in Funktion einer Anzahl von Eingangsdaten ermittelt wird. Die Erfindung betrifft insbesondere ein Steuerungsysstem, an welche hohen Sicherheitsanforderungen gestellt werden, beispielsweise ein Verkehrssicherungssystem, ein Stellwerk für den Eisenbahnverkehr, die Steuerung einer komplexen Fabrikationsanlage, etc. Die Erfindung betrifft im Weiteren insbesondere ein tabellengesteuertes System.
[0002] Logikfunktionen können durch die Abbildung ihrer Wahrheitstabelle in einer Lookup-Tabelle (Nachschlagetabelle) in einen Speicher implementiert werden. Eine solche Lookup-Tabelle ordnet jedem möglichen Eingangswert innerhalb einer Eingangswert-Datenmenge einen Ausgabewert zu. Eine Lookup-Tabelle wird vor ihrem Gebrauch (offline) erzeugt, oft durch eine Software.
[0003] Lookup-Tabellen sind geeignet, auch komplizierte und/oder einer Berechnung nicht direkt zugängliche Logikfunktionen zu implementieren; ausserdem ermöglichen sie eine sehr schnelle Datenverarbeitung.
[0004] Eventuelle Bitfehler im Speicher oder in der Übertragung des Eingangswertes führen jedoch zu nicht detektierten Fehlern. Daher gilt eine Lookup-Tabelle als nicht sicher.
[0005] In sicherheitsrelevanten Systemen muss daher meist auf den Einsatz des effizienten und schnellen Mittels, Lookup-Tabelle’ verzichtet werden.
[0006] Fig. 6a und 6b zeigen Beispiele für Lookup-Tabellen gemäss dem Stand der Technik. Der Eingangswert (INPUT) ist optional durch eine Prüfsumme (CHKIN) geschützt. Diese kann in der Eingangsstufe überprüft werden und bei nicht-Übereinstimmung mit dem für INPUT erwarteten Wert kann eine Fehlerreaktion ausgelöst werden, welche unter anderem beinhalten kann, dass kein Ausgangswert (OUT) in der Tabelle nachgeschlagen wird.
[0007] Der Ausgangswert wird optional wieder durch eine Prüfsumme gesichert. Diese kann durch eine geeignete Einheit aus dem Ausgangswert berechnet werden (Fig. 6a) oder sie kann bereits in der Tabelle hinterlegt sein (Fig. 6b). Die zweite Variante erfordert etwas mehr Speicherplatz in der Tabelle, dafür etwas weniger Rechenleistung des Systems. Als wesentlicher Unterschied sichert die zweite Variante das System aber bereits gegen zufällige, fehlerbedingte Veränderungen des Tabelleninhaltes («Bit-Flips») da in diesem Falle die Prüfsumme des Ausgangswertes nicht mehr mit diesem konsistent ist. In der in Fig. 6agezeigten Variante wird hingegen auch für einen falschen OUTPUT-Wert in der Tabelle eine dazu konsistente Prüfsumme errechnet und der Fehler kann nicht entdeckt werden.
[0008] Beiden Varianten ist jedoch gemeinsam, dass ein der Akt des Tabellen-Lookup selbst durch keine Prüfsumme geschützt ist. Vielmehr wird das Auslesen eines «falschen» Tabellenwerts (OUT), d.h. eines nicht zur Adresse INPUT zugeordneten Tabellenwerts, in beiden Fällen ein als integer angesehenes Wertepaar OUT, CHK_OUT weitergegeben, und der Fehler wird nicht erkannt. Für sicherheitsrelevante Steuerungssysteme ist diese Einschränkung schwerwiegend und tabellenbasierte Systeme gemäss dem Stand der Technik können nur mit einigem zusätzlichem Aufwand (permanente Selbstüberprüfung; vergleich mit redundanten Systemen, etc.) eingesetzt werden.
[0009] Es ist eine Aufgabe der vorliegenden Erfindung, hier Abhilfe zu schaffen und ein sicheres, tabellengesteuertes System zu schaffen.
[0010] Diese Aufgabe wird durch die Erfindung gelöst, wie sie in den Patentansprüchen definiert ist.
[0011] Die Erfindung zeichnet sich im Wesentlichen dadurch aus, dass ein Steuerungssystem eine Lookup-Tabelle aufweist, d.h. einen Datenspeicher bei dem einem Eingangswert (einer Adresse) ein Tabellenwert zugeordnet wird. Der Tabellenwert entspricht dem Ausgangswert, oder aus dem Tabellenwert wird der Ausgangswert durch weitere Schritte (bspw. Verknüpfung mit anderen Resultaten von Lookup-Prozessen) generiert. Gemäss dem Ansatz der Erfindung enthalten die in der Tabelle gespeicherten Daten nebst dem durch den Eingangswert adressierbaren Tabellenwert auch einen Prüfwert.
[0012] Prüfdaten (oft «Prüfsummen» genannt; der Begriff «Prüfsumme» soll nicht notwendigerweise implizieren, dass die Prüfdaten durch Summenbildung errechnet werden müssen; vielmehr kommen auch andere Verfahren/Algorithmen für die Ermittlung in Frage) sind an sich für die Datenübertragung bekannt und gehören zum Stand der Technik. Sie werden beispielsweise in den meisten kommerziellen Datenübertragungssystemen wie Ethernet etc. eingesetzt. In sicherheitsrelevanten Systemen sind sie zur Sicherung der Datenübertragung oft gar vorgeschrieben, siehe z.B. CENELEC, Norm EN 50 159-1. Die Prüfsumme wird bei der Datenübertragung durch den Absender aus den zu übertragenden Daten berechnet und an das eigentliche zu übertragende Datenpaket angehängt. Der Empfänger berechnet die Prüfsumme aus den erhaltenen Daten neu und vergleicht diesen Wert mit der im Paket mitgeschickten Prüfsumme.
[0013] Gemäss dem Ansatz der Erfindung werden nun Einträge in einer Lookup-Tabelle mit Prüfdaten ergänzt. Es hat sich gezeigt, dass dieser Ansatz auch die Sicherheit von Lookup-Tabellen verbessern kann, selbst wenn dabei nicht dem vorstehend beschriebenen Sender-Empfänger-Schema gefolgt wird. Daher ist gemäss der Erfindung auch eine Anwendung für - unter Umständen sicherheitsrelevante - Steuerungen möglich.
[0014] Die Prüfdaten können beim Erstellen der Tabelle («offline») bestimmt werden; im Allgemeinen werden sie von einer Software berechnet. Die Richtigkeit der Prüfdaten kann optional durch eine unabhängige Software verifiziert werden. Als Verfahren zum Bestimmen der Prüfdaten können beispielsweise mathematische Verfahren verwendet werden, wie sie an sich für Prüfsummen bekannt sind. Eine entsprechende mathematische Funktion kann beispielsweise so ausgebildet sein, dass aus Bitfolgen von unter Umständen verschiedener Länge Prüfdaten konstanter Länge erzeugt werden. Ein Beispiel einer solchen Funktion ist CRC_n, wobei «CRC» für «Cyclic Redundancy Check» steht und n die Anzahl der Bits der Prüfdaten (Prüfsumme) darstellt; bspw. CRC_32. Die Tabellenwert-Prüfwerte können auf Basis einer solchen an sich bekannten Funktion berechenbar sein.
[0015] Gemäss einem bevorzugten Ansatz ist der Tabellenwert-Prüfwert nicht nur vom Tabellen wert, sondern auch vom Eingangswert - bzw. dessen Prüfwert - abhängig. Auch in Ausführungsformen nach diesem Ansatz kann jedem Tabellenwert, der als Ausgangswert weitergegeben wird, ein Ausgangswert-Prüfwert zugeordnet werden, der alternativ auch mit einer vorgegebenen Funktion der vorstehend erwähnten Art aus dem Ausgangswert berechnet werden könnte. Eine solche Funktion kann bspw. eine CRC- oder eine andere bekannte Prüfdaten-Funktion sein. Bei dieser Gruppe von Ausführungsformen geht man davon aus, dass, wie an sich bekannt, dem empfangenen Eingangswert ein Eingangswert-Prüfwert zugeordnet ist, der bspw. ebenfalls mit der vorgegebenen Funktion (z.B. CRC) aus dem Eingangswert bestimmbar ist. Der Tabellenwert-Prüfwert entspricht dann jedoch nicht notwendigerweise dem Prüffunktionswert des Tabellenwerts (d.h. er ist nicht gleich dem Ausgangswert-Prüfwert).
[0016] Vielmehr kann das hier vorgeschlagene System so gestaltet sein, dass der Ausgangswert-Prüfwert aus einer Verknüpfung des Eingangswert-Prüfwerts mit dem Tabellenwert-Prüfwert bestimmbar ist. Dies geschieht so, dass der Ausgangswert-Prüfwert sowohl vom Eingangswert-Prüfwert als auch vom Tabellenwert-Prüfwert abhängt, bspw. so dass ein Bitfehler mindestens eines (signifikanten) Bits des Eingangswert-Prüfwerts oder ein Bitfehler des Tabellenwert-Prüfwerts je dazu fuhren, dass der Ausgangswert-Prüfwert nicht mehr dem Resultat der Anwendung der Funktion auf den Ausgangswert entspricht.
[0017] Dadurch, dass der Tabellenwert-Prüfwert nicht nur vom Tabellenwert, sondern auch vom Eingangswert (d.h. von der Adresse) abhängt, wird auch ein Fehler beim Auslesen aus der Tabelle ein nicht integres Paar von Ausgangswert/Ausgangswert-Prüfwert erzeugen - selbst dann wenn der mit dem Tabellenwert ausgelesene Tabellenwert-Prüfwert an sich korrekt ist.
[0018] Unter «Verknüpfung» zweier Daten wird hier also bevorzugt eine Operation verstanden, die so ausgebildet ist, dass das Resultat von beiden Daten abhängt. Dies kann so geschehen, dass jede Datenbit-Änderung in einer der verknüpften Daten eine Änderung des Resultats der Verknüpfung bewirkt oder so, dass mindestens jede Datenbit-Änderung von signifikanten (verwendeten) Bits einer der verknüpften Daten eine Änderung des Resultats bewirkt. Beispiele für Verknüpfungen in diesem Sinn: sind (bitweises) XOR oder auch Concatenate. Für manche Anwendungen ist bevorzugt, dass das Resultat der Verknüpfung dieselbe Bitlänge aufweist wie die verknüpften Daten (was beim bitweisen XOR natürlich der Fall ist); andere Verknüpfungen sind jedoch nicht ausgeschlossen. Ebenfalls ist möglich, dass bei der Verknüpfung des Tabellenwert-Prüfwerts mit dem Eingangswert-Prüfwert noch weitere Daten berücksichtigt werden, beispielsweise Selektions- oder Maskendaten.
[0019] In der Beschreibung der Ausführungsbeispiele wird als Verknüpfungsfunktion jeweils die Operation XOR (verstanden als bitweises ausschliessliches oder) verwendet; eine Verallgemeinerung auf andere Verknüpfungsfunktionen ist - sofern nichts andere vermerkt - jedoch jeweils ohne weiteres möglich.
[0020] Ganz allgemein ist die Bestimmung des Ausgangswert-Prüfwerts aus dem Eingangswert-Prüfwert und dem Tabellenwert-Prüfwert bevorzugt so, dass das Resultat sowohl vom Eingangswert-Prüfwert als auch dem Tabellenwert-Prüfwert (und eventuell von anderen Daten) abhängt. Durch die hier vorgeschlagene geeignete Wahl der Formel für Eingangs- und Tabellenwert-Prüfwert geschieht das insbesondere so, dass für das Bestimmen des Ausgangswert-Prüfwerts die vorgegebene (Prüfwert-) Funktion nicht benötigt wird.
[0021] Der Empfänger (d.h. die nachgeordnete Stufe) kann anhand der durch Verknüpfungen abgeleiteten Prüfwerte bestimmen, ob ein Fehler vorliegt. Aufgrund des bevorzugten Vorgehens mit zu einem Ausgangswert-Prüfwert verknüpften Eingangswert-Prüfwert und Tabellenwert-Prüfwert würden sich jegliche Fehler auf den Ausgangswert-Prüfwert auswirken und können so erkannt werden: Fehlerhafte Datenübertragung von der vorgeschalteten Stufe (führen zu einem nicht passenden Eingangswert-Prüfwert); Fehlerhafte Adressierung der Tabelle (ein nicht zum Eingangswert/Eingangswert-Prüfwert passender Tabellen wert/Tabellenwert-Prüfwert wird ausgewählt); Fehlerhafter Tabelleneintrag (Tabellenwert oder Tabellenwert-Prüfwert sind falsch und fuhren daher zu einem inkonsistenten Ausgangswert-Prüfwert); Fehlerhafte Datenübertragung an die nachgeschaltete Stufe (führt zu nicht passendem Ausgangswert-Prüfwert).
[0022] Das bedeutet, dass das vorgeschlagene Vorgehen zu einer lückenlosen Sicherheitskette führen und eine Steuerung mit Lookup-Tabelle sicher machen würde. Bekannte Systeme gemäss dem Stand der Technik verwenden nicht diese Sicherungsmethode, sondern verlassen sich z.B. auf mehrere unabhängige Implementierungen der Logikfunktion (redundante Systeme) oder auf aufwändige Selbst-Überprüfungen der verwendeten Rechenwerke und Tabellen.
[0023] Jeder Fehlerfall führt im vorgeschlagenen System zu einem nicht mit dem Ausgangswert konsistenten Ausgangswert-Prüfwert («Start-Ziel Datensicherung»). Die Lokalisierung einer allfälligen Fehlerquelle innerhalb der Verarbeitungskette (Fehleroffenbarung) kann bei Bedarf mittels einer Speicherung der Zwischenwerte und ihrer Überprüfung durch ein geeignetes unabhängiges System (z.B. in Software) erreicht werden.
[0024] Gemäss gewissen Ausführungsformen ist die Logikeinheit gar nicht befähigt, Prüfwerte zu berechnen, sondern nur Prüfwerte zu verknüpfen. Dadurch wird sichergestellt, dass nicht aufgrund einer System-Fehlfunktion beispielsweise zu einem falschen Tabellenwert ein fälschlicherweise passend berechneter Prüfwert beigeordnet werden kann - anstatt dem durch die Verknüpfung abgeleiteten, welcher korrekterweise durch seine Inkonsistenz mit dem Ausgangswert das Auftreten einer Fehlfunktion aufzeigt. Eine fälschliche Berechnung eines Prüfwertes aus dem Ausgangswert könnte im Prinzip den Sicherheitsmechanismus des Systems umgehen - sie wird sicher verhindert, indem kein Code zur Berechnung von Prüfwerten im System vorhanden ist.
[0025] Gemäss alternativen Ausführungsformen kann das System bzw. die Logikstufe selbst Fehleroffenbarungsmechanismen aufweisen, z.B. in der Logikeinheit selbst oder in einer ausgelagerten Fehleroffenbarungseinheit. Solche Fehleroffenbarungsmechanismen beinhalten bspw. die Anwendung der Prüfwert-Funktion auf den Eingangswert, oder die Anwendung der Prüfwert-Funktion auf den Ausgangswert und den Vergleich mit dem entsprechenden Prüfwert. Solche Fehleroffenbarungsmechanismen können von der Norm gefordert und sicherheitstechnisch von Vorteil sein, insbesondere im Hinblick auf die Möglichkeit, dass sich zwei voneinander unabhängige Fehler gegenseitig kompensieren könnten. Im Falle einer ausgelagerten Fehleroffenbarungseinheit kann bspw. durch geeignete Massnahmen sichergestellt sein, dass keine Daten von der Fehleroffenbarungseinheit an die eigentliche Logikeinheit fliessen können (Rückwirkungsfreie Kommunikation; unidirektionale Kommunikation).
[0026] Der erfindungsgemässe Ansatz ermöglicht - sei es im System selbst oder in der nachgeordneten Stufe - eine Fehlererkennung durch einen einfachen Vergleich des ermittelten Ausgangswert-Prüfwerts mit dem Resultat der Anwendung der Prüfwert-Funktion auf den Ausgangswert. Bei negativem Resultat der Fehlererkennung kann das System in einen sicheren Zustand gehen Der Ansatz entspricht also dem failsafe-Prinzip.
[0027] Bei positivem Resultat der Fehlerkontrolle kann der Ausgangswert (bzw. das Ausgangswert-Datensignal) oder ein daraus abgeleitetes Signal als Steuersignal verwendet werden. Das eigentliche Umsetzen von Steuersignalen in Steuerungen ist nicht Gegenstand der vorliegenden Erfindung und soll hier nicht eingehender diskutiert werden.
[0028] Lookup-Tabellen sind aufgrund der kombinatorischen Möglichkeiten nur für Eingangswerte einer begrenzten Bitbreite kommerziell praktikabel (exponentielles Wachstum des notwendigen Speichers). Die Bitbreite des Ausgangswertes ist wesentlich weniger kritisch, da diese nur zu einem linearen Wachstum des notwendigen Speichers führt.
[0029] Das vorstehend beschriebene Steuerungssystem (bzw. Steuerungs- Teilsystem) kann ohne weiteres durch geeignete Massnahmen auch für Systeme verwendet werden, bei denen die Eingangsdaten sehr umfangreich sind und eine einzige Lookup-Tabelle sehr gross und daher schwierig zu handhaben würde. Insbesondere können Mechanismen vorgesehen sein, welche mit dem Auftrennen von Eingangsdaten (insbesondere bei parallelen Datenleitungen kann das auch durch eine geeignete Einrichtung der Hardware geschehen) und/oder der Anwendung von Masken auf die Eingangsdaten aus den Eingangswerten reduzierte Eingangswerte oder mehrere Teilwerte als Adressen für eine oder mehrere Lookup-Tabellen generieren. Das kann mit Maskierungen von relevanten Eingangswert-Bits und der nachgeschalteten Selektion einer relevanten Lookup-Tabelle aus einer Reihe von Lookup-Tabellen einhergehen. Dabei wird gemäss einer hier vorgeschlagenen besonderen Ausführungsformen bei der Bestimmung des Ausgangswert-Prüfwerts jeder Selektions-, Maskierungs- oder sonstiger Schritt berücksichtigt, derart, dass der Ausgangswert-Prüfwert nicht mehr zum Ausgangswert passt (d.h. nicht mehr dem Resultat der Anwendung der vorgegebenen Prüfwert-Funktion auf den Ausgangswert entspricht) wenn irgend ein Schritt einen Fehler aufweist.
[0030] Nebst einer Steuerung der vorstehend diskutierten Art betrifft die Erfindung auch ein entsprechendes Verfahren zum Ermitteln eines Steuersignals. Ein solches Verfahren kann beispielsweise durch Betreiben einer Steuerung der vorstehend diskutierten Art ausgeführt werden. Das Verfahren dient dem Ermitteln eines Steuersignals auf Basis mindestens eines einen Eingangswert mit einem Eingangswert-Prüfwert repräsentierenden Eingangssignals und weist die folgenden Schritte auf: zur-Verfügung-Stellen eines Datenspeichers mit einer Mehrzahl von adressiert abgelegten Ausgangswerten, wobei jedem Ausgangswert ein Tabellenwert-Prüfwert zugeordnet ist (dieser Schritt wird bspw. vor der Laufzeit des Systems ausgeführt); Auslesen eines Ausgangswertes aus dem Datenspeicher unter Verwendung des Eingangswerts oder einer daraus abgeleiteten Grösse als Adresse; Bestimmen eines Ausgangswert-Prüfwerts aus einer Verknüpfung des Eingangswert-Prüfwerts mit dem Tabellenwert-Prüfwert; Optionales Durchführen einer Integritätskontrolle (Fehleroffenbarung) mit einem Vergleich des Ausgangsprüfwerts mit dem Resultat der Anwendung einer vorgegebenen Funktion auf den Ausgangswert, und Ggf. Bei einem positiven Resultat der Integritätskontrolle, Verwenden des Ausgangswerts oder eines daraus abgeleiteten Signals als Steuersignal.
[0031] Dabei kann die Integritätskontrolle im den Ausgangswert ermittelnden System selbst und/oder auch in einer nachgeordneten Stufe - bspw. dem den Steuerbefehl ausführenden Element durchgeführt werden. Bei einem negativen Resultat der Integritätskontrolle wird der Ausgangswert beispielsweise verworfen. Je nach dem kann dies mit einer Anforderung einer erneuten Übermittlung des Eingangswerts, einer erneuten Bestimmung des Ausgangswerts, einer Fehlerprotokollierung, einem Warnsignal an den Benutzer und/oder mit weiteren Massnahmen einhergehen. Im Falle einer Protokollierung des Fehlers kann vorgesehen sein, dass das System beim Überschreiten einer gewissen Fehlerquote angehalten wird, und/oder dass beim Überschreiten einer solchen Fehlerquote eine Warnung an den Benutzer erfolgt.
[0032] Nachfolgend werden Prinzipien der Erfindung und Prinzipien von speziellen Ausführungsformen der Erfindung anhand von schematischen Zeichnungen eingehender beschrieben. In den Zeichnungen bezeichnen gleiche Kennzeichnungen gleiche oder analoge Elemente. Es zeigen: <tb>- Fig. 1<sep>eine Basis-Ausführungsform eines Systems mit Lookup-Tabelle; <tb>- Fig. 2<sep>eine Variante mit Fehleroffenbarungen; <tb>- Fig. 3<sep>eine Ausführungsform mit einer Mehrzahl von Teilsystemen, <tb>- Fig. 4<sep>ein Mehrstufigessystem; <tb>- Fig. 5<sep>eine Ausführungsform mit Ausmaskierung von irrelevanten Bits; und <tb>- Fig. 6a und 6b<sep>ein System gemäss dem Stand der Technik.
[0033] Eine Basis-Ausführungsform der Erfindung ist in Fig. 1 illustriert. Einem beispielsweise von einem vorgeschalteten System an das System übermittelten Eingangswert (iNPUT) ist wie an sich aus dem Stand der Technik bekannt ein Eingangswert-Prüfwert (CHK_IN) zugeordnet. Ein solcher kann redundant sein (d.h. er enthält dann keine Informationen, die nicht aus dem eigentlichen Wert «INPUT» ableitbar sind), und er kann beispielsweise mit einem gängigen Verfahren aus dem Eingangswert ableitbar sein. Es kann beispielsweise gelten: <tb>CHK_IN:=F_CHK(INPUT)=CRCn(INPUT)<sep>(1)
[0034] Wie an sich aus dem Stand der Technik bekannt, kann, das System den Eingangswert-Prüfwert zunächst dazu verwenden, Fehler bei der Datenübertragung vom vorgeschalteten System her und eventuell vom vorgeschalteten System verursachte andere Fehler zu erkennen.
[0035] Die Tabelle (Lookup Table) enthält eine Mehrzahl von Werten, die durch den Eingangswert abrufbar sind (die Eingangswerte sind quasi die «Adressen») der Tabelle.
[0036] Im Unterschied oder zusätzlich dazu ist gemäss dem hier beschriebenen Aspekt der Erfindung auch dem in der Tabelle gespeicherten Tabellenwert OUT ein Tabellenwert-Prüfwert CHK zugeordnet. Dieser ist sowohl vom Tabellenwert als auch vom Eingangswert abhängig, d.h. CHK:=f(OUT, INPUT). Wenn ein Tabellenwert ausgelesen und als Ausgabewert an ein nachgeordnetes System weitergegeben wird, verknüpft das System gleichzeitig auch den Eingangswert-Prüfwert CHK_fN mit dem Tabellenwert-Prüfwert CHK, zum Beispiel: <tb>CHK_OUT:=CHK_IN XOR CHK<sep>(2)
[0037] Dabei sind die vorgängige (offline-)Bestimmung des Tabellenwert-Prüfwerts und die Verknüpfungsfunktion (hier: XOR) so gewählt, dass gilt: <tb>CHK_OUT=F_CHK(OUT)<sep>(3)
[0038] Daher kann das nachgeordnete System/die nachgeordnete Stufe die Sicherheit der Tabelle, die Sicherheit des Ausleseprozesses aus der Tabelle und die Sicherheit der Datenübermittlung mit einer einzigen Fehleroffenbarungsabfrage (Inegritätskontrolle) prüfen. Entspricht CHK_OUT dem nachträglich für OUT berechneten Wert, ist kein Fehler aufgetreten: FOB: CHK_OUT?=F_CHK(OUT).
[0039] Durch dieses Vorgehen ist eine durchgehende Sicherheitskette gewährleistet. Der Empfänger kann prüfen, ob an der richtigen Stelle der richtige Wert gelesen wurde. Ein Bitfehler in der Tabelle, beim Auslesen oder beim Weiterreichen des Ausgabewerts wird bewirken, dass die Fehleroffenbarung einen Fehler detektiert, worauf der Wert verworfen werden kann. Je nach Systemeinstellung und - Programmierung - kann als Folge davon das System angehalten oder eine andere geeignete Massnahme getroffen werden.
[0040] In einer speziellen Gruppe von Ausführungsformen kann vorgesehen sein, dass das System selbst nicht befähigt ist, einen Prüfwert zu berechnen - d.h. die Funktion CHK(X) ist im System nicht implementiert. Eine solche Implementation wird auch nicht benötigt, da das System nur abgespeicherte Prüfwerte und empfangene Prüfwerte miteinander verknüpfen muss. Wenn das System nicht zur Prüfwertbildung befähigt ist, kann auch mit Sicherheit ausgeschlossen werden, dass das System aufgrund eines Programmier-Manipulier - oder sonstigen Fehlers fälschlicherweise einen berechneten Prüfwert anstelle des auf die beschriebene Art bestimmten Prüfwerts CHK_OUT weitergibt und dadurch irrtümlich die Sicherheitsfunktion umgeht.
[0041] In einer anderen Gruppe von Ausführungsformen kann das System selbst auch eine Fehleroffenbarungsfunktionalität haben und beispielsweise eingangsseitig durch die Abfrage CHK_IN?=F_CFIK(INPUT) und/oder ausgangsseitig durch die Abfrage CHK_OUT?=F_CHK(OUT) eventuelle Fehler delektieren; eine solche Fehleroffenbarung kann beispielsweise durch eine Norm gefordert sein. Insbesondere gibt es Normen, die verlangen, dass keine Wertepaare (Wert; Prüfwert) versandt werden, die nachweislich des Prüfwert-Tests falsch sind.
[0042] Das entsprechende Vorgehen ist in Fig. 2illustriert. Fig. 2zeigt ein zu Fig. 1analoges System mit zusätzlicher, optionaler Fehleroffenbarungs-Funktionalität. Die Fehleroffenbarung kann im System selbst oder in einem abgekoppelten unabhängigen System erfolgen. Die Fig. 1entsprechenden Elemente und damit verbundenen Schritte sind analog zu den vorstehend beschriebenen Elementen/Schritten.
[0043] Eine erste, eingangsseitige Fehleroffenbarungs-Stufe FOB1 beinhaltet die Abfrage CHK_IN?=F_CHK(iNPUT), während eine zweite Fehleroffenbarungs-Stufe mit der Abfrage CHK_OUT?=F_CHK(OUT) sicherstellt, dass keine falschen Wertepaare (Wert; Prüfwert) versandt werden. Das System kann beide Fehleroffenbarungs-Stufen FOBn (n=1, 2) oder auch nur eine der beiden Stufen aufweisen, und eine angemessenen Massnahme wie beispielsweise ein Ausschalten des Systems kann ergriffen werden.
[0044] Alle Ausführungsformen der Erfindungen, insbesondere Ausführungsformen der vorstehend beschriebenen und/oder der nachstehend beschriebenen Systeme können optional mit einem zusätzlichen Mechanismus versehen sein, der eine permanente Selbstprüfung des Systems ermöglicht. So kann beispielsweise ermöglicht sein, dass wie das an sich für andere sichere Systeme bekannt ist, Übertragungsfehler auf der gemäss dem OSI Modell tiefer liegenden Protokollschicht erkannt und überwacht werden. Einzelne Fehler werden auf dieser Schicht korrigiert. Treten zu oft Fehler auf, so ist das System nicht mehr sicher.
[0045] Im Fall der sicheren Lookup-Tabelle kann die Tabelle bspw. zyklisch aus dem Speicher ausgelesen werden; über die ausgelesene Tabelle wird eine Prüfsumme gerechnet und gegen den korrekten Wert verglichen. Treten Differenzen auf, so muss die Tabelle neu gespeichert werden. Treten zu oft Differenzen auf, so ist das System nicht mehr sicher.
[0046] Es ist auch möglich, Error Correcting Code (,ECC) Memory zu verwenden, welches auf der tiefer liegenden Schicht einzelne Fehler erkennt und korrigiert. Treten zu viele ECC-Fehler auf, so ist das System nicht mehr sicher, und es muss bspw. entsprechend reagiert werden.
[0047] Oft besteht die Situation, dass nicht alle Bits eines Eingangswertes Einfluss auf bestimmte Bits eines Ausgabewertes haben. Das System lässt sich dann quasi in unabhängige Teilsysteme aufteilen. (Mathematisch kann eine solche Unabhängigkeit die Darstellbarkeit einer übergeordneten Looup-Tabelle in Form einer Blockdiagonalmatrix bedeuten). Eine solche Aufteilung ist oft vorteilhaft, um allzu umfangreiche Tabellen mit entsprechend grossem Aufwand für die Vorberechnung und Speicherung zu vermeiden. In einer solchen Situation können Lookup-Tabellen kombiniert werden, indem ein bestimmter Teil des Eingangswerts als Adresse für eine erste Tabelle und ein bestimmter anderer Teil des Eingangswerts als Adresse für eine zweite Tabelle verwendet wird, wobei die Ausgabewerte der beiden Tabellen ausgangsseitig wieder aneinander gehängt werden können. Auch für diese Situation bieten Ausführungsformen der Erfindung eine sichere Lösung.
[0048] Ein entsprechendes Schema ist in Fig. 3dargestellt. Im dargestellten Ausführungsbeispiel werden zwei Lookup-Tabellen (Lookup Table 1; Lookup Table 2) kombiniert. Mit den Masken MASK1 und MASK2 werden die für Tabelle 1 bzw. Tabelle 2 relevanten Bits ausgewählt; mit den ausgewählten Bits ADDR1 bzw. ADDR2 als Adressen wird der gewünschte Tabellenwert OUT1 bzw. OUT2 ausgelesen. <tb>ADDR1:=MASK1 AND INPUT<sep>(4)
[0049] AND ist in Gleichung (4) als bitweise UND-Verknüpfung zwischen den beiden Operanden zu verstehen; Bit-Positionen, an welchen die Maske auf «0» gesetzt ist werden gleichzeitig aus der Bitfolge ausgeblendet. ADDR1 weist also eine Bitlänge auf, welche der Anzahl gesetzter Bits in MASK1 entspricht. Sind nur wenige Bits in der Maske gesetzt, so kann die Bit-Breite der Adresse so signifikant reduziert werden.
[0050] Die Tabellen 1 und 2 enthalten je nebst den Tabellen werten OUT1 bzw. OUT2 auch im Voraus berechnete, in der Tabelle abgespeicherte Tabellenwert-Prüfwerte CHK1 bzw. CHK2. Diese werden wie vorstehend anhand von Fig. 1beschrieben mit dem Eingangswert-Prüfwert CHK_IN zu einem Ausgabewert-Prüfwert verknüpft, so, dass der Ausgabewert-Prüfwert CHKOUT1 dem berechneten Prüfwert F_CHK(CHK_OUTl), resp. CHK_OUT2 dem Prüfwert F_CHK(CHK_OUT2) entspricht.
[0051] Der Prüfwert CHK_IN enthält Information sämtlicher Bits von IN. Nur die mit der MASK_n selektierten Bits sind jedoch relevant für den Lookup, d.h. über den Wert der anderen Bits wird vorzugsweise nichts angenommen. Als Prüfwert ist daher mit Vorzug ein reduzierter Eingangswert-Prüfwert CPIK_TN1 zu verwenden. Dies wird für Tabelle 1 durch den dargestellten Zwischenschritt mit der Funktion CHK_IN1:=F(MASK1, IN, CHKJN) bewirkt.
[0052] Gemäss einer ersten Möglichkeit gilt dabei: <tb>CHKJNl:= F_CHK(MASK1 AND IN)<sep>(5)
[0053] D.h. der Prüfwert wird einfach mit der Prüfwert-Funktion aus dem ausgewählten Teil des Eingangswerts bestimmt. Für Systeme mittlerer Sicherheit ist das eine gangbare Möglichkeit. Sie hat jedoch einen potentiellen Nachteil. Der Prüfwert wird nämlich neu aus einem Zwischen wert MASK1 AND IN der Berechnung abgeleitet. Ist dieser Zwischenwert falsch, so wird fälschlicherweise eine gültige Prüfsumme erzeugt, und der Schutz der Daten fällt in sich zusammen.
[0054] Eine andere Möglichkeit wäre, gemäss Gleichung (2) den Prüfwert CHK_IN des ganzen Eingangswerts zu verwenden. Diese Lösung löst das Sicherheitsproblem. Sie hat jedoch den potentiellen Nachteil, dass auch nicht relevante Fehler detektiert werden und zu einem Anhalten führen können. Dieser Nachteil muss nicht immer schwerwiegend sein und kann je nach dem in Kauf genommen werden. Mit dieser Variante kann die Grösse der Tabellen nicht ideal reduziert werden.
[0055] Gemäss einer dritten Möglichkeit wird der Prüfwert CHK_FN des ganzen Eingangswerts verwendet, jedoch um alle Beiträge korrigiert, die von nicht relevanten Bits des Eingangswerts stammen. Das kann bspw. wie folgt geschehen: <tb>CHKJNl:= CHKJN XOR F_CHK(NOT(MASKl) AND IN)<sep>(6)
[0056] Der vom vorgeschalteten System erzeugte Prüfwert CHK_IN wird um die ausmaskierten Bits korrigiert. Nur wenn sowohl die vom Quellsystem übertragene Prüfsumme, sämtliche Werte und die Datenmanipulationen (ausmaskieren, Anpassung der Prüfsumme) korrekt sind, kann so wieder eine gültige Prüfsumme entstehen. Im Ausführungsbeispiel gemäss Gleichung (6) beruht das auf folgendem Prinzip. Die CRC stellt eine Standardvariante für die Prüfwert-Berechnung FCHK(X) dar. Eine Eigenschaft der CRC ist, dass das «flippen» (invertieren) einer bestimmten Position im Datenfeld immer zu derselben Veränderung («delta») der CRC führt. Das «delta» kann technisch durch eine einfache XOR-Operation zur bestehenden Prüfsumme dazu «addiert» werden. Mit anderen Worten: unabhängig vom Wert eines Datenfeldes führt das Invertieren von bit-Position «n» zu demselben («delta»), welches zur aktuellen CRC mit der XOR-Operation dazu «addiert» werden kann. Für die gewünschte Reduktion der CRC muss also für jede Bit-Position «n» der Ausdruck, NOT (MASK(n)) AND IN(n) berechnet werden - falls dieser Wert, 1 ́ ist, muss das Bit IN(n) auf «0» gesetzt werden und die CRC muss um «delta(n)» korrigiert werden. Das führt zu Gleichung (6).
[0057] Die Bestimmung des Ausgabewert-Prüfwerts CHK_0UT1 aus dem reduzierten Eingangswert-Prüfwert CHK_fNl und dem Tabellen-Prüfwert CHK1 erfolgt dann gemäss Gleichung (7): <tb>CHK_=UT1:=CHK_IN1 XOR (MASK1 XOR (MASK1 AND IN)) XOR CHK1<sep>(7)
[0058] Durch die XOR-Verknüpfung (zusätzlich zu CHKJN1 und CHK1) mit dem Wert (MASK1 XOR (MASK1 AND IN)) wird auch die Maskierungsfunktion MASK1 in die Prüfwertbildung einbezogen; damit wird sichergestellt, dass auch zu Laufzeit der richtige Parameter MASK1 für die Maskierung verwendet wird.
[0059] Die hier anhand von Lookup-Tabelle 1 beschriebenen Schritte werden für Lookup-Tabelle 2 analog vorgenommen.
[0060] Eine Verallgemeinerung auf drei oder mehr Tabellen ist selbstverständlich möglich. Für eine dritte und mögliche weitere Tabellen werden zusätzliche Masken MASK3, ... MASKk auf den Eingangswert und analog zu obigem Vorgehen auch auf die Prüfwertberechnung angewandt.
[0061] Auf der Ausgangsseite können die Ausgabewerte OUT1, OUT2, ... bei Bedarf miteinander verknüpft, bspw. aneinandergehängt (concatenate) werden. Auch die Prüfwerte können entsprechend verknüpft werden, bspw. ebenfalls durch Aneinanderhängen oder durch ein XOR oder eine andere Operation.
[0062] Viele logische Abfragen, z.B. in der Sicherungstechnik, entsprechen UND- oder ODER-Verknüpfungen einer grossen Anzahl von Signalen/Bits. Solche und viele andere Schaltungen können durch kaskadierte Look-up Tabellen wesentlich effizienter implementiert werden. Eine bestimmte Anzahl von Eingangswert-Bits (z.B. 20) können von einer ersten Anlage (bspw. einer Sensorgruppe) stammen oder auf eine andere Weise miteinander in Verbindung sein und bspw. schon durch die Hardware von den anderen Input-Bits getrennt sein - wird auf eine erste Tabelle geführt, weitere Bits - bspw. von weiteren Anlagen - werden auf weitere Tabellen geführt. Die Resultate der Tabelle sind ein oder mehrere Bits breit und werden zu einem neuen Eingangswert für die nachfolgende Stufe der Kaskade zusammengeführt - der INPUT der Tabelle der zweiten Stufe ist die Aneinanderhängung («concatenate») der Ausgangswerte OUT1, OUT2 der ersten Stufe. Die Prüfsumme des neuen Eingangswertes kann direkt aus den Prüfsummen der Zwischenresultate berechnet werden. Das ist in Fig. 4dargestellt. Die beiden ersten Lookup-Tabellen «Lookup Table 1» und «Lookup Table 2» entsprechen der ersten Stufe der Kaskade und die dritte Lookup-Tabelle (Lookup Table) der zweiten Stufe.
[0063] Das auf Basis der Eingangsdaten INPUTn mit zugeordneten Eingangs-Prüfwerten CHK_INn (n=1, 2) durchgeführte Verfahren entspricht dem anhand Fig. 1beschriebenen Verfahren. Die Ausgangsdaten OUTn werden zusammengehängt und als Adressen für die zweite Stufe verwendet. Auch die Prüfwerte werden zu einem Prüfwert CHK_IN verknüpft. Mit den verknüpften Eingangswerten mit den Verknüpften Prüfdaten der ersten Stufe wird in der zweiten Stufe erneut das zu Fig. 1 analoge Verfahren durchgeführt.
[0064] Eine Verallgemeinerung auf nur eine Tabelle (soweit sinnvoll) in der ersten Stufe oder auf drei oder mehr Tabellen in der ersten Stufe sowie auf mehrere Tabellen in einer zweiten Stufe sowie auf weitere Stufen in der Kaskade ist selbstverständlich möglich. Es sind auch Anwendungen denkbar, in welchen verschiedene Äste der Kaskade eine unterschiedliche Anzahl von Kaskadenstufen aufweisen.
[0065] Sofern eine Trennung der Eingangswert-Bits der beiden Eingabewerte INPUT 1 und INPUT2 einem Datenverarbeitungsschritt entsprechen und daher auch mit Sicherheitsmerkmalen zu überprüfen ist, kann das vorstehend anhand Fig. 3beschriebene Verfahren verwendet werden, um das Zwischenergebnis zu bestimmen.
[0066] Auch in den Ausführungsformen der Fig. 3und 4können eine oder mehrere optionale Fehleroffenbarungsstufen vorhanden sein. Eine solche Fehleroffenbarung kann wie in Fig. 2 einen Vergleich des Prüfwertes mit einem aus dem Datenwert mit FCFIK berechneten Wert beinhalten.
[0067] Wenn der Input eine gewisse Grösse (20-30 bit) überschreitet, wird die Look-up Tabelle unpraktikabel gross. Für die meisten Logikschaltungen sind unter bestimmten Bedingungen sehr viele Bits irrelevant (don’t care). Daher kann folgendes Vorgehen gewählt werden: Ist eine bestimmte Bedingung erfüllt, so werden die irrelevanten Bits ausmaskiert. Es können verschiedene Bedingungen nebeneinander definiert und ausgewertet werden; am Schluss wird die korrekte Antwort gewählt. Dabei ist zu beachten, dass die verschiedenen Bedingungen so definiert werden müssen, dass für jeden möglichen Eingangswert genau eine (und nur eine) Bedingung erfüllt ist.
[0068] Ein Beispiel wird in Fig. 5näher erläutert. Dieses Beispiel beruht auf der Annahme, dass verschiedene Szenarien existieren. Je nach Szenario sind andere Bits der Eingangsdaten IN relevant und werden mit einer entsprechenden Maske ausgewählt. Im gezeichneten Beispiel existieren zwei Szenarien, beispielsweise bei einer Stellwerksteuerung «Zug von rechts» und «Zug von links».
[0069] Das zutreffende Szenario wird durch das Ausmaskieren bestimmter relevanter Bits (SELMASK) und deren Vergleich mit einem Selektionskriterium (SEL) bestimmt. In vielen Anwendungen wird es am praktikabelsten sein, für alle Selektionskriterien dieselbe SELMASK zu verwenden, damit immer genau ein Selektionskriterium erfüllt ist. <tb>SELECT1:=SELMASK1 AND IN ?= SEL1<sep>(8)bzw. <tb>SELECT2:=SELMASK2 AND IN ?= SEL2<sep>(9)
[0070] Die Masken SELMASK 1 bzw. SELMASK2 wählen aus den Eingangsdaten diejenigen Bits aus, die für das Vorliegen von Szenario 1 bzw. Szenario 2 vorgegebene Werte haben müssen (bspw. Zug hat Schwelle links bzw. rechts des Stellwerks überfahren). Der Vergleich mit dem entsprechenden Vorgabewert SEL1 bzw. SEL2 liefert ein Datenbit (ja/nein) SELECT1 bzw. SELECT2.
[0071] Da immer nur ein Selektrionskriterium erfüllt sein soll, reicht im Prinzip einer der beiden Auswahlschritte (8) oder (9) - bzw. reichen m-1 Auswahlschritte. Wie nachstehend noch erläutert kann jedoch ein wie dargestellt redundantes Auswählen als zusätzliches Sicherheitsmerkmal dienen.
[0072] Die Auswahl der für Szenario 1 bzw. Szenario 2 relevanten Datenbits erfolgt wie vorstehend anhand von Fig. 3 diskutiert mit entsprechenden Masken MASK1 bzw. MASK2: ADDRn:=MASKn AND IN (n=l, 2(,...)). Anhand der Adresse wird aus der Lookup-Tabellen n (Lookup Table 1; Lookup Table 2) ein Wert OUTn ausgelesen, dem erfindungsgemäss ein Prüfwert CHKn zugeordnet ist.
[0073] Die Bestimmung von CHK_OUTl erfolgt im dargestellten Beispiel gemäss: <tb>CHK_OUTl:=CHK_IN XOR (MASK1 XOR (MASK1 AND IN)) XOR (SELMASK 1 XOR (SELMASK 1 AND IN)) XOR CHK1 <sep>(8a)
[0074] Analog für CHK_OUT2: <tb>CHK_OUT2:=CHK_IN XOR (MASK2 XOR (MASK2 AND IN)) XOR (SELMASK2 XOR (SELMASK2 AND IN)) XOR CFIK2 <sep>(8b)
[0075] Wie im Ausführungsbeispiel von Fig. 3wird also die Funktion MASKn in die Prüfwertableitung mit einbezogen, so dass ein entsprechender Fehler zu einem falschen Prüfwert führt.
[0076] Aus den Wertepaaren 0UT1|CHK_OUT1 und OUT2|CHK_OUT2 wählt der Selektor (Multiplexer) M anhand eines der beiden Datenbits SELECT1 oder SELECT2 - im gezeichneten Bespiel anhand von SELECT2 - das für das ausgewählte Szenario relevante Wertepaar aus und gibt es als OUT|CHK_OUT weiter. Da hier zusätzlich auch der Auswahlprozess (Select) mit einbezogen wird, führen Fehler bei der Auswahl-Maske SELMASKn oder bei deren Anwendung auf die Eingangsdaten IN ebenfalls zu einem falschen Prüfwert. Damit ist auch der Wert des Selektions-Signales in der Prüfsumme und die Funktion des Multiplexers abgesichert. Diese Ausdehnung der Prüfabdeckung auf den Multiplexer bedingt jedoch, dass sämtliche aktiven Bit-Positionen der Selektionsmasken auch in den Bit-Masken für die Adressen der Lookup-Tabellen gesetzt sind.
[0077] Sollte dies zu einer zu grossen Anzahl von relevanten Eingangsbits einer Tabelle führen, so wäre der gesamte Selektionsvorgang aus der in (8a/8b) gezeigten Formel zu entfernen: <tb>CHK_OUTn:=CHK_IN XOR (MASKn XOR (MASKn AND IN)) XOR CHKn <sep>(9)
[0078] In diesem Fall ist die korrekte Funktion des Multiplexers durch andere geeignete Massnahmen sicher zu stellen.
[0079] Das nachgeschaltete System kann wie in vorstehenden Beispielen durch den Test FOB: CHK_OUT?=F_CHK(OUT) die Sicherheit sämtlicher vorangegangener Datenübermittlungs- und auswertungsschritte prüfen.
[0080] Optional kann wie in den anderen Ausführungsformen das System selbst nicht befähigt sein, einen Prüfwert zu berechnen - d.h. die Funktion CFIK(X) ist dann im System nicht implementiert.
[0081] Alternativ kann auch das System gemäss Fig. 5 selbst eine Fehleroffenbarungsfunktionalität aufweisen. Insbesondere kann eine beliebige Kombination der fünf in der Fig. 5mit FOB 1 - FOB 5 bezeichneten optionalen Fehleroffenbarungen implementiert sein: FOB1: F_CHK(FN) ?= CHKJN (eingangsseitige Fehlerprüfung) FOB2: (F_CHK(OUT1) ?= CHK_OUT1) XOR SELECT1 FOB3: (F_CHK(OUT2) ?= CHK_OUT2) XOR SELECT2
[0082] FOB2 und FOB3 prüfen analog zur ausgangsseitigen Fehlerprüfung gemäss Fig. 2, dass keine falschen Wertepaare aus der jeweiligen Tabelle weitergegeben werden. Durch die Verknüpfung mit SELECT1 bzw. SELECT2 wird sichergestellt, dass nur eines der beiden Wertepaare - nämlich das entsprechend dem Szenario «richtige» Wertepaar» - einen passenden Prüfwert aufweist - bei allen nicht-aktiven Szenarien kann durch diese Formel sogar aktiv gefordert werden, dass der Prüfwert nicht dem Ausgangswert entspricht. FOB4: NOT SELECT1 XOR SELECT2
[0083] Mit FOB4 wird bei der Anwendung des Selektionskriteriums Redundanz geschaffen. Eines der beiden Datenbits SELECT1, SELECT2 muss den Wert «true» bzw. «Ja» haben - und nur eines darf diesen Wert haben. Bei mehr als 2 Szenarien gilt weiterhin, dass nur genau ein Selektionskriterium erfüllt sein darf. FOB5: F_CHK(OUT) ?= CHK_OUT
[0084] FOB5 entspricht der ausgangsseitigen Fehleroffenbarung, wie sie auch in einem nachgeschalteten System durchführbar ist. Bezüglich der Nützlichkeit bzw. der Erfordernis einer solchen Fehleroffenbarung wird auf die vorstehende Beschreibung von Fig. 2 verwiesen.
[0085] Jede dieser Fehleroffenbarungsfunktionalitäten kann auch ohne die jeweils anderen Fehleroffenbarungsfunktionalitäten implementiert werden; selbstverständlich können diese Funktionalitäten auch in Kombination implementiert werden, oder es sind beliebige Unterkombinationen möglich.
[0086] Obwohl in den hier beschriebenen Beispielen die Prüfwertbestimmung über eine CRC-Funktion und die Verknüpfung mit XOR erfolgt, ist das keine Notwendigkeit.

Claims (13)

1. Steuerung mit einem Signalempfänger und Mitteln, die in Abhängigkeit von in empfangenen Signalen enthaltenen Daten ein Steuerungssignal generieren, wobei die Mittel eine Logikeinheit aufweisen, die in Abhängigkeit von einem Eingangswert einen Ausgangswert bestimmt, wobei das Steuersignal in Abhängigkeit vom Ausgangswert generierbar ist, dadurch gekennzeichnet, dass die Logikeinheit eingerichtet ist, einem Eingangswert einen vorbestimmten, in einem Datenspeicher abgelegten Tabellenwert zuweisen, und dass jedem Tabellenwert ein im Datenspeicher abgelegter Tabellenwert-Prüfwert zugeordnet ist und dass der Ausgangswert dem Tabellenwert entspricht oder aus diesem abgeleitet wird, wobei der Tabellenwert-Prüfwert sowohl vom Tabellenwert als auch vom Eingangswert abhängig ist.
2. Steuerung nach Anspruch 1, wobei jedem Eingangswert ein Eingangswert-Prüfwert zugeordnet ist, dadurch gekennzeichnet, dass die Logikeinheit befähigt ist, aus einer Verknüpfung eines Eingangswert-Prüfwerts oder eines daraus abgeleiteten Werts mit dem Tabellenwert-Prüfwert einen Ausgangswert-Prüfwert zu bestimmen, wobei der Ausgangswert-Prüfwert einem Wert entspricht, der mittels einer vorgegebenen Funktion aus dem Ausgangswert berechenbar ist.
3. Steuerung nach Anspruch 2, dadurch gekennzeichnet, dass der Tabellenwert-Prüfwert ohne Kenntnis des Eingangswerts oder Eingangswert-Prüfwerts nicht eindeutig aus dem Ausgangswert bestimmbar ist.
4. Steuerung nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass die Logikeinheit nicht befähigt ist, aus dem Ausgangswert den Ausgangswert-Prüfwert zu berechnen.
5. Steuerung nach einem der Ansprüche 2 bis 4, dadurch gekennzeichnet, dass die Verknüpfung von Eingangswert-Prüfwert und Tabellen-Prüfwert eine bitweise XOR-Operation ist.
6. Steuerung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass die Logikeinheit eingerichtet ist, auf den Eingangswert eine Mehrzahl von verschiedenen Masken anzuwenden, um eine entsprechende Mehrzahl von Adressen zu einer Mehrzahl von Tabellen zu bestimmen, jeder Adresse einen im Datenspeicher abgelegten Ausgangs-Teilwert zuzuweisen und die Ausgangs-Teilwerte zu einem gemeinsamen ersten Ausgangswert zu verknüpfen.
7. Steuerung nach Anspruch 6, dadurch gekennzeichnet, dass die Logikeinheit befähigt ist, aus einer Verknüpfung eines Eingangswert-Prüfwerts oder eines davon abgeleiteten Werts mit dem Tabellenwert-Prüfwert einen Ausgangswert-Teil wert-Prüfwert zu bestimmen, wobei vorzugsweise der Eingangswert-Prüferwert umgerechnet wird, indem die Beiträge von irrelevanten Bits des Eingangswerts kompensiert werden.
8. Steuerung nach Anspruch 6 oder 7, dadurch gekennzeichnet, dass die Logikeinheit befähigt ist, den ersten Ausgangswert als Eingangswert einer weiteren Stufe zu verwenden, wobei in der weiteren Stufe dem ersten Ausgangsweit ein zweiter Ausgangswert zugewiesen und ein erster Ausgangswert-Prüfwert mit einem Tabellenwert-Prüfwert der weiteren Stufe zu einem zweiten Ausgangs-Prüfwert der weiteren Stufe verknüpft wird.
9. Steuerung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass die Logikeinheit eingerichtet ist, auf den Eingangswert eine Mehrzahl von verschiedenen Masken anzuwenden, um eine entsprechende Mehrzahl von Adressen zu bestimmen, jeder Adresse einen im Datenspeicher abgelegten Ausgangs-Teilwert zuzuweisen und mittels eines Selektionskriteriums zu bestimmen, welcher der Ausgangs-Teilwerte relevant ist und diesen als Ausgangswert zu bestimmen.
10. Steuerung nach Anspruch 9, dadurch gekennzeichnet, dass jedem Ausgangs-Teilwert ein Tabellenwert-Prüfwert zugeordnet ist, und dass ein Ausgangs-Teilwert-Prüfwert durch eine Verknüpfung eines Eingangswert-Prüfwerts mit dem Tabellenwert-Prüfwert und vorzugsweise der entsprechenden Maske und/oder einer Selektionsmaske oder aus einem davon abgeleiteten Wert bestimmbar ist.
11. Steuerung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass bei der Bestimmung eines Ausgangswert-Prüfwerts aus dem Tabellenwert-Prüfwert jeder Schritt bei der Verarbeitung des Eingangswerts zum Ausgangswert berücksichtigt wird, derart, dass ein Bitfehler bei irgendeinem der Schritte einen Fehlerhaften Ausgangswert-Prüfwert bewirkt.
12. Verfahren zum Ermitteln eines Steuersignals auf Basis mindestens eines einen Eingangswert mit einem Eingangswert-Prüfwert repräsentierenden Eingangssignals, aufweisend die Schritte: – zur-Verfügung-Stellen eines Datenspeichers mit einer Mehrzahl von adressiert abgelegten Ausgangswerten, wobei jedem Ausgangswert ein Tabellen wert-Prüfwert zugeordnet ist; – Auslesen eines Ausgangswertes aus dem Datenspeicher unter Verwendung des Eingangswerts oder einer daraus abgeleiteten Grösse als Adresse; – Bestimmen eines Ausgangswert-Prüfwerts aus einer Verknüpfung des Eingangswert-Prüfwerts mit dem Tabellenwert-Prüfwert.
13. Verfahren nach Anspruch 12, gekennzeichnet durch die weiteren Schritte: – Durchführen einer Integritätskontrolle mit einem Vergleich des Ausgangsprüfwerts mit dem Resultat der Anwendung einer vorgegebenen Funktion auf dem Ausgangswert, und – bei einem positiven Resultat der Integritätskontrolle, Verwenden des Ausgangswerts oder eines daraus abgeleiteten Signals als Steuersignal.
CH01267/11A 2011-07-29 2011-07-29 Tabellengesteuertes System. CH705315A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CH01267/11A CH705315A1 (de) 2011-07-29 2011-07-29 Tabellengesteuertes System.
PCT/CH2012/000162 WO2013016831A1 (de) 2011-07-29 2012-07-11 Tabellengesteuertes system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CH01267/11A CH705315A1 (de) 2011-07-29 2011-07-29 Tabellengesteuertes System.

Publications (1)

Publication Number Publication Date
CH705315A1 true CH705315A1 (de) 2013-01-31

Family

ID=46514039

Family Applications (1)

Application Number Title Priority Date Filing Date
CH01267/11A CH705315A1 (de) 2011-07-29 2011-07-29 Tabellengesteuertes System.

Country Status (2)

Country Link
CH (1) CH705315A1 (de)
WO (1) WO2013016831A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2853465B1 (de) 2013-09-27 2016-03-16 Siemens Schweiz AG Logikschaltung und Verfahren zum Ersetzen eines zwangsgeführten Sicherheitsrelais

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3743438A1 (de) * 1987-12-21 1989-06-29 Siemens Ag Verfahren und einrichtung zum steuern des uebergangs eines endlichen automaten von einem momentanzustand in einen folgezustand
US7543216B1 (en) * 1998-03-16 2009-06-02 Actel Corporation Cyclic redundancy checking of a field programmable gate array having an SRAM memory architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3743438A1 (de) * 1987-12-21 1989-06-29 Siemens Ag Verfahren und einrichtung zum steuern des uebergangs eines endlichen automaten von einem momentanzustand in einen folgezustand
US7543216B1 (en) * 1998-03-16 2009-06-02 Actel Corporation Cyclic redundancy checking of a field programmable gate array having an SRAM memory architecture

Also Published As

Publication number Publication date
WO2013016831A1 (de) 2013-02-07

Similar Documents

Publication Publication Date Title
EP1802019B1 (de) Erkennung von Fehlern bei der Übermittlung von Daten
EP3069202B1 (de) Sicherheitssteuerung mit konfigurierbaren eingängen
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE2724409A1 (de) Datenverarbeitungssystem
WO2016034349A1 (de) Verfahren zur seriellen übertragung eines rahmens über ein bussystem von einem sender zu mindestens einem empfänger und teilnehmerstation für ein bussystem
EP2814193A1 (de) Verfahren und System zur Erkennung von Fehlern bei der Übertragung von Daten von einem Sender zu zumindest einem Empfänger
EP1811722B1 (de) Verfahren und Vorrichtung zur Umwandlung mehrkanalig vorliegender Nachrichten in eine einkanalige sichere Nachricht
DE102014105207B4 (de) Verfahren zum Betreiben eines Kommunikationsnetzwerks und Kommunikationsnetzwerk
CH705315A1 (de) Tabellengesteuertes System.
EP2837142A1 (de) Verfahren zum übertragen von prozessdaten in einer automatisiert gesteuerten anlage
DE1287339B (de) Schaltungsanordnung zur Fehlererkennung und -korrektur
EP0977395A1 (de) Verfahren zur sicheren einkanaligen Uebertragung von Daten zwischen den Rechnerknoten eines Rechnerverbundes sowie Rechnerverbund und Rechnerknoten
EP3550748A1 (de) Verfahren zur erkennung von datenverfälschungen bei einer datenübertragung über eine fehlersichere kommunikationsverbindung
EP1737132A1 (de) Verfahren zur Berechnung von CRC-Prüfwerten und Logikschaltung
DE102016113322A1 (de) Slave-Steuerung für Ethernet-Netzwerk
DE1937259B2 (de) Selbstpruefende fehlererkennungsschaltung
DE102008049662B4 (de) Verfahren und Vorrichtung zum Prüfen einer asynchronen Übertragung von Steuersignalen
WO2005101208A1 (de) Verfahren und steuerungssystem zum erkennen eines fehlers bei einer verarbeitung von daten in einem verarbeitungssystem
DE102012100818B3 (de) Verfahren zur Datenübertragung in einem Feldbussystem
DE102017208826A1 (de) Eingebettete zyklische Redundanzprüfungswerte
EP1780923A1 (de) Übertragung von Datentelegrammen
EP0012828A1 (de) Schaltungsanordnung zur Korrektur von bytestrukturierten Fehlern
WO2023020807A1 (de) Automatisches erkennen und korrigieren von speicherfehlern in einem sicheren mehrkanaligen rechner
EP1763168A1 (de) Verfahren zum Erzeugen von Datentelegrammen, die CRC-Sicherungsanhänge aufweisen, welche eine verringerte Restfehlerwahrscheinlichkeit bieten
DE202006016012U1 (de) Systemarchitektur für eine Firmware

Legal Events

Date Code Title Description
AZW Rejection (application)