VW T6 Custom PID codes for DPF

Averaging RPM x time => number of strokes
Averaging injection quantity x strokes => fuel amount in grams
Just have been using average diesel density 830 g/l to get litres. I do recognize this possibly could be improved... but also density of diesel varies (e.g. summer/winter). Also the injection quantity is calculated value as there is no actual fuel metering capability in our engine.

I see, thanks!

Well, the temperature coefficient is not necessarily that great a factor, I checked one of my logs - 14.2° minimum, 31.2° maximum fuel temperature over a pretty long drive. According to https://www.ic.gc.ca/eic/site/mc-mc.nsf/vwapj/VCF_Diesel.pdf/$file/VCF_Diesel.pdf the volume would change ~1.5% over that temperature change.

Code:
                                                                                              unit  samples     ts_0      ts_n            sp_0            sp_n          sp_min          sp_max          sp_avg          sp_med       sp_std
CAN3.advanced_measuring_values_engine.IDE07807_fuel_temperature                                  C    12480   2.4627 5871.0881         14.5000         30.2000         14.2000         31.2000         24.9799         26.2000       3.9993

Certainly there are uncertainties but I would guess also there are some also in ECUs internal calculation so fairly challenging to get exact match. Anyways, it has been quite satisfying to get different values to align with each others.

It's of course great if that way of calculating matches reality well enough! :thumbsup:


Specifically in these engines the value of IDE00472 (mean injection quantity) is coarse - full milligrams, no decimals as in IDE09340 (x.xx mg/str). Especially frustrating when engine is idling - just sits at 6 or 7 mg/str - so potentially some 15-20% error right there.

Good point. So for more accuracy use IDE09340 when rpm < 1k and IDE00472 otherwise? ;)

Nah just kidding... at least for my purposes detecting change over time is more important than absolute correctness. I think basically any of these metrics would serve that purpose just fine.
 
Well, the temperature coefficient is not necessarily that great a factor, I checked one of my logs - 14.2° minimum, 31.2° maximum fuel temperature over a pretty long drive. According to https://www.ic.gc.ca/eic/site/mc-mc.nsf/vwapj/VCF_Diesel.pdf/$file/VCF_Diesel.pdf the volume would change ~1.5% over that temperature change.

I thought about this little bit more and realized in fact expansion is irrelevant. Like, if you fill up the tank in 20° you basically would like to know the consumption (as litres) in 20° as well. It does not really matter what the volume was throughout the process, consumed milligrams are the same anyway.
 
Last edited:
It's always the main injection first, and then 1-2 bursts with fixed timing (at +2...+14 degrees) to keep up cylinder pressure with minimal noise.

Found these two gems from SSP 820433 - The EA288 Diesel Engine Family. While this describes the earlier engine version I think many bits of information might still be applicable. Such a shame SSP 564 is not as comprehensive as this older one… there’s a lot of interesting details.

#1
IMG_4110.jpeg
#2
IMG_4111.jpeg
 
Finally, engine blockmap of mine shows the warning level for oil is at 66mm:

Code:
IDE00152,Oil warning threshold,66, mm

A second look at oil fill level - after writing above, I realised the warning threshold IDE00152 is a moving target. Apparently ECU software is aware of the fill level buffing up with the temperature and raises the threshold level accordingly. It can be seen the difference between moving average of oil fill level and the threshold stays relatively constant.

This should give a good basis if I'm later going to set up some automated alerts around this.

1694455325879.png
 
Super geek mode :geek:

I just figured out how I can combine querying multivalued measuring values together with other data. Specifically, these three:
  • IDE04035,exh.gas recirc. temperature,EGRTemp 11/12:186/112 °C / EGRTemp 21/22:---/--- °C,
  • IDE04003,Charge air temperature sensor,B1S1/B1S2:80/42, °C
  • IDE04090,Exhaust temperature bank 1,S1/S2/S3/S4: / 202/168/172/148 °C,
So what? Well, these consume only one PID each from querying but give back two or four values. So in total I get 8 values out for the price of three and can therefore squeeze little bit more efficiency out :whistle:

Actually especially the exhaust temperatures are pretty nice as the individual values that are otherwise available as IDE05386 - IDE05389 are model values - I think they are sort of calculated expectations rather than actual measurements.

Bit of idling in my driveway:
Code:
                                                                                              unit  count    ts_0     ts_n           val_0           val_n             min             max             avg          median      std_dev
