Jump to content

Empfohlene Beiträge

Geschrieben

Hallo und gruesse aus Australian, 
melde mich mal wieder, ist ja ne weile her dass ich einen stand meines programms gepostet habe. Ich habe immer mal wieder weitergebaut und seit NEO die neue schnittstelle angekuendigt hat, habe ich dann mein konzept angepasst, bzw. erweitert. Ich habe in der zwischenzeit so gut wie alle grundfunktionen fertiggestellt, insbesondere die gesamte funktionalitaet rund um die objektidentifikation und block erkennung. Bin immer mal wieder fuer einige zeit unterwegs in unserem grossen land und habe dann immer nur
begrenzt zeit weiterzubauen. Aber es ist ja hobby und ich habe keinen deadline. 
Habe ein dokument angeheftet worin die die ziele des programms festgehalten sind und kurze uebersicht mit screen shoots vom jetzigen stand. Ich halte das immer fest und erweitere das document, da dadurch nach laengeren pausen ein erneutes einarbeiten erleichtert wird. Habe detaillierte documentation direkt im programm, was dann auch nach einer pause hilft.

 
Die wesentliche neue richtung des ansatzes kommt nicht zuletzt durch die neue schnittstelle, aber auch durch meine neugier und interesse einen AI (KI) einzusetzen und zu trainieren das layout einer riesenanlage automatisch zu erkennen und dann die steuerung mit fahrplaenen durchzufuehren. 
Grundfunktionen und datenstrukturen sind soweit fertig um ein modell zu erstellen und die ersten tests mit einem AI zu machen. Klar muss ich da noch einiges lernen, aber das ist ja der sinn der sache. 

Die neue funktionen in der V9, z.b. eine vielzahl neuer beleuchtungsmoeglichkeiten, macht eine weitere automatisierung wuenschenswert.
Meine grosse testanlage hat ueber 64,000 objekte und ist manuell nicht zu betreiben oder auch mit algorythmen nicht mehr zu steuern. Da braucht es schon etwas mehr flexibilitaet.
Aber nachdem jetzt die grundfunktionen stehen kann ich ueber weitere automatisierung der erkennung nachdenken und wenn ich das modell fertig habe spielt die datenmenge nicht wirklich eine rolle. 
Jedenfalls hoffe ich dass die "alte schnittstelle" bleibt, da ich sie fuer die gesamte objektidentifikation benutze.
Gruss
Gmd
 
 

MBS Companion V2.pdf

Geschrieben (bearbeitet)

Hallo und gruesse aus Australien,

35 grad heute, aber nur heute, morgen wieder kuehler. Also heute ein tag fuer den computer :) mit klimaanlage an.
Habe meine behandlung von variationen und deren bilder vervollstaendigt. Kann jetzt auch alle variationen eines objektes verwalten und abbilden. Damit kann ich dann auch alle zugvarianten bilden und auf dem MBS plazieren. 

Das Beispiel unten ist der Siemens Vectron mit seinen 16 varianten.

variationen_erkennen.thumb.jpg.3f7b83deb95ee6c1a9da6fbc486c6f76.jpg

Nicht dass das wirklich wichtig ist, aber gelegentlich mache ich einfach ein paar einfachere erweiterungen bevor ich mich dann wieder an etwas muehsamere aspekte heranwage. 

Habe jezt auch das kapitel betriebsansichten weitergefuehrt. Darunter verstehe ich visualisierungen bestimmter logischen aspekte bei denen eine gruppierung von ereignissnachrichten und kommandos, sowie variableninhalte, hilfreich sind eine steuerung zu ueberwachen oder auch scripte zu testen.  Ok, das klingt abstrakt, hier ein beispiel eines widgets blockmonitor, das fuer jeden block auf der anlage dynamisch eingerichtet werden kann und dann die wichtigsten informationen anzeigt. Gleiches gibt es dann auch fuer andere betriebs aspekte, zb. ampeln and grosser kreuzung, gueter verladung oder generell animationen.

blockmonitor.thumb.jpg.eb41c4dc23bc379ee41803c2bfbb3551.jpg 

Hier das filmchen dazu.

Blockmonitor Widget

Noch einen schoenen Sonntag.
Gruss
Gmd


 

Bearbeitet von gmd
Geschrieben

Hallo an alle,

Habe jetzt die datenstruktur  zum fuettern der ersten stufe des AI fertiggestellt. Es gibt eine Json version alsauch eine version in der datenbank auf der der AI arbeitet.  

