Hallo
Den letzten Thread "Logische Schaltung basierend auf PWM-Input" habe ich
sehr ungünstig gestartet und die Hilfsbereitschaft wohl überstrapaziert.
Entschuldigt.
Ich beschreibe gerne die gesamte Situation, denn vielleicht/vermutlich
gehe ich das Problem auch falsch an.
Input:
Ich habe 3 RC-Empfänger vom Typ FrSky X8R. Die liefern mir auf einem
bestimmten Kanal (8) ein PWM Signal. Zudem liefern sie mir je ein S-BUS
Signal (nur TX, 100000BAUD 8E2), invertiert.
Output:
Nur noch ein S-BUS Signal
Umgebung:
Das ganze kommt in ein Modellflugzeug, das zu Integrationstests in die
zivile Luftfahrt verwendet werden soll. Darum enthält es 2
Flugkontroller mit je separater Anbindung und somit zwei Piloten. Aus
Sicherheit wird noch ein dritter Pilot über eine Anbindung ohne
Flugkontroller verfügen.
Fliegen kann am Ende nur einer, wer wann fliegt ist genau definiert
(Wahrheitstabelle).
Es soll kein uC sein, weil von denen genügend an Board sind. Und ein
Störfall ist, dass aufgrund von elektromagentischen Störungen die
Flugkontroller ausfallen können. Eine Lösung ohne uC wird von der
Aufsichtsbehörde als robuster eingestuft. Oder zumindest als andere
Technologie die eine andere Ausfallcharakteristik hat.
Funktion:
Mit den drei PWM-Werten, die jeder der drei Piloten selbst bedient, soll
gesteuert werden, wessen Steuerfunktion auf die Steuerflächen geleitet
wird.
Wenn die Umschaltung der seriellen Schnittstellen zu "Datenverlust" und
unvollständigen Datenpaketen führt, ist das egal. Das S-BUS Protokoll
ist genügend stabil, dass ich während dem Betrieb Komponenten hinzufügen
kann.
Meine Idee ist, dass ich den PWM Kanal dazu verwende zu entscheiden, wer
fliegt. Die Werte für PWM lassen sich frei definieren zwischen 1000ms
und 2000ms.
Meine Überlegung:
- PWM < 1200ms: Pilot nicht anwesend
- PWM < 1500ms: Pilot will nicht fliegen
- PWM < 1700ms: Pilot will fliegen
- PWM > 1700ms: Pilot erzwingt fliegen
Die Piloten sind:
- PIC - Pilot in Command
- SIC - Second in Command
- TIC - Trainer in Command
Logik:
- Wenn TIC nicht anwesend, fliegt PIC, wenn der auch nicht anwesend,
fliegt SIC, wenn auch der nicht anwesend, ist S-BUS-Link zu stoppen
(führt zur Auslösung des Notfallsystems, nicht Bestandteil hier)
- Wenn niemand fliegen will, fliegt TIC, wenn nicht anwesend fliegt
PIC,wenn nicht anwesend fliegt SIC
- Wenn alle fliegen wollen siegt TIC vor PIC vor SIC
- Wenn alle fliegen erzwingen wollen sieht auch TIC vor PIC vor SIC
Normale Situation:
- PIC will fliegen, SIC nicht, TIC nicht anwesend. Wenn nun der SIC die
Steuerung übernehmen will, so schaltet er auf "will fliegen". Die
Übergabe ist jedoch erst abgeschlossen wenn der PIC bestätigt mit "will
nicht fliegen".
- Wahrscheinlichstes Ausnahmeszenario: PIC ist am fliegen und der
Flugkontroller hängt sich auf und friert die Steuerung ein. der PIC kann
nicht mehr an den SIC übergeben. Hier kann der SIC mit "fliegen
erzwingen" die Steuerung "an sich reissen".
Somit denke ich, dass ich eine Wahrheitstabelle habe, die definiert,
welche Inputwerte zu welchem Ergebnis führen. Meine Überlegung war, dass
diese Wahrheitstabelle mit entsprechenden konventionellen AND/OR etc.
Bausteinen gelöst wird, was am Ende einen "Mehrfachschalter" bewegt. Ich
traute mir das eigentlich zu selbst rauszuknobeln, damit ich hier nicht
alles erfragen muss. Stelle das aber nun gerne als gesamtes zur
Diskussion. Ich denke, ich habe drei Arbeitsgebiete:
1. Eingangsverarbeitung der PWM Werte (quasi mein Thread von gestern)
2. Umsetzung der Wahrheitstabelle
3. 3-Fachschalter für eine serielle Schnittstelle (da habe ich für den
Versuch an eine Kombination von "digitalen Relais" gedacht
Besten Dank, wenn ihr mir grundsätzliche Tipps habt, wie ich das angehe,
oder wenn es konkrete Tipps für einzelne Problemstellungen sind.
Und nochmals, ja, mit einem uC wäre das viel viel einfacher, aber ich
will das "konventionell" versuchen und nur im Notfall doch einen uC
nehmen.