gmd Geschrieben 22. November 2024 Geschrieben 22. November 2024 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
Achimdampf Geschrieben 23. November 2024 Geschrieben 23. November 2024 Hallo, dass hört sich doch Interessant an, weiterhin viel Erfolg mit Deinem MBS Companion V2
gmd Geschrieben 24. November 2024 Autor Geschrieben 24. November 2024 (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. 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. Hier das filmchen dazu. Blockmonitor Widget Noch einen schoenen Sonntag. Gruss Gmd Bearbeitet 24. November 2024 von gmd
gmd Geschrieben 26. November 2024 Autor Geschrieben 26. November 2024 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: 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. 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
gmd Geschrieben 27. November 2024 Autor Geschrieben 27. November 2024 Hallo, wen es interessiert die derzeitige liste der block eigenschaften, die ich verwalten kann und auf den der AI fuer die steuerung aufbaut. Habe wert darauf gelegt, dass viele parameter fuer den betrieb als defaults definiert werden koennen, das reduziert erst mal den definitionsaufwand drastisch, erlaubt aber den stueckweise ausbau und verfeinerung des betriebs fuer unterschiedliche zugtypen und strecken. Realistische geschwindigkeitsunterschiede zwischen zugtypen koennen damit abgebildet werden und auch spontan zu entscheidende ausweichmanoever werden moeglich bzw. notwendig, damit hat der betrieb auch eine art zufaelligkeit trotz fahrplaene. Ist moeglicherweise noch nicht vollstaendig , werde das aber bei der schrittweisen implementierung des control AIs merken. Gruss Gmd Blockeigenschaften in Datenbank Identification Attributes User defined and partially traced ulong Id Unique Id of the record ulong? SectionId The section the block is located in ulong? StationId The station the block is located at ulong? DepotId Block may belong to a Depot not a station string BlockKennung Comprises segment name and block number int BlockNummer Just the block number, unique on the set short? Konfiguration The main purpose of the block, see Enum short? BlockRichtung Start direction of block string BlockStartGleis Name of the first track or switch of the block string BlockEndGleis Name of the last track or switch of the block string Beschreibung Dscription of the block short? IstEndblock If the block ends with no other connection Block Charactersistics Determined with block tracing float? Blocklaenge Total length of the block float? Bremsweg Length from brake contact to stop contact float? AusfahrtLaenge Length from stop contact to end track float? Bremsbereich Distance stop contact to signal – safety zone float? MaxZugLaenge Maximum length of train safely in block float? HalteLaenge Length between last switch and stop contact Block Track Elements Determined with block tracing short? AbzweigungVoraus Turnoff ahead of braking contact short? EinfahrtVoraus Incoming Lane ahead of braking contact short? KreuzungVoraus Crossing ahead of braking contact ulong? EingangsweicheId Switch at start of block – foreign key float? EingangsweichePosition Distance from first track to switch short? EingangsweicheVorhanden Flag if entry switch is present string EingangsweicheName Name of entry switch ulong? EinfahrtweicheId Merge in switch – foreign key float? EinfahrtWeichePosition Distance from first track to switch short? EinfahrtweicheVorhanden Merge in switch exists string EinfahrtWeicheName Name of merge in switch ulong? AbzweigweicheId Turn off switch – foreign key float? AbzweigweichePosition Distance from first track to switch short? AbzweigweicheVorhanden Flag if turn off switch exists string AbzweigweicheName Turn off switch name ulong? AusgangsweicheId Exit switch – foreign key float? AusgangsweichePosition Distance from first track to switch short? AusgangsweicheVorhanden Flag if exit switch exists string AusgangsweicheName Exit switch name Block Connections Determined with route tracing ulong? VorgaengerId1 Block connected to start track or switch lane1 ulong? VorgaengerId2 Block connected to entry switch lane2 ulong? VorgaengerId3 Block connected to entry switch lane3 ulong? NachfolgerId1 Block connected to end track or switch lane1 ulong? NachfolgerId2 Block connected to end switch lane 2 ulong? NachfolgerId3 Block connected to end switch lane 3 ulong? AbzweigId1 Block connected to turnoff lane 1 ulong? AbzweigId2 Block connected to turnoff lane 2 ulong? AbzweigId3 Block connected to turnoff lane 3 ulong? EinfahrtId1 Block connected to merge in lane 1 ulong? EinfahrtId2 Block connected to merge in lane 2 ulong? EinfahrtId3 Block connected to merge in lane 3 Block Operation Conditions User defined characteristics short? DoppeltraktionErlaubt Two coupled locomotives may enter short? AntriebErlaubtDampf Steam engines are allowed on the track short? AntriebErlaubtElektrisch Track is ready for electrical locomotives short? AntriebErlaubtDiesel Track can be used by diesel locomotives short? LokWechselErlaubt Lokomotive change permitted short? RichtungswechselErlaubt Switch of train direction permitted short? GegenverkehrErlaubt Two way traffic permitted short? AbzweigMitHalt Turnoff second train while train stops short? KreuzfahrtMoeglich Train can cross block short? KreuzfahrtWaehrendHalt Train can cross block while other train stops short? BlocksperrungMoeglich Block can be locked short? AusweichErlaubt Use of a siding permitted short? AusweichVorhanden Siding exists short? UseBlockDefaults Flag if block defaults should be activated short? UseVehicleDefaults Flag if vehicle defaults should be activated Block Default Types User defined types and values for operation sbyte? IsBlockDefault Default valid for a block sbyte? IsBlocktypeDefault Default valid for a block type sbyte? IsSetDefault Default globally valid for the set sbyte? IsVehicleDefault Default for a vehicle sbyte? IsTrainDefault Default for a train string VehicleType Vehicle type for vehicle default string TrainOpNumber Train operation number for train default Block Default Values float? VerzoegerungEk Deceleration at entry contact float? VerzogerungBk Deceleration brake contact float? BeschleunigungHk Acceleration stop contact float? BeschleunigungAk Acceleration exit contact short? GeschwindigkeitEg Speed at entry contact track short? GeschwindigkeitBg Speed at brake contact track short? GeschwindigkeitHg Speed at stop contact track short? GeschwindigkeitAg Speed at exit contact track short? MingeschwindigkeitBk Minimum speed at brake contact track short? MingeschwindigkeitEk Minimum speed at entry contact track short? GeschwindigkeitHp Speed at stop contact when leaving short? WartezeitHg Waiting time at stop track short? WartezeitHk Waiting time at stop contact short? HatHaltepunkt Has short stop point float? HaltepunktVerzoegerung Deceleration at brake contact float? HaltepunktBeschleunigung Acceleration at stop contact short? HaltepunktHatvorsignal Short stop has pre signal short? HaltepunktHatrangiersignal Short stop has shunting signal short? WartezeitHp Waiting time short stop signal short? WartezeitHkg Waiting time at short stop wait track Block Train Type Permissions short? ZugtypGueter Cargo train allowed short? ZugtypLokal Local train short? ZugtypRegional Regional train short? ZugtypFern Long distance train short? ZugtypSpezial Special train short? ZugtypServive Service train
Neo Geschrieben 27. November 2024 Geschrieben 27. November 2024 Am 22.11.2024 um 16:26 schrieb gmd: Jedenfalls hoffe ich dass die "alte schnittstelle" bleibt, da ich sie fuer die gesamte objektidentifikation benutze. Langfristig wird die alte Steuerschnittstelle entfernt, weil die neue Schnittstelle mit direktem Zugang zur EV flexibler ist (alles was die EV kann, kann auch die Steuerschnittstelle). Was fehlt dir bei der neuen Schnittstelle für die Objektidentifikation?
gmd Geschrieben 27. November 2024 Autor Geschrieben 27. November 2024 Neo, habe noch nicht den versuch gemacht die funktionen der alten schnittstelle umzustellen, fuer steuerung benutze ich die neue schnittstelle. Ich habe bisher nur folgenden wissensstand: Ich erkenne bisher nur meist steuerfunktionen und nach deinen eigenen worten ist das ja auch das ziel der schnittstelle. Die alte schnittstelle verwende ich zum einlesen aller objekte oder selektierter objekte, coordinaten, rotationen, plazieren von objekten, lesen guid, umbenennen objekte, duplizieren von objekten, alles funktionen die mit dem anlagenbau zu tun haben und nicht primaer mit der steuerung. Verbergen objekte, ersetzen objekte usw. also alles konstruktionsfunktionen. ich weiss dass ich mit layout.xxx viele der funktionen ersetzen kann, also coordinaten, transformation (rotation), aber ich habe noch nicht rausgefunden wie ich 100,101,130,131,134,135,136,143,144 auf einfache art ersetzen kann. Einiges geht bestimmt ich habe es nur noch nicht gefunden. Wenn du mir da helfen kannst waere das gut, dann kann ich sagen ob was fehlt. Derzeit waere das falsch, da mein wissen noch nicht gesichert ist um zu sagen ob etwas fehlt. Die ereignisse sind ja kein thema, die sind ohnehin viel detaillierter mit der neuen schnittstelle. Ich lasse zwei offene windows mit beiden ports laufen, da kann man die beiden schnittstellen gut vergleichen und die parsersoftware anpassen. Mit Json sind die kommandos nicht mehr so einfach abzusetzen, die muss man dann vorbereiten und bei bedarf pasten zum testen. Gruss Gmd
gmd Geschrieben 29. November 2024 Autor Geschrieben 29. November 2024 Hallo, wird wieder etwas langsamer werden. Ab morgen einpacken und dann wieder unterwegs auf dem naechsten trip fuer 4 monate . Nut ein paar stunden pro woche am computer. Hoffentlich ein paar fortschritte wenn ich ich zurueck bin . Habe nur umstrukturiert, etwas klarere linien geschaffen im program und an einem punkt ueber 600 fehler produziert .. hat ne weile gadauert das wieder aufzuraeumen, hat sich ber gelohnt wenn ich nach vorne schaue. Jeder der programmiert kennt ja solche punkte, an denen sich ein konzept totlaeuft und aenderung braucht. Wenn eine tabelle 50 attribute hat, dann muss man das halt teilen. gruss Gmd
gmd Geschrieben 30. Dezember 2024 Autor Geschrieben 30. Dezember 2024 Hallo aus Australien, Hoffe alle hatten gute Festtage und etwas zeit zum spielen . Wir hatten den kaeltesten 24ten Dezember in Perth seit Aufzeichnung, 23 Grad. Auch hier im Sueden, wo ich mich zur zeit aufhalte, aber da ist es ja sowiso kuehler, aber auch hier war es ein Record. Zwei tage vorher waren es 43 Grad in Perth. Ist halt ziemlich weit weg von Deutschland . Weihnachten bei 42 Grad is halt schwer vorstellbar wenn man auf der Norhalbkugel lebt. Ich habe immer mal etwas zeit un habe an meinem programm weiter gebastelt. Zunaechst mal am Gbs, allerdings habe ich ja nicht vor damit den verkehr zu steuern, sondern nur zu ueberwachen. Noch ein paar kleine kosmetische aenderungen muessen gemacht werden, dann gehe ich and die automatische streckenerzeugung basierend auf den erkannten bloecken. Eine manuelle nachbearbeitung is natuerlich moeglich. Ich sehe derzeit nicht dass ich das layout vollautomatisch erstellen kann, jedenfalls noch nicht in naechster zeit. Die referenzen zu den aktuellen gleisen, weichen und signalen werden dann automatisch erzeugt. Die farben bedeuten derzeit noch nichts, dahinter verbergen sich verschiedenste einstellungen, die dann zur visualisierung der zustaende verwendet werden. Zugnummern anzeigen usw. koennen gesetzt werden. Meine grosse Anlage laesst sich damit nicht wirklich vernueftig abbilden. das GBS wird einfach zu gross und unuebersichtlich und macht ja auch nicht wirklich sinn, da ja lange strecken nicht wirklich ein gbs brauchen, sondern nur teile and die verzweigter sind. Das fuehrt dann zu einer abschnitteinteilung, die jeweils einen relevanten abschnitt darstellt und moegliche teilabschnitte als detailsichten. Die verkuepfungspunkte im bild oben verbinden dann zum naechste abschnitt, falls vorhanden. Fuer die definition von abschnitten und ihrer beziehung untereinander habe ich ein eigenes diagramm gebaut. Bilder von der anlage sind vorbeitet und als abschnitte und teilabschitte vorsortiert. Diese koennen geladen und verknuepft werden und dienen dann im betrieb zum schnellen zugriff auf die gleisbilder und die zugeordneten fahrplaene falls vorhanden. So allmaehlich habe ich alle grundfunktionen und anzeigen fertig. Als naechstes geht es dann mehr und mehr and die tatsechliche erkennung und definition einer anlage. Bisher habe ich nur mit testdaten gearbeitet. Das ganze ist aber immer noch eine mehr experimentelle entwicklung, da ich immer wieder auch teile verwerfe, die mir nicht gefallen oder unpraktisch sind. Ich probiere funktionen aus und wenn sie mir gefallen, nehme ich sie ins konzept auf. Mit einer kommerziellen entwicklung ist das anders, das arbeitet man mehr direkt auf ein ziel hin. Alles gute zum neuen Jahr Bis bald und gruesse Gmd
gmd Geschrieben 31. Dezember 2024 Autor Geschrieben 31. Dezember 2024 Hallo nochmal im alten Jahr, mein naechster schritt: Fuer verschiedene funktionen benoetige ich kleinere, definierte anlagenteile und nicht immer das gesamte bild. Ein beispiel sind die abschnitte im stellpult (siehe oben). Diese sind mehr fuer den betrieb gedacht. Ich habe aber auch funktionen, die auf die gestaltung von teilen der analge wirken. Beispiel: Ein Laubwald, in einem bestimmten teil der anlage, soll langsam von Sommer nach Herbst umgewandelt werden. Ein modul der anlage soll complett dynamisch ersetzt werden. In einem teil der anlage (z.B. vor einem bahnhof) soll der fussgangerbetrieb tageszeitbedingt ersetzt werden. Objekte in einem teil der anlage sollen auf ebenen aufgeteilt werden. Ein wanderzirkus soll auf verschiedenen teilen der anlage auf- und abgebaut werden und zwischen den standorten transportiert werden. Baustellen sollen eingerichtet und wieder abgebaut werden. Ebenen sollen ein/ausgeblendet werden. usw. Fuer gestaltungsbedingte einteilung habe ich area und segment. Area ist eine teilanlage mit klaren, nicht zu vielen verbindungen zu anderen teilen. Segmente sind teile von areas mit bestimmten bedeutungen/funktionen und koennen, mussen aber nicht, einen gbs abschnitt darstellen. Um diese aufteilung effizient zu definieren und auch gleichzeitig alle objekte innerhalb eines teils zu finden bedarf es weiterer automatismen, sonst wird das muehsam. Ich verwende benannte Fluchtstaebe, um die ecken einer Area zu definieren und kann diese einlesen. Ich verwende ein layout bild wie oben als hintergrund eines diagramms und kann dann die areas als polygone zeichnen, basierend auf der position der fluchtstaebe. Die koordinaten werden transformiert zwischen dem diagramm in der analage und damit kann ich alle objekt innerhal einer area finden. Gleiches kann innerhalb der areas fuer segment geschehen, ich kann aber auch umgekehrt im diagramm segmente festlegen, wenn einmal die koordinaten des diagrams in bezug auf die anlage festgelegt sind. Gruss und alles gute zum neuen Jahr Gmd
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden