Elektriska och elektroniska nätverk har sina rötter i 1800-talet. Ett av de mest kända exemplen är Alexander Graham Bells patent på telefonen från 1876. Bell arbetade också med optiska kommunikationssystem, och vid samma tidpunkt utvecklades liknande idéer av andra forskare. Datornätverk som vi känner dem idag uppstod dock först när datorerna började utvecklas. Ett tidigt exempel på ett datornätverk är det Semi-automatic Ground Environment (SAGE), som utvecklades av militären i samarbete med IBM och användes redan på slutet av 1950-talet för att koppla samman datorer som övervakade och kontrollerade radar. Ett annat tidigt nätverk, SABRE, utvecklades från SAGE-konceptet och började användas av American Airlines för att snabba upp bokningsprocessen under 1960-talet.
När datorer blev mer kraftfulla och användes i fler sammanhang, föddes nya nätverkslösningar. 1969 kopplades de första fyra noderna för ARPANET samman, vilket senare skulle bli Internet. Under 1970-talet utvecklade Robert Metcalfe Ethernet, en nätverkslösning som skulle bli central för framtidens nätverkskommunikation. Trådlösa datornätverk har också en lång historia, där det första fungerande nätverket, ALOHANET, skapades vid Hawaiiuniversitetet 1971. Detta nätverk lade grunden för senare trådlösa nätverk, och 1997 introducerades Wi-Fi-protokollet IEEE 802.11.
I takt med att trådlös kommunikation utvecklades, lanserades olika lågströmsprotokoll, som Bluetooth och Zigbee, för att stödja applikationer inom inbyggda system och Internet of Things (IoT). I början av 2000-talet skapades 6LoWPAN, ett protokoll som gjorde det möjligt för små, energisnåla enheter att ansluta till Internet utan att behöva stödja fullskaliga Internetprotokoll.
De grundläggande begreppen i nätverkskommunikation spelar en central roll i utformningen av inbyggda system och IoT-applikationer. Dessa begrepp definieras ofta i relation till hur nätverken hanterar paket och de olika parametrar som påverkar kommunikationens effektivitet.
Först och främst är begreppen utnyttjande och genomströmning viktiga för att förstå hur väl ett nätverkskanal används. Utnyttjande beskriver hur mycket av den totala kanaltiden som faktiskt används för att skicka användbar information. Genomströmning å andra sidan är ett mått på antalet paket som skickas genom en kanal per tidsenhet. Dessa två parametrar hänger ihop, och den effektiva användningen av kanalen beror på att nätverksdesignen minimerar förlorade paket och annan overhead.
Vidare definieras svarstid som den tid det tar för en avsändare att få ett svar från mottagaren, medan fördröjning är den tid det tar för ett paket att passera genom en kanal eller en enhet. Denna fördröjning kan vara olika beroende på kanalens hastighet och belastning. En hop beskriver överföringen av ett paket genom en enskild länk, som kan vara en kanal eller en router. End-to-end fördröjning beskriver den totala fördröjningen för ett paket att färdas från avsändare till mottagare, inklusive all trafik som måste passera genom de olika noderna i nätverket.
Ett intressant exempel på detta är när ett lokalt nätverk (LAN) är kopplat till andra nätverk via Internet. Ett meddelande från en nod i ett LAN måste passera genom flera länkar och routrar för att nå sin slutdestination. De olika vägar som paketet kan ta genom Internet innebär att olika paket kanske inte följer samma rutt och kan anlända i olika ordning, vilket ökar komplexiteten i nätverkskommunikationen.
Ett annat viktigt begrepp är latens, vilket refererar till den minsta tid det tar för ett paket att resa från avsändare till mottagare utan att beakta några andra fördröjningar än de som orsakas av länkhastigheten.
Vid designen av nätverkssystem är det avgörande att förstå de olika faktorer som påverkar effektiviteten i kommunikationen, såsom kanalens kapacitet och hur mycket data som faktiskt kan överföras jämfört med den totala mängden data som skickas. Nätverksingenjörer måste ta hänsyn till dessa faktorer för att optimera både hastighet och kostnad vid val av kommunikationslänk. När nätverket är under tung belastning kan det vara nödvändigt att överväga alternativa lösningar som kan erbjuda bättre prestanda till en lägre kostnad.
För att skapa nätverkslösningar som fungerar bra i praktiken måste ingenjörerna också beakta den verkliga användningen av kanaler och den potentiella latensen i systemen. För system där paket måste passera genom flera enheter och nätverksnoder, är det viktigt att analysera och minimera fördröjningar som kan uppstå vid varje steg i kommunikationskedjan. Dessutom kan förlust av paket, förseningar i mellanliggande routrar och andra faktorer som nätverkets trafikbelastning påverka nätverkets prestanda på olika sätt, vilket gör det nödvändigt att noggrant övervaka och justera nätverksinställningar.
Det är också viktigt att förstå att nätverksstrukturens komplexitet, särskilt när det gäller att hantera flera länkar och hopp, kan ha en avgörande inverkan på systemets prestanda. Ju fler hopp ett paket måste ta, desto större blir risken för förlust eller försening av paket.
Hur skiljer sig ändliga tillståndsmaskiner i inbäddade system från klassiska modeller?
Ändliga tillståndsmaskiner (FSM) används i inbäddade system för att beskriva och styra komplexa processer där systemets beteende styrs av tillstånd och övergångar. Till skillnad från traditionella teoretiska FSM, som ofta hanterar strömmar av symboler med tydliga start- och slutpunkter, måste FSM i inbäddade system anpassas för att hantera kontinuerlig och ofta komplex input samt utföra handlingar i den fysiska världen.
En central skillnad är att inbäddade system vanligtvis körs kontinuerligt utan något definierat "slutligt accepterande tillstånd". Istället finns det ofta många tillstånd som kan betraktas som accepterande eller normala under driftens gång. Input är inte heller bara enkla symboler eller tecken, utan kan vara komplexa meddelanden eller signaler från olika systemkomponenter. Exempelvis kan ett indata vara ett sensorvärde som rapporterar avståndet till flera objekt eller statusmeddelanden från olika moduler i systemet. Dessa input måste analyseras och hanteras på olika sätt beroende på deras värde och kontext, vilket innebär att en övergång i FSM kan baseras på komplexa villkor snarare än enskilda symboler.
Vidare är utgångarna från FSM i inbäddade system ofta betydligt mer komplexa än bara symboler. De kan representera fysiska åtgärder såsom att aktivera varningsljus, öppna broar eller starta motorer. Dessa åtgärder är abstraherade som symboler i FSM-modellen för att underlätta förståelse och utveckling, men i verkligheten innebär de direkt påverkan på den fysiska omgivningen. Det gör att FSM i inbäddade system måste vara designade med hänsyn till både interna tillstånd och externa handlingar, samt kunna reagera på samtidiga och sammansatta signaler.
I grafiska representationer av sådana FSM används ofta cirklar för att visa tillstånd och riktade pilar med etiketter för övergångar. Etiketterna består av villkor och åtgärder, där villkoren är booleska uttryck baserade på signaler, variabler och andra parametrar. Dessa villkor måste vara ömsesidigt uteslutande för att upprätthålla determinism, det vill säga att endast en övergång kan vara möjlig i varje ögonblick från ett givet tillstånd.
Ett illustrativt exempel är ett övergripande FSM för ett brostyrningssystem där tillstånd som “normal drift”, “månatlig inspektion”, “felsignal” och “manuell styrning” representeras som olika tillstånd. Villkor för övergångar kan inkludera mottagande av inspektionsmeddelanden eller felrapporter, och åtgärder kan vara att slå på varningsljus eller att initiera broöppning. Detta visar också hur delsystem och processer kan modelleras hierarkiskt som egna FSM, vilket ger en skalbar och hanterbar design för komplexa system.
Det är viktigt att förstå att designen av FSM i inbäddade system kräver en noggrann balans mellan abstraktion och verklighetstrogen modellering. Förståelsen av systemets fysiska kontext, de olika signalernas natur, samt komplexiteten i samtidiga och sammansatta ingångar är avgörande för att skapa robusta och pålitliga tillståndsmaskiner. Dessutom måste utvecklaren beakta samtidighet, delade variabler och möjliga race conditions som kan påverka tillståndsövergångarna.
Det är också väsentligt att inse att tillstånd i en FSM inte bara är statiska positioner utan ofta representerar komplexa processer och aktiviteter som kan ha egna interna tillstånd och logik. Att använda hierarkiska FSM-strukturer möjliggör hantering av sådana komplexiteter genom att bryta ned systemet i mer överskådliga delar. Detta gör det också lättare att revidera, felsöka och vidareutveckla systemet.
Slutligen kräver utvecklingen av FSM i inbäddade system ofta en iterativ process där modellerna förfinas och korrigeras efter hand som förståelsen av systemets beteende fördjupas och testning visar nya behov eller fel. Denna utvecklingscykel liknar den inom mjukvaruutveckling och är avgörande för att säkerställa att FSM-modellen verkligen speglar systemets verkliga funktion och kan hantera dess dynamik i praktiken.
Hur skapar vi användarvänliga inbyggda system som möter alla krav?
Inbyggda system är ofta komplexa och designen måste ta hänsyn till både tekniska och mänskliga faktorer. Det finns en stor mängd litteratur som behandlar designprinciper som hjälper till att säkerställa att produkter uppfyller behoven hos alla intressenter. Detta gäller särskilt för system som involverar mänskliga aktörer, där krav som är kvalitativa eller subjektiva inte alltid kan bevisas eller kvantifieras. Många sådana krav faller utanför området för formell verifiering, och i stället för att strikt bevisa funktionalitet, krävs en mer flexibel och mänsklig ansats i designprocessen.
I sammanhanget av inbyggda system är en viktig aspekt att förstå att användargränssnittet spelar en central roll för systemets framgång. För många inbyggda system, som exempelvis brostyrsystem eller bankomater, finns det både operatörsgränssnitt och interaktioner med slutanvändare som måste beaktas. Vissa krav på mänsklig-computer-interaktion (HCI) kan verifieras genom inspektion eller tester, såsom att säkerställa att en brooperatör kan överskrida den normala driften av bron om det behövs. Men när det gäller mer subjektiva krav, som att gränssnittet ska vara lätt att använda, blir verifieringen mer komplicerad.
Begreppet "användbarhet" (usability) omfattar flera dimensioner av ett gränssnitt – förståelighet, lärbarhet och operabilitet – som alla är nödvändiga för att användarna ska acceptera och kunna arbeta effektivt med systemet. Förståelighet syftar på hur uppenbart det är för användaren hur kontrollerna fungerar. Ett exempel på detta kan vara en nödstopp-knapp på en brokontrollpanel. Om den är röd och har en oktagonform, som ofta används internationellt för att indikera stopp, skulle användaren lätt kunna förstå att det handlar om att stoppa en funktion i en nödsituation. Men förståelsen kan vara olika beroende på kulturella skillnader. I vissa delar av världen har röd färg inte samma associering till varning, och symboler som en oktagon kan ha olika betydelser. Därför är det viktigt att systemet är tillräckligt flexibelt för att kunna anpassas till olika användare och kulturer.
Lärbarhet handlar om hur lätt användaren kan lära sig att använda systemet. Ju mer förståeligt ett gränssnitt är, desto lättare är det generellt att lära sig. Här spelar också användarens bakgrund och erfarenhet en viktig roll. För brooperatörerna som använder ett kontrollsystem kommer omfattande utbildning att vara en del av deras förberedelse. För andra användare, som bilförare eller fotgängare, är det dock ofta enklare, då gränssnittet består av välkända signaler som trafikljus och varningsklockor, vilka inte kräver någon speciell utbildning för att förstå.
Operabilitet innebär hur enkelt det är att faktiskt använda systemet. Ett gränssnitt kan vara förståeligt och lätt att lära sig, men ändå svårt att använda på grund av tekniska begränsningar eller dålig design. Ett exempel kan vara små, tätt packade ikoner på en skärm som gör det svårt att precisera ett val, eller för många valmöjligheter på en gång som gör systemet rörigt och svårt att navigera. I sådana fall kan designern behöva göra avvägningar mellan olika mål, som att göra ikoner större för att förbättra operabiliteten eller gruppera relaterade funktioner för att göra det enklare att hitta rätt alternativ.
En annan viktig aspekt är universal access, vilket handlar om att alla användare, oavsett eventuella fysiska eller mentala begränsningar, ska kunna använda systemet. Det innebär att systemet måste vara tillgängligt för personer med olika typer av funktionsnedsättningar – exempelvis synskador, hörselskador eller motoriska problem. Detta kan uppnås genom att erbjuda olika sätt att interagera med systemet, såsom både visuella och ljudbaserade varningar eller alternativa styrmetoder för dem som inte kan använda traditionella kontroller.
För att skapa ett användarvänligt inbyggt system krävs en förståelse för både tekniska och mänskliga faktorer. Designprinciper som förståelighet, lärbarhet, operabilitet och universal access spelar alla en central roll för att säkerställa att systemet blir både effektivt och tillgängligt för alla användare, oavsett deras erfarenhet, förmåga eller bakgrund.
Hur fungerar digital-till-analog-omvandlare och hur hanteras många digitala in- och utgångar?
Digital-till-analog-omvandlare (DAC) är avgörande för att omvandla digitala signaler till analoga spänningar som är acceptabla för mänskliga sinnen, exempelvis i ljusdimmerkretsar där hastigheten kan tillåtas vara relativt låg. Liksom med analoga till digitala omvandlare (ADC) är gränssnittet till processorn en viktig aspekt. Valet av DAC beror sällan på dess interna konstruktion, utan mer på dess prestanda i form av upplösning och hastighet.
De snabbaste och mest exakta DAC:erna kallas ibland för termometerkodade DAC:er. De bygger på en serie resistorer med lika värde, ofta benämnda 2R-resistorer, där R relaterar till upplösningen i antal bitar. Genom att med en dekoder stänga exakt en av flera switchar i serieresistorn, kan ett noggrant och snabbt analogt värde produceras, ofta med nanosekundsnoggrannhet. En annan vanlig typ av DAC använder en uppsättning resistorer där varje resistor är värderad som en potens av två, exempelvis r, 2r, 4r och så vidare, vilket kopplas till en operationsförstärkare som summerar strömmarna från aktiverade resistorer för att skapa motsvarande spänning. Denna typ erbjuder också höga konverteringshastigheter.
I många system kombineras ADC och DAC, antingen integrerat i avancerade mikrokontroller eller i externa kretsar som innehåller flera ADC-kanaler och DAC-kanaler, vilket förenklar gränssnitt och funktion.
När det gäller hantering av stora mängder digitala in- och utgångar, till exempel ett piano med 88 tangenter eller komplexa styrsystem i hissar, räcker sällan antalet GPIO-stift på mikrokontrollern till. För att lösa detta används ofta extra kretsar som 573-familjens latch- och gate-kretsar. Dessa kan samordna flera 8-bitars datapaket till en enda port, där kontrollsignaler (/OE och L) styr när data släpps igenom eller lagras. Med hjälp av flera 573-kretsar och en enkel styrning av deras aktiveringspinnar kan man läsa eller skriva stora datamängder genom ett minimalt antal GPIO-stift.
För något större system används även dekoderkretsar som 138 (3-till-8) eller programmerbara logikenheter som 22V10, vilket möjliggör adressering av upp till flera tiotals kretsar och därmed hundratals digitala kanaler, utan att processorn behöver ha en egen GPIO för varje enskild ingång eller utgång.
När 573-kretsarna används som utgångslatchar fungerar de som ett slags skrivbart 1-byte-minne, där processorn kan skicka ut data till många enheter med hjälp av endast några få stift. Omvänd koppling används när 573 agerar som ingångsgate, där data från externa signaler kan läsas in i processorn via samma princip.
Genom att kartlägga dessa kretsar till processorns externa minnesutrymme blir läs- och skrivoperationer till in- och utgångar likställda med minnesaccesser. Detta innebär att processorinstruktioner för minneshantering kan användas direkt, vilket förenklar både design och programmering. I ett sådant system genererar processorn adresssignaler samt läs- och skrivsignaler som styr vilken latch eller gate som ska aktiveras.
Förståelsen av dessa metoder är väsentlig för att kunna designa och implementera system med många digitala in- och utgångar, där effektiv användning av hårdvara och processorresurser krävs. Dessutom är det viktigt att inse att hastighet, upplösning och signalens noggrannhet hos DAC:er och ADC:er måste balanseras mot kostnad och komplexitet i varje tillämpning.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский