12.07.2015 Views

Področno vodilo CAN - Laboratorij za obdelavo signalov in daljinska ...

Področno vodilo CAN - Laboratorij za obdelavo signalov in daljinska ...

Področno vodilo CAN - Laboratorij za obdelavo signalov in daljinska ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Fakulteta <strong>za</strong> elektrotehniko,računalništvo <strong>in</strong> <strong>in</strong>formatikoInštitut <strong>za</strong> avtomatiko<strong>Laboratorij</strong> <strong>za</strong> <strong>obdelavo</strong> <strong>signalov</strong> <strong>in</strong> dalj<strong>in</strong>ska vodenjaPodročno <strong>vodilo</strong> <strong>CAN</strong> (Controller Area Network)Iztok MajcenMaribor, marec 2007


<strong>CAN</strong> (Controller Area Network – področno omrežje krmilnikov)<strong>CAN</strong> (Controller Area Network – področno omrežje krmilnikov) je razvilo <strong>in</strong>patentiralo podjetje Robert BOSCH GmbH v Stuttgardtu v Nemčiji leta 1987. V zelomočni konkurenci serijskih vodil je <strong>CAN</strong> sprejelo zelo veliko proizvajalcev. Dandanes je<strong>CAN</strong> glavni omreži sistem v skoraj vseh avtomobilističnih proizvodnjah. Najnovejšiizdelki uporabljajo <strong>CAN</strong> kot dopolnilo z drugimi omrežnimi sistemi, kot so npr.: LIN(nizko cenovno serijsko omrežje <strong>za</strong> elektroniko), MOST (<strong>za</strong> uporabo <strong>za</strong>bavne elektronikev avtomobilih) <strong>in</strong> FLEXRAY (<strong>za</strong> uporabo <strong>za</strong>ščitenih komunikacij). Ker ima <strong>CAN</strong> zelovisok <strong>in</strong> <strong>za</strong>nesljiv prenos podatkov, <strong>in</strong>tegrirano detekcijo napak <strong>in</strong> cenovno ugodnekrmilnike, se dandanes uporablja že zelo na široko tudi izven avtomobilistične <strong>in</strong>dustrije(BMW, VolksWagen, Porsche, Daimler-Chrysler,…) v avtomatiki. Je standard <strong>za</strong><strong>in</strong>dustrijske aplikacije, kot so npr.: Field Bus, ki se uporablja <strong>za</strong> krmiljenje procesov.Tudi veliko število distribuiranih krmilnih sistemov <strong>za</strong> mehanske naprave danesuporabljajo <strong>CAN</strong> <strong>za</strong> njihovo »hrbtenico« (backbone). Konkurenti <strong>CAN</strong>-u so VAN(Francija), J1850 (ZDA) <strong>in</strong> PALMNET (Japonska).Glavne lastnosti <strong>CAN</strong>:• Dostopnost več nadzornih naprav na <strong>vodilo</strong> (multi-master)• Naključni dostop na <strong>vodilo</strong> s postopkom izogibanja trkom (collision avoidance)• Kratka sporočila (do 8 zlogov podatkov na sporočilo)• Prenos podatkov od 100 kbit/s do 1 Mbit/s pri sukanih parih (do 2 Mbit/s prisvetlovodnikih)• Velike dolž<strong>in</strong>e komunikacijskega vodila (do 1 km)• avtomatska-s<strong>in</strong>hroni<strong>za</strong>cija• optimizirano EMC (electromagnetic compatibility) obnašanje• implementirana toleranca napak• fizična plast – različne implementacije (RS485, ISO high-speed (diferenčnenapetosti), ISO low-speed (enojna napetost), svetlovodniki, galvanska ločitev,…<strong>CAN</strong> je torej področno serijsko komunikacijsko omrežje, namenjeno <strong>za</strong>upravljanje, pove<strong>za</strong>vo krmilnih modulov, senzorjev <strong>in</strong> aktuatorjev, ter nadzor <strong>in</strong>diagnosticiranje porazdeljenih procesov, ki delujejo v realnem času.Poznamo dve različni implementaciji <strong>CAN</strong> v <strong>in</strong>tegrirani obliki:• osnovni <strong>CAN</strong> (Basic <strong>CAN</strong>)• popolni <strong>CAN</strong> (Full <strong>CAN</strong>)Slika 2.1: <strong>CAN</strong> v <strong>in</strong>tegrirani obliki


Več<strong>in</strong>oma vsi današnji procesorji z <strong>in</strong>tegriranimi <strong>CAN</strong> moduli ponujajo obenastavitvi delovanja modula. Značilnosti osnovnega <strong>CAN</strong> modula so naslednje:• jedro procesorja <strong>in</strong> <strong>CAN</strong> modul sta <strong>in</strong>tegrirana v neposredni bliž<strong>in</strong>i• samo en sklad <strong>za</strong> pošiljanje• samo dva sklada <strong>za</strong> sprejemanje• samo en filter <strong>za</strong> dohodna sporočila• potreben je programski postopek <strong>za</strong> izbiro med dohodnimi sporočiliZnačilnosti popolnega <strong>CAN</strong> modula pa so:• izveden strežnik (server) <strong>za</strong> sporočila• razširjeno filtriranje dohodnih sporočil• prostor <strong>za</strong> sporočila (mailbox) je odvisen od proizvajalcev• uporabniško nastavljivi »poštni nabiralniki« mailbox-i• razširjena prepoznava napak<strong>CAN</strong> <strong>za</strong>gotavlja trpežno <strong>in</strong> cenovno ugodno omrežje, ki pomaga veliko <strong>CAN</strong>napravam pri medsebojni komunikaciji. Največja prednost <strong>CAN</strong> vodila je v tem, da imaprocesor en sam vmesnik (<strong>CAN</strong>), ki omogoča komunikacijo z ostalo periferijo (senzorji,aktuatorji, drugi moduli,…) <strong>in</strong> ne uporablja svojih I/O enot (analognih <strong>in</strong> digitalnih) <strong>za</strong>komunikacijo z vsemi ostalimi napravami v nekem sistemu. V avtomobilski <strong>in</strong>dustriji topomeni tudi zmanjšanje stroškov <strong>in</strong> teže v avtomobilih.2.1 <strong>CAN</strong> standardSlika 2.2: Prednost <strong>CAN</strong> pred ostalimi vodili<strong>CAN</strong> je ISO (International Standardi<strong>za</strong>tion Organi<strong>za</strong>tion) def<strong>in</strong>irano serijskokomunikacijsko <strong>vodilo</strong>, ki je bilo sprva načrtovano <strong>in</strong> razvito <strong>za</strong> avtomobilsko <strong>in</strong>dustrijo,z namenom zmanjšanja kompleksnega ožičenja <strong>in</strong> ga nadomestiti z samo dvo-žičnim<strong>vodilo</strong>m.<strong>CAN</strong> komunikacijski protokol ISO 11898 opisuje, kako <strong>in</strong>formacija potuje mednapravami v omrežju <strong>in</strong> je v skladu z OSI (Open System Interconnection) modelom, ki jeplastno def<strong>in</strong>iran. Dejanska komunikacija med napravami, ki jih povezuje fizični medij(<strong>vodilo</strong>), je def<strong>in</strong>irana z fizično plastjo ISO/OSI referenčnega modela.


Slika 2.1.1: ISO/OSI modelISO 11898 arhitektura def<strong>in</strong>ira dve najnižji plasti od sedmih plasti ISO/OSImodela. Ti dve plasti sta podatkovno povezovalna plast (data-l<strong>in</strong>k layer) <strong>in</strong> fizična plast(physical layer).Slika 2.1.2: ISO11898 arhitektura2.2 Fizična plastFizična plast je najnižja plast v ISO/OSI referenčnem modelu, kot tudi v ISO11898 standardu. Fizično plast moramo razdeliti v dve podplasti. V prvi podplasti so


določila <strong>in</strong> standardi o lastnostih fizičnih medijev (od medija odvisna določila, npr. oblika<strong>in</strong> vrsta <strong>signalov</strong>, mehanski priključki na medije,…). Druga podplast (od medijaneodvisna določila) pa vsebuje procedure povezovanja računalnikov na omrežja,s<strong>in</strong>hroni<strong>za</strong>cijo, <strong>za</strong>ščitno kodiranje,… Glavne lastnosti <strong>CAN</strong> fizične plasti so naslednje:• diferenčno dvo-žilno <strong>vodilo</strong> ali sukani par z ali brez oklopa• oddajno/sprejemna <strong>CAN</strong> naprava (<strong>CAN</strong> transceiver)• možnost kodiranja (oblikovanje <strong>in</strong> razpoznava bita): PWM (pulzno-šir<strong>in</strong>skamodulacija), NRZ, Manchester kodiranje,…• s<strong>in</strong>hroni<strong>za</strong>cijaNRZ (Non-Return-to-zero) je <strong>za</strong>poredje b<strong>in</strong>arnih znakov, katere »1« sopredstavljene z enim pomembnim stanjem (npr. +3V) <strong>in</strong> »0« z drugim pomembnimstanjem (npr. -3V) brez vmesnega ali nevtralnega stanja (npr. 0V). Ti pulzi imajoveč energije kot pulzi RZ (Return-to-Zero). Uporabiti moramo s<strong>in</strong>hroni<strong>za</strong>cijski signal.NRZ uporablja samo polovico pasovne šir<strong>in</strong>e, ki jo uporablja Manchester koda. Vas<strong>in</strong>hronih komunikacijah odsotnost nevtralnega stanja pomeni uporabo drugih sredstev<strong>za</strong> s<strong>in</strong>hroni<strong>za</strong>cijo (uporaba start <strong>in</strong> stop bitov podatkovnih okvirjev).Slika 2.2.1: NRZ kodiranjeManchester kodiranje (Manchester code) ali tudi bi-fazno kodiranje podatkov jeprav tako <strong>za</strong>poredje b<strong>in</strong>arnih znakov. Bi-fazno pa pomeni, da je vsak bit sestavljen izprehoda iz enega stanja v drugo, <strong>in</strong> sicer iz »1« v »0« pomeni bit z vrednostjo 1, ter iz»0« v »1« pomeni bit z vrednostjo 0.Slika 2.2.2: Manchester kodiranje2.2.1 S<strong>in</strong>hroni<strong>za</strong>cija


Na bitnem nivoju (OSI fizična plast) <strong>CAN</strong> uporablja s<strong>in</strong>hroni prenos podatkov. Tosicer pomeni stopnjevanje zmožnosti prenosa, vendar to pomeni tudi uvajanje drugačnemetode bitne s<strong>in</strong>hroni<strong>za</strong>cije. Medtem ko je bitna s<strong>in</strong>hroni<strong>za</strong>cija pri znakovno orientiranihprenosih (as<strong>in</strong>hronskih) določena z startnim bitom pri vsakem pripadajočem znaku, je <strong>za</strong>s<strong>in</strong>hronski prenos potreben le en startni bit na <strong>za</strong>četku podatkovnega okvirja. Vsak član(postaja) <strong>CAN</strong> omrežja ima svoj generator ure, ponavadi so to qvarc oscilatorji.Frekvence teh oscilatorjev ponavadi niso stabilne. Razlike nastanejo <strong>za</strong>radi spremembetemperature ali napetosti ali pa motenj drugih naprav. Dokler spremembe ostajajo znotrajneke specifične oscilatorske tolerance (df) so <strong>CAN</strong> postaje zmožne kompenzirati terazlične bitne hitrosti s res<strong>in</strong>hroni<strong>za</strong>cijo bitnega okvirja.Vsak bit na <strong>CAN</strong> vodilu ima neko določeno strukturo, ki jo imenujemo tudi bitni<strong>in</strong>terval (čas bita). To strukturo bitnega <strong>in</strong>tervala lahko razdelimo v štiri fazne segmente(phase segment). Fazni segmenti so naslednji:• s<strong>in</strong>hroni<strong>za</strong>cijski segment (Sync_segment)• segment časa razširjanja (Prop_segment)• fazni segment 1 (Phase_seg1)• fazni segment 2 (Phase_seg2)<strong>in</strong> si sledijo v vrstnem redu, ki ga prikazuje spodnja slika.Slika 2.2.1.1: Bitni <strong>in</strong>terval (čas bita)Vsak segment je sestavljen iz specifičnega <strong>in</strong> programirljivega števila časovnihkvantov. Časovni kvant je osnovna časovna enota bitnega <strong>in</strong>tervala (časa bita). Dolž<strong>in</strong>ačasovnega kvanta (t q ) je def<strong>in</strong>irana s sistemsko uro f sys <strong>CAN</strong> krmilnika <strong>in</strong> BRP-jem (BoudRate Prescaler).t =qBRPfsysfoscTipične sistemske ure so fsys= foscali pa fsys= . Da sprejemniku omogočimo2pravilno branje sporočila moramo <strong>za</strong>gotoviti kont<strong>in</strong>uirano res<strong>in</strong>hroni<strong>za</strong>cijo. Kont<strong>in</strong>uirano


es<strong>in</strong>hroni<strong>za</strong>cija pa dosežemo prav z vstavitvijo teh štirih faznih segmentov v bitni<strong>in</strong>terval <strong>in</strong> sicer pred <strong>in</strong> po nom<strong>in</strong>alni točki vzorčenja (sample po<strong>in</strong>t). Nom<strong>in</strong>alna točkavzorčenja je točka tipanja v kateri določimo vrednost bita. <strong>CAN</strong> protokol reguliraaktivnosti vodila z bitno arbitražo. Širjenje signala od oddajnika do sprejemnika <strong>in</strong> na<strong>za</strong>jse mora končati v enem bitnem <strong>in</strong>tervalu. V času s<strong>in</strong>hroni<strong>za</strong>cijskega segmenta, ki je dolg1 časovni kvant, se s<strong>in</strong>hronizirajo vozlišča v omrežju. Ko se spremeni stanje vrednosti navodilu, se bo zgodila stopnična sprememba vrednosti bita. Pričakuje se, da se bosprememba stanja (fronta) na <strong>CAN</strong> vodilu zgodila prav v s<strong>in</strong>hroni<strong>za</strong>cijskem segmentu.Segment časa razširjanja je sestavljen iz časa razširjanja signala (fizična <strong>za</strong>kasnitev) ododdajnika do sprejemnika <strong>in</strong> obratno po vodilu <strong>in</strong> <strong>in</strong>ternih <strong>za</strong>kasnitev posameznih <strong>CAN</strong>postaj. Trajanje segmenta časa razširjanja je nastavljivo <strong>in</strong> sicer od 1 do 8 časovnihkvantov.2.2.1.2: Parametri bitnega <strong>in</strong>tervala (časa bita)Na spodaj prika<strong>za</strong>nem primeru sta obe postaji oddajnika, ki izvajata arbitražo na<strong>CAN</strong> vodilu. Postaja A je poslala svoj startni bit <strong>za</strong> manj kot celoten bitni <strong>in</strong>terval prejkot postaja B. Postaja B se <strong>za</strong>to s<strong>in</strong>hronizira z sprejeto fronto iz recesivnega vdom<strong>in</strong>antno stanje. Medtem ko je postaja B sprejela to <strong>za</strong>kasnitev fronte (A_to_B) sočasovni segmenti postaje B premaknjeni v odvisnosti od postaje A. Postaja B pošlje sedajidentifikator z višjo prioriteto <strong>in</strong> tako zmaga na arbitraži v specifičnem bitu, ko le tapošlje dom<strong>in</strong>anten bit, medtem ko pošlje postaja A recesiven bit. Dom<strong>in</strong>anten bit poslaniz postaje B bo prispel do postaje A po <strong>za</strong>kasnitvi B_to_A.2.2.1.3: Segment časa razširjanja <strong>in</strong> fazni skok med dvema <strong>CAN</strong> postajamaFazna segmenta 1 <strong>in</strong> 2, ter SJW (Synchroni<strong>za</strong>tion Jump Width) služijo <strong>za</strong>kompen<strong>za</strong>cijo oscilatorskih toleranc (faznih napak). Do s<strong>in</strong>hroni<strong>za</strong>cij pride na frontah


(prehodih) iz recesivnega v dom<strong>in</strong>antno stanje. Namen s<strong>in</strong>hroni<strong>za</strong>cij je krmiljenje razdaljmed frontami <strong>in</strong> točkami vzorčenja. Fronto <strong>za</strong>znamo z vzorčenjem trenutnega stanjavodila v vsakem kvantu, ki ga nato primerjamo z prejšnjim stanjem vodila. Dos<strong>in</strong>hroni<strong>za</strong>cije pride le v primeru, če je bilo prejšnje stanje vodila ob vzorčenju recesivno,trenutno stanje vodila ob vzorčenju pa je dom<strong>in</strong>antno. Fronta je s<strong>in</strong>hronizirana, če sepojavi znotraj s<strong>in</strong>hroni<strong>za</strong>cijskega segmenta. Drugače pa razdalja med fronto <strong>in</strong> koncems<strong>in</strong>hroni<strong>za</strong>cijskega segmenta pomenita fazno napako. Če se fronta pojavi preds<strong>in</strong>hroni<strong>za</strong>cijskim segmentom je fazna napaka negativna, če pa se fronta pojavi <strong>za</strong>s<strong>in</strong>hroni<strong>za</strong>cijskim segmentom pa je fazna napaka pozitivna. Napaka faze nam torej povesamo odmik prednje fronte bita od s<strong>in</strong>hroni<strong>za</strong>cijskega segmenta.Res<strong>in</strong>hroni<strong>za</strong>cija omogoča podaljševanje <strong>in</strong> skrajševanje faznih segmentov.Trajanje faznega segmenta 1 je nastavljivo od 1 do 8 časovnih kvantov. Trajanje faznegasegmenta 2 je seštevek maksimalnega trajanja faznega segmenta 1 <strong>in</strong> časa obdelavepodatka.<strong>CAN</strong> uporablja dva tipa s<strong>in</strong>hroni<strong>za</strong>cije:• Trda s<strong>in</strong>hroni<strong>za</strong>cija (Hard synchroni<strong>za</strong>tion) – se zgodi na <strong>za</strong>četku okvirja (startbit). Po trdi s<strong>in</strong>hroni<strong>za</strong>ciji je čas bita (<strong>in</strong>terval) ponovno <strong>za</strong>gnan na koncus<strong>in</strong>hroni<strong>za</strong>cijskega segmenta v odvisnosti fazne napake fronte (čas bita seponovno nastavi točno na spremembo stanja). Fronta bita, ki je povzročila trdos<strong>in</strong>hroni<strong>za</strong>cijo, sedaj leži znotraj s<strong>in</strong>hroni<strong>za</strong>cijskega segmenta. S trdos<strong>in</strong>hroni<strong>za</strong>cijo torej prisilimo prednjo fronto bita, da leži znotrajs<strong>in</strong>hroni<strong>za</strong>cijskega segmenta.• Res<strong>in</strong>hroni<strong>za</strong>cija (Resynchroni<strong>za</strong>tion) – podaljšuje ali skrajšuje čas bita tako, dase točka tipanja bita premika na fronto (podaljševanje <strong>in</strong> skrajševanje obeh faznihsegmentov). Ko je fazna napaka fronte, ki povzroči res<strong>in</strong>hroni<strong>za</strong>cijo pozitivna, sefazni segment 1 podaljša. Ko je fazna napaka fronte, ki povzroči res<strong>in</strong>hroni<strong>za</strong>cijonegativna, se fazni segment 2 skrajša. Pri res<strong>in</strong>hroni<strong>za</strong>ciji torej popravljamo faznonapako bita <strong>za</strong> vrednost šir<strong>in</strong>e s<strong>in</strong>hroni<strong>za</strong>cije (npr. vrivanje bitov pri daljšanjusegmenta).Primeri na spodnji sliki prikazujejo uporabo faznih segmentov <strong>za</strong> kompen<strong>za</strong>cijo faznihnapak. Prika<strong>za</strong>na so vsa tri možna stanja: s<strong>in</strong>hroni<strong>za</strong>cija pozne fronte, s<strong>in</strong>hroni<strong>za</strong>cijazgodnje fronte <strong>in</strong> stanje brez potrebne s<strong>in</strong>hroni<strong>za</strong>cije.


2.2.1.4: S<strong>in</strong>hroni<strong>za</strong>cija možnih stanj frontV prvem primeru (slika zgoraj, prvi primer) se pojavi fronta iz recesivnega vdom<strong>in</strong>antno stanje na koncu segmenta časa razširjanja. Fronta je pozna saj se pojavi pos<strong>in</strong>hroni<strong>za</strong>cijskem segmentu. Reakcija na pozno fronto je podaljšanje faznega segmenta 1tako, da je razdalja od fronte do točke vzorčenja enaka, kot bi bila od s<strong>in</strong>hroni<strong>za</strong>cijskegasegmenta do točke vzorčenja. V drugem primeru (slika zgoraj, tretji primer) se fronta izrecesivnega v dom<strong>in</strong>antno stanje pojavi v faznem segmentu 2. fronta je zgodnja, ker sepojavi pred s<strong>in</strong>hroni<strong>za</strong>cijskim segmentom. Reakcija na zgodnjo fronto je krajšanjefaznega segmenta 2 <strong>in</strong> s<strong>in</strong>hroni<strong>za</strong>cijski segment je izpuščen, tako da je razdalja od frontedo točke vzorčenja enaka kot bi bila od s<strong>in</strong>hroni<strong>za</strong>cijskega segmenta do točke vzorčenja.Tretji primer možnega stanja je srednji primer na zgornji sliki <strong>in</strong> je primer, kos<strong>in</strong>hroni<strong>za</strong>cija ni potrebna (fronta iz recesivnega v dom<strong>in</strong>antno stanje se pojavi vs<strong>in</strong>hroni<strong>za</strong>cijskem segmentu).Fazni segmenti so podaljšani ali skrajšani le <strong>za</strong>časno. V naslednjem bitnem<strong>in</strong>tervalu se stanja segmentov vrnejo v njihovo programirano nom<strong>in</strong>alno stanje.2.2.2 Standardi fizične plasti• ISO 11898-2 (visoka hitrost) – je najbolj uporabljen standard fizične plasti.Opisuje funkcijski dostop do vodila (implementiran kot visoko hitrostnaoddajno/sprejemna <strong>CAN</strong> naprava). Podatkovna hitrost standarda je def<strong>in</strong>irana do1 Mbit/s (teoretično 1 Mbit/s do dolž<strong>in</strong>e vodila 40m). Karakteristična impedancavodila je 120 Ω. Pogosti napetostni nivoji segajo od -2V na <strong>CAN</strong>_L do +7V na<strong>CAN</strong>_H.• ISO 11898-3 (neobčutljiv na napake) – ta standard se najbolj uporablja <strong>za</strong>elektroniko v avtomobilski <strong>in</strong>dustriji <strong>in</strong> ima možnost uporabe le ene l<strong>in</strong>ije.Uporabljajo se lahko gonilniki z manjšo porabo moči. Topologija vodila sedaj niveč limitirana z l<strong>in</strong>earno strukturo. Možen je prenos podatkov tudi asimetričnopreko le ene l<strong>in</strong>ije vodila v primeru napake ene od l<strong>in</strong>ij. Def<strong>in</strong>irana hitroststandarda je 125 kbit/s. Specifičnih vozlišč je 32 na omrežje. Pogosti napetostn<strong>in</strong>ivoji so v razponu med -2V <strong>in</strong> +7V. Napajalna napetost je def<strong>in</strong>irana z 5V.• SAE J2411 (enojna l<strong>in</strong>ija) – standard je namenjen <strong>CAN</strong> omrežjem z aplikacijami,katere <strong>za</strong>hteve po hitrosti prenosa <strong>in</strong> dolž<strong>in</strong>i vodila niso visoke (komunikacijasamo preko ene l<strong>in</strong>ije z nom<strong>in</strong>alno vrednostjo prenosa podatkov 33,3 kbit/s ali pa83,3 kbit/s v hitrejšem režimu z namenom diagnosticiranja). Standard def<strong>in</strong>ira do


32 vozlišč na <strong>vodilo</strong>. Uporablja se predvsem v omrežjih v zvezi z elektronikomotorjev.• ISO 11992 (p2p, od točke do točke) – standard def<strong>in</strong>ira komunikacijo od točke dotočke (po<strong>in</strong>t-to-po<strong>in</strong>t). Uporablja se predvsem pri vozilih vlačilcih <strong>in</strong> prikoličarjih.Za vozilo z eno prikolico je def<strong>in</strong>irana p2p komunikacija, pri vozilih z dvema aliveč prikolicami pa verižna komunikacija (daisy-cha<strong>in</strong>). Nom<strong>in</strong>alna vrednostprenosa podatkov je 125 kbit/s z maksimalno dolž<strong>in</strong>o vodila do 40m. Napajalnanapetost je def<strong>in</strong>irana z 12V ali 24V. Kot medij vodila se uporablja sukani parbrez oklopa.• ISO 11519-2 (<strong>CAN</strong>)• ISO 11519-3 (VAN)• ISO 11519-4 (J1850)• ostali standardi2.2.3 Podatkovno povezovalna plastNaloga podatkovno povezovalne plasti je <strong>za</strong>gotavljanje varne <strong>in</strong> transparentneizmenjave podatkov med napravami, ki komunicirajo preko enake fizične plasti. Pri temrazrešuje tri funkcije:• Ugotavlja <strong>in</strong> odpravlja napake pri prenosu• Opravlja nadzor nad oddajanjem <strong>in</strong> sprejemanjem• Omogoča <strong>in</strong> upravlja dostop do prenosnega medijaPodatkovno povezovalno plast delimo na dve podplasti:• LLC (Logical L<strong>in</strong>k Control, krmilna logična pove<strong>za</strong>va) – katere naloga jefiltriranje sporočil, javljanje preobremenitev <strong>in</strong> upravljanje oživetja (wake-up). Tapodplast skrbi <strong>za</strong> prvi dve funkciji.• MAC (Media Access Control) – katere naloga je okvirjanje podatkov, krmiljenjedostopa do vodila, odkrivanje napak, javljanje napak, potrjevanje sporočil <strong>in</strong>serijsko-paralelna pretvorba. Ta plast skrbi <strong>za</strong> nadzor dostopa do prenosnegamedija. MAC je osrednji protokol v komunikacijski strukturi <strong>CAN</strong> <strong>in</strong> temelji namehanizmu CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance;<strong>za</strong>znava nosilca,večkratni dostop ter izogibanje trkom).2.2.3.1 Zaznava nosilca,večkratni dostop ter izogibanje trkom (CSMA/CA)CSMA se uporablja pri omrežjih, ki postaje povezujejo paralelno. Oddajanje enepostaje na prosto <strong>vodilo</strong> slišijo vse ostale postaje ve<strong>za</strong>ne na <strong>vodilo</strong>. Če pa oddaja večnaprav hkrati pa pride do trka podatkov (<strong>signalov</strong>). Postaje ves čas spremljajo dejavnost<strong>in</strong>a vodilu (poslušajo). Če je <strong>vodilo</strong> prosto, lahko katerakoli postaja prične z oddajanjemoziroma komuniciranjem.