CAN3.advanced_measuring_values_engine.IDE04035_egr_temperature_1                                 C   1150  2.2162 482.9780        134.0000        196.0000        134.0000        197.0000        183.0243        188.0000      11.3635
CAN3.advanced_measuring_values_engine.IDE04035_egr_temperature_2                                 C   1150  2.2162 482.9780         77.0000        130.0000         77.0000        130.0000        116.0270        121.0000      14.7401
CAN3.advanced_measuring_values_engine.IDE04003_charge_air_temperature_1                          C   1150  2.2162 482.9780         77.0000         81.0000         76.0000         81.0000         77.8278         77.0000       1.6914
CAN3.advanced_measuring_values_engine.IDE04003_charge_air_temperature_2                          C   1150  2.2162 482.9780         74.0000         69.0000         69.0000         74.0000         70.2417         70.0000       1.2233
CAN3.advanced_measuring_values_engine.IDE04090_exhaust_temperature_1                             C   1150  2.2162 482.9780        163.2000        211.5000        163.2000        212.7000        200.0531        203.5000       8.6250
CAN3.advanced_measuring_values_engine.IDE04090_exhaust_temperature_2                             C   1150  2.2162 482.9780         82.7000        161.2000         82.7000        161.2000        135.8639        140.6000      19.4471
CAN3.advanced_measuring_values_engine.IDE04090_exhaust_temperature_3                             C   1150  2.2162 482.9780         65.0000        146.7000         65.0000        146.7000        116.2203        119.3500      20.6080
CAN3.advanced_measuring_values_engine.IDE04090_exhaust_temperature_4                             C   1150  2.2162 482.9780         55.0000        100.5000         55.0000        114.5000        101.4833        108.7000      17.1422
 
IDE04090,Exhaust temperature bank 1,S1/S2/S3/S4: / 202/168/172/148 °C,
I think exactly those sensors are available as separate items from
IDE07712 Turbocharger 1 turbine input: temp. sensor 1: B1: raw value​
IDE07714 Turbocharger 1 turbine output: temp. sensor 1: B1: raw value​
IDE07716 Particulate filter input: temp. sensor 1: bank 1: raw value​
IDE07718 Particulate filter output: temp. sensor 1: bank 1: raw value​
 
I think exactly those sensors are available as separate items from
IDE07712 Turbocharger 1 turbine input: temp. sensor 1: B1: raw value​
IDE07714 Turbocharger 1 turbine output: temp. sensor 1: B1: raw value​
IDE07716 Particulate filter input: temp. sensor 1: bank 1: raw value​
IDE07718 Particulate filter output: temp. sensor 1: bank 1: raw value​
Thanks!

Yes, that sounds right, there's not *that* many sensors around after all
 
Thanks!

Yes, that sounds right, there's not *that* many sensors around after all

