Aenderungsverfolgung KEx TLS
============================

offene Punkte ==========================================================================================================

FG004Default, Datenkatalog: Beim Typ 44 Codedefinition ist derzeit nur die Versendung eines Parametersatzes zulaessig,
gemae TLS sind aber 255 erlaubt.
Problem:
(1) Wird ATG auf Array mit 255 Eintraegen erweitert, funktioniert zwar Persistenz des Parameters, es wird aber neuer
	Mechanismus in KExTLS gebraucht, der Array von DE-Blocken erzeugt und versendet. Zudem ergeben sich Probleme beim
	Zuordnen der Einzelrckmeldungen zur ATG.
(2) Andere Mglichkeit besteht in der Definition von 255 ATGs, da Aspekt Paramter nicht vervielfacht werden kann. Dies
	fhrt aber zu einer Inflation von Parametersaetzen (255 Stck zusaetzlich je WZG, d. h. im Rahmen einer VRZ wird
	dies zu einigen Hundertausend zusaetzlichen Parametern fhren...)

offene Punkte (befinden sich aktuelle in Umsetzung) ====================================================================

----------------------------------------------------------------------------
Zusaetzlicher Aufrufparameter -typZuFgZuordnung=typ.deXyz,129[:typ.deAbc,213]
----------------------------------------------------------------------------

08.02.2016 - V 5.4.3 =============================================================================================================
----------------------------------------------------------------------------
Vermeidung von NullPointerExceptions bei nicht existierenden Umsetzungsmodule
----------------------------------------------------------------------------

Fehlerhaften bzw. nicht existierenden Umsetzungsmodule in der Versorgung werden von KEx-TLS beim Start erkannt
und mit einer Fehlermeldung dokumentiert.
Wenn aber die KEx-Tls trotz der fehlerhaften Versorgung weiter betrieben wird und dann im spteren Verlauf zu den
betroffenen DE Daten bertragen werden, dann kommt es bei den entsprechenden Zugriffen auf das nicht vorhandene
Umsetzungsmodul zu NullPointerExceptions und in Folge dazu, dass die restlichen DE-Blcke des empfangenen
Telegramms der gleichen Streckenstation nicht mehr umgesetzt werden.
Da an einigen Stellen im Code auf das Field _conversionModul oder ber den entsprechenden getter ohne Null-Prfung
auf das Umsetzungsmodul zugegriffen wird, wurde die Initialisierungsmethode installConversionModule in der Klasse De
so erweitert, dass auch dann, wenn das gewnschte Umsetzungsmodul nicht instanziiert werden konnte, trotzdem ein
Umsetzungsmodul-Objekt erzeugt wird. Dieses verhindert die NullPointerExceptions und sorgt beim Empfang eines
entsprechenden DE-Blocks fr die Ausgabe einer entsprechenden Warnung.
Die Verarbeitung weiterer DE-Blcke und Einzeltelegramme im gleichen Telegramm wird dann fortgesetzt.

nderungen entsprechend Mail von KS (R. Schmitz) vom 27.11.2015

----------------------------------------------------------------------------
SourceDataReferences-Mechanismus mit Referenzen auf MQs
----------------------------------------------------------------------------

In der VRZ-Leverkusen werden von den HB-Systemen auch Daten von MQ-Objekten bernommen. Damit das funktioniert,
sind im Datensatz atg.gertTlshnlicheKommunikationsPartnerder VRZ neben DE-Objekten auch MQ-Objekte zugeordnet.
Zur Umsetzung der Telegramme mit dem SourceDataReferences-Mechanismus an andere Objekte, die eine Referenz auf
die MQ-Objekte haben (analog zu den Referenzen z.B. von Fahrstreifen auf die zugeordneten LVE-DE) war nicht
vorgesehen und fhrte zu einer Warnung:

    Objektreferenz mit unbekanntem Objekttyp wird ignoriert

Die Klasse TlsApplicationLayer wurde jetzt so erweitert, dass auch Referenzen auf Objekte vom typ.messQuerschnitt
zugelassen werden.

nderungen entsprechend Mail von KS (R. Schmitz) vom 27.11.2015


27.09.2015 - V 5.4.2 =============================================================================================================
----------------------------------------------------------------------------
Anpassungen fr Umsetzungen im Bereich NW
----------------------------------------------------------------------------
Spezifische Anpassungen bei der Umsetzung von Telegrammen Fg254HeuschBoesefeldt
und Unterdrckung des Versands von leeren Datenstzen bei
FG 254 DE mit DE-Fehler mit der Kennung "StSM"
gem Mail von KS (R. Schmitz) vom 12.05.2015


06.08.2015 - V 5.4.1 =============================================================================================================
----------------------------------------------------------------------------
Ermittlung Intervalldauer T fr UFD-logisches Modell angepasst
----------------------------------------------------------------------------
Bei der Ermittlung der Intervalldauer T fr UFD-Sensoren im logischen
Datenmodell wurde der Algorithmus wie folgt gendert:
- Bei Start wird der Wert aus dem Aufrufparameter
	-standardPeriodenDauerUfdFuerDatenAusfallErkennungInSekunden=60
  vewendet (Standardeinstellung ist 60 Sekunden)

- Wird fr die UFD-DE der Betriebsparameter (Soll) an die DE geschickt, wird der
  Wert aus dem Betriebsparamter (Soll) verwendet.

- Wird fr die UFD-DE der Betriebsparameter (Ist) von der DE empfangen, wird der
  Wert aus dem Betriebsparamter (Ist) verwendet.

HINWEIS: Wird eine DE also in einer von 1-Minute abweichenden Intervalldauer betrieben und verhlt sich diese
         DE nicht TLS-konform (liefert also z. B. keine IST-Meldung der Betriebsparameter), kann die korrekte
         Intervalldauer durch Senden der Betriebsparameter erzwungen werden.



06.08.2015 - V 5.4.0 =============================================================================================================
----------------------------------------------------------------------------
nderungen Umsetzungsklassen FG1 und FG3 gem AFo DUA KEx-15 und KEx-22
----------------------------------------------------------------------------
Die KExTlsOsi7 wurde dahin gehend gendert/erweitert, dass die berarbeiteten Anforderungen aus der AFo-DUA (Anforderungen
KEx-15 und KEx-22) vollstndig umgesetzt werden. Die daraus resultierenden wesentlichen nderungen sind nachfolgend aufgefhrt.

----------------------------------------------------------------------------
nderung der Berechnungsvorschriften fr qPkw und vKfz
----------------------------------------------------------------------------
Werden Verkehrsdaten der FG 1 ber die Telegramme
-FG 1 / Typ 49, 50, 51, 52, 53 (Version 0-4, 8 Bit)
-FG 1 / Typ 113, 114, 115, 116, 117 (Version 0-4, 16 Bit)
empfangen, so werden diese (wie bisher) neben den DE auch auf die
- atg.verkehrsDatenKurzZeitIntervall, asp.externeErfassung des zugeordneten Fahrstreifens (typ.fahrStreifen)
abgebildet.
Dabei werden auch die in den TLS-Telegrammen fehlenden Daten fr qPkw und vKfz berechnet. Die Berechnung dieser Werte wurde
einschlielich der Plausibilisierung der empfangenen Werte entsprechend der berarbeiteten Anforderungen aus der AFo-DUA
(Anforderung KEx-15) implementiert.
Treten bei der Berechnung und Prfung Fehler/Probleme auf, so werden diese jetzt zustzlich als Betriebsmeldung publiziert.

----------------------------------------------------------------------------
Versand von Betriebsmeldungen aus Umsetzungsmethoden
----------------------------------------------------------------------------
Es wurde die (ebenfalls in KEx-15) beschriebene Anforderung implementiert, innerhalb einer Umsetzungsmethode eine
Betriebsmeldung an die Betriebsmeldungsverwaltung zu senden.