Torej če dve ali več postaj oddaja hkrati pride do trka <strong>signalov</strong> (kolizije podatkov)<strong>in</strong> v tem času je <strong>vodilo</strong> neuporabno. Postopek CSMA/CD temelji na mehanizmurazreševanja problema kolizije po naključnem izboru (ni garancije, da se bo razreševanjekolizije kdaj končalo). Zato je smiselna uporaba TT-<strong>CAN</strong>-a (Time Triggered <strong>CAN</strong>,časovno proženi-voden <strong>CAN</strong>) v izogib čim večjemu številu kolizij.Slika 2.2.3.1.1: CSMA/CD postopekDruga tehnika v izogib kolizijam je CSMA/CA (Collision Avoidance, izogibanjetrkom) postopek. Postopek temelji na posebnem arbitražnem polju, ki ga dodamo na<strong>za</strong>četek podatkovnega okvirja. Arbitražno polje predstavlja identiteto posamezne postajeID (vsaka postaja ima svoj unikatni ID oziroma arbitražno polje). Na vodilu moramodef<strong>in</strong>irati dve logični stanji <strong>in</strong> sicer dom<strong>in</strong>antno <strong>in</strong> recesivno stanje.Slika 2.2.3.1.2: Dom<strong>in</strong>antno <strong>in</strong> recesivno stanje <strong>CAN</strong> vodila


