CAN-Bus ECU simulator. Only part of the SAE J1979 are implemented. Uses CAN-Bus demo board as hardware platform. http://skpang.co.uk/catalog/canbus-ecu-simulator-with-lpc1768-module-p-1400.html Useful for testing diagnostic tools.
Fork of ecu_reader by
ecu_simulator.h@6:41a4ad385daa, 2014-12-30 (annotated)
- Committer:
- pangsk
- Date:
- Tue Dec 30 10:10:02 2014 +0000
- Revision:
- 6:41a4ad385daa
- Parent:
- ecu_reader.h@0:908be729d27c
Initial version.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pangsk | 6:41a4ad385daa | 1 | #ifndef ECU_SIMULATOR_H |
pangsk | 6:41a4ad385daa | 2 | #define ECU_SIMULATOR_H |
pangsk | 0:908be729d27c | 3 | |
pangsk | 0:908be729d27c | 4 | #define CANSPEED_125 125000 // CAN speed at 125 kbps |
pangsk | 0:908be729d27c | 5 | #define CANSPEED_250 250000 // CAN speed at 250 kbps |
pangsk | 0:908be729d27c | 6 | #define CANSPEED_500 500000 // CAN speed at 500 kbps |
pangsk | 0:908be729d27c | 7 | |
pangsk | 0:908be729d27c | 8 | /* Details from http://en.wikipedia.org/wiki/OBD-II_PIDs */ |
pangsk | 6:41a4ad385daa | 9 | #define MODE1 0x01 //Show current data |
pangsk | 6:41a4ad385daa | 10 | #define MODE2 0x02 //Show freeze frame data |
pangsk | 6:41a4ad385daa | 11 | #define MODE3 0x03 //Show stored Diagnostic Trouble Codes |
pangsk | 6:41a4ad385daa | 12 | #define MODE4 0x04 //Clear Diagnostic Trouble Codes and stored values |
pangsk | 6:41a4ad385daa | 13 | |
pangsk | 6:41a4ad385daa | 14 | #define PID_SUPPORTED 0x00 |
pangsk | 6:41a4ad385daa | 15 | #define MONITOR_STATUS 0x01 |
pangsk | 0:908be729d27c | 16 | #define ENGINE_COOLANT_TEMP 0x05 |
pangsk | 0:908be729d27c | 17 | #define ENGINE_RPM 0x0C |
pangsk | 0:908be729d27c | 18 | #define VEHICLE_SPEED 0x0D |
pangsk | 0:908be729d27c | 19 | #define MAF_SENSOR 0x10 |
pangsk | 0:908be729d27c | 20 | #define THROTTLE 0x11 |
pangsk | 0:908be729d27c | 21 | #define O2_VOLTAGE 0x14 |
pangsk | 0:908be729d27c | 22 | |
pangsk | 6:41a4ad385daa | 23 | #define MODE1_RESPONSE 0x41 |
pangsk | 6:41a4ad385daa | 24 | #define MODE3_RESPONSE 0x43 |
pangsk | 6:41a4ad385daa | 25 | #define MODE4_RESPONSE 0x44 |
pangsk | 0:908be729d27c | 26 | #define PID_REQUEST 0x7DF |
pangsk | 0:908be729d27c | 27 | #define PID_REPLY 0x7E8 |
pangsk | 0:908be729d27c | 28 | |
pangsk | 6:41a4ad385daa | 29 | typedef struct{ |
pangsk | 6:41a4ad385daa | 30 | |
pangsk | 6:41a4ad385daa | 31 | unsigned char coolant_temp; |
pangsk | 6:41a4ad385daa | 32 | unsigned int engine_rpm; |
pangsk | 6:41a4ad385daa | 33 | unsigned char throttle_position; |
pangsk | 6:41a4ad385daa | 34 | unsigned char vehicle_speed; |
pangsk | 6:41a4ad385daa | 35 | unsigned int maf_airflow; |
pangsk | 6:41a4ad385daa | 36 | unsigned int o2_voltage; |
pangsk | 6:41a4ad385daa | 37 | unsigned char dtc; |
pangsk | 6:41a4ad385daa | 38 | |
pangsk | 6:41a4ad385daa | 39 | }ecu_t; |
pangsk | 6:41a4ad385daa | 40 | |
pangsk | 6:41a4ad385daa | 41 | extern ecu_t ecu; |
pangsk | 6:41a4ad385daa | 42 | |
pangsk | 0:908be729d27c | 43 | namespace mbed { |
pangsk | 0:908be729d27c | 44 | |
pangsk | 6:41a4ad385daa | 45 | class ecu_sim{ |
pangsk | 0:908be729d27c | 46 | |
pangsk | 6:41a4ad385daa | 47 | public: |
pangsk | 0:908be729d27c | 48 | |
pangsk | 6:41a4ad385daa | 49 | ecu_sim(int can_speed); |
pangsk | 6:41a4ad385daa | 50 | void canspeed(int can_speed); |
pangsk | 6:41a4ad385daa | 51 | unsigned char request(void); |
pangsk | 6:41a4ad385daa | 52 | |
pangsk | 6:41a4ad385daa | 53 | private: |
pangsk | 0:908be729d27c | 54 | |
pangsk | 6:41a4ad385daa | 55 | int i; |
pangsk | 6:41a4ad385daa | 56 | |
pangsk | 6:41a4ad385daa | 57 | }; |
pangsk | 6:41a4ad385daa | 58 | } |
pangsk | 0:908be729d27c | 59 | |
pangsk | 0:908be729d27c | 60 | |
pangsk | 0:908be729d27c | 61 | |
pangsk | 0:908be729d27c | 62 | #endif |