Controller Area Network

Vissza a tudásbázishoz


A soros kommunikáció iráni igény járművekben

Sok jármű tartalmaz nagyszámú elektronikus vezérlő rendszert. A járműipari elektronika növekedése egyrészt a felhasználó biztonsági és kényelmi igényeinek, másrészt a környezetvédelmi megfontolásoknak (károsanyag kibocsátás és üzemanyag fogyasztás csökkentése) köszönhető. Ilyen vezérlőeszközök lehetnek például a vezérműben, a sebességváltóban, a karburátor fojtószelepénél, a blokkolásgátló rendszerben (ABS) és a gyorsítási csúszásgátlóban (ASC).

Ezen rendszerek funkcióinak bonyolultsága elkerülhetetlenné teszi az adatcserét közöttük. A hagyományos rendszerekben az adatcsere dedikált adatvonalakon keresztül történik, de ezt a vezérlési funkciók bonyolultabbá válásával egyre nehezebb és drágább megvalósítani. A bonyolult vezérlőrendszerekben az összeköttetések száma tovább már nem növelhető.

Egyre több olyan rendszert is kifejlesztenek, amik több vezérlőeszköz együttműködését igénylik. Ilyen például az ASC, ahol a motor időzítése és a karburátor vezérlése működik együtt, hogy a meghajtott kerék megcsúszásakor csökkentsék a forgatónyomatékot. Egy másik példa az elektronikus sebességváltó vezérlés, ahol a sebességváltás a gyújtás precíz beállításával könnyíthető.

Ha figyelembe vesszük a járművek optimalizálására megcélzott további fejlesztéseket, szükségessé válik a vezérlőeszközök hagyományos összekötésének lecserélése. Ez csak a rendszer elemeinek egy soros buszrendszert használó hálózatával lehetséges. Ezért fejlesztette ki a Bosch a "Controller Area Network"-öt, amit szabványosítottak (ISO 11898) és sok félvezető gyártó kínál hozzá eszközöket.

A CAN használatakor az állomások (vezérlők, érzékelők és beavatkozók) soros buszon keresztül vannak összekapcsolva. A busz egy szimmetrikus vagy aszimmetrikus kétvezetékes áramkör, ami lehet árnyékolt vagy árnyékolatlan is. A fizikai átvitel elektromos paramétereit szintén az ISO 11898 szabvány specifikálja.

A CAN protokoll, mely az ISO/OSI hivatkozási modell adatkapcsolati rétegének felel meg, megfelel a járműipari alkalmazások valósidejű követelményeinek. A hálózat detektálja és kijavítja az elektromágneses zajokból eredő átviteli hibákat. Az egyszerű konfigurálás és a központi hibaellenőrzés szintén a hálózat előnyös tulajdonságai. A CAN rendszerek járművekben való használatának célja annak lehetővé tétele, hogy az állomások központi vezérlő számítógép használata nélkül tudjanak kommunikálni.

A CAN hálózat használata járművekben

A járművekben használt soros kommunikációnak 4 fő alkalmazási területe van. Hálózati vezérlők szolgálnak a motor időzítésénél, a sebességváltónál, az alváznál és a fékeknél. Az adatátviteli sebesség a valósidejű rendszerekben szokásosan 200kbps-tól 1Mbps-ig terjedhet.

Az alváz elektronika és a kényelmet szolgáló elektronika is hálózatba kapcsolható. Erre példa a világítás, a légkondícionálás, a központi zár, a szék és a tükör beállítása. Itt a tipikus átviteli sebesség 50 kbps.

A közeljövőben a soros kommunikációt a mobil kommunikációban is alkalmazni fogják az autórádió, mobiltelefon, navigációs eszközök, stb. központi panelben történő összekapcsolására. A Prometheus projektben definiált olyan funkciók, mint a jármű-jármű ill. jármű-infrastruktúra kommunikáció, a soros kommunikáció további bővítését fogja igényelni.

A CAN hálózat ipari alkalmazásai

