Какво е I-Bus? [Отговор]
Модератори: Ilko Ivanov, mad_presley, Технически модератори
9 мнения
• Страница 1 от 1
- Gemar
- младши ентусиаст
-
- Мнения: 615
- Регистриран на: 10.02.2007
- Местоположение: София
- Пол: Мъж
- Кара: '98 E39 M52B20
Какво е I-Bus? [Отговор]
IBUS шината е измислена от БМВ и представлява така наречения Entertainement Serial Bus базиранa на протокола ISO 9141 и K-Bus. Дизайна на мрежа от този протокол представлява шина по една жица (single wire bus) на 12V. I-Bus е втора K-Bus шина в автомобила, която обслужва "мултимедията" по автомобила. Тя няма директна връзка с K-Bus шината и не знае за нейното съществуване - отделена е физически от останалите модули като Airbags, ASC/DSC и прочее. I-Bus се грижи за комуникацията между радио, навигация, телефон, CD, управление от волан и т.н.
I-Bus е шина с една жица, което означава, че по една жица се изпращат и получават данни. Физическия слой на шината представлява отворен колектор "изтеглян" на 12V от шината. Един бит се предава когато се "свали" на "маса" шината за кратко време. Това е точно на опаки на много цифрови сигнализации, където нормалното напрежение на шината е 0V и се изтегня на 12V за да се предаде бит. Настройките за серийна комуникация по шината са 9600 bps, 8 data bits, Even parity, 1 stop bit.
Структура на пакетите на I-Bus е следната:
- Id на пишещото устройство
- Дължина на пакета
- Id на устройството за което е съобщението
- Данни
- XOR Checksum за валидиране на цялото съобщение
Един IBUS пакет в 16-тичен код представлява това:
18 0A 68 39 00 09 00 3F 00 05 01 71
където 18 е устройството, което "пише" по шината, 0А е дължината на оставащата част от съобщението (10 байта), 68 е кода на "получателя" на съобщението, 39 00 09 00 3F 00 05 01 е самото съобщение и 71 е checksum-а за да се валидира цялото съобщение.
Модулите за които не е предназначено съобщението ще го игнорират.
Как се извършва синхронизацията на съобщенията по шината или иначе казано - как модулите не пишат един върху друг така че да се смесват съобщения?
По спецификация модулите трябва да слушат за "тишина" по шината около 10ms преди да започнат да "пишат" тяхното си съобщение. По този начин се изчакват. Отделно тишината за която слушат в канала е различна при различните модули иначе ще започнат да пишат в един и същи момент след като последното съобщение е предадено. Затова има едно условно разделение на модулите по приоритет. Най-приоритетните слушат за 1.5ms тишина и започват да пишат, тези със среден приоритет чакат около 3.5ms тишина, а най-нископриоритетните пишат след поне 10ms "тишина". Какво става обаче когато 2 високоприоритетни модула започнат да пишат (ако случайно се случи вероятността е малка, но не изключена)? Тук вече се делегират съобщенията по старшия (първия) байт. Най-високите байтове имат най-висок приоритет. C8 адреса е съставан от следните битове: 11001000. Той е с най-висок приоритет, а устройство с ID байт 3B е съставен от битове 00111011, то е с по-нисък приоритет от адрес C8 и ще обясня защо. И така, да кажем, че устройство C8 и 3B (C8 е телефона, а 3B е модула на навигацията) започнат да пишат по едно и също време - модула на навигацията (3B) ще "види", че шината е "свалена" на 0V (по-горе споменах, че ниския бит е на 12V, а високия бит е на 0V), защото модула C8 вече е започнал да пише старшия си бит и ще се оттегли докато се появи нова "тишина" в канала и си изпрати съобщението. Също така модулите "четат" какво са "написали" по шината и ако им се "счупи" съобщението поради някакви външни причини (смущение по шината, друг объркан модул се намесил по средата и прочее) ще си препратят съобщението наново в подходящото време.
Предаването на данни по I-Bus шината може да достигне скорост от 20KBit/sec.
I-Bus е шина с една жица, което означава, че по една жица се изпращат и получават данни. Физическия слой на шината представлява отворен колектор "изтеглян" на 12V от шината. Един бит се предава когато се "свали" на "маса" шината за кратко време. Това е точно на опаки на много цифрови сигнализации, където нормалното напрежение на шината е 0V и се изтегня на 12V за да се предаде бит. Настройките за серийна комуникация по шината са 9600 bps, 8 data bits, Even parity, 1 stop bit.
Структура на пакетите на I-Bus е следната:
- Id на пишещото устройство
- Дължина на пакета
- Id на устройството за което е съобщението
- Данни
- XOR Checksum за валидиране на цялото съобщение
Един IBUS пакет в 16-тичен код представлява това:
18 0A 68 39 00 09 00 3F 00 05 01 71
където 18 е устройството, което "пише" по шината, 0А е дължината на оставащата част от съобщението (10 байта), 68 е кода на "получателя" на съобщението, 39 00 09 00 3F 00 05 01 е самото съобщение и 71 е checksum-а за да се валидира цялото съобщение.
Модулите за които не е предназначено съобщението ще го игнорират.
Как се извършва синхронизацията на съобщенията по шината или иначе казано - как модулите не пишат един върху друг така че да се смесват съобщения?
По спецификация модулите трябва да слушат за "тишина" по шината около 10ms преди да започнат да "пишат" тяхното си съобщение. По този начин се изчакват. Отделно тишината за която слушат в канала е различна при различните модули иначе ще започнат да пишат в един и същи момент след като последното съобщение е предадено. Затова има едно условно разделение на модулите по приоритет. Най-приоритетните слушат за 1.5ms тишина и започват да пишат, тези със среден приоритет чакат около 3.5ms тишина, а най-нископриоритетните пишат след поне 10ms "тишина". Какво става обаче когато 2 високоприоритетни модула започнат да пишат (ако случайно се случи вероятността е малка, но не изключена)? Тук вече се делегират съобщенията по старшия (първия) байт. Най-високите байтове имат най-висок приоритет. C8 адреса е съставан от следните битове: 11001000. Той е с най-висок приоритет, а устройство с ID байт 3B е съставен от битове 00111011, то е с по-нисък приоритет от адрес C8 и ще обясня защо. И така, да кажем, че устройство C8 и 3B (C8 е телефона, а 3B е модула на навигацията) започнат да пишат по едно и също време - модула на навигацията (3B) ще "види", че шината е "свалена" на 0V (по-горе споменах, че ниския бит е на 12V, а високия бит е на 0V), защото модула C8 вече е започнал да пише старшия си бит и ще се оттегли докато се появи нова "тишина" в канала и си изпрати съобщението. Също така модулите "четат" какво са "написали" по шината и ако им се "счупи" съобщението поради някакви външни причини (смущение по шината, друг объркан модул се намесил по средата и прочее) ще си препратят съобщението наново в подходящото време.
Предаването на данни по I-Bus шината може да достигне скорост от 20KBit/sec.
- bulletspeed
- кандидат ентусиаст
-
- Мнения: 168
- Регистриран на: 23.01.2008
- Местоположение: София
- Пол: Мъж
- Кара: e39 540IA m62b44 e36 320i m50b20
- Мечтае да кара: m1
- sadex5
- ентусиаст
-
- Мнения: 1200
- Регистриран на: 26.09.2006
- Местоположение: NEW YORK-Empire state
- Пол: Мъж
- Кара: X5 2003 e39 540
Re: Какво е I-Bus? [Отговор]
Пускам им линка за тези които искат да прочетат повече
http://web.comhem.se/mulle2/IBUSInsideDRAFTREV5.pdf
Тази формула която даваш за ИБУС пакета, в някой случай се използва фазова инверсия, като например за телефона, и формата тогава е по дълъг с един байт. Ама това е за маняци вече.. Похвално колега за това ч си го намерил и постнал
http://web.comhem.se/mulle2/IBUSInsideDRAFTREV5.pdf
Тази формула която даваш за ИБУС пакета, в някой случай се използва фазова инверсия, като например за телефона, и формата тогава е по дълъг с един байт. Ама това е за маняци вече.. Похвално колега за това ч си го намерил и постнал
- boregepco
- Потребител
-
- Мнения: 33
- Регистриран на: 3.03.2011
- Местоположение: София
- Пол: Мъж
- Кара: Х5 - Е53
Re: Какво е I-Bus? [Отговор]
Е тая тема сега трябва внимателно да развием.
Предлагам да си направим база с работещи съобщения.
И тъй като съм сигурен, че ще се пълни и със спам - нека се проверяват и проверените да са в един пост.
Не е сложно, но...
Предлагам да си направим база с работещи съобщения.
И тъй като съм сигурен, че ще се пълни и със спам - нека се проверяват и проверените да са в един пост.
Не е сложно, но...
- pkaramitev
- кандидат ентусиаст
-
- Мнения: 166
- Регистриран на: 13.09.2010
- Местоположение: Sofia
- Пол: Мъж
- Кара: 528 на газчица...
- Мечтае да кара: МиГ-29
Re: Какво е I-Bus? [Отговор]
Много полезна тема,защото винаги съм се чудел за техническото и обияснение на тази "магия" I-Bus
Но за обикновен софтуерен невежа като мен,началото беше обещаващ,после премина в "китайски" език за мен!
Поздравявам автора,защото ще е много полезно за хората които разбират!
Но за обикновен софтуерен невежа като мен,началото беше обещаващ,после премина в "китайски" език за мен!

