Skip to content

Anforderungen an Projektierung und Plan-Image (REQ-PLN) ​

Umgesetzt in crates/railit-plan und crates/railit-planning. Das Plan-Image hat das Format v5 (Durchrutschwege, Flankenschutz, Bahnübergänge, Signalarten und -systeme, Grenzen, Längen, gekoppelte Weichen). Nachweise in crates/railit-plan/tests/image.rs, crates/railit-planning/tests/planning.rs und crates/railit-planning/tests/slip.rs.

Plan-Image ​

IDAnforderungGefährdungNachweis
REQ-PLN-001Der Kern arbeitet nur mit einem Plan, der vollständig geprüft wurde (PlanView::parse). Ein teilweise gültiger Plan wird nie verwendet.H-004Typsystem: PlanView entsteht nur über parse; railit_runtime::load_plan
REQ-PLN-002Inkonsistente Pläne werden abgewiesen: ungültige Verweise, leere Fahrstraßen, doppelte Weichen oder Abschnitte, Weichen außerhalb der Abschnitte ihrer Fahrstraße, unsymmetrische oder reflexive Feindlichkeiten, ungültige Namen.H-004inconsistent_plans_are_rejected
REQ-PLN-003Jede Veränderung des Images wird erkannt (SHA-256 über den gesamten Inhalt).H-004, H-008every_single_bit_flip_is_detected (jedes Byte, mehrere Bits)
REQ-PLN-004Ein Plan kann mit Ed25519 signiert werden. railitd startet nur mit einem Plan, dessen Signatur zum hinterlegten Schlüssel passt; unsignierte Pläne nur mit ausdrücklicher Freigabe (--allow-unsigned).H-008signatures_are_checked, unsigned_or_foreign_plans_are_refused (railitd), keygen_compile_verify_info (CLI)

Projektierung ​

