view doc/readme-2-95.txt @ 572:0039f057b90f

Fix time of dive in internal logbook
author heinrichsweikamp
date Mon, 12 Feb 2018 16:24:58 +0100
parents b7eb98dbd800
children
line wrap: on
line source


Doku- & Info-Sammlung zu p2_deco.c und der Einbettung in die V2.95a
===================================================================

Bedeutung der Bildschirm-Farben (in der Normaleinstellung):

grün: feste Kolumnen oder "gute" Zustände.
weiß: Zahlenwerte die im Normalbereich liegen
blau: inaktive Einstellungen und Gase, sowie Werte die noch nicht
      berechnet wurden oder die aufgrund von Einstellungsänderungen
	  (Gaswechsel, LostGas, Setpoint-Wechsel, GF/aGF-Umschaltung, usw.)
	  nicht mehr aktuell sind und gerade neu berechnet werden.
gelb: Hinweise und Vorwarnungen die zu beachten sind, jedoch noch
      kein unmittelbares Handeln erfordern.
rot : Hinweise und Warnungen, die ein unmittelbaren Handeln erfordern.

Die Schwellen für Vorwarnungen sind generell immer auf 70% eingestellt,
für den aktuellen GF-Wert wird die GF-high Einstellung als Schwelle für
die Vorwarnung benutzt.
Vorwarnungen erscheinen als Warnungstext und/oder als Darstellung in
gelber Farbe. Die endgültige Warnung erscheint dann in roter Farbe.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Die Deco-Engine wird über zwei Parameter kommandiert:

	char_O_main_status:
	steuert die Berechnung für die realen Gewebe

	char_O_deco_status:
	steuert die Berechnung der Deko/Aufstiegssimulation
	
Die Kommandos werden über Flags gegeben. Für beide Kommandoparameter
definert sind:

	DECO_MODE_LOOP:
	Wenn gesetzt wird für Kreislaufsysteme gerechnet wenn nicht gesetzt
	wird in OC gerechnet.

	DECO_MODE_PSCR:
	nur in Verbindung mit DECO_MODE_LOOP, schaltet von CCR auf pSCR um.

Nur für char_O_deco_status definiert sind:

	DECO_PLAN_ALTERNATE:
	Auswahl ob der Normalplan oder ein alternativer Plan gerechnet
	werden soll. Von den Ergebnissen des Normal-Plans leiten sich die
	meisten Bildschirmanzeigen ab. Vom alternativen Plan werden nur
	ausgewählte Daten angezeigt, z.B. die der fTTS oder Bailout-
	Berechnung.

	DECO_CNS_CALCULATE:
	Wenn aktiviert, wird der CNS%-Wert berechnet wie er am Ende des
	Tauchgangs sein wird. Dies kann sowohl im Rahmen des normalen wie
	auch des alternativen Plans geschehen, es existieren für beide
	Pläne eigene Ausgabevariablen.

	DECO_VOLUME_CALCULATE:
	Wenn aktiviert, werden die Gasbedarfe für den gesamten Tauchgang
	berechnet. Dies kann sowohl im Rahmen des normalen wie auch des
	alternativen Plans geschehen, jedoch existiert für diese Funktion
	nur ein gemeinsamer Satz Ausgabevariablen. Wenn DECO_MODE_LOOP
	gesetzt ist erfolgen keine Berechnungen, es werden stattdessen
	Nullwerte ausgegeben.

	DECO_ASCENT_DELAYED:
	Wenn aktiviert wird der Aufstieg / dier Dekompression so berechnet
	als ob der Aufstieg nicht sofort, sondern um char_I_extra_time
	verzögert beginnt. Die Funktion kann in beiden Plänen verwendet
	werden, wird jedoch sinnvoller Weise in Verbindung mit dem
	alternativen Plan für fTTS bzw. Bailout-Berechnungen mit delayed
	ascent benutzt.

