Et softwarefundament til driftskritiske applikationer.
ULTRAMEGA S1 samler runtime, SDK og fælles platformfunktioner til modulær software med høje krav til robusthed, sikkerhed og forudsigelig adfærd.
Hvad er ULTRAMEGA S1?
ULTRAMEGA S1 er et generelt softwarefundament til udvikling og drift af robuste, driftskritiske applikationer. Det er målrettet systemer med høje krav til stabilitet, sikkerhed og forudsigelig adfærd, hvor nedbrud eller tab af data kan have store konsekvenser.
Platformen omfatter runtime, SDK og fælles funktioner til modulopbygning, kommunikation, konfiguration og fejlhåndtering. Det giver forsknings-, udviklings- og tekniske miljøer et sammenhængende grundlag for at bygge og vedligeholde applikationer til krævende driftsforhold.
S1 kan danne fundament for specialiserede applikationer på tværs af fagområder, hvor driftssikkerhed, kontrolleret fejlhåndtering og krav til deterministisk adfærd er centrale for systemets design.
Under motorhjelmen anvender S1 centrale platformkomponenter kompileret til maskinkode med fokus på høj ydeevne og effektiv ressourceudnyttelse. SDK’et giver udviklingsteamet adgang til platformens funktioner fra C#/.NET.
Det håndterer S1 under drift
Procesisolering
Hvert modul kører i sin egen proces og bruger sit eget hukommelsesområde. S1 håndterer opstart, porte og automatisk genstart. Det isolerer fejl i processerne, men applikationen skal stadig håndtere moduler, der ikke svarer, og opgaver, der bliver afbrudt.
DetaljerBeskeder i realtid
Modulerne udveksler hændelser og kommandoer gennem en beskedbus med lav latenstid. Hændelser kan sendes som beskeder uden svar, mens synkrone kommandoer returnerer et resultat. Levering i rækkefølge kan konfigureres. Kontrol af beskedernes datatyper og struktur hjælper med at opdage fejl i kommunikationen mellem modulerne.
DetaljerREST API og hændelsesstrømme
11 HTTP-API-grupper giver adgang til modulstyring, beskeder, kommandoer, konfiguration, driftsstatus og diagnostik. Klienter kan modtage hændelser over WebSocket og modulspecifikke beskeder via SignalR.
DetaljerNår et modul eller en forbindelse fejler
Circuit breakers stopper gentagne kald til moduler, der ikke svarer. S1 forsøger at genetablere afbrudte gRPC-forbindelser og genstarter moduler, der er brudt ned. Moduler kan gendanne deres tilstand fra gemte checkpoints, hvis de understøtter det.
DetaljerKontrol af modulernes indstillinger
Indstillinger sendes til modulerne gennem én fælles funktion. Det er muligt at kontrollere, om de er taget i brug, ved at sammenligne den ønskede konfiguration med den, det kørende modul rapporterer. Kontrollen bruger statusoplysninger og konfigurationsfingeraftryk, som ikke afslører hemmelige værdier.
DetaljerDriftsstatus og overvågning
Driftskontroller viser, om systemet svarer, er klar til brug og er startet, samt detaljeret og samlet driftsstatus. De relevante endpoints kan bruges af orkestreringsværktøjer og load balancere. Driftsmålinger, revisionsspor og status for hvert modul hjælper med at finde årsagen til driftsproblemer.
DetaljerSamspil mellem moduler
Beskeder med definerede datatyper, routingregler, planlagt levering og checkpoints bestemmer, hvordan en opgave går fra modul til modul. Sagaer understøtter forløb med flere trin, hvor applikationen skal angive, hvad der sker, hvis et trin fejler.
DetaljerStyring af forløb med flere trin
S1 følger hvert trin i et forløb, begrænser antallet af samtidige kørsler og identificerer operationerne med entydige korrelations-ID'er. Fejler et trin, kalder S1 de kompensationsfunktioner, applikationen har registreret. I bestemmer, hvordan de skal håndtere fejlen; fysiske processer kan ikke generelt rulles tilbage.
DetaljerFederation
Flere S1-instanser kan forbindes, så moduler kan sende beskeder mellem dem. S1 kontrollerer modtagernes endpoints og beskytter mod SSRF. Platformen overvåger, om de øvrige instanser svarer, og bruger timeouts ved videresendelse.
DetaljerBeskeder på planlagte tidspunkter
Beskeder kan sendes på et bestemt tidspunkt eller med faste intervaller. Planen gemmes og bevares efter genstart. Funktionsflag kan slå den planlagte levering fra under drift. Ved opslag hentes resultaterne i sider med et begrænset antal poster.
DetaljerFordeling af beskeder efter indhold
Routingregler fordeler beskeder efter headere, beskedtype eller destinationspræfiks. Reglerne oprettes gennem API'et og sender beskederne til de relevante moduler. De kan tilføjes, fjernes og ændres under drift uden at genstarte modulerne.
DetaljerBeskedjournal og checkpoints
En vedvarende journal gemmer beskeder til senere opslag og genafspilning. Moduler kan gemme og gendanne deres tilstand gennem checkpoint-API'et. Automatisk komprimering af journalen begrænser lagerforbruget, og driftsmålinger viser opbevaring og kassering af beskeder.
DetaljerNår et modul eller en forbindelse fejler
S1 forsøger at genetablere afbrudte forbindelser, stopper gentagne kald til moduler, der ikke svarer, og genstarter moduler efter nedbrud.
Circuit breakers
Når et modul ikke svarer, stopper en circuit breaker nye kald til det, så forespørgsler og timeouts ikke hober sig op. Nye kald får straks en tydelig fejlstatus. S1 afprøver med mellemrum, om modulet svarer igen.
- Beskytter kommunikationen mellem moduler
- Konfigurerbare tærskler for hvert modulpar
- Tilstand tilgængelig gennem status-API'et
Automatiske forsøg på at genetablere forbindelser
S1 forsøger automatisk at genetablere afbrudte gRPC-forbindelser. Pauserne mellem forsøgene bliver længere og varierer tilfældigt, så klienterne ikke alle forsøger igen samtidigt. Indstillingerne afgør, hvordan beskeder håndteres under afbrydelsen, og når forbindelsen vender tilbage.
- Beskytter gRPC- og TCP-forbindelser
- Fordeler genforbindelsesforsøg over tid
- Forbindelsesstatus rapporteres i realtid
Procesovervågning
S1 registrerer processer, der er brudt ned, rydder op efter dem og genstarter modulerne med deres senest kendte indstillinger. Platformen følger proces-ID'er og opdager efterladte processer, så de ikke optager ressourcer unødigt.
- Overvåger modulernes opstart, drift og afslutning
- Begrænset antal genstartsforsøg
- Gendannelse fra checkpoint ved genstart
Model Context Protocol (MCP)
AI-værktøjernes adgang til S1-funktioner styres med udtrykkeligt tildelte rettigheder.
MCP-endpoint
Den indbyggede MCP-server stiller 56 Gateway-systemværktøjer til rådighed samt værktøjer registreret af moduler. Autoriserede klienter kan administrere moduler, sende beskeder og undersøge driftsstatus. Adgangen styres for hver session.
DetaljerAdgang efter tildelte rettigheder
Hver session får tildelt rettigheder som system:read, system:module_management, messaging:send og system:admin. Rollebaseret adgangskontrol bestemmer, hvilke værktøjer sessionen kan finde og kalde.
DetaljerSessionsstyring og revisionsspor
Hver session knyttes til en identitet, og værktøjskald gemmes i en revisionslog. Klienter på samme S1-instans kan koordinere deres arbejde gennem beskeder mellem sessionerne.
DetaljerBeskrivelser af værktøjer og parametre
Egne værktøjer beskrives med JSON Schema. Klienter kan finde tilgængelige operationer og parametre i registret frem for at bruge en særskilt vedligeholdt liste.
Detaljer56 Gateway-systemværktøjer
AI-agenter og operatører kan bruge Gateway-systemværktøjer og moduldefinerede værktøjer gennem ét fælles interface.
Modulstyring
Moduler kan registreres, startes, stoppes, genstartes og fjernes. Deres tilstand og driftsstatus kan læses gennem værktøjerne.
DetaljerBeskeder
Beskeder kan sendes enkeltvis, samlet eller til alle modtagere. Værktøjerne understøtter forespørgsler med svar og routing af beskeder med definerede datatyper.
DetaljerKonfiguration
Autoriserede brugere kan læse og opdatere platformkonfigurationen samt undersøge og ændre funktionsflag.
DetaljerSystemstyring
Nedlukning, genstart, systemoplysninger, ydelsesstatistik og platformmetadata.
DetaljerKlynge
Styring af noder, valg af leder, tjenesteopslag og distribueret tilstand.
DetaljerGateway-oplysninger
Værktøjerne viser version, produktoplysninger, runtimestatus og ydelsesdata.
DetaljerRegistrering og opslag af tjenester
Tjenesteendpoints kan registreres og slås op efter navn.
DetaljerTypesystem
Beskedtyper registreres med skemaer og kan findes i typeregistret.
DetaljerFordeling af beskeder efter indhold
Regler for fordeling af beskeder kan tilføjes, fjernes og vises gennem værktøjerne.
DetaljerBeskedjournal
Beskedhistorikken kan søges frem og genafspilles, og journalens statistik kan undersøges.
DetaljerCheckpoint
Modulets tilstand kan gemmes i checkpoints. De gemte checkpoints kan vises og bruges til gendannelse efter nedbrud.
DetaljerPlanlægning
Beskeder kan planlægges til senere eller gentagen levering. Planlagte job kan vises og annulleres.
DetaljerSagaer
Forløb med flere trin gemmer fremdriften og håndterer fejl med kompensationsfunktioner. De kan startes, følges og annulleres gennem værktøjerne.
DetaljerFederation
Eksterne S1-instanser kan registreres, forbindelserne mellem dem kan administreres, og deres driftsstatus kan kontrolleres.
DetaljerS1 som del af jeres applikation
.NET-klient- og hostingpakkerne bruges til integration. Udviklerpakken indeholder SDK-værktøjer, skabeloner og runtime-programfiler.
Ultramega.S1.Client
En .NET-klient med typede kald til Gateway REST API. Den understøtter login, modulstyring, beskeder, synkrone kommandoer, tjenesteopslag, konfiguration, driftsstatus, målinger og funktionsflag. Hændelser kan modtages over WebSocket eller via SignalR med automatisk genetablering af forbindelsen.
- AddS1GatewayClient() til dependency injection
- AddS1EventStream() til WebSocket
- AddS1HubClient() til SignalR
Ultramega.S1.Hosting
Starter og overvåger S1's Gateway- og ModuleHost-processer. Pakken tildeler porte, kontrollerer, hvornår processerne er klar, lukker dem kontrolleret ned og genstarter dem efter nedbrud. Den kan enten styre egne processer eller forbinde til processer, der allerede kører.
- AddS1Platform() som IHostedService
- API til modulregistrering
- Procesovervågning med automatisk genstart og circuit breakers
Udviklerpakke og runtime-programfiler
Udviklerpakken indeholder S1-programmer, der er klar til brug, samt SDK-filer. Runtime-pakkerne kopierer de nødvendige programfiler til applikationens outputmappe.
- Udviklerpakker til Windows, Linux og macOS
- Selvstændige eksekverbare filer uden eksterne afhængigheder
- Udrulning uden særskilt installation af runtime
Integration af moduler
S1 gør det muligt at opbygge applikationer med komponenter udviklet i forskellige programmeringssprog. LabVIEW, C++, C#, Python og andre sprog kan kombineres gennem platformens åbne grænseflader. Udviklingsteamet kan dermed vælge sprog og værktøjer efter opgaven og integrere eksisterende software i løsningen.
Moduler i C# og .NET
Moduler udviklet med .NET SDK'et kan bruge S1's beskeder, processtyring og konfiguration. De registreres gennem hosting-API'et og angiver, hvilke funktioner klienterne kan bruge.
- Direkte SDK-integration via IModule
- Platformen holder styr på hver modulinstans
- Konfigurationsfingeraftryk, der ikke afslører hemmelige værdier
- Angivelse af rettigheder til MCP og værktøjer
Eksterne moduler og klienter
Eksisterende software kan forbindes gennem de publicerede API'er og gRPC-kontrakter. External-module v1 understøtter konfigurationsopdateringer gennem ApplyConfiguration. Adapter-worker v1 understøtter ikke anvendelse af konfiguration i selve workeren.
- Eksterne moduler i Python og C++ via gRPC
- Gateway-klienter på protokolniveau og adapter-worker-skabeloner
- REST API til registrering, tjenesteopslag og overførsel af konfiguration
- Faste kontrakter for modulernes opstart, drift, afslutning, beskeder og konfiguration
Anvendelseseksempler
Eksempler på, hvor en fælles runtime til moduler kan være relevant.
Industrielle styresystemer
Moduler og adaptere forbinder styresoftware fra forskellige leverandører. Python-, C++- og .NET-komponenter kan arbejde sammen, mens S1 styrer deres processer og kommunikation.
Test og måling
S1 understøtter testforløb med høj afviklingshastighed og dataopsamling i realtid. Testfiksturer, visionsystemer og kvalitetsdatabaser kan arbejde sammen gennem sagaer, beskeder med definerede datatyper, routingregler og planlagt levering.
Modernisering af systemer
Eksisterende PLC- og SCADA-systemer kan forbindes via API'er til software til analyse og fjernovervågning. Integrationen kan indføres i etaper, hvor test og idriftsættelse planlægges i forhold til anlæggets drift.
HIL og digitale tvillinger
Fysisk udstyr og simulerede komponenter kan forbindes til hardware-in-the-loop-test. Hændelsesstrømme viser deres adfærd. Tidskravene skal verificeres for den konkrete testopstilling.
Robotter og automation
Moduler til robotkoordinering, sensorbehandling og baneplanlægning kan udveksle beskeder gennem S1. Applikationen leverer algoritmerne og skal opfylde maskinernes tids- og sikkerhedskrav.
AI-understøttet drift
AI-værktøjer kan forbindes gennem det indbyggede MCP-endpoint for at undersøge systemtilstand og hjælpe med diagnostik. Skrive- og styringsrettigheder skal tildeles udtrykkeligt efter jeres driftsprocedurer.
Gateway-API
11 endpointgrupper til godkendelse, modulstyring, beskeder og driftsdata.
Godkendelse
JWT-login, fornyelse af tokens, logout, ændring af adgangskode og tokenkontrol.
DetaljerModuler
API'et giver adgang til at registrere, starte, stoppe, genstarte og slette moduler. Det omfatter også driftsstatus, logs og understøttelse af eksterne moduler.
DetaljerBeskeder
Klienter kan sende beskeder enkeltvis eller samlet, angive deres datatype og slå leveringsstatus op efter besked-ID.
DetaljerTjenesteopslag
Tjenester kan registreres og slås op. Belastningen fordeles med round-robin-valg.
DetaljerDriftsstatus
Endpoints, der viser, om systemet svarer og er klar til brug, samt detaljeret driftsstatus. Til load balancere og orkestreringsværktøjer.
DetaljerKonfiguration
Klienter kan læse platformens indstillinger og opdatere modulernes konfiguration. API'et giver adgang til skemaer, aktuel status, korrelationsfelter og anvisninger til nye forsøg. Konfigurationsfingeraftryk bruges til kontrol uden at afsløre hemmelige værdier.
DetaljerFunktioner
API'et viser alle funktionsflag og giver mulighed for at kontrollere de enkelte flag. Ændringer under drift sker gennem autoriserede administrations- og værktøjsinterfaces.
DetaljerDriftsmålinger
Driftsmålinger er tilgængelige i JSON- og Prometheus-format og viser blandt andet, hvordan beskedkøerne tømmes.
DetaljerWebSocket
Hændelses- og beskedstrømme i realtid samt et endpoint med forbindelsesoplysninger til klienter.
DetaljerTyper
Beskedtyper, modultilstande og værdier for leveringsgarantier kan registreres og slås op gennem API'et.
DetaljerDiagnostik
Systemoplysninger og målinger af, hvor hurtigt beskedkøerne tømmes, hjælper med at finde flaskehalse i beskedbehandlingen.
DetaljerDokumentation
Dokumentation og pakker
Teknisk whitepaper (engelsk)
Arkitekturoverblik, ydelsesegenskaber og designvalg bag den beskedbaserede mikrokerne.
Se downloadsSDK-reference (engelsk)
API'er, datakontrakter, hændelser ved modulernes opstart og afslutning, trådmodel, genetablering af forbindelser og kodeeksempler til moduludvikling.
Se downloadsGuide til hostingpakker (engelsk)
Guide til at tage NuGet-pakkerne S1.Client, S1.Hosting og S1.Runtime i brug. Med tjekliste til overgangen og eksempler på dependency injection.
Se downloadsGuide til MCP-integration (engelsk)
Tilslutning af AI-agenter til S1: værktøjsregistrering, opslag af rettigheder, RBAC-konfiguration og sessionsstyring.
Se downloadsIntegrationseksempler (engelsk)
Gennemgange af integration med PLC'er, SCADA, virksomhedssystemer og eksterne moduler via gRPC og WebSocket.
Se downloadsGateway-API-reference (engelsk)
REST API-dokumentation for gatewayens endpointgrupper: skemaer for forespørgsler og svar, godkendelse og WebSocket-protokoller.
Se downloadsHent ULTRAMEGA S1
S1-kerneplatformen er gratis, også til kommerciel brug. Den findes som udviklerpakke og som NuGet-pakker til jeres .NET-applikation. Vi hjælper gerne med integration eller systemudvikling.