A járművek buszrendszereinek és az ipari terepbusz rendszereknek az összehasonlítása sok azonosságot mutat: alacsony költség, elektromágneses zajjal terhelt környezetben való működés, valósidejű működés, egyszerű használat. A CAN szabványos használata a Mercedes-Benz-nél, és az USA-beli járműgyártók nagysebességű adatátvitelre szolgáló CAN adoptációja (egészen 1 Mbps-ig) felkeltette az ipari felhasználók érdeklődését. Nemcsak a mezőgazdasági gépgyártók és hajógyárak választották a CAN-t, hanem pl. orvosi eszközökben, textilgyártásban és liftek vezérlésében is alkalmazzák. Jól használható a gépekben vagy gyárakban az "intelligens" I/O eszközök és az érzékelők/beavatkozók hálózatba kapcsolására is.

Az adatátvitel megbízhatóságán túl az állomásokra eső alacsony kapcsolati költség is jelentős érv a CAN használata mellett. Az olyan alkalmazásokban, ahol a költség kritikus, felhasználhatjuk a sok gyártó által kínált CAN chipeket. A kompakt vezérlőchipek előnyösen használhatók fel például a kisfeszültségű kapcsolóberendezésekben.

Hogyan működik a CAN hálózat

Az adatátvitelkor nincs megcímzett állomás, ehelyett az üzenet tartalmát egy a hálózatban egyedi azonosító jellemzi. Az azonosító nemcsak a tartalmat definiálja, hanem az üzenet prioritását is. Erre a busz allokáció során van szükség, amikor több állomás verseng a hozzáférés jogáért.

Ha egy adott állomás CPU-ja egy vagy több állomásnak üzenetet akar küldeni, az átviendő adatokat és azonosítókat a hozzárendelt CAN chipnek továbbítja ("Make ready"). Ennyi a CPU összes feladata. Az üzenet összeállítása és elküldése a CAN chip feladata. Amint a CAN chip megszerzi a buszhozzáférés jogát ("Send Message"), az összes többi állomás veszi az üzenetét ("Receive Message"). A CAN hálózat minden állomása, mely helyesen vette az üzenetet, végrehajt egy elfogadási tesztet, hogy eldöntse, a vett adat neki szól-e ("Select"). Ha igen, feldolgozza ("Accept"), különben eldobja.

A tartalom orientált címzési sémának köszönhetően a rendszer és a konfiguráció nagyfokú rugalmassága érhető el. Nagyon egyszerűen lehet új állomást felvenni a hálózatba a többi állomás szoftverének vagy hardverének módosítása nélkül, ha az új állomások csak vevők. Mivel az adatátviteli protokoll nem használ fizikai címeket, broadcast és multicast üzenetek is küldhetők, és elosztott folyamatok is szinkronizálhatók: a több vezérlő által is igényelt mérési információt át lehet küldeni a hálózaton, így nincs szükség arra, hogy minden vezérlőnek saját érzékelője legyen.



Broadcast átvitel és az elfogadási szűrés a CAN állomásoknál

A nem destruktív bitenként döntés

A valósidejű feldolgozás adatait nagyon gyorsan kell átvinni. Ez nemcsak egy 1Mbps adatátviteli sebességű fizikai kapcsolatot igényel, hanem gyors busz allokációt is, ha több állomás egyszerre szeretne üzenetet átvinni.

A valósidejű feldolgozás adatainak sürgőssége nagyon különböző lehet: egy gyorsan változó mennyiséget (pl. a motor fogyasztása) sokkal gyakrabban kell átvinni, tehát kisebb késleltetéssel más lassan változó mennyiségekhez (pl. a motor hőmérséklete) képest.

Az átviendő üzenet prioritását az az azonosító határozza meg, melyhez az üzenet tartozik. A prioritási szinteket a rendszer tervezésekor binéris számokban kódolják, ez tehát nem változtatható dinamikusan. A legkisebb bináris szám jelenti a legmagasabb prioritást.

A buszhozzáférési konfliktusok az azonosítókon alapuló bitenkénti döntés módszerével oldhatók fel, melyeket minden állomás figyel. A "huzalozott ÉS kapcsolatnak" megfelelően, amikor a domináns állítás (logical 0) felülírja a recesszívet (logical 1), a buszhozzáférési versenyt is azok az állomások veszítik el, melyek átvitele recesszív, megfigyelése pedig domináns. Az összes "vesztes" a legmagasabb prioritású üzenet vevőjévé válik, és nem kísérli meg az átvitelt mindaddig, míg a busz ismét szabad nem lesz.



A nem destruktív bitenként döntés alapelve

A busz allokáció hatékonysága

