Figured out what I was doing wrong. Arithmetic error.
Got it. We can now collect accurate data during transients.
got it.png
So, the filter is corrected and follows:
Code:
Poll [DynAir] if {(abs([MAF(k)]-[MAF(k-1)])/[MAF(k-1)]))/(k-(k-1)) <= [ECM 13432]} && {(abs([MAP(k)]-[MAP(k-1)])/[MAP(k-1)])/(k-(k-1)) <= [ECM 13432]}
becomes the simplest calculus
... if d(MAF)/dt <= [ECM 13432] && d(MAP)/dt <= [ECM 13432]
where d/dt is evaluated over polling rate = 12ms and [ECM 13432] becomes 0.1, simplifies to
... if delta(MAF)/.012 <= 0.1 && delta(MAP)/.012 <= 0.1
where MAF is Mass Air Flow and MAP is VVE.
The above graph was a snippet to capture a transient. Data collected from dataset (attached) posted by hjtrbo. Here's the filter in action for the entire log:
DynAir_ss_total.png
As you can see, it's trimming a lot of data. It may appear that the reduction will increase tuning time, but remember this log is only 30 seconds. Perhaps the increased accuracy will make the total tuning time decrease by decreasing the need for tune/log iterations. Logging process is simplified. While steady pedal movements will increase % polled data, there is no need for filtering TPS and RPM. They are implicitly filtered when both MAF and MAP airflow are steady state.
It's interesting to note how DynAir trends toward MAF as steady state data density increases. This hints at the mechanism of bias between the two airflow models that informs DynAir. I think DynAir calcs can be solved in order to correctly adjust VVE and MAF. It also helps to validate this filtering method.