Advertising:

Siemens MS43 CAN Bus: Difference between revisions

From MS4X Wiki
 
(107 intermediate revisions by the same user not shown)
Line 1: Line 1:
<div style="float:right;">__TOC__</div>
<div style="float:right;">__TOC__</div>
The CAN Bus on BMWs E46 chassis operates at a speed of 500kb/s
CAN Bus on BMWs E46 chassis operates at a speed of 500kb/s and so does the MS43 ECU.


==ASC1 0x153==
There is a total of 15 message boxes, that can be configured to be received or send by the C167 processor.
Refresh Rate: 10ms
 
The messages are ordered by the CAN registers name inside the CPU beginning with 1 and ending with F. Unused boxes are not listed here.
 
 
Siemens MS43 reads the following messages for operation, if the corresponding module is present in car:
*Messagebox 1: [[CAN_Bus_ID_0x43F_EGS1|ARBID 0x43F EGS1 Automatic Transmission]]
*Messagebox 2: [[CAN_Bus_ID_0x613_ICL2|ARBID 0x613 ICL2 Instrument Cluster]]
*Messagebox 3: [[CAN_Bus_ID_0x615_ICL3|ARBID 0x615 ICL3 Instrument Cluster]]
*Messagebox 4: [[CAN_Bus_ID_0x153_ASC1|ARBID 0x153 ASC1 Traction Control]]
*Messagebox 5: [[CAN_Bus_ID_0x1F3_ASC3|ARBID 0x1F3 ASC3 Traction Control]]
*Messagebox 6: [[CAN_Bus_ID_0x43D_AMT1|ARBID 0x43D AMT1 Automatic Manual Transmission]]
*Messagebox 7: [[CAN_Bus_ID_0x1F5_LWS1|ARBID 0x1F5 LWS1 Steering Angle Sensor]]
 
 
Siemens MS43 sends the following messages:
*Messagebox B: [[Siemens_MS43_CAN_Bus#DME3_0x338|ARBID 0x338 DME3 Engine Control Unit]] (Alpina Roadster only)
*Messagebox C: [[Siemens_MS43_CAN_Bus#DME4_0x545|ARBID 0x545 DME4 Engine Control Unit]]
*Messagebox D: [[Siemens_MS43_CAN_Bus#DME2_0x329|ARBID 0x329 DME2 Engine Control Unit]]
*Messagebox E: [[Siemens_MS43_CAN_Bus#DME1_0x316|ARBID 0x316 DME1 Engine Control Unit]]
 
 
Visualised in Tuner Pro the CAN configuration table looks like this:
[[File:Tuner Pro MS43 CAN Init.png|none]]
 
 
In addition to that, there are several messages that are not used by the ECU, but still present on the CAN Bus:
*[[CAN_Bus_ID_0x1F0_ASC2|ARBID 0x1F0 ASC2 Traction Control]]
*[[CAN_Bus_ID_0x1F8_ASC4|ARBID 0x1F8 ASC4 Traction Control]]
*[[CAN_Bus_ID_0x445_TXU1|ARBID 0x445 TXU1 Transfer Case Unit]]
*[[CAN_Bus_ID_0x610_ICL1|ARBID 0x610 ICL1 Instrument Cluster]]


==ASC3 0x1F3==
Refresh Rate: 10ms


==DME1 0x316==
====DME1 0x316====
Refresh Rate: 10ms
Refresh Rate: 10ms


*'''Byte 0 - Bitfield'''
*'''Byte 0 - Bitfield'''
**'''Bit 0''' - LV_SWI_IGK - Ignition Voltage State (0 = off, 1 = on)
**'''Bit 0 - LV_SWI_IGK'''
**'''Bit 1''' - LV_F_N_ENG - Crankshaft Sensor State (0 = ok, 1 = error)
**:Ignition Key Voltage State  
**'''Bit 2''' - LV_ACK_TCS - Traction Control State (0 = no ASC1 CAN frame received for 500ms or unplausible data, 1 = ok)
**:0 = terminal 15 off detected
**'''Bit 3''' - LV_ERR_GC - Gear Change Error State (0 = gear change not or partly possible, 1 = gear change possible)
**:1 = terminal 15 on detected
**'''Bit 4''' - SF_TQD
**'''Bit 1 - LV_F_N_ENG'''
**'''Bit 5''' - SF_TQD
**:Crankshaft Sensor State
**'''Bit 6''' - Unused
**:0 = no CRK error present
**'''Bit 7''' - LV_F_SUB_TQI - MAF Error State (0 = ok, 1 = error)
**:1 = CRK error present
*'''Byte 1''' - TQI_TQR_CAN - Indexed Engine Torque % (including ASR/MSR/ETCU/LIM/AMT/GEAR intervention)
**'''Bit 2 - LV_ACK_TCS'''
*'''Byte 2''' - N_ENG - Engine Speed LSB
**:Traction Control State
*'''Byte 3''' - N_ENG - Engine Speed MSB
**:0 = either ASC1 was not received within the last 500 ms or it contains a plausibility error
*'''Byte 4''' - TQI_CAN - Indicated Engine Torque % (based on PVS, N, AMP, TIA ,TCO, IGA, PUC)
**:1 = the ASC message ASC1 was received within the last 500 ms and contains no plausibility errors of the requirements TQI_ASR_CAN / TQI_MSR_CAN
*'''Byte 5''' - TQ_LOSS_CAN - Engine Torque Loss % (due to engine friction, AC compressor and electrical power consumption)
**'''Bit 3 - LV_ERR_GC'''
*'''Byte 6''' - TQI_MAF_CAN - Theorethical Engine Torque After Charge Intervention (based on MAF, IGA)
**:Gear Change Error State
*'''Byte 7 - Bitfield'''
**:0 = gear change not or partly possible
**'''Bit 0''' - ERR_AMT_CAN
**:1 = gear change possible
**'''Bit 1''' - ERR_AMT_CAN
**'''Bit 4 - SF_TQD [0]'''
**'''Bit 5 - SF_TQD [0]'''
**:Charge Intervention State
**:0 = the required intervention can be performed completely or if there is no ASC requirement.
**:1 = the required intervention cannot be performed completely because the IGA retard limit is reached.
**:2 = the required intervention cannot be performed completely because the charge actuators are fully closed (this case is not possible with MTC without break-away mechanism)
**:3 = "limited vehicle dynamics" is active (MTC/ISA error)
**'''Bit 6 - Unused'''
**'''Bit 7 - LV_F_SUB_TQI'''
**:MAF Error State
**:0 = MAF ok
**:1 = MAF error present
*'''Byte 1 - TQI_TQR_CAN'''
*:Indexed Engine Torque in % of C_TQ_STND  (including ASR/MSR/ETCU/LIM/AMT/GEAR intervention)
*: Calculation = HEX * 0.39
*'''Byte 2 - N_ENG [LSB]'''
*'''Byte 3 - N_ENG [MSB]'''
*: Engine Speed in rpm
*: Calculation = ((HEX[MSB] * 256) + HEX[LSB]) * 0.15625
*'''Byte 4 - TQI_CAN'''
*:Indicated Engine Torque in % of C_TQ_STND (based on PVS, N, AMP, TIA ,TCO, IGA, PUC so ip_tqi_pvs__n__pvs)
*: Calculation = HEX * 0.39
*'''Byte 5 - TQ_LOSS_CAN'''
*:Engine Torque Loss (due to engine friction, AC compressor and electrical power consumption) in % of C_TQ_STND
*: Calculation = HEX * 0.39
*'''Byte 6 - Bitfield'''
**'''Bit 6 - ERR_AMT_CAN'''
**'''Bit 7 - ERR_AMT_CAN'''
*'''Byte 7 - TQI_MAF_CAN'''
*:Theorethical Engine Torque in % of C_TQ_STND after charge intervention (based on MAF & IGA so ip_tqi_maf__n__maf)
*: Calculation = HEX * 0.39


==DME2 0x329==
====DME2 0x329====
Refresh Rate: 10ms
Refresh Rate: 10ms


*'''Byte 0 - Multiplexed Information'''
*'''Byte 0 - Multiplexed Information'''
**'''Bit 0''' - MUX_INFO
**'''Bit 0''' - MUX_INFO [0]
**'''Bit 1''' - MUX_INFO
**'''Bit 1''' - MUX_INFO [1]
**'''Bit 2''' - MUX_INFO
**'''Bit 2''' - MUX_INFO [2]
**'''Bit 3''' - MUX_INFO
**'''Bit 3''' - MUX_INFO [3]
**'''Bit 4''' - MUX_INFO
**'''Bit 4''' - MUX_INFO [4]
**'''Bit 5''' - MUX_INFO
**'''Bit 5''' - MUX_INFO [5]
**'''Bit 6''' - MUX_CODE
**:CAN_LEVEL = CAN bus function level. This is always 0x11 for MS43
**'''Bit 7''' - MUX_CODE
**:OBD_STEUER = STATE_DIAG_GS (Status of GS diagnosis for feedback to gearbox)
**:MD_NORM = Refactored C_TQ_STND from 0x3FF (0-1023Nm) to 0x3F (0-1008Nm) with decreased resolution of 16Nm
**'''Bit 6''' - MUX_CODE [0]
**'''Bit 7''' - MUX_CODE [1]
**: 0 = CAN_LEVEL
**: 2 = OBD_STEUER
**: 3 = MD_NORM
*'''Byte 1 - TEMP_ENG'''
*'''Byte 1 - TEMP_ENG'''
*:Engine (Coolant) Temperature in °C
*:Engine (Coolant) Temperature in °C
*:Calculation = (HEX * 0.75) - 48°C
*:Calculation = (HEX * 0.75) - 48°C
*:Init: 0xFF | Min: 0x01 (-48°C) | Max: 0xFE (142.5°C)
*:Init: 0xFF
*:Min: 0x01 (-48°C)
*:Max: 0xFF (142.5°C)
*'''Byte 2 - AMP_CAN'''
*'''Byte 2 - AMP_CAN'''
*:Ambient Pressure in hPa
*:Ambient Pressure in hPa
*:Calculation = (HEX * 2) + 598hPa
*:Calculation = (HEX * 2) + 598hPa
*:Init: 0x00 | Min: 0x01 (600hPa) | Max: 0xFE (1106hPa) | Error: 0xFF
*:Init = 0x00
*:Min = 0x01 (600hPa)
*:Max = 0xFE (1106hPa)
*:Error = 0xFF
*'''Byte 3 - Bitfield'''
*'''Byte 3 - Bitfield'''
**'''Bit 0 - LV_SWI_CLU'''
**'''Bit 0 - LV_SWI_CLU'''
**:Clutch Switch State
**:Clutch Switch State
**:0: released | 1: depressed
**:0 = released
**'''Bit 1 - LV_LEVEL_IS''' - Idle Regulator State
**:1 = depressed
**:0: idle above threshold | 1: idle below threshold
**'''Bit 1 - LV_LEVEL_IS'''
**'''Bit 2 - LV_ACK_CRU_AD_ECU''' - Acknowledge of ACC1 CAN Message
**:Idle Regulator State
**:0: nACK | 1: ACK
**:0 = idle above threshold
**'''Bit 3 - LV_ERU_CAN''' - Engine Running State
**:1 = idle below threshold
**:0: stopped | 1: running
**'''Bit 2 - LV_ACK_CRU_AD_ECU'''
**'''Bit 4''' - STATE_CRU_CAN
**:Acknowledge of ACC1 CAN Message
**'''Bit 5''' - STATE_MSW_CAN [0]
**:0 = nACK
**'''Bit 6''' - STATE_MSW_CAN [1]
**:1 = ACK
**'''Bit 7''' - STATE_MSW_CAN [2]
**'''Bit 3 - LV_ERU_CAN'''
*'''Byte 4''' - TPS_VIRT_CRU_CAN
**:Engine Running State
*'''Byte 5''' - TPS_CAN
**:0 = engine stopped
**:1 = engine running
**'''Bit 4 - (STATE_CRU_CAN)???
**'''Bit 5 - STATE_MSW_CAN [0]'''
**'''Bit 6 - STATE_MSW_CAN [1]'''
**'''Bit 7 - STATE_MSW_CAN [2]'''
**:0 = No Button Pressed (Init Value)
**:1 = Set / Acceleration (tip-up)
**:2 = Deceleration (tip-down)
**:3 = Resume
**:4 = Deactivate (I/O)
**:7 = Error Condition
*'''Byte 4 - TPS_VIRT_CRU_CAN'''
*:Calculation = HEX * 0.390625
*'''Byte 5 - TPS_CAN'''
*:Accelerator Pedal Position in % of PVS_MAX
*:Calculation = HEX * 0.390625
*:Init = 0x00
*:Min = 0x01 (0%)
*:Max = 0xFE (99.2%)
*:PVS Error = 0xFF
*'''Byte 6 - Bitfield'''
*'''Byte 6 - Bitfield'''
**'''Bit 0''' - LV_BS
**'''Bit 0 - LV_BS'''
**'''Bit 1''' - LV_ERR_BS
**:Brake Switch State
**'''Bit 2''' - LV_KD_CAN - Kick Down State (0: not active | 1: active)
**:0 = brake not actuated
**'''Bit 3''' - STATE_CRU_CAN
**:1 = brake actuated
**'''Bit 4''' - STATE_CRU_CAN
**'''Bit 1 - LV_ERR_BS'''
**'''Bit 5''' - STATE_CRU_CAN
**:Brake Switch System State
**'''Bit 6''' - REQ_SHIFTLOCK
**:0 = brake switch system OK
**'''Bit 7''' - REQ_SHIFTLOCK
**:1 = brake switch system faulty
*'''Byte 7''' - Unused
**'''Bit 2 - LV_KD_CAN'''
**:Kick Down State
**:0 = kick down not active
**:1 = kick down active
**'''Bit 3 - STATE_CRU_CAN [0]'''
**'''Bit 4 - STATE_CRU_CAN [1]'''
**'''Bit 5 - STATE_CRU_CAN [2]'''
**:0 = LV_CRU_ACT = 0
**:1 = LV_CRU_ACT = 1, constant drive (or tip-up / tip-down)
**:3 = LV_CRU_ACT = 1, resume
**:5 = LV_CRU_ACT = 1, set / acceleration
**:7 = LV_CRU_ACT = 1, deceleration
**'''Bit 6 - REQ_SHIFTLOCK [0]'''
**'''Bit 7 - REQ_SHIFTLOCK [1]'''
**:0 = no actuation is active
**:3 = actuation ISA, MTC or N_SP_IS is active
*'''Byte 7 - Unused'''


====DME3 0x338====
Refresh Rate: 1000ms and at signal change


*  
*'''Byte 0''' - Unused
* Min: 600hPa , Max: 1106hPa
*'''Byte 1''' - Unused
*'''Byte 2 - STATE_SOF_CAN'''
*:Sport Button Status
*:0 = Sport Button On (requested by SMG)
*:1 = Sport Button Off
*:2 = Sport Button On
*:3 = Sport Button Error
*:Init: 0x01
*'''Byte 3''' - Unused
*'''Byte 4''' - Unused
*'''Byte 5''' - Unused
*'''Byte 6''' - Unused
*'''Byte 7''' - Unused


==DME4 0x545==
====DME4 0x545====
Refresh Rate: 10ms
Refresh Rate: 10ms


*'''Byte 0 - Bitfield'''
*'''Byte 0 - Bitfield'''
**'''Bit 0''' - DDE: Pre-Glow Active
**'''Bit 0''' - Unused
**'''Bit 1''' - LV_MIL - Check Engine Light
**'''Bit 1''' - LV_MIL - Check Engine Light
**'''Bit 2''' - Unused
**'''Bit 2''' - Unused
**'''Bit 3''' - LV_MAIN_SWI_CRU - CRU_MAIN_SWI
**'''Bit 3''' - LV_MAIN_SWI_CRU - CRU_MAIN_SWI
**'''Bit 4''' - LV_ETC_DIAG - EML Light
**'''Bit 4''' - LV_ETC_DIAG - EML Light
**'''Bit 5''' - DDE: Boost Control Failure
**'''Bit 5''' - Unused
**'''Bit 6''' - LV_FUC_CAN - Fuel Tank Cap Light
**'''Bit 6''' - LV_FUC_CAN - Fuel Tank Cap Light
**'''Bit 7''' - DDE: Battery Count
**'''Bit 7''' - Unused
*'''Byte 1''' - FCO - Fuel Consumption LSB
*'''Byte 1 - FCO[LSB]'''
*'''Byte 2''' - FCO - Fuel Consumption MSB
*'''Byte 2 - FCO[MSB]'''
*:Fuel Consumption
*'''Byte 3 - Bitfield'''
*'''Byte 3 - Bitfield'''
**'''Bit 0''' - Oil Level Error LED M5 Cluster
**'''Bit 0''' - Oil Level Indicator LED - Oil consumption
**'''Bit 1''' - Oil Level Warning LED Every Other Cluster
**'''Bit 1''' - Oil Level Indicator LED - Oil loss
**'''Bit 2''' - Oil Level Error LED M5 Cluster
**'''Bit 2''' - Oil Level Indicator LED - Sensor malfunction
**'''Bit 3''' - LV_TEMP_ENG - Coolant Overheating Light
**'''Bit 3''' - LV_TEMP_ENG - Coolant Overheating Light (c_tco_tmot_sta)
**'''Bit 4''' - M-Cluster Warm-Up LEDs
**'''Bit 4''' - M-Cluster Warm-Up LEDs
**'''Bit 5''' - M-Cluster Warm-Up LEDs
**'''Bit 5''' - M-Cluster Warm-Up LEDs
**'''Bit 6''' - M-Cluster Warm-Up LEDs
**'''Bit 6''' - M-Cluster Warm-Up LEDs
**'''Bit 7''' - DDE: Gear Change Request
**'''Bit 7''' - Upshift indicator
*'''Byte 4''' - TOIL_CAN - Oil Temperature
*'''Byte 4 - TOIL_CAN'''
*'''Byte 5''' -
*:Oil Temperature in °C
*'''Byte 6''' - MSS54HP: Oil Level
*:Calculation = HEX - 48°C
*'''Byte 7''' - Unused
*:Min: 0x00 (-48°C)
 
*:Max: 0xFE (206°C)
==SSG1 0x43D==
Refresh Rate: 10ms
 
*'''Byte 0 - Bitfield'''
**'''Bit 0''' - GEAR_INFO - Active Gear
**'''Bit 1''' - GEAR_INFO - Active Gear
**'''Bit 2''' - GEAR_INFO - Active Gear
**'''Bit 3''' - LV_GS - Gear Shift Active
**'''Bit 4''' - STATE_AMT - Status Shift Process
**'''Bit 5''' - STATE_AMT - Status Shift Process
**'''Bit 6''' -
**'''Bit 7''' - LV_AMT_ES - Engine Stop Request From SMG TCU
*'''Byte 1 - Bitfield'''
**'''Bit 0''' - GEAR_SEL_DISP
**'''Bit 1''' - GEAR_SEL_DISP
**'''Bit 2''' - GEAR_SEL_DISP
**'''Bit 3''' - GEAR_SEL_DISP
**'''Bit 4''' - STATE_AMT_OBD
**'''Bit 5''' - STATE_AMT_OBD
**'''Bit 6''' - STATE_AMT_OBD
**'''Bit 7''' - STATE_AMT_OBD
*'''Byte 2 - Bitfield'''
**'''Bit 0''' -
**'''Bit 1''' -
**'''Bit 2''' -
**'''Bit 3''' - LV_CITY
**'''Bit 4''' -
**'''Bit 5''' - LV_HPA
**'''Bit 6''' - bitfield_FD20_20
**'''Bit 7''' -
*'''Byte 3''' - TQI_AMT_CAN
*'''Byte 4''' - TQI_MAF_AMT_CAN
*'''Byte 5 - Bitfield'''
*'''Byte 5 - Bitfield'''
**'''Bit 0''' - LV_GP - Gearbox Protection
**'''Bit 0''' - Battery Chargelight (Alpina Roadster Only)
**'''Bit 1''' -
**'''Bit 1''' - Unused
**'''Bit 2''' - CTR_AMT - Message Counter For AMT TQI Request
**'''Bit 3''' - CTR_AMT - Message Counter For AMT TQI Request
**'''Bit 4''' - CTR_AMT - Message Counter For AMT TQI Request
**'''Bit 5''' - CTR_AMT - Message Counter For AMT TQI Request
**'''Bit 6''' - STATE_CLU_AMT - State SMG Clutch
**'''Bit 7''' - STATE_CLU_AMT - State SMG Clutch
*'''Byte 6''' - TQI_AMT_CPL_CAN
*'''Byte 7''' - N_MAX_AMT_CAN - Engine Speed Limiter Override During Gearshift
 
==EGS1 0x43F==
Refresh Rate: 10ms
 
*'''Byte 0 - Bitfield'''
**'''Bit 0''' - GEAR_INFO - Active Gear
**'''Bit 1''' - GEAR_INFO - Active Gear
**'''Bit 2''' - GEAR_INFO - Active Gear
**'''Bit 3''' - LV_GS - Gear Shift Active
**'''Bit 4''' - OBD_F - OBD-relevant DTC Active
**'''Bit 5''' - LV_GP_CAN - Gearbox Protection
**'''Bit 6''' - S_KUPPL / STATE_CC - State Converter Clutch
**'''Bit 7''' - S_KUPPL / STATE_CC - State Converter Clutch
*'''Byte 1 - Bitfield'''
**'''Bit 0''' - GEAR_SEL_DISP - Positionswählhebelanzeige
**'''Bit 1''' - GEAR_SEL_DISP - Positionswählhebelanzeige
**'''Bit 2''' - GEAR_SEL_DISP - Positionswählhebelanzeige
**'''Bit 3''' - GEAR_SEL_DISP - Positionswählhebelanzeige
**'''Bit 4''' - STATE_ETCU_OBD - OBD-Status Transmission Control Unit
**'''Bit 5''' - STATE_ETCU_OBD - OBD-Status Transmission Control Unit
**'''Bit 6''' - STATE_ETCU_OBD - OBD-Status Transmission Control Unit
**'''Bit 7''' - STATE_ETCU_OBD - OBD-Status Transmission Control Unit
*'''Byte 2 - Bitfield'''
**'''Bit 0''' - SMG_WHL_ANZ - SMG-Wählhebelstellung
**'''Bit 1''' - SMG_WHL_ANZ - SMG-Wählhebelstellung
**'''Bit 2''' - Unused
**'''Bit 2''' - Unused
**'''Bit 3''' - Unused
**'''Bit 3''' - Unused
**'''Bit 4''' - Unused
**'''Bit 4''' - Unused
**'''Bit 5''' - PRG_INF_ANZ - Programminformationsanzeige
**'''Bit 6''' - PRG_INF_ANZ - Programminformationsanzeige
**'''Bit 7''' - PRG_INF_ANZ - Programminformationsanzeige
*'''Byte 3''' - TQI_ETCU_CAN - Momenteneingriff der GS bezogen auf das indizierte Motormoment
*'''Byte 4''' - N_ABTR - Abtriebsdrehzahl
*'''Byte 5 - Bitfield'''
**'''Bit 0''' - L_GS - Störanzeige
**'''Bit 1''' - L_GS - Störanzeige
**'''Bit 2''' - TCU_TYP - Steuergerätetyp EGS/SMG
**'''Bit 3''' - S_EGW - Schalter Getriebeölthermostat
**'''Bit 4''' - LV_TOIL_GEAR_CAN - Schalter Getriebeölübertemperatur
**'''Bit 5''' - Unused
**'''Bit 5''' - Unused
**'''Bit 6''' - DT_REINF - Drivetrain Reinforcement
**'''Bit 7''' - DT_REINF - Drivetrain Reinforcement
*'''Byte 6''' - DT_REINF - Drivetrain Reinforcement
*'''Byte 7''' - TQ_CONV_CAN - Momentaufnahme Getriebe
==ICL2 0x613==
Refresh Rate: 200ms
*'''Byte 0''' - KM_CTR_CAN - Odometer LSB
*'''Byte 1''' - KM_CTR_CAN - Odometer MSB
*'''Byte 2''' - FTL_CAN - Fuel Tank Level (Bits 0-6)
**'''Bit 7''' - FTL_RES_CAN - Fuel Tank Level Reserve Switch
*'''Byte 3''' - T_REL_CAN - Running Clock LSB
*'''Byte 4''' - T_REL_CAN - Running Clock MSB
*'''Byte 5''' - FTL_CAN_L - Fuel Tank Level Driver Side (Bits 0-5)
**'''Bit 6''' - Unused
**'''Bit 6''' - Unused
**'''Bit 7''' - Unused
**'''Bit 7''' - Unused
*'''Byte 6''' - Unused
*'''Byte 6''' - Oil Level (MSS54HP only)
*'''Byte 7''' - Unused
*:Calculation = (HEX - 158) / 10L
 
*:Min: 0x80 || 0xC0 (-3.0L)
==ICL3 0x615==
*:Max: 0xBE || 0xFE (+3.2L)
Refresh Rate: 200ms
*'''Byte 7 - Bitfield'''
 
**'''Bit 0''' - State Tire Pressure (MSS54 only)  
*'''Byte 0 - Bitfield'''
**'''Bit 1''' - Unused
**'''Bit 0''' - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 0)
**'''Bit 2''' - Unused
**'''Bit 1''' - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 1)
**'''Bit 3''' - Unused
**'''Bit 2''' - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 2)
**'''Bit 4''' - Unused
**'''Bit 3''' - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 3)
**'''Bit 5''' - Unused
**'''Bit 4''' - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 4)
**'''Bit 6''' - Unused
**'''Bit 5''' - LV_REQ_TCO_L - Request For Lowest Cooling Temp (c_tco_bol_ect)
**'''Bit 7''' - Status Engine Oil Pressure Low
**'''Bit 6''' - LV_ACCIN - Air Conditioning Compressor Status (0=off, 1=on)
**'''Bit 7''' - LV_ACIN - Air Conditioning Request
*'''Byte 1 - Bitfield'''
**'''Bit 0''' - LV_REQ_HEAT - Increased Heat Request
**'''Bit 1''' - LV_TOW - Trailer Operation Mode
**'''Bit 2''' - LV_LGT - Day / Night Lighting
**'''Bit 3''' - LV_HS - Hood Switch
**'''Bit 4''' - N_ECF - Electric Cooling Fan Level (Bit 0)
**'''Bit 5''' - N_ECF - Electric Cooling Fan Level (Bit 1)
**'''Bit 6''' - N_ECF - Electric Cooling Fan Level (Bit 2)
**'''Bit 7''' - N_ECF - Electric Cooling Fan Level (Bit 3)
*'''Byte 2''' -
*'''Byte 3''' - TAM_CAN - Ambient Temperature
*'''Byte 4 - Bitfield'''
**'''Bit 0''' - LV_DOOR - Door Switch
**'''Bit 1''' - LV_HBR - Hand Brake Switch
**'''Bit 2''' -  
**'''Bit 3''' -  
**'''Bit 4''' -  
**'''Bit 5''' - LV_REQ_TCO_L -
**'''Bit 6''' - LV_ACCIN - Air Conditioning Compressor Status (0=off, 1=on)
**'''Bit 7''' - LV_ACIN - Air Conditioning Request
*'''Byte 5''' -
*'''Byte 6''' -
*'''Byte 7''' -

Latest revision as of 22:30, 4 October 2023

CAN Bus on BMWs E46 chassis operates at a speed of 500kb/s and so does the MS43 ECU.

There is a total of 15 message boxes, that can be configured to be received or send by the C167 processor.

The messages are ordered by the CAN registers name inside the CPU beginning with 1 and ending with F. Unused boxes are not listed here.


Siemens MS43 reads the following messages for operation, if the corresponding module is present in car:


Siemens MS43 sends the following messages:


Visualised in Tuner Pro the CAN configuration table looks like this:

Tuner Pro MS43 CAN Init.png


In addition to that, there are several messages that are not used by the ECU, but still present on the CAN Bus:


DME1 0x316

Refresh Rate: 10ms

  • Byte 0 - Bitfield
    • Bit 0 - LV_SWI_IGK
      Ignition Key Voltage State
      0 = terminal 15 off detected
      1 = terminal 15 on detected
    • Bit 1 - LV_F_N_ENG
      Crankshaft Sensor State
      0 = no CRK error present
      1 = CRK error present
    • Bit 2 - LV_ACK_TCS
      Traction Control State
      0 = either ASC1 was not received within the last 500 ms or it contains a plausibility error
      1 = the ASC message ASC1 was received within the last 500 ms and contains no plausibility errors of the requirements TQI_ASR_CAN / TQI_MSR_CAN
    • Bit 3 - LV_ERR_GC
      Gear Change Error State
      0 = gear change not or partly possible
      1 = gear change possible
    • Bit 4 - SF_TQD [0]
    • Bit 5 - SF_TQD [0]
      Charge Intervention State
      0 = the required intervention can be performed completely or if there is no ASC requirement.
      1 = the required intervention cannot be performed completely because the IGA retard limit is reached.
      2 = the required intervention cannot be performed completely because the charge actuators are fully closed (this case is not possible with MTC without break-away mechanism)
      3 = "limited vehicle dynamics" is active (MTC/ISA error)
    • Bit 6 - Unused
    • Bit 7 - LV_F_SUB_TQI
      MAF Error State
      0 = MAF ok
      1 = MAF error present
  • Byte 1 - TQI_TQR_CAN
    Indexed Engine Torque in % of C_TQ_STND (including ASR/MSR/ETCU/LIM/AMT/GEAR intervention)
    Calculation = HEX * 0.39
  • Byte 2 - N_ENG [LSB]
  • Byte 3 - N_ENG [MSB]
    Engine Speed in rpm
    Calculation = ((HEX[MSB] * 256) + HEX[LSB]) * 0.15625
  • Byte 4 - TQI_CAN
    Indicated Engine Torque in % of C_TQ_STND (based on PVS, N, AMP, TIA ,TCO, IGA, PUC so ip_tqi_pvs__n__pvs)
    Calculation = HEX * 0.39
  • Byte 5 - TQ_LOSS_CAN
    Engine Torque Loss (due to engine friction, AC compressor and electrical power consumption) in % of C_TQ_STND
    Calculation = HEX * 0.39
  • Byte 6 - Bitfield
    • Bit 6 - ERR_AMT_CAN
    • Bit 7 - ERR_AMT_CAN
  • Byte 7 - TQI_MAF_CAN
    Theorethical Engine Torque in % of C_TQ_STND after charge intervention (based on MAF & IGA so ip_tqi_maf__n__maf)
    Calculation = HEX * 0.39

DME2 0x329

Refresh Rate: 10ms

  • Byte 0 - Multiplexed Information
    • Bit 0 - MUX_INFO [0]
    • Bit 1 - MUX_INFO [1]
    • Bit 2 - MUX_INFO [2]
    • Bit 3 - MUX_INFO [3]
    • Bit 4 - MUX_INFO [4]
    • Bit 5 - MUX_INFO [5]
      CAN_LEVEL = CAN bus function level. This is always 0x11 for MS43
      OBD_STEUER = STATE_DIAG_GS (Status of GS diagnosis for feedback to gearbox)
      MD_NORM = Refactored C_TQ_STND from 0x3FF (0-1023Nm) to 0x3F (0-1008Nm) with decreased resolution of 16Nm
    • Bit 6 - MUX_CODE [0]
    • Bit 7 - MUX_CODE [1]
      0 = CAN_LEVEL
      2 = OBD_STEUER
      3 = MD_NORM
  • Byte 1 - TEMP_ENG
    Engine (Coolant) Temperature in °C
    Calculation = (HEX * 0.75) - 48°C
    Init: 0xFF
    Min: 0x01 (-48°C)
    Max: 0xFF (142.5°C)
  • Byte 2 - AMP_CAN
    Ambient Pressure in hPa
    Calculation = (HEX * 2) + 598hPa
    Init = 0x00
    Min = 0x01 (600hPa)
    Max = 0xFE (1106hPa)
    Error = 0xFF
  • Byte 3 - Bitfield
    • Bit 0 - LV_SWI_CLU
      Clutch Switch State
      0 = released
      1 = depressed
    • Bit 1 - LV_LEVEL_IS
      Idle Regulator State
      0 = idle above threshold
      1 = idle below threshold
    • Bit 2 - LV_ACK_CRU_AD_ECU
      Acknowledge of ACC1 CAN Message
      0 = nACK
      1 = ACK
    • Bit 3 - LV_ERU_CAN
      Engine Running State
      0 = engine stopped
      1 = engine running
    • Bit 4 - (STATE_CRU_CAN)???
    • Bit 5 - STATE_MSW_CAN [0]
    • Bit 6 - STATE_MSW_CAN [1]
    • Bit 7 - STATE_MSW_CAN [2]
      0 = No Button Pressed (Init Value)
      1 = Set / Acceleration (tip-up)
      2 = Deceleration (tip-down)
      3 = Resume
      4 = Deactivate (I/O)
      7 = Error Condition
  • Byte 4 - TPS_VIRT_CRU_CAN
    Calculation = HEX * 0.390625
  • Byte 5 - TPS_CAN
    Accelerator Pedal Position in % of PVS_MAX
    Calculation = HEX * 0.390625
    Init = 0x00
    Min = 0x01 (0%)
    Max = 0xFE (99.2%)
    PVS Error = 0xFF
  • Byte 6 - Bitfield
    • Bit 0 - LV_BS
      Brake Switch State
      0 = brake not actuated
      1 = brake actuated
    • Bit 1 - LV_ERR_BS
      Brake Switch System State
      0 = brake switch system OK
      1 = brake switch system faulty
    • Bit 2 - LV_KD_CAN
      Kick Down State
      0 = kick down not active
      1 = kick down active
    • Bit 3 - STATE_CRU_CAN [0]
    • Bit 4 - STATE_CRU_CAN [1]
    • Bit 5 - STATE_CRU_CAN [2]
      0 = LV_CRU_ACT = 0
      1 = LV_CRU_ACT = 1, constant drive (or tip-up / tip-down)
      3 = LV_CRU_ACT = 1, resume
      5 = LV_CRU_ACT = 1, set / acceleration
      7 = LV_CRU_ACT = 1, deceleration
    • Bit 6 - REQ_SHIFTLOCK [0]
    • Bit 7 - REQ_SHIFTLOCK [1]
      0 = no actuation is active
      3 = actuation ISA, MTC or N_SP_IS is active
  • Byte 7 - Unused

DME3 0x338

Refresh Rate: 1000ms and at signal change

  • Byte 0 - Unused
  • Byte 1 - Unused
  • Byte 2 - STATE_SOF_CAN
    Sport Button Status
    0 = Sport Button On (requested by SMG)
    1 = Sport Button Off
    2 = Sport Button On
    3 = Sport Button Error
    Init: 0x01
  • Byte 3 - Unused
  • Byte 4 - Unused
  • Byte 5 - Unused
  • Byte 6 - Unused
  • Byte 7 - Unused

DME4 0x545

Refresh Rate: 10ms

  • Byte 0 - Bitfield
    • Bit 0 - Unused
    • Bit 1 - LV_MIL - Check Engine Light
    • Bit 2 - Unused
    • Bit 3 - LV_MAIN_SWI_CRU - CRU_MAIN_SWI
    • Bit 4 - LV_ETC_DIAG - EML Light
    • Bit 5 - Unused
    • Bit 6 - LV_FUC_CAN - Fuel Tank Cap Light
    • Bit 7 - Unused
  • Byte 1 - FCO[LSB]
  • Byte 2 - FCO[MSB]
    Fuel Consumption
  • Byte 3 - Bitfield
    • Bit 0 - Oil Level Indicator LED - Oil consumption
    • Bit 1 - Oil Level Indicator LED - Oil loss
    • Bit 2 - Oil Level Indicator LED - Sensor malfunction
    • Bit 3 - LV_TEMP_ENG - Coolant Overheating Light (c_tco_tmot_sta)
    • Bit 4 - M-Cluster Warm-Up LEDs
    • Bit 5 - M-Cluster Warm-Up LEDs
    • Bit 6 - M-Cluster Warm-Up LEDs
    • Bit 7 - Upshift indicator
  • Byte 4 - TOIL_CAN
    Oil Temperature in °C
    Calculation = HEX - 48°C
    Min: 0x00 (-48°C)
    Max: 0xFE (206°C)
  • Byte 5 - Bitfield
    • Bit 0 - Battery Chargelight (Alpina Roadster Only)
    • Bit 1 - Unused
    • Bit 2 - Unused
    • Bit 3 - Unused
    • Bit 4 - Unused
    • Bit 5 - Unused
    • Bit 6 - Unused
    • Bit 7 - Unused
  • Byte 6 - Oil Level (MSS54HP only)
    Calculation = (HEX - 158) / 10L
    Min: 0x80 || 0xC0 (-3.0L)
    Max: 0xBE || 0xFE (+3.2L)
  • Byte 7 - Bitfield
    • Bit 0 - State Tire Pressure (MSS54 only)
    • Bit 1 - Unused
    • Bit 2 - Unused
    • Bit 3 - Unused
    • Bit 4 - Unused
    • Bit 5 - Unused
    • Bit 6 - Unused
    • Bit 7 - Status Engine Oil Pressure Low