A busz allokáció hatékonyságat elsősorban a soros buszrendszer lehetséges alkalmazásai határozzák meg. Annak legegyszerűbb eldöntésére, hogy mely buszrendszerek mely alkalmazáshoz megfelelőek, az irodalom a busz allokációs eljárások osztályozását tartalmazza. A következő osztályokat különböztetjük meg:

1. Rögzített időbeosztású allokáció

Minden felhasználó egy meghatározott időre periodikusan megkapja a buszhozzáférés jogát, függetlenül attól, hogy szüksége van-e rá (pl. token passing).

2. Igény szerinti busz allokáció

Az átviteli igénnyel jelentkező egyik résztvevő kapja meg a buszhozzáférés jogát, azaz az allokációs rendszer csak azokat a résztvevőket veszi figyelembe, akik adni akarnak (pl. CSMA, CSMA/CD, flying master, round robin vagy bitenkénti döntés).

A CAN esetében a busz allokációt csak az átvitelre várakozó üzenetek határozzák meg, tehát az igény szerinti busz allokáció osztályába tartozik.

A hatékonyság vizsgálatának másik szempontja a buszhozzáférési eljárás lehet:

1. Non-destructive buszhozzáférés

Az ilyen típusú eljárások alkalmazásakor a buszhozzáférés jogát mindig egy és csak egy állomás birtokolhatja, akár azonnal, akár késleltetéssel. Több állomás egyidejű hozzáférése kétértelműséghez vezet (pl. token passing, round robin, bitenkénti döntés)

2. Destructive buszhozzáférés

Több állomás egyidejű hozzáférésekor az összes átviteli kísérlet sikertelen lesz, így nem lehet allokálni a buszt. Egy másik elképzelés szerint a busz allokálásához többszörösen is hozzá lehet férni, ilyenkor a sikeres allokáció előtti kísérletek száma statisztikai alapon megjósolható (pl. CSMA/CD, Ethernet).

Az összes lehetséges átviteli kérés feldolgozásához a CAN protokollnak szavatolnia kell a kétértelműséget többszörös hozzáférés esetén. Ezt bitenkénti döntéssel valósítja meg, az üzenetek azonosítóit figyelve, legkésőbb 13 (standard formátum) vagy 33 (kiterjesztett formátum) bitidő alatt. Az üzenetenkénti döntéstől eltérően (CSMA/CD) ez az eljárás garantálja, hogy a buszon csak hasznos információk közlekednek.

A hozzáférés prioritásának az üzenet tartalmától való függésének köszönhetően a rendszer még a busz túlterhelésekor is hatékonyabb, mint a CSMA/CD vagy a tokenes protokollok: az elégtelen adatátviteli kapacitás ellenére minden létező kérést feldolgoz a rendszer, fontosságának megfelelő sorrendben (amit az üzenet prioritása határoz meg). A rendelkezésre álló átviteli kapacitás hatékonyan van felhasználva a hasznos adatok átvitelére, mivel a busz allokációs "rések" nagyon kicsik. A túlterhelés miatti rendszer összeomlás, mely előfordulhat a CSMA/CD protollnál, itt lehetetlen. Ezért a CAN a gyors, forgalomfüggő buszhozzáférést valósítja meg, ami non-destructive, mivel az üzenetek prioritásán alapuló bitenkénti döntést alkalmazza.

A non-destructive buzhozzáférés tovább osztályozható:

attól függően, hogy a vezérlő mechanizmus csak egyszer van jelen a rendszerben (centralizált) vagy többször (decentralizált). A centralizált rendszerben valamilyen védelmi mechanizmust kell fenntartani a master meghibásodásának esetére. Ennek hátránya, hogy a stratégia bonyolult, implementálása költséges és a központi állomásról a redundáns állomásra való áttérés nagyon időigényes. Ezért a CAN protokoll a decentralizált buszvezérlést valósítja meg. Minden nagyobb kommunikációs mechanizmus - ideértve a buszhozzáférés vezérlést is - többszörözve van megvalósítva a rendszerben, mivel csak így lehet a kommunikációs rendszer rendelkezésre állásának nagy követelményét kielégíteni.

Az adatátviteli kérések kezelése fontosságuk sorrendjében történik a rendszer egészére nézve. Ez főleg túlterhelés esetén bizonyul hasznosnak. Valósidejű rendszerekben garantálhatók a kis egyedi késleltetési idők,

