Advertising:
Siemens MS45 CAN Bus (CAN11h): Difference between revisions
From MS4X Wiki
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
<div style="float:right;">__TOC__</div> | <div style="float:right;">__TOC__</div> | ||
MS45 can operate in two different CAN bus modes. CAN11h and BN2000. This page describes CAN11h | MS45 can operate in two different CAN bus modes. CAN11h and BN2000. This page describes the CAN11h mode that is used in e46, e83 and e85 versions of the MS45. MS43 and MS42 use same CAN11h protocol, but MS45 uses few more messages compared to those. CAN speed is 500kb/s. | ||
Revision as of 06:56, 23 April 2024
MS45 can operate in two different CAN bus modes. CAN11h and BN2000. This page describes the CAN11h mode that is used in e46, e83 and e85 versions of the MS45. MS43 and MS42 use same CAN11h protocol, but MS45 uses few more messages compared to those. CAN speed is 500kb/s.
Siemens MS45 reads the following messages for operation, if the corresponding module is present in car:
- ARBID 0x43F EGS1 Automatic Transmission
- ARBID 0x??? EGS2 Automatic Transmission
- ARBID 0x613 ICL2 Instrument Cluster
- ARBID 0x615 ICL3 Instrument Cluster
- ARBID 0x153 ASC1 Traction Control
- ARBID 0x1F3 ASC3 Traction Control
- ARBID 0x1F8 ASC4 Traction Control
- ARBID 0x43D AMT1 Automatic Manual Transmission
- ARBID 0x1F5 LWS1 Steering Angle Sensor
Siemens MS45 sends the following messages:
- ARBID 0x316 DME1 Engine Control Unit
- ARBID 0x329 DME2 Engine Control Unit
- ARBID 0x338 DME3 Engine Control Unit
- ARBID 0x545 DME4 Engine Control Unit
In addition to that, there are several messages that are not used by the ECU, but still present on the CAN Bus:
- ARBID 0x1F0 ASC2 Traction Control
- ARBID 0x445 TXU1 Transfer Case Unit
- ARBID 0x610 ICL1 Instrument Cluster
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
- Bit 0 - LV_SWI_IGK
- 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
- Bit 0 - LV_SWI_CLU
- 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
- Bit 0 - LV_BS
- 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