Der Versand der Betriebsmeldung kann ber einen neuen Paramter (atg.tlsBetriebsMeldungErzeugen)
am typ.de, der zur Laufzeit je DE ein- und ausgeschaltet werden (Standardeinstellung = Versand eingeschaltet).
Die entsprechende ATG ist enthalten im Datenmodell kv.inovat, kb.tmKExTlsGlobal ab Version 21.

Zum Versand einer Betriebsmeldung steht die Methode

- public void sendMessage(String id, MessageType type, String messageTypeAddOn, MessageGrade grade,
                          SystemObject referenceObject, MessageState state, String message)

zur Verfgung. Diese prft selbstndig den Zustand des Paramters atg.tlsPassivierungbernahmeLogischesModell.

Zur Angabe der zu verwendenden Betriebsmeldungsverwaltung wurde ein neue Aufrufparamter

-pidBetriebsMeldungsVerwaltung=<Pid eines Objekts vom Typ typ.betriebsMeldungsVerwaltung>

hinzugefgt. Wird dieser nicht angegeben, so wird die AOE verwendet.

----------------------------------------------------------------------------
Passivierung von Umsetzungsmethoden in Richtung DaV
----------------------------------------------------------------------------
Entsprechend der Anforderung KEx-22 besteht nun die Mglichkeit, Umsetzungsmethoden zur Verarbeitung von empfangen
DE-Blcken zur Laufzeit zu passivieren (d.h. die Methode liefert als Ergebnissdatensatz null zurck, so dass kein
Eintrag im DaV erfolgt).
Dies dient insbesondere dazu, dass die Daten der FG 1 bzw. FG 3 wahlweise zu Testzwecken nicht in das logische Modell
bernommen werden, um zuerst die TLS-Daten prfen zu knnen.
In der aktuellen Version wurde diese Funktion implementiert fr:
-Umsetzung aller FG 3 Umfelddaten in das logische Modell auf die Typen vom Basistyp typ.ufdsSensor
-Umsetzung der FG1 Verkehrsdaten der Typen
		-FG 1 / Typ 49, 50, 51, 52, 53 (Version 0-4, 8 Bit)
		-FG 1 / Typ 113, 114, 115, 116, 117 (Version 0-4, 16 Bit)
 auf die
		- atg.verkehrsDatenKurzZeitIntervall, asp.externeErfassung des zugeordneten Fahrstreifens (typ.fahrStreifen)


Die Passivierung erfolgt dabei ber einen neuen Paramter (atg.tlsPassivierungbernahmeLogischesModell)
am typ.de, der zur Laufzeit je DE ein- und ausgeschaltet werden (Standardeinstellung = Passivierung ausgeschaltet).
Die entsprechende ATG ist enthalten im Datenmodell kv.inovat, kb.tmKExTlsGlobal ab Version 21.

Um in einer Umsetzungsmethode von dieser Mglichkeit gebrauch zu machen, ist diese wie folgt zu erweitern (Beispiel):

    ResultData FGxxxAtgYYYAspZZZ(DeBlock deBlock, Data data, DataDescription dataDescription) {

        // Die Ausfhrung von Umsetzungsmethoden kann zur Laufzeit ber den
        // Parameter atg.tlsPassivierungbernahmeLogischesModell am typ.de
        // unterbunden werden, in dem der Zustand des Parameters ausgewertet
        // und bei Passivierung als return-Wert null zurckgegeben wird

        if (isPassivierungUmsetzungsMethoden()) {
            return null;
        }

        ...
        return resultData;
    }



04.05.2015 - V 5.3.3 =============================================================================================================
----------------------------------------------------------------------------
Korrektur in Klasse DeConversionModul
----------------------------------------------------------------------------
Fehlerbehebung in der Methode
- private boolean isAllowedToSend(De de, DeBlock deBlock)
In den switch/case Zweigen wurden fehlende break; ergnzt, da sonst im ungnstigsten Fall die Methode einen fehlerhaften
Rckgabewert erzeugte (Meldung von Swarco/Hr. Drapp vom 30.04.2015)



21.08.2014 - V 5.3.2 =============================================================================================================
----------------------------------------------------------------------------
Korrektur Umsetzungsscript fr AXL, Typ 60 und Typ 61 sowie EakDefault fr FG2
----------------------------------------------------------------------------
Korrektur Umsetzungsscript fr AXL, Typ 60 und Typ 61, Initialisierungsfehler behoben

Neu seit TLS 2012: Wenn erster DE-Block FG2 und Typ31 erfolgt auch hier die Verarbeitung im EakDefault!!
M. E. ein Fehler in der TLS, aber so wurde sie offiziell verffentlicht!!!

