Ducati.ms - The Ultimate Ducati Forum banner
  • Hey Everyone! Enter your bike HERE to be a part of this months Bike of the Month Challenge!

1 - 20 of 57 Posts

·
Registered
Joined
·
88 Posts
Discussion Starter · #1 ·
Hi,

a few weeks ago Christian, the author of ScanST (Diagnostic ECU Marelli), approached me with questions concerning the 59M, as used in 2001-2004 Ducati ST4S, 800SS and1000SS.

While I have created XDFs covering almost 100% of the data for the 5AM for the One and Two Lambda BINs used in Guzzi CARC models, the 59M was out of scope as I don't have a bike with a 59M.

But, curiosity is a strong motivator, so I began looking into the hex file and used the XDF 1.28 (originally created by Beard, it seems) and the BIN 0130DC27 as starting point for analyzing the data. Using contextual information and same or similar values from the 5AM BINs I could again identify almost 100% of the data (tables/legends, scalars and flags). But context and likeness of values only carries so far, detailed knowledge of the values used in Ducs would be helpful in identifying parameters and their function.

WinOLS was used for the actual analysis and I've begun to transfer the parameters into an XDF (~20% done), validating the plausibility during the process and cross-referencing to the parameter offsets as used in Guzzi BINs. As these BINs are still being explored, cross-referencing would simplify later updates in the 59M XDF.

I'll finish the transfer and validation from WinOLS to the XDF and send it to those I assume to be interested - Christian Guipponi, Beard, PaulDaytona and Alain (TuneECU). But, for further development and verification the participation of owners of bikes using the 59M is required.

Now, coming to the question. Is there any interest in such a community effort?

Cheers
Meinolf
 

Attachments

·
Registered
Joined
·
151 Posts
Hi Meinolf,
I have a monster 900ie with iaw59 and i am working on a .xdf, and i am intrested on the topic.

At the moment i am trying to find the idle temperature correction (if any exist) and the accell enrichment table.

I've also found the idle advance table and idle advance temperature correction.

Can you attach your draft .xdf or the iaw5a xdf for reference?

I'm not very good with winols but i want to help if it is possible...
 

·
Premium Member
Joined
·
5,212 Posts
Meinolf

Let me start by saying I am not a computer wiz-kid. That said punch has been assisting me getting up to speed on all things ECU, I must cause him to drink heavily. I do own and work on a fair bit of bikes with 59Ecu's and am not afraid of of damaging one once in a while if they can be replaced for less than a kings ransom. I see the value in the future of having the ability to make changes to the Ecu's and I do have a simple dyno so I can test things without going to jail.

I am Busy this time of year so you will be best to Pm me and I will get you a better contact email address if you are interested. You will need to type slow and in a large font some times but I am happy to help in any way I can.
 

·
Registered
Joined
·
88 Posts
Discussion Starter · #4 · (Edited)
Hi,

that's cool.

Around 60-70% of the parameters are now included in the XDF. I use the following syntax in the parameter name

3A 3 F8 Legend 1x16 (97-991) ADC values Engine temp ->4C5FC:

Offset/Address: xx x xx

Generic "Table", "Legend", "Flag" or "Scalar" if the function is yet unknown. A more descriptive name if the function is known or suspected

AB x CD to describe the array (x/y-axis) size. No particular system, I tend to use the same order as in the Guzzi XDFs as it's easier to identify.

(Value or value range) in brackets. With a question mark at the end if either the values themselves or the value range differs significantly from the Guzzi BINs.

->xxxxxx is a pointer to the respective offset in the Guzzi One or Two Lambda BINs

Here's a link to the XDF (Beta1): https://drive.google.com/open?id=17NLoky_KAlK5F6I6eVOTUPq7MMW_18bM

And here's the BIN used: https://drive.google.com/open?id=1eDwyRDvqYl08LNNeZ0lthkvn_9Wo0God

I use WinOLS because I find it to be a good tool to identify structures during the initial stage, the ability to switch between signed/unsigned, Little/Big Endian, 8/16/32/64 and the like. It's not really needed by anybody else for this community effort, I guess. If you want to use it nevertheless, I recommend using the Version 3.85. With 4.02 a nagware screen was introduced which pops up every so often for 60s.