Dogovor je, da prevladujejo dom<strong>in</strong>antni biti (če postaja pošle dom<strong>in</strong>anten bit»povozi« oziroma izloči postajo, ki je poslala recesivni bit) na vodilu. Na spodnji slikiimamo prika<strong>za</strong>n primer možne arbitraže. Postaja 1 izgubi prva arbitražo (v 5 bitu izgubiarbitražo proti dom<strong>in</strong>antnima stanjema druge <strong>in</strong> tretje postaje). Na koncu zmaga drugapostaja, ki dobi arbitražo proti tretji postaji (prišlo je sicer do kolizije, ampak postaja dvaima naslednjo bitno stanje dom<strong>in</strong>antno stanje <strong>in</strong> je <strong>za</strong>to zmagovalec arbitraže, ter<strong>za</strong>v<strong>za</strong>me <strong>vodilo</strong>).Slika 2.2.3.1.3: Postopek arbitražeČe pobližje pogledamo fizično plast ugotovimo, da arbitražna procedura temelj<strong>in</strong>a nekakšnem »ožičenim IN« (wired AND) pr<strong>in</strong>cpu. Če pogledamo spodnjo sliko lahkovidimo, da samo v primeru, če so napetosti na vseh treh postajah enake 1 (recesivnostanje) je napetost na vodilu enaka Vcc (recesivno stanje). Če je samo ena napetostkatere od postaj enaka 0 (dom<strong>in</strong>antno stanje) prisilimo napetost na vodilu v dom<strong>in</strong>antnostanje (vrednost 0). Na izhodih oddajnikov so tranzistorji. Dom<strong>in</strong>antno stanje torejpredstavlja prevajanje tranzistorja.Slika 2.2.3.1.4: Ožičen IN pr<strong>in</strong>cipVsi <strong>CAN</strong> moduli s postopkom CSMA/CA so prisiljeni ves čas »poslušati« <strong>vodilo</strong>(tipanje napetosti). Posluša se prav tako fa<strong>za</strong> arbitraže podatkovnega okvirja. Velika


