<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://opengk.org:443/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ardamir</id>
	<title>OpenGK - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://opengk.org:443/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ardamir"/>
	<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Special:Contributions/Ardamir"/>
	<updated>2026-09-18T10:30:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://opengk.org:443/index.php?title=Main_Page&amp;diff=1025</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Main_Page&amp;diff=1025"/>
		<updated>2026-09-17T22:38:48Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Welcome to the OpenGK Wiki&#039;&#039;&#039;&lt;br /&gt;
[[File:Siemens T Logo.gif|frameless|right]]&lt;br /&gt;
[[File:Discord-Logo+Wordmark-Color.png|150px|frameless|right|link=https://discord.gg/a4fWuBTfxV]]&lt;br /&gt;
Our goal is to open source the Hyundai/Kia Siemens ECMs on the Beta and Delta motors to provide tuning options to the DIY enthusiasts. This project originally started for the [[Hyundai Tiburon|Hyundai Coupe/Tuscani/Tiburon platform]] but as we collected more data from other platforms with similar ECMs, it was clear that those other platforms can be supported using the same principals.&lt;br /&gt;
&lt;br /&gt;
We are looking for smart individuals that have experience with IDA Pro and disassembly that are willing to help push this project further. Please contact &#039;&#039;&#039;info(at)opengk.org&#039;&#039;&#039; or join our {{DiscordInvite}}if you would like to contribute to this project.&lt;br /&gt;
&lt;br /&gt;
If you are a tuner and found this site to be useful, please consider a donation to Paypal: &#039;&#039;&#039;donate(at)opengk.org&#039;&#039;&#039; to help keep the site alive.&lt;br /&gt;
&lt;br /&gt;
[[Getting started|&amp;gt;&amp;gt; &amp;lt;big&amp;gt;&#039;&#039;&#039;Getting started&#039;&#039;&#039; &amp;lt;&amp;lt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
[https://vin.opengk.org VIN Decoder]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Hyundai Tiburon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Vehicle identification number (VIN)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Data link connector (OBD2)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Immobiliser]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[SMARTRA|Smartra]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Body Control Module]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Instrument Cluster]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Communication protocols ====&lt;br /&gt;
[[K-Line]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[SIMK43 CAN Bus|CAN Bus messages]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ECM Tuning ====&lt;br /&gt;
[[GKFlasher Instructions]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Cross Flash Kia Spectra|Cross-Flash Kia Spectra &amp;gt; Tiburon Firmware]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Siemens L4 2.0L Hardware ====&lt;br /&gt;
[[5WY ECM Identification#Siemens 5WY 2 Connector .282.0L L4.29| ECM Identification]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.0l PCB Layouts| 2.0L PCB Layouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Siemens 5WY 2 Connector Pinout| 2.0L L4 Pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.0L ECM]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Siemens L4 2.0L Firmware ====&lt;br /&gt;
[[SIMK43 Airflow and Load Model]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SIMK43 Ignition Strategy]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SIMK43 Fuel &amp;amp; Injector Control Model]]&lt;br /&gt;
&lt;br /&gt;
==== Siemens V6 2.7L Hardware ====&lt;br /&gt;
[[5WY ECM Identification#Siemens 5WY 5 Connector .282.7L V6.29|ECM Identification]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.7L V6 PCB Layouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Siemens 5WY 5 Connector Pinout| 2.7L V6 Pinout]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Parts Compatibility ====&lt;br /&gt;
[[Sensor Information]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fuel Injector Specifications]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Camshaft Specifications]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.7L V6 Valvetrain]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bosch Chip Part Numbers]]&lt;br /&gt;
&lt;br /&gt;
==== Downloads ====&lt;br /&gt;
[https://opengk.org/files/ File Repository]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Fuel_Injector_Specifications&amp;diff=1024</id>
		<title>Fuel Injector Specifications</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Fuel_Injector_Specifications&amp;diff=1024"/>
		<updated>2026-09-17T18:59:27Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Fixed EVO injectors dead times&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
There are several injectors that will fit both Beta and Delta fuel rails from other makes and models. This list will detail all of the available specifications we could find on each injector and what engine they originated from.&lt;br /&gt;
&lt;br /&gt;
==Injector List ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Injector Matrix&lt;br /&gt;
!Brand&lt;br /&gt;
!Part #&lt;br /&gt;
!Type&lt;br /&gt;
!Flow @&lt;br /&gt;
45psi (3.1bar)&lt;br /&gt;
!Flow @&lt;br /&gt;
43.5psi (3bar)&lt;br /&gt;
!Nozzle Hole&lt;br /&gt;
Count&lt;br /&gt;
!Impedence&lt;br /&gt;
Ohms&lt;br /&gt;
!Original Application&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|9260930006&lt;br /&gt;
35310-22600&lt;br /&gt;
|EV6&lt;br /&gt;
|164cc&lt;br /&gt;
|162cc&lt;br /&gt;
|4&lt;br /&gt;
|14.3Ω&lt;br /&gt;
|1.6L G4ED Alpha 2&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|DENSO&lt;br /&gt;
Hyundai&lt;br /&gt;
|195500-4470&lt;br /&gt;
35310-23700&lt;br /&gt;
|EV6&lt;br /&gt;
|210cc&lt;br /&gt;
|206cc&lt;br /&gt;
|4&lt;br /&gt;
|14.2Ω&lt;br /&gt;
|2.0L G4GC Beta 2&lt;br /&gt;
|OEM KIA&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|9260930004&lt;br /&gt;
35310-37150&lt;br /&gt;
|EV6&lt;br /&gt;
|194cc&lt;br /&gt;
|190cc&lt;br /&gt;
|4&lt;br /&gt;
|14.2Ω&lt;br /&gt;
|2.0L G4GC Beta 2&lt;br /&gt;
2.7L G6BA Delta&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|9260930013&lt;br /&gt;
35310-23600&lt;br /&gt;
|EV6&lt;br /&gt;
|194cc&lt;br /&gt;
|190cc&lt;br /&gt;
|4&lt;br /&gt;
|14.2Ω&lt;br /&gt;
|2.0L G4GC Beta 2&lt;br /&gt;
2.7L G6EA Mu&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|9260930003&lt;br /&gt;
35310-38010&lt;br /&gt;
|EV6&lt;br /&gt;
|300cc&lt;br /&gt;
|294cc&lt;br /&gt;
|4&lt;br /&gt;
|14.2Ω&lt;br /&gt;
|2.4L G4JS Sirius 2&lt;br /&gt;
3.5L G6AU Sigma&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|S040&lt;br /&gt;
35310-2C100&lt;br /&gt;
|EV6&lt;br /&gt;
|366cc&lt;br /&gt;
|360cc&lt;br /&gt;
|4&lt;br /&gt;
|14.3Ω&lt;br /&gt;
|2.0 G4KF&lt;br /&gt;
Turbo Theta 2&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|Bosch&lt;br /&gt;
GM&lt;br /&gt;
|62203&lt;br /&gt;
0280155868&lt;br /&gt;
|EV6&lt;br /&gt;
|360cc&lt;br /&gt;
|354cc&lt;br /&gt;
|4&lt;br /&gt;
|12.2Ω&lt;br /&gt;
|3.8L L67 SC&lt;br /&gt;
|OEM &lt;br /&gt;
|-&lt;br /&gt;
|DENSO &lt;br /&gt;
Nissan&lt;br /&gt;
|16600-JK20A&lt;br /&gt;
|EV6&lt;br /&gt;
|361cc&lt;br /&gt;
|355cc&lt;br /&gt;
|12&lt;br /&gt;
|12-14Ω&lt;br /&gt;
|3.5L VQ35VHR&lt;br /&gt;
|OEM Nissan&lt;br /&gt;
|-&lt;br /&gt;
|DENSO &lt;br /&gt;
Mitsubishi&lt;br /&gt;
|JME600G&lt;br /&gt;
|EV6&lt;br /&gt;
|541cc&lt;br /&gt;
|532cc&lt;br /&gt;
|8&lt;br /&gt;
|12-14Ω&lt;br /&gt;
|2.0L 4B11T&lt;br /&gt;
|OEM Mitsubishi&lt;br /&gt;
|-&lt;br /&gt;
|DENSO&lt;br /&gt;
Nissan&lt;br /&gt;
|297500-0950&lt;br /&gt;
16600-EY00A&lt;br /&gt;
|EV14&lt;br /&gt;
|361cc&lt;br /&gt;
|355cc&lt;br /&gt;
|12&lt;br /&gt;
|12-14Ω&lt;br /&gt;
|3.7L VQ37VHR&lt;br /&gt;
|OEM Nissan&lt;br /&gt;
|-&lt;br /&gt;
|DENSO&lt;br /&gt;
Subaru&lt;br /&gt;
|195500-3920&lt;br /&gt;
16611-AA521&lt;br /&gt;
|EV6&lt;br /&gt;
|447cc&lt;br /&gt;
|440cc&lt;br /&gt;
|4&lt;br /&gt;
|12-14Ω&lt;br /&gt;
|2.5L EJ25 Turbo&lt;br /&gt;
|OEM Subaru&lt;br /&gt;
|-&lt;br /&gt;
|DENSO&lt;br /&gt;
Nissan&lt;br /&gt;
|16600-JF00A&lt;br /&gt;
|EV6&lt;br /&gt;
|559cc&lt;br /&gt;
|550cc&lt;br /&gt;
|12&lt;br /&gt;
|12.6Ω&lt;br /&gt;
|3.8L VR30DDTT&lt;br /&gt;
|OEM Nissan&lt;br /&gt;
|-&lt;br /&gt;
|Siemens Deka&lt;br /&gt;
Mototron&lt;br /&gt;
|FI114961&lt;br /&gt;
INJ-GAS-006&lt;br /&gt;
|EV1&lt;br /&gt;
|640cc&lt;br /&gt;
|630cc&lt;br /&gt;
|4&lt;br /&gt;
|12.5Ω&lt;br /&gt;
|&lt;br /&gt;
|Requires 5mm spacer for fuel rail&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Injector Identification ==&lt;br /&gt;
[[File:GK2.7 OEM Injector.png|right|thumb]][[File:GK2.7 OEM Injector Nozzle.png|right|thumb]]&lt;br /&gt;
Many aftermarket &amp;quot;OE&amp;quot; injectors are either Chinese fakes or they perform poorly in our systems. It&#039;s important to know how to identify a genuine injector from a fake injector. Here are the main identifiers to look for when shopping for used, new or remanufactured/reflowed injectors.&lt;br /&gt;
&lt;br /&gt;
# Kefico part number&lt;br /&gt;
# &amp;quot;Four Leaf Clover&amp;quot; or &amp;quot;Venus Korean Dogwood Flower&amp;quot;&lt;br /&gt;
# Hyundai &amp;quot;H&amp;quot; logo&lt;br /&gt;
# Hyundai part number&lt;br /&gt;
# &amp;quot;K&amp;quot; and &amp;quot;C&amp;quot; are stamped near the nozzles&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Injector Dead Times ==&lt;br /&gt;
[[File:Kefico 9260930004 Dead Times.png|thumb|&#039;&#039;&#039;Kefico 9260930004&#039;&#039;&#039;]]Additional injector data can be found over at MS4X&#039;s page here: https://www.ms4x.net/index.php?title=Fuel_Injector_Deadtimes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Kefico 190cc 9260930004 2.7L V6&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|5.486&lt;br /&gt;
|0.640&lt;br /&gt;
|-&lt;br /&gt;
|5.994&lt;br /&gt;
|2.816&lt;br /&gt;
|-&lt;br /&gt;
|9.957&lt;br /&gt;
|1.152&lt;br /&gt;
|-&lt;br /&gt;
|11.989&lt;br /&gt;
|0.768&lt;br /&gt;
|-&lt;br /&gt;
|13.005&lt;br /&gt;
|0.640&lt;br /&gt;
|-&lt;br /&gt;
|14.021&lt;br /&gt;
|0.512&lt;br /&gt;
|-&lt;br /&gt;
|15.951&lt;br /&gt;
|0.384&lt;br /&gt;
|-&lt;br /&gt;
|24.994&lt;br /&gt;
|0.128&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Kefico 190cc 9260930004 2.0L L4&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|5.49&lt;br /&gt;
|0.640&lt;br /&gt;
|-&lt;br /&gt;
|5.99&lt;br /&gt;
|2.912&lt;br /&gt;
|-&lt;br /&gt;
|8.03&lt;br /&gt;
|1.760&lt;br /&gt;
|-&lt;br /&gt;
|9.96&lt;br /&gt;
|1.216&lt;br /&gt;
|-&lt;br /&gt;
|11.99&lt;br /&gt;
|0.832&lt;br /&gt;
|-&lt;br /&gt;
|13.00&lt;br /&gt;
|0.704&lt;br /&gt;
|-&lt;br /&gt;
|14.02&lt;br /&gt;
|0.576&lt;br /&gt;
|-&lt;br /&gt;
|17.98&lt;br /&gt;
|0.256&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Bosch 62203 0280155868 360cc&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|10.00&lt;br /&gt;
|0.743&lt;br /&gt;
|-&lt;br /&gt;
|12.00&lt;br /&gt;
|0.497&lt;br /&gt;
|-&lt;br /&gt;
|13.00&lt;br /&gt;
|0.414&lt;br /&gt;
|-&lt;br /&gt;
|14.00&lt;br /&gt;
|0.313&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Mitsubishi Evo X OEM 532cc&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|4.69&lt;br /&gt;
|3.825&lt;br /&gt;
|-&lt;br /&gt;
|7.04&lt;br /&gt;
|3.270&lt;br /&gt;
|-&lt;br /&gt;
|9.38&lt;br /&gt;
|1.695&lt;br /&gt;
|-&lt;br /&gt;
|11.73&lt;br /&gt;
|1.110&lt;br /&gt;
|-&lt;br /&gt;
|14.08&lt;br /&gt;
|0.810&lt;br /&gt;
|-&lt;br /&gt;
|16.42&lt;br /&gt;
|0.570&lt;br /&gt;
|-&lt;br /&gt;
|18.70&lt;br /&gt;
|0.405&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Siemens Deka 630cc FI114961 &lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|8.00&lt;br /&gt;
|1.538&lt;br /&gt;
|-&lt;br /&gt;
|9.00&lt;br /&gt;
|1.231&lt;br /&gt;
|-&lt;br /&gt;
|10.00&lt;br /&gt;
|0.923&lt;br /&gt;
|-&lt;br /&gt;
|11.00&lt;br /&gt;
|0.708&lt;br /&gt;
|-&lt;br /&gt;
|12.00&lt;br /&gt;
|0.523&lt;br /&gt;
|-&lt;br /&gt;
|13.00&lt;br /&gt;
|0.400&lt;br /&gt;
|-&lt;br /&gt;
|14.00&lt;br /&gt;
|0.308&lt;br /&gt;
|-&lt;br /&gt;
|15.00&lt;br /&gt;
|0.215&lt;br /&gt;
|-&lt;br /&gt;
|16.00&lt;br /&gt;
|0.092&lt;br /&gt;
|-&lt;br /&gt;
|17.00&lt;br /&gt;
|0.000&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+DENSO Subaru 195500-3920 16611-AA521 Estimated Values&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|5.49&lt;br /&gt;
|7.000&lt;br /&gt;
|-&lt;br /&gt;
|5.99&lt;br /&gt;
|4.900&lt;br /&gt;
|-&lt;br /&gt;
|8.03&lt;br /&gt;
|2.750&lt;br /&gt;
|-&lt;br /&gt;
|9.96&lt;br /&gt;
|1.200&lt;br /&gt;
|-&lt;br /&gt;
|11.99&lt;br /&gt;
|0.880&lt;br /&gt;
|-&lt;br /&gt;
|13.00&lt;br /&gt;
|0.750&lt;br /&gt;
|-&lt;br /&gt;
|14.02&lt;br /&gt;
|0.670&lt;br /&gt;
|-&lt;br /&gt;
|17.98&lt;br /&gt;
|0.400&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=SIMK43_Fuel_%26_Injector_Control_Model&amp;diff=1023</id>
		<title>SIMK43 Fuel &amp; Injector Control Model</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=SIMK43_Fuel_%26_Injector_Control_Model&amp;diff=1023"/>
		<updated>2026-09-17T15:19:49Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the fuel-quantity and injector-control model used by the Siemens SIMK43 software in calibration &#039;&#039;&#039;ca663056&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The important architectural point is that SIMK43 does not fundamentally calculate fuel by selecting an AFR from a conventional RPM/load table. Its primary calculation is an &#039;&#039;&#039;air-mass-to-injection-time model&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The [[SIMK43 Airflow and Load Model|airflow/load model]] first produces the final cylinder air charge. The fuel model then converts this quantity into a basic injector duration, corrects that duration for steady-state engine behaviour, changes it according to operating mode, applies lambda/adaptation and transient wall-film corrections, limits the hydraulic pulse, adds injector electrical delay and finally passes the electrical pulse width to the injection-phase scheduler.&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== General Fuel-System Architecture ==&lt;br /&gt;
&lt;br /&gt;
The normal-running fuel calculation can be divided into the following major stages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                  AIRFLOW / LOAD MODEL&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                        CC30&lt;br /&gt;
                 cylinder air charge&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                      C_TI_FAC&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                BASIC INJECTION TIME&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
             BASIC TI CORRECTION MODEL&lt;br /&gt;
                          |&lt;br /&gt;
                 +--------+--------+&lt;br /&gt;
                 |                 |&lt;br /&gt;
                 v                 v&lt;br /&gt;
          normal / idle      alternate strategy&lt;br /&gt;
          IP_TI_COR          IP_TI_FL&lt;br /&gt;
          IP_TI_COR_IS       IP_TI_NOT_CAT&lt;br /&gt;
                 |                 |&lt;br /&gt;
                 +--------+--------+&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                        CD78&lt;br /&gt;
              corrected basic injection time&lt;br /&gt;
                          |&lt;br /&gt;
               +----------+----------+&lt;br /&gt;
               |                     |&lt;br /&gt;
               v                     v&lt;br /&gt;
         fuel control /          wall-film&lt;br /&gt;
          adaptation               model&lt;br /&gt;
               |                     |&lt;br /&gt;
               |               fast + slow film&lt;br /&gt;
               |                     |&lt;br /&gt;
               |                C936 / C968&lt;br /&gt;
               +----------+----------+&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                  FINAL TI BUILDER&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                      C_TI_MIN&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
              HYDRAULIC INJECTION TIME&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                IP_TI_ADD_DLY__VB&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
               ELECTRICAL INJECTION TIME&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                 SOI / EOI SCHEDULER&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                 PER-CYLINDER OUTPUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting and cranking use a separate initial-fuel path. Once the engine is running normally, the cylinder-charge-based model becomes the main fuel source.&lt;br /&gt;
&lt;br /&gt;
== Internal Injection-Time Domain ==&lt;br /&gt;
&lt;br /&gt;
The core SIMK43 fuel calculation uses a 16-bit injection-time representation with a resolution of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 count = 0.004 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This resolution appears consistently in:&lt;br /&gt;
&lt;br /&gt;
* minimum injection time;&lt;br /&gt;
* additive fuel adaptation;&lt;br /&gt;
* start injection-time maps;&lt;br /&gt;
* wall-film injection-time corrections;&lt;br /&gt;
* final hydraulic injection time;&lt;br /&gt;
* final electrical pulse width.&lt;br /&gt;
&lt;br /&gt;
Thus, for a normal unsigned injection-time word:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI [ms] = raw * 0.004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and for a signed correction:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_COR [ms] = signed(raw) * 0.004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The injector electrical-delay table is stored at a coarser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.032 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but the executable converts its output into the normal 0.004 ms domain before adding it to the injector command.&lt;br /&gt;
&lt;br /&gt;
This distinction between &#039;&#039;&#039;hydraulic duration&#039;&#039;&#039; and &#039;&#039;&#039;electrical duration&#039;&#039;&#039; remains present all the way to the final injector scheduler.&lt;br /&gt;
&lt;br /&gt;
== Input From the Airflow Model ==&lt;br /&gt;
&lt;br /&gt;
The starting point of the normal-running fuel model is RAM variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous airflow/load reconstruction established `CC30` as the final cylinder-air-charge quantity selected by the airflow model.&lt;br /&gt;
&lt;br /&gt;
The fuel routine at approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ROM 0x847B54&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
immediately loads `CC30` and combines it with the calibration constant `C_TI_FAC`.&lt;br /&gt;
&lt;br /&gt;
The basic relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_BASE = CC30 * C_TI_FAC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fuel model therefore does not independently estimate air mass from throttle position.&lt;br /&gt;
&lt;br /&gt;
Instead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF sensor / modeled airflow&lt;br /&gt;
           |&lt;br /&gt;
           v&lt;br /&gt;
cylinder-charge model&lt;br /&gt;
           |&lt;br /&gt;
           v&lt;br /&gt;
         CC30&lt;br /&gt;
           |&lt;br /&gt;
           v&lt;br /&gt;
fuel calculation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So any systematic error in the selected cylinder charge propagates directly into basic fuel delivery.&lt;br /&gt;
&lt;br /&gt;
== Primary Air-Mass-to-Fuel Conversion - C_TI_FAC ==&lt;br /&gt;
&lt;br /&gt;
The primary conversion constant is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_FAC&lt;br /&gt;
&lt;br /&gt;
BIN address:      0x1075E&lt;br /&gt;
Units:            ms/(mg*TDC)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 executable accesses this constant directly when the normal fuel routine begins.&lt;br /&gt;
&lt;br /&gt;
The stock calibration contains approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_FAC ~= 0.1350 ms/(mg*TDC)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
air mass per cylinder event&lt;br /&gt;
            |&lt;br /&gt;
            v&lt;br /&gt;
       C_TI_FAC&lt;br /&gt;
            |&lt;br /&gt;
            v&lt;br /&gt;
     basic injector time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`C_TI_FAC` is therefore the principal global injector/fuel scaling constant.&lt;br /&gt;
&lt;br /&gt;
It is important to separate its function from later fuel-correction maps.&lt;br /&gt;
&lt;br /&gt;
`C_TI_FAC` establishes the basic relationship between calculated air charge and required injector flow time&lt;br /&gt;
&lt;br /&gt;
The later maps do not replace this conversion. They modify the result.&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF injector-scaling patches also treat `C_TI_FAC`, `C_TI_MIN`, dead time and start fuel as separate objects, which matches their separation in the executable.&lt;br /&gt;
&lt;br /&gt;
== Basic Injection-Time Correction ==&lt;br /&gt;
&lt;br /&gt;
After producing `TI_BASE`, SIMK43 does not immediately continue to final injector output.&lt;br /&gt;
&lt;br /&gt;
A steady-state correction factor is applied.&lt;br /&gt;
&lt;br /&gt;
Two maps exist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_COR__N__MAF&lt;br /&gt;
&lt;br /&gt;
IP_TI_COR_IS__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The choice depends on the operating state.&lt;br /&gt;
&lt;br /&gt;
=== IP_TI_COR__N__MAF ===&lt;br /&gt;
&lt;br /&gt;
The normal basic-TI correction map is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_COR[-] = f(N[rpm], MAF[mg/stk])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN:      0x166B4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is a 16 x 12 RPM × cylinder-charge table.&lt;br /&gt;
&lt;br /&gt;
The executable constructs its interpolation coordinates from engine speed and `CC30`, performs the map lookup, and then uses the result in the fixed-point factor operation applied to `TI_BASE`.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_BASE = CC30 * C_TI_FAC&lt;br /&gt;
&lt;br /&gt;
K_BASIC = IP_TI_COR(N, CC30)&lt;br /&gt;
&lt;br /&gt;
TI_COR = factor_operation(TI_BASE, K_BASIC)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This table corrects systematic differences between an idealized linear injector model and the actual engine/fuel-delivery system.&lt;br /&gt;
&lt;br /&gt;
It can compensate for effects such as:&lt;br /&gt;
&lt;br /&gt;
* injector non-linearity;&lt;br /&gt;
* residual cylinder-filling error;&lt;br /&gt;
* fuel-distribution differences;&lt;br /&gt;
* systematic error remaining in the air-charge model.&lt;br /&gt;
&lt;br /&gt;
It is &#039;&#039;&#039;not&#039;&#039;&#039; the primary injector-size calibration.&lt;br /&gt;
&lt;br /&gt;
=== IP_TI_COR_IS__N__MAF ===&lt;br /&gt;
&lt;br /&gt;
Idle operation has a separate correction surface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_COR_IS[-] = f(N[rpm], MAF[mg/stk])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN:      0x16774&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with dimensions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
8 x 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the corresponding idle-state bit is active, the executable changes both interpolation axes and lookup address and uses this map instead of the normal `IP_TI_COR`.&lt;br /&gt;
&lt;br /&gt;
The architecture is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                     TI_BASE&lt;br /&gt;
                        |&lt;br /&gt;
                        v&lt;br /&gt;
                    idle state?&lt;br /&gt;
                  /             \&lt;br /&gt;
                no               yes&lt;br /&gt;
                |                 |&lt;br /&gt;
                v                 v&lt;br /&gt;
          IP_TI_COR       IP_TI_COR_IS&lt;br /&gt;
                |                 |&lt;br /&gt;
                +--------+--------+&lt;br /&gt;
                         |&lt;br /&gt;
                         v&lt;br /&gt;
                 corrected basic TI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Idle therefore has an explicitly separate steady-state fuel correction model.&lt;br /&gt;
&lt;br /&gt;
== IVVT Fuel Correction ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 also modifies the basic fuel calculation to compensate for intake valve-timing changes.&lt;br /&gt;
&lt;br /&gt;
The main Siemens calibration is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_OFS_IVVT__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF locates it at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x19571&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and describes it as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Offset Injection time at TCO2&lt;br /&gt;
&lt;br /&gt;
IP_TI_OFS_IVVT[-] = f(N[rpm], MAF[mg/stk])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The table is 16 x 12 and uses signed values around a neutral center.&lt;br /&gt;
&lt;br /&gt;
The fuel model pairs this map with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAC_IVVT__VO_RATIO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defined as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAC_IVVT[-] = f(VO_RATIO[-])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`VO_RATIO` is the valve-overlap ratio.&lt;br /&gt;
&lt;br /&gt;
Thus Siemens does not simply apply the full RPM/load IVVT offset whenever IVVT is enabled.&lt;br /&gt;
&lt;br /&gt;
Instead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM / air charge&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
IP_TI_OFS_IVVT__N__MAF&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
base IVVT fuel offset&lt;br /&gt;
       |&lt;br /&gt;
       x&lt;br /&gt;
       |&lt;br /&gt;
IP_TI_FAC_IVVT__VO_RATIO&lt;br /&gt;
       ^&lt;br /&gt;
       |&lt;br /&gt;
    VO_RATIO&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
effective IVVT fuel correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The corresponding ca663056 routine produces the correction carried into the basic-TI path through RAM byte `C1CB`.&lt;br /&gt;
&lt;br /&gt;
The reason for this compensation is physical.&lt;br /&gt;
&lt;br /&gt;
Changing intake-cam position changes valve overlap and therefore changes the relationship between:&lt;br /&gt;
&lt;br /&gt;
* air passing the MAF,&lt;br /&gt;
* residual gas,&lt;br /&gt;
* reverse flow,&lt;br /&gt;
* trapped fresh air,&lt;br /&gt;
* fuel actually required by the cylinder.&lt;br /&gt;
&lt;br /&gt;
Consequently, the same measured/corrected cylinder-charge quantity can require a slightly different injector-time correction depending on the valve-overlap state.&lt;br /&gt;
&lt;br /&gt;
The IVVT fuel model corrects that difference.&lt;br /&gt;
&lt;br /&gt;
The disassembly explicitly identifies `IP_TI_OFS_IVVT__N__MAF` and `IP_TI_FAC_IVVT__VO_RATIO` as consecutive IVVT fuel-model objects.&lt;br /&gt;
&lt;br /&gt;
== Corrected Basic Injection Time - CD78 ==&lt;br /&gt;
&lt;br /&gt;
After the air-charge conversion and the selected basic correction path have been processed, the result is stored in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CD78&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`CD78` is the principal corrected basic-injection-time quantity used by downstream fuel subsystems.&lt;br /&gt;
&lt;br /&gt;
The normal branch can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC30&lt;br /&gt;
 |&lt;br /&gt;
 v&lt;br /&gt;
C_TI_FAC&lt;br /&gt;
 |&lt;br /&gt;
 v&lt;br /&gt;
TI_BASE&lt;br /&gt;
 |&lt;br /&gt;
 v&lt;br /&gt;
IP_TI_COR&lt;br /&gt;
or&lt;br /&gt;
IP_TI_COR_IS&lt;br /&gt;
 |&lt;br /&gt;
 +&lt;br /&gt;
IVVT TI correction&lt;br /&gt;
 |&lt;br /&gt;
 v&lt;br /&gt;
CD78&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`CD78` is important because it is subsequently consumed by:&lt;br /&gt;
&lt;br /&gt;
* the final running-TI builder,&lt;br /&gt;
* the fast/slow wall-film model.&lt;br /&gt;
&lt;br /&gt;
The latter point means that injector scaling and basic fuel correction influence not only steady-state fuel but also the transient fuel-film calculation.&lt;br /&gt;
&lt;br /&gt;
== Alternate Basic-Fuel Strategy ==&lt;br /&gt;
&lt;br /&gt;
The basic-fuel routine contains two different calculation paths selected by runtime bit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FD8A.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The branch is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if FD8A.0 == 1:&lt;br /&gt;
    use IP_TI_COR / IP_TI_COR_IS strategy&lt;br /&gt;
&lt;br /&gt;
if FD8A.0 == 0:&lt;br /&gt;
    use IP_TI_FL / IP_TI_NOT_CAT strategy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`FD8A.0` is &#039;&#039;&#039;not&#039;&#039;&#039; an instantaneous full-load-state flag.&lt;br /&gt;
&lt;br /&gt;
Instead, it is a configuration-derived runtime flag initialized by the variant/configuration decoding routine around:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ROM 0x852174&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The routine reads the ca663056 calibration byte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_CONF_MIL_FMY&lt;br /&gt;
BIN:      0x10151&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`C_CONF_MIL_FMY` corresponds to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONSTANT_CONFIGURE_MALFUNCTION INDICATION LAMP_FAILURE MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and is an enumerated configuration value rather than a live engine-state variable.&lt;br /&gt;
&lt;br /&gt;
The ca663056 executable decodes it as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_CONF_MIL_FMY = 0&lt;br /&gt;
    -&amp;gt; FD8A.0 = 0&lt;br /&gt;
    -&amp;gt; F9E0   = 0&lt;br /&gt;
&lt;br /&gt;
C_CONF_MIL_FMY = 1&lt;br /&gt;
    -&amp;gt; FD8A.0 = 1&lt;br /&gt;
    -&amp;gt; F9E0   = 1&lt;br /&gt;
&lt;br /&gt;
C_CONF_MIL_FMY = 2&lt;br /&gt;
    -&amp;gt; FD8A.0 = 1&lt;br /&gt;
    -&amp;gt; F9E0   = 1&lt;br /&gt;
&lt;br /&gt;
other values&lt;br /&gt;
    -&amp;gt; FD8A.0 = 0&lt;br /&gt;
    -&amp;gt; F9E0   = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus `FD8A.0` represents a decoded configuration state associated with the selected MIL / failure-memory software configuration.&lt;br /&gt;
&lt;br /&gt;
This means the fuel branch controlled by `FD8A.0` should not be interpreted as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
part load&lt;br /&gt;
   vs&lt;br /&gt;
full load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, it represents two different nominal-fuel calculation strategies selected by the ECU&#039;s configured emissions / failure-memory software variant.&lt;br /&gt;
&lt;br /&gt;
== Full-Load Enrichment - IP_TI_FL__N__AMP ==&lt;br /&gt;
&lt;br /&gt;
The first major calibration in the alternate strategy is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FL__N__AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In ca663056 the corresponding table data are at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x168CE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The definition is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FL[-] = f(N[rpm], AMP[hPa])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and its description is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Full load enrichment factor for nominal injection time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The two axes are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engine speed&lt;br /&gt;
ambient pressure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
not cylinder load.&lt;br /&gt;
&lt;br /&gt;
This is an important architectural clue.&lt;br /&gt;
&lt;br /&gt;
Full-load enrichment quantity is calibrated mainly according to how much enrichment the engine needs at a given RPM and atmospheric pressure once the ECU has already decided that full-load enrichment is active.&lt;br /&gt;
&lt;br /&gt;
The values are expressed as an enrichment amount rather than the unity-centered representation used by conventional factors such as `IP_TI_NOT_CAT`.&lt;br /&gt;
&lt;br /&gt;
==  No-Catalyst Fuel Correction - IP_TI_NOT_CAT__N__MAF ==&lt;br /&gt;
&lt;br /&gt;
Immediately after the full-load factor, the same executable branch evaluates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_NOT_CAT__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 table is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN:      0x1692E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and is defined as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_NOT_CAT[-] =&lt;br /&gt;
    f(N[rpm], MAF[mg/stk])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The map is unity-centered:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1.000 = neutral correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with all values being at 1.000, which makes the map practically unused in the stock calibration.&lt;br /&gt;
&lt;br /&gt;
=== Warm-Up No-Catalyst Correction ===&lt;br /&gt;
&lt;br /&gt;
The Siemens fuel subsystem also contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAC_NOT_CAT__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI correction without catalyst during Warm-up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a coolant-temperature-dependent companion to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_NOT_CAT__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The no-catalyst model therefore consists of two concepts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_NOT_CAT__N__MAF&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
steady RPM/load-dependent correction&lt;br /&gt;
&lt;br /&gt;
IP_TI_FAC_NOT_CAT__TCO&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
warm-up / coolant-dependent modification&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Closed-Loop Lambda Control ==&lt;br /&gt;
&lt;br /&gt;
The basic-TI calculation does not itself perform oxygen-sensor control.&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains a separate lambda-controller subsystem.&lt;br /&gt;
&lt;br /&gt;
The calibration exposes distinct proportional and integral controller maps for positive and negative lambda error and separate calibrations for idle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_LAM_POS_P__N__MAF&lt;br /&gt;
IP_LAM_POS_I__N__MAF&lt;br /&gt;
&lt;br /&gt;
IP_LAM_NEG_P__N__MAF&lt;br /&gt;
IP_LAM_NEG_I__N__MAF&lt;br /&gt;
&lt;br /&gt;
IP_LAM_POS_P_IS__MAF&lt;br /&gt;
IP_LAM_POS_I_IS__MAF&lt;br /&gt;
&lt;br /&gt;
IP_LAM_NEG_P_IS__MAF&lt;br /&gt;
IP_LAM_NEG_I_IS__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus the controller has:&lt;br /&gt;
&lt;br /&gt;
* different response when the mixture is rich versus lean;&lt;br /&gt;
* different behaviour in idle versus normal operation;&lt;br /&gt;
* proportional and accumulated correction components.&lt;br /&gt;
&lt;br /&gt;
In the ca663056 RAM implementation, important internal correction terms include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC84&lt;br /&gt;
CCA2&lt;br /&gt;
CC82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`CC84` and `CCA2` are generated independently and then combined into:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller can also explicitly drive these values back toward zero when lambda regulation is not permitted.&lt;br /&gt;
&lt;br /&gt;
The architecture is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
measured lambda error&lt;br /&gt;
       |&lt;br /&gt;
   +---+---+&lt;br /&gt;
   |       |&lt;br /&gt;
   v       v&lt;br /&gt;
 P path   I path&lt;br /&gt;
   |       |&lt;br /&gt;
  CC84    CCA2&lt;br /&gt;
   |       |&lt;br /&gt;
   +---+---+&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
      CC82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Learned Fuel Adaptation ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 keeps long-term learned fuel correction in at least two mathematically different forms.&lt;br /&gt;
&lt;br /&gt;
The two important RAM states are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F7E8&lt;br /&gt;
F7E6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiplicative Adaptation - F7E8 ===&lt;br /&gt;
&lt;br /&gt;
`F7E8` is the multiplicative learned correction.&lt;br /&gt;
&lt;br /&gt;
Its purpose is to compensate errors whose magnitude scales with fuel quantity.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* MAF scaling error;&lt;br /&gt;
* injector-flow-rate scaling error;&lt;br /&gt;
* systematic cylinder-charge error.&lt;br /&gt;
&lt;br /&gt;
If the ECU consistently requires a fixed percentage more fuel as air mass increases, multiplicative learning is the appropriate correction.&lt;br /&gt;
&lt;br /&gt;
The adaptation code passes `F7E8` through an operating-point scaling stage and generates an intermediate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F7EA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
before combining it with the instantaneous controller state.&lt;br /&gt;
&lt;br /&gt;
=== Additive Adaptation - F7E6 ===&lt;br /&gt;
&lt;br /&gt;
`F7E6` is an additive injection-time correction.&lt;br /&gt;
&lt;br /&gt;
Its physical scaling is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.004 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This form is appropriate for errors which behave approximately like a fixed time offset.&lt;br /&gt;
&lt;br /&gt;
The classic example is injector opening-delay error.&lt;br /&gt;
&lt;br /&gt;
If the injector effectively needs an extra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+0.10 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
independent of the commanded hydraulic fuel duration, an additive correction describes the fault better than a percentage.&lt;br /&gt;
&lt;br /&gt;
This explains the Siemens between:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
multiplicative learned correction&lt;br /&gt;
and:&lt;br /&gt;
additive learned correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rather than one generic OBD-style &amp;quot;LTFT&amp;quot; number.&lt;br /&gt;
&lt;br /&gt;
=== Adaptation Combiner ===&lt;br /&gt;
&lt;br /&gt;
The adaptation/controller path combines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F7E8 -&amp;gt; operating-point scaling -&amp;gt; F7EA&lt;br /&gt;
&lt;br /&gt;
F7EA + CC82 -&amp;gt; controller/adaptation combination&lt;br /&gt;
&lt;br /&gt;
then + F7E6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and stores the resulting correction path through RAM including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus lambda regulation and learning are distinct from the initial air-mass-to-basic-TI calculation but eventually influence final delivered fuel.&lt;br /&gt;
&lt;br /&gt;
== Why the Wall-Film Model Exists ==&lt;br /&gt;
&lt;br /&gt;
Steady-state fuel calculation assumes that commanded injector fuel reaches the cylinder in the expected proportion.&lt;br /&gt;
&lt;br /&gt;
During a transient this is not immediately true.&lt;br /&gt;
&lt;br /&gt;
Fuel sprayed into the port can:&lt;br /&gt;
&lt;br /&gt;
* remain suspended,&lt;br /&gt;
* strike the port wall,&lt;br /&gt;
* form a liquid film,&lt;br /&gt;
* evaporate later,&lt;br /&gt;
* be stripped by increasing airflow,&lt;br /&gt;
* remain stored over many engine cycles.&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fuel injected this cycle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is not always equal to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fuel entering cylinder this cycle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIMK43 explicitly models this delayed fuel transport.&lt;br /&gt;
&lt;br /&gt;
The wall-film model is one of the largest parts of the fuel subsystem because it tracks:&lt;br /&gt;
&lt;br /&gt;
* two different film time scales,&lt;br /&gt;
* positive and negative transitions,&lt;br /&gt;
* idle and non-idle operation,&lt;br /&gt;
* RPM,&lt;br /&gt;
* coolant temperature,&lt;br /&gt;
* current basic injection time,&lt;br /&gt;
* transient duration,&lt;br /&gt;
* valve-overlap changes.&lt;br /&gt;
&lt;br /&gt;
The central wall-film routine in ca663056 begins around:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ROM 0x83B22C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and explicitly calls the basic-TI routine so that the current corrected basic fuel quantity is available to the film calculation.&lt;br /&gt;
&lt;br /&gt;
== Fast and Slow Wall-Film Reservoirs ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 models intake-wall fuel using two separate reservoirs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST film&lt;br /&gt;
SLOW film&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The equilibrium amount stored in each reservoir is determined by separate RPM × basic-injection-time maps.&lt;br /&gt;
&lt;br /&gt;
=== IP_MASS_FAST_WF__N__TIB ===&lt;br /&gt;
&lt;br /&gt;
The fast-film equilibrium calibration is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_MASS_FAST_WF[ms] = f(N[rpm], TIB[ms])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ca663056:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x130E8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XDF description is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Wall film mass stored in the intake (fast path)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output is represented as &#039;&#039;&#039;equivalent injection time&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Thus the ECU is effectively asking:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
At this speed and current basic fuel quantity,&lt;br /&gt;
how much fuel equivalent (in injection time) should normally be stored in the fast wall film?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IP_MASS_SLOW_WF__N__TIB ===&lt;br /&gt;
&lt;br /&gt;
The slow reservoir uses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_MASS_SLOW_WF[ms] = f(N[rpm], TIB[ms])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The two maps describe the equilibrium size of two physically different fuel-storage components.&lt;br /&gt;
&lt;br /&gt;
The fast reservoir responds quickly to operating-point changes.&lt;br /&gt;
&lt;br /&gt;
The slow reservoir responds over a longer period.&lt;br /&gt;
&lt;br /&gt;
The calibration places these two objects together as the core film-mass model.&lt;br /&gt;
&lt;br /&gt;
== Film Target Versus Stored Film ==&lt;br /&gt;
&lt;br /&gt;
Once the ECU calculates the equilibrium fast and slow film masses, it compares them with the currently stored film states.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELTA_FAST = FAST_TARGET - FAST_STORED&lt;br /&gt;
&lt;br /&gt;
DELTA_SLOW = SLOW_TARGET - SLOW_STORED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the requested operating point suddenly increases, the target stored film usually increases.&lt;br /&gt;
&lt;br /&gt;
Some newly injected fuel will therefore be absorbed by the film before it reaches the cylinder.&lt;br /&gt;
&lt;br /&gt;
The ECU must temporarily inject more fuel.&lt;br /&gt;
&lt;br /&gt;
If the requested operating point suddenly decreases, the target film mass decreases.&lt;br /&gt;
&lt;br /&gt;
Fuel already stored on the wall can continue entering the cylinder.&lt;br /&gt;
&lt;br /&gt;
The ECU must temporarily reduce commanded injector fuel.&lt;br /&gt;
&lt;br /&gt;
Thus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
positive film delta -&amp;gt; wall is taking fuel -&amp;gt;&lt;br /&gt;
positive transient fuel correction&lt;br /&gt;
&lt;br /&gt;
negative film delta -&amp;gt; all is returning fuel -&amp;gt;&lt;br /&gt;
negative transient fuel correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The model is consequently symmetric in structure but not in calibration.&lt;br /&gt;
&lt;br /&gt;
Wetting and fuel release use different parameter sets.&lt;br /&gt;
&lt;br /&gt;
== Fast and Slow Film Thresholds ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 does not react to every tiny calculated change.&lt;br /&gt;
&lt;br /&gt;
The model contains separate thresholds for fast and slow film.&lt;br /&gt;
&lt;br /&gt;
Two coolant-dependent threshold curves are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_DIF_FAST_WF_THD__TCO&lt;br /&gt;
&lt;br /&gt;
IP_TI_DIF_SLOW_WF_THD__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF contains the corresponding wall-film threshold objects around:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14294&lt;br /&gt;
0x1429C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The meaning is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if |film delta| is too small:&lt;br /&gt;
    do not generate a significant transient correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The threshold depends on coolant temperature because liquid-fuel behaviour changes strongly with port/engine temperature.&lt;br /&gt;
&lt;br /&gt;
Cold surfaces retain considerably more fuel than hot surfaces.&lt;br /&gt;
&lt;br /&gt;
SIMK43 also contains basic-TI-dependent thresholds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAST_WF_THD__TIB&lt;br /&gt;
&lt;br /&gt;
IP_TI_SLOW_WF_THD__TIB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These vary threshold sensitivity according to the current fuel quantity.&lt;br /&gt;
&lt;br /&gt;
Thus the wall-film decision is based on both:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engine thermal state&lt;br /&gt;
current injector quantity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rather than one fixed acceleration-enrichment threshold.&lt;br /&gt;
&lt;br /&gt;
== Positive and Negative Load-Transient Families ==&lt;br /&gt;
&lt;br /&gt;
After a significant film change has been detected, SIMK43 selects a transient map family based on:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Whether the fuel change is positive or negative&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Whether the engine is inside or outside idle&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Whether the fast or slow film reservoir is being processed.&lt;br /&gt;
&lt;br /&gt;
This creates eight main RPM × coolant-temperature calibration surfaces.&lt;br /&gt;
&lt;br /&gt;
=== Positive Transition, Outside Idle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF__N__TCO&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF__N__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF includes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF&lt;br /&gt;
BIN 0x14574&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF&lt;br /&gt;
BIN 0x14674&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fast table is described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Temperature corection for positive load transient (fast path) out of idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the slow map performs the equivalent role for the slow reservoir.&lt;br /&gt;
&lt;br /&gt;
=== Positive Transition, Idle ===&lt;br /&gt;
&lt;br /&gt;
The idle-specific equivalents are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF_IS__N__TCO&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF_IS__N__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ca663056 contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF_IS&lt;br /&gt;
BIN 0x145F4&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF_IS&lt;br /&gt;
BIN 0x146F4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows throttle opening from idle to behave differently from the same nominal air/fuel change while the engine is already driving under load.&lt;br /&gt;
&lt;br /&gt;
=== Negative Transition, Outside Idle ===&lt;br /&gt;
&lt;br /&gt;
For decreasing load outside idle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_NEG_FAST_WF__N__TCO&lt;br /&gt;
IP_TI_TCO_NEG_SLOW_WF__N__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These maps control how aggressively the ECU removes fuel when the estimated stored-film requirement falls.&lt;br /&gt;
&lt;br /&gt;
=== Negative Transition, Idle ===&lt;br /&gt;
&lt;br /&gt;
The idle-specific negative maps are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_NEG_FAST_WF_IS__N__TCO&lt;br /&gt;
IP_TI_TCO_NEG_SLOW_WF_IS__N__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 slow-idle negative table is visible at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x144F4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and belongs to the same 8×8 RPM × coolant-temperature wall-film family.&lt;br /&gt;
&lt;br /&gt;
The overall selector is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                         FILM DELTA&lt;br /&gt;
                             |&lt;br /&gt;
                      delta sign?&lt;br /&gt;
                     /           \&lt;br /&gt;
                 positive       negative&lt;br /&gt;
                    |               |&lt;br /&gt;
                idle state?     idle state?&lt;br /&gt;
                /      \         /       \&lt;br /&gt;
              idle     run     idle      run&lt;br /&gt;
               |        |        |        |&lt;br /&gt;
           fast/slow fast/slow fast/slow fast/slow&lt;br /&gt;
               |        |        |        |&lt;br /&gt;
               +--------+--------+--------+&lt;br /&gt;
                             |&lt;br /&gt;
                             v&lt;br /&gt;
                    transient TI scaling&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall-Film Correlation / Dynamic Constants ==&lt;br /&gt;
&lt;br /&gt;
The RPM/temperature transient maps determine correction magnitude, but the film states must also evolve with time.&lt;br /&gt;
&lt;br /&gt;
For this SIMK43 contains separate correlation/dynamic curves:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_CRLC_POS_FAST_WF__TCO&lt;br /&gt;
IP_TI_CRLC_POS_SLOW_WF__TCO&lt;br /&gt;
&lt;br /&gt;
IP_TI_CRLC_NEG_FAST_WF__TCO&lt;br /&gt;
IP_TI_CRLC_NEG_SLOW_WF__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are coolant-temperature-dependent coefficients.&lt;br /&gt;
&lt;br /&gt;
Their role can be understood as the dynamic response rate of the modeled film.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILM_NEW = FILM_OLD + K_DYNAMIC * (FILM_TARGET - FILM_OLD)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is a different `K_DYNAMIC` for:&lt;br /&gt;
&lt;br /&gt;
* fast film gaining fuel,&lt;br /&gt;
* slow film gaining fuel,&lt;br /&gt;
* fast film losing fuel,&lt;br /&gt;
* slow film losing fuel.&lt;br /&gt;
&lt;br /&gt;
This is why the two reservoirs have different time behaviour.&lt;br /&gt;
&lt;br /&gt;
== First-Tip-In / Start-Temperature Effect ==&lt;br /&gt;
&lt;br /&gt;
Another wall-film calibration is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_ST_FAC_WF__TCO_ST&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defined as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_ST_FAC_WF[-] = f(TCO_ST[degC])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCO_ST = coolant temperature recorded at engine start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The description is effectively a start-temperature factor for the first tip-in / wall-film behaviour.&lt;br /&gt;
&lt;br /&gt;
This distinction between current coolant temperature and coolant temperature at start is important.&lt;br /&gt;
&lt;br /&gt;
Two engines can currently both be at, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
60 degC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but one may have started at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
55 degC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while the other started at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 degC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Their intake surfaces and accumulated liquid-fuel state can be very different.&lt;br /&gt;
&lt;br /&gt;
SIMK43 preserves this information through `TCO_ST` and modifies initial transient behaviour accordingly.&lt;br /&gt;
&lt;br /&gt;
== Positive-TI Hysteresis ==&lt;br /&gt;
&lt;br /&gt;
The wall-film subsystem also contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TIB_DIF_POS_HYS__TIB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hysteresis in TIB necessary for switching&lt;br /&gt;
from positive to negative load transient&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This prevents the transient-state machine from rapidly alternating between:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
positive film change&lt;br /&gt;
negative film change&lt;br /&gt;
positive film change&lt;br /&gt;
negative film change&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
when injection time fluctuates slightly around a boundary.&lt;br /&gt;
&lt;br /&gt;
The hysteresis itself varies with basic injection time.&lt;br /&gt;
&lt;br /&gt;
Thus, at different fuel-flow levels, the amount of change required to reverse the transient-state direction is also different.&lt;br /&gt;
&lt;br /&gt;
== Segment-Counter / Time Evolution ==&lt;br /&gt;
&lt;br /&gt;
The calibration also contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_SEG_CTR_FAC_WF__SEG_CTR_WF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which modifies wall-film behaviour as a function of a wall-film segment counter.&lt;br /&gt;
&lt;br /&gt;
This gives the transient correction an explicit time/cycle dimension.&lt;br /&gt;
&lt;br /&gt;
The model can therefore behave approximately as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
transient starts&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
segment 0&lt;br /&gt;
      |&lt;br /&gt;
segment 1&lt;br /&gt;
      |&lt;br /&gt;
segment 2&lt;br /&gt;
      |&lt;br /&gt;
...&lt;br /&gt;
      |&lt;br /&gt;
steady condition reached&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the correction evolving as the transient ages.&lt;br /&gt;
&lt;br /&gt;
This is another reason the model cannot be understood as one instantaneous tip-in enrichment table.&lt;br /&gt;
&lt;br /&gt;
== Wall Film and Lambda-Control Arbitration ==&lt;br /&gt;
&lt;br /&gt;
The wall-film model interacts directly with the closed-loop lambda controller.&lt;br /&gt;
&lt;br /&gt;
Two important Siemens calibrations are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_WF_MAX_LAM__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_T_LAM_STOP__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`IP_TI_WF_MAX_LAM__TCO` is described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_ADD_WF threshold for lambda control deactivation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The closely related XDF object shows this wall-film threshold explicitly.&lt;br /&gt;
&lt;br /&gt;
This means that if the transient wall-film correction becomes large enough, the ECU deliberately prevents lambda feedback from trying to cancel it.&lt;br /&gt;
&lt;br /&gt;
The logic is approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wall-film TI correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
greater than calibrated threshold?&lt;br /&gt;
        |&lt;br /&gt;
       yes&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
temporarily stop lambda correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
allow modeled transient fuel to act&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
wait calibrated blocking time&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
resume lambda regulation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is necessary because the oxygen sensor observes combustion only after:&lt;br /&gt;
&lt;br /&gt;
* injector delay,&lt;br /&gt;
* intake transport,&lt;br /&gt;
* combustion,&lt;br /&gt;
* exhaust transport,&lt;br /&gt;
* sensor response.&lt;br /&gt;
&lt;br /&gt;
If the lambda controller were allowed to react immediately to every transient, it would fight the predictive wall-film model.&lt;br /&gt;
&lt;br /&gt;
== Valve-Overlap Influence on Wall Film ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 has a second wall-film correction subsystem dedicated specifically to changing valve overlap.&lt;br /&gt;
&lt;br /&gt;
This is separate from ordinary load-transient wetting.&lt;br /&gt;
&lt;br /&gt;
Changing intake-cam position changes:&lt;br /&gt;
&lt;br /&gt;
* intake-port pressure,&lt;br /&gt;
* residual gas,&lt;br /&gt;
* backflow,&lt;br /&gt;
* valve-region fuel transport,&lt;br /&gt;
* film stripping around the intake valve.&lt;br /&gt;
&lt;br /&gt;
Siemens therefore calibrates VO-induced wall-film disturbance separately.&lt;br /&gt;
&lt;br /&gt;
The main objects include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_DIF_WF_POS_VO_CHG&lt;br /&gt;
IP_TI_DIF_WF_NEG_VO_CHG&lt;br /&gt;
&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_POS_VO&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_NEG_VO&lt;br /&gt;
&lt;br /&gt;
IP_FAC_WF_VO_TIB_INT_FDOUT&lt;br /&gt;
IP_FAC_WF_VO_TCO_FDOUT&lt;br /&gt;
&lt;br /&gt;
IP_FAC_TIB_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VO-Induced Film Quantity ==&lt;br /&gt;
&lt;br /&gt;
The principal positive-overlap-change map is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_DIF_WF_POS_VO_CHG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF describes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Wall film amount to be compensated, positive VO change&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and defines the map against:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VO_1&lt;br /&gt;
N_32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XDF locates this ca663056 object at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x142EC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The corresponding negative-overlap map:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_DIF_WF_NEG_VO_CHG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
handles the opposite cam transition.&lt;br /&gt;
&lt;br /&gt;
== VO Wall-Film Temperature Correction ==&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_POS_VO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x1275E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It corrects positive VO-induced wall-film behaviour according to start temperature.&lt;br /&gt;
&lt;br /&gt;
The Siemens family also contains the negative equivalent:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_NEG_VO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means a valve-overlap change after a cold start can receive a different fuel-film compensation from the same cam movement on a hot engine.&lt;br /&gt;
&lt;br /&gt;
== Basic-TI Scaling of VO Wall Film ==&lt;br /&gt;
&lt;br /&gt;
Another key calibration is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_TIB_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ca663056:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x1276E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defined as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_TIB_COR[-] = f(TIB[ms])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Correction factor of Basic Injection Time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus the VO-induced film disturbance is also scaled by the actual fuel-flow operating point.&lt;br /&gt;
&lt;br /&gt;
A cam movement at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1.5 ms basic TI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
does not necessarily require the same transient fuel compensation as the same cam movement at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ms basic TI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
even if RPM and overlap change are identical.&lt;br /&gt;
&lt;br /&gt;
== Complete Wall-Film Architecture ==&lt;br /&gt;
&lt;br /&gt;
The wall-film subsystem can now be represented more accurately as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                            CD78 / TIB&lt;br /&gt;
                               |&lt;br /&gt;
                   +-----------+-----------+&lt;br /&gt;
                   |                       |&lt;br /&gt;
                   v                       v&lt;br /&gt;
          IP_MASS_FAST_WF          IP_MASS_SLOW_WF&lt;br /&gt;
                   |                       |&lt;br /&gt;
                   v                       v&lt;br /&gt;
          fast equilibrium          slow equilibrium&lt;br /&gt;
                   |                       |&lt;br /&gt;
             compare with              compare with&lt;br /&gt;
             stored state              stored state&lt;br /&gt;
                   |                       |&lt;br /&gt;
                   v                       v&lt;br /&gt;
             FAST DELTA               SLOW DELTA&lt;br /&gt;
                   |                       |&lt;br /&gt;
       +-----------+-----------+-----------+-----------+&lt;br /&gt;
       |                       |                       |&lt;br /&gt;
       v                       v                       v&lt;br /&gt;
 TCO thresholds          TIB thresholds           hysteresis&lt;br /&gt;
       |                       |                       |&lt;br /&gt;
       +-----------+-----------+-----------+-----------+&lt;br /&gt;
                               |&lt;br /&gt;
                        sign of transient&lt;br /&gt;
                       /                \&lt;br /&gt;
                   positive           negative&lt;br /&gt;
                      |                  |&lt;br /&gt;
                 idle state?        idle state?&lt;br /&gt;
                 /        \         /        \&lt;br /&gt;
              idle        run     idle        run&lt;br /&gt;
                |          |        |          |&lt;br /&gt;
           POS idle    POS run   NEG idle   NEG run&lt;br /&gt;
            maps        maps      maps       maps&lt;br /&gt;
                |          |        |          |&lt;br /&gt;
                +----------+--------+----------+&lt;br /&gt;
                           |&lt;br /&gt;
                    fast / slow CRLC&lt;br /&gt;
                           |&lt;br /&gt;
                 TCO_ST first-tip factor&lt;br /&gt;
                           |&lt;br /&gt;
                  segment-counter factor&lt;br /&gt;
                           |&lt;br /&gt;
                           +&lt;br /&gt;
                           |&lt;br /&gt;
                    VO wall-film model&lt;br /&gt;
                           |&lt;br /&gt;
                +----------+----------+&lt;br /&gt;
                |                     |&lt;br /&gt;
                v                     v&lt;br /&gt;
              C936                  C968&lt;br /&gt;
                |                     |&lt;br /&gt;
                +----------+----------+&lt;br /&gt;
                           |&lt;br /&gt;
                           v&lt;br /&gt;
                    final TI builder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall-film system is therefore a dynamic fuel-storage model with:&lt;br /&gt;
&lt;br /&gt;
* equilibrium targets,&lt;br /&gt;
* internal memory,&lt;br /&gt;
* different filling and emptying dynamics,&lt;br /&gt;
* temperature effects,&lt;br /&gt;
* operating-state selection,&lt;br /&gt;
* hysteresis,&lt;br /&gt;
* time evolution,&lt;br /&gt;
* cam-overlap disturbance compensation.&lt;br /&gt;
&lt;br /&gt;
== C936 and C968 - Final Transient TI Terms ==&lt;br /&gt;
&lt;br /&gt;
The outputs that enter the late fuel path include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C936&lt;br /&gt;
C968&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are signed corrections in the injection-time domain.&lt;br /&gt;
&lt;br /&gt;
The final TI routine adds them after the main operating-condition fuel corrections.&lt;br /&gt;
&lt;br /&gt;
Thus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_STEADY&lt;br /&gt;
   |&lt;br /&gt;
   + C936&lt;br /&gt;
   |&lt;br /&gt;
   + C968&lt;br /&gt;
   |&lt;br /&gt;
   v&lt;br /&gt;
TI_WITH_TRANSIENT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the quantities are in the 0.004 ms TI domain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C936_ms =&lt;br /&gt;
    signed(C936) * 0.004&lt;br /&gt;
&lt;br /&gt;
C968_ms =&lt;br /&gt;
    signed(C968) * 0.004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an important distinction from the airflow model.&lt;br /&gt;
&lt;br /&gt;
The fuel model first calculates the normal required injector duration and then changes injector time directly to account for delayed liquid-fuel transport.&lt;br /&gt;
&lt;br /&gt;
== Minimum Injection Time - C_TI_MIN ==&lt;br /&gt;
&lt;br /&gt;
After all normal and transient fuel corrections are processed, the ECU applies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_MIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ca663056:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN:      0x10768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The stock raw value is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
225&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_MIN =&lt;br /&gt;
225 * 0.004&lt;br /&gt;
=&lt;br /&gt;
0.900 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_HYD = max(TI_CALCULATED, 0.900 ms)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This clamp is applied before injector electrical delay.&lt;br /&gt;
&lt;br /&gt;
Thus `C_TI_MIN` defines the minimum &#039;&#039;&#039;hydraulic fuel-flow command&#039;&#039;&#039; rather than the minimum complete electrical pulse.&lt;br /&gt;
&lt;br /&gt;
This becomes particularly important with large injectors.&lt;br /&gt;
&lt;br /&gt;
If injector scaling reduces normal idle fuel time below `C_TI_MIN`, the ECU cannot command a shorter hydraulic pulse.&lt;br /&gt;
&lt;br /&gt;
== Hydraulic VS Electrical Injection Time ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 distinguishes two separate concepts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hydraulic injection time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
electrical injector on-time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hydraulic time represents how long the injector must actually flow fuel.&lt;br /&gt;
&lt;br /&gt;
Electrical time must additionally include the delay between energizing the coil and meaningful fuel flow beginning.&lt;br /&gt;
&lt;br /&gt;
The structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
requested fuel mass&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
hydraulic TI&lt;br /&gt;
       |&lt;br /&gt;
       + injector opening delay&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
electrical pulse width&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is why injector dead time must be calibrated separately from `C_TI_FAC`.&lt;br /&gt;
&lt;br /&gt;
== Injector Dead Time - IP_TI_ADD_DLY__VB ==&lt;br /&gt;
&lt;br /&gt;
The injector electrical delay model is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_ADD_DLY__VB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XDF defines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_ADD_DLY[ms] = f(VB[V])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For ca663056 the injector-delay table is located at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x1661C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The table uses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.032 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The executable lookup routine then shifts the result by three bits:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
raw_deadtime &amp;lt;&amp;lt; 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which converts the value from using a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.032 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to using a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.004 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The converted delay is stored in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F96C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and later added to the hydraulic TI.&lt;br /&gt;
&lt;br /&gt;
Thus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_ELECTRICAL = TI_HYD + TI_DEAD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Final Electrical Injector Time ==&lt;br /&gt;
&lt;br /&gt;
The final pulse-width quantity is carried through:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F966&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while the hydraulic command is also retained separately in the output chain.&lt;br /&gt;
&lt;br /&gt;
The final relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F966 = hydraulic injector duration + F96C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F96C =&lt;br /&gt;
    voltage-dependent injector opening delay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that changing injector dead-time calibration changes the electrical pulse without changing the basic requested fuel mass.&lt;br /&gt;
&lt;br /&gt;
It also affects the scheduler because final pulse duration is subsequently an &#039;&#039;&#039;input to injection phasing&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Start and Cranking Fuel ==&lt;br /&gt;
&lt;br /&gt;
Starting is not simply normal `CC30 * C_TI_FAC` operation at low RPM.&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains dedicated absolute injection-time maps.&lt;br /&gt;
&lt;br /&gt;
ca663056 includes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Basic Injection Time at Start - MT&lt;br /&gt;
BIN 0x141F4&lt;br /&gt;
&lt;br /&gt;
Basic Injection Time at Start - AT&lt;br /&gt;
BIN 0x14244&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and separate pre-injection calibrations including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Basic Pre-Injection Time - MT&lt;br /&gt;
BIN 0x14790&lt;br /&gt;
&lt;br /&gt;
Basic Pre-Injection Time - AT&lt;br /&gt;
BIN 0x147A0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XDF injector-scaling patches modify these independently of `C_TI_FAC`, demonstrating their separate role in the executable.&lt;br /&gt;
&lt;br /&gt;
== Injection Phasing ==&lt;br /&gt;
&lt;br /&gt;
Fuel quantity and injection phase are separate calculations.&lt;br /&gt;
&lt;br /&gt;
After the final electrical pulse is known, SIMK43 uses engine speed and pulse duration as inputs to the injection scheduler.&lt;br /&gt;
&lt;br /&gt;
The structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
final electrical TI&lt;br /&gt;
       |&lt;br /&gt;
       + engine speed&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
SOI / EOI scheduling maps&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
cylinder-specific event angle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a longer pulse width, the ECU may need to begin injection earlier if it wants to meet a desired end-of-injection boundary.&lt;br /&gt;
&lt;br /&gt;
Thus pulse duration itself becomes an input to timing placement.&lt;br /&gt;
&lt;br /&gt;
The final injector pulse is therefore determined in two dimensions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
QUANTITY:&lt;br /&gt;
    how long to inject&lt;br /&gt;
&lt;br /&gt;
PHASING:&lt;br /&gt;
    where in the cycle that duration is placed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Per-Cylinder Output ==&lt;br /&gt;
&lt;br /&gt;
The final scheduler derives separate quantities for all four cylinders.&lt;br /&gt;
&lt;br /&gt;
RAM values around:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FA42&lt;br /&gt;
FA44&lt;br /&gt;
FA46&lt;br /&gt;
FA48&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are generated from the common injection scheduling quantity together with individual cylinder correction values.&lt;br /&gt;
&lt;br /&gt;
Thus the output path is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
common fuel command&lt;br /&gt;
         |&lt;br /&gt;
common injection phase&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
cylinder corrections&lt;br /&gt;
         |&lt;br /&gt;
  +----+----+----+&lt;br /&gt;
  |    |    |    |   &lt;br /&gt;
 C1   C2   C3   C4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The SIMK43 injector-control layer therefore supports cylinder-specific differentiation after the common fuel model has been calculated.&lt;br /&gt;
&lt;br /&gt;
== Complete Normal-Running Fuel Model ==&lt;br /&gt;
&lt;br /&gt;
The complete running model can now be written in functional order.&lt;br /&gt;
&lt;br /&gt;
First:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_BASE = CC30 * C_TI_FAC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the normal basic-TI strategy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if idle:&lt;br /&gt;
    K_BASIC = IP_TI_COR_IS(N, CC30)&lt;br /&gt;
else:&lt;br /&gt;
    K_BASIC = IP_TI_COR(N, CC30)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IVVT compensation is derived from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_OFS_IVVT__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
weighted by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAC_IVVT__VO_RATIO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and incorporated into the basic-TI correction path.&lt;br /&gt;
&lt;br /&gt;
The resulting corrected basic time becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CD78&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the alternate strategy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_BASE -&amp;gt; IP_TI_FL__N__AMP -&amp;gt; IP_TI_NOT_CAT__N__MAF -&amp;gt; CD78&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lambda/adaptation system separately maintains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
short-term controller correction&lt;br /&gt;
multiplicative learned correction&lt;br /&gt;
additive learned TI correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall-film model then predicts transient fuel transport using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST film target&lt;br /&gt;
SLOW film target&lt;br /&gt;
stored fast/slow states&lt;br /&gt;
positive/negative transient selection&lt;br /&gt;
idle/non-idle selection&lt;br /&gt;
coolant-temperature correction&lt;br /&gt;
start-temperature correction&lt;br /&gt;
dynamic correlation constants&lt;br /&gt;
segment/time evolution&lt;br /&gt;
valve-overlap disturbance correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and generates late injection-time corrections including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C936&lt;br /&gt;
C968&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final TI builder processes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CD78&lt;br /&gt;
 -&amp;gt; C6F0&lt;br /&gt;
 -&amp;gt; C6EC&lt;br /&gt;
 -&amp;gt; F968&lt;br /&gt;
 -&amp;gt; C5FC&lt;br /&gt;
 -&amp;gt; CFBA&lt;br /&gt;
 -&amp;gt; +C936&lt;br /&gt;
 -&amp;gt; +C968&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
before applying:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_MIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting hydraulic pulse then receives:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_ADD_DLY__VB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and becomes the final electrical pulse supplied to the injection-phase scheduler.&lt;br /&gt;
&lt;br /&gt;
== Complete Model Diagram ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                        AIRFLOW / LOAD MODEL&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                               CC30&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                             C_TI_FAC&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                              TI_BASE&lt;br /&gt;
                                 |&lt;br /&gt;
              +------------------+------------------+&lt;br /&gt;
              |                                     |&lt;br /&gt;
              v                                     v&lt;br /&gt;
       NORMAL BASIC-TI                     ALTERNATE STRATEGY&lt;br /&gt;
           STRATEGY                                |&lt;br /&gt;
              |                                     v&lt;br /&gt;
      idle-state selection                IP_TI_FL__N__AMP&lt;br /&gt;
          /           \                           |&lt;br /&gt;
         v             v                          v&lt;br /&gt;
 IP_TI_COR      IP_TI_COR_IS             IP_TI_NOT_CAT&lt;br /&gt;
         |             |                          |&lt;br /&gt;
         +------+------+                          |&lt;br /&gt;
                |                                 |&lt;br /&gt;
                +------- IVVT correction ----------+&lt;br /&gt;
                |      IP_TI_OFS_IVVT&lt;br /&gt;
                |      IP_TI_FAC_IVVT&lt;br /&gt;
                |&lt;br /&gt;
                +----------------+----------------+&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                               CD78&lt;br /&gt;
                    corrected basic injection time&lt;br /&gt;
                                 |&lt;br /&gt;
                    +------------+------------+&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    v                         v&lt;br /&gt;
            LAMBDA / ADAPTATION          WALL FILM MODEL&lt;br /&gt;
                    |                         |&lt;br /&gt;
           controller terms                  |&lt;br /&gt;
             CC84 / CCA2                     |&lt;br /&gt;
                    |                  IP_MASS_FAST_WF&lt;br /&gt;
                   CC82                IP_MASS_SLOW_WF&lt;br /&gt;
                    |                         |&lt;br /&gt;
              F7E8 / F7E6              target vs stored&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                 fast / slow delta&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                   threshold maps&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                 positive / negative&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                   idle / non-idle&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                     CRLC dynamics&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                    TCO_ST effects&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                 segment/time factor&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                  VO wall-film model&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                    C936 / C968&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    +------------+------------+&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                         FINAL TI BUILDER&lt;br /&gt;
                                 |&lt;br /&gt;
                                C6F0&lt;br /&gt;
                                 |&lt;br /&gt;
                                C6EC&lt;br /&gt;
                                 |&lt;br /&gt;
                                F968&lt;br /&gt;
                                 |&lt;br /&gt;
                                C5FC&lt;br /&gt;
                                 |&lt;br /&gt;
                                CFBA&lt;br /&gt;
                                 |&lt;br /&gt;
                              + C936&lt;br /&gt;
                                 |&lt;br /&gt;
                              + C968&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                             C_TI_MIN&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       HYDRAULIC INJECTION TI&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       IP_TI_ADD_DLY__VB&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       ELECTRICAL INJECTION TI&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       SOI / EOI SCHEDULER&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       PER-CYLINDER INJECTORS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Main Fuel Calibration Objects ==&lt;br /&gt;
&lt;br /&gt;
The principal Siemens fuel-model objects relevant to this reconstruction are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_FAC&lt;br /&gt;
    Primary cylinder-air-charge to injection-time conversion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C_TI_MIN&lt;br /&gt;
    Minimum hydraulic injection duration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_COR__N__MAF&lt;br /&gt;
    Normal RPM / cylinder-charge basic-TI correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_COR_IS__N__MAF&lt;br /&gt;
    Idle RPM / cylinder-charge basic-TI correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_OFS_IVVT__N__MAF&lt;br /&gt;
    IVVT fuel offset versus RPM and cylinder charge&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_FAC_IVVT__VO_RATIO&lt;br /&gt;
    Weighting of IVVT fuel offset according to valve overlap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_FL__N__AMP&lt;br /&gt;
    Full-load enrichment of nominal injection time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_NOT_CAT__N__MAF&lt;br /&gt;
    RPM / cylinder-charge no-catalyst TI correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_FAC_NOT_CAT__TCO&lt;br /&gt;
    Coolant-dependent no-catalyst warm-up correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_MASS_FAST_WF__N__TIB&lt;br /&gt;
    Equilibrium fast wall-film mass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_MASS_SLOW_WF__N__TIB&lt;br /&gt;
    Equilibrium slow wall-film mass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_DIF_FAST_WF_THD__TCO&lt;br /&gt;
IP_TI_DIF_SLOW_WF_THD__TCO&lt;br /&gt;
    Coolant-dependent wall-film delta thresholds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_FAST_WF_THD__TIB&lt;br /&gt;
IP_TI_SLOW_WF_THD__TIB&lt;br /&gt;
    Basic-TI-dependent wall-film thresholds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF__N__TCO&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF__N__TCO&lt;br /&gt;
    Positive transient correction outside idle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF_IS__N__TCO&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF_IS__N__TCO&lt;br /&gt;
    Positive transient correction in idle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_NEG_FAST_WF__N__TCO&lt;br /&gt;
IP_TI_TCO_NEG_SLOW_WF__N__TCO&lt;br /&gt;
    Negative transient correction outside idle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_NEG_FAST_WF_IS__N__TCO&lt;br /&gt;
IP_TI_TCO_NEG_SLOW_WF_IS__N__TCO&lt;br /&gt;
    Negative transient correction in idle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_CRLC_POS_FAST_WF__TCO&lt;br /&gt;
IP_TI_CRLC_POS_SLOW_WF__TCO&lt;br /&gt;
    Fast/slow positive film dynamics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_CRLC_NEG_FAST_WF__TCO&lt;br /&gt;
IP_TI_CRLC_NEG_SLOW_WF__TCO&lt;br /&gt;
    Fast/slow negative film dynamics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_ST_FAC_WF__TCO_ST&lt;br /&gt;
    Start-temperature / first-tip-in film factor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TIB_DIF_POS_HYS__TIB&lt;br /&gt;
    Hysteresis for switching positive/negative film state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_SEG_CTR_FAC_WF__SEG_CTR_WF&lt;br /&gt;
    Time/segment evolution of transient film correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_DIF_WF_POS_VO_CHG&lt;br /&gt;
IP_TI_DIF_WF_NEG_VO_CHG&lt;br /&gt;
    Wall-film disturbance due to positive/negative&lt;br /&gt;
    valve-overlap changes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_POS_VO&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_NEG_VO&lt;br /&gt;
    Start-temperature scaling of VO wall-film correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_FAC_WF_VO_TIB_INT_FDOUT&lt;br /&gt;
IP_FAC_WF_VO_TCO_FDOUT&lt;br /&gt;
    Fuel-history and coolant-temperature scaling&lt;br /&gt;
    of VO wall-film correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_FAC_TIB_COR&lt;br /&gt;
    Basic-injection-time scaling of VO film correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_WF_MAX_LAM__TCO&lt;br /&gt;
    Wall-film TI threshold above which lambda control&lt;br /&gt;
    is temporarily inhibited&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_T_LAM_STOP__TCO&lt;br /&gt;
    Lambda-controller blocking time after significant&lt;br /&gt;
    wall-film compensation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_ADD_DLY__VB&lt;br /&gt;
    Injector electrical opening delay versus battery voltage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=SIMK43_Fuel_%26_Injector_Control_Model&amp;diff=1022</id>
		<title>SIMK43 Fuel &amp; Injector Control Model</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=SIMK43_Fuel_%26_Injector_Control_Model&amp;diff=1022"/>
		<updated>2026-09-17T15:18:19Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Full injection model of SIMK43&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the fuel-quantity and injector-control model used by the Siemens SIMK43 software in calibration &#039;&#039;&#039;ca663056&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The important architectural point is that SIMK43 does not fundamentally calculate fuel by selecting an AFR from a conventional RPM/load table. Its primary calculation is an &#039;&#039;&#039;air-mass-to-injection-time model&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The [[SIMK43 Airflow and Load Model|airflow/load model]] first produces the final cylinder air charge. The fuel model then converts this quantity into a basic injector duration, corrects that duration for steady-state engine behaviour, changes it according to operating mode, applies lambda/adaptation and transient wall-film corrections, limits the hydraulic pulse, adds injector electrical delay and finally passes the electrical pulse width to the injection-phase scheduler.&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== General Fuel-System Architecture ==&lt;br /&gt;
&lt;br /&gt;
The normal-running fuel calculation can be divided into the following major stages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                  AIRFLOW / LOAD MODEL&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                        CC30&lt;br /&gt;
                 cylinder air charge&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                      C_TI_FAC&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                BASIC INJECTION TIME&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
             BASIC TI CORRECTION MODEL&lt;br /&gt;
                          |&lt;br /&gt;
                 +--------+--------+&lt;br /&gt;
                 |                 |&lt;br /&gt;
                 v                 v&lt;br /&gt;
          normal / idle      alternate strategy&lt;br /&gt;
          IP_TI_COR          IP_TI_FL&lt;br /&gt;
          IP_TI_COR_IS       IP_TI_NOT_CAT&lt;br /&gt;
                 |                 |&lt;br /&gt;
                 +--------+--------+&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                        CD78&lt;br /&gt;
              corrected basic injection time&lt;br /&gt;
                          |&lt;br /&gt;
               +----------+----------+&lt;br /&gt;
               |                     |&lt;br /&gt;
               v                     v&lt;br /&gt;
         fuel control /          wall-film&lt;br /&gt;
          adaptation               model&lt;br /&gt;
               |                     |&lt;br /&gt;
               |               fast + slow film&lt;br /&gt;
               |                     |&lt;br /&gt;
               |                C936 / C968&lt;br /&gt;
               +----------+----------+&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                  FINAL TI BUILDER&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                      C_TI_MIN&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
              HYDRAULIC INJECTION TIME&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                IP_TI_ADD_DLY__VB&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
               ELECTRICAL INJECTION TIME&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                 SOI / EOI SCHEDULER&lt;br /&gt;
                          |&lt;br /&gt;
                          v&lt;br /&gt;
                 PER-CYLINDER OUTPUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting and cranking use a separate initial-fuel path. Once the engine is running normally, the cylinder-charge-based model becomes the main fuel source.&lt;br /&gt;
&lt;br /&gt;
== Internal Injection-Time Domain ==&lt;br /&gt;
&lt;br /&gt;
The core SIMK43 fuel calculation uses a 16-bit injection-time representation with a resolution of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 count = 0.004 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This resolution appears consistently in:&lt;br /&gt;
&lt;br /&gt;
* minimum injection time;&lt;br /&gt;
* additive fuel adaptation;&lt;br /&gt;
* start injection-time maps;&lt;br /&gt;
* wall-film injection-time corrections;&lt;br /&gt;
* final hydraulic injection time;&lt;br /&gt;
* final electrical pulse width.&lt;br /&gt;
&lt;br /&gt;
Thus, for a normal unsigned injection-time word:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI [ms] = raw * 0.004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and for a signed correction:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_COR [ms] = signed(raw) * 0.004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The injector electrical-delay table is stored at a coarser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.032 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but the executable converts its output into the normal 0.004 ms domain before adding it to the injector command.&lt;br /&gt;
&lt;br /&gt;
This distinction between &#039;&#039;&#039;hydraulic duration&#039;&#039;&#039; and &#039;&#039;&#039;electrical duration&#039;&#039;&#039; remains present all the way to the final injector scheduler.&lt;br /&gt;
&lt;br /&gt;
== Input From the Airflow Model ==&lt;br /&gt;
&lt;br /&gt;
The starting point of the normal-running fuel model is RAM variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous airflow/load reconstruction established `CC30` as the final cylinder-air-charge quantity selected by the airflow model.&lt;br /&gt;
&lt;br /&gt;
The fuel routine at approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ROM 0x847B54&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
immediately loads `CC30` and combines it with the calibration constant `C_TI_FAC`.&lt;br /&gt;
&lt;br /&gt;
The basic relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_BASE = CC30 * C_TI_FAC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fuel model therefore does not independently estimate air mass from throttle position.&lt;br /&gt;
&lt;br /&gt;
Instead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF sensor / modeled airflow&lt;br /&gt;
           |&lt;br /&gt;
           v&lt;br /&gt;
cylinder-charge model&lt;br /&gt;
           |&lt;br /&gt;
           v&lt;br /&gt;
         CC30&lt;br /&gt;
           |&lt;br /&gt;
           v&lt;br /&gt;
fuel calculation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So any systematic error in the selected cylinder charge propagates directly into basic fuel delivery.&lt;br /&gt;
&lt;br /&gt;
== Primary Air-Mass-to-Fuel Conversion - C_TI_FAC ==&lt;br /&gt;
&lt;br /&gt;
The primary conversion constant is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_FAC&lt;br /&gt;
&lt;br /&gt;
BIN address:      0x1075E&lt;br /&gt;
Units:            ms/(mg*TDC)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 executable accesses this constant directly when the normal fuel routine begins.&lt;br /&gt;
&lt;br /&gt;
The stock calibration contains approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_FAC ~= 0.1350 ms/(mg*TDC)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
air mass per cylinder event&lt;br /&gt;
            |&lt;br /&gt;
            v&lt;br /&gt;
       C_TI_FAC&lt;br /&gt;
            |&lt;br /&gt;
            v&lt;br /&gt;
     basic injector time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`C_TI_FAC` is therefore the principal global injector/fuel scaling constant.&lt;br /&gt;
&lt;br /&gt;
It is important to separate its function from later fuel-correction maps.&lt;br /&gt;
&lt;br /&gt;
`C_TI_FAC` establishes the basic relationship between calculated air charge and required injector flow time&lt;br /&gt;
&lt;br /&gt;
The later maps do not replace this conversion. They modify the result.&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF injector-scaling patches also treat `C_TI_FAC`, `C_TI_MIN`, dead time and start fuel as separate objects, which matches their separation in the executable.&lt;br /&gt;
&lt;br /&gt;
== Basic Injection-Time Correction ==&lt;br /&gt;
&lt;br /&gt;
After producing `TI_BASE`, SIMK43 does not immediately continue to final injector output.&lt;br /&gt;
&lt;br /&gt;
A steady-state correction factor is applied.&lt;br /&gt;
&lt;br /&gt;
Two maps exist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_COR__N__MAF&lt;br /&gt;
&lt;br /&gt;
IP_TI_COR_IS__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The choice depends on the operating state.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 IP_TI_COR__N__MAF ===&lt;br /&gt;
&lt;br /&gt;
The normal basic-TI correction map is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_COR[-] = f(N[rpm], MAF[mg/stk])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN:      0x166B4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is a 16 x 12 RPM × cylinder-charge table.&lt;br /&gt;
&lt;br /&gt;
The executable constructs its interpolation coordinates from engine speed and `CC30`, performs the map lookup, and then uses the result in the fixed-point factor operation applied to `TI_BASE`.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_BASE = CC30 * C_TI_FAC&lt;br /&gt;
&lt;br /&gt;
K_BASIC = IP_TI_COR(N, CC30)&lt;br /&gt;
&lt;br /&gt;
TI_COR = factor_operation(TI_BASE, K_BASIC)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This table corrects systematic differences between an idealized linear injector model and the actual engine/fuel-delivery system.&lt;br /&gt;
&lt;br /&gt;
It can compensate for effects such as:&lt;br /&gt;
&lt;br /&gt;
* injector non-linearity;&lt;br /&gt;
* residual cylinder-filling error;&lt;br /&gt;
* fuel-distribution differences;&lt;br /&gt;
* systematic error remaining in the air-charge model.&lt;br /&gt;
&lt;br /&gt;
It is &#039;&#039;&#039;not&#039;&#039;&#039; the primary injector-size calibration.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 IP_TI_COR_IS__N__MAF ===&lt;br /&gt;
&lt;br /&gt;
Idle operation has a separate correction surface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_COR_IS[-] = f(N[rpm], MAF[mg/stk])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN:      0x16774&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with dimensions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
8 x 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the corresponding idle-state bit is active, the executable changes both interpolation axes and lookup address and uses this map instead of the normal `IP_TI_COR`.&lt;br /&gt;
&lt;br /&gt;
The architecture is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                     TI_BASE&lt;br /&gt;
                        |&lt;br /&gt;
                        v&lt;br /&gt;
                    idle state?&lt;br /&gt;
                  /             \&lt;br /&gt;
                no               yes&lt;br /&gt;
                |                 |&lt;br /&gt;
                v                 v&lt;br /&gt;
          IP_TI_COR       IP_TI_COR_IS&lt;br /&gt;
                |                 |&lt;br /&gt;
                +--------+--------+&lt;br /&gt;
                         |&lt;br /&gt;
                         v&lt;br /&gt;
                 corrected basic TI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Idle therefore has an explicitly separate steady-state fuel correction model.&lt;br /&gt;
&lt;br /&gt;
== IVVT Fuel Correction ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 also modifies the basic fuel calculation to compensate for intake valve-timing changes.&lt;br /&gt;
&lt;br /&gt;
The main Siemens calibration is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_OFS_IVVT__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF locates it at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x19571&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and describes it as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Offset Injection time at TCO2&lt;br /&gt;
&lt;br /&gt;
IP_TI_OFS_IVVT[-] = f(N[rpm], MAF[mg/stk])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The table is 16 x 12 and uses signed values around a neutral center.&lt;br /&gt;
&lt;br /&gt;
The fuel model pairs this map with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAC_IVVT__VO_RATIO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defined as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAC_IVVT[-] = f(VO_RATIO[-])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`VO_RATIO` is the valve-overlap ratio.&lt;br /&gt;
&lt;br /&gt;
Thus Siemens does not simply apply the full RPM/load IVVT offset whenever IVVT is enabled.&lt;br /&gt;
&lt;br /&gt;
Instead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM / air charge&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
IP_TI_OFS_IVVT__N__MAF&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
base IVVT fuel offset&lt;br /&gt;
       |&lt;br /&gt;
       x&lt;br /&gt;
       |&lt;br /&gt;
IP_TI_FAC_IVVT__VO_RATIO&lt;br /&gt;
       ^&lt;br /&gt;
       |&lt;br /&gt;
    VO_RATIO&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
effective IVVT fuel correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The corresponding ca663056 routine produces the correction carried into the basic-TI path through RAM byte `C1CB`.&lt;br /&gt;
&lt;br /&gt;
The reason for this compensation is physical.&lt;br /&gt;
&lt;br /&gt;
Changing intake-cam position changes valve overlap and therefore changes the relationship between:&lt;br /&gt;
&lt;br /&gt;
* air passing the MAF,&lt;br /&gt;
* residual gas,&lt;br /&gt;
* reverse flow,&lt;br /&gt;
* trapped fresh air,&lt;br /&gt;
* fuel actually required by the cylinder.&lt;br /&gt;
&lt;br /&gt;
Consequently, the same measured/corrected cylinder-charge quantity can require a slightly different injector-time correction depending on the valve-overlap state.&lt;br /&gt;
&lt;br /&gt;
The IVVT fuel model corrects that difference.&lt;br /&gt;
&lt;br /&gt;
The disassembly explicitly identifies `IP_TI_OFS_IVVT__N__MAF` and `IP_TI_FAC_IVVT__VO_RATIO` as consecutive IVVT fuel-model objects.&lt;br /&gt;
&lt;br /&gt;
== Corrected Basic Injection Time - CD78 ==&lt;br /&gt;
&lt;br /&gt;
After the air-charge conversion and the selected basic correction path have been processed, the result is stored in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CD78&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`CD78` is the principal corrected basic-injection-time quantity used by downstream fuel subsystems.&lt;br /&gt;
&lt;br /&gt;
The normal branch can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC30&lt;br /&gt;
 |&lt;br /&gt;
 v&lt;br /&gt;
C_TI_FAC&lt;br /&gt;
 |&lt;br /&gt;
 v&lt;br /&gt;
TI_BASE&lt;br /&gt;
 |&lt;br /&gt;
 v&lt;br /&gt;
IP_TI_COR&lt;br /&gt;
or&lt;br /&gt;
IP_TI_COR_IS&lt;br /&gt;
 |&lt;br /&gt;
 +&lt;br /&gt;
IVVT TI correction&lt;br /&gt;
 |&lt;br /&gt;
 v&lt;br /&gt;
CD78&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`CD78` is important because it is subsequently consumed by:&lt;br /&gt;
&lt;br /&gt;
* the final running-TI builder,&lt;br /&gt;
* the fast/slow wall-film model.&lt;br /&gt;
&lt;br /&gt;
The latter point means that injector scaling and basic fuel correction influence not only steady-state fuel but also the transient fuel-film calculation.&lt;br /&gt;
&lt;br /&gt;
== Alternate Basic-Fuel Strategy ==&lt;br /&gt;
&lt;br /&gt;
The basic-fuel routine contains two different calculation paths selected by runtime bit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FD8A.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The branch is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if FD8A.0 == 1:&lt;br /&gt;
    use IP_TI_COR / IP_TI_COR_IS strategy&lt;br /&gt;
&lt;br /&gt;
if FD8A.0 == 0:&lt;br /&gt;
    use IP_TI_FL / IP_TI_NOT_CAT strategy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`FD8A.0` is &#039;&#039;&#039;not&#039;&#039;&#039; an instantaneous full-load-state flag.&lt;br /&gt;
&lt;br /&gt;
Instead, it is a configuration-derived runtime flag initialized by the variant/configuration decoding routine around:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ROM 0x852174&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The routine reads the ca663056 calibration byte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_CONF_MIL_FMY&lt;br /&gt;
BIN:      0x10151&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`C_CONF_MIL_FMY` corresponds to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONSTANT_CONFIGURE_MALFUNCTION INDICATION LAMP_FAILURE MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and is an enumerated configuration value rather than a live engine-state variable.&lt;br /&gt;
&lt;br /&gt;
The ca663056 executable decodes it as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_CONF_MIL_FMY = 0&lt;br /&gt;
    -&amp;gt; FD8A.0 = 0&lt;br /&gt;
    -&amp;gt; F9E0   = 0&lt;br /&gt;
&lt;br /&gt;
C_CONF_MIL_FMY = 1&lt;br /&gt;
    -&amp;gt; FD8A.0 = 1&lt;br /&gt;
    -&amp;gt; F9E0   = 1&lt;br /&gt;
&lt;br /&gt;
C_CONF_MIL_FMY = 2&lt;br /&gt;
    -&amp;gt; FD8A.0 = 1&lt;br /&gt;
    -&amp;gt; F9E0   = 1&lt;br /&gt;
&lt;br /&gt;
other values&lt;br /&gt;
    -&amp;gt; FD8A.0 = 0&lt;br /&gt;
    -&amp;gt; F9E0   = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus `FD8A.0` represents a decoded configuration state associated with the selected MIL / failure-memory software configuration.&lt;br /&gt;
&lt;br /&gt;
This means the fuel branch controlled by `FD8A.0` should not be interpreted as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
part load&lt;br /&gt;
   vs&lt;br /&gt;
full load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, it represents two different nominal-fuel calculation strategies selected by the ECU&#039;s configured emissions / failure-memory software variant.&lt;br /&gt;
&lt;br /&gt;
== Full-Load Enrichment - IP_TI_FL__N__AMP ==&lt;br /&gt;
&lt;br /&gt;
The first major calibration in the alternate strategy is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FL__N__AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In ca663056 the corresponding table data are at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x168CE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The definition is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FL[-] = f(N[rpm], AMP[hPa])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and its description is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Full load enrichment factor for nominal injection time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The two axes are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engine speed&lt;br /&gt;
ambient pressure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
not cylinder load.&lt;br /&gt;
&lt;br /&gt;
This is an important architectural clue.&lt;br /&gt;
&lt;br /&gt;
Full-load enrichment quantity is calibrated mainly according to how much enrichment the engine needs at a given RPM and atmospheric pressure once the ECU has already decided that full-load enrichment is active.&lt;br /&gt;
&lt;br /&gt;
The values are expressed as an enrichment amount rather than the unity-centered representation used by conventional factors such as `IP_TI_NOT_CAT`.&lt;br /&gt;
&lt;br /&gt;
==  No-Catalyst Fuel Correction - IP_TI_NOT_CAT__N__MAF ==&lt;br /&gt;
&lt;br /&gt;
Immediately after the full-load factor, the same executable branch evaluates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_NOT_CAT__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 table is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN:      0x1692E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and is defined as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_NOT_CAT[-] =&lt;br /&gt;
    f(N[rpm], MAF[mg/stk])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The map is unity-centered:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1.000 = neutral correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with all values being at 1.000, which makes the map practically unused in the stock calibration.&lt;br /&gt;
&lt;br /&gt;
=== Warm-Up No-Catalyst Correction ===&lt;br /&gt;
&lt;br /&gt;
The Siemens fuel subsystem also contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAC_NOT_CAT__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI correction without catalyst during Warm-up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a coolant-temperature-dependent companion to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_NOT_CAT__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The no-catalyst model therefore consists of two concepts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_NOT_CAT__N__MAF&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
steady RPM/load-dependent correction&lt;br /&gt;
&lt;br /&gt;
IP_TI_FAC_NOT_CAT__TCO&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
warm-up / coolant-dependent modification&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Closed-Loop Lambda Control ==&lt;br /&gt;
&lt;br /&gt;
The basic-TI calculation does not itself perform oxygen-sensor control.&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains a separate lambda-controller subsystem.&lt;br /&gt;
&lt;br /&gt;
The calibration exposes distinct proportional and integral controller maps for positive and negative lambda error and separate calibrations for idle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_LAM_POS_P__N__MAF&lt;br /&gt;
IP_LAM_POS_I__N__MAF&lt;br /&gt;
&lt;br /&gt;
IP_LAM_NEG_P__N__MAF&lt;br /&gt;
IP_LAM_NEG_I__N__MAF&lt;br /&gt;
&lt;br /&gt;
IP_LAM_POS_P_IS__MAF&lt;br /&gt;
IP_LAM_POS_I_IS__MAF&lt;br /&gt;
&lt;br /&gt;
IP_LAM_NEG_P_IS__MAF&lt;br /&gt;
IP_LAM_NEG_I_IS__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus the controller has:&lt;br /&gt;
&lt;br /&gt;
* different response when the mixture is rich versus lean;&lt;br /&gt;
* different behaviour in idle versus normal operation;&lt;br /&gt;
* proportional and accumulated correction components.&lt;br /&gt;
&lt;br /&gt;
In the ca663056 RAM implementation, important internal correction terms include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC84&lt;br /&gt;
CCA2&lt;br /&gt;
CC82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`CC84` and `CCA2` are generated independently and then combined into:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller can also explicitly drive these values back toward zero when lambda regulation is not permitted.&lt;br /&gt;
&lt;br /&gt;
The architecture is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
measured lambda error&lt;br /&gt;
       |&lt;br /&gt;
   +---+---+&lt;br /&gt;
   |       |&lt;br /&gt;
   v       v&lt;br /&gt;
 P path   I path&lt;br /&gt;
   |       |&lt;br /&gt;
  CC84    CCA2&lt;br /&gt;
   |       |&lt;br /&gt;
   +---+---+&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
      CC82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Learned Fuel Adaptation ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 keeps long-term learned fuel correction in at least two mathematically different forms.&lt;br /&gt;
&lt;br /&gt;
The two important RAM states are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F7E8&lt;br /&gt;
F7E6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiplicative Adaptation - F7E8 ===&lt;br /&gt;
&lt;br /&gt;
`F7E8` is the multiplicative learned correction.&lt;br /&gt;
&lt;br /&gt;
Its purpose is to compensate errors whose magnitude scales with fuel quantity.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* MAF scaling error;&lt;br /&gt;
* injector-flow-rate scaling error;&lt;br /&gt;
* systematic cylinder-charge error.&lt;br /&gt;
&lt;br /&gt;
If the ECU consistently requires a fixed percentage more fuel as air mass increases, multiplicative learning is the appropriate correction.&lt;br /&gt;
&lt;br /&gt;
The adaptation code passes `F7E8` through an operating-point scaling stage and generates an intermediate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F7EA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
before combining it with the instantaneous controller state.&lt;br /&gt;
&lt;br /&gt;
=== Additive Adaptation - F7E6 ===&lt;br /&gt;
&lt;br /&gt;
`F7E6` is an additive injection-time correction.&lt;br /&gt;
&lt;br /&gt;
Its physical scaling is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.004 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This form is appropriate for errors which behave approximately like a fixed time offset.&lt;br /&gt;
&lt;br /&gt;
The classic example is injector opening-delay error.&lt;br /&gt;
&lt;br /&gt;
If the injector effectively needs an extra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+0.10 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
independent of the commanded hydraulic fuel duration, an additive correction describes the fault better than a percentage.&lt;br /&gt;
&lt;br /&gt;
This explains the Siemens between:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
multiplicative learned correction&lt;br /&gt;
and:&lt;br /&gt;
additive learned correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rather than one generic OBD-style &amp;quot;LTFT&amp;quot; number.&lt;br /&gt;
&lt;br /&gt;
=== Adaptation Combiner ===&lt;br /&gt;
&lt;br /&gt;
The adaptation/controller path combines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F7E8 -&amp;gt; operating-point scaling -&amp;gt; F7EA&lt;br /&gt;
&lt;br /&gt;
F7EA + CC82 -&amp;gt; controller/adaptation combination&lt;br /&gt;
&lt;br /&gt;
then + F7E6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and stores the resulting correction path through RAM including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CC80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus lambda regulation and learning are distinct from the initial air-mass-to-basic-TI calculation but eventually influence final delivered fuel.&lt;br /&gt;
&lt;br /&gt;
== Why the Wall-Film Model Exists ==&lt;br /&gt;
&lt;br /&gt;
Steady-state fuel calculation assumes that commanded injector fuel reaches the cylinder in the expected proportion.&lt;br /&gt;
&lt;br /&gt;
During a transient this is not immediately true.&lt;br /&gt;
&lt;br /&gt;
Fuel sprayed into the port can:&lt;br /&gt;
&lt;br /&gt;
* remain suspended,&lt;br /&gt;
* strike the port wall,&lt;br /&gt;
* form a liquid film,&lt;br /&gt;
* evaporate later,&lt;br /&gt;
* be stripped by increasing airflow,&lt;br /&gt;
* remain stored over many engine cycles.&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fuel injected this cycle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is not always equal to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fuel entering cylinder this cycle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIMK43 explicitly models this delayed fuel transport.&lt;br /&gt;
&lt;br /&gt;
The wall-film model is one of the largest parts of the fuel subsystem because it tracks:&lt;br /&gt;
&lt;br /&gt;
* two different film time scales,&lt;br /&gt;
* positive and negative transitions,&lt;br /&gt;
* idle and non-idle operation,&lt;br /&gt;
* RPM,&lt;br /&gt;
* coolant temperature,&lt;br /&gt;
* current basic injection time,&lt;br /&gt;
* transient duration,&lt;br /&gt;
* valve-overlap changes.&lt;br /&gt;
&lt;br /&gt;
The central wall-film routine in ca663056 begins around:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ROM 0x83B22C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and explicitly calls the basic-TI routine so that the current corrected basic fuel quantity is available to the film calculation.&lt;br /&gt;
&lt;br /&gt;
== Fast and Slow Wall-Film Reservoirs ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 models intake-wall fuel using two separate reservoirs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST film&lt;br /&gt;
SLOW film&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The equilibrium amount stored in each reservoir is determined by separate RPM × basic-injection-time maps.&lt;br /&gt;
&lt;br /&gt;
=== IP_MASS_FAST_WF__N__TIB ===&lt;br /&gt;
&lt;br /&gt;
The fast-film equilibrium calibration is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_MASS_FAST_WF[ms] = f(N[rpm], TIB[ms])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ca663056:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x130E8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XDF description is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Wall film mass stored in the intake (fast path)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output is represented as &#039;&#039;&#039;equivalent injection time&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Thus the ECU is effectively asking:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
At this speed and current basic fuel quantity,&lt;br /&gt;
how much fuel equivalent (in injection time) should normally be stored in the fast wall film?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IP_MASS_SLOW_WF__N__TIB ===&lt;br /&gt;
&lt;br /&gt;
The slow reservoir uses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_MASS_SLOW_WF[ms] = f(N[rpm], TIB[ms])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The two maps describe the equilibrium size of two physically different fuel-storage components.&lt;br /&gt;
&lt;br /&gt;
The fast reservoir responds quickly to operating-point changes.&lt;br /&gt;
&lt;br /&gt;
The slow reservoir responds over a longer period.&lt;br /&gt;
&lt;br /&gt;
The calibration places these two objects together as the core film-mass model.&lt;br /&gt;
&lt;br /&gt;
== Film Target Versus Stored Film ==&lt;br /&gt;
&lt;br /&gt;
Once the ECU calculates the equilibrium fast and slow film masses, it compares them with the currently stored film states.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELTA_FAST = FAST_TARGET - FAST_STORED&lt;br /&gt;
&lt;br /&gt;
DELTA_SLOW = SLOW_TARGET - SLOW_STORED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the requested operating point suddenly increases, the target stored film usually increases.&lt;br /&gt;
&lt;br /&gt;
Some newly injected fuel will therefore be absorbed by the film before it reaches the cylinder.&lt;br /&gt;
&lt;br /&gt;
The ECU must temporarily inject more fuel.&lt;br /&gt;
&lt;br /&gt;
If the requested operating point suddenly decreases, the target film mass decreases.&lt;br /&gt;
&lt;br /&gt;
Fuel already stored on the wall can continue entering the cylinder.&lt;br /&gt;
&lt;br /&gt;
The ECU must temporarily reduce commanded injector fuel.&lt;br /&gt;
&lt;br /&gt;
Thus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
positive film delta -&amp;gt; wall is taking fuel -&amp;gt;&lt;br /&gt;
positive transient fuel correction&lt;br /&gt;
&lt;br /&gt;
negative film delta -&amp;gt; all is returning fuel -&amp;gt;&lt;br /&gt;
negative transient fuel correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The model is consequently symmetric in structure but not in calibration.&lt;br /&gt;
&lt;br /&gt;
Wetting and fuel release use different parameter sets.&lt;br /&gt;
&lt;br /&gt;
== Fast and Slow Film Thresholds ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 does not react to every tiny calculated change.&lt;br /&gt;
&lt;br /&gt;
The model contains separate thresholds for fast and slow film.&lt;br /&gt;
&lt;br /&gt;
Two coolant-dependent threshold curves are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_DIF_FAST_WF_THD__TCO&lt;br /&gt;
&lt;br /&gt;
IP_TI_DIF_SLOW_WF_THD__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF contains the corresponding wall-film threshold objects around:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14294&lt;br /&gt;
0x1429C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The meaning is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if |film delta| is too small:&lt;br /&gt;
    do not generate a significant transient correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The threshold depends on coolant temperature because liquid-fuel behaviour changes strongly with port/engine temperature.&lt;br /&gt;
&lt;br /&gt;
Cold surfaces retain considerably more fuel than hot surfaces.&lt;br /&gt;
&lt;br /&gt;
SIMK43 also contains basic-TI-dependent thresholds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAST_WF_THD__TIB&lt;br /&gt;
&lt;br /&gt;
IP_TI_SLOW_WF_THD__TIB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These vary threshold sensitivity according to the current fuel quantity.&lt;br /&gt;
&lt;br /&gt;
Thus the wall-film decision is based on both:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engine thermal state&lt;br /&gt;
current injector quantity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rather than one fixed acceleration-enrichment threshold.&lt;br /&gt;
&lt;br /&gt;
== Positive and Negative Load-Transient Families ==&lt;br /&gt;
&lt;br /&gt;
After a significant film change has been detected, SIMK43 selects a transient map family based on:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Whether the fuel change is positive or negative&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Whether the engine is inside or outside idle&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Whether the fast or slow film reservoir is being processed.&lt;br /&gt;
&lt;br /&gt;
This creates eight main RPM × coolant-temperature calibration surfaces.&lt;br /&gt;
&lt;br /&gt;
=== Positive Transition, Outside Idle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF__N__TCO&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF__N__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF includes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF&lt;br /&gt;
BIN 0x14574&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF&lt;br /&gt;
BIN 0x14674&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fast table is described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Temperature corection for positive load transient (fast path) out of idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the slow map performs the equivalent role for the slow reservoir.&lt;br /&gt;
&lt;br /&gt;
=== Positive Transition, Idle ===&lt;br /&gt;
&lt;br /&gt;
The idle-specific equivalents are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF_IS__N__TCO&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF_IS__N__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ca663056 contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF_IS&lt;br /&gt;
BIN 0x145F4&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF_IS&lt;br /&gt;
BIN 0x146F4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows throttle opening from idle to behave differently from the same nominal air/fuel change while the engine is already driving under load.&lt;br /&gt;
&lt;br /&gt;
=== Negative Transition, Outside Idle ===&lt;br /&gt;
&lt;br /&gt;
For decreasing load outside idle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_NEG_FAST_WF__N__TCO&lt;br /&gt;
IP_TI_TCO_NEG_SLOW_WF__N__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These maps control how aggressively the ECU removes fuel when the estimated stored-film requirement falls.&lt;br /&gt;
&lt;br /&gt;
=== Negative Transition, Idle ===&lt;br /&gt;
&lt;br /&gt;
The idle-specific negative maps are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_NEG_FAST_WF_IS__N__TCO&lt;br /&gt;
IP_TI_TCO_NEG_SLOW_WF_IS__N__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 slow-idle negative table is visible at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x144F4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and belongs to the same 8×8 RPM × coolant-temperature wall-film family.&lt;br /&gt;
&lt;br /&gt;
The overall selector is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                         FILM DELTA&lt;br /&gt;
                             |&lt;br /&gt;
                      delta sign?&lt;br /&gt;
                     /           \&lt;br /&gt;
                 positive       negative&lt;br /&gt;
                    |               |&lt;br /&gt;
                idle state?     idle state?&lt;br /&gt;
                /      \         /       \&lt;br /&gt;
              idle     run     idle      run&lt;br /&gt;
               |        |        |        |&lt;br /&gt;
           fast/slow fast/slow fast/slow fast/slow&lt;br /&gt;
               |        |        |        |&lt;br /&gt;
               +--------+--------+--------+&lt;br /&gt;
                             |&lt;br /&gt;
                             v&lt;br /&gt;
                    transient TI scaling&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wall-Film Correlation / Dynamic Constants ==&lt;br /&gt;
&lt;br /&gt;
The RPM/temperature transient maps determine correction magnitude, but the film states must also evolve with time.&lt;br /&gt;
&lt;br /&gt;
For this SIMK43 contains separate correlation/dynamic curves:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_CRLC_POS_FAST_WF__TCO&lt;br /&gt;
IP_TI_CRLC_POS_SLOW_WF__TCO&lt;br /&gt;
&lt;br /&gt;
IP_TI_CRLC_NEG_FAST_WF__TCO&lt;br /&gt;
IP_TI_CRLC_NEG_SLOW_WF__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are coolant-temperature-dependent coefficients.&lt;br /&gt;
&lt;br /&gt;
Their role can be understood as the dynamic response rate of the modeled film.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILM_NEW = FILM_OLD + K_DYNAMIC * (FILM_TARGET - FILM_OLD)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is a different `K_DYNAMIC` for:&lt;br /&gt;
&lt;br /&gt;
* fast film gaining fuel,&lt;br /&gt;
* slow film gaining fuel,&lt;br /&gt;
* fast film losing fuel,&lt;br /&gt;
* slow film losing fuel.&lt;br /&gt;
&lt;br /&gt;
This is why the two reservoirs have different time behaviour.&lt;br /&gt;
&lt;br /&gt;
== First-Tip-In / Start-Temperature Effect ==&lt;br /&gt;
&lt;br /&gt;
Another wall-film calibration is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_ST_FAC_WF__TCO_ST&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defined as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_TCO_ST_FAC_WF[-] = f(TCO_ST[degC])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCO_ST = coolant temperature recorded at engine start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The description is effectively a start-temperature factor for the first tip-in / wall-film behaviour.&lt;br /&gt;
&lt;br /&gt;
This distinction between current coolant temperature and coolant temperature at start is important.&lt;br /&gt;
&lt;br /&gt;
Two engines can currently both be at, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
60 degC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but one may have started at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
55 degC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while the other started at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 degC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Their intake surfaces and accumulated liquid-fuel state can be very different.&lt;br /&gt;
&lt;br /&gt;
SIMK43 preserves this information through `TCO_ST` and modifies initial transient behaviour accordingly.&lt;br /&gt;
&lt;br /&gt;
== Positive-TI Hysteresis ==&lt;br /&gt;
&lt;br /&gt;
The wall-film subsystem also contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TIB_DIF_POS_HYS__TIB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hysteresis in TIB necessary for switching&lt;br /&gt;
from positive to negative load transient&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This prevents the transient-state machine from rapidly alternating between:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
positive film change&lt;br /&gt;
negative film change&lt;br /&gt;
positive film change&lt;br /&gt;
negative film change&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
when injection time fluctuates slightly around a boundary.&lt;br /&gt;
&lt;br /&gt;
The hysteresis itself varies with basic injection time.&lt;br /&gt;
&lt;br /&gt;
Thus, at different fuel-flow levels, the amount of change required to reverse the transient-state direction is also different.&lt;br /&gt;
&lt;br /&gt;
== Segment-Counter / Time Evolution ==&lt;br /&gt;
&lt;br /&gt;
The calibration also contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_SEG_CTR_FAC_WF__SEG_CTR_WF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which modifies wall-film behaviour as a function of a wall-film segment counter.&lt;br /&gt;
&lt;br /&gt;
This gives the transient correction an explicit time/cycle dimension.&lt;br /&gt;
&lt;br /&gt;
The model can therefore behave approximately as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
transient starts&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
segment 0&lt;br /&gt;
      |&lt;br /&gt;
segment 1&lt;br /&gt;
      |&lt;br /&gt;
segment 2&lt;br /&gt;
      |&lt;br /&gt;
...&lt;br /&gt;
      |&lt;br /&gt;
steady condition reached&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the correction evolving as the transient ages.&lt;br /&gt;
&lt;br /&gt;
This is another reason the model cannot be understood as one instantaneous tip-in enrichment table.&lt;br /&gt;
&lt;br /&gt;
== Wall Film and Lambda-Control Arbitration ==&lt;br /&gt;
&lt;br /&gt;
The wall-film model interacts directly with the closed-loop lambda controller.&lt;br /&gt;
&lt;br /&gt;
Two important Siemens calibrations are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_WF_MAX_LAM__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_T_LAM_STOP__TCO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`IP_TI_WF_MAX_LAM__TCO` is described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_ADD_WF threshold for lambda control deactivation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The closely related XDF object shows this wall-film threshold explicitly.&lt;br /&gt;
&lt;br /&gt;
This means that if the transient wall-film correction becomes large enough, the ECU deliberately prevents lambda feedback from trying to cancel it.&lt;br /&gt;
&lt;br /&gt;
The logic is approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wall-film TI correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
greater than calibrated threshold?&lt;br /&gt;
        |&lt;br /&gt;
       yes&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
temporarily stop lambda correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
allow modeled transient fuel to act&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
wait calibrated blocking time&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
resume lambda regulation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is necessary because the oxygen sensor observes combustion only after:&lt;br /&gt;
&lt;br /&gt;
* injector delay,&lt;br /&gt;
* intake transport,&lt;br /&gt;
* combustion,&lt;br /&gt;
* exhaust transport,&lt;br /&gt;
* sensor response.&lt;br /&gt;
&lt;br /&gt;
If the lambda controller were allowed to react immediately to every transient, it would fight the predictive wall-film model.&lt;br /&gt;
&lt;br /&gt;
== Valve-Overlap Influence on Wall Film ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 has a second wall-film correction subsystem dedicated specifically to changing valve overlap.&lt;br /&gt;
&lt;br /&gt;
This is separate from ordinary load-transient wetting.&lt;br /&gt;
&lt;br /&gt;
Changing intake-cam position changes:&lt;br /&gt;
&lt;br /&gt;
* intake-port pressure,&lt;br /&gt;
* residual gas,&lt;br /&gt;
* backflow,&lt;br /&gt;
* valve-region fuel transport,&lt;br /&gt;
* film stripping around the intake valve.&lt;br /&gt;
&lt;br /&gt;
Siemens therefore calibrates VO-induced wall-film disturbance separately.&lt;br /&gt;
&lt;br /&gt;
The main objects include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_DIF_WF_POS_VO_CHG&lt;br /&gt;
IP_TI_DIF_WF_NEG_VO_CHG&lt;br /&gt;
&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_POS_VO&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_NEG_VO&lt;br /&gt;
&lt;br /&gt;
IP_FAC_WF_VO_TIB_INT_FDOUT&lt;br /&gt;
IP_FAC_WF_VO_TCO_FDOUT&lt;br /&gt;
&lt;br /&gt;
IP_FAC_TIB_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VO-Induced Film Quantity ==&lt;br /&gt;
&lt;br /&gt;
The principal positive-overlap-change map is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_DIF_WF_POS_VO_CHG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF describes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Wall film amount to be compensated, positive VO change&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and defines the map against:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VO_1&lt;br /&gt;
N_32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XDF locates this ca663056 object at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x142EC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The corresponding negative-overlap map:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_DIF_WF_NEG_VO_CHG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
handles the opposite cam transition.&lt;br /&gt;
&lt;br /&gt;
== VO Wall-Film Temperature Correction ==&lt;br /&gt;
&lt;br /&gt;
The ca663056 XDF contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_POS_VO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x1275E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It corrects positive VO-induced wall-film behaviour according to start temperature.&lt;br /&gt;
&lt;br /&gt;
The Siemens family also contains the negative equivalent:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_NEG_VO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means a valve-overlap change after a cold start can receive a different fuel-film compensation from the same cam movement on a hot engine.&lt;br /&gt;
&lt;br /&gt;
== Basic-TI Scaling of VO Wall Film ==&lt;br /&gt;
&lt;br /&gt;
Another key calibration is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_TIB_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ca663056:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x1276E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defined as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_TIB_COR[-] = f(TIB[ms])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and described as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Correction factor of Basic Injection Time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus the VO-induced film disturbance is also scaled by the actual fuel-flow operating point.&lt;br /&gt;
&lt;br /&gt;
A cam movement at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1.5 ms basic TI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
does not necessarily require the same transient fuel compensation as the same cam movement at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ms basic TI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
even if RPM and overlap change are identical.&lt;br /&gt;
&lt;br /&gt;
== Complete Wall-Film Architecture ==&lt;br /&gt;
&lt;br /&gt;
The wall-film subsystem can now be represented more accurately as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                            CD78 / TIB&lt;br /&gt;
                               |&lt;br /&gt;
                   +-----------+-----------+&lt;br /&gt;
                   |                       |&lt;br /&gt;
                   v                       v&lt;br /&gt;
          IP_MASS_FAST_WF          IP_MASS_SLOW_WF&lt;br /&gt;
                   |                       |&lt;br /&gt;
                   v                       v&lt;br /&gt;
          fast equilibrium          slow equilibrium&lt;br /&gt;
                   |                       |&lt;br /&gt;
             compare with              compare with&lt;br /&gt;
             stored state              stored state&lt;br /&gt;
                   |                       |&lt;br /&gt;
                   v                       v&lt;br /&gt;
             FAST DELTA               SLOW DELTA&lt;br /&gt;
                   |                       |&lt;br /&gt;
       +-----------+-----------+-----------+-----------+&lt;br /&gt;
       |                       |                       |&lt;br /&gt;
       v                       v                       v&lt;br /&gt;
 TCO thresholds          TIB thresholds           hysteresis&lt;br /&gt;
       |                       |                       |&lt;br /&gt;
       +-----------+-----------+-----------+-----------+&lt;br /&gt;
                               |&lt;br /&gt;
                        sign of transient&lt;br /&gt;
                       /                \&lt;br /&gt;
                   positive           negative&lt;br /&gt;
                      |                  |&lt;br /&gt;
                 idle state?        idle state?&lt;br /&gt;
                 /        \         /        \&lt;br /&gt;
              idle        run     idle        run&lt;br /&gt;
                |          |        |          |&lt;br /&gt;
           POS idle    POS run   NEG idle   NEG run&lt;br /&gt;
            maps        maps      maps       maps&lt;br /&gt;
                |          |        |          |&lt;br /&gt;
                +----------+--------+----------+&lt;br /&gt;
                           |&lt;br /&gt;
                    fast / slow CRLC&lt;br /&gt;
                           |&lt;br /&gt;
                 TCO_ST first-tip factor&lt;br /&gt;
                           |&lt;br /&gt;
                  segment-counter factor&lt;br /&gt;
                           |&lt;br /&gt;
                           +&lt;br /&gt;
                           |&lt;br /&gt;
                    VO wall-film model&lt;br /&gt;
                           |&lt;br /&gt;
                +----------+----------+&lt;br /&gt;
                |                     |&lt;br /&gt;
                v                     v&lt;br /&gt;
              C936                  C968&lt;br /&gt;
                |                     |&lt;br /&gt;
                +----------+----------+&lt;br /&gt;
                           |&lt;br /&gt;
                           v&lt;br /&gt;
                    final TI builder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall-film system is therefore a dynamic fuel-storage model with:&lt;br /&gt;
&lt;br /&gt;
* equilibrium targets,&lt;br /&gt;
* internal memory,&lt;br /&gt;
* different filling and emptying dynamics,&lt;br /&gt;
* temperature effects,&lt;br /&gt;
* operating-state selection,&lt;br /&gt;
* hysteresis,&lt;br /&gt;
* time evolution,&lt;br /&gt;
* cam-overlap disturbance compensation.&lt;br /&gt;
&lt;br /&gt;
== C936 and C968 - Final Transient TI Terms ==&lt;br /&gt;
&lt;br /&gt;
The outputs that enter the late fuel path include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C936&lt;br /&gt;
C968&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are signed corrections in the injection-time domain.&lt;br /&gt;
&lt;br /&gt;
The final TI routine adds them after the main operating-condition fuel corrections.&lt;br /&gt;
&lt;br /&gt;
Thus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_STEADY&lt;br /&gt;
   |&lt;br /&gt;
   + C936&lt;br /&gt;
   |&lt;br /&gt;
   + C968&lt;br /&gt;
   |&lt;br /&gt;
   v&lt;br /&gt;
TI_WITH_TRANSIENT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the quantities are in the 0.004 ms TI domain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C936_ms =&lt;br /&gt;
    signed(C936) * 0.004&lt;br /&gt;
&lt;br /&gt;
C968_ms =&lt;br /&gt;
    signed(C968) * 0.004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an important distinction from the airflow model.&lt;br /&gt;
&lt;br /&gt;
The fuel model first calculates the normal required injector duration and then changes injector time directly to account for delayed liquid-fuel transport.&lt;br /&gt;
&lt;br /&gt;
== Minimum Injection Time - C_TI_MIN ==&lt;br /&gt;
&lt;br /&gt;
After all normal and transient fuel corrections are processed, the ECU applies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_MIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ca663056:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN:      0x10768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The stock raw value is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
225&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_MIN =&lt;br /&gt;
225 * 0.004&lt;br /&gt;
=&lt;br /&gt;
0.900 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_HYD = max(TI_CALCULATED, 0.900 ms)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This clamp is applied before injector electrical delay.&lt;br /&gt;
&lt;br /&gt;
Thus `C_TI_MIN` defines the minimum &#039;&#039;&#039;hydraulic fuel-flow command&#039;&#039;&#039; rather than the minimum complete electrical pulse.&lt;br /&gt;
&lt;br /&gt;
This becomes particularly important with large injectors.&lt;br /&gt;
&lt;br /&gt;
If injector scaling reduces normal idle fuel time below `C_TI_MIN`, the ECU cannot command a shorter hydraulic pulse.&lt;br /&gt;
&lt;br /&gt;
== Hydraulic VS Electrical Injection Time ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 distinguishes two separate concepts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hydraulic injection time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
electrical injector on-time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hydraulic time represents how long the injector must actually flow fuel.&lt;br /&gt;
&lt;br /&gt;
Electrical time must additionally include the delay between energizing the coil and meaningful fuel flow beginning.&lt;br /&gt;
&lt;br /&gt;
The structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
requested fuel mass&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
hydraulic TI&lt;br /&gt;
       |&lt;br /&gt;
       + injector opening delay&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
electrical pulse width&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is why injector dead time must be calibrated separately from `C_TI_FAC`.&lt;br /&gt;
&lt;br /&gt;
== Injector Dead Time - IP_TI_ADD_DLY__VB ==&lt;br /&gt;
&lt;br /&gt;
The injector electrical delay model is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_ADD_DLY__VB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XDF defines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_ADD_DLY[ms] = f(VB[V])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For ca663056 the injector-delay table is located at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BIN 0x1661C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The table uses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.032 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The executable lookup routine then shifts the result by three bits:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
raw_deadtime &amp;lt;&amp;lt; 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which converts the value from using a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.032 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to using a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0.004 ms/count&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The converted delay is stored in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F96C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and later added to the hydraulic TI.&lt;br /&gt;
&lt;br /&gt;
Thus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_ELECTRICAL = TI_HYD + TI_DEAD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Final Electrical Injector Time ==&lt;br /&gt;
&lt;br /&gt;
The final pulse-width quantity is carried through:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F966&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while the hydraulic command is also retained separately in the output chain.&lt;br /&gt;
&lt;br /&gt;
The final relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F966 = hydraulic injector duration + F96C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F96C =&lt;br /&gt;
    voltage-dependent injector opening delay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that changing injector dead-time calibration changes the electrical pulse without changing the basic requested fuel mass.&lt;br /&gt;
&lt;br /&gt;
It also affects the scheduler because final pulse duration is subsequently an &#039;&#039;&#039;input to injection phasing&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Start and Cranking Fuel ==&lt;br /&gt;
&lt;br /&gt;
Starting is not simply normal `CC30 * C_TI_FAC` operation at low RPM.&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains dedicated absolute injection-time maps.&lt;br /&gt;
&lt;br /&gt;
ca663056 includes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Basic Injection Time at Start - MT&lt;br /&gt;
BIN 0x141F4&lt;br /&gt;
&lt;br /&gt;
Basic Injection Time at Start - AT&lt;br /&gt;
BIN 0x14244&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and separate pre-injection calibrations including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Basic Pre-Injection Time - MT&lt;br /&gt;
BIN 0x14790&lt;br /&gt;
&lt;br /&gt;
Basic Pre-Injection Time - AT&lt;br /&gt;
BIN 0x147A0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XDF injector-scaling patches modify these independently of `C_TI_FAC`, demonstrating their separate role in the executable.&lt;br /&gt;
&lt;br /&gt;
== Injection Phasing ==&lt;br /&gt;
&lt;br /&gt;
Fuel quantity and injection phase are separate calculations.&lt;br /&gt;
&lt;br /&gt;
After the final electrical pulse is known, SIMK43 uses engine speed and pulse duration as inputs to the injection scheduler.&lt;br /&gt;
&lt;br /&gt;
The structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
final electrical TI&lt;br /&gt;
       |&lt;br /&gt;
       + engine speed&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
SOI / EOI scheduling maps&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
cylinder-specific event angle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a longer pulse width, the ECU may need to begin injection earlier if it wants to meet a desired end-of-injection boundary.&lt;br /&gt;
&lt;br /&gt;
Thus pulse duration itself becomes an input to timing placement.&lt;br /&gt;
&lt;br /&gt;
The final injector pulse is therefore determined in two dimensions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
QUANTITY:&lt;br /&gt;
    how long to inject&lt;br /&gt;
&lt;br /&gt;
PHASING:&lt;br /&gt;
    where in the cycle that duration is placed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Per-Cylinder Output ==&lt;br /&gt;
&lt;br /&gt;
The final scheduler derives separate quantities for all four cylinders.&lt;br /&gt;
&lt;br /&gt;
RAM values around:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FA42&lt;br /&gt;
FA44&lt;br /&gt;
FA46&lt;br /&gt;
FA48&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are generated from the common injection scheduling quantity together with individual cylinder correction values.&lt;br /&gt;
&lt;br /&gt;
Thus the output path is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
common fuel command&lt;br /&gt;
         |&lt;br /&gt;
common injection phase&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
cylinder corrections&lt;br /&gt;
         |&lt;br /&gt;
  +----+----+----+&lt;br /&gt;
  |    |    |    |   &lt;br /&gt;
 C1   C2   C3   C4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The SIMK43 injector-control layer therefore supports cylinder-specific differentiation after the common fuel model has been calculated.&lt;br /&gt;
&lt;br /&gt;
== Complete Normal-Running Fuel Model ==&lt;br /&gt;
&lt;br /&gt;
The complete running model can now be written in functional order.&lt;br /&gt;
&lt;br /&gt;
First:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_BASE = CC30 * C_TI_FAC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the normal basic-TI strategy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if idle:&lt;br /&gt;
    K_BASIC = IP_TI_COR_IS(N, CC30)&lt;br /&gt;
else:&lt;br /&gt;
    K_BASIC = IP_TI_COR(N, CC30)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IVVT compensation is derived from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_OFS_IVVT__N__MAF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
weighted by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_FAC_IVVT__VO_RATIO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and incorporated into the basic-TI correction path.&lt;br /&gt;
&lt;br /&gt;
The resulting corrected basic time becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CD78&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the alternate strategy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TI_BASE -&amp;gt; IP_TI_FL__N__AMP -&amp;gt; IP_TI_NOT_CAT__N__MAF -&amp;gt; CD78&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lambda/adaptation system separately maintains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
short-term controller correction&lt;br /&gt;
multiplicative learned correction&lt;br /&gt;
additive learned TI correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall-film model then predicts transient fuel transport using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST film target&lt;br /&gt;
SLOW film target&lt;br /&gt;
stored fast/slow states&lt;br /&gt;
positive/negative transient selection&lt;br /&gt;
idle/non-idle selection&lt;br /&gt;
coolant-temperature correction&lt;br /&gt;
start-temperature correction&lt;br /&gt;
dynamic correlation constants&lt;br /&gt;
segment/time evolution&lt;br /&gt;
valve-overlap disturbance correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and generates late injection-time corrections including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C936&lt;br /&gt;
C968&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final TI builder processes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CD78&lt;br /&gt;
 -&amp;gt; C6F0&lt;br /&gt;
 -&amp;gt; C6EC&lt;br /&gt;
 -&amp;gt; F968&lt;br /&gt;
 -&amp;gt; C5FC&lt;br /&gt;
 -&amp;gt; CFBA&lt;br /&gt;
 -&amp;gt; +C936&lt;br /&gt;
 -&amp;gt; +C968&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
before applying:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_MIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting hydraulic pulse then receives:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_TI_ADD_DLY__VB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and becomes the final electrical pulse supplied to the injection-phase scheduler.&lt;br /&gt;
&lt;br /&gt;
== Complete Model Diagram ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                        AIRFLOW / LOAD MODEL&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                               CC30&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                             C_TI_FAC&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                              TI_BASE&lt;br /&gt;
                                 |&lt;br /&gt;
              +------------------+------------------+&lt;br /&gt;
              |                                     |&lt;br /&gt;
              v                                     v&lt;br /&gt;
       NORMAL BASIC-TI                     ALTERNATE STRATEGY&lt;br /&gt;
           STRATEGY                                |&lt;br /&gt;
              |                                     v&lt;br /&gt;
      idle-state selection                IP_TI_FL__N__AMP&lt;br /&gt;
          /           \                           |&lt;br /&gt;
         v             v                          v&lt;br /&gt;
 IP_TI_COR      IP_TI_COR_IS             IP_TI_NOT_CAT&lt;br /&gt;
         |             |                          |&lt;br /&gt;
         +------+------+                          |&lt;br /&gt;
                |                                 |&lt;br /&gt;
                +------- IVVT correction ----------+&lt;br /&gt;
                |      IP_TI_OFS_IVVT&lt;br /&gt;
                |      IP_TI_FAC_IVVT&lt;br /&gt;
                |&lt;br /&gt;
                +----------------+----------------+&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                               CD78&lt;br /&gt;
                    corrected basic injection time&lt;br /&gt;
                                 |&lt;br /&gt;
                    +------------+------------+&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    v                         v&lt;br /&gt;
            LAMBDA / ADAPTATION          WALL FILM MODEL&lt;br /&gt;
                    |                         |&lt;br /&gt;
           controller terms                  |&lt;br /&gt;
             CC84 / CCA2                     |&lt;br /&gt;
                    |                  IP_MASS_FAST_WF&lt;br /&gt;
                   CC82                IP_MASS_SLOW_WF&lt;br /&gt;
                    |                         |&lt;br /&gt;
              F7E8 / F7E6              target vs stored&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                 fast / slow delta&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                   threshold maps&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                 positive / negative&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                   idle / non-idle&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                     CRLC dynamics&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                    TCO_ST effects&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                 segment/time factor&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                  VO wall-film model&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    |                    C936 / C968&lt;br /&gt;
                    |                         |&lt;br /&gt;
                    +------------+------------+&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                         FINAL TI BUILDER&lt;br /&gt;
                                 |&lt;br /&gt;
                                C6F0&lt;br /&gt;
                                 |&lt;br /&gt;
                                C6EC&lt;br /&gt;
                                 |&lt;br /&gt;
                                F968&lt;br /&gt;
                                 |&lt;br /&gt;
                                C5FC&lt;br /&gt;
                                 |&lt;br /&gt;
                                CFBA&lt;br /&gt;
                                 |&lt;br /&gt;
                              + C936&lt;br /&gt;
                                 |&lt;br /&gt;
                              + C968&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                             C_TI_MIN&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       HYDRAULIC INJECTION TI&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       IP_TI_ADD_DLY__VB&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       ELECTRICAL INJECTION TI&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       SOI / EOI SCHEDULER&lt;br /&gt;
                                 |&lt;br /&gt;
                                 v&lt;br /&gt;
                       PER-CYLINDER INJECTORS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Main Fuel Calibration Objects ==&lt;br /&gt;
&lt;br /&gt;
The principal Siemens fuel-model objects relevant to this reconstruction are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_TI_FAC&lt;br /&gt;
    Primary cylinder-air-charge to injection-time conversion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C_TI_MIN&lt;br /&gt;
    Minimum hydraulic injection duration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_COR__N__MAF&lt;br /&gt;
    Normal RPM / cylinder-charge basic-TI correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_COR_IS__N__MAF&lt;br /&gt;
    Idle RPM / cylinder-charge basic-TI correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_OFS_IVVT__N__MAF&lt;br /&gt;
    IVVT fuel offset versus RPM and cylinder charge&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_FAC_IVVT__VO_RATIO&lt;br /&gt;
    Weighting of IVVT fuel offset according to valve overlap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_FL__N__AMP&lt;br /&gt;
    Full-load enrichment of nominal injection time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_NOT_CAT__N__MAF&lt;br /&gt;
    RPM / cylinder-charge no-catalyst TI correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_FAC_NOT_CAT__TCO&lt;br /&gt;
    Coolant-dependent no-catalyst warm-up correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_MASS_FAST_WF__N__TIB&lt;br /&gt;
    Equilibrium fast wall-film mass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_MASS_SLOW_WF__N__TIB&lt;br /&gt;
    Equilibrium slow wall-film mass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_DIF_FAST_WF_THD__TCO&lt;br /&gt;
IP_TI_DIF_SLOW_WF_THD__TCO&lt;br /&gt;
    Coolant-dependent wall-film delta thresholds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_FAST_WF_THD__TIB&lt;br /&gt;
IP_TI_SLOW_WF_THD__TIB&lt;br /&gt;
    Basic-TI-dependent wall-film thresholds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF__N__TCO&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF__N__TCO&lt;br /&gt;
    Positive transient correction outside idle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_POS_FAST_WF_IS__N__TCO&lt;br /&gt;
IP_TI_TCO_POS_SLOW_WF_IS__N__TCO&lt;br /&gt;
    Positive transient correction in idle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_NEG_FAST_WF__N__TCO&lt;br /&gt;
IP_TI_TCO_NEG_SLOW_WF__N__TCO&lt;br /&gt;
    Negative transient correction outside idle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_NEG_FAST_WF_IS__N__TCO&lt;br /&gt;
IP_TI_TCO_NEG_SLOW_WF_IS__N__TCO&lt;br /&gt;
    Negative transient correction in idle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_CRLC_POS_FAST_WF__TCO&lt;br /&gt;
IP_TI_CRLC_POS_SLOW_WF__TCO&lt;br /&gt;
    Fast/slow positive film dynamics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_CRLC_NEG_FAST_WF__TCO&lt;br /&gt;
IP_TI_CRLC_NEG_SLOW_WF__TCO&lt;br /&gt;
    Fast/slow negative film dynamics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_TCO_ST_FAC_WF__TCO_ST&lt;br /&gt;
    Start-temperature / first-tip-in film factor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TIB_DIF_POS_HYS__TIB&lt;br /&gt;
    Hysteresis for switching positive/negative film state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_SEG_CTR_FAC_WF__SEG_CTR_WF&lt;br /&gt;
    Time/segment evolution of transient film correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_DIF_WF_POS_VO_CHG&lt;br /&gt;
IP_TI_DIF_WF_NEG_VO_CHG&lt;br /&gt;
    Wall-film disturbance due to positive/negative&lt;br /&gt;
    valve-overlap changes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_POS_VO&lt;br /&gt;
IP_FAC_TCO_ST_COR_WF_NEG_VO&lt;br /&gt;
    Start-temperature scaling of VO wall-film correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_FAC_WF_VO_TIB_INT_FDOUT&lt;br /&gt;
IP_FAC_WF_VO_TCO_FDOUT&lt;br /&gt;
    Fuel-history and coolant-temperature scaling&lt;br /&gt;
    of VO wall-film correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_FAC_TIB_COR&lt;br /&gt;
    Basic-injection-time scaling of VO film correction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_WF_MAX_LAM__TCO&lt;br /&gt;
    Wall-film TI threshold above which lambda control&lt;br /&gt;
    is temporarily inhibited&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_T_LAM_STOP__TCO&lt;br /&gt;
    Lambda-controller blocking time after significant&lt;br /&gt;
    wall-film compensation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP_TI_ADD_DLY__VB&lt;br /&gt;
    Injector electrical opening delay versus battery voltage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Fuel_Injector_Specifications&amp;diff=1021</id>
		<title>Fuel Injector Specifications</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Fuel_Injector_Specifications&amp;diff=1021"/>
		<updated>2026-09-17T10:03:55Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Added EVO X injectors to the list and updated dead times&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
There are several injectors that will fit both Beta and Delta fuel rails from other makes and models. This list will detail all of the available specifications we could find on each injector and what engine they originated from.&lt;br /&gt;
&lt;br /&gt;
==Injector List ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Injector Matrix&lt;br /&gt;
!Brand&lt;br /&gt;
!Part #&lt;br /&gt;
!Type&lt;br /&gt;
!Flow @&lt;br /&gt;
45psi (3.1bar)&lt;br /&gt;
!Flow @&lt;br /&gt;
43.5psi (3bar)&lt;br /&gt;
!Nozzle Hole&lt;br /&gt;
Count&lt;br /&gt;
!Impedence&lt;br /&gt;
Ohms&lt;br /&gt;
!Original Application&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|9260930006&lt;br /&gt;
35310-22600&lt;br /&gt;
|EV6&lt;br /&gt;
|164cc&lt;br /&gt;
|162cc&lt;br /&gt;
|4&lt;br /&gt;
|14.3Ω&lt;br /&gt;
|1.6L G4ED Alpha 2&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|DENSO&lt;br /&gt;
Hyundai&lt;br /&gt;
|195500-4470&lt;br /&gt;
35310-23700&lt;br /&gt;
|EV6&lt;br /&gt;
|210cc&lt;br /&gt;
|206cc&lt;br /&gt;
|4&lt;br /&gt;
|14.2Ω&lt;br /&gt;
|2.0L G4GC Beta 2&lt;br /&gt;
|OEM KIA&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|9260930004&lt;br /&gt;
35310-37150&lt;br /&gt;
|EV6&lt;br /&gt;
|194cc&lt;br /&gt;
|190cc&lt;br /&gt;
|4&lt;br /&gt;
|14.2Ω&lt;br /&gt;
|2.0L G4GC Beta 2&lt;br /&gt;
2.7L G6BA Delta&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|9260930013&lt;br /&gt;
35310-23600&lt;br /&gt;
|EV6&lt;br /&gt;
|194cc&lt;br /&gt;
|190cc&lt;br /&gt;
|4&lt;br /&gt;
|14.2Ω&lt;br /&gt;
|2.0L G4GC Beta 2&lt;br /&gt;
2.7L G6EA Mu&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|9260930003&lt;br /&gt;
35310-38010&lt;br /&gt;
|EV6&lt;br /&gt;
|300cc&lt;br /&gt;
|294cc&lt;br /&gt;
|4&lt;br /&gt;
|14.2Ω&lt;br /&gt;
|2.4L G4JS Sirius 2&lt;br /&gt;
3.5L G6AU Sigma&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|Kefico&lt;br /&gt;
Hyundai&lt;br /&gt;
|S040&lt;br /&gt;
35310-2C100&lt;br /&gt;
|EV6&lt;br /&gt;
|366cc&lt;br /&gt;
|360cc&lt;br /&gt;
|4&lt;br /&gt;
|14.3Ω&lt;br /&gt;
|2.0 G4KF&lt;br /&gt;
Turbo Theta 2&lt;br /&gt;
|OEM Hyundai&lt;br /&gt;
|-&lt;br /&gt;
|Bosch&lt;br /&gt;
GM&lt;br /&gt;
|62203&lt;br /&gt;
0280155868&lt;br /&gt;
|EV6&lt;br /&gt;
|360cc&lt;br /&gt;
|354cc&lt;br /&gt;
|4&lt;br /&gt;
|12.2Ω&lt;br /&gt;
|3.8L L67 SC&lt;br /&gt;
|OEM &lt;br /&gt;
|-&lt;br /&gt;
|DENSO &lt;br /&gt;
Nissan&lt;br /&gt;
|16600-JK20A&lt;br /&gt;
|EV6&lt;br /&gt;
|361cc&lt;br /&gt;
|355cc&lt;br /&gt;
|12&lt;br /&gt;
|12-14Ω&lt;br /&gt;
|3.5L VQ35VHR&lt;br /&gt;
|OEM Nissan&lt;br /&gt;
|-&lt;br /&gt;
|DENSO &lt;br /&gt;
Mitsubishi&lt;br /&gt;
|JME600G&lt;br /&gt;
|EV6&lt;br /&gt;
|541cc&lt;br /&gt;
|532cc&lt;br /&gt;
|8&lt;br /&gt;
|12-14Ω&lt;br /&gt;
|2.0L 4B11T&lt;br /&gt;
|OEM Mitsubishi&lt;br /&gt;
|-&lt;br /&gt;
|DENSO&lt;br /&gt;
Nissan&lt;br /&gt;
|297500-0950&lt;br /&gt;
16600-EY00A&lt;br /&gt;
|EV14&lt;br /&gt;
|361cc&lt;br /&gt;
|355cc&lt;br /&gt;
|12&lt;br /&gt;
|12-14Ω&lt;br /&gt;
|3.7L VQ37VHR&lt;br /&gt;
|OEM Nissan&lt;br /&gt;
|-&lt;br /&gt;
|DENSO&lt;br /&gt;
Subaru&lt;br /&gt;
|195500-3920&lt;br /&gt;
16611-AA521&lt;br /&gt;
|EV6&lt;br /&gt;
|447cc&lt;br /&gt;
|440cc&lt;br /&gt;
|4&lt;br /&gt;
|12-14Ω&lt;br /&gt;
|2.5L EJ25 Turbo&lt;br /&gt;
|OEM Subaru&lt;br /&gt;
|-&lt;br /&gt;
|DENSO&lt;br /&gt;
Nissan&lt;br /&gt;
|16600-JF00A&lt;br /&gt;
|EV6&lt;br /&gt;
|559cc&lt;br /&gt;
|550cc&lt;br /&gt;
|12&lt;br /&gt;
|12.6Ω&lt;br /&gt;
|3.8L VR30DDTT&lt;br /&gt;
|OEM Nissan&lt;br /&gt;
|-&lt;br /&gt;
|Siemens Deka&lt;br /&gt;
Mototron&lt;br /&gt;
|FI114961&lt;br /&gt;
INJ-GAS-006&lt;br /&gt;
|EV1&lt;br /&gt;
|640cc&lt;br /&gt;
|630cc&lt;br /&gt;
|4&lt;br /&gt;
|12.5Ω&lt;br /&gt;
|&lt;br /&gt;
|Requires 5mm spacer for fuel rail&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Injector Identification ==&lt;br /&gt;
[[File:GK2.7 OEM Injector.png|right|thumb]][[File:GK2.7 OEM Injector Nozzle.png|right|thumb]]&lt;br /&gt;
Many aftermarket &amp;quot;OE&amp;quot; injectors are either Chinese fakes or they perform poorly in our systems. It&#039;s important to know how to identify a genuine injector from a fake injector. Here are the main identifiers to look for when shopping for used, new or remanufactured/reflowed injectors.&lt;br /&gt;
&lt;br /&gt;
# Kefico part number&lt;br /&gt;
# &amp;quot;Four Leaf Clover&amp;quot; or &amp;quot;Venus Korean Dogwood Flower&amp;quot;&lt;br /&gt;
# Hyundai &amp;quot;H&amp;quot; logo&lt;br /&gt;
# Hyundai part number&lt;br /&gt;
# &amp;quot;K&amp;quot; and &amp;quot;C&amp;quot; are stamped near the nozzles&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Injector Dead Times ==&lt;br /&gt;
[[File:Kefico 9260930004 Dead Times.png|thumb|&#039;&#039;&#039;Kefico 9260930004&#039;&#039;&#039;]]Additional injector data can be found over at MS4X&#039;s page here: https://www.ms4x.net/index.php?title=Fuel_Injector_Deadtimes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Kefico 190cc 9260930004 2.7L V6&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|5.486&lt;br /&gt;
|0.640&lt;br /&gt;
|-&lt;br /&gt;
|5.994&lt;br /&gt;
|2.816&lt;br /&gt;
|-&lt;br /&gt;
|9.957&lt;br /&gt;
|1.152&lt;br /&gt;
|-&lt;br /&gt;
|11.989&lt;br /&gt;
|0.768&lt;br /&gt;
|-&lt;br /&gt;
|13.005&lt;br /&gt;
|0.640&lt;br /&gt;
|-&lt;br /&gt;
|14.021&lt;br /&gt;
|0.512&lt;br /&gt;
|-&lt;br /&gt;
|15.951&lt;br /&gt;
|0.384&lt;br /&gt;
|-&lt;br /&gt;
|24.994&lt;br /&gt;
|0.128&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Kefico 190cc 9260930004 2.0L L4&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|5.49&lt;br /&gt;
|0.640&lt;br /&gt;
|-&lt;br /&gt;
|5.99&lt;br /&gt;
|2.912&lt;br /&gt;
|-&lt;br /&gt;
|8.03&lt;br /&gt;
|1.760&lt;br /&gt;
|-&lt;br /&gt;
|9.96&lt;br /&gt;
|1.216&lt;br /&gt;
|-&lt;br /&gt;
|11.99&lt;br /&gt;
|0.832&lt;br /&gt;
|-&lt;br /&gt;
|13.00&lt;br /&gt;
|0.704&lt;br /&gt;
|-&lt;br /&gt;
|14.02&lt;br /&gt;
|0.576&lt;br /&gt;
|-&lt;br /&gt;
|17.98&lt;br /&gt;
|0.256&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Bosch 62203 0280155868 360cc&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|10.00&lt;br /&gt;
|0.743&lt;br /&gt;
|-&lt;br /&gt;
|12.00&lt;br /&gt;
|0.497&lt;br /&gt;
|-&lt;br /&gt;
|13.00&lt;br /&gt;
|0.414&lt;br /&gt;
|-&lt;br /&gt;
|14.00&lt;br /&gt;
|0.313&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Mitsubishi Evo X OEM 532cc&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|4.69&lt;br /&gt;
|6.120&lt;br /&gt;
|-&lt;br /&gt;
|7.04&lt;br /&gt;
|5.232&lt;br /&gt;
|-&lt;br /&gt;
|9.38&lt;br /&gt;
|2.712&lt;br /&gt;
|-&lt;br /&gt;
|11.73&lt;br /&gt;
|1.776&lt;br /&gt;
|-&lt;br /&gt;
|14.08&lt;br /&gt;
|1.296&lt;br /&gt;
|-&lt;br /&gt;
|16.42&lt;br /&gt;
|0.912&lt;br /&gt;
|-&lt;br /&gt;
|18.70&lt;br /&gt;
|0.648&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Siemens Deka 630cc FI114961 &lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|8.00&lt;br /&gt;
|1.538&lt;br /&gt;
|-&lt;br /&gt;
|9.00&lt;br /&gt;
|1.231&lt;br /&gt;
|-&lt;br /&gt;
|10.00&lt;br /&gt;
|0.923&lt;br /&gt;
|-&lt;br /&gt;
|11.00&lt;br /&gt;
|0.708&lt;br /&gt;
|-&lt;br /&gt;
|12.00&lt;br /&gt;
|0.523&lt;br /&gt;
|-&lt;br /&gt;
|13.00&lt;br /&gt;
|0.400&lt;br /&gt;
|-&lt;br /&gt;
|14.00&lt;br /&gt;
|0.308&lt;br /&gt;
|-&lt;br /&gt;
|15.00&lt;br /&gt;
|0.215&lt;br /&gt;
|-&lt;br /&gt;
|16.00&lt;br /&gt;
|0.092&lt;br /&gt;
|-&lt;br /&gt;
|17.00&lt;br /&gt;
|0.000&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+DENSO Subaru 195500-3920 16611-AA521 Estimated Values&lt;br /&gt;
!Volts&lt;br /&gt;
!Milliseconds&lt;br /&gt;
|-&lt;br /&gt;
|5.49&lt;br /&gt;
|7.000&lt;br /&gt;
|-&lt;br /&gt;
|5.99&lt;br /&gt;
|4.900&lt;br /&gt;
|-&lt;br /&gt;
|8.03&lt;br /&gt;
|2.750&lt;br /&gt;
|-&lt;br /&gt;
|9.96&lt;br /&gt;
|1.200&lt;br /&gt;
|-&lt;br /&gt;
|11.99&lt;br /&gt;
|0.880&lt;br /&gt;
|-&lt;br /&gt;
|13.00&lt;br /&gt;
|0.750&lt;br /&gt;
|-&lt;br /&gt;
|14.02&lt;br /&gt;
|0.670&lt;br /&gt;
|-&lt;br /&gt;
|17.98&lt;br /&gt;
|0.400&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Main_Page&amp;diff=1020</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Main_Page&amp;diff=1020"/>
		<updated>2026-09-17T07:55:13Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: /* Siemens L4 2.0L Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Welcome to the OpenGK Wiki&#039;&#039;&#039;&lt;br /&gt;
[[File:Siemens T Logo.gif|frameless|right]]&lt;br /&gt;
[[File:Discord-Logo+Wordmark-Color.png|150px|frameless|right|link=https://discord.gg/a4fWuBTfxV]]&lt;br /&gt;
Our goal is to open source the Hyundai/Kia Siemens ECMs on the Beta and Delta motors to provide tuning options to the DIY enthusiasts. This project originally started for the [[Hyundai Tiburon|Hyundai Coupe/Tuscani/Tiburon platform]] but as we collected more data from other platforms with similar ECMs, it was clear that those other platforms can be supported using the same principals.&lt;br /&gt;
&lt;br /&gt;
We are looking for smart individuals that have experience with IDA Pro and disassembly that are willing to help push this project further. Please contact &#039;&#039;&#039;info(at)opengk.org&#039;&#039;&#039; or join our {{DiscordInvite}}if you would like to contribute to this project.&lt;br /&gt;
&lt;br /&gt;
If you are a tuner and found this site to be useful, please consider a donation to Paypal: &#039;&#039;&#039;donate(at)opengk.org&#039;&#039;&#039; to help keep the site alive.&lt;br /&gt;
&lt;br /&gt;
[[Getting started|&amp;gt;&amp;gt; &amp;lt;big&amp;gt;&#039;&#039;&#039;Getting started&#039;&#039;&#039; &amp;lt;&amp;lt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
[https://vin.opengk.org VIN Decoder]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Hyundai Tiburon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Vehicle identification number (VIN)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Data link connector (OBD2)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Immobiliser]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[SMARTRA|Smartra]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Body Control Module]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Instrument Cluster]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Communication protocols ====&lt;br /&gt;
[[K-Line]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[SIMK43 CAN Bus|CAN Bus messages]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ECM Tuning ====&lt;br /&gt;
[[GKFlasher Instructions]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Cross Flash Kia Spectra|Cross-Flash Kia Spectra &amp;gt; Tiburon Firmware]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Siemens L4 2.0L Hardware ====&lt;br /&gt;
[[5WY ECM Identification#Siemens 5WY 2 Connector .282.0L L4.29| ECM Identification]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.0l PCB Layouts| 2.0L PCB Layouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Siemens 5WY 2 Connector Pinout| 2.0L L4 Pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.0L ECM]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Siemens L4 2.0L Firmware ====&lt;br /&gt;
[[SIMK43 Airflow and Load Model]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SIMK43 Ignition Strategy]]&lt;br /&gt;
&lt;br /&gt;
==== Siemens V6 2.7L Hardware ====&lt;br /&gt;
[[5WY ECM Identification#Siemens 5WY 5 Connector .282.7L V6.29|ECM Identification]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.7L V6 PCB Layouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Siemens 5WY 5 Connector Pinout| 2.7L V6 Pinout]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Parts Compatibility ====&lt;br /&gt;
[[Sensor Information]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fuel Injector Specifications]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Camshaft Specifications]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.7L V6 Valvetrain]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bosch Chip Part Numbers]]&lt;br /&gt;
&lt;br /&gt;
==== Downloads ====&lt;br /&gt;
[https://opengk.org/files/ File Repository]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Main_Page&amp;diff=1019</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Main_Page&amp;diff=1019"/>
		<updated>2026-09-17T07:54:40Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: /* Siemens L4 2.0L Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Welcome to the OpenGK Wiki&#039;&#039;&#039;&lt;br /&gt;
[[File:Siemens T Logo.gif|frameless|right]]&lt;br /&gt;
[[File:Discord-Logo+Wordmark-Color.png|150px|frameless|right|link=https://discord.gg/a4fWuBTfxV]]&lt;br /&gt;
Our goal is to open source the Hyundai/Kia Siemens ECMs on the Beta and Delta motors to provide tuning options to the DIY enthusiasts. This project originally started for the [[Hyundai Tiburon|Hyundai Coupe/Tuscani/Tiburon platform]] but as we collected more data from other platforms with similar ECMs, it was clear that those other platforms can be supported using the same principals.&lt;br /&gt;
&lt;br /&gt;
We are looking for smart individuals that have experience with IDA Pro and disassembly that are willing to help push this project further. Please contact &#039;&#039;&#039;info(at)opengk.org&#039;&#039;&#039; or join our {{DiscordInvite}}if you would like to contribute to this project.&lt;br /&gt;
&lt;br /&gt;
If you are a tuner and found this site to be useful, please consider a donation to Paypal: &#039;&#039;&#039;donate(at)opengk.org&#039;&#039;&#039; to help keep the site alive.&lt;br /&gt;
&lt;br /&gt;
[[Getting started|&amp;gt;&amp;gt; &amp;lt;big&amp;gt;&#039;&#039;&#039;Getting started&#039;&#039;&#039; &amp;lt;&amp;lt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
[https://vin.opengk.org VIN Decoder]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Hyundai Tiburon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Vehicle identification number (VIN)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Data link connector (OBD2)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Immobiliser]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[SMARTRA|Smartra]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Body Control Module]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Instrument Cluster]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Communication protocols ====&lt;br /&gt;
[[K-Line]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[SIMK43 CAN Bus|CAN Bus messages]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ECM Tuning ====&lt;br /&gt;
[[GKFlasher Instructions]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Cross Flash Kia Spectra|Cross-Flash Kia Spectra &amp;gt; Tiburon Firmware]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Siemens L4 2.0L Hardware ====&lt;br /&gt;
[[5WY ECM Identification#Siemens 5WY 2 Connector .282.0L L4.29| ECM Identification]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.0l PCB Layouts| 2.0L PCB Layouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Siemens 5WY 2 Connector Pinout| 2.0L L4 Pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.0L ECM]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Siemens L4 2.0L Firmware ====&lt;br /&gt;
[[SIMK43 Airflow and Load Model]]&lt;br /&gt;
&lt;br /&gt;
[[SIMK43 Ignition Strategy]]&lt;br /&gt;
&lt;br /&gt;
==== Siemens V6 2.7L Hardware ====&lt;br /&gt;
[[5WY ECM Identification#Siemens 5WY 5 Connector .282.7L V6.29|ECM Identification]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.7L V6 PCB Layouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Siemens 5WY 5 Connector Pinout| 2.7L V6 Pinout]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Parts Compatibility ====&lt;br /&gt;
[[Sensor Information]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fuel Injector Specifications]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Camshaft Specifications]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.7L V6 Valvetrain]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bosch Chip Part Numbers]]&lt;br /&gt;
&lt;br /&gt;
==== Downloads ====&lt;br /&gt;
[https://opengk.org/files/ File Repository]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Main_Page&amp;diff=1018</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Main_Page&amp;diff=1018"/>
		<updated>2026-09-17T07:54:07Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Welcome to the OpenGK Wiki&#039;&#039;&#039;&lt;br /&gt;
[[File:Siemens T Logo.gif|frameless|right]]&lt;br /&gt;
[[File:Discord-Logo+Wordmark-Color.png|150px|frameless|right|link=https://discord.gg/a4fWuBTfxV]]&lt;br /&gt;
Our goal is to open source the Hyundai/Kia Siemens ECMs on the Beta and Delta motors to provide tuning options to the DIY enthusiasts. This project originally started for the [[Hyundai Tiburon|Hyundai Coupe/Tuscani/Tiburon platform]] but as we collected more data from other platforms with similar ECMs, it was clear that those other platforms can be supported using the same principals.&lt;br /&gt;
&lt;br /&gt;
We are looking for smart individuals that have experience with IDA Pro and disassembly that are willing to help push this project further. Please contact &#039;&#039;&#039;info(at)opengk.org&#039;&#039;&#039; or join our {{DiscordInvite}}if you would like to contribute to this project.&lt;br /&gt;
&lt;br /&gt;
If you are a tuner and found this site to be useful, please consider a donation to Paypal: &#039;&#039;&#039;donate(at)opengk.org&#039;&#039;&#039; to help keep the site alive.&lt;br /&gt;
&lt;br /&gt;
[[Getting started|&amp;gt;&amp;gt; &amp;lt;big&amp;gt;&#039;&#039;&#039;Getting started&#039;&#039;&#039; &amp;lt;&amp;lt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
[https://vin.opengk.org VIN Decoder]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Hyundai Tiburon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Vehicle identification number (VIN)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Data link connector (OBD2)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Immobiliser]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[SMARTRA|Smartra]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Body Control Module]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Instrument Cluster]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Communication protocols ====&lt;br /&gt;
[[K-Line]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[SIMK43 CAN Bus|CAN Bus messages]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ECM Tuning ====&lt;br /&gt;
[[GKFlasher Instructions]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Cross Flash Kia Spectra|Cross-Flash Kia Spectra &amp;gt; Tiburon Firmware]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Siemens L4 2.0L Hardware ====&lt;br /&gt;
[[5WY ECM Identification#Siemens 5WY 2 Connector .282.0L L4.29| ECM Identification]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.0l PCB Layouts| 2.0L PCB Layouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Siemens 5WY 2 Connector Pinout| 2.0L L4 Pinout]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.0L ECM]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Siemens L4 2.0L Firmware ====&lt;br /&gt;
[[SIMK43 Airflow and Load Model]]&lt;br /&gt;
[[SIMK43 Ignition Strategy]]&lt;br /&gt;
&lt;br /&gt;
==== Siemens V6 2.7L Hardware ====&lt;br /&gt;
[[5WY ECM Identification#Siemens 5WY 5 Connector .282.7L V6.29|ECM Identification]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.7L V6 PCB Layouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Siemens 5WY 5 Connector Pinout| 2.7L V6 Pinout]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Parts Compatibility ====&lt;br /&gt;
[[Sensor Information]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fuel Injector Specifications]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Camshaft Specifications]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[2.7L V6 Valvetrain]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bosch Chip Part Numbers]]&lt;br /&gt;
&lt;br /&gt;
==== Downloads ====&lt;br /&gt;
[https://opengk.org/files/ File Repository]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=SIMK43_Ignition_Strategy&amp;diff=1017</id>
		<title>SIMK43 Ignition Strategy</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=SIMK43_Ignition_Strategy&amp;diff=1017"/>
		<updated>2026-09-17T07:49:42Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Added new category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the ignition-angle and ignition-torque model implemented in the &#039;&#039;&#039;Siemens SIMK43 ca663056&#039;&#039;&#039; calibration.&lt;br /&gt;
&lt;br /&gt;
It documents how the ECU calculates its Reference and Basic ignition angles, applies operating-condition corrections, represents ignition retard as a torque-efficiency quantity, converts torque requests into ignition-angle requests, incorporates knock control, applies the minimum allowable ignition angle, and determines the final spark angle independently for each cylinder.&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== General Architecture ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 does not use a simple strategy consisting of one main ignition map followed by a small number of corrections.&lt;br /&gt;
&lt;br /&gt;
Ignition timing is integrated directly into the engine torque model.&lt;br /&gt;
&lt;br /&gt;
The ECU maintains two principal ignition-angle references:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reference ignition angle&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Basic ignition angle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Reference angle represents the ignition timing used by the torque model as its reference point.&lt;br /&gt;
&lt;br /&gt;
The Basic angle represents the normal operating ignition-angle path.&lt;br /&gt;
&lt;br /&gt;
These two paths are corrected independently before entering the torque and final-spark calculations.&lt;br /&gt;
&lt;br /&gt;
The overall structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                 ENGINE OPERATING POINT&lt;br /&gt;
          RPM / Load / Temperature / Lambda / VVT&lt;br /&gt;
                         |&lt;br /&gt;
             +-----------+-----------+&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       v&lt;br /&gt;
        IGA_REF map              IGA_BAS map&lt;br /&gt;
         0x15CA5                 0x158ED&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       v&lt;br /&gt;
    Reference corrections       Basic corrections&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       v&lt;br /&gt;
        IGA_REF_COR              IGA_BAS_COR&lt;br /&gt;
             |                       |&lt;br /&gt;
             |               +-------+-------+&lt;br /&gt;
             |               |               |&lt;br /&gt;
             |               v               v&lt;br /&gt;
             |         Average knock     Per-cylinder&lt;br /&gt;
             |          correction       knock correction&lt;br /&gt;
             |               |&lt;br /&gt;
             |               v&lt;br /&gt;
             |        Basic + Avg Knock&lt;br /&gt;
             |               |&lt;br /&gt;
             +-------+-------+&lt;br /&gt;
                     |&lt;br /&gt;
                     v&lt;br /&gt;
          Ignition efficiency model&lt;br /&gt;
                     |&lt;br /&gt;
                     v&lt;br /&gt;
             Torque coordinator&lt;br /&gt;
                     |&lt;br /&gt;
                     v&lt;br /&gt;
          Requested ignition angle&lt;br /&gt;
                     |&lt;br /&gt;
                     +-------------------+&lt;br /&gt;
                                         |&lt;br /&gt;
Basic + cylinder knock ------------------+&lt;br /&gt;
                                         |&lt;br /&gt;
Minimum allowable ignition -------------+&lt;br /&gt;
                                         |&lt;br /&gt;
                                         v&lt;br /&gt;
                         FINAL PER-CYLINDER SPARK&lt;br /&gt;
                                         |&lt;br /&gt;
                                         v&lt;br /&gt;
                         Final average ignition&lt;br /&gt;
                                         |&lt;br /&gt;
                                         v&lt;br /&gt;
                         Ignition efficiency&lt;br /&gt;
                                         |&lt;br /&gt;
                                         v&lt;br /&gt;
                         Torque model feedback&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important point is that ignition timing serves two purposes simultaneously:&lt;br /&gt;
&lt;br /&gt;
* It determines the actual combustion phasing of the engine.&lt;br /&gt;
* It acts as a fast torque-control actuator.&lt;br /&gt;
&lt;br /&gt;
The ignition model therefore has to describe both the physical spark angle and the amount of torque that is expected from that spark angle.&lt;br /&gt;
&lt;br /&gt;
== Ignition-Angle Conventions ==&lt;br /&gt;
&lt;br /&gt;
Ignition angle is expressed in crankshaft degrees.&lt;br /&gt;
&lt;br /&gt;
Throughout this document:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IGA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
means ignition angle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;degCRK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
means crankshaft degrees.&lt;br /&gt;
&lt;br /&gt;
A more advanced spark angle is numerically further toward the advanced direction.&lt;br /&gt;
&lt;br /&gt;
A retarded angle is later relative to the Reference ignition angle.&lt;br /&gt;
&lt;br /&gt;
SIMK43 commonly represents ignition torque loss using a positive &#039;&#039;&#039;retard difference&#039;&#039;&#039; from the Reference angle.&lt;br /&gt;
&lt;br /&gt;
The fundamental relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF = IGA_REF_COR - IGA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF = 0 deg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
means that the current ignition angle is equal to the corrected Reference angle.&lt;br /&gt;
&lt;br /&gt;
A larger positive IGA_DIF means that spark has been moved further away from Reference in the retard direction.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF_COR&lt;br /&gt;
     |&lt;br /&gt;
     |  0 deg retard&lt;br /&gt;
     v&lt;br /&gt;
Reference spark&lt;br /&gt;
     |&lt;br /&gt;
     |  Increasing IGA_DIF&lt;br /&gt;
     v&lt;br /&gt;
More retarded spark&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Lower ignition torque efficiency&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Engine Operating Point ==&lt;br /&gt;
&lt;br /&gt;
The principal ignition maps operate primarily as functions of:&lt;br /&gt;
&lt;br /&gt;
* engine speed&lt;br /&gt;
* cylinder air charge&lt;br /&gt;
&lt;br /&gt;
Cylinder air charge is expressed in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The load quantity is therefore the same cylinder-charge state produced by the [[SIMK43 Airflow and Load Model|SIMK43 airflow/load model]].&lt;br /&gt;
&lt;br /&gt;
The basic relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Engine speed&lt;br /&gt;
     +&lt;br /&gt;
Cylinder air charge&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Ignition base maps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional operating conditions modify the resulting ignition angles.&lt;br /&gt;
&lt;br /&gt;
These include functions related to:&lt;br /&gt;
&lt;br /&gt;
* intake-air temperature&lt;br /&gt;
* coolant temperature&lt;br /&gt;
* lambda&lt;br /&gt;
* ambient pressure&lt;br /&gt;
* valve timing&lt;br /&gt;
* transient operation&lt;br /&gt;
* knock control&lt;br /&gt;
* exhaust temperature protection&lt;br /&gt;
&lt;br /&gt;
== Reference Ignition Angle ==&lt;br /&gt;
&lt;br /&gt;
The principal Reference ignition-angle map is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IGA_REF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15CA5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is a 16 x 12 map indexed by:&lt;br /&gt;
&lt;br /&gt;
* engine speed&lt;br /&gt;
* cylinder air charge&lt;br /&gt;
&lt;br /&gt;
Its output is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
degCRK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF = f(RPM, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Reference ignition angle is not simply another normal operating spark map.&lt;br /&gt;
&lt;br /&gt;
It establishes the ignition angle that the ECU uses as the reference point for ignition-related torque calculations.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Cylinder load&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_REF&lt;br /&gt;
0x15CA5&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Reference ignition angle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Reference angle represents the theoretical or reference torque-producing spark angle used by the ECU&#039;s ignition-efficiency model.&lt;br /&gt;
&lt;br /&gt;
It therefore acts as the &#039;&#039;&#039;zero-retard reference&#039;&#039;&#039; for the torque calculation.&lt;br /&gt;
&lt;br /&gt;
=== Reference Ignition Corrections ===&lt;br /&gt;
&lt;br /&gt;
The Reference ignition path contains additional corrections that modify the base Reference map before it is used by the torque model.&lt;br /&gt;
&lt;br /&gt;
Identified ca663056 calibrations include:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_REF_TEMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15D6D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides a temperature-related correction to the Reference ignition path.&lt;br /&gt;
&lt;br /&gt;
Another identified correction is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_REF_OFS_IVVT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1942C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides a VVT-related Reference ignition offset as a function of engine speed and cylinder load.&lt;br /&gt;
&lt;br /&gt;
The functional structure is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF&lt;br /&gt;
   |&lt;br /&gt;
   +---- Temperature influence&lt;br /&gt;
   |&lt;br /&gt;
   +---- IVVT influence&lt;br /&gt;
   |&lt;br /&gt;
   +---- Other operating-state corrections&lt;br /&gt;
   |&lt;br /&gt;
   v&lt;br /&gt;
IGA_REF_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The corrected Reference angle becomes the zero point used by the ignition-efficiency calculations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Ignition Angle ==&lt;br /&gt;
&lt;br /&gt;
The principal Basic ignition-angle map is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IGA_BAS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x158ED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is also a 16 x 12 map indexed by:&lt;br /&gt;
&lt;br /&gt;
* engine speed&lt;br /&gt;
* cylinder air charge&lt;br /&gt;
&lt;br /&gt;
Its output is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
degCRK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS = f(RPM, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Basic ignition angle represents the normal operating ignition path.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Cylinder load&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_BAS&lt;br /&gt;
0x158ED&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Basic operating ignition angle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Basic map does not have to be identical to the Reference map.&lt;br /&gt;
&lt;br /&gt;
In many operating regions, Basic can be intentionally more retarded than Reference.&lt;br /&gt;
&lt;br /&gt;
The difference between them forms part of the ECU&#039;s available ignition torque reserve.&lt;br /&gt;
&lt;br /&gt;
=== Basic Ignition Corrections ===&lt;br /&gt;
&lt;br /&gt;
The Basic ignition path contains a larger set of operating-condition corrections.&lt;br /&gt;
&lt;br /&gt;
Identified calibrations include:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_OFS_IVVT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x193EC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides a VVT-dependent offset to Basic ignition timing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_TEMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15A95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides a temperature-related Basic ignition correction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_TEMP_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15AD5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides an additional temperature-dependent correction factor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_AMP_COR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x159AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides an ambient-pressure-related Basic ignition correction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_LAMB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x159CD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides an additive ignition correction associated with lambda setpoint.&lt;br /&gt;
&lt;br /&gt;
The functional Basic path can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS&lt;br /&gt;
   |&lt;br /&gt;
   +---- IVVT correction&lt;br /&gt;
   |&lt;br /&gt;
   +---- Temperature correction&lt;br /&gt;
   |&lt;br /&gt;
   +---- Ambient-pressure correction&lt;br /&gt;
   |&lt;br /&gt;
   +---- Lambda correction&lt;br /&gt;
   |&lt;br /&gt;
   +---- Transient / operating-state corrections&lt;br /&gt;
   |&lt;br /&gt;
   v&lt;br /&gt;
IGA_BAS_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting corrected Basic angle is the normal ignition candidate before torque intervention and per-cylinder knock correction are applied.&lt;br /&gt;
&lt;br /&gt;
== Ignition Torque Reserve ==&lt;br /&gt;
&lt;br /&gt;
The corrected Reference and Basic ignition angles define an important torque-control quantity.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ignition torque reserve = IGA_REF_COR - IGA_BAS_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Basic is more retarded than Reference, the ECU has the ability to increase engine torque rapidly by advancing ignition timing toward Reference.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF_COR = 30 deg&lt;br /&gt;
IGA_BAS_COR = 24 deg&lt;br /&gt;
&lt;br /&gt;
Reserve = 6 deg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Basic engine operating point is therefore 6 degrees behind the Reference angle.&lt;br /&gt;
&lt;br /&gt;
The ECU can move toward the Reference angle without waiting for a large air-path change.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
More retarded                                More advanced&lt;br /&gt;
&lt;br /&gt;
IGA_BAS_COR -----------------------------&amp;gt; IGA_REF_COR&lt;br /&gt;
     |                                          |&lt;br /&gt;
 Normal operating                         Reference torque&lt;br /&gt;
     spark                                   spark&lt;br /&gt;
     |                                          |&lt;br /&gt;
     +------------ Torque reserve --------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ignition therefore provides a very fast torque-control mechanism.&lt;br /&gt;
&lt;br /&gt;
== Knock-Control Integration ==&lt;br /&gt;
&lt;br /&gt;
Knock control operates in parallel with the normal Basic ignition path.&lt;br /&gt;
&lt;br /&gt;
SIMK43 maintains both:&lt;br /&gt;
&lt;br /&gt;
* an average knock correction&lt;br /&gt;
* individual per-cylinder knock corrections&lt;br /&gt;
&lt;br /&gt;
These have different roles in the ignition model.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;average knock correction&#039;&#039;&#039; is used when calculating the torque efficiency associated with the Basic ignition path.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;individual cylinder corrections&#039;&#039;&#039; are applied later when determining the actual final ignition angle of each cylinder.&lt;br /&gt;
&lt;br /&gt;
The structure is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    IGA_BAS_COR&lt;br /&gt;
                         |&lt;br /&gt;
             +-----------+-----------+&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       v&lt;br /&gt;
       Average knock           Per-cylinder knock&lt;br /&gt;
         correction               corrections&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       |&lt;br /&gt;
 Basic torque-efficiency             |&lt;br /&gt;
      calculation                    |&lt;br /&gt;
                                     v&lt;br /&gt;
                              Final cylinder spark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This separation allows the torque model to account for the overall torque loss caused by knock retard while still applying the necessary protection independently to each cylinder.&lt;br /&gt;
&lt;br /&gt;
=== Basic Ignition Angle with Average Knock ===&lt;br /&gt;
&lt;br /&gt;
For the torque model, the corrected Basic angle is combined with the average knock correction.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_KNK = IGA_BAS_COR + IGA_KNK_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A knock correction in the retard direction moves the effective Basic angle later.&lt;br /&gt;
&lt;br /&gt;
The ECU then calculates the retard difference between Reference and the knock-corrected Basic angle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_BAS = IGA_REF_COR - IGA_BAS_KNK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Negative retard differences are not physically required for the normal efficiency calculation, so the effective difference is constrained to the valid retard region.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_BAS =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_REF_COR - IGA_BAS_KNK,&lt;br /&gt;
    0&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This difference is then converted into Basic ignition torque efficiency.&lt;br /&gt;
&lt;br /&gt;
== Ignition Efficiency Model ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 represents the effect of spark retard on torque using an ignition-efficiency model.&lt;br /&gt;
&lt;br /&gt;
The principal calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IPM_EFF_IGA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14FD4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA = f(IGA_DIF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IGA_DIF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
is spark retard relative to corrected Reference ignition.&lt;br /&gt;
&lt;br /&gt;
The fundamental calculation is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF = IGA_REF_COR - IGA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
followed by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA = IPM_EFF_IGA(IGA_DIF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current ignition angle&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
Reference - Current&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
Ignition retard&lt;br /&gt;
     [degCRK]&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
   0x14FD4&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
Ignition torque efficiency&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA = IGA_REF_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and ignition efficiency is approximately unity.&lt;br /&gt;
&lt;br /&gt;
As ignition is retarded further from Reference, ignition efficiency decreases.&lt;br /&gt;
&lt;br /&gt;
=== Meaning of Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
Ignition efficiency represents the fraction of Reference torque that the ECU expects to remain after ignition retard.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA = 1.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
means approximately full Reference ignition torque.&lt;br /&gt;
&lt;br /&gt;
A lower value means the ECU expects less torque because combustion has been deliberately phased later.&lt;br /&gt;
&lt;br /&gt;
For example, conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reference spark&lt;br /&gt;
IGA_DIF = 0&lt;br /&gt;
EFF_IGA approximately 1.0&lt;br /&gt;
&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
&lt;br /&gt;
Small retard&lt;br /&gt;
IGA_DIF increases&lt;br /&gt;
EFF_IGA decreases&lt;br /&gt;
&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
&lt;br /&gt;
Large retard&lt;br /&gt;
IGA_DIF increases further&lt;br /&gt;
EFF_IGA decreases further&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The efficiency model therefore converts an ignition-angle difference into a torque-domain quantity.&lt;br /&gt;
&lt;br /&gt;
=== Basic Ignition Torque Efficiency ===&lt;br /&gt;
&lt;br /&gt;
The Basic ignition path is converted into a torque-efficiency value using the average knock-corrected Basic angle.&lt;br /&gt;
&lt;br /&gt;
The functional sequence is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_COR&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Add average knock correction&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_BAS_KNK&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_REF_COR - IGA_BAS_KNK&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_DIF_BAS&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
0x14FD4&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
EFF_IGA_BAS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mathematically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_KNK = IGA_BAS_COR + IGA_KNK_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_BAS =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_REF_COR - IGA_BAS_KNK,&lt;br /&gt;
    0&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA_BAS = IPM_EFF_IGA(IGA_DIF_BAS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means knock retard is fed back into the torque model.&lt;br /&gt;
&lt;br /&gt;
If knock control retards ignition, the ECU does not continue assuming that the engine is producing the same torque.&lt;br /&gt;
&lt;br /&gt;
The reduced spark efficiency is reflected in the calculated torque state.&lt;br /&gt;
&lt;br /&gt;
=== Torque Coordinator and Requested Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
The torque coordinator does not have to request a particular spark angle directly.&lt;br /&gt;
&lt;br /&gt;
Instead, it can express the required ignition intervention as a requested ignition efficiency.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requested engine torque&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Torque coordination&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
EFF_IGA_SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A requested efficiency near unity requires ignition close to the Reference angle.&lt;br /&gt;
&lt;br /&gt;
A lower requested efficiency requires additional spark retard.&lt;br /&gt;
&lt;br /&gt;
This creates a clean relationship between the torque-control system and the ignition system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Torque request&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required torque fraction&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required spark retard&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inverse Ignition-Efficiency Model ===&lt;br /&gt;
&lt;br /&gt;
The ECU contains an inverse calibration that converts requested ignition efficiency back into the spark retard required to produce that efficiency.&lt;br /&gt;
&lt;br /&gt;
The calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_DIF_SP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15BED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its functional relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_TQ_REQ = IP_IGA_DIF_SP(EFF_IGA_SP)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IP_IGA_DIF_SP&lt;br /&gt;
0x15BED&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Required retard from Reference&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IGA_DIF_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is effectively the inverse of the forward ignition-efficiency model.&lt;br /&gt;
&lt;br /&gt;
Forward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ignition retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Ignition efficiency&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inverse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IP_IGA_DIF_SP&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required ignition retard&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torque-Requested Ignition Angle ==&lt;br /&gt;
&lt;br /&gt;
Once the required retard from Reference has been calculated, the ECU converts it back into an absolute ignition angle.&lt;br /&gt;
&lt;br /&gt;
The relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_TQ_REQ = IGA_REF_COR - IGA_DIF_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The complete torque-request path therefore becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Torque request&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IP_IGA_DIF_SP&lt;br /&gt;
0x15BED&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required retard from Reference&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IGA_REF_COR - retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IGA_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This ignition angle represents the spark timing required by the torque coordinator.&lt;br /&gt;
&lt;br /&gt;
=== Relationship Between Basic and Torque-Requested Spark ===&lt;br /&gt;
&lt;br /&gt;
At this stage the ECU has at least two important ignition candidates.&lt;br /&gt;
&lt;br /&gt;
The first is the normal operating path:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_COR&lt;br /&gt;
+ cylinder knock correction&lt;br /&gt;
+ additional cylinder-specific corrections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second is the torque-control path:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The torque coordinator must be able to reduce torque relative to the Basic path.&lt;br /&gt;
&lt;br /&gt;
Therefore, under normal torque-reduction operation, the more retarded of the two candidates is selected.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Basic / knock candidate -----+&lt;br /&gt;
                             |&lt;br /&gt;
                             v&lt;br /&gt;
                       Select later&lt;br /&gt;
                       spark angle&lt;br /&gt;
                             ^&lt;br /&gt;
                             |&lt;br /&gt;
Torque-request candidate ----+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows torque intervention to retard spark below the normal Basic ignition request.&lt;br /&gt;
&lt;br /&gt;
If no additional torque reduction is required, the Basic path remains dominant.&lt;br /&gt;
&lt;br /&gt;
=== Ignition Torque Feedback Loop ===&lt;br /&gt;
&lt;br /&gt;
The complete ignition-torque relationship therefore forms a closed loop.&lt;br /&gt;
&lt;br /&gt;
The forward physical model is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Actual spark retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Actual ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Calculated engine torque&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The inverse control model is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requested torque&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IP_IGA_DIF_SP&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required spark retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested ignition angle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final spark calculation then determines what angle is actually used.&lt;br /&gt;
&lt;br /&gt;
That result is converted back into ignition efficiency and returned to the torque model.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Torque request&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested spark&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Final arbitration&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Actual spark&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Actual efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Torque model&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ignition timing is therefore both an actuator and a feedback quantity within the torque-control system.&lt;br /&gt;
&lt;br /&gt;
== Minimum Ignition Angle ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 also calculates a minimum permissible ignition angle.&lt;br /&gt;
&lt;br /&gt;
The main ca663056 calibration involved in this path is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Base Minimum Ignition Angle Difference&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15B1D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is a 16 x 12 map indexed by:&lt;br /&gt;
&lt;br /&gt;
* engine speed&lt;br /&gt;
* cylinder air charge&lt;br /&gt;
&lt;br /&gt;
This calibration participates in the calculation of the minimum ignition-angle limit.&lt;br /&gt;
&lt;br /&gt;
The XDF identifies it as a &#039;&#039;&#039;minimum ignition angle difference&#039;&#039;&#039; rather than simply a direct final spark-angle table.&lt;br /&gt;
&lt;br /&gt;
The disassembly shows that this map is processed through additional scaling and correction logic before the final minimum ignition angle is obtained.&lt;br /&gt;
&lt;br /&gt;
The functional path is therefore better represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Cylinder load&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Minimum-angle base map&lt;br /&gt;
0x15B1D&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Scaling / corrections&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Minimum allowable ignition angle&lt;br /&gt;
IGA_MIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The minimum-angle system prevents normal torque-control retard from moving spark beyond the allowed combustion-stability or protection boundary.&lt;br /&gt;
&lt;br /&gt;
=== Minimum-Angle Temperature Protection ===&lt;br /&gt;
&lt;br /&gt;
The minimum-angle system also contains an exhaust-temperature-related calibration:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_DIF_MIN_TEG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15BDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This calibration modifies the permitted minimum ignition behaviour according to dynamic exhaust-gas temperature.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dynamic exhaust temperature&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IP_IGA_DIF_MIN_TEG&lt;br /&gt;
0x15BDD&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Minimum-angle correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The minimum ignition angle is therefore not simply a fixed RPM/load boundary.&lt;br /&gt;
&lt;br /&gt;
It can be modified by engine thermal conditions and other operating-state corrections.&lt;br /&gt;
&lt;br /&gt;
=== Interaction Between Minimum Angle and Knock Control ===&lt;br /&gt;
&lt;br /&gt;
The normal minimum-angle limiter prevents torque control from requesting excessive retard.&lt;br /&gt;
&lt;br /&gt;
Knock control, however, has a different priority.&lt;br /&gt;
&lt;br /&gt;
If additional retard is required to protect an individual cylinder from knock, the normal torque-control minimum-angle restriction must not prevent the required protective retard.&lt;br /&gt;
&lt;br /&gt;
The logic therefore distinguishes between:&lt;br /&gt;
&lt;br /&gt;
* retard requested for torque control&lt;br /&gt;
* retard required for knock protection&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Torque-control retard&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Limited by normal IGA_MIN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Knock-required retard&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Special protection authority&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Can override normal retard restriction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This prevents the torque-control minimum-angle system from interfering with knock protection.&lt;br /&gt;
&lt;br /&gt;
== Per-Cylinder Ignition Path ==&lt;br /&gt;
&lt;br /&gt;
Final spark timing is calculated individually for each cylinder.&lt;br /&gt;
&lt;br /&gt;
Each cylinder receives its own knock correction.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                   IGA_BAS_COR&lt;br /&gt;
                        |&lt;br /&gt;
         +--------------+--------------+&lt;br /&gt;
         |              |              |&lt;br /&gt;
         v              v              v&lt;br /&gt;
   Cylinder 1       Cylinder 2       ...&lt;br /&gt;
 knock correction  knock correction&lt;br /&gt;
         |              |&lt;br /&gt;
         v              v&lt;br /&gt;
 Basic + knock     Basic + knock&lt;br /&gt;
   candidate         candidate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The torque-request angle is common to the torque-control system, while knock correction can differ from cylinder to cylinder.&lt;br /&gt;
&lt;br /&gt;
The final arbitration is therefore repeated independently for all four cylinders.&lt;br /&gt;
&lt;br /&gt;
== Final Ignition Arbitration ==&lt;br /&gt;
&lt;br /&gt;
The normal final per-cylinder ignition logic can be represented approximately as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_CYL =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_MIN,&lt;br /&gt;
    min(&lt;br /&gt;
        IGA_TQ_REQ,&lt;br /&gt;
        IGA_BAS_COR&lt;br /&gt;
        + IGA_KNK_CYL&lt;br /&gt;
        + other cylinder corrections&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The inner selection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
min(&lt;br /&gt;
    IGA_TQ_REQ,&lt;br /&gt;
    Basic + Knock&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
selects the more retarded of the normal Basic/knock path and the torque-request path.&lt;br /&gt;
&lt;br /&gt;
The outer selection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
max(&lt;br /&gt;
    IGA_MIN,&lt;br /&gt;
    selected angle&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
prevents the normal torque-control result from moving beyond the minimum allowable ignition angle.&lt;br /&gt;
&lt;br /&gt;
The functional sequence is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Basic + cylinder knock&lt;br /&gt;
          |&lt;br /&gt;
          +----------------+&lt;br /&gt;
                           |&lt;br /&gt;
                           v&lt;br /&gt;
Torque-request angle -&amp;gt; Select more retarded angle&lt;br /&gt;
                           |&lt;br /&gt;
                           v&lt;br /&gt;
                  Apply minimum-angle limit&lt;br /&gt;
                           |&lt;br /&gt;
                           v&lt;br /&gt;
                 Final cylinder ignition&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Knock-protection authority modifies this normal limitation when additional knock retard is required.&lt;br /&gt;
&lt;br /&gt;
=== Final Spark for Each Cylinder ===&lt;br /&gt;
&lt;br /&gt;
The final result of the arbitration is four independent ignition angles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_CYL1&lt;br /&gt;
&lt;br /&gt;
IGA_FINAL_CYL2&lt;br /&gt;
&lt;br /&gt;
IGA_FINAL_CYL3&lt;br /&gt;
&lt;br /&gt;
IGA_FINAL_CYL4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These represent the actual spark-angle commands after:&lt;br /&gt;
&lt;br /&gt;
* Basic ignition calculation&lt;br /&gt;
* Reference-based torque control&lt;br /&gt;
* knock correction&lt;br /&gt;
* minimum-angle limitation&lt;br /&gt;
* cylinder-specific corrections&lt;br /&gt;
&lt;br /&gt;
The structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    Final arbitration&lt;br /&gt;
                           |&lt;br /&gt;
          +----------------+----------------+&lt;br /&gt;
          |                |                |&lt;br /&gt;
          v                v                v&lt;br /&gt;
      Cylinder 1       Cylinder 2       Cylinder 3&lt;br /&gt;
       final IGA        final IGA        final IGA&lt;br /&gt;
                                            |&lt;br /&gt;
                                            +---- Cylinder 4&lt;br /&gt;
                                                 final IGA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Final Average Ignition Angle ===&lt;br /&gt;
&lt;br /&gt;
The four final cylinder ignition angles are also combined into an average final ignition angle.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_CYL1&lt;br /&gt;
      +&lt;br /&gt;
IGA_FINAL_CYL2&lt;br /&gt;
      +&lt;br /&gt;
IGA_FINAL_CYL3&lt;br /&gt;
      +&lt;br /&gt;
IGA_FINAL_CYL4&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Average&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IGA_FINAL_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The average angle is required because the torque model describes the overall engine rather than one individual cylinder.&lt;br /&gt;
&lt;br /&gt;
=== Final Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
Once the final average ignition angle is known, the ECU calculates ignition efficiency again.&lt;br /&gt;
&lt;br /&gt;
First:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_FINAL = IGA_REF_COR - IGA_FINAL_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA_FINAL = IPM_EFF_IGA(IGA_DIF_FINAL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The complete feedback path is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Final cylinder ignition angles&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Average final ignition&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IGA_REF_COR - IGA_FINAL_AVG&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Final ignition retard&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
0x14FD4&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Final ignition efficiency&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Torque model feedback&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an important part of the SIMK43 torque architecture.&lt;br /&gt;
&lt;br /&gt;
The torque model does not only calculate what ignition timing should be commanded.&lt;br /&gt;
&lt;br /&gt;
It also recalculates the torque effect of the spark angle that actually survived final arbitration.&lt;br /&gt;
&lt;br /&gt;
=== Final Spark Output and Event Scheduling ===&lt;br /&gt;
&lt;br /&gt;
After the final spark angle has been calculated for each cylinder, the result is transferred to the low-level ignition event scheduler.&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly traces the ignition path all the way from the high-level ignition calculations to the crank-synchronous spark scheduling mechanism.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Final per-cylinder ignition angle&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Ignition output conversion&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Crank-synchronous scheduler&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Physical ignition event&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scheduler converts the requested crankshaft angle into the timing required for the actual ignition event.&lt;br /&gt;
&lt;br /&gt;
This is the final stage between the torque/ignition model and the ignition hardware.&lt;br /&gt;
&lt;br /&gt;
== Complete Functional Sequence ==&lt;br /&gt;
&lt;br /&gt;
The complete ignition path can be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    ENGINE OPERATING POINT&lt;br /&gt;
             RPM / Load / Temp / Lambda / VVT&lt;br /&gt;
                              |&lt;br /&gt;
                  +-----------+-----------+&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  v                       v&lt;br /&gt;
              IGA_REF                 IGA_BAS&lt;br /&gt;
              0x15CA5                0x158ED&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  v                       v&lt;br /&gt;
          Reference corrections     Basic corrections&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  v                       v&lt;br /&gt;
             IGA_REF_COR             IGA_BAS_COR&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                 Average knock&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                       v&lt;br /&gt;
                  |                Basic + Avg Knock&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                       v&lt;br /&gt;
                  |                  REF - BASIC&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                       v&lt;br /&gt;
                  |                  IPM_EFF_IGA&lt;br /&gt;
                  |                    0x14FD4&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                       v&lt;br /&gt;
                  |                  EFF_IGA_BAS&lt;br /&gt;
                  |&lt;br /&gt;
                  |&lt;br /&gt;
          TORQUE COORDINATOR&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
             Torque request&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
             EFF_IGA_SP&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
            IP_IGA_DIF_SP&lt;br /&gt;
               0x15BED&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
          IGA_DIF_TQ_REQ&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
    IGA_REF_COR - IGA_DIF_TQ_REQ&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
             IGA_TQ_REQ&lt;br /&gt;
                  |&lt;br /&gt;
                  +--------------------------+&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
Basic + per-cylinder knock ------------ Final arbitration&lt;br /&gt;
                                             ^&lt;br /&gt;
                                             |&lt;br /&gt;
Minimum ignition angle ---------------------+&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                              Final cylinder ignition&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                               Average final ignition&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                          IGA_REF_COR - IGA_FINAL_AVG&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                                     IPM_EFF_IGA&lt;br /&gt;
                                       0x14FD4&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                                    EFF_IGA_FINAL&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                                   Torque model feedback&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                              Crank-synchronous scheduler&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Complete Mathematical Model ==&lt;br /&gt;
&lt;br /&gt;
=== Corrected Reference Angle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF_COR = IGA_REF + Reference corrections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Corrected Basic Angle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_COR = IGA_BAS + Basic corrections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ignition Torque Reserve ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_RESERVE = IGA_REF_COR - IGA_BAS_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic Angle Including Average Knock ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_KNK = IGA_BAS_COR + IGA_KNK_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic Retard from Reference ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_BAS =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_REF_COR - IGA_BAS_KNK,&lt;br /&gt;
    0&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA_BAS = IPM_EFF_IGA(IGA_DIF_BAS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Torque-Requested Retard ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_TQ_REQ = IP_IGA_DIF_SP(EFF_IGA_SP)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Torque-Requested Ignition Angle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_TQ_REQ = IGA_REF_COR - IGA_DIF_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normal Final Per-Cylinder Spark ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_CYL =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_MIN,&lt;br /&gt;
    min(&lt;br /&gt;
        IGA_TQ_REQ,&lt;br /&gt;
        IGA_BAS_COR&lt;br /&gt;
        + IGA_KNK_CYL&lt;br /&gt;
        + cylinder corrections&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Knock-protection logic can modify the normal minimum-angle restriction when further protective retard is required.&lt;br /&gt;
&lt;br /&gt;
=== Final Average Ignition Angle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_AVG =&lt;br /&gt;
Average(&lt;br /&gt;
    IGA_FINAL_CYL1,&lt;br /&gt;
    IGA_FINAL_CYL2,&lt;br /&gt;
    IGA_FINAL_CYL3,&lt;br /&gt;
    IGA_FINAL_CYL4&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Final Retard from Reference ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_FINAL = IGA_REF_COR - IGA_FINAL_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Final Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA_FINAL = IPM_EFF_IGA(IGA_DIF_FINAL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functional Interpretation ==&lt;br /&gt;
&lt;br /&gt;
The SIMK43 ignition system can be divided into five principal functional layers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Reference Spark Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ECU calculates the corrected Reference ignition angle representing the zero-retard point used by the ignition torque model.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Basic Spark Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ECU calculates the corrected Basic ignition angle representing the normal operating spark path.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ignition Torque Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The difference between Reference and actual spark is converted into ignition torque efficiency.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Torque Intervention&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Requested torque is converted into requested ignition efficiency, then into required spark retard and finally into a requested ignition angle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Final Spark Arbitration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Torque-request spark, Basic spark, knock correction and minimum-angle protection are combined separately for each cylinder before the final ignition event is scheduled.&lt;br /&gt;
&lt;br /&gt;
Ignition timing is therefore simultaneously a combustion parameter, a knock-control mechanism, and one of the ECU&#039;s fastest torque-control actuators.&lt;br /&gt;
&lt;br /&gt;
__INDEX__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Siemens L4 2.0L]]&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=SIMK43_Ignition_Strategy&amp;diff=1016</id>
		<title>SIMK43 Ignition Strategy</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=SIMK43_Ignition_Strategy&amp;diff=1016"/>
		<updated>2026-09-16T17:54:46Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Full ignition model of SIMK43&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the ignition-angle and ignition-torque model implemented in the &#039;&#039;&#039;Siemens SIMK43 ca663056&#039;&#039;&#039; calibration.&lt;br /&gt;
&lt;br /&gt;
It documents how the ECU calculates its Reference and Basic ignition angles, applies operating-condition corrections, represents ignition retard as a torque-efficiency quantity, converts torque requests into ignition-angle requests, incorporates knock control, applies the minimum allowable ignition angle, and determines the final spark angle independently for each cylinder.&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== General Architecture ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 does not use a simple strategy consisting of one main ignition map followed by a small number of corrections.&lt;br /&gt;
&lt;br /&gt;
Ignition timing is integrated directly into the engine torque model.&lt;br /&gt;
&lt;br /&gt;
The ECU maintains two principal ignition-angle references:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reference ignition angle&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Basic ignition angle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Reference angle represents the ignition timing used by the torque model as its reference point.&lt;br /&gt;
&lt;br /&gt;
The Basic angle represents the normal operating ignition-angle path.&lt;br /&gt;
&lt;br /&gt;
These two paths are corrected independently before entering the torque and final-spark calculations.&lt;br /&gt;
&lt;br /&gt;
The overall structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                 ENGINE OPERATING POINT&lt;br /&gt;
          RPM / Load / Temperature / Lambda / VVT&lt;br /&gt;
                         |&lt;br /&gt;
             +-----------+-----------+&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       v&lt;br /&gt;
        IGA_REF map              IGA_BAS map&lt;br /&gt;
         0x15CA5                 0x158ED&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       v&lt;br /&gt;
    Reference corrections       Basic corrections&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       v&lt;br /&gt;
        IGA_REF_COR              IGA_BAS_COR&lt;br /&gt;
             |                       |&lt;br /&gt;
             |               +-------+-------+&lt;br /&gt;
             |               |               |&lt;br /&gt;
             |               v               v&lt;br /&gt;
             |         Average knock     Per-cylinder&lt;br /&gt;
             |          correction       knock correction&lt;br /&gt;
             |               |&lt;br /&gt;
             |               v&lt;br /&gt;
             |        Basic + Avg Knock&lt;br /&gt;
             |               |&lt;br /&gt;
             +-------+-------+&lt;br /&gt;
                     |&lt;br /&gt;
                     v&lt;br /&gt;
          Ignition efficiency model&lt;br /&gt;
                     |&lt;br /&gt;
                     v&lt;br /&gt;
             Torque coordinator&lt;br /&gt;
                     |&lt;br /&gt;
                     v&lt;br /&gt;
          Requested ignition angle&lt;br /&gt;
                     |&lt;br /&gt;
                     +-------------------+&lt;br /&gt;
                                         |&lt;br /&gt;
Basic + cylinder knock ------------------+&lt;br /&gt;
                                         |&lt;br /&gt;
Minimum allowable ignition -------------+&lt;br /&gt;
                                         |&lt;br /&gt;
                                         v&lt;br /&gt;
                         FINAL PER-CYLINDER SPARK&lt;br /&gt;
                                         |&lt;br /&gt;
                                         v&lt;br /&gt;
                         Final average ignition&lt;br /&gt;
                                         |&lt;br /&gt;
                                         v&lt;br /&gt;
                         Ignition efficiency&lt;br /&gt;
                                         |&lt;br /&gt;
                                         v&lt;br /&gt;
                         Torque model feedback&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important point is that ignition timing serves two purposes simultaneously:&lt;br /&gt;
&lt;br /&gt;
* It determines the actual combustion phasing of the engine.&lt;br /&gt;
* It acts as a fast torque-control actuator.&lt;br /&gt;
&lt;br /&gt;
The ignition model therefore has to describe both the physical spark angle and the amount of torque that is expected from that spark angle.&lt;br /&gt;
&lt;br /&gt;
== Ignition-Angle Conventions ==&lt;br /&gt;
&lt;br /&gt;
Ignition angle is expressed in crankshaft degrees.&lt;br /&gt;
&lt;br /&gt;
Throughout this document:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IGA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
means ignition angle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;degCRK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
means crankshaft degrees.&lt;br /&gt;
&lt;br /&gt;
A more advanced spark angle is numerically further toward the advanced direction.&lt;br /&gt;
&lt;br /&gt;
A retarded angle is later relative to the Reference ignition angle.&lt;br /&gt;
&lt;br /&gt;
SIMK43 commonly represents ignition torque loss using a positive &#039;&#039;&#039;retard difference&#039;&#039;&#039; from the Reference angle.&lt;br /&gt;
&lt;br /&gt;
The fundamental relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF = IGA_REF_COR - IGA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF = 0 deg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
means that the current ignition angle is equal to the corrected Reference angle.&lt;br /&gt;
&lt;br /&gt;
A larger positive IGA_DIF means that spark has been moved further away from Reference in the retard direction.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF_COR&lt;br /&gt;
     |&lt;br /&gt;
     |  0 deg retard&lt;br /&gt;
     v&lt;br /&gt;
Reference spark&lt;br /&gt;
     |&lt;br /&gt;
     |  Increasing IGA_DIF&lt;br /&gt;
     v&lt;br /&gt;
More retarded spark&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Lower ignition torque efficiency&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Engine Operating Point ==&lt;br /&gt;
&lt;br /&gt;
The principal ignition maps operate primarily as functions of:&lt;br /&gt;
&lt;br /&gt;
* engine speed&lt;br /&gt;
* cylinder air charge&lt;br /&gt;
&lt;br /&gt;
Cylinder air charge is expressed in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The load quantity is therefore the same cylinder-charge state produced by the [[SIMK43 Airflow and Load Model|SIMK43 airflow/load model]].&lt;br /&gt;
&lt;br /&gt;
The basic relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Engine speed&lt;br /&gt;
     +&lt;br /&gt;
Cylinder air charge&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Ignition base maps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional operating conditions modify the resulting ignition angles.&lt;br /&gt;
&lt;br /&gt;
These include functions related to:&lt;br /&gt;
&lt;br /&gt;
* intake-air temperature&lt;br /&gt;
* coolant temperature&lt;br /&gt;
* lambda&lt;br /&gt;
* ambient pressure&lt;br /&gt;
* valve timing&lt;br /&gt;
* transient operation&lt;br /&gt;
* knock control&lt;br /&gt;
* exhaust temperature protection&lt;br /&gt;
&lt;br /&gt;
== Reference Ignition Angle ==&lt;br /&gt;
&lt;br /&gt;
The principal Reference ignition-angle map is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IGA_REF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15CA5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is a 16 x 12 map indexed by:&lt;br /&gt;
&lt;br /&gt;
* engine speed&lt;br /&gt;
* cylinder air charge&lt;br /&gt;
&lt;br /&gt;
Its output is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
degCRK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF = f(RPM, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Reference ignition angle is not simply another normal operating spark map.&lt;br /&gt;
&lt;br /&gt;
It establishes the ignition angle that the ECU uses as the reference point for ignition-related torque calculations.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Cylinder load&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_REF&lt;br /&gt;
0x15CA5&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Reference ignition angle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Reference angle represents the theoretical or reference torque-producing spark angle used by the ECU&#039;s ignition-efficiency model.&lt;br /&gt;
&lt;br /&gt;
It therefore acts as the &#039;&#039;&#039;zero-retard reference&#039;&#039;&#039; for the torque calculation.&lt;br /&gt;
&lt;br /&gt;
=== Reference Ignition Corrections ===&lt;br /&gt;
&lt;br /&gt;
The Reference ignition path contains additional corrections that modify the base Reference map before it is used by the torque model.&lt;br /&gt;
&lt;br /&gt;
Identified ca663056 calibrations include:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_REF_TEMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15D6D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides a temperature-related correction to the Reference ignition path.&lt;br /&gt;
&lt;br /&gt;
Another identified correction is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_REF_OFS_IVVT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1942C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides a VVT-related Reference ignition offset as a function of engine speed and cylinder load.&lt;br /&gt;
&lt;br /&gt;
The functional structure is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF&lt;br /&gt;
   |&lt;br /&gt;
   +---- Temperature influence&lt;br /&gt;
   |&lt;br /&gt;
   +---- IVVT influence&lt;br /&gt;
   |&lt;br /&gt;
   +---- Other operating-state corrections&lt;br /&gt;
   |&lt;br /&gt;
   v&lt;br /&gt;
IGA_REF_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The corrected Reference angle becomes the zero point used by the ignition-efficiency calculations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Ignition Angle ==&lt;br /&gt;
&lt;br /&gt;
The principal Basic ignition-angle map is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IGA_BAS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x158ED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is also a 16 x 12 map indexed by:&lt;br /&gt;
&lt;br /&gt;
* engine speed&lt;br /&gt;
* cylinder air charge&lt;br /&gt;
&lt;br /&gt;
Its output is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
degCRK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS = f(RPM, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Basic ignition angle represents the normal operating ignition path.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Cylinder load&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_BAS&lt;br /&gt;
0x158ED&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Basic operating ignition angle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Basic map does not have to be identical to the Reference map.&lt;br /&gt;
&lt;br /&gt;
In many operating regions, Basic can be intentionally more retarded than Reference.&lt;br /&gt;
&lt;br /&gt;
The difference between them forms part of the ECU&#039;s available ignition torque reserve.&lt;br /&gt;
&lt;br /&gt;
=== Basic Ignition Corrections ===&lt;br /&gt;
&lt;br /&gt;
The Basic ignition path contains a larger set of operating-condition corrections.&lt;br /&gt;
&lt;br /&gt;
Identified calibrations include:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_OFS_IVVT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x193EC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides a VVT-dependent offset to Basic ignition timing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_TEMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15A95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides a temperature-related Basic ignition correction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_TEMP_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15AD5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides an additional temperature-dependent correction factor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_AMP_COR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x159AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides an ambient-pressure-related Basic ignition correction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_BAS_LAMB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x159CD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This provides an additive ignition correction associated with lambda setpoint.&lt;br /&gt;
&lt;br /&gt;
The functional Basic path can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS&lt;br /&gt;
   |&lt;br /&gt;
   +---- IVVT correction&lt;br /&gt;
   |&lt;br /&gt;
   +---- Temperature correction&lt;br /&gt;
   |&lt;br /&gt;
   +---- Ambient-pressure correction&lt;br /&gt;
   |&lt;br /&gt;
   +---- Lambda correction&lt;br /&gt;
   |&lt;br /&gt;
   +---- Transient / operating-state corrections&lt;br /&gt;
   |&lt;br /&gt;
   v&lt;br /&gt;
IGA_BAS_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting corrected Basic angle is the normal ignition candidate before torque intervention and per-cylinder knock correction are applied.&lt;br /&gt;
&lt;br /&gt;
== Ignition Torque Reserve ==&lt;br /&gt;
&lt;br /&gt;
The corrected Reference and Basic ignition angles define an important torque-control quantity.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ignition torque reserve = IGA_REF_COR - IGA_BAS_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Basic is more retarded than Reference, the ECU has the ability to increase engine torque rapidly by advancing ignition timing toward Reference.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF_COR = 30 deg&lt;br /&gt;
IGA_BAS_COR = 24 deg&lt;br /&gt;
&lt;br /&gt;
Reserve = 6 deg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Basic engine operating point is therefore 6 degrees behind the Reference angle.&lt;br /&gt;
&lt;br /&gt;
The ECU can move toward the Reference angle without waiting for a large air-path change.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
More retarded                                More advanced&lt;br /&gt;
&lt;br /&gt;
IGA_BAS_COR -----------------------------&amp;gt; IGA_REF_COR&lt;br /&gt;
     |                                          |&lt;br /&gt;
 Normal operating                         Reference torque&lt;br /&gt;
     spark                                   spark&lt;br /&gt;
     |                                          |&lt;br /&gt;
     +------------ Torque reserve --------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ignition therefore provides a very fast torque-control mechanism.&lt;br /&gt;
&lt;br /&gt;
== Knock-Control Integration ==&lt;br /&gt;
&lt;br /&gt;
Knock control operates in parallel with the normal Basic ignition path.&lt;br /&gt;
&lt;br /&gt;
SIMK43 maintains both:&lt;br /&gt;
&lt;br /&gt;
* an average knock correction&lt;br /&gt;
* individual per-cylinder knock corrections&lt;br /&gt;
&lt;br /&gt;
These have different roles in the ignition model.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;average knock correction&#039;&#039;&#039; is used when calculating the torque efficiency associated with the Basic ignition path.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;individual cylinder corrections&#039;&#039;&#039; are applied later when determining the actual final ignition angle of each cylinder.&lt;br /&gt;
&lt;br /&gt;
The structure is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    IGA_BAS_COR&lt;br /&gt;
                         |&lt;br /&gt;
             +-----------+-----------+&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       v&lt;br /&gt;
       Average knock           Per-cylinder knock&lt;br /&gt;
         correction               corrections&lt;br /&gt;
             |                       |&lt;br /&gt;
             v                       |&lt;br /&gt;
 Basic torque-efficiency             |&lt;br /&gt;
      calculation                    |&lt;br /&gt;
                                     v&lt;br /&gt;
                              Final cylinder spark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This separation allows the torque model to account for the overall torque loss caused by knock retard while still applying the necessary protection independently to each cylinder.&lt;br /&gt;
&lt;br /&gt;
=== Basic Ignition Angle with Average Knock ===&lt;br /&gt;
&lt;br /&gt;
For the torque model, the corrected Basic angle is combined with the average knock correction.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_KNK = IGA_BAS_COR + IGA_KNK_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A knock correction in the retard direction moves the effective Basic angle later.&lt;br /&gt;
&lt;br /&gt;
The ECU then calculates the retard difference between Reference and the knock-corrected Basic angle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_BAS = IGA_REF_COR - IGA_BAS_KNK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Negative retard differences are not physically required for the normal efficiency calculation, so the effective difference is constrained to the valid retard region.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_BAS =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_REF_COR - IGA_BAS_KNK,&lt;br /&gt;
    0&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This difference is then converted into Basic ignition torque efficiency.&lt;br /&gt;
&lt;br /&gt;
== Ignition Efficiency Model ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 represents the effect of spark retard on torque using an ignition-efficiency model.&lt;br /&gt;
&lt;br /&gt;
The principal calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IPM_EFF_IGA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14FD4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA = f(IGA_DIF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IGA_DIF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
is spark retard relative to corrected Reference ignition.&lt;br /&gt;
&lt;br /&gt;
The fundamental calculation is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF = IGA_REF_COR - IGA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
followed by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA = IPM_EFF_IGA(IGA_DIF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current ignition angle&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
Reference - Current&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
Ignition retard&lt;br /&gt;
     [degCRK]&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
   0x14FD4&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
Ignition torque efficiency&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA = IGA_REF_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and ignition efficiency is approximately unity.&lt;br /&gt;
&lt;br /&gt;
As ignition is retarded further from Reference, ignition efficiency decreases.&lt;br /&gt;
&lt;br /&gt;
=== Meaning of Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
Ignition efficiency represents the fraction of Reference torque that the ECU expects to remain after ignition retard.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA = 1.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
means approximately full Reference ignition torque.&lt;br /&gt;
&lt;br /&gt;
A lower value means the ECU expects less torque because combustion has been deliberately phased later.&lt;br /&gt;
&lt;br /&gt;
For example, conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reference spark&lt;br /&gt;
IGA_DIF = 0&lt;br /&gt;
EFF_IGA approximately 1.0&lt;br /&gt;
&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
&lt;br /&gt;
Small retard&lt;br /&gt;
IGA_DIF increases&lt;br /&gt;
EFF_IGA decreases&lt;br /&gt;
&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
&lt;br /&gt;
Large retard&lt;br /&gt;
IGA_DIF increases further&lt;br /&gt;
EFF_IGA decreases further&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The efficiency model therefore converts an ignition-angle difference into a torque-domain quantity.&lt;br /&gt;
&lt;br /&gt;
=== Basic Ignition Torque Efficiency ===&lt;br /&gt;
&lt;br /&gt;
The Basic ignition path is converted into a torque-efficiency value using the average knock-corrected Basic angle.&lt;br /&gt;
&lt;br /&gt;
The functional sequence is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_COR&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Add average knock correction&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_BAS_KNK&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_REF_COR - IGA_BAS_KNK&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IGA_DIF_BAS&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
0x14FD4&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
EFF_IGA_BAS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mathematically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_KNK = IGA_BAS_COR + IGA_KNK_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_BAS =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_REF_COR - IGA_BAS_KNK,&lt;br /&gt;
    0&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA_BAS = IPM_EFF_IGA(IGA_DIF_BAS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means knock retard is fed back into the torque model.&lt;br /&gt;
&lt;br /&gt;
If knock control retards ignition, the ECU does not continue assuming that the engine is producing the same torque.&lt;br /&gt;
&lt;br /&gt;
The reduced spark efficiency is reflected in the calculated torque state.&lt;br /&gt;
&lt;br /&gt;
=== Torque Coordinator and Requested Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
The torque coordinator does not have to request a particular spark angle directly.&lt;br /&gt;
&lt;br /&gt;
Instead, it can express the required ignition intervention as a requested ignition efficiency.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requested engine torque&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Torque coordination&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
EFF_IGA_SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A requested efficiency near unity requires ignition close to the Reference angle.&lt;br /&gt;
&lt;br /&gt;
A lower requested efficiency requires additional spark retard.&lt;br /&gt;
&lt;br /&gt;
This creates a clean relationship between the torque-control system and the ignition system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Torque request&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required torque fraction&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required spark retard&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inverse Ignition-Efficiency Model ===&lt;br /&gt;
&lt;br /&gt;
The ECU contains an inverse calibration that converts requested ignition efficiency back into the spark retard required to produce that efficiency.&lt;br /&gt;
&lt;br /&gt;
The calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_DIF_SP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15BED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its functional relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_TQ_REQ = IP_IGA_DIF_SP(EFF_IGA_SP)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IP_IGA_DIF_SP&lt;br /&gt;
0x15BED&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Required retard from Reference&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IGA_DIF_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is effectively the inverse of the forward ignition-efficiency model.&lt;br /&gt;
&lt;br /&gt;
Forward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ignition retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Ignition efficiency&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inverse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IP_IGA_DIF_SP&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required ignition retard&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torque-Requested Ignition Angle ==&lt;br /&gt;
&lt;br /&gt;
Once the required retard from Reference has been calculated, the ECU converts it back into an absolute ignition angle.&lt;br /&gt;
&lt;br /&gt;
The relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_TQ_REQ = IGA_REF_COR - IGA_DIF_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The complete torque-request path therefore becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Torque request&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IP_IGA_DIF_SP&lt;br /&gt;
0x15BED&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required retard from Reference&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IGA_REF_COR - retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IGA_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This ignition angle represents the spark timing required by the torque coordinator.&lt;br /&gt;
&lt;br /&gt;
=== Relationship Between Basic and Torque-Requested Spark ===&lt;br /&gt;
&lt;br /&gt;
At this stage the ECU has at least two important ignition candidates.&lt;br /&gt;
&lt;br /&gt;
The first is the normal operating path:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_COR&lt;br /&gt;
+ cylinder knock correction&lt;br /&gt;
+ additional cylinder-specific corrections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second is the torque-control path:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The torque coordinator must be able to reduce torque relative to the Basic path.&lt;br /&gt;
&lt;br /&gt;
Therefore, under normal torque-reduction operation, the more retarded of the two candidates is selected.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Basic / knock candidate -----+&lt;br /&gt;
                             |&lt;br /&gt;
                             v&lt;br /&gt;
                       Select later&lt;br /&gt;
                       spark angle&lt;br /&gt;
                             ^&lt;br /&gt;
                             |&lt;br /&gt;
Torque-request candidate ----+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows torque intervention to retard spark below the normal Basic ignition request.&lt;br /&gt;
&lt;br /&gt;
If no additional torque reduction is required, the Basic path remains dominant.&lt;br /&gt;
&lt;br /&gt;
=== Ignition Torque Feedback Loop ===&lt;br /&gt;
&lt;br /&gt;
The complete ignition-torque relationship therefore forms a closed loop.&lt;br /&gt;
&lt;br /&gt;
The forward physical model is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Actual spark retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Actual ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Calculated engine torque&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The inverse control model is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requested torque&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested ignition efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IP_IGA_DIF_SP&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required spark retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested ignition angle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final spark calculation then determines what angle is actually used.&lt;br /&gt;
&lt;br /&gt;
That result is converted back into ignition efficiency and returned to the torque model.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Torque request&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Required retard&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Requested spark&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Final arbitration&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Actual spark&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Actual efficiency&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Torque model&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ignition timing is therefore both an actuator and a feedback quantity within the torque-control system.&lt;br /&gt;
&lt;br /&gt;
== Minimum Ignition Angle ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 also calculates a minimum permissible ignition angle.&lt;br /&gt;
&lt;br /&gt;
The main ca663056 calibration involved in this path is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Base Minimum Ignition Angle Difference&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15B1D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is a 16 x 12 map indexed by:&lt;br /&gt;
&lt;br /&gt;
* engine speed&lt;br /&gt;
* cylinder air charge&lt;br /&gt;
&lt;br /&gt;
This calibration participates in the calculation of the minimum ignition-angle limit.&lt;br /&gt;
&lt;br /&gt;
The XDF identifies it as a &#039;&#039;&#039;minimum ignition angle difference&#039;&#039;&#039; rather than simply a direct final spark-angle table.&lt;br /&gt;
&lt;br /&gt;
The disassembly shows that this map is processed through additional scaling and correction logic before the final minimum ignition angle is obtained.&lt;br /&gt;
&lt;br /&gt;
The functional path is therefore better represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Cylinder load&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Minimum-angle base map&lt;br /&gt;
0x15B1D&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Scaling / corrections&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Minimum allowable ignition angle&lt;br /&gt;
IGA_MIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The minimum-angle system prevents normal torque-control retard from moving spark beyond the allowed combustion-stability or protection boundary.&lt;br /&gt;
&lt;br /&gt;
=== Minimum-Angle Temperature Protection ===&lt;br /&gt;
&lt;br /&gt;
The minimum-angle system also contains an exhaust-temperature-related calibration:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_IGA_DIF_MIN_TEG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15BDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This calibration modifies the permitted minimum ignition behaviour according to dynamic exhaust-gas temperature.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dynamic exhaust temperature&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IP_IGA_DIF_MIN_TEG&lt;br /&gt;
0x15BDD&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Minimum-angle correction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The minimum ignition angle is therefore not simply a fixed RPM/load boundary.&lt;br /&gt;
&lt;br /&gt;
It can be modified by engine thermal conditions and other operating-state corrections.&lt;br /&gt;
&lt;br /&gt;
=== Interaction Between Minimum Angle and Knock Control ===&lt;br /&gt;
&lt;br /&gt;
The normal minimum-angle limiter prevents torque control from requesting excessive retard.&lt;br /&gt;
&lt;br /&gt;
Knock control, however, has a different priority.&lt;br /&gt;
&lt;br /&gt;
If additional retard is required to protect an individual cylinder from knock, the normal torque-control minimum-angle restriction must not prevent the required protective retard.&lt;br /&gt;
&lt;br /&gt;
The logic therefore distinguishes between:&lt;br /&gt;
&lt;br /&gt;
* retard requested for torque control&lt;br /&gt;
* retard required for knock protection&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Torque-control retard&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Limited by normal IGA_MIN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Knock-required retard&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Special protection authority&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Can override normal retard restriction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This prevents the torque-control minimum-angle system from interfering with knock protection.&lt;br /&gt;
&lt;br /&gt;
== Per-Cylinder Ignition Path ==&lt;br /&gt;
&lt;br /&gt;
Final spark timing is calculated individually for each cylinder.&lt;br /&gt;
&lt;br /&gt;
Each cylinder receives its own knock correction.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                   IGA_BAS_COR&lt;br /&gt;
                        |&lt;br /&gt;
         +--------------+--------------+&lt;br /&gt;
         |              |              |&lt;br /&gt;
         v              v              v&lt;br /&gt;
   Cylinder 1       Cylinder 2       ...&lt;br /&gt;
 knock correction  knock correction&lt;br /&gt;
         |              |&lt;br /&gt;
         v              v&lt;br /&gt;
 Basic + knock     Basic + knock&lt;br /&gt;
   candidate         candidate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The torque-request angle is common to the torque-control system, while knock correction can differ from cylinder to cylinder.&lt;br /&gt;
&lt;br /&gt;
The final arbitration is therefore repeated independently for all four cylinders.&lt;br /&gt;
&lt;br /&gt;
== Final Ignition Arbitration ==&lt;br /&gt;
&lt;br /&gt;
The normal final per-cylinder ignition logic can be represented approximately as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_CYL =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_MIN,&lt;br /&gt;
    min(&lt;br /&gt;
        IGA_TQ_REQ,&lt;br /&gt;
        IGA_BAS_COR&lt;br /&gt;
        + IGA_KNK_CYL&lt;br /&gt;
        + other cylinder corrections&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The inner selection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
min(&lt;br /&gt;
    IGA_TQ_REQ,&lt;br /&gt;
    Basic + Knock&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
selects the more retarded of the normal Basic/knock path and the torque-request path.&lt;br /&gt;
&lt;br /&gt;
The outer selection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
max(&lt;br /&gt;
    IGA_MIN,&lt;br /&gt;
    selected angle&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
prevents the normal torque-control result from moving beyond the minimum allowable ignition angle.&lt;br /&gt;
&lt;br /&gt;
The functional sequence is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Basic + cylinder knock&lt;br /&gt;
          |&lt;br /&gt;
          +----------------+&lt;br /&gt;
                           |&lt;br /&gt;
                           v&lt;br /&gt;
Torque-request angle -&amp;gt; Select more retarded angle&lt;br /&gt;
                           |&lt;br /&gt;
                           v&lt;br /&gt;
                  Apply minimum-angle limit&lt;br /&gt;
                           |&lt;br /&gt;
                           v&lt;br /&gt;
                 Final cylinder ignition&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Knock-protection authority modifies this normal limitation when additional knock retard is required.&lt;br /&gt;
&lt;br /&gt;
=== Final Spark for Each Cylinder ===&lt;br /&gt;
&lt;br /&gt;
The final result of the arbitration is four independent ignition angles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_CYL1&lt;br /&gt;
&lt;br /&gt;
IGA_FINAL_CYL2&lt;br /&gt;
&lt;br /&gt;
IGA_FINAL_CYL3&lt;br /&gt;
&lt;br /&gt;
IGA_FINAL_CYL4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These represent the actual spark-angle commands after:&lt;br /&gt;
&lt;br /&gt;
* Basic ignition calculation&lt;br /&gt;
* Reference-based torque control&lt;br /&gt;
* knock correction&lt;br /&gt;
* minimum-angle limitation&lt;br /&gt;
* cylinder-specific corrections&lt;br /&gt;
&lt;br /&gt;
The structure is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    Final arbitration&lt;br /&gt;
                           |&lt;br /&gt;
          +----------------+----------------+&lt;br /&gt;
          |                |                |&lt;br /&gt;
          v                v                v&lt;br /&gt;
      Cylinder 1       Cylinder 2       Cylinder 3&lt;br /&gt;
       final IGA        final IGA        final IGA&lt;br /&gt;
                                            |&lt;br /&gt;
                                            +---- Cylinder 4&lt;br /&gt;
                                                 final IGA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Final Average Ignition Angle ===&lt;br /&gt;
&lt;br /&gt;
The four final cylinder ignition angles are also combined into an average final ignition angle.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_CYL1&lt;br /&gt;
      +&lt;br /&gt;
IGA_FINAL_CYL2&lt;br /&gt;
      +&lt;br /&gt;
IGA_FINAL_CYL3&lt;br /&gt;
      +&lt;br /&gt;
IGA_FINAL_CYL4&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
Average&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
IGA_FINAL_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The average angle is required because the torque model describes the overall engine rather than one individual cylinder.&lt;br /&gt;
&lt;br /&gt;
=== Final Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
Once the final average ignition angle is known, the ECU calculates ignition efficiency again.&lt;br /&gt;
&lt;br /&gt;
First:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_FINAL = IGA_REF_COR - IGA_FINAL_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA_FINAL = IPM_EFF_IGA(IGA_DIF_FINAL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The complete feedback path is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Final cylinder ignition angles&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Average final ignition&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IGA_REF_COR - IGA_FINAL_AVG&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Final ignition retard&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IPM_EFF_IGA&lt;br /&gt;
0x14FD4&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Final ignition efficiency&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Torque model feedback&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an important part of the SIMK43 torque architecture.&lt;br /&gt;
&lt;br /&gt;
The torque model does not only calculate what ignition timing should be commanded.&lt;br /&gt;
&lt;br /&gt;
It also recalculates the torque effect of the spark angle that actually survived final arbitration.&lt;br /&gt;
&lt;br /&gt;
=== Final Spark Output and Event Scheduling ===&lt;br /&gt;
&lt;br /&gt;
After the final spark angle has been calculated for each cylinder, the result is transferred to the low-level ignition event scheduler.&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly traces the ignition path all the way from the high-level ignition calculations to the crank-synchronous spark scheduling mechanism.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Final per-cylinder ignition angle&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Ignition output conversion&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Crank-synchronous scheduler&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Physical ignition event&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scheduler converts the requested crankshaft angle into the timing required for the actual ignition event.&lt;br /&gt;
&lt;br /&gt;
This is the final stage between the torque/ignition model and the ignition hardware.&lt;br /&gt;
&lt;br /&gt;
== Complete Functional Sequence ==&lt;br /&gt;
&lt;br /&gt;
The complete ignition path can be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    ENGINE OPERATING POINT&lt;br /&gt;
             RPM / Load / Temp / Lambda / VVT&lt;br /&gt;
                              |&lt;br /&gt;
                  +-----------+-----------+&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  v                       v&lt;br /&gt;
              IGA_REF                 IGA_BAS&lt;br /&gt;
              0x15CA5                0x158ED&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  v                       v&lt;br /&gt;
          Reference corrections     Basic corrections&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  v                       v&lt;br /&gt;
             IGA_REF_COR             IGA_BAS_COR&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                 Average knock&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                       v&lt;br /&gt;
                  |                Basic + Avg Knock&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                       v&lt;br /&gt;
                  |                  REF - BASIC&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                       v&lt;br /&gt;
                  |                  IPM_EFF_IGA&lt;br /&gt;
                  |                    0x14FD4&lt;br /&gt;
                  |                       |&lt;br /&gt;
                  |                       v&lt;br /&gt;
                  |                  EFF_IGA_BAS&lt;br /&gt;
                  |&lt;br /&gt;
                  |&lt;br /&gt;
          TORQUE COORDINATOR&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
             Torque request&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
             EFF_IGA_SP&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
            IP_IGA_DIF_SP&lt;br /&gt;
               0x15BED&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
          IGA_DIF_TQ_REQ&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
    IGA_REF_COR - IGA_DIF_TQ_REQ&lt;br /&gt;
                  |&lt;br /&gt;
                  v&lt;br /&gt;
             IGA_TQ_REQ&lt;br /&gt;
                  |&lt;br /&gt;
                  +--------------------------+&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
Basic + per-cylinder knock ------------ Final arbitration&lt;br /&gt;
                                             ^&lt;br /&gt;
                                             |&lt;br /&gt;
Minimum ignition angle ---------------------+&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                              Final cylinder ignition&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                               Average final ignition&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                          IGA_REF_COR - IGA_FINAL_AVG&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                                     IPM_EFF_IGA&lt;br /&gt;
                                       0x14FD4&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                                    EFF_IGA_FINAL&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                                   Torque model feedback&lt;br /&gt;
                                             |&lt;br /&gt;
                                             v&lt;br /&gt;
                              Crank-synchronous scheduler&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Complete Mathematical Model ==&lt;br /&gt;
&lt;br /&gt;
=== Corrected Reference Angle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_REF_COR = IGA_REF + Reference corrections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Corrected Basic Angle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_COR = IGA_BAS + Basic corrections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ignition Torque Reserve ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_RESERVE = IGA_REF_COR - IGA_BAS_COR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic Angle Including Average Knock ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_BAS_KNK = IGA_BAS_COR + IGA_KNK_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic Retard from Reference ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_BAS =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_REF_COR - IGA_BAS_KNK,&lt;br /&gt;
    0&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA_BAS = IPM_EFF_IGA(IGA_DIF_BAS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Torque-Requested Retard ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_TQ_REQ = IP_IGA_DIF_SP(EFF_IGA_SP)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Torque-Requested Ignition Angle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_TQ_REQ = IGA_REF_COR - IGA_DIF_TQ_REQ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normal Final Per-Cylinder Spark ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_CYL =&lt;br /&gt;
max(&lt;br /&gt;
    IGA_MIN,&lt;br /&gt;
    min(&lt;br /&gt;
        IGA_TQ_REQ,&lt;br /&gt;
        IGA_BAS_COR&lt;br /&gt;
        + IGA_KNK_CYL&lt;br /&gt;
        + cylinder corrections&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Knock-protection logic can modify the normal minimum-angle restriction when further protective retard is required.&lt;br /&gt;
&lt;br /&gt;
=== Final Average Ignition Angle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_FINAL_AVG =&lt;br /&gt;
Average(&lt;br /&gt;
    IGA_FINAL_CYL1,&lt;br /&gt;
    IGA_FINAL_CYL2,&lt;br /&gt;
    IGA_FINAL_CYL3,&lt;br /&gt;
    IGA_FINAL_CYL4&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Final Retard from Reference ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IGA_DIF_FINAL = IGA_REF_COR - IGA_FINAL_AVG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Final Ignition Efficiency ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EFF_IGA_FINAL = IPM_EFF_IGA(IGA_DIF_FINAL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functional Interpretation ==&lt;br /&gt;
&lt;br /&gt;
The SIMK43 ignition system can be divided into five principal functional layers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Reference Spark Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ECU calculates the corrected Reference ignition angle representing the zero-retard point used by the ignition torque model.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Basic Spark Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ECU calculates the corrected Basic ignition angle representing the normal operating spark path.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ignition Torque Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The difference between Reference and actual spark is converted into ignition torque efficiency.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Torque Intervention&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Requested torque is converted into requested ignition efficiency, then into required spark retard and finally into a requested ignition angle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Final Spark Arbitration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Torque-request spark, Basic spark, knock correction and minimum-angle protection are combined separately for each cylinder before the final ignition event is scheduled.&lt;br /&gt;
&lt;br /&gt;
Ignition timing is therefore simultaneously a combustion parameter, a knock-control mechanism, and one of the ECU&#039;s fastest torque-control actuators.&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=SIMK43_Airflow_and_Load_Model&amp;diff=1015</id>
		<title>SIMK43 Airflow and Load Model</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=SIMK43_Airflow_and_Load_Model&amp;diff=1015"/>
		<updated>2026-09-16T09:28:57Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Fixed typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the airflow and engine-load model implemented in the &#039;&#039;&#039;Siemens SIMK43 ca663056&#039;&#039;&#039; calibration, which should also apply on all other G4GC CVVT calibrations.&lt;br /&gt;
&lt;br /&gt;
It documents how the ECU measures incoming air using the hot-film MAF sensor, independently calculates airflow using the intake-manifold model, determines cylinder air charge, supervises the measured and modeled airflow paths, and integrates the resulting load value into the torque, ignition and fueling systems.&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. General Architecture ==&lt;br /&gt;
&lt;br /&gt;
The SIMK43 airflow system contains two parallel representations of engine airflow:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Measured airflow&#039;&#039;&#039; derived from the physical hot-film MAF sensor.&lt;br /&gt;
* &#039;&#039;&#039;Modeled airflow&#039;&#039;&#039; calculated from engine speed, manifold conditions, valve overlap, temperature and ambient pressure.&lt;br /&gt;
&lt;br /&gt;
These paths ultimately describe the same physical quantity: the mass of fresh air entering the engine.&lt;br /&gt;
&lt;br /&gt;
The MAF sensor measures air travelling through the intake tract, while the combustion system ultimately requires an estimate of the amount of fresh air entering an individual cylinder.&lt;br /&gt;
&lt;br /&gt;
The overall architecture is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                     AIR ENTERING ENGINE&lt;br /&gt;
                            |&lt;br /&gt;
             +--------------+--------------+&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
       HFM / MAF SENSOR           INTAKE MANIFOLD MODEL&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
      Sensor linearization         RPM / pressure / VVT&lt;br /&gt;
             |                     temperature / ambient&lt;br /&gt;
             v                             |&lt;br /&gt;
      Measured airflow                     v&lt;br /&gt;
          [kg/h]                  Modeled engine airflow&lt;br /&gt;
             |                          [kg/h]&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
      Convert using RPM             Convert using RPM&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
     Measured cylinder             Modeled cylinder&lt;br /&gt;
          air charge                    air charge&lt;br /&gt;
          [mg/stk]                    [mg/stk]&lt;br /&gt;
             |                             |&lt;br /&gt;
             +--------------+--------------+&lt;br /&gt;
                            |&lt;br /&gt;
                            v&lt;br /&gt;
                  AIRFLOW SUPERVISION&lt;br /&gt;
                            |&lt;br /&gt;
                            v&lt;br /&gt;
                  FINAL CYLINDER LOAD&lt;br /&gt;
                         [mg/stk]&lt;br /&gt;
                            |&lt;br /&gt;
          +-----------------+-----------------+&lt;br /&gt;
          |                 |                 |&lt;br /&gt;
          v                 v                 v&lt;br /&gt;
       IGNITION           FUELING           TORQUE&lt;br /&gt;
                                             |&lt;br /&gt;
                                     actual load -&amp;gt; torque&lt;br /&gt;
                                             |&lt;br /&gt;
                                     torque request -&amp;gt; load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIMK43 should therefore not be regarded simply as a MAF-based ECU.&lt;br /&gt;
&lt;br /&gt;
It is more accurately described as a &#039;&#039;&#039;model-based cylinder-charge control system using the MAF sensor as its primary airflow measurement&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 2. Airflow and Load Units ==&lt;br /&gt;
&lt;br /&gt;
Siemens uses the term &#039;&#039;MAF&#039;&#039; for several related quantities. The engineering unit must therefore always be considered when interpreting a calibration or internal calculation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF sensor signal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: V or internal ADC representation&lt;br /&gt;
* Meaning: electrical output of the MAF sensor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Engine airflow&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: kg/h&lt;br /&gt;
* Meaning: total fresh-air mass flowing through the complete engine intake.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cylinder air charge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: mg/stk&lt;br /&gt;
* Meaning: fresh-air mass entering one cylinder during one intake event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Torque&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: Nm&lt;br /&gt;
* Meaning: indicated or effective engine torque.&lt;br /&gt;
&lt;br /&gt;
The two principal airflow domains are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_KGH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
They describe the same airflow from two different perspectives.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF_KGH&#039;&#039;&#039; measured in &#039;&#039;&#039;kg/h&#039;&#039;&#039; represents the total airflow of the complete engine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF_CYL&#039;&#039;&#039; measured in &#039;&#039;&#039;mg/stk&#039;&#039;&#039; represents the mass of fresh air entering one cylinder during one intake event.&lt;br /&gt;
&lt;br /&gt;
Most combustion-related calibration maps operate in the cylinder-charge domain.&lt;br /&gt;
&lt;br /&gt;
== 3. Measured Airflow Path ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 MAF Sensor Characteristic ===&lt;br /&gt;
&lt;br /&gt;
The primary MAF characteristic in ca663056 is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_TAB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x11B4E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This table converts the electrical MAF sensor representation into total engine mass airflow.&lt;br /&gt;
&lt;br /&gt;
Its output is expressed in kg/h.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF electrical signal&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
   ID_MAF_TAB&lt;br /&gt;
      0x11B4E&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Engine airflow&lt;br /&gt;
     [kg/h]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly directly references address &#039;&#039;&#039;0x11B4E&#039;&#039;&#039; during initialization of the MAF conversion path, confirming that the table is actively used for MAF conversion.&lt;br /&gt;
&lt;br /&gt;
The sensor characteristic can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_RAW = ID_MAF_TAB(V_MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the stage responsible for converting the physical MAF sensor signal into an engineering airflow quantity.&lt;br /&gt;
&lt;br /&gt;
== 4. MAF Acquisition and Signal Conditioning ==&lt;br /&gt;
&lt;br /&gt;
The ECU does not use a single instantaneous MAF sample directly as engine load.&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly shows that MAF measurements are accumulated over repeated acquisition periods and subsequently divided by the number of samples.&lt;br /&gt;
&lt;br /&gt;
The measurement path therefore performs averaging before the airflow value is used elsewhere.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_AVG = Average(MAF_RAW)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The averaged airflow then passes through an operating-point-dependent correction.&lt;br /&gt;
&lt;br /&gt;
The relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_KGH_MES_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x193EC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SAM defines the function as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_MAF_KGH_MES_FAC = f(N, TPS_SEG)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;N&#039;&#039;&#039; = engine speed&lt;br /&gt;
* &#039;&#039;&#039;TPS_SEG&#039;&#039;&#039; = throttle operating region&lt;br /&gt;
&lt;br /&gt;
The output of this map is a &#039;&#039;&#039;dimensionless correction factor&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The corrected measured airflow can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MES_COR = MAF_AVG x F_MAF(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting quantity remains in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kg/h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and represents the ECU&#039;s corrected physical measurement of total engine airflow.&lt;br /&gt;
&lt;br /&gt;
== 5. Conversion from Engine Airflow to Cylinder Air Charge ==&lt;br /&gt;
&lt;br /&gt;
The combustion model itself does not primarily operate in kg/h.&lt;br /&gt;
&lt;br /&gt;
After corrected measured airflow has been obtained, the ECU converts total engine airflow into cylinder air charge using engine speed.&lt;br /&gt;
&lt;br /&gt;
For a four-cylinder, four-stroke engine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Intake events per hour = (RPM / 2) x 4 x 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL [mg/stk] =&lt;br /&gt;
MAF_KGH [kg/h] x 1,000,000&lt;br /&gt;
--------------------------------&lt;br /&gt;
(RPM / 2) x 4 x 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a four-cylinder engine this simplifies to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL [mg/stk] = 8333.333 x MAF_KGH [kg/h] / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
400 kg/h at 3000 rpm&lt;br /&gt;
&lt;br /&gt;
MAF_CYL = 1111 mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At twice the engine speed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
400 kg/h at 6000 rpm&lt;br /&gt;
&lt;br /&gt;
MAF_CYL = 556 mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same total engine airflow therefore represents a different cylinder load depending on engine speed.&lt;br /&gt;
&lt;br /&gt;
This distinction is fundamental to the SIMK43 load model.&lt;br /&gt;
&lt;br /&gt;
== 6. Definition of Engine Load ==&lt;br /&gt;
&lt;br /&gt;
For the remainder of the combustion-control system, the principal load quantity is cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LOAD = MAF_CYL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with units:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The basic conversion chain is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF signal&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Engine airflow&lt;br /&gt;
   [kg/h]&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
RPM conversion&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Cylinder charge&lt;br /&gt;
   [mg/stk]&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Engine load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This cylinder-charge quantity is used as the load coordinate by many ignition, fueling and torque-model functions.&lt;br /&gt;
&lt;br /&gt;
== 7. Independent Intake-Manifold and Cylinder-Filling Model ==&lt;br /&gt;
&lt;br /&gt;
In parallel with the physical MAF measurement, SIMK43 independently calculates airflow using a model of the intake system and the engine&#039;s cylinder-filling characteristics.&lt;br /&gt;
&lt;br /&gt;
The core cylinder-flow model consists of two calibrations.&lt;br /&gt;
&lt;br /&gt;
=== 7.1 IP_EFF_VOL_OFS ===&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1245E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_EFF_VOL_OFS [kg/h] = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;N&#039;&#039;&#039; = engine speed&lt;br /&gt;
* &#039;&#039;&#039;VO&#039;&#039;&#039; = valve overlap&lt;br /&gt;
&lt;br /&gt;
This calibration provides the base airflow offset of the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 IP_EFF_VOL_SLOP ===&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1252A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_EFF_VOL_SLOP [kg/(h*hPa)] = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This calibration provides the pressure-dependent slope of the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
Together, the two maps describe the relationship between effective manifold pressure and cylinder airflow.&lt;br /&gt;
&lt;br /&gt;
== 8. Offset and Slope Representation of Cylinder Filling ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 does not represent cylinder filling using one conventional percentage-VE table.&lt;br /&gt;
&lt;br /&gt;
Instead, airflow is represented approximately as a linear relationship between an effective pressure quantity and airflow.&lt;br /&gt;
&lt;br /&gt;
The basic relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL = O + S x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The units verify the relationship:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kg/h + [kg/(h*hPa)] x hPa = kg/h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly loads the offset and slope calibrations as separate coefficients used in the same airflow calculation.&lt;br /&gt;
&lt;br /&gt;
The effective pressure term should not automatically be interpreted as a raw MAP sensor-like value. It belongs to the larger manifold model and represents the pressure-domain state used by the cylinder-flow equation.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Valve overlap&lt;br /&gt;
 +&lt;br /&gt;
Effective manifold pressure&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Offset / slope cylinder model&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
       [kg/h]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Effect of Valve Overlap ==&lt;br /&gt;
&lt;br /&gt;
Both base airflow coefficients depend on valve overlap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O = f(N, VO)&lt;br /&gt;
&lt;br /&gt;
S = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The model is therefore explicitly aware of camshaft timing.&lt;br /&gt;
&lt;br /&gt;
Changing valve overlap changes the predicted relationship between manifold pressure and cylinder airflow.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Valve timing&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Valve overlap&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Cylinder filling characteristic&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Predicted airflow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VVT therefore forms part of the physical air model rather than being treated only as an independent actuator.&lt;br /&gt;
&lt;br /&gt;
== 10. Temperature Correction of Cylinder Filling ==&lt;br /&gt;
&lt;br /&gt;
Cylinder filling changes with intake air temperature and engine thermal state.&lt;br /&gt;
&lt;br /&gt;
The principal temperature-dependent corrections are:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_TIA_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15539&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_TIA = f(N, MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents the effect of intake-air temperature on the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_TCO_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x154F9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_TCO = f(N, MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents the effect of coolant temperature on the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
The ECU combines the temperature influences into a common correction quantity.&lt;br /&gt;
&lt;br /&gt;
The resulting correction is filtered before it is applied to the cylinder-flow model.&lt;br /&gt;
&lt;br /&gt;
The relevant filtering calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_CRLC_EFF_VOL_COR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x154ED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CRLC_VE = f(N)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting thermal correction can therefore be represented conceptually as a low pass filter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_THERM = LPF[f(TIA, TCO, N, LOAD)]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LPF&#039;&#039;&#039; represents the filtering applied by the ECU.&lt;br /&gt;
&lt;br /&gt;
== 11. Ambient-Pressure Compensation ==&lt;br /&gt;
&lt;br /&gt;
The base cylinder-flow characteristic is also corrected according to ambient pressure.&lt;br /&gt;
&lt;br /&gt;
The relevant calibrations are:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_VOL_OFS_AMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1251E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_OFS_AMP = f(AMP_AD)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_VOL_SLOP_AMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x125EA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_SLOP_AMP = f(AMP_AD)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both outputs are &#039;&#039;&#039;dimensionless correction factors&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AMP_AD&#039;&#039;&#039; represents the ECU&#039;s adapted ambient-pressure state.&lt;br /&gt;
&lt;br /&gt;
The ambient-pressure corrections modify both the offset and slope of the cylinder-flow characteristic.&lt;br /&gt;
&lt;br /&gt;
== 12. Corrected Cylinder-Flow Coefficients ==&lt;br /&gt;
&lt;br /&gt;
The complete cylinder-flow coefficients can be represented as follows.&lt;br /&gt;
&lt;br /&gt;
The base offset is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_0 = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The base slope is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S_0 = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effective offset is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_EFF = O_0 x F_OFS_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effective slope is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S_EFF = S_0 x F_THERM x F_SLOP_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disassembly shows the slope being corrected by the filtered thermal correction and then by the ambient-pressure correction.&lt;br /&gt;
&lt;br /&gt;
The offset is separately corrected by its own ambient-pressure factor.&lt;br /&gt;
&lt;br /&gt;
The final modeled airflow equation is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL_KGH = O_EFF + S_EFF x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the central cylinder-filling relationship of the SIMK43 airflow model.&lt;br /&gt;
&lt;br /&gt;
== 13. Manifold Filling and Pressure-Ratio Model ==&lt;br /&gt;
&lt;br /&gt;
The effective pressure term used by the cylinder-flow equation comes from the larger intake-manifold model.&lt;br /&gt;
&lt;br /&gt;
SAM identifies several associated functions relating to:&lt;br /&gt;
&lt;br /&gt;
* throttle effective area&lt;br /&gt;
* pressure ratio across the throttle&lt;br /&gt;
* upstream pressure&lt;br /&gt;
* intake-system pressure loss&lt;br /&gt;
* intake-air temperature&lt;br /&gt;
* manifold filling dynamics&lt;br /&gt;
* predicted manifold state&lt;br /&gt;
&lt;br /&gt;
One relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_FAC_AR_RED_COR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_AR_RED_COR = f(PQ)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PQ&#039;&#039;&#039; represents a pressure-ratio quantity.&lt;br /&gt;
&lt;br /&gt;
Additional functions include:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_FAC_OFS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID_MAF_FAC_OFS = f(PQ_ESTIM)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_FAC_SLOP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID_MAF_FAC_SLOP = f(PQ_ESTIM)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These functions describe nonlinear airflow behaviour associated with the pressure ratio across the intake restriction.&lt;br /&gt;
&lt;br /&gt;
Another manifold-model coefficient is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_MDL_CON_1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_MAN = f(TIA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its engineering unit is approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s/m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This coefficient participates in the physical manifold-filling model.&lt;br /&gt;
&lt;br /&gt;
The intake-manifold model can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Throttle effective area&lt;br /&gt;
        |&lt;br /&gt;
        +---- Upstream pressure&lt;br /&gt;
        |&lt;br /&gt;
        +---- Pressure ratio&lt;br /&gt;
        |&lt;br /&gt;
        +---- Intake temperature&lt;br /&gt;
        |&lt;br /&gt;
        +---- Manifold filling dynamics&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Effective manifold pressure state&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Cylinder offset / slope model&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The modeled airflow is therefore derived from pressure and filling behaviour rather than from a simple throttle-angle-to-load lookup.&lt;br /&gt;
&lt;br /&gt;
== 14. Intake-System Pressure Loss ==&lt;br /&gt;
&lt;br /&gt;
The intake model also accounts for pressure loss between the outside atmosphere and the pressure available upstream of the throttle.&lt;br /&gt;
&lt;br /&gt;
SAM defines:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_AMP_DEC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELTA_P_INTAKE = f(MAF_THR)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As airflow increases, the pressure loss through the intake tract also increases.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
P_UPSTREAM = AMP_AD - DELTA_P_INTAKE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This upstream pressure participates in the throttle pressure-ratio and manifold-filling calculations.&lt;br /&gt;
&lt;br /&gt;
The model therefore does not assume that atmospheric pressure is always fully available at the throttle inlet.&lt;br /&gt;
&lt;br /&gt;
== 15. Modeled Airflow to Modeled Cylinder Charge ==&lt;br /&gt;
&lt;br /&gt;
Once the model has calculated total engine airflow in kg/h, that airflow is converted into cylinder charge using the same physical relationship as the measured-airflow path.&lt;br /&gt;
&lt;br /&gt;
For the four-cylinder engine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MDL [mg/stk] = 8333.333 x MAF_MDL_KGH [kg/h] / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The measured and modeled paths therefore converge into the same engineering domain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows the two airflow estimates to be compared, supervised and substituted.&lt;br /&gt;
&lt;br /&gt;
== 16. MAF Pulsation Supervision ==&lt;br /&gt;
&lt;br /&gt;
The physical MAF signal can become unreliable when intake-flow pulsation or reverse-flow effects become sufficiently large.&lt;br /&gt;
&lt;br /&gt;
SIMK43 therefore contains a dedicated MAF-pulsation supervision system.&lt;br /&gt;
&lt;br /&gt;
One of the principal calibrations is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_PULS_MAX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x12F50&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_PULS_MAX = f(N)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also contains maximum-difference and hysteresis parameters.&lt;br /&gt;
&lt;br /&gt;
The ECU evaluates the spread of the sampled MAF signal.&lt;br /&gt;
&lt;br /&gt;
That spread is converted into the cylinder-charge domain using engine speed.&lt;br /&gt;
&lt;br /&gt;
The calculated pulsation is then compared with the permissible pulsation limit.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF samples&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Maximum / minimum spread&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Convert spread to mg/stk&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Compare with IP_MAF_PULS_MAX&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
MAF pulsation state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The pulsation state participates directly in airflow-source supervision.&lt;br /&gt;
&lt;br /&gt;
It is therefore part of the functional airflow model and not merely a diagnostic function.&lt;br /&gt;
&lt;br /&gt;
== 17. Measured-Airflow and Modeled-Airflow Arbitration ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains source-selection logic between the measured and modeled airflow paths.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
If measured airflow is accepted:&lt;br /&gt;
    MAF_WORK_KGH = MAF_MES_KGH&lt;br /&gt;
&lt;br /&gt;
If measured airflow is rejected:&lt;br /&gt;
    MAF_WORK_KGH = MAF_MDL_KGH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During normal operation, the physical MAF measurement is the primary airflow source.&lt;br /&gt;
&lt;br /&gt;
When the measured signal is considered unsuitable because of pulsation, faults or other fallback conditions, the independently calculated manifold-model airflow can replace it.&lt;br /&gt;
&lt;br /&gt;
The airflow architecture therefore contains two complete sources for engine airflow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Measured MAF airflow      Modeled manifold airflow&lt;br /&gt;
        |                             |&lt;br /&gt;
        +--------------+--------------+&lt;br /&gt;
                       |&lt;br /&gt;
                       v&lt;br /&gt;
                 Source selector&lt;br /&gt;
                       |&lt;br /&gt;
                       v&lt;br /&gt;
                 Working airflow&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 18. Final Cylinder-Load Determination ==&lt;br /&gt;
&lt;br /&gt;
Following airflow supervision, the ECU maintains several representations of cylinder charge.&lt;br /&gt;
&lt;br /&gt;
The principal sources include:&lt;br /&gt;
&lt;br /&gt;
* measured-air-derived cylinder charge&lt;br /&gt;
* manifold-model-derived cylinder charge&lt;br /&gt;
* filtered or alternate cylinder-charge representations&lt;br /&gt;
* fallback cylinder charge&lt;br /&gt;
&lt;br /&gt;
These ultimately produce one effective load quantity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_WORK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with units:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of the combustion-control system uses this working cylinder-charge state without needing to know whether its source originated from the MAF measurement or the manifold model.&lt;br /&gt;
&lt;br /&gt;
== 19. Reference Torque Model ==&lt;br /&gt;
&lt;br /&gt;
The principal forward relationship between cylinder charge and torque is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQI_REF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14D68&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_REF = f(N, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAF_CYL&#039;&#039;&#039; is cylinder fresh-air charge in mg/stk.&lt;br /&gt;
* &#039;&#039;&#039;TQI_REF&#039;&#039;&#039; is reference indicated torque in Nm.&lt;br /&gt;
&lt;br /&gt;
The function therefore represents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cylinder air charge&lt;br /&gt;
      [mg/stk]&lt;br /&gt;
          |&lt;br /&gt;
          v&lt;br /&gt;
     IP_TQI_REF&lt;br /&gt;
          |&lt;br /&gt;
          v&lt;br /&gt;
Reference indicated torque&lt;br /&gt;
          [Nm]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This map describes the torque the engine is expected to produce from a given amount of cylinder fresh air.&lt;br /&gt;
&lt;br /&gt;
== 20. Torque Loss Model ==&lt;br /&gt;
&lt;br /&gt;
Indicated torque is not identical to torque available at the crankshaft.&lt;br /&gt;
&lt;br /&gt;
SIMK43 separately models friction and pumping losses.&lt;br /&gt;
&lt;br /&gt;
The principal calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQFR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14AE0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQFR = f(N, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents base friction and pumping losses as a function of engine speed and cylinder load.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQ_EFFECTIVE =&lt;br /&gt;
TQI&lt;br /&gt;
- TQ_FRICTION&lt;br /&gt;
- TQ_PUMPING&lt;br /&gt;
- TQ_ACCESSORY&lt;br /&gt;
- other losses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The torque system therefore combines the calculated indicated combustion torque with independently calculated engine losses.&lt;br /&gt;
&lt;br /&gt;
== 21. Inverse Torque-to-Air Model ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 also contains the inverse relationship between torque and cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
The relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_SP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x12F5C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_SP = f(N, TQI_SP)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This calibration converts desired indicated torque into the cylinder air charge required to produce that torque.&lt;br /&gt;
&lt;br /&gt;
The two principal torque/air relationships are therefore:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forward model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL -&amp;gt; TQI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
through:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQI_REF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inverse model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_SP -&amp;gt; MAF_CYL_SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
through:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_SP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Together, these functions form the central air-to-torque and torque-to-air relationship of SIMK43.&lt;br /&gt;
&lt;br /&gt;
== 22. Air-Charge Control Objective ==&lt;br /&gt;
&lt;br /&gt;
Once the torque system has calculated a desired cylinder charge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
it can be compared with the estimated actual cylinder charge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_ACT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The conceptual air-control error is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
E_AIR = MAF_CYL_SP - MAF_CYL_ACT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The air-path controller can then act on the available air-control actuators (mainly the IAC Valve, as the throttle is driven by a steel cable) in order to move actual cylinder charge toward requested cylinder charge.&lt;br /&gt;
&lt;br /&gt;
This illustrates why the SIMK43 torque-control structure is fundamentally based around &#039;&#039;&#039;cylinder air charge&#039;&#039;&#039; rather than throttle angle alone.&lt;br /&gt;
&lt;br /&gt;
== 23. IVVT Airflow Prediction ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains an additional airflow estimator associated with the IVVT system.&lt;br /&gt;
&lt;br /&gt;
One relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_IVVT_1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x193A4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_IVVT = f(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its output represents calculated airflow for the VVT-related airflow-prediction path.&lt;br /&gt;
&lt;br /&gt;
SAM also identifies:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_IVVT_2&#039;&#039;&#039; - alternate airflow calculation used when a TPS error exists.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_TPS_FAC&#039;&#039;&#039; - throttle-position weighting.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_ADD_ISAPWM&#039;&#039;&#039; - estimated additional airflow through the idle-air actuator.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_FAC_TIA&#039;&#039;&#039; - intake-air-temperature correction.&lt;br /&gt;
&lt;br /&gt;
This auxiliary IVVT airflow estimator should be distinguished from the main manifold and cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
The primary physical cylinder model is based on:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;IP_EFF_VOL_OFS&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;IP_EFF_VOL_SLOP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The IVVT airflow calculation represents an additional prediction path associated with VVT, throttle and idle-air operating conditions.&lt;br /&gt;
&lt;br /&gt;
== 24. End-to-End Functional Sequence ==&lt;br /&gt;
&lt;br /&gt;
=== 24.1 Measured-Air Path ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF electrical signal&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
ID_MAF_TAB&lt;br /&gt;
0x11B4E&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Total engine airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Sampling and averaging&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Operating-point MAF correction&lt;br /&gt;
IP_MAF_KGH_MES_FAC&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Corrected measured airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
RPM conversion&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Measured cylinder air charge&lt;br /&gt;
mg/stk&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Airflow / load source supervision&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Final working cylinder load&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24.2 Modeled-Air Path ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
Valve overlap&lt;br /&gt;
Ambient pressure&lt;br /&gt;
IAT&lt;br /&gt;
Coolant temperature&lt;br /&gt;
Throttle / manifold state&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IP_EFF_VOL_OFS&lt;br /&gt;
IP_EFF_VOL_SLOP&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Temperature correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Ambient correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Corrected offset and slope&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Effective manifold pressure&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
RPM conversion&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted cylinder charge&lt;br /&gt;
mg/stk&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Airflow / load source supervision&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both paths therefore converge before the main combustion-control functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 25. Complete Mathematical Model ==&lt;br /&gt;
&lt;br /&gt;
=== 25.1 Measured Airflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_RAW = ID_MAF_TAB(V_MAF)&lt;br /&gt;
&lt;br /&gt;
MAF_AVG = Filter(MAF_RAW)&lt;br /&gt;
&lt;br /&gt;
MAF_MES_COR = MAF_AVG x F_MAF(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.2 Measured Cylinder Charge ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MES =&lt;br /&gt;
8333.333 x MAF_MES_COR / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.3 Base Modeled Cylinder-Flow Coefficients ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_0 = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&lt;br /&gt;
S_0 = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.4 Corrected Cylinder-Flow Coefficients ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_EFF = O_0 x F_OFS_AMP&lt;br /&gt;
&lt;br /&gt;
S_EFF = S_0 x F_THERM x F_SLOP_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.5 Modeled Airflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL_KGH = O_EFF + S_EFF x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.6 Modeled Cylinder Charge ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MDL = 8333.333 x MAF_MDL_KGH / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.7 Working Engine Load ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_WORK =&lt;br /&gt;
Select(&lt;br /&gt;
    MAF_CYL_MES,&lt;br /&gt;
    MAF_CYL_MDL,&lt;br /&gt;
    MAF_CYL_FALLBACK&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.8 Forward Torque Model ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_REF =&lt;br /&gt;
IP_TQI_REF(&lt;br /&gt;
    RPM,&lt;br /&gt;
    MAF_CYL_WORK&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.9 Inverse Torque Model ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_SP =&lt;br /&gt;
IP_MAF_SP(&lt;br /&gt;
    RPM,&lt;br /&gt;
    TQI_SP&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 26. Functional Interpretation ==&lt;br /&gt;
&lt;br /&gt;
The SIMK43 airflow architecture can be divided into four principal functional layers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Measurement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The physical MAF signal is converted into corrected total engine airflow in kg/h.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Physical Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An independent intake-manifold model predicts airflow using manifold conditions, engine speed, valve overlap, temperature and ambient pressure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Load Estimation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Measured and modeled airflow are converted into cylinder charge in mg/stk and supervised to produce the ECU&#039;s effective working load.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Torque Coordination&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ECU converts actual cylinder air charge into estimated torque and requested torque back into required cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
Physical MAF measurement and a parallel intake-manifold model are used together to determine the amount of fresh air available for combustion and to provide a consistent load quantity for the torque, ignition and fueling systems.&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=SIMK43_Airflow_and_Load_Model&amp;diff=1014</id>
		<title>SIMK43 Airflow and Load Model</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=SIMK43_Airflow_and_Load_Model&amp;diff=1014"/>
		<updated>2026-09-16T09:22:58Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the airflow and engine-load model implemented in the &#039;&#039;&#039;Siemens SIMK43 ca663056&#039;&#039;&#039; calibration, which should also apply on all other G4GC CVVT calibrations.&lt;br /&gt;
&lt;br /&gt;
It documents how the ECU measures incoming air using the hot-film MAF sensor, independently calculates airflow using the intake-manifold model, determines cylinder air charge, supervises the measured and modeled airflow paths, and integrates the resulting load value into the torque, ignition and fueling systems.&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. General Architecture ==&lt;br /&gt;
&lt;br /&gt;
The SIMK43 airflow system contains two parallel representations of engine airflow:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Measured airflow&#039;&#039;&#039; derived from the physical hot-film MAF sensor.&lt;br /&gt;
* &#039;&#039;&#039;Modeled airflow&#039;&#039;&#039; calculated from engine speed, manifold conditions, valve overlap, temperature and ambient pressure.&lt;br /&gt;
&lt;br /&gt;
These paths ultimately describe the same physical quantity: the mass of fresh air entering the engine.&lt;br /&gt;
&lt;br /&gt;
The MAF sensor measures air travelling through the intake tract, while the combustion system ultimately requires an estimate of the amount of fresh air entering an individual cylinder.&lt;br /&gt;
&lt;br /&gt;
The overall architecture is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                     AIR ENTERING ENGINE&lt;br /&gt;
                            |&lt;br /&gt;
             +--------------+--------------+&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
       HFM / MAF SENSOR           INTAKE MANIFOLD MODEL&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
      Sensor linearization         RPM / pressure / VVT&lt;br /&gt;
             |                     temperature / ambient&lt;br /&gt;
             v                             |&lt;br /&gt;
      Measured airflow                     v&lt;br /&gt;
          [kg/h]                  Modeled engine airflow&lt;br /&gt;
             |                          [kg/h]&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
      Convert using RPM             Convert using RPM&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
     Measured cylinder             Modeled cylinder&lt;br /&gt;
          air charge                    air charge&lt;br /&gt;
          [mg/stk]                    [mg/stk]&lt;br /&gt;
             |                             |&lt;br /&gt;
             +--------------+--------------+&lt;br /&gt;
                            |&lt;br /&gt;
                            v&lt;br /&gt;
                  AIRFLOW SUPERVISION&lt;br /&gt;
                            |&lt;br /&gt;
                            v&lt;br /&gt;
                  FINAL CYLINDER LOAD&lt;br /&gt;
                         [mg/stk]&lt;br /&gt;
                            |&lt;br /&gt;
          +-----------------+-----------------+&lt;br /&gt;
          |                 |                 |&lt;br /&gt;
          v                 v                 v&lt;br /&gt;
       IGNITION           FUELING           TORQUE&lt;br /&gt;
                                             |&lt;br /&gt;
                                     actual load -&amp;gt; torque&lt;br /&gt;
                                             |&lt;br /&gt;
                                     torque request -&amp;gt; load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIMK43 should therefore not be regarded simply as a MAF-based ECU.&lt;br /&gt;
&lt;br /&gt;
It is more accurately described as a &#039;&#039;&#039;model-based cylinder-charge control system using the HFM sensor as its primary airflow measurement&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 2. Airflow and Load Units ==&lt;br /&gt;
&lt;br /&gt;
Siemens uses the term &#039;&#039;MAF&#039;&#039; for several related quantities. The engineering unit must therefore always be considered when interpreting a calibration or internal calculation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF sensor signal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: V or internal ADC representation&lt;br /&gt;
* Meaning: electrical output of the HFM sensor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Engine airflow&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: kg/h&lt;br /&gt;
* Meaning: total fresh-air mass flowing through the complete engine intake.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cylinder air charge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: mg/stk&lt;br /&gt;
* Meaning: fresh-air mass entering one cylinder during one intake event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Torque&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: Nm&lt;br /&gt;
* Meaning: indicated or effective engine torque.&lt;br /&gt;
&lt;br /&gt;
The two principal airflow domains are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_KGH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
They describe the same airflow from two different perspectives.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF_KGH&#039;&#039;&#039; measured in &#039;&#039;&#039;kg/h&#039;&#039;&#039; represents the total airflow of the complete engine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF_CYL&#039;&#039;&#039; measured in &#039;&#039;&#039;mg/stk&#039;&#039;&#039; represents the mass of fresh air entering one cylinder during one intake event.&lt;br /&gt;
&lt;br /&gt;
Most combustion-related calibration maps operate in the cylinder-charge domain.&lt;br /&gt;
&lt;br /&gt;
== 3. Measured Airflow Path ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 MAF Sensor Characteristic ===&lt;br /&gt;
&lt;br /&gt;
The primary MAF characteristic in ca663056 is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_TAB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x11B4E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This table converts the electrical MAF sensor representation into total engine mass airflow.&lt;br /&gt;
&lt;br /&gt;
Its output is expressed in kg/h.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF electrical signal&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
   ID_MAF_TAB&lt;br /&gt;
      0x11B4E&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Engine airflow&lt;br /&gt;
     [kg/h]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly directly references address &#039;&#039;&#039;0x11B4E&#039;&#039;&#039; during initialization of the MAF conversion path, confirming that the table is actively used for MAF conversion.&lt;br /&gt;
&lt;br /&gt;
The sensor characteristic can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_RAW = ID_MAF_TAB(V_MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the stage responsible for converting the physical MAF sensor signal into an engineering airflow quantity.&lt;br /&gt;
&lt;br /&gt;
== 4. MAF Acquisition and Signal Conditioning ==&lt;br /&gt;
&lt;br /&gt;
The ECU does not use a single instantaneous MAF sample directly as engine load.&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly shows that MAF measurements are accumulated over repeated acquisition periods and subsequently divided by the number of samples.&lt;br /&gt;
&lt;br /&gt;
The measurement path therefore performs averaging before the airflow value is used elsewhere.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_AVG = Average(MAF_RAW)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The averaged airflow then passes through an operating-point-dependent correction.&lt;br /&gt;
&lt;br /&gt;
The relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_KGH_MES_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x193EC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SAM defines the function as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_MAF_KGH_MES_FAC = f(N, TPS_SEG)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;N&#039;&#039;&#039; = engine speed&lt;br /&gt;
* &#039;&#039;&#039;TPS_SEG&#039;&#039;&#039; = throttle operating region&lt;br /&gt;
&lt;br /&gt;
The output of this map is a &#039;&#039;&#039;dimensionless correction factor&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The corrected measured airflow can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MES_COR = MAF_AVG x F_MAF(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting quantity remains in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kg/h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and represents the ECU&#039;s corrected physical measurement of total engine airflow.&lt;br /&gt;
&lt;br /&gt;
== 5. Conversion from Engine Airflow to Cylinder Air Charge ==&lt;br /&gt;
&lt;br /&gt;
The combustion model itself does not primarily operate in kg/h.&lt;br /&gt;
&lt;br /&gt;
After corrected measured airflow has been obtained, the ECU converts total engine airflow into cylinder air charge using engine speed.&lt;br /&gt;
&lt;br /&gt;
For a four-cylinder, four-stroke engine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Intake events per hour = (RPM / 2) x 4 x 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL [mg/stk] =&lt;br /&gt;
MAF_KGH [kg/h] x 1,000,000&lt;br /&gt;
--------------------------------&lt;br /&gt;
(RPM / 2) x 4 x 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a four-cylinder engine this simplifies to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL [mg/stk] = 8333.333 x MAF_KGH [kg/h] / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
400 kg/h at 3000 rpm&lt;br /&gt;
&lt;br /&gt;
MAF_CYL = 1111 mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At twice the engine speed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
400 kg/h at 6000 rpm&lt;br /&gt;
&lt;br /&gt;
MAF_CYL = 556 mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same total engine airflow therefore represents a different cylinder load depending on engine speed.&lt;br /&gt;
&lt;br /&gt;
This distinction is fundamental to the SIMK43 load model.&lt;br /&gt;
&lt;br /&gt;
== 6. Definition of Engine Load ==&lt;br /&gt;
&lt;br /&gt;
For the remainder of the combustion-control system, the principal load quantity is cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LOAD = MAF_CYL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with units:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The basic conversion chain is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF signal&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Engine airflow&lt;br /&gt;
   [kg/h]&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
RPM conversion&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Cylinder charge&lt;br /&gt;
   [mg/stk]&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Engine load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This cylinder-charge quantity is used as the load coordinate by many ignition, fueling and torque-model functions.&lt;br /&gt;
&lt;br /&gt;
== 7. Independent Intake-Manifold and Cylinder-Filling Model ==&lt;br /&gt;
&lt;br /&gt;
In parallel with the physical MAF measurement, SIMK43 independently calculates airflow using a model of the intake system and the engine&#039;s cylinder-filling characteristics.&lt;br /&gt;
&lt;br /&gt;
The core cylinder-flow model consists of two calibrations.&lt;br /&gt;
&lt;br /&gt;
=== 7.1 IP_EFF_VOL_OFS ===&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1245E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_EFF_VOL_OFS [kg/h] = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;N&#039;&#039;&#039; = engine speed&lt;br /&gt;
* &#039;&#039;&#039;VO&#039;&#039;&#039; = valve overlap&lt;br /&gt;
&lt;br /&gt;
This calibration provides the base airflow offset of the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 IP_EFF_VOL_SLOP ===&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1252A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_EFF_VOL_SLOP [kg/(h*hPa)] = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This calibration provides the pressure-dependent slope of the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
Together, the two maps describe the relationship between effective manifold pressure and cylinder airflow.&lt;br /&gt;
&lt;br /&gt;
== 8. Offset and Slope Representation of Cylinder Filling ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 does not represent cylinder filling using one conventional percentage-VE table.&lt;br /&gt;
&lt;br /&gt;
Instead, airflow is represented approximately as a linear relationship between an effective pressure quantity and airflow.&lt;br /&gt;
&lt;br /&gt;
The basic relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL = O + S x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The units verify the relationship:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kg/h + [kg/(h*hPa)] x hPa = kg/h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly loads the offset and slope calibrations as separate coefficients used in the same airflow calculation.&lt;br /&gt;
&lt;br /&gt;
The effective pressure term should not automatically be interpreted as a raw MAP sensor-like value. It belongs to the larger manifold model and represents the pressure-domain state used by the cylinder-flow equation.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Valve overlap&lt;br /&gt;
 +&lt;br /&gt;
Effective manifold pressure&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Offset / slope cylinder model&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
       [kg/h]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Effect of Valve Overlap ==&lt;br /&gt;
&lt;br /&gt;
Both base airflow coefficients depend on valve overlap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O = f(N, VO)&lt;br /&gt;
&lt;br /&gt;
S = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The model is therefore explicitly aware of camshaft timing.&lt;br /&gt;
&lt;br /&gt;
Changing valve overlap changes the predicted relationship between manifold pressure and cylinder airflow.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Valve timing&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Valve overlap&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Cylinder filling characteristic&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Predicted airflow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VVT therefore forms part of the physical air model rather than being treated only as an independent actuator.&lt;br /&gt;
&lt;br /&gt;
== 10. Temperature Correction of Cylinder Filling ==&lt;br /&gt;
&lt;br /&gt;
Cylinder filling changes with intake air temperature and engine thermal state.&lt;br /&gt;
&lt;br /&gt;
The principal temperature-dependent corrections are:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_TIA_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15539&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_TIA = f(N, MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents the effect of intake-air temperature on the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_TCO_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x154F9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_TCO = f(N, MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents the effect of coolant temperature on the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
The ECU combines the temperature influences into a common correction quantity.&lt;br /&gt;
&lt;br /&gt;
The resulting correction is filtered before it is applied to the cylinder-flow model.&lt;br /&gt;
&lt;br /&gt;
The relevant filtering calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_CRLC_EFF_VOL_COR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x154ED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CRLC_VE = f(N)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting thermal correction can therefore be represented conceptually as a low pass filter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_THERM = LPF[f(TIA, TCO, N, LOAD)]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LPF&#039;&#039;&#039; represents the filtering applied by the ECU.&lt;br /&gt;
&lt;br /&gt;
== 11. Ambient-Pressure Compensation ==&lt;br /&gt;
&lt;br /&gt;
The base cylinder-flow characteristic is also corrected according to ambient pressure.&lt;br /&gt;
&lt;br /&gt;
The relevant calibrations are:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_VOL_OFS_AMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1251E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_OFS_AMP = f(AMP_AD)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_VOL_SLOP_AMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x125EA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_SLOP_AMP = f(AMP_AD)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both outputs are &#039;&#039;&#039;dimensionless correction factors&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AMP_AD&#039;&#039;&#039; represents the ECU&#039;s adapted ambient-pressure state.&lt;br /&gt;
&lt;br /&gt;
The ambient-pressure corrections modify both the offset and slope of the cylinder-flow characteristic.&lt;br /&gt;
&lt;br /&gt;
== 12. Corrected Cylinder-Flow Coefficients ==&lt;br /&gt;
&lt;br /&gt;
The complete cylinder-flow coefficients can be represented as follows.&lt;br /&gt;
&lt;br /&gt;
The base offset is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_0 = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The base slope is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S_0 = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effective offset is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_EFF = O_0 x F_OFS_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effective slope is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S_EFF = S_0 x F_THERM x F_SLOP_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disassembly shows the slope being corrected by the filtered thermal correction and then by the ambient-pressure correction.&lt;br /&gt;
&lt;br /&gt;
The offset is separately corrected by its own ambient-pressure factor.&lt;br /&gt;
&lt;br /&gt;
The final modeled airflow equation is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL_KGH = O_EFF + S_EFF x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the central cylinder-filling relationship of the SIMK43 airflow model.&lt;br /&gt;
&lt;br /&gt;
== 13. Manifold Filling and Pressure-Ratio Model ==&lt;br /&gt;
&lt;br /&gt;
The effective pressure term used by the cylinder-flow equation comes from the larger intake-manifold model.&lt;br /&gt;
&lt;br /&gt;
SAM identifies several associated functions relating to:&lt;br /&gt;
&lt;br /&gt;
* throttle effective area&lt;br /&gt;
* pressure ratio across the throttle&lt;br /&gt;
* upstream pressure&lt;br /&gt;
* intake-system pressure loss&lt;br /&gt;
* intake-air temperature&lt;br /&gt;
* manifold filling dynamics&lt;br /&gt;
* predicted manifold state&lt;br /&gt;
&lt;br /&gt;
One relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_FAC_AR_RED_COR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_AR_RED_COR = f(PQ)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PQ&#039;&#039;&#039; represents a pressure-ratio quantity.&lt;br /&gt;
&lt;br /&gt;
Additional functions include:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_FAC_OFS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID_MAF_FAC_OFS = f(PQ_ESTIM)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_FAC_SLOP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID_MAF_FAC_SLOP = f(PQ_ESTIM)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These functions describe nonlinear airflow behaviour associated with the pressure ratio across the intake restriction.&lt;br /&gt;
&lt;br /&gt;
Another manifold-model coefficient is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_MDL_CON_1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_MAN = f(TIA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its engineering unit is approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s/m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This coefficient participates in the physical manifold-filling model.&lt;br /&gt;
&lt;br /&gt;
The intake-manifold model can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Throttle effective area&lt;br /&gt;
        |&lt;br /&gt;
        +---- Upstream pressure&lt;br /&gt;
        |&lt;br /&gt;
        +---- Pressure ratio&lt;br /&gt;
        |&lt;br /&gt;
        +---- Intake temperature&lt;br /&gt;
        |&lt;br /&gt;
        +---- Manifold filling dynamics&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Effective manifold pressure state&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Cylinder offset / slope model&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The modeled airflow is therefore derived from pressure and filling behaviour rather than from a simple throttle-angle-to-load lookup.&lt;br /&gt;
&lt;br /&gt;
== 14. Intake-System Pressure Loss ==&lt;br /&gt;
&lt;br /&gt;
The intake model also accounts for pressure loss between the outside atmosphere and the pressure available upstream of the throttle.&lt;br /&gt;
&lt;br /&gt;
SAM defines:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_AMP_DEC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELTA_P_INTAKE = f(MAF_THR)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As airflow increases, the pressure loss through the intake tract also increases.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
P_UPSTREAM = AMP_AD - DELTA_P_INTAKE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This upstream pressure participates in the throttle pressure-ratio and manifold-filling calculations.&lt;br /&gt;
&lt;br /&gt;
The model therefore does not assume that atmospheric pressure is always fully available at the throttle inlet.&lt;br /&gt;
&lt;br /&gt;
== 15. Modeled Airflow to Modeled Cylinder Charge ==&lt;br /&gt;
&lt;br /&gt;
Once the model has calculated total engine airflow in kg/h, that airflow is converted into cylinder charge using the same physical relationship as the measured-airflow path.&lt;br /&gt;
&lt;br /&gt;
For the four-cylinder engine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MDL [mg/stk] = 8333.333 x MAF_MDL_KGH [kg/h] / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The measured and modeled paths therefore converge into the same engineering domain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows the two airflow estimates to be compared, supervised and substituted.&lt;br /&gt;
&lt;br /&gt;
== 16. MAF Pulsation Supervision ==&lt;br /&gt;
&lt;br /&gt;
The physical MAF signal can become unreliable when intake-flow pulsation or reverse-flow effects become sufficiently large.&lt;br /&gt;
&lt;br /&gt;
SIMK43 therefore contains a dedicated MAF-pulsation supervision system.&lt;br /&gt;
&lt;br /&gt;
One of the principal calibrations is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_PULS_MAX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x12F50&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_PULS_MAX = f(N)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also contains maximum-difference and hysteresis parameters.&lt;br /&gt;
&lt;br /&gt;
The ECU evaluates the spread of the sampled MAF signal.&lt;br /&gt;
&lt;br /&gt;
That spread is converted into the cylinder-charge domain using engine speed.&lt;br /&gt;
&lt;br /&gt;
The calculated pulsation is then compared with the permissible pulsation limit.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF samples&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Maximum / minimum spread&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Convert spread to mg/stk&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Compare with IP_MAF_PULS_MAX&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
MAF pulsation state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The pulsation state participates directly in airflow-source supervision.&lt;br /&gt;
&lt;br /&gt;
It is therefore part of the functional airflow model and not merely a diagnostic function.&lt;br /&gt;
&lt;br /&gt;
== 17. Measured-Airflow and Modeled-Airflow Arbitration ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains source-selection logic between the measured and modeled airflow paths.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
If measured airflow is accepted:&lt;br /&gt;
    MAF_WORK_KGH = MAF_MES_KGH&lt;br /&gt;
&lt;br /&gt;
If measured airflow is rejected:&lt;br /&gt;
    MAF_WORK_KGH = MAF_MDL_KGH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During normal operation, the physical MAF measurement is the primary airflow source.&lt;br /&gt;
&lt;br /&gt;
When the measured signal is considered unsuitable because of pulsation, faults or other fallback conditions, the independently calculated manifold-model airflow can replace it.&lt;br /&gt;
&lt;br /&gt;
The airflow architecture therefore contains two complete sources for engine airflow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Measured MAF airflow      Modeled manifold airflow&lt;br /&gt;
        |                             |&lt;br /&gt;
        +--------------+--------------+&lt;br /&gt;
                       |&lt;br /&gt;
                       v&lt;br /&gt;
                 Source selector&lt;br /&gt;
                       |&lt;br /&gt;
                       v&lt;br /&gt;
                 Working airflow&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 18. Final Cylinder-Load Determination ==&lt;br /&gt;
&lt;br /&gt;
Following airflow supervision, the ECU maintains several representations of cylinder charge.&lt;br /&gt;
&lt;br /&gt;
The principal sources include:&lt;br /&gt;
&lt;br /&gt;
* measured-air-derived cylinder charge&lt;br /&gt;
* manifold-model-derived cylinder charge&lt;br /&gt;
* filtered or alternate cylinder-charge representations&lt;br /&gt;
* fallback cylinder charge&lt;br /&gt;
&lt;br /&gt;
These ultimately produce one effective load quantity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_WORK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with units:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of the combustion-control system uses this working cylinder-charge state without needing to know whether its source originated from the MAF measurement or the manifold model.&lt;br /&gt;
&lt;br /&gt;
== 19. Reference Torque Model ==&lt;br /&gt;
&lt;br /&gt;
The principal forward relationship between cylinder charge and torque is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQI_REF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14D68&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_REF = f(N, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAF_CYL&#039;&#039;&#039; is cylinder fresh-air charge in mg/stk.&lt;br /&gt;
* &#039;&#039;&#039;TQI_REF&#039;&#039;&#039; is reference indicated torque in Nm.&lt;br /&gt;
&lt;br /&gt;
The function therefore represents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cylinder air charge&lt;br /&gt;
      [mg/stk]&lt;br /&gt;
          |&lt;br /&gt;
          v&lt;br /&gt;
     IP_TQI_REF&lt;br /&gt;
          |&lt;br /&gt;
          v&lt;br /&gt;
Reference indicated torque&lt;br /&gt;
          [Nm]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This map describes the torque the engine is expected to produce from a given amount of cylinder fresh air.&lt;br /&gt;
&lt;br /&gt;
== 20. Torque Loss Model ==&lt;br /&gt;
&lt;br /&gt;
Indicated torque is not identical to torque available at the crankshaft.&lt;br /&gt;
&lt;br /&gt;
SIMK43 separately models friction and pumping losses.&lt;br /&gt;
&lt;br /&gt;
The principal calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQFR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14AE0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQFR = f(N, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents base friction and pumping losses as a function of engine speed and cylinder load.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQ_EFFECTIVE =&lt;br /&gt;
TQI&lt;br /&gt;
- TQ_FRICTION&lt;br /&gt;
- TQ_PUMPING&lt;br /&gt;
- TQ_ACCESSORY&lt;br /&gt;
- other losses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The torque system therefore combines the calculated indicated combustion torque with independently calculated engine losses.&lt;br /&gt;
&lt;br /&gt;
== 21. Inverse Torque-to-Air Model ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 also contains the inverse relationship between torque and cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
The relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_SP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x12F5C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_SP = f(N, TQI_SP)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This calibration converts desired indicated torque into the cylinder air charge required to produce that torque.&lt;br /&gt;
&lt;br /&gt;
The two principal torque/air relationships are therefore:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forward model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL -&amp;gt; TQI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
through:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQI_REF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inverse model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_SP -&amp;gt; MAF_CYL_SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
through:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_SP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Together, these functions form the central air-to-torque and torque-to-air relationship of SIMK43.&lt;br /&gt;
&lt;br /&gt;
== 22. Air-Charge Control Objective ==&lt;br /&gt;
&lt;br /&gt;
Once the torque system has calculated a desired cylinder charge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
it can be compared with the estimated actual cylinder charge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_ACT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The conceptual air-control error is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
E_AIR = MAF_CYL_SP - MAF_CYL_ACT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The air-path controller can then act on the available air-control actuators (mainly the IAC Valve, as the throttle is driven by a steel cable) in order to move actual cylinder charge toward requested cylinder charge.&lt;br /&gt;
&lt;br /&gt;
This illustrates why the SIMK43 torque-control structure is fundamentally based around &#039;&#039;&#039;cylinder air charge&#039;&#039;&#039; rather than throttle angle alone.&lt;br /&gt;
&lt;br /&gt;
== 23. IVVT Airflow Prediction ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains an additional airflow estimator associated with the IVVT system.&lt;br /&gt;
&lt;br /&gt;
One relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_IVVT_1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x193A4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_IVVT = f(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its output represents calculated airflow for the VVT-related airflow-prediction path.&lt;br /&gt;
&lt;br /&gt;
SAM also identifies:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_IVVT_2&#039;&#039;&#039; - alternate airflow calculation used when a TPS error exists.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_TPS_FAC&#039;&#039;&#039; - throttle-position weighting.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_ADD_ISAPWM&#039;&#039;&#039; - estimated additional airflow through the idle-air actuator.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_FAC_TIA&#039;&#039;&#039; - intake-air-temperature correction.&lt;br /&gt;
&lt;br /&gt;
This auxiliary IVVT airflow estimator should be distinguished from the main manifold and cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
The primary physical cylinder model is based on:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;IP_EFF_VOL_OFS&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;IP_EFF_VOL_SLOP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The IVVT airflow calculation represents an additional prediction path associated with VVT, throttle and idle-air operating conditions.&lt;br /&gt;
&lt;br /&gt;
== 24. End-to-End Functional Sequence ==&lt;br /&gt;
&lt;br /&gt;
=== 24.1 Measured-Air Path ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF electrical signal&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
ID_MAF_TAB&lt;br /&gt;
0x11B4E&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Total engine airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Sampling and averaging&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Operating-point MAF correction&lt;br /&gt;
IP_MAF_KGH_MES_FAC&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Corrected measured airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
RPM conversion&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Measured cylinder air charge&lt;br /&gt;
mg/stk&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Airflow / load source supervision&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Final working cylinder load&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24.2 Modeled-Air Path ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
Valve overlap&lt;br /&gt;
Ambient pressure&lt;br /&gt;
IAT&lt;br /&gt;
Coolant temperature&lt;br /&gt;
Throttle / manifold state&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IP_EFF_VOL_OFS&lt;br /&gt;
IP_EFF_VOL_SLOP&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Temperature correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Ambient correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Corrected offset and slope&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Effective manifold pressure&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
RPM conversion&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted cylinder charge&lt;br /&gt;
mg/stk&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Airflow / load source supervision&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both paths therefore converge before the main combustion-control functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 25. Complete Mathematical Model ==&lt;br /&gt;
&lt;br /&gt;
=== 25.1 Measured Airflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_RAW = ID_MAF_TAB(V_MAF)&lt;br /&gt;
&lt;br /&gt;
MAF_AVG = Filter(MAF_RAW)&lt;br /&gt;
&lt;br /&gt;
MAF_MES_COR = MAF_AVG x F_MAF(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.2 Measured Cylinder Charge ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MES =&lt;br /&gt;
8333.333 x MAF_MES_COR / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.3 Base Modeled Cylinder-Flow Coefficients ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_0 = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&lt;br /&gt;
S_0 = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.4 Corrected Cylinder-Flow Coefficients ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_EFF = O_0 x F_OFS_AMP&lt;br /&gt;
&lt;br /&gt;
S_EFF = S_0 x F_THERM x F_SLOP_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.5 Modeled Airflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL_KGH = O_EFF + S_EFF x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.6 Modeled Cylinder Charge ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MDL = 8333.333 x MAF_MDL_KGH / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.7 Working Engine Load ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_WORK =&lt;br /&gt;
Select(&lt;br /&gt;
    MAF_CYL_MES,&lt;br /&gt;
    MAF_CYL_MDL,&lt;br /&gt;
    MAF_CYL_FALLBACK&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.8 Forward Torque Model ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_REF =&lt;br /&gt;
IP_TQI_REF(&lt;br /&gt;
    RPM,&lt;br /&gt;
    MAF_CYL_WORK&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.9 Inverse Torque Model ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_SP =&lt;br /&gt;
IP_MAF_SP(&lt;br /&gt;
    RPM,&lt;br /&gt;
    TQI_SP&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 26. Functional Interpretation ==&lt;br /&gt;
&lt;br /&gt;
The SIMK43 airflow architecture can be divided into four principal functional layers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Measurement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The physical MAF signal is converted into corrected total engine airflow in kg/h.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Physical Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An independent intake-manifold model predicts airflow using manifold conditions, engine speed, valve overlap, temperature and ambient pressure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Load Estimation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Measured and modeled airflow are converted into cylinder charge in mg/stk and supervised to produce the ECU&#039;s effective working load.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Torque Coordination&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ECU converts actual cylinder air charge into estimated torque and requested torque back into required cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
Physical HFM measurement and a parallel intake-manifold model are used together to determine the amount of fresh air available for combustion and to provide a consistent load quantity for the torque, ignition and fueling systems.&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=SIMK43_Airflow_and_Load_Model&amp;diff=1013</id>
		<title>SIMK43 Airflow and Load Model</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=SIMK43_Airflow_and_Load_Model&amp;diff=1013"/>
		<updated>2026-09-16T09:21:43Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Created page with &amp;quot;This document describes the airflow and engine-load model implemented in the &amp;#039;&amp;#039;&amp;#039;Siemens SIMK43 ca663056&amp;#039;&amp;#039;&amp;#039; calibration.  It documents how the ECU measures incoming air using the hot-film MAF sensor, independently calculates airflow using the intake-manifold model, determines cylinder air charge, supervises the measured and modeled airflow paths, and integrates the resulting load value into the torque, ignition and fueling systems.  The description is based on the latest...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the airflow and engine-load model implemented in the &#039;&#039;&#039;Siemens SIMK43 ca663056&#039;&#039;&#039; calibration.&lt;br /&gt;
&lt;br /&gt;
It documents how the ECU measures incoming air using the hot-film MAF sensor, independently calculates airflow using the intake-manifold model, determines cylinder air charge, supervises the measured and modeled airflow paths, and integrates the resulting load value into the torque, ignition and fueling systems.&lt;br /&gt;
&lt;br /&gt;
The description is based on the latest verified &#039;&#039;&#039;ca663056 XDF&#039;&#039;&#039;, the available &#039;&#039;&#039;SAM2000 / SAM2K metadata&#039;&#039;&#039;, and the &#039;&#039;&#039;ca663056 C167 disassembly&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The SAM metadata is used primarily to establish the intended engineering meaning, units and functions of the calibrations. Actual ca663056 addresses and execution behaviour are taken from the ca663056 calibration and disassembly.&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. General Architecture ==&lt;br /&gt;
&lt;br /&gt;
The SIMK43 airflow system contains two parallel representations of engine airflow:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Measured airflow&#039;&#039;&#039; derived from the physical hot-film MAF sensor.&lt;br /&gt;
* &#039;&#039;&#039;Modeled airflow&#039;&#039;&#039; calculated from engine speed, manifold conditions, valve overlap, temperature and ambient pressure.&lt;br /&gt;
&lt;br /&gt;
These paths ultimately describe the same physical quantity: the mass of fresh air entering the engine.&lt;br /&gt;
&lt;br /&gt;
The MAF sensor measures air travelling through the intake tract, while the combustion system ultimately requires an estimate of the amount of fresh air entering an individual cylinder.&lt;br /&gt;
&lt;br /&gt;
The overall architecture is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                     AIR ENTERING ENGINE&lt;br /&gt;
                            |&lt;br /&gt;
             +--------------+--------------+&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
       HFM / MAF SENSOR           INTAKE MANIFOLD MODEL&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
      Sensor linearization         RPM / pressure / VVT&lt;br /&gt;
             |                     temperature / ambient&lt;br /&gt;
             v                             |&lt;br /&gt;
      Measured airflow                     v&lt;br /&gt;
          [kg/h]                  Modeled engine airflow&lt;br /&gt;
             |                          [kg/h]&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
      Convert using RPM             Convert using RPM&lt;br /&gt;
             |                             |&lt;br /&gt;
             v                             v&lt;br /&gt;
     Measured cylinder             Modeled cylinder&lt;br /&gt;
          air charge                    air charge&lt;br /&gt;
          [mg/stk]                    [mg/stk]&lt;br /&gt;
             |                             |&lt;br /&gt;
             +--------------+--------------+&lt;br /&gt;
                            |&lt;br /&gt;
                            v&lt;br /&gt;
                  AIRFLOW SUPERVISION&lt;br /&gt;
                            |&lt;br /&gt;
                            v&lt;br /&gt;
                  FINAL CYLINDER LOAD&lt;br /&gt;
                         [mg/stk]&lt;br /&gt;
                            |&lt;br /&gt;
          +-----------------+-----------------+&lt;br /&gt;
          |                 |                 |&lt;br /&gt;
          v                 v                 v&lt;br /&gt;
       IGNITION           FUELING           TORQUE&lt;br /&gt;
                                             |&lt;br /&gt;
                                     actual load -&amp;gt; torque&lt;br /&gt;
                                             |&lt;br /&gt;
                                     torque request -&amp;gt; load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIMK43 should therefore not be regarded simply as a MAF-based ECU.&lt;br /&gt;
&lt;br /&gt;
It is more accurately described as a &#039;&#039;&#039;model-based cylinder-charge control system using the HFM sensor as its primary airflow measurement&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 2. Airflow and Load Units ==&lt;br /&gt;
&lt;br /&gt;
Siemens uses the term &#039;&#039;MAF&#039;&#039; for several related quantities. The engineering unit must therefore always be considered when interpreting a calibration or internal calculation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF sensor signal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: V or internal ADC representation&lt;br /&gt;
* Meaning: electrical output of the HFM sensor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Engine airflow&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: kg/h&lt;br /&gt;
* Meaning: total fresh-air mass flowing through the complete engine intake.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cylinder air charge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: mg/stk&lt;br /&gt;
* Meaning: fresh-air mass entering one cylinder during one intake event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Torque&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Unit: Nm&lt;br /&gt;
* Meaning: indicated or effective engine torque.&lt;br /&gt;
&lt;br /&gt;
The two principal airflow domains are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_KGH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
They describe the same airflow from two different perspectives.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF_KGH&#039;&#039;&#039; measured in &#039;&#039;&#039;kg/h&#039;&#039;&#039; represents the total airflow of the complete engine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAF_CYL&#039;&#039;&#039; measured in &#039;&#039;&#039;mg/stk&#039;&#039;&#039; represents the mass of fresh air entering one cylinder during one intake event.&lt;br /&gt;
&lt;br /&gt;
Most combustion-related calibration maps operate in the cylinder-charge domain.&lt;br /&gt;
&lt;br /&gt;
== 3. Measured Airflow Path ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 MAF Sensor Characteristic ===&lt;br /&gt;
&lt;br /&gt;
The primary MAF characteristic in ca663056 is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_TAB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x11B4E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This table converts the electrical MAF sensor representation into total engine mass airflow.&lt;br /&gt;
&lt;br /&gt;
Its output is expressed in kg/h.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF electrical signal&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
   ID_MAF_TAB&lt;br /&gt;
      0x11B4E&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Engine airflow&lt;br /&gt;
     [kg/h]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly directly references address &#039;&#039;&#039;0x11B4E&#039;&#039;&#039; during initialization of the MAF conversion path, confirming that the table is actively used for MAF conversion.&lt;br /&gt;
&lt;br /&gt;
The sensor characteristic can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_RAW = ID_MAF_TAB(V_MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the stage responsible for converting the physical MAF sensor signal into an engineering airflow quantity.&lt;br /&gt;
&lt;br /&gt;
== 4. MAF Acquisition and Signal Conditioning ==&lt;br /&gt;
&lt;br /&gt;
The ECU does not use a single instantaneous MAF sample directly as engine load.&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly shows that MAF measurements are accumulated over repeated acquisition periods and subsequently divided by the number of samples.&lt;br /&gt;
&lt;br /&gt;
The measurement path therefore performs averaging before the airflow value is used elsewhere.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_AVG = Average(MAF_RAW)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The averaged airflow then passes through an operating-point-dependent correction.&lt;br /&gt;
&lt;br /&gt;
The relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_KGH_MES_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x193EC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SAM defines the function as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_MAF_KGH_MES_FAC = f(N, TPS_SEG)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;N&#039;&#039;&#039; = engine speed&lt;br /&gt;
* &#039;&#039;&#039;TPS_SEG&#039;&#039;&#039; = throttle operating region&lt;br /&gt;
&lt;br /&gt;
The output of this map is a &#039;&#039;&#039;dimensionless correction factor&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The corrected measured airflow can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MES_COR = MAF_AVG x F_MAF(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting quantity remains in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kg/h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and represents the ECU&#039;s corrected physical measurement of total engine airflow.&lt;br /&gt;
&lt;br /&gt;
== 5. Conversion from Engine Airflow to Cylinder Air Charge ==&lt;br /&gt;
&lt;br /&gt;
The combustion model itself does not primarily operate in kg/h.&lt;br /&gt;
&lt;br /&gt;
After corrected measured airflow has been obtained, the ECU converts total engine airflow into cylinder air charge using engine speed.&lt;br /&gt;
&lt;br /&gt;
For a four-cylinder, four-stroke engine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Intake events per hour = (RPM / 2) x 4 x 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL [mg/stk] =&lt;br /&gt;
MAF_KGH [kg/h] x 1,000,000&lt;br /&gt;
--------------------------------&lt;br /&gt;
(RPM / 2) x 4 x 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a four-cylinder engine this simplifies to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL [mg/stk] = 8333.333 x MAF_KGH [kg/h] / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
400 kg/h at 3000 rpm&lt;br /&gt;
&lt;br /&gt;
MAF_CYL = 1111 mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At twice the engine speed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
400 kg/h at 6000 rpm&lt;br /&gt;
&lt;br /&gt;
MAF_CYL = 556 mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same total engine airflow therefore represents a different cylinder load depending on engine speed.&lt;br /&gt;
&lt;br /&gt;
This distinction is fundamental to the SIMK43 load model.&lt;br /&gt;
&lt;br /&gt;
== 6. Definition of Engine Load ==&lt;br /&gt;
&lt;br /&gt;
For the remainder of the combustion-control system, the principal load quantity is cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LOAD = MAF_CYL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with units:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The basic conversion chain is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF signal&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Engine airflow&lt;br /&gt;
   [kg/h]&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
RPM conversion&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Cylinder charge&lt;br /&gt;
   [mg/stk]&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Engine load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This cylinder-charge quantity is used as the load coordinate by many ignition, fueling and torque-model functions.&lt;br /&gt;
&lt;br /&gt;
== 7. Independent Intake-Manifold and Cylinder-Filling Model ==&lt;br /&gt;
&lt;br /&gt;
In parallel with the physical MAF measurement, SIMK43 independently calculates airflow using a model of the intake system and the engine&#039;s cylinder-filling characteristics.&lt;br /&gt;
&lt;br /&gt;
The core cylinder-flow model consists of two calibrations.&lt;br /&gt;
&lt;br /&gt;
=== 7.1 IP_EFF_VOL_OFS ===&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1245E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_EFF_VOL_OFS [kg/h] = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;N&#039;&#039;&#039; = engine speed&lt;br /&gt;
* &#039;&#039;&#039;VO&#039;&#039;&#039; = valve overlap&lt;br /&gt;
&lt;br /&gt;
This calibration provides the base airflow offset of the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 IP_EFF_VOL_SLOP ===&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1252A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_EFF_VOL_SLOP [kg/(h*hPa)] = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This calibration provides the pressure-dependent slope of the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
Together, the two maps describe the relationship between effective manifold pressure and cylinder airflow.&lt;br /&gt;
&lt;br /&gt;
== 8. Offset and Slope Representation of Cylinder Filling ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 does not represent cylinder filling using one conventional percentage-VE table.&lt;br /&gt;
&lt;br /&gt;
Instead, airflow is represented approximately as a linear relationship between an effective pressure quantity and airflow.&lt;br /&gt;
&lt;br /&gt;
The basic relationship is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL = O + S x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The units verify the relationship:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kg/h + [kg/(h*hPa)] x hPa = kg/h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ca663056 disassembly loads the offset and slope calibrations as separate coefficients used in the same airflow calculation.&lt;br /&gt;
&lt;br /&gt;
The effective pressure term should not automatically be interpreted as a raw MAP sensor-like value. It belongs to the larger manifold model and represents the pressure-domain state used by the cylinder-flow equation.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
 +&lt;br /&gt;
Valve overlap&lt;br /&gt;
 +&lt;br /&gt;
Effective manifold pressure&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Offset / slope cylinder model&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
       [kg/h]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Effect of Valve Overlap ==&lt;br /&gt;
&lt;br /&gt;
Both base airflow coefficients depend on valve overlap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O = f(N, VO)&lt;br /&gt;
&lt;br /&gt;
S = f(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The model is therefore explicitly aware of camshaft timing.&lt;br /&gt;
&lt;br /&gt;
Changing valve overlap changes the predicted relationship between manifold pressure and cylinder airflow.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Valve timing&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Valve overlap&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Cylinder filling characteristic&lt;br /&gt;
     |&lt;br /&gt;
     v&lt;br /&gt;
Predicted airflow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VVT therefore forms part of the physical air model rather than being treated only as an independent actuator.&lt;br /&gt;
&lt;br /&gt;
== 10. Temperature Correction of Cylinder Filling ==&lt;br /&gt;
&lt;br /&gt;
Cylinder filling changes with intake air temperature and engine thermal state.&lt;br /&gt;
&lt;br /&gt;
The principal temperature-dependent corrections are:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_TIA_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x15539&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_TIA = f(N, MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents the effect of intake-air temperature on the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_TCO_FAC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x154F9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_TCO = f(N, MAF)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents the effect of coolant temperature on the cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
The ECU combines the temperature influences into a common correction quantity.&lt;br /&gt;
&lt;br /&gt;
The resulting correction is filtered before it is applied to the cylinder-flow model.&lt;br /&gt;
&lt;br /&gt;
The relevant filtering calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_CRLC_EFF_VOL_COR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x154ED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CRLC_VE = f(N)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting thermal correction can therefore be represented conceptually as a low pass filter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_THERM = LPF[f(TIA, TCO, N, LOAD)]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LPF&#039;&#039;&#039; represents the filtering applied by the ECU.&lt;br /&gt;
&lt;br /&gt;
== 11. Ambient-Pressure Compensation ==&lt;br /&gt;
&lt;br /&gt;
The base cylinder-flow characteristic is also corrected according to ambient pressure.&lt;br /&gt;
&lt;br /&gt;
The relevant calibrations are:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_VOL_OFS_AMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x1251E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_OFS_AMP = f(AMP_AD)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_EFF_VOL_SLOP_AMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x125EA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
F_SLOP_AMP = f(AMP_AD)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both outputs are &#039;&#039;&#039;dimensionless correction factors&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AMP_AD&#039;&#039;&#039; represents the ECU&#039;s adapted ambient-pressure state.&lt;br /&gt;
&lt;br /&gt;
The ambient-pressure corrections modify both the offset and slope of the cylinder-flow characteristic.&lt;br /&gt;
&lt;br /&gt;
== 12. Corrected Cylinder-Flow Coefficients ==&lt;br /&gt;
&lt;br /&gt;
The complete cylinder-flow coefficients can be represented as follows.&lt;br /&gt;
&lt;br /&gt;
The base offset is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_0 = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The base slope is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S_0 = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effective offset is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_EFF = O_0 x F_OFS_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effective slope is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S_EFF = S_0 x F_THERM x F_SLOP_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disassembly shows the slope being corrected by the filtered thermal correction and then by the ambient-pressure correction.&lt;br /&gt;
&lt;br /&gt;
The offset is separately corrected by its own ambient-pressure factor.&lt;br /&gt;
&lt;br /&gt;
The final modeled airflow equation is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL_KGH = O_EFF + S_EFF x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the central cylinder-filling relationship of the SIMK43 airflow model.&lt;br /&gt;
&lt;br /&gt;
== 13. Manifold Filling and Pressure-Ratio Model ==&lt;br /&gt;
&lt;br /&gt;
The effective pressure term used by the cylinder-flow equation comes from the larger intake-manifold model.&lt;br /&gt;
&lt;br /&gt;
SAM identifies several associated functions relating to:&lt;br /&gt;
&lt;br /&gt;
* throttle effective area&lt;br /&gt;
* pressure ratio across the throttle&lt;br /&gt;
* upstream pressure&lt;br /&gt;
* intake-system pressure loss&lt;br /&gt;
* intake-air temperature&lt;br /&gt;
* manifold filling dynamics&lt;br /&gt;
* predicted manifold state&lt;br /&gt;
&lt;br /&gt;
One relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_FAC_AR_RED_COR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP_FAC_AR_RED_COR = f(PQ)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PQ&#039;&#039;&#039; represents a pressure-ratio quantity.&lt;br /&gt;
&lt;br /&gt;
Additional functions include:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_FAC_OFS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID_MAF_FAC_OFS = f(PQ_ESTIM)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID_MAF_FAC_SLOP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID_MAF_FAC_SLOP = f(PQ_ESTIM)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These functions describe nonlinear airflow behaviour associated with the pressure ratio across the intake restriction.&lt;br /&gt;
&lt;br /&gt;
Another manifold-model coefficient is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_MDL_CON_1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_MAN = f(TIA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its engineering unit is approximately:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s/m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This coefficient participates in the physical manifold-filling model.&lt;br /&gt;
&lt;br /&gt;
The intake-manifold model can therefore be represented as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Throttle effective area&lt;br /&gt;
        |&lt;br /&gt;
        +---- Upstream pressure&lt;br /&gt;
        |&lt;br /&gt;
        +---- Pressure ratio&lt;br /&gt;
        |&lt;br /&gt;
        +---- Intake temperature&lt;br /&gt;
        |&lt;br /&gt;
        +---- Manifold filling dynamics&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Effective manifold pressure state&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Cylinder offset / slope model&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The modeled airflow is therefore derived from pressure and filling behaviour rather than from a simple throttle-angle-to-load lookup.&lt;br /&gt;
&lt;br /&gt;
== 14. Intake-System Pressure Loss ==&lt;br /&gt;
&lt;br /&gt;
The intake model also accounts for pressure loss between the outside atmosphere and the pressure available upstream of the throttle.&lt;br /&gt;
&lt;br /&gt;
SAM defines:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_AMP_DEC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELTA_P_INTAKE = f(MAF_THR)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As airflow increases, the pressure loss through the intake tract also increases.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
P_UPSTREAM = AMP_AD - DELTA_P_INTAKE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This upstream pressure participates in the throttle pressure-ratio and manifold-filling calculations.&lt;br /&gt;
&lt;br /&gt;
The model therefore does not assume that atmospheric pressure is always fully available at the throttle inlet.&lt;br /&gt;
&lt;br /&gt;
== 15. Modeled Airflow to Modeled Cylinder Charge ==&lt;br /&gt;
&lt;br /&gt;
Once the model has calculated total engine airflow in kg/h, that airflow is converted into cylinder charge using the same physical relationship as the measured-airflow path.&lt;br /&gt;
&lt;br /&gt;
For the four-cylinder engine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MDL [mg/stk] = 8333.333 x MAF_MDL_KGH [kg/h] / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The measured and modeled paths therefore converge into the same engineering domain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows the two airflow estimates to be compared, supervised and substituted.&lt;br /&gt;
&lt;br /&gt;
== 16. MAF Pulsation Supervision ==&lt;br /&gt;
&lt;br /&gt;
The physical MAF signal can become unreliable when intake-flow pulsation or reverse-flow effects become sufficiently large.&lt;br /&gt;
&lt;br /&gt;
SIMK43 therefore contains a dedicated MAF-pulsation supervision system.&lt;br /&gt;
&lt;br /&gt;
One of the principal calibrations is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_PULS_MAX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x12F50&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_PULS_MAX = f(N)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also contains maximum-difference and hysteresis parameters.&lt;br /&gt;
&lt;br /&gt;
The ECU evaluates the spread of the sampled MAF signal.&lt;br /&gt;
&lt;br /&gt;
That spread is converted into the cylinder-charge domain using engine speed.&lt;br /&gt;
&lt;br /&gt;
The calculated pulsation is then compared with the permissible pulsation limit.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF samples&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Maximum / minimum spread&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Convert spread to mg/stk&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
Compare with IP_MAF_PULS_MAX&lt;br /&gt;
    |&lt;br /&gt;
    v&lt;br /&gt;
MAF pulsation state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The pulsation state participates directly in airflow-source supervision.&lt;br /&gt;
&lt;br /&gt;
It is therefore part of the functional airflow model and not merely a diagnostic function.&lt;br /&gt;
&lt;br /&gt;
== 17. Measured-Airflow and Modeled-Airflow Arbitration ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains source-selection logic between the measured and modeled airflow paths.&lt;br /&gt;
&lt;br /&gt;
Functionally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
If measured airflow is accepted:&lt;br /&gt;
    MAF_WORK_KGH = MAF_MES_KGH&lt;br /&gt;
&lt;br /&gt;
If measured airflow is rejected:&lt;br /&gt;
    MAF_WORK_KGH = MAF_MDL_KGH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During normal operation, the physical MAF measurement is the primary airflow source.&lt;br /&gt;
&lt;br /&gt;
When the measured signal is considered unsuitable because of pulsation, faults or other fallback conditions, the independently calculated manifold-model airflow can replace it.&lt;br /&gt;
&lt;br /&gt;
The airflow architecture therefore contains two complete sources for engine airflow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Measured MAF airflow      Modeled manifold airflow&lt;br /&gt;
        |                             |&lt;br /&gt;
        +--------------+--------------+&lt;br /&gt;
                       |&lt;br /&gt;
                       v&lt;br /&gt;
                 Source selector&lt;br /&gt;
                       |&lt;br /&gt;
                       v&lt;br /&gt;
                 Working airflow&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 18. Final Cylinder-Load Determination ==&lt;br /&gt;
&lt;br /&gt;
Following airflow supervision, the ECU maintains several representations of cylinder charge.&lt;br /&gt;
&lt;br /&gt;
The principal sources include:&lt;br /&gt;
&lt;br /&gt;
* measured-air-derived cylinder charge&lt;br /&gt;
* manifold-model-derived cylinder charge&lt;br /&gt;
* filtered or alternate cylinder-charge representations&lt;br /&gt;
* fallback cylinder charge&lt;br /&gt;
&lt;br /&gt;
These ultimately produce one effective load quantity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_WORK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with units:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of the combustion-control system uses this working cylinder-charge state without needing to know whether its source originated from the MAF measurement or the manifold model.&lt;br /&gt;
&lt;br /&gt;
== 19. Reference Torque Model ==&lt;br /&gt;
&lt;br /&gt;
The principal forward relationship between cylinder charge and torque is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQI_REF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14D68&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_REF = f(N, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAF_CYL&#039;&#039;&#039; is cylinder fresh-air charge in mg/stk.&lt;br /&gt;
* &#039;&#039;&#039;TQI_REF&#039;&#039;&#039; is reference indicated torque in Nm.&lt;br /&gt;
&lt;br /&gt;
The function therefore represents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cylinder air charge&lt;br /&gt;
      [mg/stk]&lt;br /&gt;
          |&lt;br /&gt;
          v&lt;br /&gt;
     IP_TQI_REF&lt;br /&gt;
          |&lt;br /&gt;
          v&lt;br /&gt;
Reference indicated torque&lt;br /&gt;
          [Nm]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This map describes the torque the engine is expected to produce from a given amount of cylinder fresh air.&lt;br /&gt;
&lt;br /&gt;
== 20. Torque Loss Model ==&lt;br /&gt;
&lt;br /&gt;
Indicated torque is not identical to torque available at the crankshaft.&lt;br /&gt;
&lt;br /&gt;
SIMK43 separately models friction and pumping losses.&lt;br /&gt;
&lt;br /&gt;
The principal calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQFR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x14AE0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQFR = f(N, MAF_CYL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This represents base friction and pumping losses as a function of engine speed and cylinder load.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQ_EFFECTIVE =&lt;br /&gt;
TQI&lt;br /&gt;
- TQ_FRICTION&lt;br /&gt;
- TQ_PUMPING&lt;br /&gt;
- TQ_ACCESSORY&lt;br /&gt;
- other losses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The torque system therefore combines the calculated indicated combustion torque with independently calculated engine losses.&lt;br /&gt;
&lt;br /&gt;
== 21. Inverse Torque-to-Air Model ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 also contains the inverse relationship between torque and cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
The relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_SP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x12F5C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_SP = f(N, TQI_SP)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This calibration converts desired indicated torque into the cylinder air charge required to produce that torque.&lt;br /&gt;
&lt;br /&gt;
The two principal torque/air relationships are therefore:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forward model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL -&amp;gt; TQI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
through:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_TQI_REF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inverse model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_SP -&amp;gt; MAF_CYL_SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
through:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_SP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Together, these functions form the central air-to-torque and torque-to-air relationship of SIMK43.&lt;br /&gt;
&lt;br /&gt;
== 22. Air-Charge Control Objective ==&lt;br /&gt;
&lt;br /&gt;
Once the torque system has calculated a desired cylinder charge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_SP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
it can be compared with the estimated actual cylinder charge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_ACT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The conceptual air-control error is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
E_AIR = MAF_CYL_SP - MAF_CYL_ACT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The air-path controller can then act on the available air-control actuators (mainly the IAC Valve, as the throttle is driven by a steel cable) in order to move actual cylinder charge toward requested cylinder charge.&lt;br /&gt;
&lt;br /&gt;
This illustrates why the SIMK43 torque-control structure is fundamentally based around &#039;&#039;&#039;cylinder air charge&#039;&#039;&#039; rather than throttle angle alone.&lt;br /&gt;
&lt;br /&gt;
== 23. IVVT Airflow Prediction ==&lt;br /&gt;
&lt;br /&gt;
SIMK43 contains an additional airflow estimator associated with the IVVT system.&lt;br /&gt;
&lt;br /&gt;
One relevant calibration is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP_MAF_IVVT_1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x193A4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_IVVT = f(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its output represents calculated airflow for the VVT-related airflow-prediction path.&lt;br /&gt;
&lt;br /&gt;
SAM also identifies:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_IVVT_2&#039;&#039;&#039; - alternate airflow calculation used when a TPS error exists.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_TPS_FAC&#039;&#039;&#039; - throttle-position weighting.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_ADD_ISAPWM&#039;&#039;&#039; - estimated additional airflow through the idle-air actuator.&lt;br /&gt;
* &#039;&#039;&#039;IP_MAF_FAC_TIA&#039;&#039;&#039; - intake-air-temperature correction.&lt;br /&gt;
&lt;br /&gt;
This auxiliary IVVT airflow estimator should be distinguished from the main manifold and cylinder-filling model.&lt;br /&gt;
&lt;br /&gt;
The primary physical cylinder model is based on:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;IP_EFF_VOL_OFS&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;IP_EFF_VOL_SLOP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The IVVT airflow calculation represents an additional prediction path associated with VVT, throttle and idle-air operating conditions.&lt;br /&gt;
&lt;br /&gt;
== 24. End-to-End Functional Sequence ==&lt;br /&gt;
&lt;br /&gt;
=== 24.1 Measured-Air Path ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF electrical signal&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
ID_MAF_TAB&lt;br /&gt;
0x11B4E&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Total engine airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Sampling and averaging&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Operating-point MAF correction&lt;br /&gt;
IP_MAF_KGH_MES_FAC&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Corrected measured airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
RPM conversion&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Measured cylinder air charge&lt;br /&gt;
mg/stk&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Airflow / load source supervision&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Final working cylinder load&lt;br /&gt;
mg/stk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24.2 Modeled-Air Path ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPM&lt;br /&gt;
Valve overlap&lt;br /&gt;
Ambient pressure&lt;br /&gt;
IAT&lt;br /&gt;
Coolant temperature&lt;br /&gt;
Throttle / manifold state&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
IP_EFF_VOL_OFS&lt;br /&gt;
IP_EFF_VOL_SLOP&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Temperature correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Ambient correction&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Corrected offset and slope&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Effective manifold pressure&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted engine airflow&lt;br /&gt;
kg/h&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
RPM conversion&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Predicted cylinder charge&lt;br /&gt;
mg/stk&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
Airflow / load source supervision&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both paths therefore converge before the main combustion-control functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 25. Complete Mathematical Model ==&lt;br /&gt;
&lt;br /&gt;
=== 25.1 Measured Airflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_RAW = ID_MAF_TAB(V_MAF)&lt;br /&gt;
&lt;br /&gt;
MAF_AVG = Filter(MAF_RAW)&lt;br /&gt;
&lt;br /&gt;
MAF_MES_COR = MAF_AVG x F_MAF(N, TPS)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.2 Measured Cylinder Charge ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MES =&lt;br /&gt;
8333.333 x MAF_MES_COR / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.3 Base Modeled Cylinder-Flow Coefficients ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_0 = IP_EFF_VOL_OFS(N, VO)&lt;br /&gt;
&lt;br /&gt;
S_0 = IP_EFF_VOL_SLOP(N, VO)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.4 Corrected Cylinder-Flow Coefficients ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
O_EFF = O_0 x F_OFS_AMP&lt;br /&gt;
&lt;br /&gt;
S_EFF = S_0 x F_THERM x F_SLOP_AMP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.5 Modeled Airflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_MDL_KGH = O_EFF + S_EFF x P_EFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.6 Modeled Cylinder Charge ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_MDL = 8333.333 x MAF_MDL_KGH / RPM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.7 Working Engine Load ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_WORK =&lt;br /&gt;
Select(&lt;br /&gt;
    MAF_CYL_MES,&lt;br /&gt;
    MAF_CYL_MDL,&lt;br /&gt;
    MAF_CYL_FALLBACK&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.8 Forward Torque Model ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TQI_REF =&lt;br /&gt;
IP_TQI_REF(&lt;br /&gt;
    RPM,&lt;br /&gt;
    MAF_CYL_WORK&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 25.9 Inverse Torque Model ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MAF_CYL_SP =&lt;br /&gt;
IP_MAF_SP(&lt;br /&gt;
    RPM,&lt;br /&gt;
    TQI_SP&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 26. Functional Interpretation ==&lt;br /&gt;
&lt;br /&gt;
The SIMK43 airflow architecture can be divided into four principal functional layers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Measurement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The physical MAF signal is converted into corrected total engine airflow in kg/h.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Physical Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An independent intake-manifold model predicts airflow using manifold conditions, engine speed, valve overlap, temperature and ambient pressure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Load Estimation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Measured and modeled airflow are converted into cylinder charge in mg/stk and supervised to produce the ECU&#039;s effective working load.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Torque Coordination&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ECU converts actual cylinder air charge into estimated torque and requested torque back into required cylinder air charge.&lt;br /&gt;
&lt;br /&gt;
Physical HFM measurement and a parallel intake-manifold model are used together to determine the amount of fresh air available for combustion and to provide a consistent load quantity for the torque, ignition and fueling systems.&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=File:Simk43_iga_graph_full.png&amp;diff=1012</id>
		<title>File:Simk43 iga graph full.png</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=File:Simk43_iga_graph_full.png&amp;diff=1012"/>
		<updated>2026-09-15T22:50:58Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Full flowchart&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Aftermarket_Tune_Labeling_Convention&amp;diff=1011</id>
		<title>Aftermarket Tune Labeling Convention</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Aftermarket_Tune_Labeling_Convention&amp;diff=1011"/>
		<updated>2026-09-05T17:51:41Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Added tuning labeling for M7.9.7 tunes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SIMK43 Tune Identifier Legend ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! CODE !! MEANING !! ALTERNATIVES&lt;br /&gt;
|-&lt;br /&gt;
| KANES || Tuner&#039;s name || —&lt;br /&gt;
|-&lt;br /&gt;
| - || Separator || —&lt;br /&gt;
|-&lt;br /&gt;
| XX || Header Optim. || 41 = 4-1 Head., 42 = 4-2-1 Head., TB = Turbo&lt;br /&gt;
|-&lt;br /&gt;
| XX || Catalyst || CE = Catalyst Enabled, CD = Catalyst Disabled&lt;br /&gt;
|-&lt;br /&gt;
| X || Camshaft || S = Stock, G = Ghost Cams, C = Upgraded Cams&lt;br /&gt;
|-&lt;br /&gt;
| X || Pops &amp;amp; Bangs || S = Stock, P = Pops Enabled&lt;br /&gt;
|-&lt;br /&gt;
| X || IACV Tuning || S = Stock, I = IACV Tuned&lt;br /&gt;
|-&lt;br /&gt;
| X || Fuel Optim. || 95 = 95 RON, 98 = 98 RON, 10 = 100 RON&lt;br /&gt;
|-&lt;br /&gt;
| X || Launch Control || D = LC Disabled, L = LC Enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example Breakdown ===&lt;br /&gt;
&#039;&#039;&#039;Identifier:&#039;&#039;&#039; &amp;lt;code&amp;gt;KANES-42CDGPI98L&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;KANES&#039;&#039;&#039; → Owner&#039;s name&lt;br /&gt;
* &#039;&#039;&#039;42&#039;&#039;&#039; → 4-2-1 headers&lt;br /&gt;
* &#039;&#039;&#039;CD&#039;&#039;&#039; → Catalyst Disabled&lt;br /&gt;
* &#039;&#039;&#039;G&#039;&#039;&#039; → Ghost Cams Enabled&lt;br /&gt;
* &#039;&#039;&#039;P&#039;&#039;&#039; → Pops &amp;amp; Bangs Enabled&lt;br /&gt;
* &#039;&#039;&#039;I&#039;&#039;&#039; → IACV Tuned&lt;br /&gt;
* &#039;&#039;&#039;98&#039;&#039;&#039; → Optimized for 98 RON&lt;br /&gt;
* &#039;&#039;&#039;L&#039;&#039;&#039; → Launch Control Enabled&lt;br /&gt;
&lt;br /&gt;
== Kefico M7.9.7 Tune Identifier Legend ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! CODE !! MEANING !! ALTERNATIVES&lt;br /&gt;
|-&lt;br /&gt;
| KANES || Tuner&#039;s name || —&lt;br /&gt;
|-&lt;br /&gt;
| - || Separator || —&lt;br /&gt;
|-&lt;br /&gt;
| XX || Header Optim. || 41 = 4-1 Head., 42 = 4-2-1 Head., TB = Turbo&lt;br /&gt;
|-&lt;br /&gt;
| X || Catalyst || E = Catalyst Enabled, D = Catalyst Disabled&lt;br /&gt;
|-&lt;br /&gt;
| X || Fuel Optim. || 95 = 95 RON, 98 = 98 RON, 10 = 100 RON&lt;br /&gt;
|-&lt;br /&gt;
| . || Seperator || —&lt;br /&gt;
|-&lt;br /&gt;
|XXXXX&lt;br /&gt;
|Engine Family&lt;br /&gt;
|Alpha, Beta1, Beta2, Gamma, etc&lt;br /&gt;
|-&lt;br /&gt;
|X.X&lt;br /&gt;
|Displacement&lt;br /&gt;
|2.0, 1.6, 1.5, 1.3, 1.1, etc&lt;br /&gt;
|-&lt;br /&gt;
|X&lt;br /&gt;
|Cam Layout&lt;br /&gt;
|V = VVT, D = DOHC, S = SOHC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example Breakdown ===&lt;br /&gt;
&#039;&#039;&#039;Identifier:&#039;&#039;&#039; &amp;lt;code&amp;gt;KANES-42E95.Beta22.0D&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;KANES&#039;&#039;&#039; → Owner&#039;s name&lt;br /&gt;
* &#039;&#039;&#039;42&#039;&#039;&#039; → 4-2-1 headers&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; → Catalyst Enabled&lt;br /&gt;
* &#039;&#039;&#039;95&#039;&#039;&#039; → Optimized for 95 RON&lt;br /&gt;
* &#039;&#039;&#039;Beta2&#039;&#039;&#039; → Beta 2 Family&lt;br /&gt;
* &#039;&#039;&#039;2.0&#039;&#039;&#039; → 2.0L G4GC&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039; → Non VVT DOHC version&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Bootstrap_Loader&amp;diff=1008</id>
		<title>Bootstrap Loader</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Bootstrap_Loader&amp;diff=1008"/>
		<updated>2026-07-06T05:30:03Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Changed pin 2 to pin 3, dont want people shorting ground.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
Bootstrap Loader (BSL) on the C166 MCUs allows to execute code in memory, bypassing code stored on the EEPROM.&lt;br /&gt;
&lt;br /&gt;
This is often used to flash regions of memory inaccessible through OBD2, such as the bootloader. Most notable case would be removing the [[immobiliser]], or performing a ca663056-&amp;gt;ca663057 upgrade, which requires changing the bootloader.&lt;br /&gt;
&lt;br /&gt;
To enter BSL mode, you must ground the BOOT pin and then feed power to the ECU, which will make the CPU wait for input over serial port instead of executing code stored on the flash memory. Then, typically a small loader is uploaded which later facilitates upload and execution of the proper BSL program, which will offer ways to manipulate memory. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dante383/gkflasher GKFlasher] supports BSL mode.&lt;br /&gt;
&lt;br /&gt;
== Entering the BSL mode ==&lt;br /&gt;
[[File:Boot pin ziome3eg.png|thumb|BOOT pin]]&lt;br /&gt;
&lt;br /&gt;
=== Non-immo ECUs ===&lt;br /&gt;
&lt;br /&gt;
# Connect ECU pins 3, 14, 21 and 22 to +12V.&lt;br /&gt;
# Connect [[K-Line]] per [[Siemens 5WY 2 Connector Pinout|ECU pinout.]]&lt;br /&gt;
# Pull down the BOOT pin to Ground through a 10kΩ resistor.&lt;br /&gt;
# Connect power and ground to the ECU.&lt;br /&gt;
# ECU is now ready for BSL input - you can press any button in the BSL tab in GKFlasher.&lt;br /&gt;
&lt;br /&gt;
=== Immo ECUs ===&lt;br /&gt;
&lt;br /&gt;
# Connect ECU pins 3, 14, 21 and 22 to +12V.&lt;br /&gt;
# Connect K-Line (pin 77) per [[Siemens 5WY 2 Connector Pinout|ECU pinout]]. &lt;br /&gt;
#Attach a 470Ω resistor on the [[W-Line|W-Line&amp;lt;small&amp;gt;(? citation needed)&amp;lt;/small&amp;gt;]].&lt;br /&gt;
#Splice [[K-Line]] into [[K-Line]] on the ECU header - if you&#039;re using a Y-split OBD2 cable, that&#039;d be [[Data link connector (OBD2)|pin 9]].&lt;br /&gt;
# Pull down the BOOT pin to Ground through a 10kΩ resistor.&lt;br /&gt;
# Connect power and ground to the ECU.&lt;br /&gt;
# ECU is now ready for BSL input - you can press any button in the BSL tab in GKFlasher.&lt;br /&gt;
[[File:Bsl pins dmg210.png|thumb]]If the method above does not work, try the following:&lt;br /&gt;
&lt;br /&gt;
# Connect ECU pins 3, 14, 21 and 22 to +12V.&lt;br /&gt;
# Connect K-line (OBD pin 7) to W-Line on the ECU header (pin 47).&lt;br /&gt;
# Pull down the BOOT pin (pin 28 of the flash chip) to Ground through a 10kΩ resistor.&lt;br /&gt;
# Connect power and ground to the ECU.&lt;br /&gt;
# ECU is now ready for BSL input - you can press any button in the BSL tab in GKFlasher.&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Bootstrap_Loader&amp;diff=1007</id>
		<title>Bootstrap Loader</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Bootstrap_Loader&amp;diff=1007"/>
		<updated>2026-07-05T21:35:33Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Added alternate way of flashing through W-Line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
Bootstrap Loader (BSL) on the C166 MCUs allows to execute code in memory, bypassing code stored on the EEPROM.&lt;br /&gt;
&lt;br /&gt;
This is often used to flash regions of memory inaccessible through OBD2, such as the bootloader. Most notable case would be removing the [[immobiliser]], or performing a ca663056-&amp;gt;ca663057 upgrade, which requires changing the bootloader.&lt;br /&gt;
&lt;br /&gt;
To enter BSL mode, you must ground the BOOT pin and then feed power to the ECU, which will make the CPU wait for input over serial port instead of executing code stored on the flash memory. Then, typically a small loader is uploaded which later facilitates upload and execution of the proper BSL program, which will offer ways to manipulate memory. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dante383/gkflasher GKFlasher] supports BSL mode.&lt;br /&gt;
&lt;br /&gt;
== Entering the BSL mode ==&lt;br /&gt;
[[File:Boot pin ziome3eg.png|thumb|BOOT pin]]&lt;br /&gt;
&lt;br /&gt;
=== Non-immo ECUs ===&lt;br /&gt;
&lt;br /&gt;
# Connect ECU pins 2, 14, 21 and 22 to +12V.&lt;br /&gt;
# Connect [[K-Line]] per [[Siemens 5WY 2 Connector Pinout|ECU pinout.]]&lt;br /&gt;
# Pull down the BOOT pin to Ground through a 10kΩ resistor.&lt;br /&gt;
# Connect power and ground to the ECU.&lt;br /&gt;
# ECU is now ready for BSL input - you can press any button in the BSL tab in GKFlasher.&lt;br /&gt;
&lt;br /&gt;
=== Immo ECUs ===&lt;br /&gt;
&lt;br /&gt;
# Connect ECU pins 2, 14, 21 and 22 to +12V.&lt;br /&gt;
# Connect K-Line (pin 77) per [[Siemens 5WY 2 Connector Pinout|ECU pinout]]. &lt;br /&gt;
#Attach a 470Ω resistor on the [[W-Line|W-Line&amp;lt;small&amp;gt;(? citation needed)&amp;lt;/small&amp;gt;]].&lt;br /&gt;
#Splice [[K-Line]] into [[K-Line]] on the ECU header - if you&#039;re using a Y-split OBD2 cable, that&#039;d be [[Data link connector (OBD2)|pin 9]].&lt;br /&gt;
# Pull down the BOOT pin to Ground through a 10kΩ resistor.&lt;br /&gt;
# Connect power and ground to the ECU.&lt;br /&gt;
# ECU is now ready for BSL input - you can press any button in the BSL tab in GKFlasher.&lt;br /&gt;
[[File:Bsl pins dmg210.png|thumb]]If the method above does not work, try the following:&lt;br /&gt;
&lt;br /&gt;
# Connect ECU pins 2, 14, 21 and 22 to +12V.&lt;br /&gt;
# Connect K-line (OBD pin 7) to W-Line on the ECU header (pin 47).&lt;br /&gt;
# Pull down the BOOT pin (pin 28 of the flash chip) to Ground through a 10kΩ resistor.&lt;br /&gt;
# Connect power and ground to the ECU.&lt;br /&gt;
# ECU is now ready for BSL input - you can press any button in the BSL tab in GKFlasher.&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Bootstrap_Loader&amp;diff=1006</id>
		<title>Bootstrap Loader</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Bootstrap_Loader&amp;diff=1006"/>
		<updated>2026-07-05T08:33:32Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Fixed the part about grounding the BOOT pin. Puling pins hard to ground without a pulldown resistor is dangerous and may cause the I/O circuitry inside the MCU to burn up since it&amp;#039;s essentially shorted.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
Bootstrap Loader (BSL) on the C166 MCUs allows to execute code in memory, bypassing code stored on the EEPROM.&lt;br /&gt;
&lt;br /&gt;
This is often used to flash regions of memory inaccessible through OBD2, such as the bootloader. Most notable case would be removing the [[immobiliser]], or performing a ca663056-&amp;gt;ca663057 upgrade, which requires changing the bootloader.&lt;br /&gt;
&lt;br /&gt;
To enter BSL mode, you must ground the BOOT pin and then feed power to the ECU, which will make the CPU wait for input over serial port instead of executing code stored on the flash memory. Then, typically a small loader is uploaded which later faciliates upload and execution of the proper BSL program, which will offer ways to manipulate memory. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dante383/gkflasher GKFlasher] supports BSL mode&lt;br /&gt;
&lt;br /&gt;
== Entering the BSL mode ==&lt;br /&gt;
[[File:Boot pin ziome3eg.png|thumb|BOOT pin]]&lt;br /&gt;
&lt;br /&gt;
=== Non-immo ECUs ===&lt;br /&gt;
&lt;br /&gt;
# Connect [[K-Line]] per [[Siemens 5WY 2 Connector Pinout|ECU pinout.]]&lt;br /&gt;
# Pull down the BOOT pin to Ground through a 10kΩ resistor.&lt;br /&gt;
# Connect power to the ECU.&lt;br /&gt;
# ECU is now ready for BSL input - you can press any button in the BSL tab in GKFlasher.&lt;br /&gt;
&lt;br /&gt;
=== Immo ECUs ===&lt;br /&gt;
&lt;br /&gt;
# Connect K-Line per [[Siemens 5WY 2 Connector Pinout|ECU pinout]]&lt;br /&gt;
# [[File:Bsl pins dmg210.png|thumb]]Attach a 470Ω resistor on the [[W-Line|W-Line&amp;lt;small&amp;gt;(? citation needed)&amp;lt;/small&amp;gt;]] and splice [[K-Line]] into [[K-Line]] on the ECU header - if you&#039;re using a Y-split OBD2 cable, that&#039;d be [[Data link connector (OBD2)|pin 9]].&lt;br /&gt;
# Pull down the BOOT pin to Ground through a 10kΩ resistor.&lt;br /&gt;
# Connect power to the ECU.&lt;br /&gt;
# ECU is now ready for BSL input - you can press any button in the BSL tab in GKFlasher.&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Siemens_5WY_2_Connector_Pinout&amp;diff=992</id>
		<title>Siemens 5WY 2 Connector Pinout</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Siemens_5WY_2_Connector_Pinout&amp;diff=992"/>
		<updated>2026-02-05T17:25:16Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;margin-left: 20%;&amp;quot;&amp;gt;C33&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:GK20-ECM-Socket.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Warning|SIMK41 and SIMK43 pinouts are different! Using the wrong ECM or harness will result in &#039;&#039;&#039;damage to your vehicle&#039;&#039;&#039;! Use at your own risk. Verify the type of ECM and harness before proceeding.}}&lt;br /&gt;
&lt;br /&gt;
Male Socket: TE 1746979-1 121 Pin Socket&lt;br /&gt;
&lt;br /&gt;
Female Plug: TE 368290-1 or 368376-1 81 Pin Plug&lt;br /&gt;
&lt;br /&gt;
==SIMK41 2MBit (MAP)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 900px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot; |ECM Socket 81-pin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Pin&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Type&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; |Description&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; |Notes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |3&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Memory Power Supply (ECM Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |4&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Ignition Coil #1 &amp;amp; #4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |5&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Ignition Coil #2 &amp;amp; #3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |6&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[CAN Bus messages|CANBUS]] Low&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |7&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[CAN Bus messages|CANBUS]] High&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |8&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|O2 Sensor Heater Control (B1/S1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |9&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|O2 Sensor Heater Control (B1/S2)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |10&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Knock Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |11&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |12&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |13&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |14&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Battery (From SNSR Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |15&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |16&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |17&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Wheel Speed Sensor (Right Front) -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |18&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Wheel Speed Sensor (Right Front) +&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |19&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |20&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |21&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Battery (From SNSR Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |22&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|On/Start Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |23&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #4 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |24&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #1 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |25&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |26&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Canister Purge Valve Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |27&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Crankshaft Position Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |28&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |29&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Crankshaft Position Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |30&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Knock Sensor and Camshaft Shared Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |31&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Engine Coolant Temperature Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |32&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Throttle Position Signal (TPS)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |33&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Fuel Tank Pressure Sensor Signal (above fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |34&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Fuel Tank Pressure Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |35&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |36&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |37&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |38&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Throttle Position Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |39&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Vehicle Speed Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |40&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |41&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |42&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|O2 Sensor Signal (B1/S2)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |43&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|O2 Sensor Signal (B1/S1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |44&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Tank Pressure Sensor and Manifold Absolute Pressure Shared Power&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |45&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Throttle Position Sensor Power&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |46&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |47&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[W-Line|Immobilizer W-Line]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |48&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Manifold Absolute Pressure Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |49&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |50&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Signal Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |51&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Pressure Switch Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |52&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |53&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |54&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |55&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ignition Coil Shield Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |56&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Intake Air Temperature Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |57&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |58&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Switch On&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |59&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|O2 Sensor and Engine Coolant Temperature Shared Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |60&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Manifold Absolute Pressure Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |61&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #3 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |62&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #2 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |63&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |64&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fan Relay Control (High)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |65&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fan Relay Control (Low)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |66&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Engine RPM Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |67&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Main Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |68&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Air Conditioner Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |69&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Pump Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |70&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Check Engine Indicator Control (MIL)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |71&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |72&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Camshaft Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |73&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |74&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |75&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Consumption Signal (for multigauge and instrument cluster)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |76&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |77&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[K-Line|Diagnostics K-Line (OBD2)]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |78&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Idle Air Control Valve (Close)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |79&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|CCV Control (at rear undercarriage, near fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |80&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Idle Air Control Valve (Open)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |81&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Immobilizer Indicator Control&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SIMK43 4MBit (MAF)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 900px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot; |ECM Socket 81-pin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Pin&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Type&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; |Description&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; |Notes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |3&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Memory Power Supply (ECM Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |4&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Ignition Coil #1 &amp;amp; #4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |5&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Ignition Coil #2 &amp;amp; #3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |6&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[SIMK43 CAN Bus|CANBUS]] Low&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |7&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[SIMK43 CAN Bus|CANBUS]] High&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |8&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|O2 Sensor Heater Control (B1/S1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |9&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|O2 Sensor Heater control (B1/S2)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |10&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Knock Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |11&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|CVVT Oil Control Valve (left rear of cylinder head)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |12&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |13&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |14&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Battery (From SNSR Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |15&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |16&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |17&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Wheel Speed Sensor (Right Front) -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |18&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Wheel Speed Sensor (Right Front) +&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |19&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |20&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |21&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Battery (From SNSR Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |22&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|On/Start Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |23&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #4 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |24&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #1 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |25&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |26&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Canister Purge Valve Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |27&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Crankshaft Position Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |28&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |29&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Crankshaft Position Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |30&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Camshaft Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |31&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Engine Coolant Temperature Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |32&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Throttle Position Signal (TPS)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |33&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Fuel Tank Pressure Sensor Signal (above fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |34&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Fuel Tank Pressure Sensor Ground (above fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |35&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |36&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |37&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|O2 Sensor Ground (B1/S2) (below exhaust manifold)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |38&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Throttle position sensor ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |39&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Vehicle Speed Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |40&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |41&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |42&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|O2 Sensor Signal (B1/S2)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |43&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|O2 Sensor Signal (B1/S1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |44&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Tank Pressure Sensor Power&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |45&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Throttle Position Sensor Power&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |46&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |47&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[W-Line|Immobilizer W-Line]]&lt;br /&gt;
|4800 baud, ISO 9142-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |48&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|MAF/IAT Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |49&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |50&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Signal Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |51&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Pressure Switch Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |52&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Oil Temperature Sensor Signal (top right side of engine)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |53&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |54&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Knock Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |55&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ignition Coil Shield Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |56&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Intake Air Temperature Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |57&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |58&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Switch On&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |59&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|O2 Sensor (B1/S1) Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |60&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Mass Airflow Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |61&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #3 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |62&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #2 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |63&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |64&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fan Relay Control (High)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |65&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fan Relay Control (Low)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |66&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Engine RPM Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |67&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Main Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |68&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Air Conditioner Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |69&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Pump Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |70&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Check Engine Indicator Control (MIL)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |71&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |72&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Camshaft Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |73&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Engine Coolant Temperature Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |74&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |75&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel consumption signal (for multigauge and instrument cluster)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |76&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Oil temperature sensor ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |77&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[K-Line|Diagnostics K-Line (OBD2)]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |78&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Idle Air Control Valve (Closing)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |79&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|CCV Control (at rear undercarriage, near fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |80&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Idle Air Control Valve (Opening)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |81&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Immobilizer Indicator Control&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[index.php?title=Category:Siemens L4 2.0L]]&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Siemens_5WY_2_Connector_Pinout&amp;diff=991</id>
		<title>Siemens 5WY 2 Connector Pinout</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Siemens_5WY_2_Connector_Pinout&amp;diff=991"/>
		<updated>2026-02-05T17:23:36Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Improved pin names and consistency across SIMK 43/41&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;margin-left: 20%;&amp;quot;&amp;gt;C33&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:GK20-ECM-Socket.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Warning|SIMK41 and SIMK43 pinouts are different! Using the wrong ECM or harness will result in &#039;&#039;&#039;damage to your vehicle&#039;&#039;&#039;! Use at your own risk. Verify the type of ECM and harness before proceeding.}}&lt;br /&gt;
&lt;br /&gt;
Male Socket: TE 1746979-1 121 Pin Socket&lt;br /&gt;
&lt;br /&gt;
Female Plug: TE 368290-1 or 368376-1 81 Pin Plug&lt;br /&gt;
&lt;br /&gt;
==SIMK41 2MBit (MAP)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 900px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot; |ECM Socket 81-pin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Pin&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Type&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; |Description&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; |Notes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |3&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Memory Power Supply (ECM Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |4&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Ignition Coil #1 &amp;amp; #4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |5&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Ignition Coil #2 &amp;amp; #3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |6&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[CAN Bus messages|CANBUS]] Low&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |7&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[CAN Bus messages|CANBUS]] High&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |8&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|O2 Sensor Heater Control (B1/S1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |9&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|O2 Sensor Heater Control (B1/S2)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |10&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Knock Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |11&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |12&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |13&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |14&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Battery (From SNSR Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |15&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |16&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |17&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Wheel Speed Sensor (Right Front) -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |18&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Wheel Speed Sensor (Right Front) +&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |19&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |20&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |21&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Battery (From SNSR Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |22&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|On/Start Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |23&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #4 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |24&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #1 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |25&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |26&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Canister Purge Valve Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |27&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Crankshaft Position Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |28&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |29&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Crankshaft Position Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |30&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Knock Sensor and Camshaft Shared Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |31&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Engine Coolant Temperature Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |32&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Throttle Position Signal (TPS)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |33&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Fuel Tank Pressure Sensor Signal (above fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |34&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Fuel Tank Pressure Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |35&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |36&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |37&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |38&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Throttle Position Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |39&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Vehicle Speed Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |40&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |41&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |42&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|O2 Sensor Signal (B1/S2)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |43&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|O2 Sensor Signal (B1/S1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |44&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Tank Pressure Sensor and Manifold Absolute Pressure Shared Power&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |45&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Throttle Position Sensor Power&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |46&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |47&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[W-Line|Immobilizer W-Line]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |48&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Manifold Absolute Pressure Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |49&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |50&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Signal Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |51&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Pressure Switch Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |52&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |53&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |54&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |55&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ignition Coil Shield Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |56&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Intake Air Temperature Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |57&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |58&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Switch On&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |59&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|O2 Sensor and Engine Coolant Temperature Shared Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |60&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Manifold Absolute Pressure Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |61&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #3 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |62&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #2 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |63&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |64&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fan Relay Control (High)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |65&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fan Relay Control (Low)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |66&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Engine RPM Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |67&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Main Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |68&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Air Conditioner Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |69&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Pump Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |70&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Check Engine Indicator Control (MIL)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |71&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |72&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Camshaft Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |73&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |74&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |75&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Consumption Signal (for multigauge and instrument cluster)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |76&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |77&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[K-Line|Diagnostics K-Line (OBD2)]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |78&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Idle Air Control Valve (Open)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |79&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|CCV Control (at rear undercarriage, near fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |80&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Idle Air Control Valve (Close)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |81&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Immobilizer Indicator Control&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SIMK43 4MBit (MAF)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 900px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot; |ECM Socket 81-pin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Pin&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Type&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; |Description&lt;br /&gt;
| style=&amp;quot;font-weight:bold;&amp;quot; |Notes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |3&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Memory Power Supply (ECM Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |4&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Ignition Coil #1 &amp;amp; #4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |5&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Ignition Coil #2 &amp;amp; #3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |6&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[SIMK43 CAN Bus|CANBUS]] Low&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |7&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[SIMK43 CAN Bus|CANBUS]] High&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |8&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|O2 Sensor Heater Control (B1/S1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |9&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|O2 Sensor Heater control (B1/S2)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |10&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Knock Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |11&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|CVVT Oil Control Valve (left rear of cylinder head)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |12&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |13&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |14&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Battery (From SNSR Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |15&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |16&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |17&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Wheel Speed Sensor (Right Front) -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |18&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Wheel Speed Sensor (Right Front) +&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |19&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |20&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |21&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Battery (From SNSR Fuse)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |22&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|On/Start Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |23&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #4 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |24&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #1 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |25&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |26&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Canister Purge Valve Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |27&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Crankshaft Position Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |28&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |29&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Crankshaft Position Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |30&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Camshaft Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |31&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Engine Coolant Temperature Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |32&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Throttle Position Signal (TPS)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |33&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Fuel Tank Pressure Sensor Signal (above fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |34&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Fuel Tank Pressure Sensor Ground (above fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |35&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |36&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |37&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|O2 Sensor Ground (B1/S2) (below exhaust manifold)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |38&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Throttle position sensor ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |39&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Vehicle Speed Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |40&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |41&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |42&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|O2 Sensor Signal (B1/S2)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |43&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|O2 Sensor Signal (B1/S1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |44&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Tank Pressure Sensor Power&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |45&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Throttle Position Sensor Power&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |46&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |47&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[W-Line|Immobilizer W-Line]]&lt;br /&gt;
|4800 baud, ISO 9142-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |48&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|MAF/IAT Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |49&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |50&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Signal Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |51&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Pressure Switch Input&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |52&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Oil Temperature Sensor Signal (top right side of engine)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |53&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |54&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Knock Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |55&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Ignition Coil Shield Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |56&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Intake Air Temperature Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |57&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |58&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Air Conditioner Switch On&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |59&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|O2 Sensor (B1/S1) Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |60&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Mass Airflow Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |61&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #3 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |62&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Injector #2 Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |63&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |64&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fan Relay Control (High)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |65&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fan Relay Control (Low)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |66&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Engine RPM Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |67&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Main Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |68&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Air Conditioner Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |69&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel Pump Relay Control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |70&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Check Engine Indicator Control (MIL)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |71&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |72&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Input&lt;br /&gt;
|Camshaft Sensor Signal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |73&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Engine Coolant Temperature Sensor Ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |74&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |75&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Fuel consumption signal (for multigauge and instrument cluster)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |76&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Ground&lt;br /&gt;
|Oil temperature sensor ground&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |77&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |I/O&lt;br /&gt;
|[[K-Line|Diagnostics K-Line (OBD2)]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |78&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Idle Air Control Valve (Closing)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |79&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|CCV Control (at rear undercarriage, near fuel tank)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |80&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Idle Air Control Valve (Opening)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |81&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; |Output&lt;br /&gt;
|Immobilizer Indicator Control&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[index.php?title=Category:Siemens L4 2.0L]]&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
	<entry>
		<id>https://opengk.org:443/index.php?title=Siemens_5WY19_PCB_Components&amp;diff=990</id>
		<title>Siemens 5WY19 PCB Components</title>
		<link rel="alternate" type="text/html" href="https://opengk.org:443/index.php?title=Siemens_5WY19_PCB_Components&amp;diff=990"/>
		<updated>2026-02-05T16:59:40Z</updated>

		<summary type="html">&lt;p&gt;Ardamir: Added github link and small preamble&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width: 40%; float: right; display: flex; justify-content: right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PCB Picture|side=front|labeled_filename=5WY1900-Front.jpg}}This page documents the &#039;&#039;&#039;SIMK43 (5WY19)&#039;&#039;&#039; ECU hardware. The goal is to make the ECU easier to understand, inspect, and work with by providing a clear reference for board connectivity, key circuits, and component placement.&lt;br /&gt;
&lt;br /&gt;
The full ECU electrical schematic and PCB files are maintained on GitHub and are the canonical source for the latest revisions, updates, and related notes: [https://github.com/OpenGK-org/ecu-reverse-engineering/tree/main/5wy19 https://github.com/OpenGK-org/ecu-reverse-engineering/tree/main]&lt;br /&gt;
&lt;br /&gt;
{{PCB Component|index=1|title=Infineon C167CS-LM CPU|name=Infineon C167CS-LM|description=16-Bit Single-Chip Microcontroller C166 Family. 25 Mhz Operating Frequency|package=P-MQFP-144-8|datasheet=Infineon-c167cs4r-ds-en.pdf}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|Infineon&lt;br /&gt;
SAK-C167CS-LM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==2. AMD AM29F400BB Flash==&lt;br /&gt;
4 Megabit (512 K x 8-Bit/256 K x 16-Bit)&lt;br /&gt;
&lt;br /&gt;
CMOS 5.0 Volt-only Boot Sector Flash Memory&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|AM29F400BB&lt;br /&gt;
-55SEO&lt;br /&gt;
&lt;br /&gt;
0504GBA N&lt;br /&gt;
|}&lt;br /&gt;
==3. Crystal==&lt;br /&gt;
Generic 8.000000MHz Crystal&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|0502&lt;br /&gt;
|}&lt;br /&gt;
==4. ST ATM38E-BD8035==&lt;br /&gt;
Octal Channel Low-Side Switch.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|446776&lt;br /&gt;
8995L0453&lt;br /&gt;
|}&lt;br /&gt;
==5. Motorola TY94085DH==&lt;br /&gt;
The TY94085DH is a 20-pin SOP (Small Outline Package) integrated circuit from Motorola.&lt;br /&gt;
&lt;br /&gt;
It is used in a variety of applications such as motor control, power management, and data acquisition.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|ATM37 1.1&lt;br /&gt;
94.67.13&lt;br /&gt;
&lt;br /&gt;
KBK0502&lt;br /&gt;
|}&lt;br /&gt;
==6. Motorola TY94085DH==&lt;br /&gt;
The TY94085DH is a 20-pin SOP (Small Outline Package) integrated circuit from Motorola.&lt;br /&gt;
&lt;br /&gt;
It is used in a variety of applications such as motor control, power management, and data acquisition.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|ATM37 1.1&lt;br /&gt;
94.67.13&lt;br /&gt;
&lt;br /&gt;
KBK0502&lt;br /&gt;
|}&lt;br /&gt;
==7. OnSemi EcoSpark Ignition IGBT==&lt;br /&gt;
500 mJ, 360 V, N−Channel Ignition IGBT&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|N419AF V5036S&lt;br /&gt;
|}&lt;br /&gt;
==8. OnSemi EcoSpark Ignition IGBT==&lt;br /&gt;
500 mJ, 360 V, N−Channel Ignition IGBT&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|N419AF V5036S&lt;br /&gt;
|}&lt;br /&gt;
==9. Texas Instruments 51DLEKT (Knock Sensor Interface)==&lt;br /&gt;
The TPIC8101 is a dual-channel signal processing IC for detection of premature detonation in combustion engine. The two sensor channels are selectable through the SPI bus.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|TP1C8101DW&lt;br /&gt;
|}&lt;br /&gt;
==10. Amis ATM46C3 (Siemens Rotax ECU Driver)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|Siemens&lt;br /&gt;
0504TAK SDIA&lt;br /&gt;
ATM46C3 966781&lt;br /&gt;
|}&lt;br /&gt;
==11. Nexperia 74HC32D (NXP)==&lt;br /&gt;
The 74HC32D is a quad 2-input OR gate. Inputs include clamp diodes. This enables the use of current limiting resistors to interface inputs to voltages in excess of VCC.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|AP052 07&lt;br /&gt;
UnN0451D&lt;br /&gt;
|}&lt;br /&gt;
==12. Nexperia 74HC08D (NXP)==&lt;br /&gt;
The 74HC08D is a quad 2-input AND gate. Inputs include clamp diodes. This enables the use of current limiting resistors to interface inputs to voltages in excess of VCC.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|AP236 14&lt;br /&gt;
UnN0452E&lt;br /&gt;
|}&lt;br /&gt;
==13. Infineon A2C33648 (Triple Voltage Regulator)==&lt;br /&gt;
The A2C33648 is a monolithic integrated very low-drop triple voltage regulator. &lt;br /&gt;
&lt;br /&gt;
The output supplies loads up to 450 mA and the additional tracked outputs can provide up to 50 mA and 100 mA.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|0502&lt;br /&gt;
ATIC17 E1&lt;br /&gt;
|}&lt;br /&gt;
==14. ST ATM39B-556757 (CMOS Gate)==&lt;br /&gt;
The ATMEL ATM39B-556757 is a ST Microelectronics CMOS logic chip. It is a quad single gate device in a 20-Pin SOP package. Description: The ATM39B-556757 is a Quad Single Gate(QSG) with non-inverting logic. This device provides four independently controlled single gates with a power dissipation of 5.6mW per gate. The device is designed to operate with a supply voltage of 3V to 5.5V. Features: Low power consumption Maximum sink current of 8mA Maximum switching speed up to 16V/ns Low input capacitance High output drive current Latch-up protection ESD protection Applications: High-speed logic circuits Clock and data separators Programmable logic applications Logic switching applications Analog multiplexers/demultiplexers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|990MT VB 99&lt;br /&gt;
507 MYS&lt;br /&gt;
|}&lt;br /&gt;
==15. Nexperia (NXP) 74HCT574D==&lt;br /&gt;
The 74HC574D is a high speed CMOS OCTAL FLIP-FLOP with 3-STATE OUTPUT fabricated with silicon gate C2MOS technology. This chip sit between the CPU and EEPROM.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|AO192 10&lt;br /&gt;
UnG0450G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 16. Nexperia (NXP) A82C250 - CAN Bus ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Chip Markings&lt;br /&gt;
|-&lt;br /&gt;
|4R0R8&lt;br /&gt;
n6504&lt;br /&gt;
|}&lt;br /&gt;
The PC A82C250 is the interface between a CAN protocol controller and the physical bus.&lt;br /&gt;
&lt;br /&gt;
The device provides differential transmit capability to the bus and differential receive capability to the CAN controller.&lt;br /&gt;
&lt;br /&gt;
- Fully compatible with the “ISO 11898” standard&lt;br /&gt;
&lt;br /&gt;
- High speed (up to 1 MBd)&lt;br /&gt;
&lt;br /&gt;
{{PCB Picture|side=back|original_filename=5WY1900-Back.jpg}}&lt;br /&gt;
&lt;br /&gt;
[[index.php?title=Category:Siemens L4 2.0L]]&lt;br /&gt;
[[index.php?title=Category:Siemens L4 2.0L PCB Layouts]]&lt;br /&gt;
[[index.php?title=Category:PCB Layouts]]&lt;/div&gt;</summary>
		<author><name>Ardamir</name></author>
	</entry>
</feed>