Actually I had IDE07712 and IDE07714 (I've called them turbo hot side input/output) in the same recording and they don't really match. Ofc I might well have some scaling errors. Hmm I need to double check a bit.

Code:
                                                                                              unit  count    ts_0     ts_n           val_0           val_n             min             max             avg          median      std_dev
CAN3.advanced_measuring_values_engine.IDE04090_exhaust_temperature_1                             C   1150  2.2162 482.9780        163.2000        211.5000        163.2000        212.7000        200.0531        203.5000       8.6250
CAN3.advanced_measuring_values_engine.IDE07712_turbo1_hot_input_temperature                      C   1131  2.4564 482.8182        124.0000        171.5000        124.0000        172.7000        160.0700        163.5000       8.6097

CAN3.advanced_measuring_values_engine.IDE04090_exhaust_temperature_2                             C   1150  2.2162 482.9780         82.7000        161.2000         82.7000        161.2000        135.8639        140.6000      19.4471
CAN3.advanced_measuring_values_engine.IDE07714_turbo1_hot_output_temperature                     C   1159  2.3763 483.1381         43.0000        121.2000         43.0000        121.2000         96.2899        101.0000      19.2381

EDIT: Hah! I see there's 40° offset in between, so indeed a DBC scaling error
 
Last edited:
Head in the clouds

There's still mysteries in the CAN data and things to improve in getting the data out for processing. But, it's a game of diminishing returns and it's time, at least for the time being, to shift the focus to the automation - my ultimate goal is to get automated reports on collected CANEdge data and ideally at least some sort of indicators when the data changes in some way that might require attention.

So, early stages but I've been planning of how to approach the whole automation part. Here's a breakdown of my thoughts so far - by no means is this complete but I kind of know I can get the data processing pipeline to work well enough with reasonable cost this way.

1694629774712.png

1. Trip completions

I want to process the data only as complete trips or legs of them, from ignition to shutting down the engine. For this purpose, I've set up CANEdge to split data files on 10M (about 4 minutes engine running) files. This means the CANEdge is transferring data out frequently and not as huge files - and what is stored on the device is usually just a relatively small amount.

The interesting feature of MF4 files and CANEdge is that the files are really split down to exact byte amount. That means each file up to the last on the trip are exactly same size. This forms the basis for trip completion detection - if I see a file that's not exactly the specified split size I know it's the final piece of a trip that has completed.

A slightly annoying feature is that the last segment of any trip is only transferred to Amazon S3 when the next trip begins. This is because power is cut from CANEdge abruptly when engine is cut off. Working around this issue would be possible but would require lot of work with power timers and having some extra logic on the car to get the last file out of CANEdge and transferred to S3 - imho not really worth the effort, at least not right now.

S3 has a feature which enables triggering a Lambda function when new file is created. Amazon Lambda functions are just pieces of code that get executed when something happens - almost like any computer program but there's no permanent storage so anything worth storing has to be stored elsewhere and nothing can be remembered from execution to execution. There's other limits as well, for example Lambda functions can last maximum of 15 minutes. So, any kind of heavy processing is not a good fit for Lambda functions but they are good for gluing several systems together and acting on external events. Also Lambda functions are billed down to a millisecond of run time and cost absolutely nothing when nothing happens. I'm going to use Lambda functions to detect trip completions and triggering the actual trip processing only for complete trips and only when trips are of reasonable length - I would not necessarily want a report every time I just move the car ten meters.

2. Trip completion queue

When a trip completion is detected, Lambda will write a message to something called SQS (Simple Queue Service). This is yet another Amazon service and is targeted for maintaining an ordered list of messages. The advantage of queue is that messages can sit there waiting for processing some weeks in the worst case - if the next step in processing pipeline is not ready to take up the task immediately for some reason the queue will remember all messages that are not yet processed. Hence it separates different processing stages and allows them operate when thy are up for it. Since the trip completions are rare kind of an event, less than 10 per day, the queue will not cost almost anything.

3. Data processing

The heavy lifting of data processing will be done in Amazon EC2. This is more like traditional computer environment in the cloud - you can have any of Linux, Mac or Windows and a persistent disk to which install software on and hold files just like any laptop or desktop. EC2 is billed by the minute it's running, and the disk is billed by all the time it exists storing data - whether in use or not. Since I will have a limited number of trips in any day and I know each trip processing will take less than half an hour EC2 will be quite economical. The computing time itself will cost probably less than 0.10USD per running hour depending how many and how efficient CPU's I will end up using.

The Lambda function will run the EC2 instance after sending trip completion message to the SQS queue. The EC2 instance will be built so that upon boot, it will look into SQS queue and pick up the next message for processing. If none is found, it will just shut itself down. The message will basically be just a name of a folder in S3 - using this the EC2 instance can load all the data files of the trip from the S3 to the local disk for processing. Then the actual processing will be just running the data files through my Python script and DBC file like I have done manually in all the previous posts in this thread - as a result I will get summaries of all signals and possibly CSV files in case I want to automate deep diving into some specific signals more closely.

I will set up a database to the EC2 instance, to which I will store all the summaries of all the signals. This is actually a large part of the reason for selecting EC2 rather than using Amazon native databases and Lambda functions - Amazon databases usually run 24/7 and are quite costly. As I need the database only few times a day it's way more economical to run it only when data processing is taking place, and shut it off with EC2 instance when not needed.

The database will really be the heart of all of my data processing. Obviously it will be quite empty to start with but with time, all the signal summaries pile up and pretty soon I will be able to move on to building some actual trend analysis and KPIs. For example: "What did my DPF differential pressure, on this trip, look like compared to average during last month? Or same month a year ago?"

4. Notifications

Finally, from each trip I want to send or store some kind of a summary. I'm thinking now just a simple email with all of the signal summaries, and maybe some calculated metrics such as estimated fuel consumption or something like that. Anyway, something that let's me know my pipeline is working it's way through and allows for easy glance on the overall state of the collected metrics. Obviously it would be great if it could highlight some anomalies as well... but let's see where this goes.

Whew.
 
Last edited:
Damn, more issues or bugs :rolleyes:

Today I tried to record everything EGR with a dedicated special configuration, 16 PIDs @12.5Hz - including crank, stop start, regen etc. 16 pids are queried as two 8-pid group requests. All good, except that one of my groups produced 41k samples, which is pretty much spot on 80ms interval for the trip duration. However, only 5.3k samples from the other group.

Argh. There's always something... well, it's not all wasted, just not as high quality as I would like the dataset to be.

On another note I constructed this so that the status PIDs IDE10313 and ENG125971 will be represented as separate signals per bit, kind of like VCDS IDE10313-MAS*. The slight obstacle here is that it's quite hard to figure out what the individual bits mean :laugh:. The status bits can be useful even without knowing the meaning if they can be correlated to some other events.


Code:
                                                                               unit   count   ts_0      ts_n    val_0    val_n       min       max       avg    median  std_dev
CAN3.advanced_measuring_values_engine.ENG107874_obd_egr_position                  %    5357 2.0772 3290.2958   1.1700   1.1700    0.0000   99.4500   27.9865   28.0800  28.4327
CAN3.advanced_measuring_values_engine.IDE00420_regen_current_duration             s   41140 2.1173 3294.0151   0.0000   0.0000    0.0000  958.0000  139.2605    0.0000 263.7072
CAN3.advanced_measuring_values_engine.IDE07377_egr_mass_flow                   kg/h    5357 2.0772 3290.2958   0.0000   0.0000    0.0000  133.2000   20.3386   14.4000  22.8880
CAN3.advanced_measuring_values_engine.IDE11870_egr_cooler_pump_v400               %   41140 2.1173 3294.0151 100.0000 100.0000   70.0000  100.0000   90.3040  100.0000  14.0245
CAN3.advanced_measuring_values_engine.IDE12123_egr_cooling_mode_stop_voltage      V   41140 2.1173 3294.0151   2.2990   2.2990    2.2990    2.2990    2.2990    2.2990   0.0000
CAN3.advanced_measuring_values_engine.IDE12124_egr_bypass_mode_stop_voltage       V   41140 2.1173 3294.0151   2.7460   2.7460    2.7460    2.7460    2.7460    2.7460   0.0000
CAN3.advanced_measuring_values_engine.IDE07754_egr_v1b1_activation                %    5357 2.0772 3290.2958   0.0000  99.6977    0.0000   99.9999   45.2216    3.0396  48.1795
CAN3.advanced_measuring_values_engine.IDE07757_egr_pos_actual                     %    5357 2.0772 3290.2958  -1.5800  -0.9000 -119.5800  116.0000  -17.3344   -1.4400  37.9454
CAN3.advanced_measuring_values_engine.IDE07756_egr_pos_specified                  %    5357 2.0772 3290.2958  -1.3600  -1.3600 -116.0000  116.0000  -17.2936   -1.3600  37.9537
CAN3.advanced_measuring_values_engine.IDE07759_egr_pos_stops                           5357 2.0772 3290.2958   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE07760_egr_pos_breakaways                     41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE07758_egr_pos_offset                     %    5357 2.0772 3290.2958   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE07755_egr_pos_voltage                    V    5357 2.0772 3290.2958   2.4990   2.5010    0.5670    4.3870    2.2246    2.4990   0.6207
CAN3.advanced_measuring_values_engine.IDE04035_egr_temperature_1                  C   41140 2.1173 3294.0151  46.0000 186.0000   46.0000  255.0000  213.3307  255.0000  57.4511
CAN3.advanced_measuring_values_engine.IDE04035_egr_temperature_2                  C   41140 2.1173 3294.0151  48.0000  97.0000   48.0000  255.0000   79.1414   77.0000  21.3206
CAN3.advanced_measuring_values_engine.ENG125971_b10                                   41140 2.1173 3294.0151   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b11                                   41140 2.1173 3294.0151   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b12                                   41140 2.1173 3294.0151   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b13                                   41140 2.1173 3294.0151   1.0000   1.0000    0.0000    1.0000    1.0000    1.0000   0.0070
CAN3.advanced_measuring_values_engine.ENG125971_b14                                   41140 2.1173 3294.0151   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b15                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    1.0000    0.9702    1.0000   0.1700
CAN3.advanced_measuring_values_engine.ENG125971_b16                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b17                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b20                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b21                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b22                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b23                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b24                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b25                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b26                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b27                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b30                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b31                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b32                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b33                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    1.0000    0.9732    1.0000   0.1616
CAN3.advanced_measuring_values_engine.ENG125971_b34                                   41140 2.1173 3294.0151   0.0000   1.0000    0.0000    1.0000    0.0053    0.0000   0.0723
CAN3.advanced_measuring_values_engine.ENG125971_b35                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b36                                   41140 2.1173 3294.0151   1.0000   0.0000    0.0000    1.0000    0.0223    0.0000   0.1478
CAN3.advanced_measuring_values_engine.ENG125971_b37                                   41140 2.1173 3294.0151   1.0000   0.0000    0.0000    1.0000    0.0216    0.0000   0.1453
CAN3.advanced_measuring_values_engine.ENG125971_b40                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b41                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b42                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    1.0000    0.9702    1.0000   0.1700
CAN3.advanced_measuring_values_engine.ENG125971_b43                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b44                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b45                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b46                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b47                                   41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b10                                    41140 2.1173 3294.0151   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b11                                    41140 2.1173 3294.0151   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b12                                    41140 2.1173 3294.0151   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b13                                    41140 2.1173 3294.0151   1.0000   1.0000    0.0000    1.0000    1.0000    1.0000   0.0070
CAN3.advanced_measuring_values_engine.IDE10313_b14                                    41140 2.1173 3294.0151   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b15                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    1.0000    0.9702    1.0000   0.1700
CAN3.advanced_measuring_values_engine.IDE10313_b16                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b17                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b20                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b21                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b22                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b23                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b24                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b25                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b26                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b27                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b30                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b31                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b32                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b33                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    1.0000    0.9732    1.0000   0.1616
CAN3.advanced_measuring_values_engine.IDE10313_b34                                    41140 2.1173 3294.0151   0.0000   1.0000    0.0000    1.0000    0.0053    0.0000   0.0723
CAN3.advanced_measuring_values_engine.IDE10313_b35                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b36                                    41140 2.1173 3294.0151   1.0000   0.0000    0.0000    1.0000    0.0223    0.0000   0.1478
CAN3.advanced_measuring_values_engine.IDE10313_b37                                    41140 2.1173 3294.0151   1.0000   0.0000    0.0000    1.0000    0.0216    0.0000   0.1453
CAN3.advanced_measuring_values_engine.IDE10313_b40                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b41                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b42                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    1.0000    0.9702    1.0000   0.1700
CAN3.advanced_measuring_values_engine.IDE10313_b43                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b44                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b45                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b46                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b47                                    41140 2.1173 3294.0151   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
 
Damn, more issues or bugs :rolleyes:

Today I tried to record everything EGR with a dedicated special configuration, 16 PIDs @12.5Hz - including crank, stop start, regen etc. 16 pids are queried as two 8-pid group requests. All good, except that one of my groups produced 41k samples, which is pretty much spot on 80ms interval for the trip duration. However, only 5.3k samples from the other group.

Well, unfortunately the dataset is really too bad quality to be useful. I have to reorganise it somehow or lower the ambition level to make it work. Tracked the issue down - not a bug, turns out something in my *working* PID query group makes it's responses bit slower than normal and parts of the response then mess up the query of the other group. So, one of those tricky timing issues, basically a result of that I'm currently bound by the CANEdge2 10ms resolution in transmission configurations.

Plotting the status bits was bit interesting though... they are 32 -bit values, probably most of the bits are never used but as I can't be sure it's just better to plot them all. This is what I ended up with, small sample from engine startup. The bit plots are not that easy to read being so dense, have to look around if there would be some ways to reduce the line amount without really losing information content.

Rplot02.png
 
Well, unfortunately the dataset is really too bad quality to be useful.

... but worked fine by reducing the frequency from 12.5Hz to 10Hz

Edit: attached three zoomed in moments of interest graphed out - graphs too big as sharp images

#1 - Engine cold cranking
#2 - Couple of minutes into drive EGR position changes polarity
#3 - Stop/Start event

Code:
Channels:
                                                                                unit   count   ts_0      ts_n    val_0    val_n       min       max       avg    median  std_dev
CAN2.engine_1_100hz.engine_rpm                                                U/min  408577 2.0540 4088.2071   0.0000 821.2500    0.0000 3211.2500 1547.0869 1753.5000 575.0081
CAN2.engine_2_50hz.engine_coolant_temperature                                     C  204287 2.0643 4088.1973  20.2500  88.5000   18.0000   92.2500   83.3901   88.5000  14.8524
CAN2.engine_7_50hz.oil_temperature                                                C  204289 2.0703 4088.2025 -59.0000  92.0000  -59.0000  103.0000   85.2710   95.0000  29.0393
CAN2.starter_1_10hz.terminal_50_on                                                    40890 2.0612 4088.1232   0.0000   0.0000    0.0000    1.0000    0.0022    0.0000   0.0466
CAN2.kombi_2_5hz.kombi_ambient_temperature                                        C   20431 2.0650 4088.1248  11.5000  17.0000    9.0000   17.5000   14.1249   14.5000   1.9272
CAN3.advanced_measuring_values_engine.ENG125971_b24                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b25                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b26                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b27                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b28                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b29                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b30                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b31                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b16                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b17                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b18                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b19                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b20                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b21                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b22                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b23                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b8                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b9                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b10                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b11                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b12                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b13                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b14                                   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b15                                   38571 2.1371 4088.1160   1.0000   0.0000    0.0000    1.0000    0.8312    1.0000   0.3746
CAN3.advanced_measuring_values_engine.ENG125971_b0                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b1                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b2                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b3                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    1.0000    0.0149    0.0000   0.1212
CAN3.advanced_measuring_values_engine.ENG125971_b4                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b5                                    38571 2.1371 4088.1160   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b6                                    38571 2.1371 4088.1160   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG125971_b7                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b24                                    38571 2.1371 4088.1160   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b25                                    38571 2.1371 4088.1160   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b26                                    38571 2.1371 4088.1160   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b27                                    38571 2.1371 4088.1160   1.0000   1.0000    0.0000    1.0000    0.9998    1.0000   0.0153
CAN3.advanced_measuring_values_engine.IDE10313_b28                                    38571 2.1371 4088.1160   1.0000   1.0000    1.0000    1.0000    1.0000    1.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b29                                    38571 2.1371 4088.1160   0.0000   1.0000    0.0000    1.0000    0.9358    1.0000   0.2452
CAN3.advanced_measuring_values_engine.IDE10313_b30                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b31                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b16                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b17                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b18                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b19                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b20                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b21                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b22                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b23                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b8                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b9                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b10                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b11                                    38571 2.1371 4088.1160   0.0000   1.0000    0.0000    1.0000    0.9486    1.0000   0.2208
CAN3.advanced_measuring_values_engine.IDE10313_b12                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    1.0000    0.0394    0.0000   0.1946
CAN3.advanced_measuring_values_engine.IDE10313_b13                                    38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b14                                    38571 2.1371 4088.1160   1.0000   0.0000    0.0000    1.0000    0.0166    0.0000   0.1278
CAN3.advanced_measuring_values_engine.IDE10313_b15                                    38571 2.1371 4088.1160   1.0000   0.0000    0.0000    1.0000    0.0120    0.0000   0.1088
CAN3.advanced_measuring_values_engine.IDE10313_b0                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b1                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b2                                     38571 2.1371 4088.1160   0.0000   1.0000    0.0000    1.0000    0.9358    1.0000   0.2452
CAN3.advanced_measuring_values_engine.IDE10313_b3                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b4                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b5                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b6                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE10313_b7                                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.ENG107874_obd_egr_position                  %   39115 2.0871 4088.0660   1.1700  26.9100    0.0000   99.4500   48.4624   40.9500  27.9905
CAN3.advanced_measuring_values_engine.IDE00420_regen_current_duration             s   38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE07377_egr_mass_flow                   kg/h   39115 2.0871 4088.0660   0.0000  10.8000    0.0000  100.8000   32.9958   36.0000  19.4675
CAN3.advanced_measuring_values_engine.IDE11870_egr_cooler_pump_v400               %   38571 2.1371 4088.1160 100.0000 100.0000   70.0000  100.0000   99.7180  100.0000   2.8740
CAN3.advanced_measuring_values_engine.IDE12123_egr_cooling_mode_stop_voltage      V   38571 2.1371 4088.1160   2.3030   2.3040    2.2930    2.3040    2.3029    2.3030   0.0013
CAN3.advanced_measuring_values_engine.IDE12124_egr_bypass_mode_stop_voltage       V   38571 2.1371 4088.1160   2.7390   2.7380    2.7380    2.7430    2.7391    2.7390   0.0008
CAN3.advanced_measuring_values_engine.IDE07754_egr_v1b1_activation                %   39115 2.0871 4088.0660   0.0000   2.4887    0.0000   99.9983   72.3188   96.8535  42.1489
CAN3.advanced_measuring_values_engine.IDE07757_egr_pos_actual                     %   39115 2.0871 4088.0660  -1.3400  27.2200 -120.2000  116.0200  -38.5987  -40.2200  44.4170
CAN3.advanced_measuring_values_engine.IDE07756_egr_pos_specified                  %   39115 2.0871 4088.0660  -1.2400  27.2600 -116.0000  116.0000  -38.4272  -39.9800  44.3282
CAN3.advanced_measuring_values_engine.IDE07759_egr_pos_stops                          39115 2.0871 4088.0660   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE07760_egr_pos_breakaways                     38571 2.1371 4088.1160   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE07758_egr_pos_offset                     %   39115 2.0871 4088.0660   0.0000   0.0000    0.0000    0.0000    0.0000    0.0000   0.0000
CAN3.advanced_measuring_values_engine.IDE07755_egr_pos_voltage                    V   39115 2.0871 4088.0660   2.5000   2.9190    0.5280    4.3930    1.8698    1.8490   0.7230
CAN3.advanced_measuring_values_engine.IDE04035_egr_temperature_1                  C   38571 2.1371 4088.1160  49.0000 255.0000   49.0000  255.0000  244.1577  255.0000  30.1795
CAN3.advanced_measuring_values_engine.IDE04035_egr_temperature_2                  C   38571 2.1371 4088.1160  49.0000 130.0000   49.0000  216.0000   88.1656   87.0000  14.2289
 

Attachments

  • 2023-09-19-n10n-EGR-StopStart.pdf
    41.9 KB · Views: 3
  • 2023-09-19-n10n-EGR-Polarity.pdf
    70.5 KB · Views: 10
  • 2023-09-19-n10n-EGR-Cold-Cranking.pdf.pdf
    21.4 KB · Views: 3
Last edited:
... but worked fine by reducing the frequency from 12.5Hz to 10Hz

Some observations:
  • I think we can put the EGR polarity mystery to rest - by looking at the 2023-09-19-n10n-EGR-Polarity.pdf (in the previous post) and observing voltages, EGR output temperature and EGR position, it's pretty clear that negative position signifies running the exhaust through the cooler
  • Voltage and specified valve position are basically the same graph. The difference is the scale and unit, also voltage is comparable to the stop limits
  • For just looking if EGR is open or closed, ENG107874 should be used. But IDE07756 / 7 are more useful for detecting problems even if their values are not as easily understandable.
  • IDE07754 remains somewhat a mystery. It clearly has something to do with the cooling but as CXEB engines are not supposed to have N345 switchover valve it's unclear what physical entity it ties to
  • IDE11870 can be verified to describe EGR cooling pump V400 just by looking at the signal stats. SSP564 quote: "The pump for the exhaust gas recirculation cooler V400 (15) is activated after the ignition is switched on with a delivery rates of 70% by a PWM signal from the engine control unit. It runs permanently across all operating ranges. Activation is increased to 100% delivery rates if there is a higher EGR cooling requirement." From what I've observed though, 70% is an exception and V400 sits at full blast from ignition - probably this has been changed in one of the software versions released after SSP564 was published. This may be little bit more interesting to observe during winter months.
  • EGR valve does swiping moves when engine is stopped by stop start, presumably to avoid the valve from catching. I attached a little bit longer stop-start event where this is particularly evident.
 

Attachments

  • 2023-09-19-n10n-EGR-StopStart-2.pdf
    82.5 KB · Views: 8
Last edited:
attached three zoomed in moments of interest graphed out - graphs too big as sharp images

Quite uninteresting overall but for completeness sake here's a snippet of EGR focus special configuration during regeneration.

I've adjusted scaling of valve position to see specified vs actual more closely - this shows minor ripple around measured position, invisible with normal scaling.

Perhaps most interesting are a) EGR input temperature is relatively low. This snippet was closer to regeneration completion so exhaust has not flown through EGR for some time - it has had a chance to cool down quite a bit. And b) exotic RPM curve from quite a heavy engine braking coming off from motorway :)
 

Attachments

  • 2023-09-21-n10n-EGR-Regen.pdf
    523.6 KB · Views: 5
Not much has happened in custom PID / native CAN data department lately unfortunately, too few hours available.

But here's a look at glow plugs in a cold -10° day. It was actually little bit colder earlier and hence oil starts colder than ambient. Engine was prewarmed for 20 mins or so with water heater. Glow plugs have some power levels, seems to adjust in increments of 8%. Today the maximum power level was 24% - I'm not sure if that's always the maximum or if the power goes to 100% in extreme cold or perhaps with aging plugs. The glow was maintained for 2 minutes after engine start. I saw a 4 minute after glow the other day when I run without prewarming - the time is also dynamic at least to some extent.

Interestingly, the recorded glow started only *after* engine already had some RPM. However, my CANedge2 is currently ignition powered and I waited by key in IGNITION for some time for CANedge2 to initialize itself - probably the pre glow was already done before CANedge2 woke up and only resumed at engine starting. Should have probably wired it to terminal 30g in order to start recording CAN data already from unlock and to keep on for a while after stopping the engine.

Code:
RPM:
6.430300000000001,0.0
6.4404,85.5

GLOW STATUS:
7.620049999999999,0
7.63025,1


1701716839170.png
 
Fascinating! Just wondering how/if the "Preglow status" is related to "IDE00363 Glow status" reported by VCDS - however, they seem to behave differently, except 2 minute duration of post-heat after start-up.