verjetnost obstaja, da bo do kolizije prišlo <strong>in</strong> bo torej neka postaja izgubila arbitražo. Vtem primeru je zelo pomembno, da ta postaja takoj preklopi v stanje sprejemanja. Tako sponovnim poslušanjem spet dobimo takojšnjo <strong>in</strong>formacijo o stanju vodila <strong>in</strong> s tem<strong>in</strong>formacijo o <strong>za</strong>sedenem ali prostem vodilu.Slika 2.2.3.1.5: Invertirana logika <strong>CAN</strong> vodilaVeliko <strong>CAN</strong> sistemov uporablja oddajno/sprejemno napravo (transceiver) <strong>za</strong>implementacijo fizične plasti <strong>CAN</strong> protokola.Slika 2.2.3.1.6: Električni pr<strong>in</strong>cip oddajno/sprejemne napraveTorej naštejmo še enkrat glavne prednosti arbitražnega postopka CSMA/CA:• dostopno krmiljenje z bitno arbitražo• pri koliziji »zmagovalec« arbitraže <strong>za</strong>v<strong>za</strong>me <strong>vodilo</strong>• sporočilo z višjo prioriteto ni <strong>za</strong>kasnjeno (ovirano)• nižji je identifikator, večja je prioriteta2.2.4 Aplikacijska plastAplikacijska plast ustvari komunikacijsko pove<strong>za</strong>vo z specifičnim aplikacijskimprotokolom višjega nivoja. To pa pomeni, da aplikacijska plast vsebuje programe, ki so<strong>za</strong>dolženi <strong>za</strong> izmenjavo podatkov med aplikacijami <strong>in</strong> komunikacijo (služi kot vmesnikmed lokalnimi uporabniškimi programi <strong>in</strong> procesi ter po omrežju porazdeljenimi<strong>in</strong>formacijskimi viri). Aplikacijska plast v ISO 11898 ni def<strong>in</strong>irana (ni standardizirana).Ko se aplikacijska plast pričela širiti iz avtomobilske <strong>in</strong>dustrije v druga področja, kot je


