Java Central Station

Gebruikersavatar
fransja
Berichten: 30
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hi Reinder,

Dat is inderdaad een leuk idee.
Door jou idee zit ik er nu aan te denken dat ik de virtuele commandos dus ook naar buiten zou kunnen sturen (waardoor JCS een virtueel command station zou kunnen worden)...
Daardoor zou je dus cross technologie kunnen testen (JCS is java en Traintasic is C++) en met verschillende inval hoeken (verschillende auteurs los van elkaar).
Bijvoorbeeld : Ik laat een Traintastic virtuele centrale draaien on de JCS functionaliteit te testen en vice versa.
Ik zie een hoop mogelijkheden ;)

Volgens mij mag dat bij Marklin zonder problemen, maar bij ESU licentie technisch mag het niet om dat je dan voor "server" speelt...

Qua planning komt dit idee wel goed uit daar ik nu na de GUI issues ben begonnen aan de "virtuele CS 3".
Dit omdat ik dat ook al voor de Ecos had gedaan en omdat ik de CS implementatie moet aanpassen aan de gewijzigde HAL.

Welke centrale emuleert die nu?
Ik ondersteun nu CS2/3, ESU Ecos en DCC-EX.

Enfin dat houdt je van de straat :)

Groet,
Frans
Bouwer van JCS

Gebruikersavatar
reinder
Berichten: 33
Lid geworden op: 02 jan 2023, 23:24
Locatie: Leeuwarden
Contacteer:

Bericht door reinder »

Hi Frans,

De Traintastic simulator emuleert geen centrale, dat doet Traintastic server, dat heb ik er in den beginne direct al ingemaakt.

Het werkt in Traintastic server als volgt, het systeem bestaat grofweg uit drie soorten objecten:
1. De interface, het basis object voor een verbinding met de buiten wereld.
2. Kernel, deze wordt aangemaakt op het moment dat de interface online gaat, hierin wordt het hele protocol afgehandeld op bericht niveau.
3. IOHandler, vertaling van serieel/netwerk etc.naar protocol berichten.

Voor elk systeem: LocoNet/XpressNet/ECoS/Marklin/Z21/DCC-EX etc. is er 1 interface, 1 kernel en 1 of meer IO handlers.
Voor DCC-EX zijn er bijvoorbeeld twee: 1 voor serieel en 1 voor netwerk.

Wat ik in simulatie mode doe is een SimulationIOHandler aan de kernel koppelen, dit is een speciale IO handler die dus het gedrag van een centrale nabootst.

Met de nieuwe Traintastic simulator werkt het als volgt, ik bouw de opstelling hierboven op met zn SimulationIOHandler.
Vanuit de SimulationIOHandler maak ik verbinding (TCP) met Traintastic simulator.
Als er bij de SimulationIOHandler een lok commando binnen komt dat stuur ik een lokcommando naar Traintastic simulator.
Als in Traintastic simulator een trein een sensor triggert dan stuurt die een bericht naar de SimulationIOHandler, die zet dat vervolgens om naar bijvoorbeeld een LocoNet OPC_INPUT_REP, dat gaat naar de LocoNet kernel en dan vervolgt het zn weg door de software.

Hoe kun je hem aan JCS koppelen?
Vanuit je virtuele ECoS maak je verbinding met Traintastic Simulator, op het moment dat je op je virtuele ECoS een lok command binnen krijgt stuur je een bericht naar de simulator.
Als je van de simulator een sensor bericht krijg zet je dat om naar wat JCS wil en dan zou het moeten werken.

Beide Traintastic simulator protocol berichten zijn kleine bineare berichten, zie: https://github.com/traintastic/traintas ... otocol.hpp

Groeten,
Reinder

p.s. hoop dat het beetje duidelijk omschreven is
p.s.2. verwacht dat de work in progess simulator ergens dit weekend in windows installer komt

Gebruikersavatar
reinder
Berichten: 33
Lid geworden op: 02 jan 2023, 23:24
Locatie: Leeuwarden
Contacteer:

Bericht door reinder »

Hi Frans,

Inmiddels heb ik een Traintastic simulator in de Windows installer zitten, je kan deze vinden op: https://traintastic.org/en-us/download/ ... -simulator

Reinder