Поздравявам автора,защото ще е много полезно за хората които разбират!

- sadex5
- ентусиаст
-
- Мнения: 1200
- Регистриран на: 26.09.2006
- Местоположение: NEW YORK-Empire state
- Пол: Мъж
- Кара: X5 2003 e39 540
Re: Какво е I-Bus? [Отговор]
Той автора не е автор, ама момчето е синтезирало инфото....Макар че на практика няма кой знае какво практическо приложение, то са си готови програмки за генериране на ключовете, или препрограмиране ако се наложи, но евала !
- Gemar
- младши ентусиаст
-
- Мнения: 615
- Регистриран на: 10.02.2007
- Местоположение: София
- Пол: Мъж
- Кара: '98 E39 M52B20
Re: Какво е I-Bus? [Отговор]
Информацията не е само от документа, който колегата sadex пусна, а е синтезирано наистина от редица източници и най-вече ме подтикна да го напиша, защото аз самия от дълго време не съм задълбавал и го позабравям. Голяма част от информацията идва от умрялата Yahoo група hacktheibus, където потребителите масово се оплакват, че не могат да се сдобият с права да четат (явно защото модераторите отдавна не я поддържат), а аз там съм чел дълго време постовете. Опитах се да я синтезирам на кратко. Ако има интерес ще развием темата, разбира се.
Иначе sadex е прав - има чипове като Melexis TH3133, които поддържат протокола и там само си пишете и четете от буфера, докато чипа се грижи да спазва спецификацията на протокола. Но в доста случай хората сами си правят чипове и е хубаво да се знае как да се реализира.
Иначе sadex е прав - има чипове като Melexis TH3133, които поддържат протокола и там само си пишете и четете от буфера, докато чипа се грижи да спазва спецификацията на протокола. Но в доста случай хората сами си правят чипове и е хубаво да се знае как да се реализира.
- totopz
- младши ентусиаст
-
- Мнения: 338
- Регистриран на: 22.06.2009
- Местоположение: Пазарджик
- Кара: Ford Fiesta 1.25i
- Мечтае да кара: A6 2.5 TDI
Re: Какво е I-Bus? [Отговор]
Информацията е много хубава и полезна. Доколкото се рових излезна, че в България човек трудно би си намерил Melexis TH3133 или ако поръча от вън ще е излезне доста солен. Така, че с информацията, която Gemar е написал може много да помогне на някой който се опита да се закачи по някаква причина към iBus-а.
- sadex5
- ентусиаст
-
- Мнения: 1200
- Регистриран на: 26.09.2006
- Местоположение: NEW YORK-Empire state
- Пол: Мъж
- Кара: X5 2003 e39 540
Re: Какво е I-Bus? [Отговор]
http://www.reslers.de/IBUS/
Междудругото малко е заблуда че Мелексиса е панацеята на ИБУСА
Която и да е схема за четене на К-лайн става. Нивата са си стандартните 12 волтови. Даже има случай и Мелексиса не поддържа ИБУС, зависи от варианта му. Винаги може да си обърнеш сигнала от К линията в TTL сигнал (TxD RxD)
Руснаците много отдавна си направиха адаптери, и си ползват IBUSServiceRR на Делфи..
Пък това не важи за е46, там няма ИБУС, има К-бус
Междудругото малко е заблуда че Мелексиса е панацеята на ИБУСА

Руснаците много отдавна си направиха адаптери, и си ползват IBUSServiceRR на Делфи..
Пък това не важи за е46, там няма ИБУС, има К-бус

9 мнения
• Страница 1 от 1
Кой е на линия
Потребители разглеждащи този форум: Bing [Bot]