( ← alle prosjekter )

Industriell programvare

Siden 2021 har vi bygget om programvaren Høglunds ingeniører bruker til å designe marin automasjon. Et eget språk for å beskrive komponenter, en motor som tegner systemet i sanntid, og et visuelt verktøy for å bygge grensesnittene, både på Windows og i nettleseren.

Klient
Høglund AS
Varighet
Pågående (siden 2021)

Domener

Marin automasjon Legacy-modernisering Å fornye eldre, etablerte systemer uten å miste funksjonalitet de bedriftskritiske prosessene er avhengige av. Språkdesign (DSL) Å lage et domenespesifikt språk skreddersydd for én oppgave, så fagfolk kan uttrykke logikk uten å programmere. HMI Human-Machine Interface - grensesnittet operatører bruker for å overvåke og styre tekniske systemer. Sanntidsgrafikk Grafikk som beregnes og tegnes opp i øyeblikket, som i spill og interaktive visualiseringer.

Verktøy

  • DSL
  • Uttrykksspråk
  • Grafikkprogrammering
  • Sanntidsrendering
  • Native Windows
  • Web

Resultat

  • ( r1 ) Ett levende bilde av hele automasjonssystemet, likt om bord og på land, både native på Windows og i nettleseren.
  • ( r2 ) Høglunds ingeniører, ikke bare utviklerne, kan bygge og endre grensesnitt selv, med live forhåndsvisning og rask iterasjon.
  • ( r3 ) OSDesigner bygget om i drift, så ingeniørene setter sammen hele systemer visuelt mens teamet fortsetter å levere.
  • ( r4 ) Den ombygde suiten er nå noe Høglund viser frem selv, presentert sammen med oss under Nor-Shipping.
( 01 - bakgrunn )

Høglund har bygget marin automasjon siden 1993, og systemene deres kjører nå på hundrevis av fartøy verden over. Programvaren ingeniørene brukte til å designe dem hadde eldet med verdighet, men eldet hadde den. Den trengte å moderniseres, ikke skiftes ut. Siden 2021 har vi vært Høglunds tekniske partner og bygget om verktøykjeden innenfra, mens teamet deres fortsatte å levere.

Domenet er deres, ikke vårt

Høglund kjenner fartøyene, regelverket og flaskehalsene bedre enn noen. Jobben vår var aldri å bestemme hva systemet skulle gjøre. Den var å gi det et nytt teknisk fundament. Vi forbedret det som virket, moderniserte det som hadde eldet, og lette etter hva ny teknologi kunne tilføre, uten å miste presisjonen bransjen er bygget på.

Ett system, mange parter

Marin automasjon berører alt om bord, fra motorene til navigasjon og sikkerhet, så koden må stemme første gang. Den bygges også av flere parter samtidig: verftene som setter sammen fartøyene, mannskapet som drifter dem, og ingeniørene som designer, tester og installerer systemene. Verktøyene vi bygde måtte tjene alle sammen uten å bremse noen av dem.

( 02 - inne i systemet )

Tre programvarer, bygget for å virke som én. Et språk for å beskrive komponenter og logikken som driver dem, en motor som tegner systemstatusen i sanntid, og et visuelt verktøy for å sette det hele sammen. Vi bygde om hver av dem i drift, uten å ta verktøykjeden offline.

( rendering · native og web ) Ett bilde av systemet, til havs og på land

Om bord må mannskapet lese hele automasjonssystemet med ett blikk, og stole på det de ser. Vi bygde en høyytelsesapplikasjon som tegner det levende systemet som ett samlet statusbilde, hentet fra én underliggende modell. Den samme modellen driver en native Windows-versjon, der hastighet og direkte tilgang til maskinvaren teller, og en web-versjon for alle som følger fartøyet fra land. Uansett hvilken du åpner, ser du den samme kilden til sannhet.

( det levende automasjonssystemet, tegnet i sanntid fra én modell )
( språkdesign ) Et språk for å beskrive komponenter

Å tegne et system én gang er enkelt. Det vanskelige er hvem som får bygge det neste, og hvor raskt. Vi laget et domenespesifikt språk for å beskrive komponenter, sammen med et uttrykksspråk for logikken som binder dem. En ingeniør skriver markupen og ser den tegnes live, redigerer og forhåndsviser i samme øyeblikk. De som kjenner domenet, ikke bare utviklere, bygger disse delene selv og ser resultatet umiddelbart.

<Component>

    <Property Name="Value" Type="string[]" />
    <Property Name="AlarmColor" Type="color" Value="#A0D4F1" />
    <Property Name="DataSeries" Type="double[]" />

    <Layer>
      <Text Value="Available power" HorizontalAlignment="Center" />
      <Bar Id="Bar1" Width="24" Value="75" Height="100"
      BarColor="{{self.AlarmColor}}" />
    </Layer>

    <Layer>
      <Text Value="Total power" HorizontalAlignment="Center" />
      <Bar Id="Bar2" Width="24" Value="75" Height="100"
      BarColor="{{self.AlarmColor}}" />
    </Layer>

</Component>
LIVE PREVIEW
( en komponent skrevet i språket, tegnet live fra den samme markupen )
( osdesigner ) OSDesigner, bygget om fra grunnen

OSDesigner er der Høglunds ingeniører setter sammen operatørgrensesnittene og automasjonssystemene for hånd. Vi bygde det helt om. Ingeniørene henter komponenter fra språket, plasserer dem på arbeidsflaten, og beholder oversikten over hele systemet mens det vokser. Ombyggingen skjedde i drift, vi fornyet arbeidsflaten under teamet mens de fortsatte å levere prosjekter på den. Språket, motoren og OSDesigner endte som tre lag i én verktøykjede, ikke tre verktøy som tilfeldigvis står ved siden av hverandre.

( osdesigner i bruk, komponenter satt sammen på arbeidsflaten )
( 03 - resultat )

En verktøykjede Høglund nå bygger videre på, og viser frem.

( teamet på prosjektet )
( neste prosjekt ) Arx Compliance Fra fragmentert compliance-rapportering til én plattform, bygget sammen med Arx fra prototype til enterprise.