I'll update the above link to the XDF when an update is available. Usually several iterations, after all the parameters are included, are needed until the XDF is consistent and tidy. Until that time Category A is "59M 2003 Ducati ST4S,800SS,1000SS" and Category B is "Development". Only afterwards will I begin to use categories such as Fuel or Ignition, Tunable or Read only, ...


Cheers
Meinolf
 

·
Registered
Joined
·
88 Posts
Discussion Starter · #5 ·
Hi,

Hi Meinolf,
At the moment i am trying to find the idle temperature correction (if any exist) and the accell enrichment table.

I've also found the idle advance table and idle advance temperature correction.
I'm currently at offset 0x3A...., ignition tables and other parameters are in the area beginning at 0x3C6.... and not yet included in the XDF. There are two Idle advance tables, 1x32, rpm legend, value range 100-450 (divide by 10 to get degrees before TDC) at 0x3D09C and 0x3D0FC.

I doubt that a acceleration table similiar to the one used in the 15M/RC exists in the 59M code. It's certainly not in the 5AM code. I did find parameters in the "official" 5AM XDFs named "correction Throttle positive/negative movement", but could not validate on the 5AM ECU simulator that these tables and values therein had any connection to plus/minus enrichment with rapid throttle movements.

Cheers
Meinolf
 

·
Registered
Joined
·
88 Posts
Discussion Starter · #6 ·
Hi,

some questions. Do the Ducs using the 59M have:

- Fans? One or two?
- Lambda probe(s)?
- Which dashboard is used? Is it from Digitec?
- Do they have speed sensors at the wheel(s)?
- Do they have ABS? If so, is the speed signal fed into the ECU from the ABS module?
- Do they have a stepper motor for idle speed control?
- Do they have a fuel tank sensor?

Cheers
Meinolf
 

·
Registered
Joined
·
151 Posts
Hi,
I do some datalogging with scanm5x:
From idle to 4,9° tps it use the idle ignition table, from 5.0 to wot it use the main ignition table.
I haven't measured the actual advance angle but from the datalog seem that all ignition temperature corrections are disabled.

I am wondering if there are a separate temperature correction table for idle fuel injection...

Thanks for the xdf, this evening i will look at.

If you post the 5am version i can try to help the tranfer to the 59m

Davide
 

·
Premium Member
Joined
·
5,212 Posts
Meinolf

Fans? One or two?
= 1,2 or none the 749/999 used 2 fans as did the monster s4rs
- Lambda probe(s)?
= yes used on all models.

-
Which dashboard is used?
Is it from Digitec? + sorry not sure but I can check some.

-
Do they have speed sensors at the wheel(s)?
= Yes rear mostly for speedometer but as abs was added there would be more on say the st4s-ABS is probably a 59

-
Do they have ABS? If so, is the speed signal fed into the ECU from the ABS module?
= IIRC only the ST4s-abs had ABS during that time frame. These bikes used a speed sensor off the rear for the dash but I do not remember if they had 2 (one for dash and one for ABS) IIRC there was only one but I would not trust that without verifying.

- Do they have a stepper motor for idle speed control?
= Yes some did some did not. MTS had them but not on the 999 series.