Die Deco-Engine generiert Warnungen, die in Form von Flags über die
Variable char_O_deco_warnings ausgegeben werden:

	DECO_WARNING_IBCD:
	Wird gesetzt wenn das führende Gewebe im Zustand der isobaren
	Gegendiffusion ist und derzeit netto tatsächlich am aufsättigen
	ist. Auf dem Bildschirm wird unter der IBCD-Warnung zusätzlich
	der aktuelle GF angezeigt, der bei Vorliegen dieser Warnung am
	steigen ist.

	DECO_WARNING_IBCD_lock:
	In diesem Flag wird das Auftreten einer IBCD-Warnung bis über
	das Tauchgangsende hinaus gespeichert. Wird im Deko-Kalkulator
	benutzt um eine IBCD-Warnung zu geben falls eine solche irgend
	wann im Verlaufe der Tauchgangs-Berechnung ausgetreten ist.

	DECO_WARNING_MBUBBLES:
	Wird gesetzt, wenn die Gewebe aktuell soweit übersättigt sind
	dass mit der Produktion von Mikroblasen gerechnet werden muss.
	Achtung: wenn dieses Flag zurückgesetzt wird sind nicht etwa
	die Mikroblasen nicht mehr da, es liegen nur vermutlich nicht
	mehr die Bedingungen für eine Produktion weiterer Mikroblasen
	vor. Der Zustand der aktiven Mikroblasengeneration wird über
	eine Mikroblasen-Warnung in Rot dargestellt.

	DECO_WARNING_MBUBBLES_lock:
	Wird gesetzt sowie erstmalig während eines Tauchgangs die
	Mikroblasen-Warnung gegeben wurde. Bleibt über das Ende des
	Tauchgangs hinaus gesetzt bis die Oberflächen-Berechnungen eine
	Entsättigung der Gewebe melden. Solange diese Warnung aktiv ist
	wird eine Mikroblasen-Warnung in Gelb ausgegeben, sowohl im Tauch-
	wie auch im Oberflächen-Modus.

	DECO_WARNING_OUTSIDE:
	Wird gesetzt, wenn die Gewebe aktuell soweit übersättigt sind, dass
	der Gültigkeitsbereich des ZHL-16 Modells verlassen ist.
	Achtung: wenn dieses Flag zurückgesetzt wird ist nicht etwa der
	Gültigkeitsbereich des Modells wiederhergestellt, es wird lediglich
	weiter gerechnet als ob das Modell noch gelten würde. Inwieweit die
	berechneten Werte (Deko-Plan, Ceiling, ...) dann tatsächlich noch
	praktische Relevanz haben ist unbekannt und extrem von den
	Rahmenbedingungen des Einzelfalls abhängig.
	Solange die Gewebesättigungen außerhalb des Modellbereichs sind
	wird eine Warnung in Rot ausgegeben.

	DECO_WARNING_OUTSIDE_lock:
	Wird zusammen mit DECO_WARNING_OUTSIDE gesetzt und wie bei den
	Mikroblasen erst bei Entsättigung wieder gelöscht.

	DECO_WARNING_STOPTABLE_OVERFLOW:
	Diese Warnung zeigt an, dass der Tauchgang mehr Stopps erfordert
	als in der Stopp-Tabelle gespeichert werden können. Abgeleitete
	Werte wie die Aufstiegszeit, die CNS-Werte am Tauchgangsende und
	die Gasbedarfe können nicht mehr vollständig ermittelt werden und
	werden daher in der Farbe Blau für ungültige Werte dargestellt. Die
	wahren Werte sind mindestens so hoch wie die derart angezeigten.
	Die Angaben zu den ersten Stopps auf dem Bildschirm und in den
	Custom-Views sind jedoch trotzdem korrekt und im weiteren Verlaufe
	des Tauchgangs, wenn die ersten Stopps vorüber sind, wird die
	Tabelle wieder ausreichen um alle restlichen Stopp-Daten zu
	speichern und die Warnung wird zurückgenommen.
	Diese Warnung wird nicht direkt angezeigt, sondern nur indirekt
	über die ungültig-Kennzeichnung der betroffenen Werte und sollte
	bei praktisch durchführbaren Tauchgängen nicht auftreten.

	DECO_FLAG:
	Dieses Flag wird gesetzt, wenn mindestens ein Gewebe am absättigen
	ist. Mit ihm wird die Warnschwelle für zu hohe ppO2-Werte von der
	normalen Schwelle auf die Deko-Schwelle umgeschaltet. Sollte wieder
	tiefer getaucht werden (Jo-Jo) so dass alle Gewebe wieder am
	aufsättigen sind, dann wird das Flag zurückgenommen und auch die
	Warnschwelle wieder zurückgeschaltet.


