Skalan på data inom IoT skiljer sig fundamentalt från traditionella inbyggda system. I enskilda inbyggda system är datamängden och dess natur ofta välkända redan i modelleringens tidiga faser. Processhårdvaran väljs noggrant för att hantera data inom systemets realtidskrav, och den totala datavolymen är ofta marginell jämfört med IoT:s omfattande dataflöden. Ett exempel är en brostyrningsanordning som kan generera några hundra eller tusen byte data varannan minut, vilket kan inkludera sensoravläsningar eller videoövervakning. Men moderna fordon kan generera flera gigabyte data per dag. När man multiplicerar detta med antalet fordon, övervakningsstationer och andra anslutna objekt blir det uppenbart att den totala datamängden i molnet är astronomisk.

Den aktiva forskningen kring "big data" är central för IoT. För enskilda inbyggda system är data ofta hanterbara med befintliga metoder, men utvecklingsteam bör överväga om och hur data från dessa system ska exporteras för att vara användbara i en större IoT-kontext. Att göra systemets data tillgänglig och meningsfull för den utomstående världen kräver noggrann design och överväganden kring interoperabilitet och säkerhet.

Heterogeniteten hos "saker" i IoT är en av de mest utmanande aspekterna. IoT omfattar redan ett brett spektrum av anslutna objekt – fordon, människor med biomonitorer, hushållsapparater, och fler saker som vägar, byggnader och kläder är på väg att inkluderas. Framväxten av nya produkter innebär att helt nya typer av saker snart kommer att delta i IoT, vilket skapar en miljö där olika enheter med helt skilda funktioner och kommunikationsprotokoll måste förstå varandra.

Problemet blir tydligt när exempelvis en bil tar emot ett meddelande där en byte har värdet 50. Denna siffra kan betyda helt olika saker beroende på källan – hastighet på en annan bil, tiden kvar tills ett trafikljus slår om, rekommenderad hastighet på vägen eller en rabattprocent i en närliggande butik. De inbyggda systemen utvecklas ofta av experter specialiserade på sin egen domän, vilket innebär att språk och protokoll är anpassade för respektive applikation, utan hänsyn till andra "sakers" språk.

Ett sätt att tackla detta är att använda mark-up-språk för meddelanden och standardiserade ordböcker, likt de som används på Internet med HTTPS och inom vetenskaplig publicering. Dessa språk och standarder skapar kontext, vilket möjliggör att system kan tolka och förstå meddelanden från andra system, både vad gäller domänspecifik och allmän information. Mark-up-språk gör även filer läsbara för människor, vilket underlättar utveckling och felsökning.

Samtidigt medför mark-up-språk vissa nackdelar. Filstorleken blir betydligt större jämfört med kodade format, vilket påverkar bandbredd och lagring. Säkerheten blir också en utmaning, då dessa format är avsedda att vara öppna och lättlästa. Om data rör exempelvis väderinformation är detta mindre kritiskt, men personliga eller biometriska uppgifter kräver strikt säkerhet för att förhindra obehörig åtkomst.

Realtidssystem med hårda tidskrav måste även ta hänsyn till den tid som krävs för att tolka dessa meddelanden. Det innebär att vissa namnrymder och tolkningslogik kan behöva byggas in i hårdvaran för snabb reaktion, medan mindre kritiska meddelanden kan hanteras via normala nätverksförfrågningar. På så sätt balanseras behovet av snabb respons och flexibilitet i kommunikation.

Slutligen måste designteamen också avgöra var i systemet mark-up ska läggas till och tolkas, med tanke på begränsad beräkningskapacitet hos många IoT-enheter. En vanlig lösning är att skapa lokala privata nätverk med en gateway som hanterar kommunikationen mot omvärlden. På så sätt kan man välja en hårdvaruplattform som klarar av den förväntade trafikmängden och de säkerhetskrav som ställs.

Utöver dataskalans och heterogenitetens utmaningar är säkerhet, integritet och förtroende avgörande begrepp. Säkerhet innebär skydd mot obehörig åtkomst, integritet skyddar informationen från att nå fel händer, och förtroende handlar om att systemet kan verifiera att dess användare är autentiska och behöriga, oavsett om de är människor eller andra enheter. Dessa principer måste genomsyra hela systemets arkitektur och hantering, särskilt när känslig eller personlig data är inblandad.

Det är viktigt att förstå att IoT inte bara är en teknisk utmaning utan också en organisatorisk och etisk fråga. Utformningen av datahantering, interoperabilitet och säkerhet måste ske med hänsyn till både tekniska begränsningar och människors rätt till privatliv och kontroll över sin egen information. Att bygga skalbara, säkra och kompatibla IoT-system kräver därför ett multidisciplinärt angreppssätt där både tekniska och sociala aspekter inkluderas i designprocessen.

Hur hanteras icke-determinism och samtidiga signaler i inbyggda system med FSM-modeller?

När en finit tillståndsmaskin (FSM) mottar flera signaler som kan vara i konflikt, uppstår ofta icke-determinism som gör systemets beteende osäkert och svårförutsägbart. Ett exempel är när två övergångar ger motsägelsefulla instruktioner, som att en bro ska höjas och sänkas samtidigt. I praktiken är detta orealistiskt och potentiellt farligt. Därför är det avgörande att undvika sådana situationer genom noggrann design och granskning under utvecklingsprocessen. Teamet bör aktivt identifiera och åtgärda källor till icke-deterministiskt beteende innan systemet implementeras.

En annan komplexitet uppstår när flera signaler anländer nästan samtidigt men från olika, oberoende källor som inte är strikt synkroniserade. Till exempel kan ett motoröverhettningsmeddelande komma från en modulenhet medan nivåsensorer i en annan modulenhet rapporterar positionen för bron. Dessa signaler kan inträffa exakt samtidigt eller med mycket kort tidsförskjutning, och de kan komma i olika ordningar vid olika tillfällen. I sådana fall måste designen beakta att vissa åtgärder är oförenliga, exempelvis att motoröverhettning kräver att bron stoppas, medan nivåsensorernas signal kan indikera att bron ska sänkas långsamt. Det är därför viktigt att fastställa prioriteringsregler eller konfliktlösningsmekanismer som säkerställer att systemet alltid beter sig på ett säkert och förutsägbart sätt, oavsett signalernas ankomstordning.

Tidsaspekten är central i utformningen av inbyggda system. Signaler kan vara schemalagda att uppträda med viss frekvens, men variationer i sensorteknik, kommunikationsfördröjningar eller systemets timers kan göra att signaler som borde komma samtidigt faktiskt anländer med små tidsförskjutningar. Detta kan ytterligare försvåra determinismen och kräver att systemdesignen kan hantera dessa variationer utan att kompromissa med säkerheten eller funktionaliteten.

Hierarkiska FSM-modeller erbjuder verktyg för att hantera komplexiteten i samtidiga och parallella processer inom inbyggda system. Genom att använda överordnade tillstånd (super-states) och AND-tillstånd kan man modellera parallellt opererande moduler och deras interaktioner. Trots detta kvarstår utmaningen att säkerställa determinism när flera moduler bearbetar signaler som kan påverka varandra. Ofta krävs en noggrann analys av möjliga signalkombinationer och deras konsekvenser, samt design av lämpliga konfliktlösningar.

Det är även väsentligt att förstå att FSM-modellen inte bara är en abstrakt representation, utan ett praktiskt verktyg för att hitta och eliminera fel i systemets design. Genom att analysera FSM:ens tillstånd, övergångar och actions kan man upptäcka bortglömda scenarier och potentiellt farliga kombinationer av signaler och tillstånd. En korrekt designad FSM säkerställer att det inbyggda systemet är robust, förutsägbart och säkert under alla förhållanden.

Vidare är det viktigt att notera att i många moderna inbyggda system förekommer konfigurationer där flera FSM:er samverkar, exempelvis i trafikljusstyrning med olika signaler för olika riktningar, där ett överordnat FSM hanterar övergripande tillstånd som normalt läge, nödläge och strömavbrott. Att skapa hierarkiska FSM:er som kan hantera sådana komplexa scenarier kräver noggrann definiering av globala variabler, timers och tydliga regler för tillståndsövergångar, samt en förståelse för hur samtidiga och asynkrona signaler ska koordineras.

Det är också viktigt att designen tar hänsyn till realvärldens fysiska begränsningar och osäkerheter. Sensorer har naturliga variationer och fördröjningar, kommunikationskanaler kan vara delade och signaler kan påverkas av externa störningar. En modell som inte beaktar dessa faktorer riskerar att bli teoretiskt korrekt men praktiskt oanvändbar.

Det är därför av yttersta vikt att inte enbart fokusera på själva FSM-modellen och dess övergångar, utan också integrera en förståelse för tid, prioriteringar och fysisk realisering av signaler och åtgärder. Endast då kan ett inbyggt system utformas som är både funktionellt och tillförlitligt i verkliga applikationer.

Hur simulerar man ett ändligt tillståndsmaskin (FSM) och en Petri-nätmodell?