Gebruikersavatar
fransja
Berichten: 30
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hi Reinder,

Mooi dat het in de installatie zit scheelt weer compileren ;).

Ik ga er mee aan de slag, maar door ziekte van mijn ega zal er wel enige tijd overeen gaan.
Moet dus eerst nog de Marklin implementatie aan de HAL aanpassen en dan ga ik kijken of ik met de Traintastic centrale simulator kan verbinden.
Ik neem aan dat ik het op een Windows "doos" kan draaien en over het netwerk met JCS kan praten, altans dat heb ik nu min of meer in gedachte.

Groet,

Frans
Bouwer van JCS

Gebruikersavatar
reinder
Berichten: 33
Lid geworden op: 02 jan 2023, 23:24
Locatie: Leeuwarden
Contacteer:

Bericht door reinder »

Hi Frans,

Strekte met de ziekte van je ega! Dat gaat natuurlijk voor.

In de installer ff een vinkje zetten en het zou moeten werken, standaard staat het uit namelijk.
Op het moment luister de simulator alleen op localhost, dat zal ik nog ff instelbaar maken.

Reinder

Gebruikersavatar
fransja
Berichten: 30
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hallo,

Het is alweer ruim 6 weken geleden dat ik voor het laatst iets had gepost over de vorderingen met JCS.
Door allerlei (privé) omstandigheden gaat het wat trager, maar er zijn nog steeds vorderingen :) .

Los van mijn privé omstandigheden, ben ik ook begonnen aan groot onderhoud van mijn eigen baan. Ben hier de bekabeling van de sensoren etc aan het vervangen, zodat ik fouten uit het verleden nu elimineer, maar dat de baan straks ook door meerdere centrales bestuurd kan worden (het is nu heel erg Marklin specifiek).

Daardoor kan ik naar de toekomst toe JCS verder ontwikkelen, doordat ik meer mogelijkheden heb dan op m’n testbaan.

Huidige stand van zaken
Druk bezig met het testen van de HAL.
Bij het toevoegen van de USU ECoS bleek dat ik nog (te)veel Marklin CS specifieke code in de HAL had zitten.
Bij het toevoege van de ESU ECoS heb ik die al min of meer verplaats, maar dit moet nog wel allemaal getest worden.
Dit proces is nog steeds gaande. Ook bezig met het zoveel mogelijk automatiseren en toevoegen van testcases.

Bij het testen kwam toen ook naar boven de de GUI nogal traag werd bij gebruik van meer dan 100 tegels, dit probleem lijkt nu eindelijk opgelost (zie vorige post).
De Marklin CS code ben ik, naar aanleiding van de leermomenten die ik bij het toevoegen van de ESU ECoS tegenkwam, aan het herschrijven, refactoren.
Inmiddels is en nu ook een virtuele Marklin connectie mogelijk, maar de Marklin CS heeft net iets andere mogelijkheden als de ESU ECoS.

Ook ben ik begonnen met het implementeren van het gebruik van het toetsenbord bij het editen van de layout en Automatisch gebruik.
Dit waren suggesties van testers / gebruikers en daarom voor mij waardevol.

Door het toevoegen van de toetsenbord functies ben ik ook weer gaan na denken over de layout van de schermen, zodat daar ook een aantal wijzigingen worden gerealiseerd waardoor het geheel en stuk logischer aan het worden is.

Een andere belangrijke wijziging, die toch meer code aanpassingen vraagt dan gedacht, is het reageren op wijziging in de setup.
Denk hier bijvoorbeeld aan het toevoegen van een nieuwe locomotief of Accessoire, het wijzigen of toevoegen van de layout.

Tot nu toe moest je JCS opnieuw starten voordat de wijziging van kracht werd. Dat is straks niet meer nodig.
Verder is er door de DCC-EX gemeenschap een grote update uitgebracht, zodat ik daar ook nog een aantal zaken moet aanpassen.

Ik ben ook aan het onderzoeken of ik JCS kan koppelen met Traintastic, zodat ik gebruik kan maken van de simulator

Enfin zo blijf je bezig ;)

Wordt vervolgt…
Bouwer van JCS

Gebruikersavatar
fransja
Berichten: 30
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hallo,