Viele der internen Routinen der Deko-Engine sind generisch ausgelegt und
können sowohl für Berechnungen zu den realen Geweben benutzt werden, als
auch für die Berechnungen im Rahmen des normalen und des alternativen
Aufstiegs-/Dekompressionsplans. Gesteuert wird dies intern über die
Variable tissue_increment, diese besteht aus einem Flag auf der höchsten
Bitposition und einer Interger-Zahl in den Bitstellen darunter
(Wertebereich 0 - 127). Ist das Flag (Bit 7) gesetzt, so werden die
Berechnungen auf die realen Gewebedaten angewendet, andernfalls auf die
von den Plänen simulierten. Mit der Integerzahl wird die Zeitdauer
bestimmt, für die die Berechnung durchgeführt werden soll. Null bedeutet
eine Zeitdauer von 2 Sekunden, die Zahlen von 1 bis 127 stehen für 1 bis
127 volle Minuten. Durch dieses Vorgehen konnten viele Programmabschnitte
deutlich beschleunigt werden.

Die Deko-Engine wird jede Sekunde aufgerufen und aktualisiert die obigen
sowie weitere Warnungen jede Sekunde bzw. wenn die entsprechenden
Berechnungen durchgeführt wurden. Die Berechnungen für die realen Gewebe
werden jede zweite Sekunde durchgeführt, sekündlich abwechselnd zwischen
der Aktualisierung der Gewebedrücke und des CNS%-Wertes.
Die Aufstiegs- und Dekompressions-Berechnungen werden bei jedem Aufruf
bearbeitet, also in jeder Sekundescheibe. Es wird abwechselnd der Normal-
und der Alternativ-Plan berechnet.
Werden für die Aufstiegsberechnung wesentliche Parameter geändert, wie
z.B. das geatmete oder die verfügbaren Gase, der Setpoint, die GF-
Faktoren, usw., dann wird die laufende Berechnung abgebrochen und im
nächsten Sekunden-Zyklus mit dem nächsten Normalplan begonnen.

Die Daten zu den Gasen werden von der Assembler-Seite aus über folgende
Funktionen gesetzt:

	Für die Berechnung der realen Gewebe:

		setup_gas_registers:
		setzt ein OC-Gas und schaltet den Rechenmodus auf OC

		setup_dil_registers:
		setzt ein Diluent und schaltet auf CCR bzw. pSCR Modus

	Für die Aufstiegs-/Dekoplanung:

		deco_setup_oc_gases:
		übermittelt die Daten OC-Gase sowie das aktuell geatmete
		Gas und	schaltet den Rechnenmodus auf OC

		deco_setup_cc_diluents:
		übermittelt die Daten der Diluent sowie das aktuell benutzte
		Diluent und schaltet auf den CCR bzw. pSCR Modus

Die Aufstiegs-/Dekoplanung wird über einen Enum in char_O_deco_status
gesteuert:

- Einmalig am Beginn des Tauchgangs wird der Zustand DECO_STATUS_INIT
  aufgerufen, dieser initialisiert die Deco-Engine. Nach Abschluss der
  Initialisierung wechselt die Deco-Engine selbsttätig in den Zustand
  DECO_STATUS_START weiter.

- DECO_STATUS_START
  startet eine neue Aufstiegs-/Dekoplanung basierend auf den gesetzten
  Flags und Gasdaten, falls noch eine Aufstiegs- oder Dekoplanung läuft
  wird diese abgebrochen. In diesem Zustand wird auch berechnet ob sich
  der Tauchgang noch innerhalb der Nullzeit befindet. Falls ja, endet die
  Aufstiegsplanung hier im Zustand ECO_STATUS_FINISHED, ansonsten wird
  sie beim nächsten Aufruf der Deco-Engine im Zustand DECO_STATUS_ASCENT
  fortgesetzt.

