CAN-protokollet använder flera sofistikerade mekanismer för att säkerställa att alla noder på nätverket förblir synkroniserade trots variationer i interna klockor och samtidigt hantera åtkomst till bussen effektivt när flera noder försöker sända samtidigt. En central funktion är resynkronisering, där varje nod kontinuerligt jämför sin interna räknare med den förväntade övergången i bitströmmen. Om en avvikelse upptäcks justerar noden sin räknare för att förbli i fas med resten av nätverket. Detaljerna kring denna process specificeras inte strikt i CAN-standarden, vilket ger tillverkare flexibilitet att optimera för sina produkter.

För att möjliggöra en pålitlig synkronisering införs i CAN-protokollet en regel om bit-stuffing. Efter varje sekvens av fem lika bitar (antingen alla 0:or eller alla 1:or) läggs automatiskt in en bit med motsatt värde. Detta genererar regelbundna övergångar på datalinjen, vilket är nödvändigt för att hålla klockorna synkade även om meddelandet till största delen består av samma bitvärde. De inskjutna bitarna är inte en del av den logiska data och tas bort av mottagande noder, vilket innebär att det fysiska ramverket kan vara längre än den logiska dataramen.

När flera noder försöker få kontroll över bussen samtidigt sker en arbitreringsprocess, som bygger på att varje nod övervakar bussens nivå samtidigt som den sänder. Om en nod sänder en logisk 1, men upptäcker att bussen är driven till logisk 0 av en annan nod, förlorar den automatiskt arbitreringen och avbryter sin sändning. Denna princip, som liknar I2C-protokollets, innebär att noder med lägre ID-nummer (och därmed högre prioritet, då ID sänds MSB först) kommer att vinna arbitreringen. Nodernas ID:n måste därför väljas med omsorg, eftersom prioriteringen har direkt påverkan på busstillgänglighet och kommunikationsflöde.

Det finns två huvudsakliga CAN-protokoll: hög-hastighets-CAN som klarar upp till 5 Mbit/s och låg-hastighets-CAN som når upp till cirka 125 Kbit/s. Hög-hastighets-CAN använder en linjär topologi med en tvinnad kabelpar där båda ändar termineras med ett 120-ohms motstånd. Detta skapar en stabil spänningsnivå där en spänningsskillnad under 0,5 V tolkar som logisk 1, medan en skillnad över 2 V motsvarar logisk 0. I låg-hastighetsvarianten används ofta stjärn- eller klustertopologier där varje nod aktivt driver linjen för att producera logiska nivåer, och terminering sker individuellt vid varje nod.

CAN-protokollets styrka ligger i dess robusthet för korta meddelanden över avstånd upp till ungefär 40 meter vid 1 Mbit/s, samt dess motståndskraft mot elektrisk brus och störningar i miljöer där kabeldragning är opraktisk eller kostsam.

Vidare är det viktigt att förstå att trådlösa nätverk skiljer sig fundamentalt från CAN och andra trådbundna protokoll. Trådlös kommunikation kan aldrig vara strikt punkt-till-punkt utan skickar radiosignaler som kan tas emot av alla mottagare inom räckvidd. Detta medför både risker för avlyssning och störningar, samt utmaningar som “hidden-node”-problemet där vissa noder inte kan detektera konflikter i sändningen. Säkerhetsaspekter och effektiv användning av spektrum, räckvidd och överföringshastigheter är avgörande faktorer för att uppnå pålitlig kommunikation i trådlösa system.

Det är också centralt att inse att valet av antenn, placering av enheter och miljöfaktorer som väggar och reflektioner påverkar räckvidden och kvaliteten på trådlösa länkar. För ingenjörer inom inbyggda system är det därför lika viktigt att ha kunskap om radioprotokollens tekniska specifikationer och deras praktiska konsekvenser, som att förstå CAN-bussens fysiska och logiska lager.

Slutligen, när man arbetar med CAN-nätverk är det av vikt att även tänka på felhantering och diagnostik. CAN-protokollet inkluderar funktioner för felupptäckt och automatisk återhämtning, vilket är avgörande för att upprätthålla ett pålitligt system i realtid. Att ha en helhetsförståelse för både synkronisering, arbitrering, fysisk nivå och nätverkets topologi är nödvändigt för att designa och implementera robusta system där CAN och eventuellt trådlösa teknologier samverkar.

Hur sekvensdiagram analyserar systembeteende och avslöjar krav

I Figur 2.6 visar ett sekvensdiagram hur ett brospann får ett kommando att höjas, vilket bekräftas genom den streckade pilen precis nedanför pilen som representerar kommandot att höja spannet. Detta är viktigt att särskilja från ett meddelande som “spannet har höjts”, vilket sker senare i scenariot. Det senare meddelandet genereras som svar på en händelse (spannet har framgångsrikt höjts), och inte som ett direkt svar på det ursprungliga kommandot. Återkopplingsmeddelanden används ofta för att begära information. Till exempel kan kontrollenheten skicka ett meddelande till sensorn i förväg för att fråga hur långt bort en båt är. Sensorn svarar med avståndet, vilket indikeras i diagrammet med en streckad pil märkt med “avstånd”.

I vissa fall kan ett objekt behöva skicka ett meddelande till sig självt. I dessa fall pekar pilen tillbaka till livslinjen för det objekt som skickar meddelandet. I Figur 2.6 visas detta scenario för en båt som passerar under bron, där alla moduler och aktörer fungerar som förväntat. Anmärkningar i sekvensdiagrammet tillåter teamet att specificera villkor som gäller för detta scenario. Dessa villkor kommer ofta från specifikationer och krav som systemet måste uppfylla när det är implementerat. Exempelvis kan anmärkningar på diagrammet ange specifika tidsbegränsningar mellan meddelanden eller hur lång tid en modul får ta på sig för att hantera ett meddelande. I vårt exempel skulle en anmärkning kunna ange att bekräftelsen på kommandot att höja spannet sker inom 10 millisekunder.

Det är viktigt att förstå att olika scenarier kan ha olika villkor. Till exempel, i ett normalt scenario förväntas det att brospannet bekräftar inom 10 millisekunder. Om detta inte sker kan det hänvisa till ett annat scenario som kräver att designteamet definierar hur systemet ska agera. För det här scenariot är det antaget att alla moduler fungerar korrekt och att tidsgränsen på 10 millisekunder upprätthålls. Anmärkningar kan användas för att underlätta analysen och genomgången av diagrammet. En uppsättning anmärkningar om maximala tider kan ge hjälp vid en analys av den totala tidsåtgången för scenariot.

En viktig aspekt av att skapa sekvensdiagram är att ha en preliminär uppfattning om systemets moduler. För vårt bro-exempel innebär det att vi har moduler för trafikljus, barriärer för fotgängare och biltrafik, brospann och en kontrollenhet som styr alla dessa system. I andra system, som en bankomat, kan modulerna vara mindre uppenbara, som användargränssnittet, kontanter, och lagring av kontoinformation. Vid början av användarfallsanalysen är det viktigt att inte göra några bindande beslut om modulernas struktur eller aktörernas interna detaljer. Syftet är att avslöja beteende och krav genom att studera sekvensdiagrammet, vilket kan leda till förändringar i systemets struktur och en klarare bild av vilka funktioner varje modul måste utföra.

Genom analysen av sekvensdiagram kan man identifiera specifika krav och refineringar som annars inte hade framkommit. Till exempel skulle en grundlig genomgång av ett scenario där trafikbarriärerna misslyckas med att fällas ned kunna visa att ett meddelande från marktrafikmodulen till kontrollmodulen behövs för att indikera om barriärerna har fällts eller inte, innan båten kan ges signal om att passera eller stanna. En sådan förändring skulle leda till att ett nytt meddelande tillkommer i diagrammet, från Trafikbarriärmodulen till Kontrollmodulen, för att indikera barriärernas status.

Vidare skulle detta scenario kunna leda till upptäckten av en ny modul – Signal to Boat – som skulle informera båten om att bron fungerar normalt eller om det finns ett problem. Denna modul skulle få nya meddelanden från Kontrollmodulen, som till exempel “ok att fortsätta” eller andra lämpliga signaler beroende på omständigheterna.

Representanter från marina trafikföretag skulle kunna påpeka att båtar är stora fysiska objekt med rörelsemoment och kräver viss tid för att stanna. Detta skulle innebära att det måste finnas tidsgränser för hur lång tid det får ta från det att båten har detekterats tills signalen (att fortsätta eller stanna) skickas. Om vi tänker oss att båtarna tar 4 minuter på sig för att nå bron och 1 minut att stanna, skulle kontrollenheten behöva skicka signalen till modulen Signal to Boat inom 3 minuter efter att båten först har detekterats.

Denna analys kan också avslöja tidsgränser för andra operationer, såsom att detektera en båt, överföra meddelanden till kontrollmodulen efter detektering, och hur snabbt marktrafikbarriärerna ska vara nedfällda. Här måste tidsbegränsningarna vara realistiska för att systemet ska kunna reagera inom den tid som fysiskt är möjligt med tanke på de involverade aktörerna och modulerna. Om till exempel marktrafikbarriärerna behöver 3–5 sekunder för att fällas ned, ska kontrollmodulen kunna få en återkoppling inom 6 sekunder.

Det är också viktigt att tänka på de mänskliga faktorerna. Representanter från den lokala regeringen kan ställa krav på en maximal tid för nedfällda trafikbarriärer så att inte den lokala trafiken påverkas alltför mycket. Detta är en gräns som inte beror på den fysiska naturen hos båtar eller andra fysiska enheter, utan är en gräns som styrs av mänskliga behov och stadens trafikflöde.

Hur kontrolleras resursanvändning i Petri-nät?

I vissa system, som det som beskrivs i exempel med två robotar och en stagingarea, finns det begränsningar för hur många objekt (eller "delar") som kan lagras eller bearbetas på en viss plats vid en given tidpunkt. I det här fallet finns det endast tre tillgängliga platser för att lagra delar i stagingområdet, vilket innebär att det krävs en mekanism för att kontrollera tillgången till dessa platser. Detta kräver en mekanism för ömsesidig uteslutning för att säkerställa att endast en robot kan komma åt en slot vid en gång. Samtidigt måste det finnas mekanismer för att undvika under- och överflöd. Det innebär att antalet delar som lagras inte får vara mindre än noll eller större än tre.

För att säkerställa att dessa regler följs i ett Petri-nät kan man definiera tydliga övergångar och platser som representerar olika tillstånd i systemet. Till exempel visar modellen i figur 5.5 hur en robot (R1) kan gå till stagingområdet, lägga en del i en tom slot, och sedan gå ut igen. Modellen indikerar också att det finns ett behov av att hålla reda på hur många tomma platser som finns i stagingområdet och hur många delar som faktiskt är lagrade där. Detta är nödvändigt för att förhindra att fler delar försöker lagras än vad som tillåts.

Det är viktigt att förstå att i sådana modeller är det inte alltid uppenbart från början hur dessa begränsningar ska implementeras. I vissa system kan kapacitetsbegränsningar upptäckas genom en noggrann analys av nätets struktur. I det aktuella exemplet är det explicit angivet att stagingområdet har tre platser, vilket innebär att en specifik kontrollmekanism, såsom platsen P7 (som representerar antalet tomma platser), behövs. Genom att inkludera denna kontrollmekanism kan man förhindra att en robot försöker lägga en del i ett fullt stagingområde.

En annan aspekt som är relevant för att förstå dessa modeller är hur övergångar (transitions) kan styra flödet av resurser genom nätet. I fallet med TDMA (Time Division Multiple Access) kommunikationsprotokoll, beskrivs i figur 5.6, modelleras varje enhet som en serie platser och övergångar. Här representerar platserna, som DiP och DiF, om en enhet har data redo för nätverket, medan övergångarna, som DiT1 och DiT2, styr när en enhet kan överföra data till nätverksbufferten. När en enhet har data som ska skickas, kommer en övergång som tillåter denna överföring att ske, men endast när det är enhetens tur att använda nätverket.

Vad som är särskilt intressant i båda exemplen är hur systemet inte bara handlar om att lagra resurser eller överföra data, utan också om att upprätthålla specifika ordningsföljder. I det första exemplet är det nödvändigt att robotarna följer en specifik ordning för att hantera delarna i stagingområdet på ett effektivt sätt. På samma sätt, i TDMA-protokollet, säkerställer nätet att varje enhet får sin tid att överföra data, men att ingen enhet använder nätverket utanför sin tilldelade tid.

Det är viktigt att notera att medan många av dessa nät har explicita regler och mekanismer som styr flödet av resurser och data, kan det också finnas implicit regler som är svårare att upptäcka. I mer komplexa nätverk kan dessa implicit definierade begränsningar inte alltid vara uppenbara vid första anblick, vilket kan kräva en mer detaljerad analys för att förstå systemets kapacitetsbegränsningar.

Förutom de specifika reglerna för resursfördelning, som beskrivet i exemplen med stagingområdet och TDMA-protokollet, är det också viktigt att förstå hur systemet som helhet fungerar. En nätverksmodell, som i fallet med TDMA, är inte bara en samling av individuella enheter utan en dynamisk process där varje enhet påverkar och påverkas av de andra enheterna. På samma sätt kan en Petri-nätmodell för robotarna inte bara beskrivas som en serie av platser och övergångar utan också som en helhet där interaktionen mellan robotarna och deras miljö skapar de önskade resultatet.

Endtext

Hur man använder Pareto-analys och ILP för att fatta designbeslut i inbyggda system