- Do they have a fuel tank sensor?
= yes some had a simple light and a couple (ST series and MTS had a gauge.
 

·
Registered
Joined
·
151 Posts
Hi,

some questions. Do the Ducs using the 59M have:

- Fans? One or two?
- Lambda probe(s)?
- Which dashboard is used? Is it from Digitec?
- Do they have speed sensors at the wheel(s)?
- Do they have ABS? If so, is the speed signal fed into the ECU from the ABS module?
- Do they have a stepper motor for idle speed control?
- Do they have a fuel tank sensor?

Cheers
Meinolf
Mine is quite simple bike:
No fan, no lambda, no abs, no idle stepper, no speed sensor to the ecu (sensor on rear wheel connected only to the magneti marelli dashboard), no fuel tank sensor to the ecu ( only a reservoir lamp on the dashboard)

Anyway i think that it has some pins used on other bike (ms4) for lambdas, speed sensor and fans (2)

Davide

Edit

Attach of my bin and xdf
The xdf is derived from a m620..

https://www.dropbox.com/s/fep8raip2taj6st/59M_Monster 900.xdf?dl=0

https://www.dropbox.com/s/1ewg4ohg19lqwo6/M900 2002 stock.bin?dl=0
 

·
Registered
Joined
·
88 Posts
Discussion Starter · #10 ·

·
Registered
Joined
·
151 Posts
Hi,

Can you attach the bin file relative to the 5am xdf?

I quckly open the 59am, very good job.

I think that the ignition main table should start a couple o byte later xxxxxC instead of xxxxxxA, and the warmup time legend should be multiplied by 2 (fullscale=4000 instead of 2000)

Maybe later i will have more time to check it better.

There is any method to shift all the table adress to adapt for different ecu bin without correct every table with tunepro?

A little o.t. did you found the corrispondance of co trimmer to added millisecond? From my experiment 1 point of trimmer is about 22 to 24 microsecond

Thanks
 

·
Registered
Joined
·
49 Posts
Subscribed.

I have a 2003 Monster 800 if it helps. I have my OEM ecu .bin file here somewhere if anyone would like to see it.
 

·
Registered
Joined
·
88 Posts
Discussion Starter · #13 ·
HI Davide,

you are right, the main ignition starts at 0x3C69C. I'll collect any such comments and include them in the next Beta.

I don't understand "Can you attach the bin file relative to the 5am xdf?". Please clarify.

Re Warmup time legend.
The values are not time but number of (engine) revolutions since start. In the 15M/RC, with which I actually measured the correspondence between values and engine revolutions no factor was used. But, the max. std. value in the 15M/RC was 4000 revolutions. In the 5AM BINs the value decreased to 2000, so there might be a factor involved. I'll measure this on the 5AM ECU simulator.

Re CO trim value
No, I've neither found nor measured it. I'd assume that the logic is the same than with the 15M/RC and 5AM, namely that the injection values, including CO trim, are multiples of the clock frequency the CPU is running at. As I don't even know which CPU is used in the 59M or at which frequency it is driven, nothing I can contribute.

Cheers
Meinolf
 

·
Registered
Joined
·
88 Posts
Discussion Starter · #14 ·
Hi,

Subscribed.
I have a 2003 Monster 800 if it helps. I have my OEM ecu .bin file here somewhere if anyone would like to see it.
thanks for the offer.

In case I didn't make it clear, I have no vested interest in Duc BINs as such. Christian Guipponi's recent inquiry was the starting point. Constructing the 59M XDF was more of an exercise to see which code snippets and routines are consistently used by Marelli in the different ECU generations.

And as can be seen, there are plenty. So anybody with some time and persistence can reverse engineer based on a well documented XDF used in other manufacturer bikes.

Cheers
Meinolf
 

·
Registered
Joined
·
93 Posts
I have opened a few bin files from 999 with Tunerpro and meinolfs xdf, it seems to work!
It was just a quick check, using tables like FuelMain,IgnitionMainAdvance and other like Software,Drawing,Hardware--everything looks good.
A very good base,thank you very much,meinolf!
Best Regards
 

·
Registered
Joined
·
151 Posts
HI Davide,

you are right, the main ignition starts at 0x3C69C. I'll collect any such comments and include them in the next Beta.

I don't understand "Can you attach the bin file relative to the 5am xdf?". Please clarify.

Re Warmup time legend.
The values are not time but number of (engine) revolutions since start. In the 15M/RC, with which I actually measured the correspondence between values and engine revolutions no factor was used. But, the max. std. value in the 15M/RC was 4000 revolutions. In the 5AM BINs the value decreased to 2000, so there might be a factor involved. I'll measure this on the 5AM ECU simulator.

Re CO trim value
No, I've neither found nor measured it. I'd assume that the logic is the same than with the 15M/RC and 5AM, namely that the injection values, including CO trim, are multiples of the clock frequency the CPU is running at. As I don't even know which CPU is used in the 59M or at which frequency it is driven, nothing I can contribute.

Cheers
Meinolf
Hi Meinolf,

No problem for the 5am bin file, i found it in the ecu repository.

Warmup revolutions: i've never misured it, i think that are 4000 because i see a lot of xdf like that, but can be wrong...

Did you have a bench to test ecu off the bike?
Can be intresting to add 10 point of trimmer and see how the injection time change.
Also the ignition temperature compensation, from my datalog, seem to be disabled.
I dont know if it is actually disabled or if is the scanm5x that log the advance before the temperature correction was applied.

I open the bin file of my bike with the new xdf but there are a lot of difference.
I tryed to offsett all the adress but there are also some missing table or vector..

Davide

Edit: there are a lot of unknown tables and vectors that i can't help but i think that known ones are well done??
 

·
Registered
Joined
·
88 Posts
Discussion Starter · #17 ·
Hi Davide,

re Warmup legend max. value
Yes, the max. value varies from 2000-4000, dependent on which BIN you look at. At least in the 15M code, which I completely disassembled, I found no factor applied to the warmup legend values. But, this may different in the 59M/5AM code. In any case I found that the warmup function is not needed for more than ~1000 revolutions. In my modified V11 & Jackal BINs I either changed the legend values to max. 1000 or set the table values to zero,

re ECU simulator
Yes, I built ECU simulators, originally for the 15M/RC and about a year ago for the 5AM. It's described here: https://wildguzzi.com/forum/index.php?topic=93758.0

re CO trim
I haven't bothered actually measuring the equivalent time for a CO trim value of 1 on the 5AM for several reasons.
Firstly CO trim (and bypass valves) are adjustment crutches not needed when the direct values in the fuel tables can be changed. Both are really pre-GuzziDiag means of changing fuel mixture.
Secondly the 15M code contained the CO trim default value and a CO trim scale factor. I've found neither yet in the 5AM code and don't play with values (on my bikes) which I haven't fully understood.
Thirdly CO trim and bypass screws are constant values additions. CO trim (it's a signed integer) is a constant +/- injected fuel variation, bypass is a constant air adder. The respective impact is greatest at low main fuel values and decreases with increasing main fuel values. So the use is really restricted to low load areas.

On the 15M a main fuel value of 1 corresponded to 64μs, a CO trim value of 1 to 4,6 μs (with CO trim scale factor at 1). The main fuel duration is derived from the clocks in the HC11. Dividing 65.536 (2^16) of the TCNT register by 1024 (2^10) is equal to 64 (2^6) 64μs.

On the 5AM a main fuel value of 1 corresponds to 8,8μs.

re changing offset
In my experience simply changing offsets of a parameter won't really help you if the offsets are changed in a BIN. I mentioned WinOLS, which I use for the purpose of looking at the context and then trying to identify parameters in different BINs.

re parameters with unknown function
Yes, ~95% of the parameters are not understood, especially the scalars and flags are difficult to figure out. Most of them are likely to be housekeeping values used by the library routines of the program code.

Cheers
Meinolf
 

·
Registered
Joined
·
151 Posts
Hi, iaw59m use some mc68xxx, i have the exact part number and datasheet at home, i will confirm asap.

There is something i don't understand with the number you wrote:
With idle fuel about 2000 scanm5x read about 2.6ms (trimmer=0, warmup completed, 25°ambient, 80°C engine, 1000mbar) and so can't be 6,4us every 1 fuel point....at least in my ecu.
Maybe 1 point = 1us + 0,6ms of battery voltage compensation (14,7V)?

I agree with trimmer = poorman methods.
? I don't yet have an lm-2 an i have some low throttle issue.
E.g. if i found a lean spot at 4krpm, 10° i correct it with trimmer, than note the delta value.
When i arrive at home i mod the map accordingly at 4krpm, 10° and set the trimmer in the previous condition...?

Yes i know....very time consuming but at the moment I'm little out of budget...

Davide
 
1 - 20 of 57 Posts
Top