- DECO_STATUS_ASCENT
  führt die Berechnung des Aufstiegs bis zum ersten Deko-Stopp aus
  (initial ascent). Im alternativen Planungsmodus werden hierbei auch
  Gaswechsel ermittelt. Nach Abschluss der Aufstiegsberechnung wird der
  Zustand auf DECO_STATUS_STOPS weitergeschaltet, der dann beim wiederum
  nächsten Aufruf der Deco-Engine bearbeitet wird.

- DECO_STATUS_STOPS
  berechnet die Dekostopps und alle weiteren Aufstiege, sowie die CNS%-
  Werte am Tauchgangsende und die Gasbedarfe sofern jeweils angefordert.
  Diese Berechnungen laufen üblicherweise über mehrere Aufrufzyklen der
  Deco-Engine, diese signalisiert am Ende jedes Zykluses mit
  DECO_STATUS_STOPS dass (mindestens) ein weiterer Zyklus benötigt wird
  oder mit DECO_STATUS_FINISHED dass die Berechnungen abgeschlossen sind.

- DECO_STATUS_FINISHED
  signalisiert, dass die Aufstiegs-/Dekompressionsplanung abgeschlossen
  ist und die Ergebnisse in den entsprechenden Variablen bereitstehen
  bzw. aktualisiert sind.
  Die Kodierung von DECO_STATUS_FINISHED (benutzt als Ausgabe aus der
  Deco-Engine) entspricht der Kodierung von DECO_STATUS_START (benutzt
  als Eingabe in die Deco-Engine). Die Deco-Engine kann sofort wieder im
  Zustand DECO_STATUS_START aufgerufen werden, worauf ein neuer Planungs-
  zyklus beginnt.

Die Einstellungen und Gasdaten können zwischen zwei Planungszyklen (d.h.
zwischen den Zuständen DECO_STATUS_FINISHED und DECO_STATUS_START) ohne
Einschränkungen geändert werden. Während ein Planungszyklus läuft ist
dies nicht zulässig und kann zu falschen Ergebnissen führen.


Planungsfunktionen 2nd Deco Plan:

Über die Deko-Einstellungen, Untermenu "2nd Deco Plan" können erweiterte
sowie alternative Aufstiegs-/Dekompressionsberechnungen aktiviert werden.

	fTTS/Delay:

	Wird hier ein Wert größer Null ausgewählt, dann wird ein zweiter,
	alternativer Aufstiegs-/Dekoplan berechnet unter der Annahme, dass
	die eingestellte Zeit in Minuten weiterhin auf der aktuellen Tiefe
	verbracht wird und erst dann der Aufstieg beginnt. Die unter dieser
	Annahme berechnete Aufstiegszeit wird als fTTS (future Time to
	Surface) angezeigt. Weiterhin wird der CNS-Wert berechnet, der sich
	am Ende eines derart verlängerten Tauchgangs ergeben wird, er kann
	über einen	CustomView angesehen werden. Wenn dieser CNS-Wert 100%
	erreicht wird außerdem eine Warnung ausgegeben.

	Im Bailout-Fall wird keine fTTS-Berechnung durchgeführt, dafür
	Erfolgt die Aktualisierung der Bailout-Aufstiegsberechnung dann in
	Schnellerer 	Folge.	


	Calc.Gas(B/O):

	Wird diese Option aktiviert, dann wird der Gasbedarf berechnet, der
	für die Beendigung des Tauchgangs unter Einhaltung der Aufstiegs-
	geschwindigkeiten und ggf. Dekompressionsstopps benötigt wird. Wenn
	bei fTTS/Delay Null eingestellt ist, dann wird diese Berechnung
	während der normalen Aufstiegs-/Dekoberechnung durchgeführt und die
	ermittelten Werte gelten bei sofortigem Beginn des Aufstiegs. Wenn
	bei fTTS/Delay eine Zeit größer Null eingestellt ist, dann wird die
	Berechnung im Rahmen des zweiten, alternativen Plans durchgeführt
	Und die berechneten Gasbedarfe gelten für den verzögerten Aufstieg.


	fTTS/Delay und Calc.Gas(B/O) im Modus CCR und pSCR:

	Das oben beschriebene Verhalten verändert sich, wenn sich der OSTC
	im CCR oder im pSCR Modus befindet: Wenn die Option Calc.Gas(B/O)
	ausgeschaltet ist, dann gelten die berechnete Aufstiegszeit und der
	CNS-Wert unter der Annahme dass bis zum Ende des Tauchgangs	weiterhin
	vom Kreislaufgerät geatmet wird.
	Wenn die Option Calc-Gas(B/O) hingegen eingeschaltet ist, dann wird
	die Aufstiegszeit und der CNS-Wert unter der Annahme berechnet,
	dass ab sofort ein Bailout erfolgt, auf dem ersten Bailoutgas für
	die bei fTTS/Delay eingestellte Zeit auf der aktuellen Tiefe
	verblieben wird und dann ein Bailout-Aufstieg eingeleitet wird.
	Die sich so ergebende Aufstiegszeit wird als B/O-Zeit (BailOut)
	angezeigt und die berechneten Gasmengen gelten für die OC-Bailout-
	Gase.


	Bottom Gas, Deco Gas:

	Hier werden die Gasbedarfe in Litern pro Minute Oberflächenrate
	(SAC) eingestellt. Diese Einstellungen werden auch vom Deko-
	Kalkulator benutzt, der über das Simulations-Menu zu erreichen ist.


	Tank Sizes:

	Hier sind die Größen der Tanks für die OC-/Bailout-Gase in Litern
	(Wasservolumen) einzustellen. Diese Einstellungen sind wichtig, da
	sie für die Berechnung der Gasbedarfe im Tauchmodus benötigt
	werden: Im Tauchmodus erfolgt die Ausgabe der benötigten Gasmengen
	in Bar, bezogen auf die jeweiligen Flaschengrößen.


	Tank Press Budget: (ex Tank Fill Press)

	Hier wird festgelegt wie viel Gas aus den jeweiligen Tanks (Flaschen)
	für den Tauchgang verwendet werden darf. Die Einstellung erfolgt in
	Bar Flaschendruck. Erreicht der Bedarf eines Gases 70% des für das
	Gas eingestellten Budgets, dann erfolgt eine Warnung in gelber Farbe.
	Bei 100% erscheint die Warnung in roter Farbe.
	Die benötigten Flaschendrücke können jederzeit über einen CustomView
	eingesehen werden. Dieser zeigt aufgrund der begrenzten Bildschirm-
	fläche nur die Bedarfe von bis zu vier Gasen an, die Warnungen werden
	jedoch für alle 5 Gas erzeugt.
	Alle Gasbedarfs- und Druckberechnungen erfolgen unter der Annahme
	idealer Gase und ohne Betrachtung von temperaturbedingten Druck-
	änderungen.


Gaswechsel:

Im Rahmen der Deko-Pläne werden automatisch Gaswechsel eingeplant, wenn
ein besseres Gas verfügbar ist. Ein besseres, bzw. das beste Gas ist
dasjenige Gas, dessen Wechseltiefe am dichtesten unterhalb der aktuellen
Tiefe liegt. Nur aktivierte Gase die nicht als "Lost" markiert sind
werden berücksichtigt. Gaswechsel werden als Stopp in die Stopp-Tabelle
eingetragen. Die Dauer dieser Stopps beträgt standardmäßig 1 Minute.
Sollte auf der Stopp-Stufe für den Gaswechsel auch ein Dekompressions-
Stopp notwendig sein, so addiert sich die notwendige Stoppzeit für die
Dekompression zu der für den Gaswechsel hinzu.

Im Bereich zwischen der Grundtiefe und dem ersten Dekompressions-Stopp
werden die Gaswechsel-Stopps auf die Tiefen gelegt, ab denen jeweils
bessere Gase verfügbar werden. Gibt es ein besseres Gas auf der aktuellen
Tiefe, so wird ein Wechsel auf der aktuellen Tiefe geplant. Dies geschieht
jedoch nur im Modus alternativer Plan und nur wenn das nächste bessere
Gas nicht in <= 1 Minute Aufstiegszeit erreicht wird. In Normal-Plan
werden Wechsel auf ein besseres Gas erst ab dem ersten echten Deko-Stopp
eingeplant.
Im Falle, dass im alternativen Plan ein Bail-Out Szenario gerechnet wird
sieht die Gaswahl- und Gaswechsel-Strategie wie folgt aus: zunächst wird
dasjenige OC-Gas gewählt welches als 'First' konfiguriert ist. Auf diesem
wird auf aktueller Tiefe für die Zeit verblieben, die als Delayed-Acent-
Time eingestellt ist. Dann erfolgt die Suche nach einem besseren Gas, auf
das je nach Verfügbarkeit im direkten Anschluss oder während des
initialen Aufstiegs gewechselt wird. Ab Erreichen des ersten Dekostopps
werden Gaswechsel in beiden Plänen (normaler und alternativer Plan)
automatisch ermittelt und immer auf die nächsten passenden Dekostopps
gelegt. Im CCR und im pSCR Modus werden derzeit keine automatischen
Gaswechsel berechnet.

-> Die Gaswechselzeit ist bereits in der Options-Tabelle angelegt, wird
   aber momentan noch innerhalb von p2_deco.c auf 1 Minute erzwungen.

Die Deko-Engine plant den Aufstieg mit einer einstellbaren Aufstiegs-
geschwindigkeit von 5-10 Meter pro Minute, diese wird über eine Option in
der Options-Tabelle eingestellt.

-> Die Aufstiegsgeschwindigkeit ist bereits in der Options-Tabelle
   angelegt, wird aber momentan noch innerhalb von p2_deco.c auf 10 m/min
   erzwungen.

Für die Ceiling-Berechnung ist eine neue Codezeile angelegt die dafür
sorgt, dass die Ceiling genau dann zu Null wird, wenn auch die TTS zur
NDL umschaltet. Bisher wird so gerundet, dass die Ceiling zu Null wird
während noch eine TTS angezeigt wird. Die neue Zeile ist noch
auskommentiert und die alte Formel in Betrieb um eine Vergleichbarkeit
der gesamten Berechnungen mit der V2.27 zu ermöglichen. Zur Release-
Version sollte entsprechend umkommentiert werden.


Gasbedarfs-Berechnung:

Es werden die Bedarfe aller Gase berechnet, die bei der Aufstiegs-/
Dekompressionsberechnung eingeplant wurden. Es sind diese die Gase 1
bis 5. Wird aktuell ein manuell konfiguriertes Gas ("Gas 6") geatmet,
so wird dieses in der Gasbedarfsberechnung außen vor gelassen. Die
Berechnung teilt sich in die Bereiche bottom und initial ascent, stops
und intermediate ascents sowie final ascent.

Im Bereich bottom und initial ascent wird die Bottom-Verbrauchsrate
angesetzt, in den übrigen Bereichen die Deko-Verbrauchsrate.
Die Aufstiegssegmente werden mit der konfigurierten Aufstiegsrate (5-10
m/min) berechnet, der final ascent vom letzten Stopp bis zur Oberfläche
mit 1 Meter/Minute. Gibt es keine Stopps, dann reicht der initial ascent
vom Bottom bis zur Oberfläche und wird mit der konfigurierten Aufstiegs-
rate gerechnet, zuzüglich eines Sicherheitsstopps von 3 Minuten auf 5
Metern. Wenn es keinen Deko-Stopp gibt, aber einen Gaswechsel-Stopp der
tiefer liegt als ein letzter regulärer Deko-Stopp liegen würde, dann wird
der Aufstieg geteilt in einen intermediate ascent und einen final ascent.
Für beide werden dann die entsprechenden Aufstiegsraten angesetzt.

Alle Gaswechsel werden der Stopp-Tabelle entnommen, daher sind dort
auch reine Gaswechsel-Stopps eingetragen, d.h. Stopps auf denen keine
Dekompression notwendig ist. Auf den Stopps die einen Gaswechsel
beinhalten wird der Gasbedarf wie folgt berechnet: Der Bedarf für die
gesamte Stoppdauer wird dem neuen Gas zugerechnet, für die konfigurierte
Gaswechsel-Dauer wird ein entsprechender Bedarf zusätzlich auf das alte
Gas aufgeschlagen. So ist sichergestellt, dass die berechneten Gasvolumina
genügend Reserve ausweisen um auf einem Gaswechsel-Stopp die Zeit zu haben
das neue Gas verfügbar zu machen (Stage-Handling).