IDAnforderungGefährdungNachweis
REQ-PLN-010Hauptsignale (auch Mehrabschnittssignale, ETCS-Halt-Tafeln) stehen am Gleisende in Wirkrichtung oder höchstens 30 m davor (PlanningConfig::signal_gap), ohne Bahnübergang oder Kreuzungsstelle dazwischen, und dahinter beginnt ein anderer Gleisfreimeldeabschnitt. Die Längen im Plan zählen ab dem Signal: Fahrweg mit dem Rest des Startgleises und ohne das Stück hinter dem Zielsignal, Durchrutschweg und Annäherungsabschnitt ab dem Signal.H-001, H-005signals_must_stand_at_tvd_boundaries, signals_may_stand_shortly_before_the_tvd_boundary
REQ-PLN-011Fahrstraßen werden vollständig erzeugt: jeder Weg von einem Startsignal bis zum nächsten Hauptsignal gleicher Richtung oder einem Netzende, mit allen Weichenlagen und den Abschnitten in Fahrreihenfolge.H-001, H-002example_routes_are_generated, Property-Test ladder_stations_plan_and_verify
REQ-PLN-012Zwei Fahrstraßen sind feindlich, wenn sie (1) dasselbe Startsignal haben, (2) einen Abschnitt oder (3) eine Weiche des Fahrwegs teilen, (4) der Durchrutschweg der einen im Fahrweg der anderen liegt – außer die andere beginnt am Zielsignal der einen (anschließende Fahrstraße), (5) ihre Durchrutschwege einen Abschnitt teilen, (6) sie für eine Weiche (Fahrweg, Durchrutschweg oder Flankenschutz) verschiedene Lagen verlangen oder (7) die eine an einem Schutzsignal der anderen beginnt.H-001example_routes_are_generated, example_phase2_data, ladder_stations_plan_and_verify
REQ-PLN-013Ein zweites, unabhängig aufgebautes Verfahren prüft jeden Plan gegen das Netz (Fahrstraßen, Feindlichkeiten, Elemente). Nur übereinstimmende Pläne werden geschrieben; das geschriebene Image wird zurückgelesen und verglichen.H-004verification_detects_tampering, compile
REQ-PLN-014Wege, die ohne Zielsignal in sich zurückführen, und Fahrstraßen, die einen Abschnitt mehrfach befahren, sind Fehler.H-004loops_without_signal_are_rejected
REQ-PLN-015Jede Fahrstraße mit Zielsignal erhält einen Durchrutschweg: ab dem Zielsignal bis zur ersten Grenze eines Gleisfreimeldeabschnitts hinter der Durchrutschweglänge (Vorgabe 100 m). Spitz befahrene Weichen im Durchrutschweg liegen im geraden Strang (ohne Angabe links). Endet die Fahrstraße an Netzgrenze oder Prellbock, gibt es keinen Durchrutschweg.H-001, H-009example_phase2_data
REQ-PLN-016Für jede Weiche in Fahrweg und Durchrutschweg ist der nicht befahrene Strang geschützt: durch ein Signal, das auf die Weiche zu gerichtet ist (Haupt- oder Rangiersignal), oder durch eine Schutzweiche in abweisender Lage; spitz erreichte Weichen werden auf beiden Strängen bis zur Tiefe 16 weiterverfolgt, ein Prellbock schützt. Lässt sich ein Strang nicht schützen (Netzgrenze), ist das ein Projektierungsfehler. Jede Maßnahme ist dem Abschnitt zugeordnet, den sie schützt.H-001flanks_must_be_protectable, example_phase2_data
REQ-PLN-017Jedes Vorsignal kündigt genau ein Hauptsignal an: das nächste in Wirkrichtung, ohne spitz befahrene Weiche dazwischen. Sonst ist das ein Projektierungsfehler.H-009distant_signals_need_a_unique_main_signal
REQ-PLN-018Bahnübergänge im Fahrweg und im Durchrutschweg (innerhalb der Durchrutschweglänge) gehören zur Fahrstraße. Die Geschwindigkeit einer Fahrstraße ist die kleinste Geschwindigkeit der abzweigend befahrenen Weichen (ohne solche Weichen: Streckengeschwindigkeit).H-010, H-002example_phase2_data, level_crossing_within_long_overlap
REQ-PLN-019Jeder Stellbereich wird für sich projektiert. Fahrstraßen können an einer Grenze enden. Je Grenze bestimmt die Projektierung den Annäherungsabschnitt (von der Grenze bis zum ersten nach innen gerichteten Hauptsignal, dem Einfahrsignal, samt dessen Durchrutschweg); vor dem Einfahrsignal liegt keine spitz befahrene Weiche. Ein Durchrutschweg darf keine Grenze überschreiten. Die Gegenprüfung leitet Grenzen und Annäherungsabschnitte unabhängig her. Format v3 enthält die Grenztabelle.H-001, H-012nordbahn_compiles_per_area, borders_need_an_entry_signal, inconsistent_border_data_is_rejected
REQ-PLN-020Beim Laden wird ein Plan-Image abgewiesen, wenn zwei Fahrstraßen mit demselben Startsignal nicht als feindlich eingetragen sind (REQ-PLN-012, Regel 1). Darauf stützt sich die lineare Invariantenprüfung (REQ-IXL-023): Jede eingestellte Fahrstraße rechtfertigt höchstens ihr eigenes Startsignal.H-007inconsistent_phase2_data_is_rejected
REQ-PLN-021Gekoppelte Weichen (REQ-TOP-017): Ein Weg, der gekoppelte Weichen gegen ihre Kopplung verlangt, ist keine Fahrstraße. Verlangt eine Fahrstraße eine gekoppelte Weiche in Fahr- oder Durchrutschweg, verlangt sie die Partnerweiche in der gekoppelten Lage als Flankenschutz; ebenso zu jeder gekoppelten Schutzweiche. Liegt eine so erzwungene Weiche zum Flankenweg hin, geht die Flankenschutzsuche über ihre Spitze hinaus weiter (z. B. über das zweite Zungenpaar einer DKW bis zum Signal vor dem anderen Ende). Gekoppelte Weichen im Annäherungsabschnitt einer Bereichsgrenze werden nicht projektiert. Das Plan-Image (v5) führt die Kopplung je Weiche; beim Laden wird es abgewiesen, wenn eine Kopplung nicht symmetrisch ist oder eine Fahrstraße bzw. ein Annäherungsabschnitt eine gekoppelte Weiche ohne ihre Partnerweiche in gekoppelter Lage verlangt. Die Gegenprüfung leitet Wege, Partner und Flankenschutz unabhängig aus einer Tabelle der zulässigen Lagenpaare her.H-001, H-002, H-004routes_over_a_double_slip_require_all_four_points, single_slip_has_one_curve, crossover_points_move_together, tampered_couplings_are_rejected, coupled_points_must_not_lie_in_an_approach, Szenario 25
REQ-PLN-022Vier-Augen-Prinzip: Ein Plan kann von Prüfern freigegeben werden; eine Freigabe ist eine Ed25519-Signatur des Prüfers über einen Kontext und die Prüfsumme des Plans (getrennt von der Plansignatur). railit plan approve gibt erst nach Prüfung der Signatur des Erstellers und unabhängiger Gegenprüfung gegen das Netz frei. Mit --approvals N starten railitd und railit-node nur, wenn mindestens N verschiedene Prüfer aus --approver-key den Plan freigegeben haben; eine Freigabe des Erstellers, eines fremden Schlüssels oder zu einem anderen Plan weist den Plan ab.H-008, H-004plans_need_approvals_from_distinct_trusted_reviewers, plans_need_four_eyes_approval (railitd), keygen_compile_verify_info (CLI)

Lizenz: NCSL v1.0 · Nicht zugelassen für den realen Bahnbetrieb.