npr. avtomati<strong>za</strong>cija v <strong>in</strong>dustriji, je nastala potreba po standardi<strong>za</strong>ciji aplikacijske plasti.Specifikacije aplikacijske plasti so imenovali CAL (<strong>CAN</strong> Application Layer, <strong>CAN</strong>aplikacijska plast). Specifikacije so <strong>za</strong>snovane na osnovi ISO/OSI referenčnega modelaaplikacijske plasti. Obstaja kar nekaj <strong>in</strong>dustrijskih standardov aplikacijske plasti:1. <strong>CAN</strong> Application Layer (CAL)• Orig<strong>in</strong>alna <strong>za</strong>misel CAL pri družbi Philips Medical Systems (1993), ki ga jekasneje <strong>in</strong>tegrirala evropska <strong>CAN</strong> uporabniška skup<strong>in</strong>a <strong>in</strong> ga poimenovala<strong>CAN</strong> v avtomatiki (CiA, <strong>CAN</strong> <strong>in</strong> Automation). CiA je torej organi<strong>za</strong>cija, kirazvija <strong>in</strong> podpira višje ležeče protokole, ki bazirajo na <strong>CAN</strong>.• CiA uporabniki razvijajo specifikacije, ki jih kasneje ponudijo kot CiAstandarde.


