MembersPage/GunnarReynisson/FirmwareRequest

' Ethanol sensor firmware showing proper readings'

Given that the very common fuel flex sensor operations are known, VEMS should have a any trim for fuel, ignition and boost based on actual ethanol content (current way is to use a form of digital in wheel speed, which is too crude).

Many customers are extremely interested in this feature so it should be implemented as actual Ethanol fuel content adjustments.

MAT / TPS ignition retard should be MAP based, or configurable ( MAP or TPS )

Agreed, working on it (more work in VemsTune than in firmware).

TPS makes sense for engines that might not have MAP sensor at all. (ITB normally aspirated).

MAP is usually better and easier to tune.

So choosable is best.

I´d like to check how this is going on? - I meant the MAT/MAP ignition retard - Will this ever get implemented?

Input for Coolant temp and air temp can be selected from non pullup analog inputs - How?

This allows parallel installations to be done more easily.

ECU is setup for Cam sync but still runs if camsync fails.

This is easily handled by allowing configuration of outputs (ignition) in the dual config if camsync fails.

Engine operations are not affected by the loss of camsync therefore.


Right now fuelcut makes idle catch tuning tricky on some engines. How about a 'primepulse on fuel resume if TPS below IAC threshold, RPM falling, and fuelcut active'? Or something similar that allows for reloading the wall film when leaving fuelcut and descending quickly (out of gear) toward idle. In absence of proper X-tau some form of wall wetting would help with fuelcut recovery. Right now the only obvious solution is to richen the bottom row of the VE table and let EGOC take care of fixing those cells when cruising in those ranges. Even just a generic percentage of pulse width to add on fuelcut resume would work for most situations that I can think of, bonus points for having it scale against RPM or RPM drop/sec in some way.


camsync right at the missing tooth

sometimes before, sometimes after tooth0. (this is currently not allowed).

Especially important if cam angle is getting measured between 355-366 with a missing tooth wheel. Some BMW engines have the cam signal right in the missing tooth, this is a installation of the cam problem so some might trigger on one phase and some other ones on the other phase as well as some hopping between phases (which I have gotten, had to run dual out to solve).

Possible solution


Idle fuel/ignition map.

Something like a 6x6 map that only is activated during idle condition (below rpm, below tps)

Y axis can be MAP or Idle control duty cycle, selectable between each no matter if main strategy is alpha-n or speed density

There is a VE(MAP,RPM) table. Splitting out a corner would add complications and worse, transients.

- Sometimes ignition idle requirement is nowhere near what is needed at the same manifold pressure and engine speed.

This is done to get an even steadier idle without fluctations as well as low engine speed low throttle conditions which may require different ignition and fuel.

VE value resolution increase

At least a half a point or more

Mass fuel option fuel table.

Ideally 0-Xms opening time curve that represents volume

multiplied by a factor for fuel density. Allow addition of fuel temperature compensation from analog input.

-This is clearly not what I meant. But I understand that mass based fuelling is maybe not what VEMS is ready for.

Especially important for low resolution pulsewidth when flow is non linear to have the curve and massive injectors.

Ecu then chooses the appropriate pulsewidth based on the curve from the mass wanted from the fuel table.

Anytrim by TPS

Can this be implemented as an option for Anytrim 1 and 3

Anytrim 3d

Allows 2 axis to be choosen from any analog channel at least and it´s axis based on that channel , preferably any reported channel. Would allow custom function tables whose effect can be any of the current functions or new ones added.

.. Yes this would be nice / Erikk

Improved boost control

Include the option for Secondary PWM Table Absolute as the base duty cycle table for the main boost control function.

So boost control would work so

DC table (kpa, rpm) + anytrim function + gearDCtable + PID = BoostDC

Then target can be altered by anytrim and TPS and gear table.

I believe this would give far improved targetting with high variances possible without having crazy PID values.

The tuning would be done without PID to reach the correct boost (kpa in the DCTable) in all rpms and alterations for various gears if needed.

.. New boost control strategy is under development / Erikk

New idea for boost control (I have brought it up on the IRC already before) for highly improved targetting and converting the whole system into targetting, would of course work in simple style still.

New tables:

DCref table,

Y axis : boost target

X axis : rpm

P_table :

Y axis : kpa error , target - map

X axis : rpm

dcref.jpg

ptermtable.jpg

Currently we have targetting based on

Gear, TPS and various other things. Irrespective of where the target comes from improved accuracy in getting to the target is needed when the boost target can vary from 150kpa to 300kpa or when wastegates have leaks or simply don´t behave smoothly or linearly.

My suggestion is that the user completes a 3d table which acts as the base DC for each scenario, i.e boost target and current engine speed, the way they fill it in is by adjusting the target and then adjust the DC "curve" throughout the engine speed range to get there or at least as very close as possible.

This by itself would yield probably 95% success rate in targetting later down the road for the user.