Att simulera komplexa system som ändliga tillståndsmaskiner (FSM) och Petri-nät innebär att man modellerar och analyserar sekvenser av händelser i en dynamisk och tidsberoende miljö. I denna process måste man beakta en rad faktorer, inklusive systemets klocka, tillståndsvariabler, och eventköer. För att förstå och arbeta effektivt med sådana simuleringar är det viktigt att förstå den allmänna proceduren, samt hur man definierar och hanterar de olika komponenterna i modellen.

Ett exempel på denna simulering kan tas från ett bro-system där en båt måste passera en bro medan systemet hanterar trafiken och höjer bro-spänen. Systemet styrs av en FSM som definierar övergångar mellan olika tillstånd, till exempel när trafikljuset ska ändras eller när barriärerna ska sänkas. I en sådan modell finns både interna tillståndsövergångar (t.ex. ljusets färgändringar) och externa handlingar (som att passera sensorer eller sänka barriärerna). Det är viktigt att skilja på interna och externa övergångar, eftersom en FSM som simulerar ett system kan ha betydligt fler händelser än en enkel sekvensdiagram.

Simuleringen börjar med att definiera en initial eventkö, där händelserna rangordnas efter tidpunkt. Varje händelse innebär en förändring av systemet som sedan kan utlösa nya händelser i en sekventiell ordning. Detta innebär att systemet måste hålla reda på både interna och externa tidpunkter, och justera sin tillståndshantering för att säkerställa att alla händelser utförs i rätt ordning. I vårt exempel simuleras en båt som rör sig genom systemet, där vi definierar när båtens ankomst till sensorerna sker, samt när barriärerna sänks och spånen höjs.

Till exempel, om vi definierar att det tar 1,75 sekunder för förändringar i en global variabel, som I_barv, att bli erkända av andra moduler i systemet, måste detta tas med i simuleringen för att säkerställa att alla komponenter reagerar vid rätt tidpunkt. När båtens ankomst vid en sensor sker, påverkas andra moduler som systemets trafikljus eller barriärer. Om det sker en ändring i tillståndet för trafikljuset (t.ex. en övergång till röd), måste detta reflekteras i systemets eventkö och leda till att barriärerna sänks. Denna sekvens av händelser måste hanteras noggrant för att systemet ska fungera korrekt och för att bro-spånen ska höjas i god tid innan båten når bron.

Det är också viktigt att förstå att simuleringarna inte bara handlar om att modellera tidsberoende händelser, utan också att korrekt definiera övergångar och hur systemet ska reagera på olika händelser. Till exempel, när en övergång är aktiverad (t.ex. trafikljuset går från gult till rött), kan detta utlösa flera andra händelser som måste bearbetas i en ordnad sekvens. Om flera övergångar är aktiverade samtidigt, måste det fastställas vilken övergång som ska ske först, eller om de ska utföras parallellt.

För att få en djupare förståelse av hur dessa modeller kan simuleras, är det viktigt att också beakta hur tidsvariabler definieras och hanteras i systemet. Till exempel, i vårt exempel för bron, måste det fastställas exakt när olika komponenter (som barriärerna eller ljusen) ska reagera på ändrade tillstånd. Systemet måste kunna hantera både förutsägbara och osäkra tidsvariationer, samt att definiera händelseintervall för alla förändringar i systemet.

När man övergår till att simulera en Petri-nätmodell, vilket också handlar om att modellera händelser, är den grundläggande skillnaden att en Petri-nätmodell inte direkt definierar interna övergångar eller handlingar. Istället representeras dessa av platser och övergångar som flyttar markörer genom nätet. Varje övergång i ett Petri-nät är beroende av att förutsättningar (markörer) är på plats, vilket innebär att simuleringen blir beroende av hur markörerna rör sig mellan platser. Här är det också viktigt att förstå att övergångarna kan ha olika tidskrav. Vissa övergångar kan ha fasta tider, medan andra är beroende av externa faktorer eller tillfälliga förhållanden som måste simuleras.

Vid simulering av Petri-nät, till exempel i ett två-robot-system, innebär varje övergång att markörer flyttas från en plats till en annan, och detta kan påverka hur systemet reagerar. I en sådan simulering måste övergångarna definieras noggrant för att säkerställa att systemet hanterar alla tidsaspekter och händelser korrekt.

I sammanhanget av att modellera och simulera komplexa system, måste man också beakta den flexibilitet som simuleringen erbjuder. Simuleringen gör det möjligt att analysera och förstå hur olika komponenter samverkar i realtid, vilket kan vara svårt att göra med manuella beräkningar, särskilt i stora och komplexa system. Därför är simulering ett oumbärligt verktyg för att utvärdera och optimera systemdesign, eftersom det gör det möjligt att förutsäga beteendet och identifiera potentiella problem innan systemet implementeras i verkligheten.