Mondeo 4 Simulator for testing IPC on bench

IPC - Instrument cluster panels (like Convers+)
DGAlexandru
Pro
Posts: 364
Joined: 04 Aug 2019, 22:47

Mondeo 4 Simulator for testing IPC on bench

Post by DGAlexandru »

Hi,

as I already written here: viewtopic.php?f=25&t=230, I want to start the development of a Mondeo 4 Simulator for bench testing the Convers+ IPC (it will also work for Level1 and Level 3 IPC).
The version for Focus 3 looks like this:
Image

If you want to contribute to this development you can help by sharing with me (here on this thread, or by PM) your decoded CAN messages that are needed by IPC in order to work & show the needed data.

For now this application will only be available to those who share!
tomy75
Active member
Posts: 112
Joined: 13 Jun 2019, 21:57

Re: Mondeo 4 Simulator for testing IPC on bench

Post by tomy75 »

Can you make it for S-max/mondeo?

Thenx
DGAlexandru
Pro
Posts: 364
Joined: 04 Aug 2019, 22:47

Re: Mondeo 4 Simulator for testing IPC on bench

Post by DGAlexandru »

Well, yes, this is the idea with this topic - to develop such a tool :)

The current CAN database with known "signals" can be found here: viewtopic.php?f=10&t=155
DGAlexandru
Pro
Posts: 364
Joined: 04 Aug 2019, 22:47

Re: Mondeo 4 Simulator for testing IPC on bench

Post by DGAlexandru »

As I got some PMs regarding how you can help, I encourage you to read the topic from here: viewtopic.php?f=10&t=155

I don't need full CAN dumps. We need to decode each CAN ID from MS-CAN. This can be done with any tool that can monitor only one CAN ID (apply filters) and then start playing with buttons, switches, settings, speed, gears.. and so on and see if something changes accordingly on that CAN ID.
Some of them are easy to be found - we already know the CAN ID for that module and the byte position and also you can do it while car is not moving, some are a little bit harder as there is a gateway between (ex: data from PCM (HS CAN) goes through BCM in order to be put on MS CAN) or they require to have a moving car or that "status" is mixed with other data in the same byte (ignition key position and brake pedal status).

First 8 CAN IDs from that Google Sheet are transformed to something like this in order to be used in the application:

Code: Select all

void MSCAN_010_BCM (CanController *controller, uint_fast8_t wipers) {
    //50ms
    //"0x00 = wiper off (home), 0x19 = wiper in motion, 0x09 = wipers in home position(?)
    //Byte change order seems to be: 0x00 => 0x08 (0b0000 1000) => 0x09 (0b0000 1001) => 0x10 (0b0001 0000) => 0x19 (0b0001 1001)"
    std::vector<uint_fast8_t> data = {wipers, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00};
    controller->SendCAN(0x010, data);
}

void MSCAN_018_IPC (CanController *controller) {
    //200ms
    //PDC active, no obstacle
    //light is on
    std::vector<uint_fast8_t> data = {0x03, 0xFC, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00};
    controller->SendCAN(0x018, data);
}

void MSCAN_024_EATC (CanController *controller) {
    //200ms
    std::vector<uint_fast8_t> data = {0x00, 0x00, 0xFF, 0x00, 0x3F, 0xFF, 0xFF, 0xFF};
    controller->SendCAN(0x024, data);
}

void MSCAN_028_PDM (CanController *controller) {
    //ms
    std::vector<uint_fast8_t> data = {0x00, 0x81, 0x10, 0x00, 0x48, 0xFF, 0xFF, 0xFF};
    controller->SendCAN(0x028, data);
}

void MSCAN_030_IPC (CanController *controller) {
    //100ms
    //Audio/Navigationsystem: D0 on = x4, off = x6
    std::vector<uint_fast8_t> data = {0x84, 0x00, 0x00, 0x00, 0x0B, 0x0F, 0x07, 0x1E};
    controller->SendCAN(0x030, data);
}