Below a snippet posted in thread Transporter Fuel pump

1701722249656.png
Besides the statuses listed above also "No preheat" and "No heat" exist.
 
Just wondering how/if the "Preglow status" is related to "IDE00363 Glow status" reported by VCDS
Besides the statuses listed above also "No preheat" and "No heat" exist.

That kind of was my thought too - the 8% power changes could mean that the status metric should actually be interpreted as a a bitfield or status constants. Let's see, I'll try to get a jump wire in place one of these days to capture also the main glow event within CANEdge recording, that might tell us little bit more.
 
Here's another take of the glow plugs from CAN internal perspective, with full main pre glow included. Little bit warmer ambient temperature and this time I did not use coolant heater to warm the engine in advance.

Rplot02.png

I believe what I've called "Preglow status" is indeed indicative of power applied to glow plugs and not directly related to IDE00363. During primary glow the plugs are set to produce lot of heat quickly with 80% power. The power is reduced to 16% when engine is on. Also today, as I did not preheat the engine, glow plugs stay on much longer after engine start, until water reaches about 50°C temperature (I don't know if this is the actual condition that ends glow plug usage).

On the other hand what I've called "Preglow on" here seems to be bit misleading - looks more like "request" or "release condition". It's already on even when key is not inserted so most likely this is just based on some temperatures.