Az üzenetek keretformátumai

A CAN protokoll 2 keretformát támogat, melyek között az egyetlen lényeges különbség az azonosító (ID) hossza. A standard formtumú üzenetben ez 11 bit, a kiterjesztett formátumúban pedig 29 bit. A keretek 7 további mezőt tartalmaznak.

A standard formátumú üzenet a "start of frame" bittel kezdődik, ezt követi az "arbitration field", ami az azonosítót tartalmazza, és a "RTR" (remote transmission request) bit, ami azt jelzi, hogy az adott keret adat keret vagy adatot nem tartalmazó kérés keret-e. A "control field" az IDE (identifier extension) bitet tartalmazza, mely a standard és kiterjesztett formátum közül választ, 1 későbbi felhasználásra fenntartott bitet és - az utolsó 4 bitben - az adatmezőben levő adatbyte-ok számát. A "data field" 0-8 byte hosszú lehet és a "CRC field" követi, amit a keret a bithibák detektálására biztonsági ellenőrzésre használ. Az "ACK field" része az ACK slot (1 bit) és az ACK delimiter (1 recesszív bit). Az ACK slotban levő bit recesszív bitként kerül elküldésre, és domináns bittel azok a vevők írják felül, akik helyesen vették az adatot (pozitív nyugta). A korrekt üzeneteket a vevők az elfogadási teszttől függetlenül nyugtázzák. Az üzenet végét az "end of frame" mező jelzi. Az "Intermission" az egymást követő üzenetek közti minimális bitidőt adja meg. Ha egyik állomás sem jelentkezik hozzáférési igénnyel, a busz idle állapotban marad ("bus idle").


Az üzenet keret standard formátuma (2.0A CAN specifikáció)

Hibadetektálás és kijelzés

Más buszrendszerektől eltérően a CAN protokoll nem használ nyugtázó üzeneteket, hanem jelzi az előforduló hibákat. A CAN protokoll három mechanizmust implementál hibadetektálásra az üzenetek szintjén:
A CRC a keretben levő információt biztosítja redundáns ellenőrző bitek hozzáadásával az átvitel végén. A vevő ezeket a biteket újra kiszámolja a vett adatok alapján, és ellenőrzi, hogy megegyeznek-e. Ha nem egyeznek: CRC hiba lép fel.
Ez a mechanizmus az átvitt keret struktúráját ellenőrzi a mezők fix formátumának ismeretében. Az esetleges hibát "formátum hibának" nevezzük.
A vett keretet minden résztvevő pozitív nyugtán keresztül nyugtázza. Ha az adó nem kapj visszajelzést (ACK hiba), ez azt jelentheti, hogy olyan átviteli hiba lépett fel, amit csak a vevők detektálnak, az ACK mező meghibásodott, vagy nincsenek vevők.

A CAN protockoll implementálja a bit szintű hibadetektálás két mechanizmusát is:

Az adó fél hibadetektálási képességének alapja a busz jelzések monitorozása: minden adó állomás egyúttal monitorozza is a buszt, ezért érzékeli az elküldött és a vett bitek különbözőségét. Ez a globális és az adón belüli lokális hibák megbízható észlelését teszi lehetővé.
A bitek kódolásának ellenőrzése bit szinten történik. Az NRZ (non-return-to-zero) kódolás használatával garantálható a bitek kódolásának hatékonysága. A szinkronizációs élek bitbeszúrással generálódnak, ami azt jelenti, hogy 5 azonos bit után az adó 6.-nak egy komplementer bitet szúr be, amit a vevő eltávolít. Az ellenőrzés a beszúrási szabálynak megfelelően történik.

Ha legalább 1 állomás hibát detektál a fenti mechanizmusokkal, az aktuális átvitelt megszakítja egy "error flag" elküldésével. Ezzel elkerülhető, hogy más állomás esetleg elfogadja az üzenetet, és biztosítható az adatok konzisztenciája az egész hálózaton belül.

Miután a hibás üzenet átvitele megszakadt, az adó automatikusan újra megkísérli az átvitelt (automatikus ismétlés kérés). Ekkor ismét versengés támadhat a busz hozzáférés jogáért. Szabályként elfogadhatjuk, hogy az újraküldés a hiba detektálását követő max. 23 biten belül megkezdődik. Speciális esetekben a rendszer feléledési ideje 31 bitidő.

Bármennyire is hatékony ez az eljárás, egy meghibásodott állomás az összes üzenet átvitelét megszakíthatja, blokkolva az egész rendszert, ha nincs önellenőrzés. A CAN protokoll ezért tartalmaz egy mechanizmust a szórványosan előforduló és az állandó hibák megkülönböztetésére, és a hibás állomások beazonosítására.

Ez az állomások hibáinak statisztikai kimutatásából indul ki, kiegészítve az állomások saját hibáit felismerő mechanizmussal és egy olyan működési móddal, amikor a CAN hálózat többi részére nem gyakorol káros befolyást. Ezzel az állomás odáig is elmehet, hogy lekapcsolja magát a hálózatról.

A CAN protokoll adatainak megbízhatósága

A járműiparban használt automatizálási rendszerek igen nagy követelményeket támasztanak az adatátvitel megbízhatóságával szemben. A jármű teljes élettartama alatt nem kerülhet veszélybe a vezető az adatátvitel hibája miatt.

A célt elérjük, ha az adatok megbízhatósága elég nagy vagy a megmaradó hibavalószínűség elég kicsi. Busz rendszer esetén az adat megbízhatósága alatt az átviteli hibák felismerésének lehetőségét értjük. A megmaradó hibavalószínűség annak a valószínűsége, hogy az átviteli hiba detektálatlan marad. Ennek olyan kicsinek kell lennie, hogy a rendszer élettartama alatt várhatóan ne legyen ilyen esemény.


A megmaradó hibavalószínűség a bithiba valószínűség függvényében

A megmaradó hibavalószínűség kiszámításához fel kell mérni a potenciális hibalehetőségeket és az átviteli utat egy modellben kell leírni. Ha megállapítjuk a megmaradó hibavalószínűség bithiba valószínűségtől való függését 80-90 bit hosszú üzenetekre, akkor pl. egy 5-10 állomással rendelkező rendszer és 1/1000-es hibavalószínűség (1 hiba jut 1000 üzenetre) esetén, a maximális bithiba valószínűség kb. 0.02, aminek 10-13 megmaradó hibavalószínűség felel meg. Erre alapozva adott CAN hálózat esetén kiszámíthatjuk a detektálhatatlan üzenetek maximális számát.

Például ha egy CAN hálózat Mbps-os adatátviteli sebességgel működik a busz kapacitásának átlagosan 50%-os kihasználtsága mellett, 4000 órás teljes élettartamot és 80 bites átlagos üzenethosszt véve az összes üzenet száma 9 * 1010-re adódik. Ezért a detektálatlan átviteli hibák statisztikai száma legfeljebb 10-2. Másképpen fogalmazva: 8 órás napi működtetést alapul véve az év 365 napján működő rendszerben ha a hibavalószínűség 0.7, minden ezer évben 1 detektálatlan hiba fordul elő (statisztikai átlag)

Kiterjesztett CAN üzenetformátum

A SAE "Truck and Bus" albizottsága szabványosította a jeleket, üzenetekt és a különböző adatátviteli sebességek melletti átviteli protokollokat. Nyilvánvalóvá vált, hogy az ilyen jellegű szabványosítást könnyebb megvalósítani, ha az azonosítási mező hosszabb.

Ezért a CAN protokollt kiterjesztették a 29 bites azonosító mező bevezetésével. Ez egyrészt a már létező 11 bites azonosítót (alap ID), másrészt a 18 bites bővítményt tartalmazza. Így a CAN protokoll két üzenetformátumot támogat: a StandardCAN-t (2.0A verzió) és az ExtendedCAN-t (2.0B verzió). Mivel együttesen használják ugyanazt a buszt, meghatározták, hogy melyiknek magasabb a prioritása abban az esetben, amikor különböző formátumú, de azonos alap azonosítójú üzenetek ütköznek. A standard formátumú üzenet prioritása mindig nagyobb, mint a kiterjesztett formátumú üzeneté.