Nu de temperatuur weer aan het stijgen is op de treinen-zolder spendeer ik daar wat minder tijd.
Toch maak ik wel langzaam vorderingen mijn mijn zelfbouw project voor treinbesturing.
De hoeveelheid functionaliteit is de laatste tijd met het toevoegen van de ESU-ECoS behorlijk gestegen.
Ik had al vermeld dat ik in de HAL laag, de laag in de software die er voor zorgt dat alle centrales vanuit het gezichtspunt van de bediening op het scherm en de automaat het zelfde reageren, behoorlijk moest modificeren.
Later bleek natuurlijk dat een niet meer goed werkte bij de Marklin CS 3. (wet van murphy).
Ook aan de GUI kan bleek bij testen e.e.a. mis te gaan, waardoor ik min of meer een paar stappen terug moest gaan.

Het moet natuurlijk goed werken en de software moet ook ook nog onderhoudbaar zijn, dus de perfectionist in mij heeft mij doen besluiten hele stukken te herschrijven en te hergroeperen 8o

Dit lijkt nu eindelijk wat vruchten af te werpen, de hoeveelheid code wordt minder :)

Ik ben heel veel automatische testen aan het toevoegen, zodat ik eerder kan zien als ik iets stuk maak en omdat ik nu voor de 2e keer door de Marklin implementatie heen ga leer ik toch weer wat dingen (belooft wat voor DCC-EX).

In het hoofd-scherm heb ik een "rare" lege plek opgevuld met een "mini" "Driver cap". Soort gelijke functionaliteit hebben veel andere besturing programma's ook en het is wel handing, dus moet ik ook hebben ;)
jcs-ecos-vnc.png
jcs-ecos-vnc.png (610.29 KiB) 4361 keer bekeken
Het screen-shot hierboven is de weergave van JCS met het ingebouwde VNC scherm verbonden met mijn ESU-ECoS 50000.
Het gaat om het blokje links onder in:
mini-drivercap-panel.png
mini-drivercap-panel.png (24.28 KiB) 4361 keer bekeken
Deze "Driver cap" bedient de geselecteerde locomotief in de tabel er boven. Het scherm is bi-directioneel. Dat wil zeggen je kun de snelheid, richting en functie van de locomotief kan bedienen, maar als je dit op de centrale doet geeft dit scherm ook de situatie weer.
het scherm "luistert" als het ware naar de centrale. Het scherm(pje) "luistert" ook naar de tabel er boven:
locomotief_tabel.png
locomotief_tabel.png (55.23 KiB) 4361 keer bekeken
Als je daar een andere locomotief kiest dan "luistert" het naar die geselecteerde locomotief.
Ik vond dit op zich wel een mooie mile-stone.

De release laat helaas nog even op zich wachten, komt ook doordat ik een beetje perfectionistisch ben, maar het is hobby toch ;) ?

Ondertussen ben ik ook aan een ander project begonnen en wel het her-bekabelen van mijn baan, zodat ik meerdere centrales kan aansluiten (nee niet tegelijkertijd) zonder dat alles om hoeft. Dit JCS verder te te kunnen testen op een baan van ca 3 x 1,1 m waar 8 treinen kunnen rijden.
Zie filmpje https://youtu.be/x3HBTgWsE6A toen reed het met Rocrail (maar ook om de kabels netter te maken dan in de film).

Groet,

Frans
Bouwer van JCS

Gebruikersavatar
fransja
Berichten: 30
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hallo,

Afgelopen tijd is het wat stil geweest over mijn JCS project. Dit komt deels door de zomer B), maar ook om dat ik niet verder fysiek kon testen daar ik (als side project) mijn baan aan het her-bekabelen was. Deze baan, "Zolderhoek" ben ik in 2018 gaan bouwen en gedurende de loop van de bouw veel geleerd, maar er zaten dus ook een aantal zaken niet lekker. Toen er 2 wissel motoren en een K83 decoder defect raakten was dit voor mij het moment om de "koe bij de hoorns" te vatten het het nu goed, of in ieder geval anders, te gaan doen. Ik had hier gelijk de wens dat het relatief gemakkelijk moet zijn om van Centrale te wisselen, zodat ik JCS op een grotere baan als mij test baantje kan testen.