And here's another pic with 30-45s zoomed in just to see the main glow and startup better:
Rplot03.png
 
Fuel consumption

Internal CAN has an interesting metric at 50Hz frequency: accumulated fuel consumption in μL. That is, in millionths of a litre. This metric is used as basis for calculating MFD momentous and average consumptions. The metric is little bit tricky though - being fitted to 15 bits it will overflow and go around to small values very often. Also although the consumption is transmitted 50 times a second, the actual measurement is slower and hence there will be several consecutive samples with the same value.

Using such tricky metric in plots directly is not really feasible. Some logic is needed to calculate larger accumulation of the tiny μL. Also, any meaningful consumption figures do not really need 50Hz resolution. As I wanted to get this metric to see how well it aligns with reported tank level I set on to extend my Python project to create synthetic metrics, ie metrics which do not really exist but are a result of some sort of calculation. Yet these metrics will be output just like native CAN data. For now I have this single metric synthesised but I guess going forward there may some other metrics that are better refined than as raw values.

Long story short, here's summary data with fuel_consumed_total metric from a longer drive last August together with few other signals:

Code:
Channels:
                                       unit   count    ts_0      ts_n      val_0      val_n        min        max        avg     median  std_dev
CAN1.engine_859_10hz.rpm              U/min   56082 13.4522 5609.5446     0.0000   827.5000     0.0000  3912.7500  1753.5419  1805.7500 398.0056
CAN1.mfd_1629_1hz.odometer               km    5597 13.4654 5609.0580 77605.0000 77738.0000 77605.0000 77738.0000 77660.5042 77654.0000  40.1506
CAN2.kombi_1_40hz.kombi_fuel_level        L  280369  2.1293 5609.5540    39.0000    24.0000    24.0000    39.0000    32.2530    33.0000   4.0434
CAN2.kombi_1_40hz.kombi_speed_actual   km/h  280369  2.1293 5609.5540     0.0000     0.0000     0.0000   127.6000    85.3512    93.1300  32.2651
SYN.fuel_consumed_total                   L    5558  2.1237 5608.8876     0.0000    14.7181     0.0000    14.7181     7.8708     7.9815   4.4206

