CAN bus diagnostic tool for an electric van
Build a workshop diagnostic tool for an EV's CAN bus: write the DBC, simulate the battery and inverter ECUs, decode live signals with timeout checks, and read and clear fault codes over UDS on ISO-TP, all on a virtual bus.
Industry project · for Rheinwerk E-Transporter GmbH, a Cologne company converting diesel delivery vans to electric, with 40 vans in service
Rheinwerk converts diesel delivery vans to battery-electric drive. Each van has a battery management system and a motor inverter from different suppliers, talking on a 500 kbit/s CAN bus with 11-bit identifiers. Its 40 vans are now in service with three partner workshops. When a van shows a warning light, the mechanic connects a generic CAN adapter, sees a wall of hexadecimal frames and phones the engineering team. Last month that cost two vans four days off the road each.
The service manager wants a simple diagnostic tool a trained mechanic can use: - decode live signals from the BMS and inverter, such as pack voltage, current, state of charge, cell temperature extremes, motor speed and inverter temperature, from a DBC file; - warn when a message stops arriving, when a signal is outside its plausible range, or when a rolling counter or checksum is wrong; - read stored fault codes and clear them using UDS (ISO 14229) over ISO-TP (ISO 15765-2), and read identifiers such as the VIN and software version; - log a session to a file that engineering can replay later.
You will write the requirements and the signal list, build the DBC, write ECU simulators that publish realistic traffic and answer diagnostic requests, write the live monitor and the UDS client, and validate the tool against a fault-injection plan. Everything runs on a laptop with python-can's virtual bus or a Linux virtual CAN interface. A USB-CAN adapter is optional and not needed for any task.
Done looks like a repository with the DBC, simulators, the tool and tests, a validation report showing that every injected fault is detected, and a two-page workshop guide a mechanic can follow.
Git repo with DBC, ECU simulators, monitor, UDS client and tests + validation report + two-page workshop guide
Stack: python-can, cantools, can-isotp and udsoncan (Python), Linux SocketCAN vcan or python-can virtual bus, Wireshark or candump (optional)
- Correct DBC and bus design20
The DBC encodes every signal with correct start bit, length, byte order, scaling, offset and range, and bus load is calculated and under 40%.
- Realistic simulation15
ECU simulators send periodic messages at the specified rates with counters and checksums, and answer UDS requests like a real ECU.
- Reliable monitoring25
The monitor decodes all signals and detects every timeout, out-of-range value, counter error and checksum error in the fault-injection plan.
- Working diagnostics25
The UDS client reads and clears DTCs, reads DIDs, handles negative responses and multi-frame transfers, and runs within a session with tester present.
- Validation and guide15
The validation report traces every requirement to a passing test, and the workshop guide lets a mechanic use the tool without engineering help.
Pass 60% · Merit 75% · Distinction 90%
Engineering Students
Diploma, B.Tech, B.E., BCA, MCA, or M.Tech students seeking practical experience.
Aspiring Developers
Developers who want to build proof-of-work capstone projects for tech resumes.
Job Seekers
Graduates looking for AI-evaluated code review & verified industry credentials.