Die zweite Prfung wurde hinzugefgt:
        if (((singleTelegram.getCountDeBlock() > 0) && (singleTelegram.getDeBlock()[0].getDeChannel() == 255)) ||
            // NEU wegen Fehler in TLS 2012
            (singleTelegram.getCountDeBlock() > 0) && (singleTelegram.getDeBlock()[0].getFg() == 2) && (singleTelegram.getDeBlock()[0].getTyp() == 31)) {



23.06.2014 - V 5.3.1 =============================================================================================================
----------------------------------------------------------------------------
Korrektur Umsetzungsscript fr defekte LED-Ketten FG 4 / Typ  5
----------------------------------------------------------------------------
Anpassung des Umsetzungsscripts von

ALT: int anzahlUebertrageneBytes = ((anzahlUebertrageneKetten-1)/8)+1;

nach

NEU: int anzahlUebertrageneBytes = (anzahlUebertrageneKetten+7)/8;

geaendert, da alte Implementierung bei fehlerfreien Ketten (anzahlUebertrageneKetten=0) zu einem fehlerhaften
Ergebnis der anzahlUebertrageneBytes=1 (statt 0) fhrte.


23.06.2014 - V 5.3.0 =============================================================================================================
----------------------------------------------------------------------------
Unterdrckung des Versands von Kanalsteuerung an Clusterkanle
----------------------------------------------------------------------------
Anpassung im DeConversionModul bie der Methode isAllowedToSend() bei der Prfung, ob DeBlock versendet werden darf.
Hier wird jetzt zustzlich geprft, ob die De des zu versendenden ein Clusterkanal ist. In diesem Fall wird der
DeTyp 29 (Kanalsteuerung) nicht mehr versendet.

27.09.2013 - V 5.2.0 =============================================================================================================
----------------------------------------------------------------------------
Anpassung FG3 an TLS 2012
----------------------------------------------------------------------------
!!!!! Benoetigt unbedingt kb.tmKExTlsGlobal ab Version 19 !!!!!

 Siehe dazu auch Fehler-Nr. 84 im NERZ-Fehlermanagement (Meldung von Swarco im Zusammenhang mit Problemen bei der SBA A8).
 In der TLS bis zur Version 2002 waren fuer eine Reihe von Umfeldsensordaten (speziell die Daten mit negativen Werten)
 keine Definitionen fuer den Wert "nicht ermittelbar" definiert. Bei der Anlage des Datenmodells (um das Jahr 2001/2002)
  wurden deshalb diese "nicht ermittelbar" Werte nicht definiert. In der TLS 2011/2012 sind diese Werte jetzt definiert
   worden.
 Liefert nun ein neuer Sensor den entsprechenden Wert, fuehrte dies bisher in der KExTlsOsi7 zu einer Exception mit der
 Folge, dass alle weiteren DE-Bloecke im Telegramm nicht mehr verarbeitet wurden.
 Dieses Problem wurde mittlerweile dahingehend behoben, dass seit der Version
 SWE_de.bsvrz.kex.tls.osi7_FREI_V5.1.3_D2013-01-19 die entsprechenden Werte abgefangen werden und fuer diese
 DE "keine Daten" eingetragen werden.

 Die korrekte Loesung ist die Anpassung des DatKat und der KExTlsOsi7 fuer diese Sensortypen.
 Im Rahmen der Fachtelefonkonferenz der NERZ vom 19.02.2013, TOP 2, wurde festgestellt, dass dies notwendigen aenderungen
 Anpassungen der KExTLS an die Weiterentwicklung der TLS sind und somit eine aenderung gemae Festlegung des
 NERZ e.V. darstellen. Es wurde beschlossen, die Aenderung im Rahmen des aenderungsmanagements durchzufuehren.

!!!!! Hinweis:                                                                                                     !!!!!
!!!!! Durch die aenderungen gehen ggf. die bereits archivierten Sensorwerte der zu aendernden Sen-sortypen verloren!!!!!
!!!!! (bzw. sind nur mit zusaetzlichem Aufwand reproduzierbar). Fuer Systeme, die von der aenderung betroffen sind,!!!!!
!!!!! muss ein Migrationskonzept erstellt werden. Zustaendig sind die betroffenen Laender.                         !!!!!
!!!!!                                                                                                              !!!!!
!!!!! Das neue Datenmodell setzt die Verwendung der KExTLSOsi7 ab Version 5.2.0 voraus, da hier die                !!!!!
!!!!! Umsetzungsscripte auf das neue Datenmodell angepasst wurden.                                                 !!!!!

 Folgende Anpassungen wurden durchgefuehrt:
 
 	Erweiterung des Wertebereichs von -32768  32767
 	Wert 32767 (7FFF) als <zustand name=nicht ermittelbar wert=32767>

 Folgene Typen wurden angepasst
 	FG 3, Typ 48: Lufttemperatur
 	FG 3, Typ 49: Fahrbahnoberflaechentemperatur
 	FG 3, Typ 65: Gefriertemperatur
 	FG 3, Typ 66: Taupunkttemperatur
 	FG 3, Typ 67: BodentemperaturInTiefe1
 	FG 3, Typ 68: BodentemperaturInTiefe2
 	FG 3, Typ 69: BodentemperaturInTiefe3



26.09.2013 - V 5.1.7 =============================================================================================================
----------------------------------------------------------------------------
bernahme der Erweiterungen aus der SBA A8 BW
----------------------------------------------------------------------------
- FG 4 Typ 48: Workaround fr Code 0 Funktion 1 als Dunkel bernehmen
- FG 1 Typ 28: Positive Quittung integriert
- FG 3 Typ 75: Schneefilmdicke integriert
- FG 3 Typ 77: Griffigkeit integriert
- FG 4 Typ  5: Defekte LED-Ketten integriert


15.04.2013 - V 5.1.6 =============================================================================================================
----------------------------------------------------------------------------
Zugriffsmethode fr DeAusfallUeberwachung ergaenzt
----------------------------------------------------------------------------
Damit ein Umsetzungsskript in einem anderen Paket unter Verwendung der DeAusfallUeberwachung erstellt werden kann, wird
das Datenmodell bentigt, das bisher nur ber das DeConversionModul als protected verfgbar war, und somit bei
abgeleiteten Umsetzungsscripten nicht aufgerufen werden konnte.
Es wurde eine entsprechende Methode im DeConversionModul ergaenzt:

    /**
     * Liefert das aktuelle Datenmodell
     *
     * @return aktuelles Datenmodell
     */
    public DataModel getConfig() {
        return _config;
    }

22.02.2013 - V 5.1.5 =============================================================================================================
----------------------------------------------------------------------------
Fehler Umsetzung fr Fg004Default:Fg004Typ033Id003AtgTlsWzgGrundEinstellungAspParameterIst
----------------------------------------------------------------------------
in Fg004Default:Fg004Typ033Id003AtgTlsWzgGrundEinstellungAspParameterIst(DeBlock deBlock, Data data, DataDescription dataDescription)
Zeilen 1521-1562
berall 'data.getArray("StellCode")' durch data.getArray("GruppenDefinition") ersetzt.


19.02.2013 - V 5.1.4 =============================================================================================================
----------------------------------------------------------------------------
Keine Parameter an DE == 0 senden, FG5-Typ 17 nicht bei DE255/0
----------------------------------------------------------------------------
Analog zu den DE255 werden auch an die DE0 keine Parameterdatenstze verschickt.
Zustzlich noch den Typ 17 bei der FG 5 ergnzt (nicht schicken an DE255/DE0


19.01.2013 - V 5.1.3 =============================================================================================================
----------------------------------------------------------------------------
Behebung Fehler #0000087:Fehlerhafte Zeitstempel bei der Umschaltung von Sommerzeit auf Winterzeit
----------------------------------------------------------------------------
Bei der Umschaltung von Sommer- auf Winterzeit ergaben sich Probleme mit den Zeitstempeln der Verkehrsdaten (Problem besteht bei allen Zeitstempeln).

Die Analyse ergab, dass sobald ein Wert im GregorianCalendar gesetzt (set()) wird und vorher Calendar.DST_OFFSET != 0 war, Calendar.DST_OFFSET wieder gesetzt werden muss, damit bei der Neuberechnung der internen Werte das richtige Ergebnis bestimmt wird.

Im Programm muss nach der folgenden Zeile in der Methode setTimeStamp(7* int) in der Klasse EakDefault

    int millisecond = gregorianCalendar.get(Calendar.MILLISECOND);

der folgende Abschnitt

    if (isTlsDST) // wenn ein Wert gesetzt wird, dann muss bei Sommerzeit DST_OFFSET nochmals gesetzt werden
    {
      gregorianCalendar.set(Calendar.DST_OFFSET, 3600000);
    }

eingefgt werden.

Bei den Test wurde dann immer der richtige Zeitstempel bestimmt.

inovat: Die entsprechende Ergnuzung wurde eingebaut.

----------------------------------------------------------------------------
Behebung Fehler #0000084:KExTls kann nicht mit 'Messwert kann nicht ermittelt werden' bei Fahrbahnoberflchentemperatur umgehen
----------------------------------------------------------------------------
Enthlt ein Einzeltelegramm der FG 3 den Typ 49 mit Wert 7FFF (32767) 'Messwert kann nicht ermittelt werden', so fhrt dies zu einem Fehler. Der Typ 49 wird nicht publiziert und allen folgenden DE-Blcke werden verworfen.
Das Verhalten fhrt zu groen Datenlcken im Bereich der FG 3, da von 15 Sensoren durch die Reihenfolge im Telegramm im Fehlerfall nur noch die Daten eines Sensors im DAV ankommen.

inovat:
Dies ist leider kein richtiger Fehler sondern ein historisch bedingtes Feature. Als die KExTLS erstellt wurde und insbesondere das zugehrige Datenmodell (2001/2002) gab es
noch die TLS 93 / TLS 97 bzw. TLS 2002. Bei diesen TLS waren die Werte fr 'Messwert kann nicht ermittelt werden' bei den meisten UFD-Typen NICHT definiert. Aus diesem
Grund sind die entsprechenden Werte NICHT im DatKat definiert.
Dies bedeutet, dass diese Messwerte (die jetzt in der aktuellen TLS 2012 definiert sind) nicht im DatKat abgebildet werden knnen.
Die korrekte Lsung wre Anpassung des DatKat und Anpassung der Umsetzungsscripte. Da die Anpassung des DatKat aber zu neuen ATG / neuen Objekt-IDs fhrt, wurde dieser Schritt
(noch) nicht durchgefhrt.
Stattdessen wurden die Umsetzungsscripte fr UFD-DE so angepasst, dass diese (ungltigen) Werte abgefangen werden. Damit tritt dann zwar nicht mehr der
Fehler auf, dass folgende DE-Blcke verworfen werden, der eigentliche Messwert wird aber nicht publiziert (d.h. dass aktuell ein nicht ermittelbarer Messwert vorliegt,
ist nicht erkennbar!!)


----------------------------------------------------------------------------
Behebung Fehler in writeNoDataToUnreachableDe()
----------------------------------------------------------------------------
Fehler beim Versenden von leeren Datenstzen, wnn eine DE mehreren Fahrstreifen zugeordnet war.
Fehlermeldung von Drapp/Swarco vom 18.01.2013

07.11.2012 - V 5.1.2 =============================================================================================================
----------------------------------------------------------------------------
java.util.ConcurrentModificationException bei Zugriff auf das Feld '_davToTlsList'
----------------------------------------------------------------------------
Einbau von synchronized-Blcken um gleichzeitigem Zugriff auf das Feld '_davToTlsList', einmal aus der 'update'-Methode
und aus der 'subscribeAllData'-Methode zu verhindern  (Meldung von BitCtrl, Hr. Gieseler)

30.10.2012 - V 5.1.1 =============================================================================================================
----------------------------------------------------------------------------
Fehlermeldungen bei FG wegen Doppelanmeldung fr Cluster und Sammelkanle abgefangen
----------------------------------------------------------------------------
Bei abgeleiteten DE-ConversionModulen der FG4 wurden die Cluster und Sammelkanle ggf. mehrfach angemeldet, was zu
einer (nicht kritischen) Fehlermeldung fhrte (Meldung von BitCtrl, Hr. Gieseler)

25.10.2012 - V 5.1.0 =============================================================================================================
----------------------------------------------------------------------------
WWW FG 5: typ.deWww aufgenommen
----------------------------------------------------------------------------
typ.deWww wird jetzt auch bei der Ermittlung der FG bercksichtigt (in den Konstruktoren der Klasse De.java).

27.07.2012 - V 5.0.2 =============================================================================================================
----------------------------------------------------------------------------
Zfr FG 9: BetriebsArt bei DE-Gutmeldung verschicken
----------------------------------------------------------------------------
Bei DE-Gutmeldung wird auch die BetriebsArt (9/17/2) verschickt.

04.04.2012 - V 5.0.1 =============================================================================================================
----------------------------------------------------------------------------
Anpassung der Umsetzungscripte fr die VRZ-Leverkusen
----------------------------------------------------------------------------
Lokale Aenderungen nur interessant fuer die VRZ Leverkusen in NRW:
Umsetzung der Typen TLS 71 (Niederschlagsart) und TLS 70 (Zustand Fahrbahnoberflche) auf die Boschung-Sensordaten
auf Standard gendert, da die entsprechenden Typen bei Boschung 068 und 070 ab 2011/2012 nach TLS kodiert sind.


05.03.2012 - V 5.0.0 =============================================================================================================
----------------------------------------------------------------------------
Ausfallueberwachung DE (Anforderung aus BW)
----------------------------------------------------------------------------


Zusaetzliche Aufrufparameter (angegeben ist jeweils die Standardeinstellung):

--------------------------------------------
-anzahlIntervalleFuerDatenAusfallErkennung=0
--------------------------------------------

Legt fest, wieviele Intervalllaengen keine Daten fuer ueberwachte DE emfangen werden duerfen, bevor ein
KEIN DATEN - Datensatz als Ausfallkennung geschrieben wird.
In der FG 1 wird die Intervalllaenge aus den Intervalldaten (Typ48, FG 1) ermittelt.
In der FG 3 wird die Intervalllaenge aus den BetriebsParametern (Typ 32, FG 3) oder behelfsweise aus dem Aufrufparameter
-standardPeriodenDauerUfdFuerDatenAusfallErkennungInSekunden ermittelt.

Die Wartezeit, bis ein Ausfall erkannt wird, betraegt

WarteZeit = IntervallDauer oder PeriodenDauer * Wert aus Parameter -anzahlIntervalleFuerDatenAusfallErkennung).
Die WarteZeit wird relativ zum Datenzeitstempel ermittelt (also nicht unbedingt zum Empfangszeitpunkt).

---------------------------------------------------------------
-standardPeriodenDauerUfdFuerDatenAusfallErkennungInSekunden=60
---------------------------------------------------------------

Da bei der FG 3 die PeriodenDauer nur aus einem empfangenen Telegramm BetriebsParameter Typ 32 ermittelt werden kann,
wird als Standard der angegebene Wert verwendet, solange fuer das ueberwachte DE NOCH KEIN Telegramm vom Typ 32 empfangen
wurde.


05.03.2012 - V 4.9.1 =============================================================================================================
----------------------------------------------------------------------------
FG 9: Zuflussregelung gemaess TLS 2011 (Entwurf) vollstaendig integriert!
----------------------------------------------------------------------------
Ergnzung fr unerlaubten Versand von Typen der FG9 bei DE255 (Parameter):

private boolean isAllowedToSend(DeBlock deBlock)
case 9:
                    switch (typ) {
                        case 29:  // Kanalsteuerung
                        case 32:  // Betriebsparameter
                        case 33:  // Betriebsparameter ALINEA1
                        case 34:  // Betriebsparameter Rotfahrerzhler
                        case 35:  // Betriebsparameter ALINEA2
                        case 36:  // Geografische Kenndaten
                        case 48:  // Signalplan
                        case 49:  // Helligkeit
                        return false;
                    }


05.03.2012 - V 4.9.0 =============================================================================================================
----------------------------------------------------------------------------
FG 9: Zuflussregelung gemaess TLS 2011 (Entwurf) vollstaendig integriert!
----------------------------------------------------------------------------
--> Bentigt kv.inovat mit
		- kb.tmKExTlsFG9 Version 1

Da die FG 9 analog zur FG 4 auch eine Folgenummerverwaltung enthlt, gibt es hier ebenfalls anlog den Aufrufparameter

-FolgenummernVerwaltungFg9=nein

mittels dessen die Folgenummernberwachung ein (ja) bzw. ausgeschaltet (nein) werden kann. Standard ist "nein".


15.12.2010 =============================================================================================================
----------------------------------------------------------------------------
FG 4: Folgennummernfehler behoben!
----------------------------------------------------------------------------

Anmeldung als Sender fr den DeBlockAbruf und den WzgPufferAbruf funktionieren jetzt.
Ursache war, dass die Sendesteurung trotz Anmeldung nicht erfolgt, wenn man die Sendesteuerung ausschaltet.
Der Grund fr dieses (Fehl-)Verhalten des DaV ist noch nicht geklrt.

----------------------------------------------------------------------------
Erweiterungen der FG 1 und FG3 sowie Korrekturen
----------------------------------------------------------------------------


--> Bentigt kv.inovat mit
		- kb.tmKExTlsGlobal Version 15
		- kb.tmUmfeldDatenGlobal Version 22
		- kb.tmVerkehrGlobal Version 46
--> Bentigt kv.logos mit
 		- kb.tmLangZeitVerkehrsDaten Version 8

FG 1:
atg.kfzEinzelDatenFs wird jetzt auch fr den Fahrstreifen untersttzt.
Korrekturen bei der Umsetzung von Langzeitdaten an MQ, FS und LZZS

FG 3:
Zustzliche Umsetzungen fr TLS und Logisches Umfelddatenmodell fr folgende Sensoren:

FG	Typ	Bezeichnung
-------------------------------------------------
3	82	Stickoxide NOx
3	86	A-Bewerteter Schalldruckpegel
3	87	Energiequivalenter Schalldruckpegel
3	88	Basispegel
3	89	Mittlerer Spitzenpegel




15.09.2010 =============================================================================================================
----------------------------------------------------------------------------
FG 1
----------------------------------------------------------------------------

Umsetzungsscript fr FG1 / Typ 79 (Langzeit Version 24) in Fahrstreifen,
verkehrsDatenLangZeitIntervallGeschwindigkeitVerteilungFs

09.09.2010 =============================================================================================================
----------------------------------------------------------------------------
KRI2_B
----------------------------------------------------------------------------
- Untersttzung fr die KRI2_B gem PLaNT der ASFINAG ergnzt.


07.09.2010 =============================================================================================================
----------------------------------------------------------------------------
FG3
----------------------------------------------------------------------------
- Umsetzungsscripte fr logisches Datenmodell "Teilmodell Umfelddaten Global" fr folgende Typen ergnzt:

TYP	TYP-TLS                                         ATG UFDS
48	Lufttemperatur                                  atg.ufdsLuftTemperatur
49	Fahrbahnoberflchentemperatur                   atg.ufdsFahrBahnOberFlchenTemperatur
50	Fahrbahnfeuchte                                 atg.ufdsFahrBahnFeuchte
51	Fahrbahnoberflche                              atg.ufdsFahrBahnOberFlchenZustand
52	Restsalz                                        atg.ufdsRestSalz
53	Niederschlagsintensitaet                        atg.ufdsNiederschlagsIntensitt
54	Luftdruck                                       atg.ufdsLuftDruck
55	Relative Luftfeuchte                            atg.ufdsRelativeLuftFeuchte
56	Windrichtung                                    atg.ufdsWindRichtung
57	Windgeschwindigkeit (Mittel)                    atg.ufdsWindGeschwindigkeitMittelWert
58	Schneehhe                                      atg.ufdsSchneeHhe
59	Fahrbahngltte (nicht definiert in TLS)         --> Keine Abbildung mglich
60	Sichtweite                                      atg.ufdsSichtWeite
61	Helligkeit                                      atg.ufdsHelligkeit
62	Niederschlagsmenge (nicht definiert in TLS)     --> Keine Abbildung mglich
63	Niederschlagsart                                atg.ufdsNiederschlagsArt
64	Windgeschwindigkeit (Spitze)                    atg.ufdsWindGeschwindigkeitSpitzenWert
65	Gefrierpunkttemperatur                          atg.ufdsGefrierTemperatur
66	Taupunktemperatur                               atg.ufdsTaupunktTemperatur
67	Temperatur Tiefe 1 (6 cm Tiefe)                 atg.ufdsTemperaturInTiefe1
68	Temperatur Tiefe 2                              atg.ufdsTemperaturInTiefe2
69	Temperatur Tiefe 3 (Tiefe 3 = 30 cm)            atg.ufdsTemperaturInTiefe3
70	Zustand der Fahrbahnoberflaeche                 atg.ufdsFahrBahnOberFlchenZustand
71	Niederschlagsart                                atg.ufdsNiederschlagsArt
72	Wasserfilmdicke FR Nord                         atg.ufdsWasserFilmDicke




13.07.2010 =============================================================================================================

----------------------------------------------------------------------------
FG1
----------------------------------------------------------------------------
- Umsetzungsscripte FG001HeuschBoesefeldt
  public ResultData Fg001Typ160Id004AtgVerkehrsDatenKurzZeitIntervallAspMessWertErsetzung
  angepasst gem Vorschlag Hr. Drapp / Dambach
  

25.03.2010 =============================================================================================================

----------------------------------------------------------------------------
FG3
----------------------------------------------------------------------------
- Umsetzungsscripte fr Typ Typ 54: "atg.tlsUfdErgebnisMeldungLuftDruckLD"
  Fg003Typ054Id004AtgTlsUfdErgebnisMeldungLuftDruckLDAspTlsAntwort() korrigiert:
  -von 8-Bit auf 16-Bit, siehe EMail LOGOS vom 25.03.2010

04.11.2009 =============================================================================================================
Erweiterung der KExTLSOSI7 auf Basis der Unterlagen von Herrn Strey/LOGOS:

======================================================
ACHTUNG: Bentigt den kb.tmKExTlsGlobal ab Version 8
======================================================

----------------------------------------------------------------------------
FG1
----------------------------------------------------------------------------
- Erweiterung um den Langzeitdatentyp Typ 79

28.10.2009 =============================================================================================================
Erweiterung der KExTLSOSI7 auf Basis der Unterlagen von Herrn Gieseler/BitCtrl:

======================================================
ACHTUNG: Bentigt den kb.tmKExTlsGlobal ab Version 7
======================================================

----------------------------------------------------------------------------
FG254
----------------------------------------------------------------------------
- Dateitransver implementiert

----------------------------------------------------------------------------
FG4
----------------------------------------------------------------------------
- Umsetzungsscripte fr Typ 22 "Abruf Bilddefinition/Grafiktextkonserve": atg.tlsWzgAbrufBildDefinition
- Umsetzungsscripte fr Typ 45 "Bilddefinition/Grafiktextkonserve": atg.tlsWzgBildDefinition

----------------------------------------------------------------------------
FG2
----------------------------------------------------------------------------
- Umsetzungsscripte fr Typ Typ 62: "atg.tlsAxlEinzelErgebnisMeldungAchsLastenUndKfzGesamtGewichteVersion3"
- !!!FEHLT NOCH!!!: Umsetzungsscripte Typ 66: "atg.tlsAxlErgebnisMeldungAchsLastDatenVersion11",
  ================  im aktuellen DatKat bereits vorhanden

------------------------------------------------------------------------------------------------------------------------

18.05.2009 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Mgliches Syncronisationsproblem beim Zugriff auf die Sendequeue behoben (Hinweis von Roland Schmitz):

While-Schleife war bisher nicht syncronisiert:

		synchronized (_queue) {
			while (!_queue.isEmpty()) {
				list.add(_queue.removeLast());
			}
		}


06.04.2009 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Umsetzungsscrpte fr FG2 de.bsvrz.kex.tls.osi7.conversion.Fg002Default gendert:

In der Definition des DE-Typ 21 "Abruf Pufferinhalt Einzelergebnismeldungen"
ist die Angabe des Jahres als 2 Byte (0-9999) definiert.
In 'Fg002Typ021Id002AtgTlsAxlAbrufPufferInhaltEinzelErgebnisMeldungenAspTlsAbruf'
wurde die Zeile

_Jahr_ = (gregorianCalendar.get(Calendar.YEAR) - 2000);

durch

_Jahr_ = gregorianCalendar.get(Calendar.YEAR);

Der Abruf wurde damit durch die Streckenstation (Hersteller ursprnglich Weiss-Electronic) akzeptiert (BitCtrl, Gieseler).

23.03.2009 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Umsetzungsscrpte fr FG1 VRZ-Leverkusen: Fehler in Script behoben (gem Fehlerbeschreibung Christop Westermann (KS).

Im Umsetzungsmodul Fg001HeuschBoesefeldt sind u.a. folgende Umsetzungen definiert:

 {"atg.verkehrsDatenKurzZeitIntervall", "asp.messWertErsetzung", "1", "160", "4", "typ.fahrStreifen"},
 {"atg.tlsLveErgebnisMeldungVersion0Bis4", "asp.tlsAntwort", "1", "160", "4", "typ.deLve"},

Also, wenn ein Telegramm von Heusch/Boesefeldt der Fg 1 mit dem Typ 160 empfangen wird, sendet KEx zu den
beiden Attributgruppen  unter den angegebenen Aspekten fr die entsprechenden Konfigurationsobjekte Datenstze.
Bei der Umsetzung werden in den Umsetzungsmethoden aber unterschiedliche Methoden zum Lesen der Mengenwerte benutzt.

Fg001Typ160Id004AtgVerkehrsDatenKurzZeitIntervallAspMessWertErsetzung:
 _qKFZ_ = deBlock.getDeData().readUnsignedHighLowByteAsInt();

Fg001Typ160Id004AtgTlsLveErgebnisMeldungVersion0Bis4AspTlsAntwort:
 _qKfz_ = deBlock.getDeData().readUnsignedLowHighByteAsInt();


Im Sendeskript von Heusch/Boesefeldt ist fr Telegramme der Fg 1 mit dem Typ 160 definiert:

/* Fg   1 Id 132 Typ 160 --------------- Intervalldaten Kurzzeit Interpoliert */
Datatype DaLVEKurzInterpolOpt0          mit Zeit (UnixZeit, UnixArchivZeit)
         Reaktion       Write Area
  NUR_AKTUELL_SENDEN
  Fill High     (qKFZ)          /* KFZ-Menge                                  */
  Fill Low      (qKFZ)


Demnach muss bei der Umsetzung fr die Attributgruppe "atg.tlsLveErgebnisMeldungVersion0Bis4"
fr die Behandlung der Mengenwerte auch die Methode  readUnsignedHighLowByteAsInt() benutzt werden.


17.11.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Neuer Aufrufparamter: -ZeitsyncronisationVerschicken=ja

Erluterung:
"-ZeitsyncronisationVerschicken" gibt an, ob die OSI7 bei einem TOT-->LEBT bergang eine Zeitsync verschickt.
Der Defaultwert ist "ja" (es wird also eine Zeitsync verschickt). Bei -ZeitsyncronisationVerschicken=nein verschickt
die OSI7 keine Zeitsyncronisationstelegramme mehr.

16.11.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Umsetzungsscrpte fr FG4 VRZ-Leverkusen zum Nachfordern fr Schaltinformationen der dWiSt-Tafeln.

Fehlenden Eintrag fr das Versenden der atg.tlsGloDeBlockAbruf fr die FG004HeuschBoesefeld ergnzt.
	private final Object[][] davToTls = new Object[][]{
			// Attributgruppe, Aspekt, Fg, Typ, Id, ObjektTyp
neu --->	{"atg.tlsGloDeBlockAbruf", "asp.tlsAbruf", "255", "255", "255", "typ.deWzg"},
			{"atg.tlsWzgWvzStellZustand", "asp.tlsVorgabe", "4", "48", "81", "typ.deWzg"},
			{"atg.tlsWzgWechselText", "asp.tlsVorgabe", "4", "50", "81", "typ.deWzg"},
	};




07.11.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Umsetzungsscrpte fr FG4 VRZ-Leverkusen zum Nachfordern fr Schaltinformationen der dWiSt-Tafeln.

Fehler beim Versand des Abfragetelgramms behoben (falsche ATG verwendet).

29.10.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Umsetzungsscrpte fr FG4 VRZ-Leverkusen zum Nachfordern fr Schaltinformationen der dWiSt-Tafeln ergnzt.

Bei der Kommunikation mit der VRZ werden die Daten zu folgenden ATG/ASP-Kombinationen abgefragt,
damit insbesondere die dWiSta-Tafeln in dMotion korrekte Inhalte anzeigen:
Problem: Bei der Kommnikation ber WAN-COM mit der HB-VRZ werden nach einer DE-Gutmeldung
keine Stellzustandsdaten etc. von der HB-VRZ an die neue VRZ gesendet.
                                                                                                                                                                                                 
ATG                               ASP                 TYP   ID   Kommentar
fr Symbole:

atg.tlsGloDeFehler                asp.tlsAntwort        1    1   ist vorhanden (keine Abfrage)
atg.tlsWzgNichtDarstellbareWVZ    asp.tlsAntwort        2    1   Nicht darstellbare WVZ
atg.tlsWzgWvzStellZustand         asp.tlsZustand       48    5   WVZ Stellzustand
atg.tlsGloKanalSteuerung          asp.parameterIst     29    2   Kanal-Steuerung

fr Wechseltexte:

atg.tlsGloDeFehler                asp.tlsAntwort        1    1   ist vorhanden (keine Abfrage)
atg.tlsWzgGestrteTextPositionen  asp.tlsAntwort        4    1   Gestrte Textpositionen
atg.tlsWzgWechselText             asp.tlsZustand       50    5   Wechseltext
atg.tlsGloKanalSteuerung          asp.parameterIst     29    2   Kanal-Steuerung




17.06.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Fehler in Umsetzungsscripten der FG3 und FG6 bei Attributgruppe Tls???BetriebsParameter behoben.

Erluterung:
In den folgenden Dateien wird in der Attributgruppe Tls???BetriebsParameter
auf das Attribut "_Erfassungsperiodendauer_" zugeriffen, das Attribut heit
im aktuellen DaK aber "Erfassungsperiodendauer", ohne die Unterstriche:

Genderte Klassen:

de\bsvrz\kex\tls\osi7\conversion\nw\vrz\Fg003HeuschBoesefeldt.java
de\bsvrz\kex\tls\osi7\conversion\nw\vrz\Fg006HeuschBoesefeldt.java
de\bsvrz\kex\tls\osi7\conversion\Fg003Default.java
de\bsvrz\kex\tls\osi7\conversion\Fg006Default.java

18.06.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Fehler beim Ermitteln von referzierten DE (z.B. Fahrstreifen --> DE) behoben.

Erluterung:
Waren in der Konfiguration fehlerhafte Eintrge (z. B. null), so wurde beim Zugriff auf diese Referenz eine NULL-Pointer
Exception geworfen.
In der genderten Version wird jetzt unter debug.config eine Warnung ausgegeben.

14.05.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Fehler in TlsApplicationLayer.java behoben.

Erluterung:
In der Version vom 06.05.2008 war fr den Zugriff auf die Klasse Sm per Reflection-Interface noch der alte
Packagename eingetragen (kex.tls.osi7.Sm statt de.bsvrz.kex.tls.osi7.Sm).

06.05.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Fehler in De.java behoben.

Erluterung:
In der Version vom 01.05.2008 war fr die Defaultklasse der FG004 ein falscher Klassenname eingetragen
(Leerzeichen im Namen).

01.05.2008 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Umstellung der KEx-TLS-OSI7 auf die neue Packagestruktur de.bsvrz.*

Erluterung:
Mit der Version 3.x wurde das Kernsystem und auch alle anderen SWE auf eine einheitliche Packagestruktur umgestellt.
Danach beginnen alle Packages des BSVRZ mit de.bsvrz.*.

Fr die KEx-TLS-OSI7 bedeutet dies, das neben der Anpassung der verwendeten Packages auf die neue Kernsoftwarestruktur
das Package kex.tls.osi7.* auf das neue Package de.bsvrz.kex.tls.osi7.* angepasst wurde.


------------------------------------------------------------------------------------------------------------------------
Kompatibilittsmodus fr Umsetzungsmodule der KEx-TLS-OSI7 nach Anpassung auf die neue Packagestruktur de.bsvrz.*

Erluterung:
In der KEx-TLS-OSI7 knnen die Umsetzungsmodule je DE in der Konfigurations angeben werden. Dazu wird in der
Konfiguration der voll qualifizierte Klassenname eingetragen, also z. B. in der alten Packagestruktur
"kex.tls.osi7.conversion.Fg003Typ065". Die entsprechende Umsetzungsklasse wird dann per Reflection geladen und
instanziert.
Mit der Umstellung auf die neue Packagestruktur wrde dies bei den aktuellen Konfigurationen mit der Verwendung
der aktuellen KEx-TLS-OSI7 zu einem Fehler fhren, da die Klasse jetzt unter
"de.bsvrz.kex.tls.osi7.conversion.Fg003Typ065" zu finden ist.
Damit die bestehenden Konfigurationen weiterverwendet werden knnen, wird von der aktuellen KEx-TLS-OSI7 automatisch
folgende Konvertierung des in der Konfiguration eingetragenen Umsetzungsklassennamens durchgefhrt:

Beginnt der Klassenname des Umsetzungsmoduls mit "kex.tls.osi7.conversion." (und nur dann !, also z.B.
"kex.tls.osi7.conversion.WEITER_ANGABE") ), dann wird die
Umsetzungsklasse nicht im angegebenen Package sondern unter "de.bsvrz.kex.tls.osi7.conversion.WEITER_ANGABE"
gesucht und von dort geladen.

Softwaretechnisch ist dies wie folgt gelst:

			if (Pattern.matches("^kex\\.tls\\.osi7\\.conversion\\..*", _conversionModulName)) {
				_conversionModulName = ("de.bsvrz." + _conversionModulName).trim();
			}

------------------------------------------------------------------------------------------------------------------------
Fehler in Umsetzungsmodule Fg001HeuschBoesefeldt bei der Methode
public ResultData Fg001Typ160Id004AtgVerkehrsDatenKurzZeitIntervallAspMessWertErsetzung(...) bei der Berechnung
der Werte qPKW und vKFZ behoben (zustzlicher Test, ob einer der zur Berechnung bentigten Werte TLS-seitig
auf nicht ermittelbar gesetzt war.

Erluterung:
Zustzlich die if(...) Prfungen eingebaut.

		int _qPKW_ = -1;
		if ((_qKFZ_ != 0xffff) && (_qLKW_ != 0xffff)) {
			_qPKW_ = (_qKFZ_ - _qLKW_) > 0 ? (_qKFZ_ - _qLKW_) : 0;
		}

		int _vKFZ_ = -1;
		if ((_qLKW_ != 0xffff) && (_qPKW_ != 0xffff) && (_vLKW_ != 0xff) && (_qPKW_ != 0xff)) {
			_vKFZ_ = (_qLKW_ + _qPKW_) > 0 ? ((_qLKW_ * _vLKW_) + (_qPKW_ * _vPKW_)) / (_qLKW_ + _qPKW_) : -1;
		}


25.06.2007 =============================================================================================================


------------------------------------------------------------------------------------------------------------------------
nderung der Umsetzungsscipte zum Strfallindikator

Erluterung:
Mit der neuen Kernsoftware Release 3.0 wurde auch das Datenmodell u. a. fr die Attributgruppe "atg.strfallZustand"
gendert (Keine Referenz mehr auf Infrastrukturobjekt, dafr Zeitdauer "T" = Intervalldauer, mit dem die Werte erfasst
wurden).

In den Umsetzungsscripten fr VRZ-Leverkusen/HB (FG001HeuschBoesefeldt) wurden folgende nderungen durchgefhrt:
Methoden:
public ResultData Fg001Typ144Id004AtgStrfallZustandAspStrfallVerfahrenNRW(...)
public ResultData Fg001Typ152Id004AtgStrfallZustandAspStrfallVerfahrenNRW(...)
public ResultData Fg001Typ182Id004AtgStrfallZustandAspStrfallVerfahrenRDS(...)
public ResultData Fg001Typ250Id004AtgStrfallZustandAspStrfallVerfahrenRDS(...)

Zeile gelscht:
data.getReferenceValue("InfrastrukturObjekt").setSystemObject(null);

Zeile eingefgt:
data.getTimeValue("T").setSeconds(60);

------------------------------------------------------------------------------------------------------------------------
nderung Umsetzungsscript FG4-Default, Fg004Typ050Id005AtgTlsWzgWechselTextAspTlsVorgabe, Absturz beim Versenden

Erluterung: Absturz der KEx-TLS beim Versenden der ATG TlsWzgWechselText, Aspekt TlsVorgabe (die nachfolgende
nderung behebt den Fehler gem "Prfbericht V 0.02 von Dambach, Stand 06.02.07, Kapitel 4.21 Prffalle
"FG4 Typ 50 Wechseltext", Prffall 1, Seite 87"):

public DeBlock Fg004Typ050Id005AtgTlsWzgWechselTextAspTlsVorgabe(ResultData result) {
		DeBlock deBlock = null;

		// Datenblock beseht aus folgenden Inhalten:
		int _Funktion_ = 0;
		int _Textzeichen_;

		// Umsetzung
		Data data = result.getData();// Datensatz holen
		int count = data.getArray("WVZTextZeichen").getLength();
		                                         ^
                                                 |
                                         !!Hier war ein Leerzeichen!!

nderungen in FG004Default und FG004Duerr durchgefhrt.

------------------------------------------------------------------------------------------------------------------------
nderung der Umsetzungsscripte OSI 7 bzgl. der Gte-Attribute

Erluterung:
Mit der neuen Kernsoftware Release 3.0 wurde auch das Datenmodell u. a. fr den Attributtyp "att.gteIndex" gendert
(Nachkommastellen von 0,1 auf 0,0001). In den Umsetzungsscripten wurde bisher der Zugriff wie folgt realisiert:

...getItem("Gte").getUnscaledValue("Index").set(10);

d. h. also mit Unscaled-Zugriff und setzen als 10 --> 1.0.

Alle Stellen wurden jetzt gendert auf Scaled-Zugriff:

...getItem("Gte").getScaledValue("Index").set(1.0);


08.10.2005 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
nderung des Datenmodells TLS

Erluterung:
Fr das syncrone Versenden von mehreren DE-Blcken in einem Einzeltelegramm (z. B. in der FG 4, Schalten kompletter AQ)
wurde am EAK (typ.eak) und SM (typ.steuerModul) eine zustzliche Attributgruppe "TlsSendenEinzelTelegramm" angelegt. ber
das Attribut "Senden" (mgliche Zustnde "senden" und "verwerfen", kann jetzt gesteuert werden, dass alle an diesem EAK
zwischengespeicherten DE-Blcke am Stck zu einem (oder mehreren) Einzeltelegrammen zusammengestellt werden und versandt
werden (bzw. aus dem Puffer gelscht werden). Eine Triggerung am SM bewirkt eine Triggerung an allen EAK des SM. Welche
DE-Blcke fr diesen Mechanismus zwischengespeichert werden, wird ber eine entsprechende Klasse ber Aufrufparameter
festgelegt --> siehe "Neuer Aufrufrufparamter: -DeBloeckeFuerEinzelTelegramme"

------------------------------------------------------------------------------------------------------------------------
Neuer Aufrufparamter: -DeBloeckeFuerEinzelTelegramme=kex.tls.osi7.conversion.CollectDeBlocksDefault

Erluterung:
"-DeBloeckeFuerEinzelTelegramme" gibt die Klasse an, in der die FG/Typ/ID Kombinationen angegeben werden, bei denen der
DE-Block nicht direkt versendet sondern je EAK zwischengespeichert wird. Die zwischengespeicherten DE-Blcke werden
erst nach Triggerung am EAK oder bergeordneten SM gem TLS in ein oder mehrere TLS-Einzeltelegramme zusammengepackt
und versandt (notwendig z. B. in der FG 4, um komplette Anzeigequerschnitte mit einem Telegramm zu schalten).
Standardmig (ohne Aufrufparameter) wird die Klasse "kex.tls.osi7.conversion.SendingOsi7AdressNullDefault" verwendet,
die zum Standardlieferumfang der KExTLS gehrt.
Werden in spezifischen Projekten andere Festlegungen bentigt, so ist die Klasse
kex.tls.osi7.conversion.SendingOsi7AdressNullDefault unter einem anderen (projektspezifischen) Namen zu kopieren
und die notwendigen Eintrage im Feld "private static final int[][] _sendingOsi7AdressNull" einzutragen
und die kopierte Klasse beim Start ber den oben beschriebenen Aufrufparameter anzugeben.


------------------------------------------------------------------------------------------------------------------------
Neuer Aufrufparamter: -DeBloeckeMitOsi7AdresseNull=kex.tls.osi7.conversion.SendingOsi7AdressNullDefault

Erluterung:
"-DeBloeckeMitOsi7AdresseNull" gibt die Klasse an, in der die FG/Typ/ID Kombinationen angegeben werden, bei denen das
Telegramm mit Knotennummer (00 00 00) gesendet werden muss (z. B. FG 254, Knotennummer senden).
Standardmig (ohne Aufrufparameter) wird die Klasse "kex.tls.osi7.conversion.SendingOsi7AdressNullDefault" verwendet,
die zum Standardlieferumfang der KExTLS gehrt.
Werden in spezifischen Projekten andere Festlegungen bentigt, so ist die Klasse
kex.tls.osi7.conversion.SendingOsi7AdressNullDefault unter einem anderen (projektspezifischen) Namen zu kopieren
und die notwendigen Eintrage im Feld "private static final int[][] _sendingOsi7AdressNull" einzutragen
und die kopierte Klasse beim Start ber den oben beschriebenen Aufrufparameter anzugeben.
(Bisher waren diese Einstellung unvernderbar im Source festgelegt, mit dieser nderung knnen die Einstellungen
jetzt projektspezifisch angepasst werden).

------------------------------------------------------------------------------------------------------------------------
Neuer Aufrufparamter: -nurSendenAnDeOk=nein

Erluterung:
"-nurSendenAnDeOk" legt fest, ob zu versendende De-Blcke nur dann verschickt werden, wenn zum Zeitpunkt der Telegramm-
erzeugung fr das betreffende DE eine DE-Gutmeldung anliegt (Aufruf mit "ja"). Ohne Angabe dieses Aufrufparameters bzw.
bei Aufruf mit "nein" (Standardeinstellung), werden die DE-Blcke unabhngig vom Status des DE verschickt.

------------------------------------------------------------------------------------------------------------------------
Neuer Aufrufparamter: -nurSendenAnVerbundeneSM=nein

Erluterung:
"-nurSendenAnVerbundeneSM" legt fest, ob ein zu versendendes Telegramm nur dann verschickt wird, wenn zum Zeitpunkt
der Versendung des Telegramms zu dem betroffenen Zielknoten (SM) eine Verbindung besteht (Aufruf mit "ja"). Ohne Angabe
dieses Aufrufparameters bzw. bei Aufruf mit "nein" (Standardeinstellung), wird das Telegramm von der OSI-7 an die
OSI-3 zum Versand weitergereicht (kann dort aber je nach OSI-2/OSI-3 Modul trotzdem wegen fehlender Verbindung
verworfen werden).
------------------------------------------------------------------------------------------------------------------------
Neue Funktionalitt/Verhalten beim Zusammenstellen der Einzeltelegramme aus De-Blcken

(siehe auch neuer Aufrufparameter -DeBloeckeFuerEinzelTelegramme)

Es wird nicht mehr wie bisher jeder DE-Block alleine in ein Einzeltelegramm verpackt und verschickt, sondern es werden
aktuell zum Verand bereitstehenden DE-Blcke (genau: alle DE-Blcke, die innerhalb von 1000ms nach dem ersten DE-Block
in der Sendequeue stehen) optimal in ein oder mehrere Einzeltelegramme verpackt und versendet.

------------------------------------------------------------------------------------------------------------------------
Anpassung Umsetzungsklassen FG004Default

Fehler in der Umsetzung bei der Bildung des DE-Blocks behoben (Attributname hatte Tipfehler):

Fg004Typ048Id005AtgTlsWzgWvzStellZustandAspTlsZustand

14.05.2005 =============================================================================================================

------------------------------------------------------------------------------------------------------------------------
Neuer Aufrufparamter: -QuellDatenReferenzen=kex.tls.osi7.conversion.SourceDataReferencesDefault

Erluterung:
"-QuellDatenReferenzen" gibt die Klasse an, die zur Ermittlung von Objektreferenzen aus den Fachmodellen auf die
zugehrigen DE-Objekte verwendet werden soll (z. B. ist hier eingetragen, wie Referenzen von Objekten des Typs
typ.fahrStreifen auf Objekte vom Typ typ.de ermittelt werden knnen. Standardmig (ohne Aufrufparameter) wird die Klasse
"kex.tls.osi7.conversion.SourceDataReferencesDefault" verwendet, die zum Standardlieferumfang der KExTLS gehrt. Hier
sind alle Referenzschemata eingetragen, fr die die entsprechenden logischen Datenmodelle im Datenkatalog aktuell
definiert sind.
Werden in spezifischen Projekten eigene Attributgruppen mit Referenzen auf DE angelegt, fr die die entsprechenden
Mechanismen der KExTLS verwendet werden sollen, so ist die Klasse de.bsvrz.kex.tls.osi7.conversion.SourceDataReferencesDefault
abzuleiten, die notwendigen Eintrge sind im Feld "private static final Object[][] sourceDataReferences" hinzuzufgen
und die abgeleitete Klasse beim Start ber den oben beschriebenen Aufrufparameter anzugeben.

------------------------------------------------------------------------------------------------------------------------
Neue Methode "public ClientDavInterface getClientDavInterface()"
in den Interfaces DeConversionInterface, EakConversionInterface, DeviceConversionInterface

	/**
	 * Ermglicht den Zugriff auf die aktuelle Datenverteilerverbindung.
	 *
	 * @return Gibt die aktuelle aktuelle Datenverteilerverbindung zurck.
	 */
	public ClientDavInterface getClientDavInterface();

Erlaubt in speziellen Fllen den Zugriff auf die aktuelle Datenverteilerverbindung und damit auch auf die
Konfiguration in den Umsetzungsklassen.

------------------------------------------------------------------------------------------------------------------------
Anpassung Umsetzungsklassen FG004Default

Bei den Rckmeldungen fr die Blinkdauer wird in den folgenden Umsetzungsmethoden im Falle einer eigentlich
fehlerhaften Blinkdauerrckmeldung nur eine Warnung ausgegeben und die Blinkdauer auf einen gltigen Wert (200ms)
gesetzt (die meisten Hersteller von TLS Gerten liefern den entsprechenden Eintrag i.d.R. falsch zurck !!!!).

Fg004Typ032Id003AtgTlsWzgWvzGrundEinstellungAspParameterIst
Fg004Typ033Id003AtgTlsWzgGrundEinstellungAspParameterIst
Fg004Typ044Id003AtgTlsWzgCodeDefinitionAspParameterIst
Fg004Typ048Id005AtgTlsWzgWvzStellZustandAspTlsZustand
Fg004Typ050Id005AtgTlsWzgWechselTextAspTlsZustand

------------------------------------------------------------------------------------------------------------------------
Ausschalten von WVZ-Anzeigen

Da sich eine Reihe von Softwareentwicklern fr die SM/EAK-Software bei den Firmen auf eine etwas seltsame
Interpretation der TLS im Falle des Ausschaltens von WVZ-Anzeigen versteift (1), wird bis zur verbindlichen
Festlegung einer vernnftigen Interpretation ein WVZ beim Ausschalten jeweils mit dem letzten  empfangenen
WVZ-Code einer Einschaltsequenz ausgeschaltet.

(1) Das Schalten einer WVZ-Anzeige erfolgt ber zwei Steuerbyte: dem eigentlichen Befehl ob ein- oder auszuschalten ist
und dem darzustellenden WVZ-Code. Letzterer macht logischerweise nur Sinn beim Einschalten. Einige Entwickler versteifen
sich aber darauf, dass auch beim Ausschalten ein gltiger Code verwendet werden muss und schalten das WZG ansonsten
nicht aus (obwohl kein Mensch erklren kann, warum hier so ein unntiger Programmieraufwand getrieben wird, der zudem
einen sicheren Betrieb erheblich erschwert...Im Zweifelsfall kann nmlich eine Fehlanzeige nicht ohne weiteres ber
eine Mnuelle Schaltung ausgeschaltet werden, weil die Liste der gltigen Anzeigecode nicht bekannt ist!!).

Telegramme, bei den aus der Rckmeldung gltige Codes gemerkt werden:

Fg004Typ032Id003AtgTlsWzgWvzGrundEinstellungAspParameterIst
Fg004Typ033Id003AtgTlsWzgGrundEinstellungAspParameterIst
Fg004Typ043Id003AtgTlsWzgCodeListeAspTlsAntwort
Fg004Typ044Id003AtgTlsWzgCodeDefinitionAspParameterIst
Fg004Typ048Id005AtgTlsWzgWvzStellZustandAspTlsZustand


Telegramme, bei denen der letzte gemerkte gltige Code beim AUSSCHALTEN ins Telegramm eingetragen wird:
Fg004Typ032Id003AtgTlsWzgWvzGrundEinstellungAspParameterSoll
Fg004Typ033Id003AtgTlsWzgGrundEinstellungAspParameterSoll
Fg004Typ044Id003AtgTlsWzgCodeDefinitionAspParameterSoll
Fg004Typ048Id005AtgTlsWzgWvzStellZustandAspTlsVorgabe
Fg004Typ055Id005AtgTlsWzgStellZustandAspTlsVorgabe
------------------------------------------------------------------------------------------------------------------------




