๐ ์ง๋จ ํต์ ํ๋กํ ์ฝ ์ด๋?
์ง๋จ ํต์ ์ ์๋์ฐจ ์ ์ด๊ธฐ์ ๊ณ ์ฅ์ ๋ฐ๋ฅธ ์ฌ๊ณ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ISO ๊ธฐ๋ฐ ํ์ค ํต์ ํ๋กํ ์ฝ์ด๋ค.
์ง๋จ ํต์ ์ ํ์ํ ์ฅ์น๋ฅผ ์ฐจ๋์ ECU ๋๋ OBD ๋จ์ ์ฐ๊ฒฐํ์ฌ ๊ณตํต์ ์ผ๋ก ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํ ํ๋ค.
- ECU ๋ฆฌํ๋ก๊ทธ๋๋ฐ : ์ง๋จํต์ ์ ํตํด ECU์ ์๋ก์ด ์ํํธ์จ์ด๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ์ค๋ฅ ์์ ๋ฐ ์ฑ๋ฅ ๊ฐ์
- ECU ์ ๋ณด ํ๋ : ECU์ ๋ค์ํ ์ ๋ณด๋ฅผ ํ๋
- ์ค๋ฅ ์ง๋จ : ์ค๋ฅ ์ฝ๋๋ฅผ ์ฝ๊ณ ํด์ํ์ฌ ์ฐจ๋์ ๋ฌธ์ ๋ฅผ ์ง๋จ
๐ ์ง๋จ ํต์ ํ๋กํ ์ฝ ์ข ๋ฅ
์ง๋จ ํต์ ํ๋กํ ์ฝ์ ์๋ 3๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ์ญํ ์ ์๋ก ๋น์ทํ๋ ์ค์ ์ฌํญ์ ๋ฐ๋ผ ์กฐ๊ธ์ฉ ๋ค๋ฅด๋ฉฐ
3๊ฐ์ง ๋ชจ๋ ๋ฒ์ ์๋ฌด์ฌํญ์ด ์๋ค.
1) UDS(Unified Diagnostic Services)
- ์ฐจ๋ ์ค์๋ ์ง๋จ์ ์ค์ ์ ๋๋ฉฐ ECU์ ์ง๋จ ์ฅ์น ๊ฐ์ ํต์ ์ ์ค์ ์ ๋๋ ์ง๋จ ํ๋กํ ์ฝ
- ISO 14229์ ๋ฐ๋ผ ์ ์
2) OBD(On-Board Diagnostics)
- ๋ฐฐ์ถ ๊ฐ์ค ๊ด๋ จ ์ง๋จ์ ์ค์ ์ ๋๋ฉฐ ๊ณ ์ฅ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์๊ฐ ์ ๊ฒ์ ์ค์ ์ ๋๋ ์ง๋จ ํ๋กํ ์ฝ
- ISO 15765์ ๋ฐ๋ผ ์ ์
3) XCP(eXtended Controller Parameterization)
- ์ฐจ๋์ ECU์ ์ ์ฅ๋ ์ค๋ฅ ์ฝ๋๋ฅผ ์ฝ๊ณ ํด์ํจ์ ์ค์ ์ ๋๋ ์ง๋จ ํ๋กํ ์ฝ
- ์ฐจ๋์ ECU์ ์ง๋จ ์ฅ์น ๊ฐ์ ๋ฐ์ดํฐ ํต์ ์ ์ํ ํ์ฅ ๊ฐ๋ฅํ ๋คํธ์ํฌ ์์ฑ์ ์ง์
- low bandwidth delay๋ real-time fault analysis๊ฐ ์๊ตฌ๋๋ onboard ์ง๋จ ์์คํ
์ ์ฌ์ฉ๋จ
- ISO 22765์ ๋ฐ๋ผ ์ ์
๐ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ
ECU์ ์ง์ ์ฐ๊ฒฐ
- ECU์ ์ปค๋ฅํฐ์ ์ง๋จ ์ฅ๋น๋ฅผ ์ฐ๊ฒฐ
- ์ง๋จ ์ฅ์น๋ฅผ ์ผ๊ณ , ECU์ ํต์ ์์
- ์ํ๋ ๊ธฐ๋ฅ์ ์ ํ ํ์ฌ ์ํ(e.g. ์ ๋ณด ํ๋, ECU๋ฅผ ๋ฆฌํ๋ก๊ทธ๋๋ฐ ๋ฑ)
ECU์ ์ง์ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ์ฅ์ ์ด ์๋ค.
- ๋ ๋น ๋ฅด๊ณ ์ ํํ ๋ฐ์ดํฐ ํ๋
์ง์ ์ฐ๊ฒฐ ์ ์ง๋จ ์ฅ์น๊ฐ ECU์ ๋ฐ์ดํฐ์ ์ง์ ์ก์ธ์คํ ์ ์์ผ๋ฏ๋ก ๋ ๋น ๋ฅด๊ณ ์ ํํ ๋ฐ์ดํฐ ํ๋์ด ๊ฐ๋ฅ - ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉ
์ง์ ์ฐ๊ฒฐ ์ ECU์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉ ๊ฐ๋ฅ
OBD ๋จ์ ์ฐ๊ฒฐ
- ์ฐจ๋์ OBD ๋จ์ ์ง๋จ ์ฅ๋น๋ฅผ ์ฐ๊ฒฐ
- ์ง๋จ ์ฅ์น๋ฅผ ์ผ๊ณ , ECU์ ํต์ ์์
- ์ํ๋ ๊ธฐ๋ฅ์ ์ ํ ํ์ฌ ์ํ(e.g. ์ ๋ณด ํ๋, ECU๋ฅผ ๋ฆฌํ๋ก๊ทธ๋๋ฐ ๋ฑ)
OBD ๋จ์ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ์ฅ์ ์ด ์๋ค.
- ํธ๋ฆฌํ ์ฌ์ฉ
OBD ๋จ์ ์ฐจ๋์ ์ด์ ์ ์๋์ ์์นํ๊ณ ์์ด, ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ - ๋ชจ๋ ์ฐจ๋์์ ์ฌ์ฉ ๊ฐ๋ฅ
OBD ๋จ์ ๋ชจ๋ ์ฐจ๋์ ํ์ฌ๋์ด ์์ผ๋ฏ๋ก, ๋ชจ๋ ์ฐจ๋์์ UDS๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ UDS์ ๊ธฐ๋ฅ
- ECU ๋ฆฌํ๋ก๊ทธ๋๋ฐ(ํ๋ก๊ทธ๋จ Flash)
- ๋ฐ์ดํฐ ์์ฒญ ๋ฐ ์ฐ๊ธฐ
- ํ ์คํธ์ ๊ฒฐ๊ณผ ๊ฐ ๋ฐํ
- ๋ฉ๋ชจ๋ฆฌ ํด๋ฆฌ์ด๋ง
- ์ค์ผ์ฅด ์ฌ์ค์
- ์ปค๋ฎค๋์ผ์ด์ ๋งค๋์ง๋จผํธ(e.g ์ธ์ ์ปจํธ๋กค, ๋๋ฐ์ด์ค ๋ฆฌ์ , ๋ณด์์ ๊ทผ, ํต์ ์ปจํธ๋กค)
- ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ ๋๋ ID ์ฝ๊ณ ์ฐ๊ธฐ
- ์ ์ฅ ๋ฐ์ดํฐ ๊ด๋ฆฌ(์ง๋จ์ ๋ณด ๋ถ๋ฌ์ค๊ธฐ ๋ฐ ์ญ์ )
- I/O ์ปจํธ๋กค ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ์ ์กฐ์
๐ UDS ๋์ ๊ณผ์
1) ๋ฌผ๋ฆฌ์ ์ฐ๊ฒฐ
ECU์ ์ฐ๊ฒฐํ๊ฑฐ๋ OBD ๋จ์ ์ฐ๊ฒฐ
2) ๊ถํ(Session) ์์ฒญ
์ง๋จ ์ฅ์น๋ ECU์ ์ฐ๊ฒฐ๋๋ฉด, ECU๋ก๋ถํฐ ๊ถํ(Session)์ ์์ฒญ
3) ์ฃผ๋ฌธ (SID ์
๋ ฅ)
์ง๋จ ์ฅ์น๋ ECU์ ๋ํ ์ ๋ณด๋ฅผ ํ๋ํ๊ฑฐ๋ ECU๋ฅผ ์ง๋จํ๊ธฐ ์ํด ์ฃผ๋ฌธ(์์ฒญ์ ๋ํ๋ด๋ ์ฝ๋)์ ์
๋ ฅํจ
์ด๋ฅผ ํตํด ECU ์ง๋จ ๋๋ ์
๋ฐ์ดํธ ๊ฐ์ ๋์์ ์ํํจ
4) ์๋ต ํ์
ECU๋ ์ง๋จ ์ฅ์น์ ์ฃผ๋ฌธ์ ๋ํ ์๋ต์ ํ์ ํจ ์ฑ๊ณต์ด๋ฉด ๊ธ์ ์๋ต ์คํจ๋ฉด ๋ถ์ ์๋ต ํ์
๐ UDS Message Structure
ECU์ Request๋ฅผ ๋ณด๋ด๊ฑฐ๋ Response๋ฅผ ๋ฐ์ ๋ Message๋ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
PCI ~ Padding ๊น์ง ์ด 8 Bytes์ ํฌ๊ธฐ, CAN ID๋ 29bits์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ค.
Request
Reponse(Negative)
CAN ID
์ฒซ 11๋นํธ์๋ ECU์ ์ฃผ์ ๊ฐ์ด ๋ค์ด๊ฐ๊ณ ๋๋จธ์ง 18๋นํธ์๋ ECU์ ๋ํ ์์ฒญ์ธ SID์ ์์ฒญ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ค.
ECU์ ์์ฒญ์ ๋ณด๋ด๋, ์๋ต์ ๋ฐ๋์ ๋ฐ๋ผ ๊ตฌ๋ถ๋๋ฉฐ Response, Request์ ๋ฐ๋ฅธ ์ค๋ช
์ ์๋์ ๊ฐ๋ค.
(e.g. CAN ID 0x701 ์ผ ๋ ECU ์ฃผ์๊ฐ = CAN ID & 0x1FFFFFFF = 0x00000001, SID = 0x701 >> 22 = 0x00)
PCI
CAN ๋ฒ์ค์์ UDS๋ฅผ ์์ฒญํ ๋ ์ ์กํ๋ Frame์ ์ฑ๊ฒฉ๊ณผ ์ ์กํ Payload์ ๊ธธ์ด๋ฅผ ์๋ ค์ฃผ๋ ์์ญ
UDS SID & Session
UDS Session์ UDS ํ๋กํ ์ฝ์์ ECU์ ์ง๋จ ์ฅ์น ๊ฐ์ ํต์ ์ ์ํ ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ด๋ค.
Session | ๊ถํ | ๊ธฐ๋ฅ |
Default Session | ECU์ ์ฐ๊ฒฐ๋ง ํ๋ฉด ๊ฐ๋ฅ | ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ (e.g. ๋ฐ์ดํฐ ์ฝ๊ธฐ, ECU ๋ฆฌ์ ) |
Extended Session | ECU๋ก๋ถํฐ ๊ถํ์ ๋ฐ์์ผ ํจ | Default Session ์ธ ์ถ๊ฐ ๊ธฐ๋ฅ (e.g.๊ธฐ๋ณธ์ ์ธ ์ํํธ์จ์ด ์ ๋ฐ์ดํธ) |
Safety System Session | ECU๋ก๋ถํฐ ํน๋ณํ ๊ถํ์ ๋ฐ์์ผ ํจ | ์์ ์์คํ ๊ด๋ฆฌ ๊ธฐ๋ฅ |
Programming Session | ECU๋ก๋ถํฐ ํน๋ณํ ๊ถํ์ ๋ฐ์์ผ ํจ | ECU ์ํํธ์จ์ด ์ ๋ฐ์ดํธ ๊ธฐ๋ฅ |
UDS SID๋ ECU์ ์ง๋จ ์ฅ์น ๊ฐ์ ํต์ ์ ์ํ ํน์ UDS ์๋น์ค Request, Response์ ๋ํ ID ์ด๋ค.
(โป Response ID = Request ID + 0x40)
SID(hex) | Service Name | Cvt | Default Session |
Extended Session |
Programming Session |
Safety Session |
10 | DiagnosticSessionControl | M | O | O | O | O |
11 | EcuReset | M | O | O | ||
14 | ClearDiagnosticInformation | M | O | |||
19 | ReadDTCInformation | M | O | O | ||
22 | ReadDataByIdentifier | M | O | O | O | O |
27 | SecurityAccess | C | O | O | O | |
28 | CommunicationControl | M | O | |||
2A | ReadDataByPeriodicIdentifier | U | O | |||
2E | WriteDataByIdentifier | C | O | O | O | |
2F | InputOutputControlByIdentifier | U | O | |||
31 | RoutineControl | C | O | O | O | |
34 | RequestDownload | C | O | |||
36 | TransferData | C | O | |||
37 | RequestTransferExit | C | O | |||
3E | TesterPresent | M | O | O | O | O |
85 | ControlDTCSetting | M | O | O |
Sub Function Byte
ECU์ ๋ํ ์์ฒญ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ํ๋ SID๋ ECU์ ๋ํ ์์ฒญ์ ์ข
๋ฅ๋ฅผ ๋ํ๋ธ๋ค๋ฉด Sub Function Byte๋
SID์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ํ๋ธ๋ค.
์ผ๋ถ UDS ์์ฒญ ํ๋ ์์์ ์ฌ์ฉ๋๋ฉฐ, ์ ํ์ ์ด๋ฏ๋ก ์ฌ์ฉ๋์ง ์๋ ID๋ค๋ ์๋ค.
* ์ฒซ ๋นํธ(7 bit) – SuppressPosRspMsgIndicationBit
(โป ECU์ Response๊ฐ Positive์ธ์ง ๋ช
์ํ๋ ๋นํธ๋ก, 0-False, Positive /1-True, not send Positive)
* ๋๋จธ์ง ๋นํธ(6~1bit) – Sub-Function parameters
(โป ํด๋น ์ง๋จ ์๋น์ค์ ๋ํ ํน์ ํ๋ผ๋ฏธํฐ ๊ฐ)
Request Data Parameters
ECU์ ์์ฒญํ๋ ์ ๋ณด์ ๋ํ ๋งค๊ฐ๋ณ์(์์ฒญ ์ ํ, ์์ฒญ ๋ฒ์, ์์ฒญ ๋์ ๋ฐ์ดํฐ) ํ๋
Padding
CAN ๋ฉ์์ง์ ๊ธธ์ด๊ฐ 8๋ฐ์ดํธ ๋ฏธ๋ง์ผ ๋ ๋จ์ ๊ณต๊ฐ์ ์ฑ์ฐ๊ธฐ ์ํ ํ๋(0xAA)
๐ Flash Reprogramming
ECU์ ํ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ก์ด ํ์จ์ด๋ฅผ ์
๋ฐ์ดํธํ๋ ํ๋ก์ธ์ค๋ก Programming Session์ ํด๋น๋จ
ํ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์๋์ ๊ฐ๋ค.
- ๋นํ๋ฐ์ฑ: Flash ๋ฉ๋ชจ๋ฆฌ๋ ์ ์์ด ๊บผ์ ธ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ง๋จ ๋ฐ๋ผ์, ECU๊ฐ ์ข
๋ฃ๋๋๋ผ๋
ECU์ ์ด์ ์ฒด์ ์ ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ง๋ ์์ ์ ์ - ์ฌ๊ธฐ๋ก ๊ฐ๋ฅ: Flash ๋ฉ๋ชจ๋ฆฌ๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ฐ๋ฉด์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ ์ ์์ ๋ฐ๋ผ์,
ECU์ ํ์จ์ด๋ฅผ ์ ๋ฐ์ดํธ์ ์ฉ์ดํจ - ์ ๋ ด: Flash ๋ฉ๋ชจ๋ฆฌ๋ ๋ค๋ฅธ ์ ํ์ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ์ ๋ ดํ์ฌ ๋จ๊ฐ๋ฅผ ๋ฎ์ถ ์ ์์
๐ Flash Boot Loader
Flash Boot Loader๋ ECU์ Flash ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ECU๊ฐ ๋ถํ
๋ ๋ ๊ฐ์ฅ ์ฒ์ ์คํ๋๋
ํ๋ก๊ทธ๋จ์ผ๋ก, ECU์ ์ด์ ์ฒด์ ์ ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด์ ์คํํ๋ ์ญํ ์ ํ๋ค.
[์ฐธ๊ณ ]
https://nvdungx.github.io/unified-diagnostic-protocol-overview/
'embedded' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[device] CAN Gateway ์ด๋ก ์ ๋ฆฌ (0) | 2023.10.26 |
---|---|
[protocol] CAN ํต์ ์ด๋ก ์ ๋ฆฌ (0) | 2023.10.14 |
[stm32] Bluetooth ์ด๋ก ๋ฐ ์ค์ต (0) | 2023.10.11 |
[stm32] RTOS ์ค์ต (0) | 2023.09.18 |
[stm32] RTOS ์ด๋ก ์ ๋ฆฌ (0) | 2023.09.11 |