s4 CAN ett kommunikationsprotokoll för realtidssystem Sändare Seriekomunikation Mottagare Seriekommunikation Synkronisering - Datanät CAN Dataregister Göteborg 8 bitar - Parallell överföring Dataregister Stockholm Rolf Snedsböl Dataregister 1 bit - Seriell överföring Dataregister MOP 1 MOP 2 Seriekomunikation -forts s5 Seriekomunikation -forts s6 Göteborg 3 t l 500 10 1, ms c 3 10 66 8 Stockholm Start ldaa InPort Läs Indata ldab #8 Antal skift Next staa UtPort Sänd bit0 lsra Skifta fram nästa jsr Delay01ms Vänta 0,1 ms decb Sista biten? bne Next..hopp om Nej Dataregister Databuffert b0 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 b0 1 bit - Seriell överföring bra Start Delay01ms nop Dummyrutin för Delay rts MOP 3 MOP 4 1
Seriekomunikation -forts s6 Kap 5 s20 Seriell IO Skiftregister - mottagning Göteborg Klocka (10 khz) Stockholm D 1D Q 1 1D Q 2 Q 3 Q 4 1D 1D Klocka (10 khz) Skiftregister 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 Skiftregister D CP C1 C1 C1 C1 Figur 5.34 4-bitars skiftregister uppbyggt med 4 stycken D-vippor. MOP 5 MOP 6 Seriekomunikation -forts s6 Seriekomunikation -forts s6 SKICKA DATA ldx #Data Pekare Räknat_8 Data buss STAA Sänd Loop ldaa 1,x+ Läs data staa SändReg Skicka en byte jsr Delay Vänta tills 8 bitar är utskiftade bra Loop CS_Sänd Klocka Logik med räknare CS Skift Register Seriell data ut TxD MOP 7 MOP 8 2
Seriekomunikation -forts Cnt8 equ %00000001 Def Räknat 8 bitar ldx #Text Pekare NextCh ldaa 1,x+ Läs tecken cmpa #EOT Sista? beq Slut..hoppa om JA R8är1 ldab InPort Läs Status bitb #Cnt8 Invänta Redo för.. beq R8är1.. nytt tecken staa ShiftReg Sänd ett tecken R8är0 ldab InPort Läs Status bitb #Cnt8 Invänta Upptagen med.. bne R8är0..att skifta ut Slut bra nop bra NextCh Slut MOP 9 Räknt8 =1? J Skriv till Skift Reg Busy Wait Seriekomunikation -forts N Räknt8 =1? J Skiv till Skift Reg Polling s7 MOP 10 N Seriekomunikation - Buffrad sändning Seriell IO Buffrad mottagning CS_OutData Data_Reg_Tomt Data buss STAA OutData LDAA DataIn Data_Reg_Full CS.DataIn Data buss Klocka Logik med räknare Signalen Räknat_8 CS Data Register LD Skift Register Seriell data ut TxD Seriell data in Klocka Logik med räknare OE Data Register E Skift Register D MOP 11 MOP 12 3
Seriekomunikation Synkron överföring s9 Seriekomunikation Synkron överföring s9 Göteborg Stockholm Alltid hög Alltid låg Klockkrets Skiftregister 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 Skiftregister D 0 1 Noll-bit Ett-bit MOP 13 MOP 14 Seriekomunikation Asynkron överföring s10 Seriekomunikation Asynkron överföring Block (Frame) 7-bitars ASCII Klockkrets Klockkrets Sändare Mottagare 1 b0 b1 b2 b3 b4 b5 b6 P 0 Skiftregister 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 Skiftregister D Startbit Paritetsbit Stopbit BAUD, BAUDRATE Init: Ant bitar, Paritet, Stopbitar, BAUDRATE, etc MOP 15 MOP 16 4
Seriekomunikation Asynkron överföring Seriekomunikation Asynkron överföring Startbit 1 b0 b1 b2 b3 t1 t2 t3 t4 t5 t6 Enhet A Enhet B Enhet C Startbit 1 b0 b1 b2 b3 BAUD A = Clk/(k) t1 t2 t3 t4 t5 t6 BAUD B = Clk/(k-i) t1 t2 t3 t4 t5 t6 BAUD C = Clk/(k+i) t1 t2 t3 t4 t5 t6 Clk = k(baudrate) MOP 17 MOP 18 HCS12DG2 56, block diagram HCS12DG256, core MOP 19 MOP 20 5
Peripherals in HCS12DG256 HCS12DG256 Minne AD Analog to Digital conversion SCI Serial Asynchronous communication PWM Pulse Width Modulation Etc core CPU12, Clock, etc SCI Seria Asynchronous communication olika seriekretsar. MOP 21 MOP 22 SCI Serial Communication Interface Two identical devices: SCI 0 = Offset 0xC8 SCI1 = Offset 0xD0 BaudRate = BusClock/(16 x BR) BusClock = 8 10 6, 1 BR 8192 MOP 23 SCI Initialization example, 9600 Baud typedef struct ssci{ volatile unsigned short scibd; volatile unsigned char scicr1; volatile unsigned char scicr2; volatile unsigned char scisr1; volatile unsigned char scisr2; volatile unsigned char scidrh; volatile unsigned char scidrl; }SCI, PSCI*; #define SCI0_BASE 0x00C8 #define BAUD 8000000/(16*9600)... /* init SCI */ PSCI sci = (PSCI) SCI0_BASE; sci->scibd = BAUD; sci->scicr1 = 0; sci->scicr2 = 0xC;... MOP 24 6
SCI Input and output Seriekomunikation Multiplex överföring s12 /* send a character through SCI0 */ void _outchar( char c ) { } /* wait for TDRE==1 */ while( ( sci->scisr1 & 0x80 )== 0) {}; /* send the character */ sci->scidrl = c; Användare A Hej Du Kalle Användare B Kurt, kan du hjälpa Central i Göteborg Dataregister Central i Stockholm Dataregister Användare D Användare E /* receive a character through SCI0 */ char _inchar( void ) { /* wait for character, RDRF==1 */ while(! ( sci->scisr1 & 0x20 ) ) {}; Användare C Jag beställer härmed Skiftregister e e u b, D t g r j a u e J K H 1 bit - Seriell överföring Skiftregister Användare F } /* return the character */ return (char) ( sci->scidrl ); MOP 25 MOP 26 Seriekomunikation s14 Seriekomunikation- Överföringskapacitet Hur många databitar kan "vara i luften" samtidigt mellan Göteborg och Stockholm? Vi förutsätter en klockfrekvens på 1 MHz. Överför innehållet på din 200 Gbyte s hårdisk i Göteborg till kompisen i Stockholm. Du har mobilt bredband på 1 Mbit. Hur lång tid tar det? Antal bitar L 1, 7 10 3 bitar 1 C f 9 ant. bitar 200 10 8 6 t 1.6 10 s 19dagar 6 f 1 10 MOP 27 MOP 28 7
Seriell IO Datanät Seriekomunikation- Datanät- Media s15 Datanäten grupperas i lokala datanät (LAN, Local Area Network) kontinentala (WAN, Wide Area Network). Tvinnad partråd Koaxialkabel Fiberoptik Kapacitet Låg Medium Mycket hög Flexibilitet Mycket hög Medium Låg Kontaktering Billig Medium Mycket dyr Störokänslighet Låg Bra Mycket hög Topologi Media - Accessmetoder MOP 29 MOP 30 Control application implementation techniques Lokal Lokal databearbetning Oberoende styrenheter Centraliserad, global Lokal och central databearbetning Sammankopplade, beroende styrenheter Distribuerad, global Lokal och distribuerad databearbetning Sammankopplade styrenheter MOP 31 Seriekomunikation- Datanät- Topologi Ring Buss Stjärna Masknät MOP 32 8
Datanät- Topologi - Acessmetoder Seriekomunikation- Datanät- Acessmetoder s16 Buss Stjärna När ska någon få skicka data ut på nätet? Polling En master, Rundfrågning CSMA Lyssna först, Skicka om ledigt TDMA Fördefinierade Tidsluckor Token Stafett-pinne Ring MOP 33 Masknät När ska någon få skicka data ut på nätet? Polling En master, Rundfrågning CSMA Lyssna först, Skicka om ledigt TDMA Fördefinierade Tidsluckor Token Stafett-pinne MOP 34 Seriekomunikation- typiskt datablock Styrfält Datafält Kontrolsumma Slutmarkering Startfält s17 CAN Controller Area Network Meddelanden, allmänt Bussåtkomst Synkronisering Olika ramar Felhantering Identifierare 1984, 1991 CAN C-Spec, Bosch och Intel Kommunikationsstandard för bilindustrin Standard CAN, senare Extended CAN Implementerat i hårdvara INTEL, MOTOROLA, PHILIPS, Siemens, NCS, SGS, etc,etc Protokoll för distribuerad styrning i händelsestyrda system med små mängder data (1-8 bytes) och ett datanät med fysisk liten utsträckning. MOP 35 MOP 36 9
CAN Controller Area Network Meddelanden, allmänt Bussåtkomst Synkronisering PE PE: Processor PE Olika ramar Felhantering Identifierare PE : CAN-Controller MOP 37 CAN Controller Area Network forts 1984 CAN C-Spec, Bosch och Intel Kommunikationsstandard för bilindustrin Standard CAN, senare Extended CAN I dag, Leverantörer INTEL, MOTOROLA, PHILIPS, NCS, SGS, etc,etc 20-200 kapsel Utmärkt protokoll för distribuerad styrning av händelsestyrda system där man önskar att skicka små mängder data (1-8 bytes) i ett datanät med fysisk liten utsträckning. MOP 38 CAN-protokollets egenskaper Flexibelt Multimaster protokoll Multicast protokoll Hög överföringshastighet (1 Mbit/s) Kort svarstid (200 s) Automatisk omsändning av störda överföringar Atomic Broadcast Stöd för synkroniserad exekvering i olika noder Avlastar processorn/användaren med meddelandeöverföringen MOP 39 Ett typiskt CAN nät Busstopologi Media: twisted pair, koaxial, fiber Utsträckning: 40m vid 1Mbit/s PE PE: Processor PE Flexibelt att ansluta nya noder PE : CAN-Controller MOP 40 10
Meddelanden i ett CAN-nät Objekt (Meddelanden) Ex: broms, ljus, fönsterhiss Skicka/efterfråga ett objekt Prioriteter knutna till objekten (meddelanden) Specificeras innan run-time Prioriteten kan tolkas som en adress MOP 41 Ett typiskt CAN nät Busstopologi Media: twisted pair, koaxial, fiber Utsträckning: 40m vid 1Mbit/s PE PE : CAN-Controller PE: Processor PE Lätt att ansluta nya noder MOP 42 CANmeddelandet Objekt (meddelanden) Ex: broms, ljus, fönsterhiss Skicka/efterfråga ett objekt Unik prioritet knuten till identifieraren Specificeras innan run-time Prioriteten kan tolkas som en adress Meddelanden i ett CAN-nät forts SOF ARB CTRL DATA CRC ACK EOF SOF ARB CTRL DATA CRC ACK EOF ARB Arbitrering (identifierare) CTRL Kontrollinformation DATA 0-8 bytes CRC Kontrollsumma ACK Kvitto (Inbyggd handskakning) EOF Slutmarkering ARB Arbitrering (tävlan om bussen) Identifierare anger objekttyp; även prioritet CTRL Control Antal byte; Standard/Extended CAN Data 0-8 bytes CRC Kontrollsumma Tillsammans med felhantering Samtidig exekvering ACK Kvitto Inbyggd handskakning EOF Slutmarkering MOP 43 MOP 44 11
Bussåtkomst CSMA/CD (Ethernet) Carrier Sense: Lyssna Först Multiple Access: Vem som helst kan skicka ett meddelande när bussen är ledig. Collision Detect: Buss-krock upptäcks. Bussåtkomst forts Algoritm (CSMA/CD ) Lyssna på bussen; Om bussen är ledig starta sändning av ett meddelande Algoritm: Börja om vid fel e A e B e P e Q MOP 45 MOP 46 Bussåtkomst forts Algoritm (CSMA/CD) Lyssna på bussen och kontrollera om busskrock uppstår. Bussåtkomst forts Algoritm (CSMA/CD) Om busskrock uppstått, avsluta då sändningen och försök igen senare. Krock Krock e A e B e P e Q e A e B e P e Q MOP 47 MOP 48 12
Bussåtkomst forts Bussåtkomst forts CSMA/CR (CAN) Carrier Sense: Lyssna först Multiple Access: Vem som helst kan skicka ett meddelande när bussen är ledig. Collision Resolution: Buss-krocksupplösning. Algoritm: Starkast vinner Multimaster MOP 49 Algoritm (CAN) Lyssna på bussen. Om bussen är ledig starta sändning av ett meddelande. Lyssna på bussen och jämför bit för bit av sänt data. Om mottagen bit skiljer sig från sänt bit indikerar detta att någon med högre prioritet skickar data samtidigt. Avsluta då sändningen och försök igen när högprioritetsmeddelandet har skickats i sin helhet. Outage time Kort svarstid (200 s vid 1Mbit) MOP 50 Bussåtkomst forts Bussdrivare: Princip Open collector Bussens nivå: Recessiv (bit) Dominant (bit) +5V CAN buss 1 1 R Bussåtkomst forts +5V I R = 0 CAN buss 1 I A = 0 1 0 1 A B A B MOP 51 MOP 52 13
Bussåtkomst forts Bussåtkomst forts Skickat nolla Läser nolla Bussens nivå: 0V A +5V R I R = I A Tappat Arbitreringen B Inskränkningar Bitsynkronisering En enskild bit måste vara giltig i hela nätet 0 0 0 1 I A I B = 0 1 0 1 1 e A e B e P e Q MOP 53 MOP 54 R D Bussåtkomst forts Inskränkningar Nätets utsträckning/bithastighet 0 0.2 0.4 0.6 0.8 1 t vänta = 2 l/ = 2 40 m / 2 10 8 = 0,4 s Max 40m vid 1 Mbit Bussåtkomst (arbitrering) Tre noder skickar samtidigt A sänder: $257 (0010 0101 0111) B sänder: $360 (0011 0110 0000) C sänder: $25F (0010 0101 1111) Bussens nivå Bit nummer SOF 1 2 3 4 5 6 7 8 9 10 11 12 13 Bussens nivå D D D R D D R D R D R R R R A skickar 0 0 0 1 0 0 1 0 1 0 1 1 1 1 B skickar 0 0 0 1 1 Slutar sända C skickar 0 0 0 1 0 0 1 0 1 1 Slutar sända 55 MOP 56 14
Bussåtkomst (arbitrering) Identifierare anger prioriteten OBS!!! Endast EN nod får skicka data med en speciell identifierare Synkronisering i CAN Asynkront protokoll Okodade bitar SOF ARB CTRL DATA CRC ACK EOF MOP 57 MOP 58 Synkronisering i CAN Asynkront protokoll Okodade bitar Synkroniseringsmekanism Mottagare: Hård synkronisering på SOF Synkronisera på flanker i mottaget data Sändaren: Inför STUFF BITAR vid långa sekvenser av nollor / ettor Synkronisering i CAN forts Stuffbitar Skickar ett meddelande som börjar med $FF03 binärt 1111 1111 0000 0011. Bit nr SOF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Data 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 Stuffbit 0 1 Skickad sekv 0 1 1 1 1 1 0 1 1 1 0 0 0 0 0 1 0 0 MOP 59 MOP 60 15
Olika ramar Data Frame (skicka data) SOF Start Of Frame. 1 bit ARB Arbitration. 12 bitar(stand CAN) CTRL Control. 6 bitar DATA Användar data. 1-8 bitar (max 64 b) CRC Kontrollsumma 16 bitar ACK Kvitto 2 bitar EOF End Of Frame 7 bitar Totalt 108 b IFS Inter Frame Space. 3 bitar SOF Olika ramar forts Remote Frame (efterfråga en dataframe) En remoteframe saknar datafält (se data-frame). Remote- och dataframe har samma identifierare!!??? Ex efterfråga hastighet; skicka hastighet ID är 11 bitar, ARB-fältet är 12 bitar RTR-bit (bit 12 i ARB-fältet) Remote frame recessiv RTR-bit Data frame dominant RTR-bit Innebär att vem som helst kan skicka en remoteframe (men endast EN kan skicka en data-frame) ARB CTRL DATA CRC ACK EOF MOP 61 MOP 62 Olika ramar forts Error frame (skriv sönder pågående utskick) 6 st dominanta bitar (Error flag) 7 recessiva bitar (Error delimiter) Error Flag 6 bitar Alla kan skicka en Error frame Error Delimiter 8 bitar Automatisk omsändning av störda överföringar Robust MOP 63 Olika ramar forts Error frame forts Vem detekterar en error frame? Sändaren av data/remote-frame Utskickad bit Läst bit Mottagare Felupptäckt Own Error Flag Other Error Flag Error Delimiter 6 bitar 0-6 bitar 8 bitar MOP 64 16
Feldetektering Kvitto (ACK) Skicka Error Frame vid felupptäckt Bit-fel Stuff-fel CRC-fel Fixed Form-fel Möjliggör samtidig exekvering i noder Atomic broadcast MOP 65 En frame innehåller ett två-bitars ACK-fält för handskakning Sändaren av en frame skickar två recessiva bitar i detta fält En adresserad fungerande mottagare skriver över den första med en dominant bit Sändaren detekterar dominant eller recessiv bit i ACKfältet ACK (1b) CRC Delimiter ACK Delimiter (1b) MOP 66 Kvitto forts Vad innebär ACK-funktionen? Sändaren ser att hans frame tas emot Sändaren detekterar att den inte är ensam i nätet Observera att sändaren inte kan detektera vem som korrekt tagit emot utskickad meddelande utan endast att någon korrekt tagit emot utskickad meddelande. Underlättar konsistens Identifierare Identifieraren identifierar meddelandet ID x kan endast skickas av en viss nod pga arbitrering Standard CAN 11 bitar- 2048 olika identifierare Enskilda meddelanden $04B Bromskommando $1A2 Ljus meddelande, fram MOP 67 MOP 68 17
Identifierare forts Extended CAN (29 bitar - 0.5 10 9 identifierare) Försök till standardisering (anpassning J1939) Standardiserade identifierare $1A29 92D0 HF parklampa $1A29 22D1 HF halvljuslampa $1A29 32D2 HF helljuslampa Identifierare forts Filtrering En CAN-krets initieras (i mask-registret) med ett antal identifierare som den skall igenkänna N1 Guard N2 Guard N3 Guard N i Guard MOP 69 Multicast Belastar ej processorn med oönskad data MOP 70 Identifierare forts Filtrering och prioriteter $1A29 92D0 HF parklampa $1A29 22D1 HF halvljuslampa $1A25 32D2 HF helljuslampa $FFF0 0FF0 Maskregister Möjliggör dynamisk prioritetsändring Outage times MOP 71 Sammanfattning CAN Flexibelt Multimaster protokoll Multicast protokoll Hög överföringshastighet (1 Mbit/s) Kort svarstid (200 s) Automatisk omsändning av störda överföringar Atomic Broadcast Stöd för synkroniserad exekvering i olika noder Avlastar processorn/användaren med meddelandeöverföringen MOP 72 18