När man hanterar designproblem för inbyggda system är det ofta nödvändigt att reducera mängden möjliga lösningar för att kunna välja den mest lämpliga. En effektiv metod för att göra detta är att använda en uppsättning av utvärderingsfunktioner för att jämföra och välja mellan olika lösningar. I den här processen används ofta tekniker som Integer Linear Programming (ILP) och Pareto-analys för att identifiera de mest optimala lösningarna ur ett antal möjliga alternativ.

Låt oss säga att S={s1,,sm}S = \{ s_1, \dots, s_m \} är en uppsättning möjliga lösningar på ett designproblem för ett inbyggt system. Varje lösning i denna uppsättning kan utvärderas baserat på ett antal olika egenskaper, som kan vara kostnad, strömförbrukning, total beräkningstid, fysisk storlek eller kommunikationskostnader. Dessa egenskaper sammanfattas i en uppsättning F={f1,,fn}F = \{ f_1, \dots, f_n \}. För varje lösning sis_i tilldelas en n-dimensionell vektor av värden h(si)=(a1,,an)h(s_i) = (a_1, \dots, a_n), där aia_i är värdet för egenskapen fif_i i lösning sis_i. Målet är att hitta en lösning som minimerar varje egenskap.

En viktig del av denna process är att förstå begreppet dominans. Om vi har två lösningar, x=(x1,,xn)x = (x_1, \dots, x_n) och y=(y1,,yn)y = (y_1, \dots, y_n), så sägs xx dominera yy om xiyix_i \leq y_i för alla ii och xi<yix_i < y_i för åtminstone ett ii. Detta innebär att lösning xx är bättre än lösning yy i åtminstone en aspekt och inte sämre i någon annan. Om ingen lösning dominerar den andra, anses de vara indifferent gentemot varandra.

För att visualisera detta koncept kan vi tänka oss en tvådimensionell representation, där en lösning representeras av en punkt på ett plan. Om en lösning har lägre kostnad och lägre strömförbrukning än en annan, dominerar den den andra lösningen. Om lösningarna inte kan jämföras direkt, som i fallet där en lösning har lägre kostnad men högre strömförbrukning, anses de vara indifferent till varandra.

När vi använder denna dominansrelation kan vi definiera begreppet Pareto-optimalitet. En punkt xx på ett plan är Pareto-optimal om det inte finns någon annan punkt yy som dominerar xx. Om vi applicerar detta på lösningar i en uppsättning XX, så bildar de Pareto-optimal lösningarna en så kallad Pareto-front. Lösningar som inte ligger på Pareto-fronten kan elimineras från vidare övervägande, eftersom det alltid finns en bättre lösning som dominerar dem.

Denna metod att eliminera dominera lösningar kan drastiskt minska mängden lösningar som behöver utvärderas och gör det möjligt att fokusera på de mest lovande alternativen. För att identifiera Pareto-optimalitetsfronten använder man ofta programvara som kan hantera de högre dimensionerna av problemet, eftersom det blir svårt att visualisera för mer än två eller tre egenskaper.

När lösningarna som inte är Pareto-optimal elimineras, återstår en uppsättning lösningar som är tillräckligt små för att en designteam ska kunna göra en mer detaljerad analys. I den här fasen kan designteamet också ta hänsyn till andra faktorer som inte nödvändigtvis är kvantitativa, som till exempel användarpreferenser eller kundens önskemål. Detta steg innebär att man inkluderar icke-mätbara kriterier, såsom etnografiska studier, kundens kännedom om systemkomponenterna eller andra mänskliga faktorer.

För att ytterligare reducera antalet lösningar som måste övervägas kan man även använda tekniker som ILP. Denna metod möjliggör en systematisk och kvantitativ analys av lösningarna och kan föreslå lösningar som optimerar en viss kostnadsfunktion, vilket ofta är en kombination av flera faktorer som kostnad, strömförbrukning och bearbetningstid. ILP-metoder gör det möjligt att på ett effektivt sätt genomföra en fullständig utforskning av designutrymmet för att hitta de mest lovande alternativen.

Genom att kombinera dessa tekniker – ILP för att identifiera lösningar som optimerar vissa kvantitativa egenskaper och Pareto-analys för att säkerställa att lösningarna är optimala i förhållande till varandra – kan designteamet minska designutrymmet och fokusera på de mest relevanta alternativen. När lösningarna har valts och reducerats kan en mer grundlig jämförelse genomföras, vilket gör det möjligt för designteamet att ta det slutgiltiga beslutet. Det viktiga i denna process är att säkerställa att varje val är välgrundat och att varje beslut, från de kvantitativa metoderna till de mänskliga faktorerna, är i linje med projektets långsiktiga mål.