A kiterjesztett formátumú üzeneteket támogató CAN vezérlők standard formátumú üzenetek forgalmazására is képesek. Ha olyan CAN vezérlőt is használunk, amelyik csak a standard formátumot támogatja (2.0A verzió), csak a standard üzenetet használhatjuk az egész hálózatban. A kiterjesztett formátumú üzenet ebben az esetben félreérthető lenne. Vannak azonban olyan CAN vezérlők is, melyek annak ellenére, hogy csak a standard formátumot támogatják, felismerik a kiterjesztett formátumú üzeneteket és figyelmen kívül hagyják azokat (2.0B passzív verzió).

A standard és kiterjesztett formátumú üzenetet az IDE bit (Identifier Extension Bit) különbözteti meg, mely standard formátumú üzenet esetén dominánsan, kiterjesztett formátum esetén pedig recesszíven kerül átvitelre.

Az RTR bit attól függően domináns vagy recesszív, hogy adat átvitelére vagy egy állomástól kért speciális üzenet beolvasására használjuk. A standard formátum RTR bitjének helyén az SRR (substitute remote request) bit kerül átvitelre a kiterjesztett formátumú keretek esetén. Az SRR bit mindig recesszív, biztosítandó, hogy azonos alap azonosítók esetén a standard formátumú keretnek legyen magasabb a prioritása a busz allokációs folyamatban.

A standard formátumtól eltérően a kiterjesztett formátumban az IDE bitet követi a 18 bites azonosító bővítmény, az RTR bit és a reserved bit (r1).

Az összes többi mező azonos a standard formátuméval.


Az üzenet keret kiterjesztett formátuma (2.0B CAN specifikáció)

A CAN protokoll megvalósításai

A kommunikáció minden CAN protokollban azonos. There are differences, however, with regard to the extent to which the implementation takes over message transmission from the microcontrollers which follow it in the circuit.

CAN controller with intermediate buffer

CAN controllers with intermediate buffer (formerly called basicCAN chips) have implemented as hardware the logic necessary to create and verify the bitstream according to protocol. However, the administration of data sets to be sent and received, acceptance filtering in particular, is carried out to only a limited extent by the CAN controller.

Typically, CAN controllers with intermediate buffer have two reception and one transmission buffer. The 8-bit code and mask registers allow a limited acceptance filtering (8 MSB of the identifier). Suitable choice of these register values allows groups of identifiers or in borderline cases all IDs to be selected. If more than the 8 ID-MSBs are necessary to differentiate between messages then the microcontroller following the CAN controller in the circuit must complement acceptance filtering by software. CAN controllers with intermediate buffer may place a strain on the micro-controller with the acceptance filtering, but they require only a small chip area and can therefore be produced at lower cost. In principle they can accept all objects in a CAN network.

CAN controller with object storage

CAN objects consist mainly of three components: identifier, data length code and the actual useful data. CAN controllers with object storage (formerly called FullCAN) function like CAN controllers with intermediate buffers, but also administer certain objects. Where there are several simultaneous requests they determine, for example, which object is to be transmitted first. They also carry out acceptance filtering for incoming objects. The interface to the following microcontroller corresponds to a RAM. Data to be transmitted are written into the appropriate RAM area, data received are read out correspondingly. The microcontroller has to administer only a few bits (e. g. transmission request).

CAN controllers with object storage are designed to take as much strain as possible off the local microcontroller. These CAN controllers require a greater chip area, however, and are therefore more expensive. In addition to this, they can only administer a limited number of chips.

CAN controllers are now available which combine both principles of implementation. They have object storage, at least one of which is designed as an intermediate buffer. For this reason there is no longer any point in differentiating between basicCAN and fullCAN.

CAN slave controllers for I/O functions

As well as CAN controllers which support all functions of the CAN protocol there are also CAN chips which do not require a following microcontroller. These CAN chips are called SLIO (serial link I/O). CAN chips are CAN slaves and have to be administered by a CAN master.

A fizikai CAN összeköttetés

The data rates (up to 1 Mbit/s) necessitate a sufficiently steep pulse slope, which can be implemented only by using power elements. A number of physical connections are basically possible. However, the users and manufacturers group CAN in Automation recommends the use of driver circuits in accordance with ISO 11898. Integrated driver chips in accordance with ISO 11898 are available from several companies (Bosch, Philips, Siliconix and Texas Instruments). The international users and manufacturers group (CiA) also specifies several mechanical connections (cable and connectors).

Physical CAN Connection according to ISO 11898

Vissza a tudásbázishoz