Eerste wens was alle decoders zoveel mogelijk centraal (en er geen last van hebben). Ik heb alle decoders op een omhoog klapbare plank geplaatst, die onder de tafel kan worden geklapt en vastgezet.
modulepaneel.png
modulepaneel.png (962.48 KiB) 1159 keer bekeken
Voor de Sein decoders moet er waarschijnlijk zo'n 2e paneel komen.
Door dat ik de aansluitingen van de Link-S88 zelf heb vrij gehouden kan ik relatief eenvoudig de S88 modules om pluggen om ze bijvoorbeeld aan een ECoS centrale te hangen.

De bedrading van de baanspanning heb ik een ster, met een "sneeuwvlok" gemaakt van 0,75mm2. De sneeuwvlok slaat op de 2e (kleine) ster op het stuk baan dat fysiek boven de zoldertrap ligt en los-koppelbaar moet zijn om bij het dakraam te kunnen komen.
zolderhoek.png
zolderhoek.png (934.07 KiB) 1159 keer bekeken
Ook wilde ik in de toekomst de verlichting van de gebouwen kunnen sturen, dus heb deze aansluitingen zoveel als mogelijk naar een centraal punt gebracht.
Doordat je dan bezig ben met de baan (heeft al met al zeker zo’n 7 a 8 maanden geduurd) kon ik ook het JCS project overdenken. Dat helpt soms de dingen beter te overzien…

Ik heb een aantal verbeteringen in de GUI doorgevoerd, zoals gebruik van toets combinaties in het edit scherm (dit was door een aantal volgers van deze blog voorgesteld). Met een toets combinatie (bv alt r voor roteren) kan je nu de layout wijzigen.
De grootste wijziging is echter "Drag and Drop", de Spoor componenten zijn in een overzichtelijk paneel geplaatst en je kan ze van hieruit op het spoorplan trekken. "Door" plaatsen, het laatst geplaatste component en richting wordt onthouden, bij nog een keer klikken op een onbezette plaats wordt dit component wederom geplaatst.
editscherm.png
editscherm.png (161.64 KiB) 1159 keer bekeken
Ook bij het instellen van de Centrale heb ik de nodige verbeteringen doorgevoerd, zoals het automatisch zoeken van de centrale op het netwerk, nu tegenwoordig bijna (ieder geval ECoS en CS-3) alle centrales mDNS ondersteunen. De filosofie van JCS is dat de Centrale “het beter weet” dus heb veel tijd besteed aan het uitlezen van de centrale meta-data. Zoals het aantal melders, locomotieven, accessoires en eventuele iconen.
centralescherm.png
centralescherm.png (67.87 KiB) 1159 keer bekeken
Last but not least automatisch rijden.
Tot nu toe heb ik dat met name alleen kunnen testen op mijn testbaan, waar ik max. 3 locomotieven heen en weer kon laten bewegen.

https://youtu.be/rbFK8flam7M

Nu de bekabeling op mijn baan voor 80% klaar is (komt het wel een helemaal af...?) en alle terugmelders en wissels het weer doen ga ik een nieuwe fase in om het automatisch rijden te kunnen perfectioneren (het echte werk begint dus nu ;) ).
controlescherm.png
controlescherm.png (171.5 KiB) 1159 keer bekeken

Deze plattegrond representeert mijn baan "Zolderhoek" komende tijd ga ik JCS verder ontwikkelen, zodat hier 8 treinen kunnen gaan rijden.

Word vervolgt,

Frans
Bouwer van JCS

Gebruikersavatar
Frits
Berichten: 21
Lid geworden op: 10 jul 2025, 13:52
Locatie: Hoogeveen

Bericht door Frits »

Zo te lezen ben je goed bezig. Succes met je automatisering en laat ons af en toe zien wat je bereikt hebt.
M.v.g. Frits.

Spoorbaan is in ontwerp, maar is nog lang niet klaar. :oops:

Gebruikersavatar
reinder
Berichten: 33
Lid geworden op: 02 jan 2023, 23:24
Locatie: Leeuwarden
Contacteer:

Bericht door reinder »

Hi Frans,

Dat is een mooie nieuwe uitdaging, automatische rijden op een grotere baan!

Als de trein automatische aan het rijden is en je past de snelheid of richting aan met de regelaar, wat doet JCS dan?

Reinder

Plaats reactie

Terug naar “Zelfbouw software”