Die Gasbedarfe werden zum einen in Litern berechnet, diese Werte werden
vom Deko-Kalkulator genutzt, und zum anderen in bar Flaschendruck
entsprechend der eingestellten Flaschengrößen. Hierbei wird mit idealen
Gasen gerechnet, sprich Druck = benötigtes Volumen / Flaschengröße.
Aus dem Vergleich von berechnetem Druckbedarf und konfiguriertem
Flaschendruck werden die Vorwarnung (70%, gelb) und die Hauptwarnung
(100%, rot) generiert. Um bei der Hauptwarnung noch eine minimale Reserve
zu haben sollte daher der Flaschendruck etwas niedriger eingestellt
werden als er tatsächlich ist.


Gewebegrafik:

Die Gewebegrafik ist so skaliert, dass die Länge der Balken dem Druck des
Jeweiligen Inertgases entspricht. Während des Tauchgangs werden die
Balken zusätzlich eingefärbt, die Farbe kennzeichnet ob das Gewebe gerade
am aufsättigen oder am entsättigen ist. Die Balken für den Stickstoff
beginnen weiter links da die Gewebe im Ausgleichzustand an der Oberfläche
bereits zu einem Teil Stickstoff enthalten, nicht jedoch Helium. So
beginnen die "Überdrücke" aus dem Ausgleichszustand heraus auf gleicher
Linie.


Stopp-Tabelle (Deko-Tabelle):

Der Funktionsaufruf ist so verändert, dass beim Aufruf die Menge
der einzutragenden Minuten übergeben werden kann. Diese werden dann auf
den bestehenden Stopp aufaddiert bzw. es wird ein neuer Stopp angelegt.
Es können auch Null Minuten übergeben werden und so ein Stopp "on the
fly" erzeugt werden, z.B. für einen reinen Gaswechsel. Alle Operationen
auf der Stopp-Tabelle sind angepasst um mit Stopps von Null-Dauer zu
funktionieren.
Ein Stopp-Eintrag kann maximal 99 Minuten Stoppdauer aufnehmen. Dauert
ein Stopp länger, so wird eine weiterer Stopp auf gleicher Tiefe angelegt.


No-Fly bzw. Altitude-Wait-Zeit:

Diese Wartezeit wird wie eine Dekompression aus dem aktuellen Gewebe-
zustand heraus auf eine fiktive Tiefe gerechnet, die der gewählten
Höhenstufe entspricht. Für No-Fly wird dabei ein Kabinendruck von 0,6
bar angesetzt. Der Rechenaufwand für diese Berechnung wird die die
Verwendung eines iterativen Optimierungs-Algorithmus wesentlich
reduziert. Der aktuelle Umgebungsdruck wird laufend in die Berechnung
einbezogen, die sich ergebene Zeit auf volle 10 Minuten gerundet
ausgegeben.


Entsättigungszeit:

Die Entsättigungzeit ist so definert dass der Rest-Stickstoffdruck in
allen Geweben maximal 5% des Gewebedrucks aus natürlicher Sättigung
(Atmung von Luft unter aktuellem Umgebungsdruck) entspricht. Der sich
ergebene Druckwert wird dann ebenfalls für das Rest-Helium angesetzt.
Der aktuelle Umgebungsdruck wird laufend in die Berechnung einbezogen,
die sich ergebene Zeit auf volle 10 Minuten gerundet ausgegeben.


pSCR Modus:

Neben dem CCR-Modus wird nun auch der pSCR-Modus vollständig unterstützt,
inklusive optionalen Sensoren. Die Bedienung und die Menus sind weitest-
gehend identisch, nur dort wo im CCR-Modus zwischen den Setpoints und
Sensorbetrieb ausgewählt wird befindet sich im pSCR-Modus die Auswahl
zwischen Sensorbetrieb und berechneten ppO2-Werten.


Handling von Gas 6:

In der bisherigen Implementierung wurden Änderungen an den O2- und He-
Prozenten des Gases 6 sofort an die Berechnungen für die realen Gewebe
innerhalb von p2_deco.c übergeben, ohne dass dazu der dedizierte Menu-
Eintrag welcher die Zusammensetzung von Gas 6 anzeigt explizit ausgewählt
werden musste. Ebenso wurde das Gas6-Event ausgelöst sowie einer der
Prozentwerte verstellt wurde. In den Teil von p2_deco.c, der die Deko-
Berechnungen ausführt, wurden die Werte von Gas 6 jedoch erst übernommen,
wenn besagter Menu-Eintrag ausgewählt wurde, was in der Praxis zu
Diskrepanzen führen muss.

In der jetzigen Implementierung werden die O2- und He-Prozentwerte erst
dann übernommen und als Gas 6 aktiviert, wenn der Gas6-Menueintrag
explizit ausgewählt wird. Die Übernahme erfolgt sodann konsistent in die
Berechnung sowohl der realen Gewebe als auch in die Dekoberechnung, und
auch das Gas6-Event wird erst dann gesetzt.


Deko-Kalkulator:

Der Deko-Kalkulator benutzt die Gasverbrauchsraten, die im Deko-Menu,
Untermenu "2nd Deco Plan" eingestellt sind. Über das Menu "Calculator
Setup" kann eingestellt werden, welcher CCR Setpoint für die Berechnungen
benutzt werden soll (nur relevant im CCR Modus) und ob die normalen oder
die alternativen (aGF) GF-Faktoren für die Dekoberechnung benutzt werden
sollen (gilt für alle Modi). Der Deko-Kalkulator ermittelt die benötigten
Gasmengen in Litern (exakt: Barlitern).
Kommt es aufgrund der benutzen Gase und des Deko-Profils zu einer IBCD,
dann wird auf der Ergebnisseite eine entsprechende Warnung ausgegeben.
Erfordert die Dekompression mehr Stopps als im OSTC gespeichert werden
können, dann wird die Deko-Berechnung abgebrochen und eine "incomplete"
Warnung ausgegeben. Die angezeigte Aufstiegszeit, der CNS-Wert und die
ermittelten Gasbedarfe gelten nur bis zum Ende der angezeigten Stopps.
Achtung: Die tatsächlichen Werte bis zum Erreichen der Oberfläche können
unter Umständen deutlich größer sein als die angezeigten, da insbesondere
die letzten Stopps (die nicht mehr berücksichtigt werden konnten) typisch
am längsten dauern! Dieser Fall sollte jedoch bei Profilen praktisch
durchführbarer Tauchgängen nicht auftreten.


"DECO ZONE" and GF-"Ampel"

Sobald beim Aufstieg mindestens ein Gewebe beginnt abzusättigen erscheint
auf der Anzeige "DECO ZONE" in grüner Schrift. Ab diesem Zeitpunkt wird
auch die Warnschwelle für den ppO2 von der normalen Max-Schwelle auf die
Deco-Max-Schwelle umgestellt. Sollte wieder tiefer getaucht werden und
keines der Gewebe mehr absättigen, so verschwindet die Anzeige "DECO
ZONE" wieder und auch die ppO2 Warnschwelle wird wieder auf den normalen
Max-Wert zurück geschaltet.
Überschreitet während des Aufenthalts in der DECO ZONE der aktuelle GF-
Wert den eingestellten Wert für den GF-high, dann erscheint anstatt des
Textes "DECO ZONE" der aktuelle GF-Wert in gelber Farbe. Erreicht oder
überschreitet der aktuelle GF-Wert 100%, dann wird dieser in roter Farbe
angezeigt.


Allgemeines:

Der Quellcode von p2_deco.c ist in bezüglich Lesbarkeit und Kommentierung
überarbeitet, alle Variablen in p2_deco.c und shared_definitions.h sind
funktional gruppiert und ebenfalls vollständig kommentiert. In diversen
Assembler-Quellcode-Dateien wurde ebenfalls die Kommentierung verbessert.