• CiA CAL specifikacije DS-201 <strong>in</strong> DS-207.• Protokoli DBT (Dynamic attachment of identifiers)• Protokoli <strong>za</strong> <strong>in</strong>iciali<strong>za</strong>cijo, konfiguracijo <strong>in</strong> uporabo omrežij (NMT)• Protokoli <strong>za</strong> parametrično nastavitev fizične <strong>in</strong> podatkovne plasti (LMT)• Uporaba v avtomatiki, medic<strong>in</strong>i, potniški <strong>in</strong>dustriji,…2. <strong>CAN</strong> K<strong>in</strong>gdom• Sistemskim di<strong>za</strong>jnerjem daje maksimalno prostost pri oblikovanju svojegasistema. Ni ve<strong>za</strong>n na CSMA/AMP multi-master protokol, ampak lahko ustvarivirtualni sistem.• Standard je bil razvit na Švedskem pri Kvaser-ju.3. OSEK/VDX• Uporablja ga evropska avtomobilska <strong>in</strong>dustrija.• Vključuje naloge standardiziranega realno-časovnega operacijskega sistema.4. <strong>CAN</strong>open• Razvit je bil <strong>za</strong> standardi<strong>za</strong>cijo vgradnih (embedded) omrežij z visoko stopnjonastavljive fleksibilnosti.• Evropska skupnost ustanovi projekt »ESPRIT«.• 1995 : <strong>CAN</strong>open profile ; specifikacija CiA DS-301


• 1996 : <strong>CAN</strong>open device profile for I/O ; specifikacija CiA DS-401• 1997 : <strong>CAN</strong>open drive profile• Uporaba v <strong>in</strong>dustrijskih krmiljih <strong>in</strong> numeričnih krmiljih v Evropi.5. DeviceNet• Začetek razvoja pri Allen-Bradley, kasneje prevzel <strong>in</strong> sedaj razvija skup<strong>in</strong>aODVA ( Open DeviceNet Vendor Association).• Se predvsem uporablja v <strong>in</strong>dustrijskih aplikacijah <strong>in</strong> sicer v tovarniškihavtomati<strong>za</strong>cijah. Je nizko cenovna komunikacijska pove<strong>za</strong>va <strong>za</strong> priklop<strong>in</strong>dustrijskih naprav (senzorjev, aktuatorjev, nadzornih naprav).• Možnost master-slave komunikacije ali pa komunikacije točke do točke.• Uporaba <strong>za</strong> <strong>in</strong>dustrijska krmilja predvsem v ZDA.6. Smart Distributed Systems (SDS)• Razvilo podjetje Honeywell v ZDA.• Samo štiri komunikacijske funkcije <strong>in</strong> manjše število strojniških virov.• Uporaba v <strong>in</strong>dustrijskih krmiljih (US-food <strong>in</strong>dustry), PC bazirana krmilja,…• Tudi v <strong>in</strong>tegrirani obliki (Motorola 68HC05 z SDS).7. ostali:• J1939 : US truck and bus <strong>in</strong>dustry• LBS : Agricultural bus system , Nemčija (DIN)• M3S : Evropski proizvajalci <strong>in</strong>validskih vozičkov2.3 <strong>CAN</strong> podatkovni okvirPodatkovni <strong>CAN</strong> okvir je v osnovi sestavljen iz štirih osnovnih segmentov (polj) :1. Arbitražni segment2. Podatkovni segment3. CRC segment4. »Konec okvirja« segmentSlika 2.3.1: <strong>CAN</strong> podatkovni okvir<strong>CAN</strong> protokol podpira dva različna podatkovna okvirja. Razlika je le v dolž<strong>in</strong>iidentifikatorja (identifikacijsko polje). Standardni <strong>CAN</strong> podpira 11-bitni identifikator <strong>in</strong>je znan pod imenom <strong>CAN</strong> 2.0A.