Hier nur ein kleiner Ausschnitt weiter unten als beispiel. Da groessere Json strukturen nicht sehr freundlich zu lesen sind hat mein programm auch eine einfache visualisierung fuer einen block mit seinen moeglichen komponenten.

Das sieht dann so aus:

block_erkennen.thumb.jpg.e273eb08b275f537e2541d8085274846.jpg

Hier sind alle elemente zunaechst eindeutig benannt. Dafuer gibt es andere funktionen. 
Ein endgueltiger name wird vorgeschlagen und kann uebernommen werden. 
Der prefix des namens ist das segment und der postfix ist die blocknummer.
Die weichen sind alle erkannt in welcher richtung sie liegen und wie sie befahren werden, als einfahrt oder abzweig usw.
Fuer einen block koennen im eigenschaftsfenster einige parameter gesetzt werden, die dann im betrieb relevant werden. 

Beispiele von blockkonfigurationen, die verschiedene nutzung ermoeglichen.  Weichen zu beginn, am ende, oder auch in der mitte sind optional und haben unterschiedliche verwendungsregeln, je nach blocktyp. Einfahr-,Brems-,Halte- und Ausfahrgleise sind markiert. 
Die absicht ist, den AI in der ersten stufe all blockvarianten erkennen zu lassen ohne alle kontakte und signale gesetzt zu haben. Sind vorschlaege vorhanden habe ich funktionen kontakte und signale automatisch zu plazieren und die erkennung fortzusetzen oder zu wiederholen, bis die gesamte anlage erkannt und definiert ist. Dabei wird die tracer lock vom AI gesteuert und die weichen geschaltet.
Der AI ist nun in der lage verknuepfungen zwischen den bloecken herzustellen und zu erkennen wo bloecke mit weichen verbunden sind. Daraus ergeben sich notwendige schutzeinrichtungen  (signale) es sei denn ein abschnitt is zu kurz (minimum zuglaenge erforderlich plus sicherheitsbereiche), dann bleibt er ungeschuetzt und wird als solches im betrieb beruecksichtigt.    

block_konfiguration.jpg.30bfc295307819c813d5411a7c55ae13.jpg

 

Unten ein kleines beispiel der Json struktur zur blockdefinition. Damit lassen sich alle elementaren fahrwege beschreiben. Die definition von routen ist der naechste schritt.

{
    "BlockComponents": [
        {
            "type": "track",
            "timestamp": "2024-11-26T11:31:54Z",
            "vehicle": {
                "name": "Tracer",
                "type": "Loc",
                "speed": "na",
                "rotation": "121.9843"
            },
            "track": {
                "name": "6001@64-JK_S01",
                "segment": "JK_S01",
                "guid": "{47D517F6-AC25-4E62-BEA3-E7DA7149A435}",
                "rotation": "31.98428",
                "use": "8",
                "length": "20.4",
                "type": "11",
                "state": "DU"
            }
        },
        {
            "type": "switch",
            "timestamp": "2024-11-26T11:31:55Z",
            "vehicle": {
                "name": "Tracer",
                "type": "Loc",
                "speed": "na",
                "rotation": "121.9842"
            },
            "track": {
                "name": "6070-1@53-JK_S01",
                "segment": "JK_S01",
                "guid": "{5732350C-F049-4BEB-8F22-7D83282EAD0C}",
                "rotation": "-31.98427",
                "use": "EIW",
                "length": "16.81355",
                "type": "4",
                "switchState": "1",
                "direction": "ER",
                "state": "EIW"
            }
        },
        {
            "type": "signal",
            "timestamp": "2024-11-26T11:31:56Z",
            "vehicle": {
                "name": "Tracer",
                "type": "Loc",
                "speed": "na",
                "rotation": "121.9844"
            },
            "signal": {
                "name": "Formvorsignal 2@5-JK_S01",
                "segment": "JK_S01",
                "guid": "{7E4AAF26-0023-408F-8F42-C8D781AFD241}",
                "rotation": "-148.0157",
                "use": "1",
                "position": "1",
                "type": "1",
                "state": "VS"
            }
        },
       {
          	"type":"contact",
			"timestamp":"2024-11-26T11:32:11Z",
			"vehicle":{
				"name":"Tracer",
				"type":"Loc",
				"speed":"na",
				"rotation":"-48.26498"
			},
			"contact":{
				"name":"Gleiskontakt@56-JK_S01",
				"segment":"JK_S01",
				"guid":"{E2A3CA8B-50A7-4247-9C02-4DC0306E1ED6}",
				"rotation":"-138.6383",
				"use":"2",
				"value":"0",
				"type":"0",
				"state":"BK"
			}
         }
    ]
}

gruss
Gmd

 

 

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...