void MSCAN_035_RFA (CanController *controller) {
    //60ms
    //static?
    std::vector<uint_fast8_t> data = {0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
    controller->SendCAN(0x035, data);
}

void MSCAN_038_DDM (CanController *controller, uint_fast8_t wdf, uint_fast8_t wdr_f, uint_fast8_t wpfr) {
    //60.000 / 220 / 40ms
    //D5 Windows driver, front - wdf
    //D6 Windows driver, rear - wdr_f
    //D7 Front passenger window regulator - wpfr
    //D7 Passenger window regulator, rear - wpfr
    //D6 Electrically folding exterior mirrors - wdr_f
    std::vector<uint_fast8_t> data = {0x00, 0x00, 0x00, 0x00, 0x00, wdf, wdr_f, wpfr};
    controller->SendCAN(0x038, data);
}

void MSCAN_040_BCM (CanController *controller, uint_fast8_t light, uint_fast8_t dist, uint_fast8_t washer) {
    //50ms
    //D0 Light switch position: AutoOff =F8 / AutoParking =F9 / AutoLow =FA / AutoAuto =FB; Desk-BCM 10, 11, 12, 13
    //D1 Distance covered (odometer in the IPC) - A value that increases between each transmission interval; increases the trip and total odometer. The difference serves as an indicator for the distance covered and can be max. 200 (0xC8). Larger values ​​are ignored as implausible
    //D3 Washer fluid: low = 0x80; !low = 0x00
    std::vector<uint_fast8_t> data = {light, dist, 0x00, washer, 0x00, 0x01, 0xB0, 0x27};
    controller->SendCAN(0x040, data);
}
We won't need all of them for IPC - for example the ones that are sent by IPC itself - ID 018 or 030, but I'm still going to define them in the application, maybe in the future will be useful for something else :)
amplified
Active member
Posts: 108
Joined: 09 Feb 2020, 14:19

Re: Mondeo 4 Simulator for testing IPC on bench

Post by amplified »

Which ones you already have so we can search for others?

Here some for lights:

Engine malfunction light off: - just light off
ID DLC
220 8 00 00 04 00 00 00 00 00

Engine malfunction light and message off:

220 8 80 00 2C 00 00 e2 88

Abs light off ( in id for ignition :) )

048 8 0f

Esp light off:

048 8 00 0f

Esp off (esp off -> light on like in car)

048 8 00 f0

Airbag light off:

120 8 00 00 00 02 00 48 00 00
DGAlexandru
Pro
Posts: 364
Joined: 04 Aug 2019, 22:47

Re: Mondeo 4 Simulator for testing IPC on bench

Post by DGAlexandru »

I have the ones that are present in this Google Sheet: https://docs.google.com/spreadsheets/d/ ... sp=sharing ..
amplified
Active member
Posts: 108
Joined: 09 Feb 2020, 14:19

Re: Mondeo 4 Simulator for testing IPC on bench

Post by amplified »

Dpf full
220 8 00 A0 0A

Battery light off
220 8 01


headlight indicators - just the leds on cluster

high beam -
06b 8 00 00 00 00 00 0C 00 00

rear fogs

06b 8 00 00 D0

front fogs

06b 8 00 00 00 00 00 00 D0 00


Alarm sound:

08b 8 00 00 00 0C
DGAlexandru
Pro
Posts: 364
Joined: 04 Aug 2019, 22:47

Re: Mondeo 4 Simulator for testing IPC on bench

Post by DGAlexandru »

Playing a little bit with the interface :P until I get enough decoded CAN messages and start linking the corresponding actions to the buttons.
I'll need to find a way to have PreFaceLift and FaceLift on the same graphical interface.. maybe just a switch that changes the needed CAN IDs and also adds extra buttons or just enables them for FaceLift version (like icon for Steering Assist).
Mondeo4IPCCtrl.jpg
You do not have the required permissions to view the files attached to this post.
amplified
Active member
Posts: 108
Joined: 09 Feb 2020, 14:19

Re: Mondeo 4 Simulator for testing IPC on bench

Post by amplified »

Looks pretty nice!

for auto trans maybe add drive gears also, one byte in can ID changes them from sport to drive
tomy75
Active member
Posts: 112
Joined: 13 Jun 2019, 21:57

Re: Mondeo 4 Simulator for testing IPC on bench

Post by tomy75 »

Super

Can you make it setup time?
Post Reply