Slika 2.3.2: <strong>CAN</strong> 2.0 ARazširjeni <strong>CAN</strong> okvir podpira 29-bitni identifikator <strong>in</strong> je znan pod imenom <strong>CAN</strong>2.0B. Na <strong>CAN</strong> <strong>vodilo</strong> lahko pošiljamo tako standardni kot tudi razširjeni podatkovniokvir iz različnih modulov, kar omogoča programska nastavitev nadzornih modulov.Slika 2.3.3: <strong>CAN</strong> 2.0BPomen posameznih bitov v podatkovnem okvirju je sledeč:• SOF ( Start Of Frame) – <strong>za</strong>stava <strong>za</strong> <strong>za</strong>četek sporočila (1 bit). Pri prehodu izneaktivnega stanja (idle) v aktivno stanje s<strong>in</strong>hroniziramo vse sprejemnikepriključene na skupno <strong>vodilo</strong>.• Identifikator (Identifier) – označuje ime sporočila <strong>in</strong> njegovo prioriteto (11 bit-ov,standardni <strong>CAN</strong> okvir).• SRR (Substitute Remote Request) – <strong>za</strong>menjava RTR bit-a v standardnih okvirjih(1 bit, samo pri razširjenem <strong>CAN</strong> okvirju).• IDE (Identifier Extension) – če je IDE = 1, potem pošiljamo razširjen <strong>CAN</strong> okvir(1 bit)• Identifikator (Identifier) – označuje ime sporočila <strong>in</strong> njegovo prioriteto (18 bit-ov,samo pri razširjenim <strong>CAN</strong> okvirju).• RTR (Remote Transmission Request) – če je RTR = 1, potem <strong>za</strong>hteva ododdajnika po sporočilu (1 bit).• r1 – rezerviran bit (1 bit).• r0 – rezerviran bit (1 bit).


• DLC (Data Lenght Code) – določamo število zlogov (4 bit-i). Dovoljeno ještevilo od 0-8 ( prepovedana pa so števila 9-15).• Podatki (Data) – podatki sporočila ( 0-8 zlogov, 64 bit-ov).• CRC (Cyclic Redundancy Code) – samo <strong>za</strong> detekcijo napak (kontrolna vsota) <strong>in</strong>brez korekcije (15 bit-ov). Hamm<strong>in</strong>gova razdalja je 6 (do 6 enojnih bitnih napak).• ACK (ACKnowledge) – vsaka naprava, ki sprejeme sporočilo brez napak (tudiCRC) mora poslati potrditev sprejema sporočila (2 bit-a).• EOF (End Of Frame) – označuje konec podatkovnega okvirja (7 bit-ov). Izklopivrivanje bitov. Po petih <strong>za</strong>porednih recesivnih bitih se vr<strong>in</strong>e bit nasprotne logičnevrednosti.• IFS, Int (Inter frame space) – def<strong>in</strong>ira čas, ki je potreben, da pravilno prenesesprejete podatke od opravljalca vodila v pomnilnik (3 bit-i).2.4 Upravljanje <strong>CAN</strong> napak <strong>in</strong> izjemVeč<strong>in</strong>a napak naj bi bila <strong>za</strong>znana <strong>in</strong> korigirana s pomočjo <strong>CAN</strong> procesorja(modula). <strong>CAN</strong> protokol ne uporablja potrditvenega sporočila, kot ostali sistemi vodil,ampak namesto tega uporablja signali<strong>za</strong>cijo napak takoj ko te nastopijo. Obravnavonapak delimo v tri segmente <strong>in</strong> sicer detekcija (<strong>za</strong>znava) napak, upravljanje napak <strong>in</strong>omejevanje napak (slika spodaj).Slika 2.4.1: Upravljanje <strong>CAN</strong> napak <strong>in</strong> izjem<strong>CAN</strong> protokol uporablja pet metod (mehanizmov) <strong>za</strong> detekcijo napak (errordetection). Te metode se potem delijo na dva nivoja detekcije napak. Prvi nivo detekcijenapak so trije mehanizmi, ki temeljijo na nivoju sporočil. Druga dva mehanizma <strong>za</strong>detekcije napak pa temeljita na bitnem nivoju. Mehanizmi detekcije napak, ki temeljijona nivoju sporočil so naslednji:• CRC napaka (CRC Error) – (CRC, Ciklično preverjanje podatkov, CyclicRedundancy Check) – ta metoda preverja pravilnost prenosa podatkov s


dodajanjem testnega pol<strong>in</strong>oma oziroma okvirja preveritvene sekvence (FCS,Frame Check Sequence) znotraj podatkovnega okvirja (CRC polje). Na sprejemnistrani se FCS vsota znova preračuna <strong>in</strong> primerja s sprejeto FCS vsoto. Če se vsot<strong>in</strong>e ujemata je nastopila CRC napaka.• Napaka oblike (Format-Error) – ta mehanizem preverja strukturo sprejetegaokvira tako, da preveri (primerja) sprejeta bitna polja z fiksnim formatom <strong>in</strong>dolž<strong>in</strong>o okvirja.• Potrditvena napaka (Acknowledgment (ACK)-Error) – sprejemniki sporočilapotrdijo sprejeti okvir. Če oddajnik ne sprejme potrditve, pride do potrditvenenapake (sprejemnik ne prejme dom<strong>in</strong>antnega bita <strong>za</strong> potrditev).Mehanizma detekcije napak, ki temeljita na bitnem nivoju sta naslednja:• Bitna napaka (Bit-Error) – poslani bit se ne ujema z enakim digitalnim nivojem(vrednost bita na vodilu se razlikuje od poslanega). Možnost, da oddajnik <strong>za</strong>znanapako bazira na neprestanem poslušanju - monitor<strong>in</strong>gu (tipanju signala) navodilu. Vsaka postaja, ki pošlje sporočilo, preklopi v stanje poslušanja <strong>in</strong> tako<strong>za</strong>zna razlike v poslanem <strong>in</strong> sprejetem okvirju.• Napaka pri vrivanju bita (Bit Stuff<strong>in</strong>g-Error) – biti uporabljeni <strong>za</strong> <strong>CAN</strong> kodiranjeso ponavadi v obliki NRZ. S<strong>in</strong>hroni<strong>za</strong>cijski konci okvirjev so def<strong>in</strong>irani zvrivanjem bitov. To pomeni, da po petih <strong>za</strong>porednih enakih bitih oddajnik vr<strong>in</strong>ebit v okvir. Ta vr<strong>in</strong>jen bit ima komplementarno vrednost, ki jo odstranijosprejemniki.Če katera od postaj <strong>za</strong>zna eno ali več napak s pomočjo zgoraj naštetihmehanizmov detekcije napak, pride do prek<strong>in</strong>itve prenosa sporočila. Postaja pošljeposebni okvir »napaka« (error-frame). Okvir napaka je zgrajen iz dveh različnih polj.Prvo polje je namenjeno superpoziciji <strong>za</strong>stavic napak (superposition of error-flags).Drugo polje pa je namenjeno razmejevanju napak (Error-delimiter). Polje razmejevanjanapak sestavlja osem recesivnih bitov. Po oddaji <strong>za</strong>stavice napaka vsaka postaja pošljerecesiven bit <strong>in</strong> posluša <strong>vodilo</strong> dokler ne <strong>za</strong>zna recesivnega bita. Nato <strong>za</strong>čne z pošiljanjemše ostalih sedmih recesivnih bitov.Slika 2.4.2: Okvir napakaČe je bil poslan okvir napake, to posledično pomeni, da ostale postaje prenehajosprejemat sporočilo <strong>in</strong> tako <strong>za</strong>gotovimo nemoteno delovanje pretoka podatkov po vodilu.Po uspešni prek<strong>in</strong>itvi sprejema <strong>in</strong> obdelave okvarjenega podatkovnega okvirja oddajnapostaja spet nato avtomatsko ponovi s pošiljanjem sporočila. Po uspešnem prenosu je<strong>vodilo</strong> spet prosto <strong>za</strong> novo arbitražo.


