Simulator maken

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • laforte
  • Registratie: Juni 2012
  • Laatst online: 24-09 14:44

laforte

Helemaal de weg kwijt!

Topicstarter
In 2017 heb ik een process simulator gemaakt (web-based) geschreven in PHP en een beetje js om data te verversen zonder page refresh. Data werd gelezen en geschreven vanuit een mysql dB.

Opzich werkte dit prima maar het was behoorlijk arbeidsintensief om aanpassingen te maken en het voelde niet helemaal robuust om PHP scripts elke seconde uit te laten voeren door een js scriptje.

De process simulator was bedoeld om toekomstig operators te trainen/kennis te laten maken met een echt proces zoals een energie centrale.

Een voorbeeld van wat de bedoeling is kan hier gevonden worden.(pdf) dat is een simulator van Kongsberg deze is echter niet web based.

Inmiddels is het 2020, ondanks dat ik het werk uit 2017 nog heb wil ik opnieuw beginnen.
Nu ben ik al een week aan het googelen maar ik kom er niet uit hoe ik dit het beste kan aanpakken.

Ik heb bijvoorbeeld naar angularjs gekeken maar om hier data mee te verwerken naar bijvoorbeeld een json bestand lijkt behoorlijk omslachtig. Maar de manier waarop je variabelen op de pagina kan aanpassen ziet er wel weer eenvoudig uit. Ook heb ik onderzocht of het misschien eenvoudiger is het niet web based te maken hier zag ik echter weinig voordelen in na wat onderzoek.

Kort samen gevat; ik zit vast bij het kiezen van de juiste programmeer taal misschien dat jullie mij kunnen helpen? Zou ik bij php kunnen blijven of kan ik beter volledig overstappen op JavaScript?

Wensen:

-Gebruikers moeten live variabelen aan kunnen passen welke naar een db geschreven moeten worden en vervolgens berekend moeten worden in een procesmatig model. Model berekeningen kan via cron job?
-Data naar de gebruiker toe moeten elke seconden ge-update kunnen worden.
-Meerdere mensen moeten tegelijk data aan kunnen passen (leerling/instructeur)
-multi page simulator dus het wordt niet een enkele pagina.

Ik hoor graag hoe jullie dit zouden aanvliegen.

Mijn kennis ligt voornamelijk bij html/php/mysql en een beetje Python.

[ Voor 11% gewijzigd door laforte op 21-03-2020 16:53 ]

Beste antwoord (via laforte op 25-03-2020 22:15)


  • Kobus Post
  • Registratie: September 2010
  • Laatst online: 02-10 14:05
Op de server draait jouw Proces simulatie, dit kan elke server side programmeer taal zijn.

In de browser visualiseer je deze data, dat is het makkelijkst als je een JavaScript framework gebruikt.

Je moet een koppeling maken tussen beide, daarvoor heb je SignalR/websockets. Hiermee kan je events/data sturen tussen browser en server. De server stuurt bijvoorbeeld elke seconde de proces parameters naar de browser. Als de gebruiker een variabele aanpast dan kan je dat via dezelfde websocket verbinding direct weer naar de server sturen.

Qua programmeertaal is er geen beste keuze, kies wat je zelf het beste ligt. Ik zou zoiets in C# maken, met signalr voor de realtime communicatie en Vue op de frontend, maar dat is persoonlijke voorkeur. Wel wil ik je aanraden om ook eens te kijken naar Meteor. Dit is een JavaScript framework dat standaard realtime data synchronisatie heeft tussen server-browser

No trees were harmed in the creation of this message, but several thousand electrons were mildly inconvenienced.

Alle reacties


Acties:
  • +1 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 26-09 12:50
https://laravel.com/docs/7.x/broadcasting
Dit lijkt mij wat je zoekt en ook waar je de meeste kennis in hebt.
Eventueel aangevuld met bijvoorbeeld een front-end framework als Angular(JS) of Vue.

[ Voor 28% gewijzigd door Postman op 22-03-2020 00:19 ]


Acties:
  • +1 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Ik zou eens naar een game engine kijken. Multiplayer is in principe niets anders dan per seconde shared state updaten en weergeven.

Less alienation, more cooperation.


Acties:
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Websocket of een streaming xmlhttprequest zou ik naar kijken.

Maak je niet druk, dat doet de compressor maar


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Kobus Post
  • Registratie: September 2010
  • Laatst online: 02-10 14:05
Op de server draait jouw Proces simulatie, dit kan elke server side programmeer taal zijn.

In de browser visualiseer je deze data, dat is het makkelijkst als je een JavaScript framework gebruikt.

Je moet een koppeling maken tussen beide, daarvoor heb je SignalR/websockets. Hiermee kan je events/data sturen tussen browser en server. De server stuurt bijvoorbeeld elke seconde de proces parameters naar de browser. Als de gebruiker een variabele aanpast dan kan je dat via dezelfde websocket verbinding direct weer naar de server sturen.

Qua programmeertaal is er geen beste keuze, kies wat je zelf het beste ligt. Ik zou zoiets in C# maken, met signalr voor de realtime communicatie en Vue op de frontend, maar dat is persoonlijke voorkeur. Wel wil ik je aanraden om ook eens te kijken naar Meteor. Dit is een JavaScript framework dat standaard realtime data synchronisatie heeft tussen server-browser

No trees were harmed in the creation of this message, but several thousand electrons were mildly inconvenienced.


Acties:
  • +1 Henk 'm!

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 03-10 13:18

Knutselsmurf

LED's make things better

Wat binnen dit geheel verder van belang is, is de tijdschaal van je simulatie.
Hebben we het over meerdere updates per seconde die naar alle clients gestuurd moet worden, of 1 update per minuut?

Het heeft tenslotte niet veel zin om een mechanisme te kiezen dat bedoeld is om meerdere updates per seconde naar je clients te sturen, terwijl je op de server maar 1 keer per minuut een nieuwe toestand van de simulatie berekent.

- This line is intentionally left blank -


Acties:
  • 0 Henk 'm!

  • laforte
  • Registratie: Juni 2012
  • Laatst online: 24-09 14:44

laforte

Helemaal de weg kwijt!

Topicstarter
Knutselsmurf schreef op maandag 23 maart 2020 @ 12:51:
Wat binnen dit geheel verder van belang is, is de tijdschaal van je simulatie.
Hebben we het over meerdere updates per seconde die naar alle clients gestuurd moet worden, of 1 update per minuut?

Het heeft tenslotte niet veel zin om een mechanisme te kiezen dat bedoeld is om meerdere updates per seconde naar je clients te sturen, terwijl je op de server maar 1 keer per minuut een nieuwe toestand van de simulatie berekent.
Goed punt! Het is de bedoeling om ongeveer 1 keer per seconde een berekening doen van het model. Dus het zou mooi zijn deze data zo snel mogelijk naar de gebruiker te sturen.
Pagina: 1