The PID then needs to act to finalize the DC%.

The best way I can think of it is rpm and error based 3d table which would allow the user to get the best possible control over correction at both the amount of error (unlinear P term at X rpm) as well as unlinear at Y error amount. So that absolute dc control is available and this should raise targetting succes to near 100% if done right.

I and D same as before, the variable P term and varying DCref table cover almost absolutely every scenario possible in terms of hitting the target.

Antilag by Idle control valve

Would it be possible to add the function to run a specific idle control duty cycle while under antilag, thus acting as ALS valve.

.. Already implented, 'ALS Iac position' in the ALS menu / Erikk

Thanks for the heads up, - Gunni

A - B config

The current implementation I feel is wasting space by having absolutely EVERYTHING in each config.

My suggestion would be to follow the Pectel way.

Config swabbable things are things like

VE table, Ign table, Lambda table, boost targetting(gears, speed or whatever), variable cam target tables, Als configurables like rpm, duty cycles and such , not output pins or input pins.

Everything that is a fixed constant like ignition trigger settings, inputs and outputs wouldn´t change,

I believe this should free up some map space and might allow 3 configs to be swappable instead of 2.

Some thougts on accel enrichment and deccel enleanment

I would propose a 3d table that has

X axis = dTPS% / 100ms

Y axis = RPM

Effectively combining the two curves available now.

Added addition to the 3d table is the option of having negative values on the X axis. Therefor allowing specific decel enleanment which would get subtracted from the pulsewidth.

The two values closest to the 0 would represent the deadband where fuel addition/reduction is OFF and closed loop and other things are active.

In addition the Cold multiplication factor is replaced by the warmup table effectively.

Below is a sample table

accel_decell_3d_table.jpg

I want to reiterate this note.

It´s extremely common for MAP sensor signals to have time lag from actual airflow change into the engine

  • There is an option to use TPSd/td as it closes to shorten the fuel pulse exactly the same as for accel enrichment, can be another table if its not possible to make the current positive delta/t table negative.

closed loop lambda EGO control

is OFF if lambda is > X Lambda

if OFF is lambda is < Y Lambda

These being adjustable if they are all ready in the firmware.

Allowing control over when to stop closed loop from adjusting PW when Lambda is outside certain values. EGO control is then 100%


MAP CORR is TPS CORR above X kpa, on some vehicles with RPM/TPS table there will be a discrepancy between the same KPA value at different throttle angles. Since MAP CORR is there it shouldn´t be difficult to turn that into TPS CORR above some kpa value.

note: MAP CORR was made for Alpha-N where the primary input is RPM/TPS anyway. (and adding RPM/TPS modifier for RPM/TPS primary table does not make sense).

Maybe a misunderstanding, this needs clarification.
  • What is means is that MAP CORR becomes TPS CORR for KPA load setup, TPS/RPM * MAP CORR is current , KPA/RPM * TPS CORR would be usable when load is KPA

Fuel injection timing modifiers

Proposal: Fuel injection timing needs a Y axis that represents load, either TPS or MAP based on load control selected.

With variable cam controls some modifier would be nice that can effect the timing requirements.

Fuel injection timing has noticable effect at low load: idle and cruising. At higher load most of the injection goes to closed valves (no matter how injection is timed), and at peak power injection timing has no effect at all (injector ON almost all the time).

Maybe a "Z" function (for each RPM value): 2 "RPM lines" table (interpolation between them of course => "smooth transition") would be justified.

  • The Y axis is LOAD, that is how its usually done and makes the most sense, CAM timing can be put on hold

Both edges available on cam sync and other 720sync stuff

Is it possible to be able to report and use both rising and falling edges on Hall to show all trigger edges, then allow camsync to be a combination of using rising rising gaps or falling falling gaps or rising falling gaps or falling rising gaps or as currently selecting a cam event in relations to crank trigger ranges or positions.

would allow twice as many edges on todays cam triggers for more robust cam triggering.

Also as I've asked before a cam input delay in crank triggers, this would solve all my M50 cam sync issues as sometimes the trigger appears before the missing tooth and sometimes behind on other engines, having a X crank tooth delay would allow them all to have the same base config and it would be easier to support multiple customers.

Also would it be possible to be able to have cam sync on EC18-12 (3rd trigger) and have it reported as exhaust cam in the variable cam timing? Or EC36-13 and have that reported as exhaust cam to the variable cam timing ? This is isn´t a problem for dealers that do the install or understand what is going on, but for customers its not ideal having to explain that intake isn´t intake and exhaust is intake on SXX BMW engines.

Maybe it can be done via a bit in the config and Vemstune reports it differently to suit the bit value of 0 or 1? that wouldn´t need any firmware changes just vemstune work.

gaccamtriggerwheels_1.jpg


See Fuel pressure warning light: GenBoard/UnderDevelopment/RoundFirmWare