Ko se v vozlišču pojavi napaka <strong>in</strong> jo <strong>za</strong>zna ena od postaj, ostale postaje oziromasprejemniki torej sprejmejo okvir napaka od postaje, ki je napako <strong>za</strong>znala. Zgodi sekršitev pravila vrivanja bitov, kajti pošlje se 6 <strong>za</strong>porednih dom<strong>in</strong>antnih bitov. Okvirnapaka torej s kršenjem pravila prisili ostale postaje, da prepoznajo okvir napake navodilu. Postopek upravljanja napake je naslednji:• napaka je <strong>za</strong>znana• pošlje se okvir napaka od vseh postaj, ki so <strong>za</strong>znale napako• <strong>za</strong>dnjo sprejeto sporočilo bo izbrisano pri veh postajah• notranji hardverski števec napak bo povečal svojo vrednost• orig<strong>in</strong>alno sporočilo bo ponovno poslano na <strong>vodilo</strong>Poznamo tri stanja napak:• Aktivna napaka (active error) – sestavlja jo šest <strong>za</strong>porednih dom<strong>in</strong>antnih bitov.Postaja, ki <strong>za</strong>zna napako, signalizira napako ostalim postajam z oddajo aktivne<strong>za</strong>stavice napaka. Kot posledica vse ostale postaje, ki so <strong>za</strong>znale stanje napake,<strong>za</strong>čno oddajat <strong>za</strong>stavico napaka. Sekvenca dom<strong>in</strong>antnih bitov je rezultatsuperpozicije različnih <strong>za</strong>stavic napak, ki jih pošiljajo posamezne postaje. Dolž<strong>in</strong>asekvence variira med m<strong>in</strong>imalno šestimi <strong>in</strong> maksimalno dvanajstimi biti.• Pasivna napaka (passive error) – sestavlja jo šest recesivnih bitov. Postaja, ki je<strong>za</strong>znala napako, signalizira napako ostalim postajam z oddajo pasivne <strong>za</strong>stavicenapaka. Postaja sedaj čaka na šest enakih <strong>za</strong>porednih bitov.• Vodilo izklopljeno (Bus Off) – vozlišče je ločeno od <strong>CAN</strong>. Postaji ni dovoljenvpliv na <strong>vodilo</strong> (ne sme niti sprejemat, niti oddajat <strong>in</strong> ne more pošiljati okvirjanapake). To stanje postaje je mogoče <strong>za</strong>pustiti le z ob ponovnem <strong>za</strong>gonu (reset).Za nadzor <strong>in</strong> upravljanje nad napakami imamo hardversko implementirana dvaštevca <strong>CAN</strong> napak. Prehodi med različnimi stanji števca se bodo izvajali avtomatično v<strong>CAN</strong> krmilniku. Če se bo na vodilu pojavila napaka bo poslala okvir napake <strong>in</strong> uničilapromet po vodilu. Stanja napak torej upravljata dva števca (določena pravila kako<strong>in</strong>krementirati ali dekrementirati števce napak):• Števec napak sprejema (Recive Error Counter, REC)• Števec napak oddajanja (Transmit Error Counter, TEC)


Možno je več različnih situacij:Slika 2.4.3: Diagram stanj števca• Oddajna postaja <strong>za</strong>zna napako: TEC := TEC + 8• Sprejema postaja »vidi« napako: REC := REC + 1• Sprejemna postaja vidi napako, potem ko je že poslala okvir napake : REC :=REC + 1• Postaja, ki je v stanju aktivne napake, <strong>za</strong>zna napako pri vrivanju bita ko pošiljaokvir napake: TEC := TEC + 1• Uspešen prenos: TEC := TEC – 1• Uspešen sprejem: REC := REC – 1Pri teh algoritmih lahko vidimo, da ko bo oddajna postaja <strong>za</strong>znala napako se njenštevec napak <strong>in</strong>krementira bistveno hitreje, kot sprejemne naprave. Razlog pa je v velikiverjetnosti, da prav oddajna postaja ne deluje pravilno. Postaja, ki <strong>za</strong>zna napako najprejstopi v stanje aktivne napake. Ko eden od števcev napak prekorači vrednost 127 (16poizkusov) naprava prestopi v stanje pasivne napake. Razlika med aktivnim <strong>in</strong> pasivnimstanjem postaje je v stanju bitov. Če aktivni okvir napake uničuje promet na vodilu (16krat), z spremembo stanja v pasivno postajo <strong>za</strong>čne pošiljat pasivne okvirje napak, kiprometa po vodilu ne uničuje več (druge postaje niso več seznanjene z problemom tepostaje). Ko pa se števec <strong>in</strong>krementira še preko vrednosti 255 pa se postaja izključi izvodila.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!