Good to see you putting your thoughts out there young Cam! :-)
walkercam wrote:One better may be to have the ecu accept some form of handshake where the datalogger/pc/whatever will tell the ecu what variables it wants to be sent and in what order.
I intend to offer several modes of data logging :-) Handshake = request/response I guess.
- Basic fixed - Request/Response
- Basic fixed - Async continunous
- Configurable - Request (with definition)/Response
- Configurable - Request (definition from flash)/Response
- Configurable - Async continuous (definition from flash)
The key thing here is that the configurable one will include ALL possible fields. The fields are grouped into types such that a whole block can be excluded based on a single bit in the meta mask. Then for each included block there will be another mask that excludes particular fields on a bit by bit basis. In this way you could have a tiny UBER fast datalog by excluding most blocks and some fields from the remaining one, OR, absolutely everything available and anywhere in between.
If the ecu doesn't receive any handshake then it should just spit out a generic datalog packet with the basic stuff as the people above have already suggested.
This is the async modes above. They would be configurable to be on or not though as the EMS will perform slightly better not logging.
Somewhere i have the Autronic datalog packet structure which i can dig out if you want? What i can tell you is that its totally fixed, it sends the same stuff every time and is not configurable.
Yes, please do, I'd be interested to see exactly what a commercial offering sends out :-) Doing fixed makes sense for a lot of reasons. MS is the same. I've thought of a way to do it configurably though, so why not? The trouble with fixed is you have to strike a compromise between fast and complete. With configurable you get just what you need and maximise the bandwidth.
I've also got parallel send/receive working (or I think I do) so we should be able to max the 115200bps connection out in async mode. Divide by 9 to get bytes per second. The look at the header overhead for your packet size. Finally, consider some % dead time that will occur because of the engine running side task ;-)
Out of curiosity what do you expect the maximum rate for datalog transmission to be?
Packet size dependent, I think our dead rate should be quite low so something around 70 - 80% of the link speed at a wild guess.
Fred.