CAN2.kombi_1_40hz.kombi_fuel_level is the fuel remaining in tank according to ECU. As we see, tank fuel level reduced 15L during this 133km trip. The new synthetic consumption metric, output at about 1Hz, is amazingly well aligned with tank values in this sample and reports 14.72L consumed during the trip.

That said, I looked into couple of other trips as well and the results vary:
  • First of all, the tank level can be quite a bit off to start with depending how the car was parked. Sometimes when I've had the car parked for few days on my relatively steep yard the tank shows almost empty although I know it's almost half full.
  • Second, on some trips the total consumption seemed to report unrealistically high values. Here the consumption is pretty high as well but this was with a van fully packed and large part motorway speeds.
  • Third, at least the fuel needle is weighed to a curve - I guess every VW driver knows the needle will stay at full tank for quite a bit, then sink faster than Titanic to about 1/4 and finally slow again towards the fuel warning limit. I'm not sure if the weighing affects the remaining fuel reported by the CAN but if it does it may play some role here - there may well be a curve -specific multiplier applied even to the miniscule consumption values.
Finally, because posts just are not the same without a picture here's the same data graphed out:

Rplot.png
 
Last edited:
Fuel consumption
I used to be involved in the software design of these. Never did anything on VW, but did work with several other manufacturers. They all work in a similar way though.
These counters make it much easier to process continual accumulation of various things (in addition to fuel usage, you also have similar systems for distance travelled and running time). For fuel usage, the raw data will come from the engine controller sisnce it knows how much fuel is squirted in by the injectors. The idea is that you can sample the counter values at a relatively slow rate. Fuel used (in this case) is the difference between this sample and the previous one. So, as long as you sample at least once per cycle of the counter, you get the right value for the fuel used. To work out the short term and long term fuel efficiencies, you just add all of the individual differences and do some fancy maths.
Fuel tank level will use the signal from the sensor in the fuel tank, not the fuel used signal from the ECM. Many vehicles have only one sensor, but quite a few have more than one. This signal tends to be very noisy (think about fuel sloshing around in the tank as you go over bumps and round corners) so there is a lot of filtering needed to get a stable reading. Add in algorithms to cope with tank filling (and emptying) and resting on slopes and it gets really complicated. Essentially you work out what the fuel level is when the ignition is turned on by comparing the new reading with the reading when you last switched the ignition off. Big changes mean more (or less) fuel in the tank. Small changes are probably due to sitting on a slope.
Finally, there will be a map to convert fuel tank sensor level to true tank level as a percentage. This should compensate for the shape of the tank which will very rarely be a nice rectangular box. Of course, this only works if the tank doesn't change shape between development and actual production of the final vehicle.
 
Back
Top